[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 |
|
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 |
|
|
|
|
Среда, 15.01.2020, 03:27
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
30.08.2018 |
|
|
|
|
|
Dead City Breakthrough
Статус: |
 |
Опытный: |
 |
Сообщений: |
2244 |
Награды: |
11 |
Регистрация: |
08.11.2011 |
|
AziatkaVictor, Консолька fov - угол обзора. hud_fov - руки. Это при условии что правленый файл xrGame.dll
|
|
Среда, 15.01.2020, 06:23
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
08.11.2011 |
|
|
|
|
|
Крим
Среда, 15.01.2020, 15:14 | Сообщение # 5714
Статус: |
 |
Новичок: |
 |
Сообщений: |
231 |
Награды: |
1 |
Регистрация: |
21.04.2019 |
|
Всем здравствуйте. У меня возникли проблемы с квестом:*Дойти до места*. Сначала, я создал рестриктор, зарегистрировал его, прописал ему логику: - в логике сказано, что при вхождения игрока в него будет выдаваться инфопоршень, выполняющий этот квест. Но тут возникли проблемы в игре. Когда квест выдается, он моментально выполняется, то есть игрок даже не вошел в рестриктор, а квест каким-то образом выполнился. Я сам понять не могу в чем дело. Вроде все прописано правильно.
Квест в tm_escape:
Функция для выдачи квеста:
|
|
Среда, 15.01.2020, 15:14
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
21.04.2019 |
|
|
|
|
|
Статус: |
 |
Новичок: |
 |
Сообщений: |
316 |
Награды: |
2 |
Регистрация: |
14.07.2019 |
|
Крим, Цитата {=actor_in_zone(esc_der_restr)} sr_idle@end %+esc_der_bza_road_quest%
Сообщение отредактировал molodoy_chelovek - Среда, 15.01.2020, 15:19
|
|
Среда, 15.01.2020, 15:18
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
14.07.2019 |
|
|
|
|