[CoP] Модострой: вопросница
|
|
|
Overfirst
Воскресенье, 31.12.2017, 13:17 | Сообщение # 1
Статус: |
|
Бывалый: |
|
Сообщений: |
1081 |
Награды: |
19 |
Регистрация: |
11.06.2015 |
|
[CoP] Модострой: вопросница
Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском по разделу, ответ на него, вероятно, уже есть.
Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода.
Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа).
Благодарность выражаем в личке или же ставим плюсик в историю репутации. Подобные посты будут удаляться.
|
|
Воскресенье, 31.12.2017, 13:17
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
11.06.2015 |
|
|
|
|
|
Статус: |
|
Опытный: |
|
Сообщений: |
1313 |
Награды: |
4 |
Регистрация: |
30.08.2018 |
|
sergej5500, как я понял, это прописывают в файле bind_stalker.script (вроде так).
|
|
Вторник, 14.01.2020, 12:36
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
30.08.2018 |
|
|
|
|
|
Статус: |
|
Бывалый: |
|
Сообщений: |
1081 |
Награды: |
19 |
Регистрация: |
11.06.2015 |
|
Ограничений на количество инфопорций нет. Они хранятся в динамической памяти, сейчас узнавал. Но лучше всё же не злоупотреблять количеством. Сейчас выдал более 100К инфопорций, так у меня сейв в пять раз больше среднего стал весить. Грузиться такой будет на порядок дольше.
|
|
Вторник, 14.01.2020, 12:52
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
11.06.2015 |
|
|
|
|
|
Время Альянса
Статус: |
|
Ветеран: |
|
Сообщений: |
4070 |
Награды: |
16 |
Регистрация: |
19.07.2013 |
|
Цитата Overfirst ( ) Ограничений на количество инфопорций нет. Все имеет свои ограничения в ПК (даже наша вселенная считается не бесконечной). Динамическая память, дисковое пространство, размер файлов, разрядность переменных. Весь вопрос где и при каких обстоятельствах упремся в этот предел
Сообщение отредактировал denis2000 - Вторник, 14.01.2020, 13:10
|
|
Вторник, 14.01.2020, 13:07
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
19.07.2013 |
|
|
|
|
|
Статус: |
|
Бывалый: |
|
Сообщений: |
1081 |
Награды: |
19 |
Регистрация: |
11.06.2015 |
|
denis2000, это ясное дело. Но забить хотя бы мегабайт памяти инфопорциями - это надо уметь, так что можно сказать, что ограничения несущественны.
|
|
Вторник, 14.01.2020, 13:18
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
11.06.2015 |
|
|
|
|
|
Статус: |
|
Опытный: |
|
Сообщений: |
1313 |
Награды: |
4 |
Регистрация: |
30.08.2018 |
|
Overfirst, ну, посути, инфопоршни как переменные, инфопоршень либо есть, либо его нет, тоесть 1 или 0. А такие значения практически ничего не весят... Тем более, раз уж даже ОП 2.1 может исправно работать при таком количестве инфопоршней, то у нас и подавно)
Цитата denis2000 ( ) Весь вопрос где и при каких обстоятельствах упремся в этот предел думаю, не скоро, чтобы достичь предела, полагаю, нужно будет окола 1000 квестов или больше. Вообщем, просто невообразимое количество.)
|
|
Вторник, 14.01.2020, 13:40
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
30.08.2018 |
|
|
|
|
|
Статус: |
|
Зевака: |
|
Сообщений: |
6 |
Награды: |
1 |
Регистрация: |
08.01.2020 |
|
Цитата sergej5500 ( ) Откуда движок игры узнает о том, что существует файл drink.script?
Ну дык. Скрипт к движку постучится попросит значения. В наличии они есть. Я ж говорю, я не уверен ибо играю на сборке и только пару недель назад допустил неосторожность окунуться в доработку напильником. Вполне возможно что там уже сборщики вписали в корень. Или запилили какой-нить автоподхват нового хлама.
Сообщение отредактировал Warpony_Garro - Вторник, 14.01.2020, 13:48
|
|
Вторник, 14.01.2020, 13:46
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
08.01.2020 |
|
|
|
|
|
Статус: |
|
Бывалый: |
|
Сообщений: |
1081 |
Награды: |
19 |
Регистрация: |
11.06.2015 |
|
Цитата AziatkaVictor ( ) ну, посути, инфопоршни как переменные, инфопоршень либо есть, либо его нет Есть или нет - это одно, а сама последовательность символов, из которых состоит инфопорция - другое. Размер одного символа в нашем случае будет один равен восьми битам. Вот и считайте, что вы там хотите, однако смысла в этом нет никакого.
|
|
Вторник, 14.01.2020, 14:37
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
11.06.2015 |
|
|
|
|
|
Статус: |
|
Отмычка: |
|
Сообщений: |
125 |
Награды: |
6 |
Регистрация: |
16.12.2017 |
|
Цитата Warpony_Garro ( ) Цитата Stalker_Одиночка () Файл drink.script должен как-то совмещаться с другими файлами.
Так он совмещен сам в себе. Из основы он только id итемов и значения самочувствия берет. А все остальные эффекты он в себе же и рассчитывает и на выходе дает конкретное влияние на конкретные существующие параметры. Типа хп, усталости и т.д.
Мб конечно я не прав, но вроде нигде сам скрипт регестрировать не нужно. Он сам тянет нужные ему калбеки и проч.
Окей! Будем проверять...
Сообщение отредактировал Stalker_Одиночка - Вторник, 14.01.2020, 18:03
|
|
Вторник, 14.01.2020, 18:01
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
16.12.2017 |
|
|
|
|
|
Статус: |
|
Новичок: |
|
Сообщений: |
290 |
Награды: |
4 |
Регистрация: |
09.01.2017 |
|
Добрый вечер.
Тестирую функции очистки инвентарного ящика от хабара. Функции вызываются из логики этого бокса.
1. Первая функция:
function test_rukzak_1_clean_1(actor, box) local function calc(box,item) if item~=nil then if alife():object(item:id()) then alife():release(alife():object(item:id()),true) end end end box:iterate_inventory_box(calc,box) end
2. Вторая функция:
function test_rukzak_1_clean_2(actor, box, p) local function calc(box,item) if item~=nil and item:section_name() = p then if alife():object(item:id()) then alife():release(alife():object(item:id()),true) end end end box:iterate_inventory_box(calc,box) end
Первая функция чистит все и работает отлично. Вторая должна удалить только определенные предметы. Вместо этого дает жука:
FATAL ERROR [error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp [error]Line : 748 [error]Description : ...lishing\Зов Припяти\gamedata\scripts\xr_logic.script:648: attempt to index global 'xr_effects' (a nil value)
stack trace:
Вызывал её строкой =test_rukzak_1_clean_2(wpn_ak74). В бокс специально положил автомат.
Логика бокса простейшая.
[logic] active = ph_idle
[ph_idle] nonscript_usable = true tips = st_default_rukzak on_info = {+test_rukzak_1_clean -test_rukzak_1_clean_1} %+test_rukzak_1_clean_1 =test_rukzak_1_clean_2(wpn_ak74) =scenario_autosave(st_test_rukzak_1_clean)%
Выдача инфопорции горячей клавишей. После чего очистка рюкзака и автосейв для контроля. Вместо этого жук.
Как исправить функцию?
|
|
Вторник, 14.01.2020, 20:31
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
09.01.2017 |
|
|
|
|
|
Статус: |
|
Новичок: |
|
Сообщений: |
316 |
Награды: |
2 |
Регистрация: |
14.07.2019 |
|
Цитата sergej5500 ( ) item:section_name() = p я не силён в луа синтаксисе, но разве тут не должно быть двойное равно? "=="
Цитата AziatkaVictor ( ) molodoy_chelovek, нет, тут идет присваивание, когда 2 ровно это сравнение.
Цитата sergej5500 ( ) if item~=nil and item:section_name() = p then
Внимательнее. Это и есть сравнение.
Сообщение отредактировал molodoy_chelovek - Вторник, 14.01.2020, 21:46
|
|
Вторник, 14.01.2020, 21:12
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
14.07.2019 |
|
|
|
|
|
Статус: |
|
Зевака: |
|
Сообщений: |
6 |
Награды: |
1 |
Регистрация: |
08.01.2020 |
|
Цитата Stalker_Одиночка ( ) Окей! Будем проверять...
Это лучший выбор для разъяснения истины.
|
|
Вторник, 14.01.2020, 21:21
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
08.01.2020 |
|
|
|
|
|
Статус: |
|
Опытный: |
|
Сообщений: |
1313 |
Награды: |
4 |
Регистрация: |
30.08.2018 |
|
molodoy_chelovek, нет, тут идет присваивание, когда 2 ровно это сравнение.
|
|
Вторник, 14.01.2020, 21:31
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
30.08.2018 |
|
|
|
|
|
Статус: |
|
Новичок: |
|
Сообщений: |
290 |
Награды: |
4 |
Регистрация: |
09.01.2017 |
|
Цитата molodoy_chelovek ( ) разве тут не должно быть двойное равно? "=="
Для пробы переделал функцию.
Сначала так:
function test_rukzak_1_clean_2(actor, box, p) local function calc(box,item) if item~=nil and item:section() == p then if alife():object(item:id()) then alife():release(alife():object(item:id()),true) end end end box:iterate_inventory_box(calc,box) end
Она не сработала. Но вылет пропал.
Затем написал так: прямо указал автомат
function test_rukzak_1_clean_2(actor, box, p) local function calc(box,item) if item~=nil and item:section() == "wpn_ak74" then if alife():object(item:id()) then alife():release(alife():object(item:id()),true) end end end box:iterate_inventory_box(calc,box) end
В таком виде она работает. Автомат удалился.
Что надо дописать, что функция видела параметр р?
|
|
Вторник, 14.01.2020, 23:48
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
09.01.2017 |
|
|
|
|
|
Статус: |
|
Новичок: |
|
Сообщений: |
316 |
Награды: |
2 |
Регистрация: |
14.07.2019 |
|
Цитата sergej5500 ( ) Что надо дописать, что функция видела параметр р? Попробуйте так:Цитата if item~=nil and item:section() == p[1] then
P.S и вставляйте, пожалуйста, код в спойлер, или как я выше - в цитату... Так удобнее
Сообщение отредактировал molodoy_chelovek - Среда, 15.01.2020, 00:13
|
|
Среда, 15.01.2020, 00:08
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
14.07.2019 |
|
|
|
|
|
Статус: |
|
Новичок: |
|
Сообщений: |
290 |
Награды: |
4 |
Регистрация: |
09.01.2017 |
|
molodoy_chelovek,
Спасибо. Последний вариант сработал.
Цитата molodoy_chelovek ( ) if item~=nil and item:section() == p[1] then
|
|
Среда, 15.01.2020, 00:19
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
09.01.2017 |
|
|
|
|