h0N0r 324 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 В 22.06.2018 в 06:15, Egor4ikModMaker сказал: А можно полную ф-цию , я в скриптах не шарю , так что прошу помощи у вас. Просто хочу сделать что бы адекватно как у всех , работали квесты с указанием на карте. где же стоит этот нпс. Скрытый текст Вот такую функцию добавь в конец xr_effects.script, function add_spot_to_npc(actor, npc, p) if p[1] == nil then abort("Invalid parameter in function 'add_spot_to_npc', enter the profile_name!") end if p[2] == nil then abort("Invalid parameter in function 'add_spot_to_npc', enter the mapspot from map_spots.xml!") end if p[3] == nil then abort("Invalid parameter in function 'add_spot_to_npc', enter the hint!") end for a=1,65535,1 do local obj = alife():object(a) if obj and IsStalker(obj) and obj:profile_name() == p[1] then level.map_add_object_spot(obj.id, p[2], tostring(p[3])) end end end Потом её можно будет вызвать из любого другого скрипта: function my() ... xr_effects.add_spot_to_npc(nil, nil, {"bar_ecolog_professor", "blue_location", "ros_kruglov_name"}) ... end bar_ecolog_professor - профиль из \gameplay\character_desc_.xml blue_location - вид метки из \ui\map_spots.xml ros_kruglov_name - имя (если есть, но не используем при GENERATE_NAME_) из \gameplay\character_desc_.xml. Можно свой текст (типа kruglov_4udila_pret_v_anomaluu), но так игнорируются пробелы, так что, если длинная подсказка, то делаем в \text\rus\string_table_mapspots_.xml свою и используем её ид. Также можно вызвать из любого файла логики (нпс, объекты): логика рестриктора, [logic] active = sr_idle@start [sr_idle@start] on_info = {+bar_rescue_research_start} sr_idle@end %=add_spot_to_npc(bar_ecolog_professor:blue_location:ros_kruglov_name)% [sr_idle@end] Но всё это фигня, лучше скачай себе acdc (поставишь сид), сможешь нормально ставить метки. Ещё и сдк установи, а то сегодня метки, завтра локи править понадобиться. https://sites.google.com/view/xray-sdk-0-4-smg Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 58 минут назад, h0N0r сказал: for a=1,65535,1 do local obj = alife():object(a) if obj and IsStalker(obj) and obj:profile_name() == p[1] И получаем метки на ВСЕХ неписях с таким профилем. Кстати, как раз случай, где ссылку на alife() можно получить до for ... И, кстати, 65535 - это земля. Второе - если мы получили что-то для какого-то i. и это то, что нам нужно, то level.map_add_object_spot( i, ...) И, наконец, if obj and obj:profile_name and obj:profile_name() == p[1] then Но я все равно не понимаю, как можно знать сид и профиль, не зная просто имя. Какая-то странная телепатия... Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Egor4ikModMaker 8 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 (изменено) 2 часа назад, WinCap сказал: function andrew_at_map() local obj = alife():object("es_andrew") if obj then level.map_add_object_spot(obj.id, "green_location", "Андрюха") end end Попробую это. Добавляю в свой скриптовый файл, и вызываю через диалог <action>название файла.название функции</action> , игра хотя бы запускается. Добавлю эту ф-цию , в level_tasks.script , как указано в уроке хикса, ловлю вылет на загрузке такого характера Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ...- Èñòèííûé ïóòü\gamedata\scripts\bind_stalker.script:194: attempt to index global 'level_tasks' (a nil value) Теперь убрав даже строку вызова ф-ции из диалога, при попытке разговора с нпс ловлю безлогий вылет. обидно. Изменено 23 Июня 2018 пользователем Egor4ikModMaker дополнение [Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // ☮ "Burn the rich // eat the rich" О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 Осталось выяснить, зачем добавлять ее в level_tasks. И какая конечная цель всех манипуляций. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Egor4ikModMaker 8 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 Только что, Dennis_Chikin сказал: Осталось выяснить, зачем добавлять ее в level_tasks. И какая конечная цель всех манипуляций. 1)Добавление этой ф-ции собственно было описано в вышеуказанном уроке от Хикса 2)Конечная цель этих манипуляций , что бы нпс отображался на карте у гг ( при взятии квестов принеси-подай ) как с торговцем. [Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // ☮ "Burn the rich // eat the rich" О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист. Ссылка на комментарий
AndreySol 215 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 1 час назад, Dennis_Chikin сказал: Но я все равно не понимаю, как можно знать сид и профиль, не зная просто имя. Какая-то странная телепатия... "как можно знать сид" - ну к примеру, через сет в game_story_ids.ltx. Или не реально ? 45 минут назад, Egor4ikModMaker сказал: attempt to index global 'level_tasks' (a nil value) Это явно простая синтаксическая ошибка. Проверь синтаксис добавленного кода. Ссылка на комментарий
Egor4ikModMaker 8 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 (изменено) 10 минут назад, AndreySol сказал: "как можно знать сид" - ну к примеру, через сет в game_story_ids.ltx. Или не реально ? Это явно простая синтаксическая ошибка. Проверь синтаксис добавленного кода. Собственно это странно, потому что bind_stalker я не трогал вообще! Т.е файл оригинальный, и до этого все работало без подобного вылета. upd: Не понимаю ничего , т.е если я в game_story_ids напишу например 12000 = esc_vova(имя перса из профиля) он типа вообще это игнорирует? Потому что я до этого пытался поставить на него метку. Т.е по аналогии как и с сидором , при выдаче квеста , там следущим образом построен квест <objective> <text>Принести Артефакт Андрею</text> <infoportion_complete>ses_done</infoportion_complete> <map_location_type hint="esc_andrew">blue_location</map_location_type> <object_story_id>esc_andrew</object_story_id> </objective> Изменено 23 Июня 2018 пользователем Egor4ikModMaker 1 [Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // ☮ "Burn the rich // eat the rich" О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 13 минут назад, Egor4ikModMaker сказал: принеси-подай Как вообще берутся ? В диалоге с этим неписем ? Через редактирование task_manager.ltx + task_manager.script ? Через local task = CGameTask(); task:load( ... ) и т.д. ? @AndreySol, а в game_story_ids они щучьим велением прописываются ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Egor4ikModMaker 8 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 1 минуту назад, Dennis_Chikin сказал: Как вообще берутся ? В диалоге с этим неписем ? Спокойно. Через диалог с нпс + game_tasks.xml 2 минуты назад, Dennis_Chikin сказал: game_story_ids они щучьим велением прописываются ? Нет , в ручную прописал 12.000 = "esc_andrew" ( из профиля нпс ) как было ранее указано в уроках . [Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // ☮ "Burn the rich // eat the rich" О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 Непись с диалогом тот же самый, на которого надо метку ? <<в ручную прописал 12.000 = "esc_andrew" >> - поздравляю. Удивительно, что запускается. P.S. представляю, как сейчас Хикс ржет улыбается. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Egor4ikModMaker 8 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 Только что, Dennis_Chikin сказал: Непись с диалогом тот же самый, на которого надо метку ? <<в ручную прописал 12.000 = "esc_andrew" >> - поздравляю. Удивительно, что запускается. Да [Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // ☮ "Burn the rich // eat the rich" О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 Прописываем в диалоге <action>куда.надо</action> (если уже есть, то не прописываем, а добавляем) куда.script: function надо( n1, n2 ) if n1:id() == 0 then n1 = n2 end level.map_add_object_spot_ser( n1:id(), "кракозябра", "надпись" ) что-там еще было end Об чем и говорилось с самого начала. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Egor4ikModMaker 8 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 (изменено) 8 минут назад, Dennis_Chikin сказал: level.map_add_object_spot_ser( n1:id(), "кракозябра", "надпись" ) Вызывает вопрос только что должно быть под "кракозяброй"? Upd: Поставил одно из ранее указанных значений вместо кракозябры - green_location , ловлю безлогий вылет. Такой же результат если поставить "primary_object". Изменено 23 Июня 2018 пользователем Egor4ikModMaker [Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // ☮ "Burn the rich // eat the rich" О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 "green_location" или green_location ? В ui\map_spots.xml вообще есть такая ? Скрипт через lua.exe вообще собирается ? Диалог правильно написан ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Egor4ikModMaker 8 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 2 минуты назад, Dennis_Chikin сказал: "green_location" или green_location ? В ui\map_spots.xml вообще есть такая ? Да есть . специально проверил , и primary_object Скрипт через lua.exe вообще собирается ? Диалог правильно написан ? - не мне судить насколько правильно он собирается, но до этого работал. Не знаю , может я дурной и на последнюю фразу диалога лепить нельзя .но вот диалог <dialog id="find_art1"> <dont_has_info>ses_done</dont_has_info> <dont_has_info>ses_have</dont_has_info> <phrase_list> <phrase id="0"> <text>Привет, есть работенка какая?</text> <next>1</next> </phrase> <phrase id="1"> <text>Здрав буди, да имеются для тебя, мелкие поручения, извини но пока я тебе серьезную не доверю, ты уж не обижайся.</text> <next>2</next> </phrase> <phrase id="2"> <text>Все нормально , так что у тебя там за поручения?</text> <next>3</next> </phrase> <phrase id="3"> <text>Тебе нужно поискать артефакт "Медуза", как найдешь приходи, в замен получишь хороший ствол и пару пачек патронов. Искать его стоит севернее бункера сидора. Там есть небольшой участок с аномалиями, будь осторожен. Удачи.</text> <next>4</next> </phrase> <phrase id="4"> <text>Спасибо за наводку. Сейчас схожу посмотрю.</text> <action>sesok.mapspot</action> -- вот именно это и вызывает функцию проблемную. <give_info>ses_have</give_info> </phrase> </phrase_list> </dialog> [Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // ☮ "Burn the rich // eat the rich" О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 sesok.script на обменник, и ссылку в студию. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Egor4ikModMaker 8 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 3 минуты назад, Dennis_Chikin сказал: sesok.script на обменник, и ссылку в студию. Держи http://rgho.st/8p5J5cXqs [Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // ☮ "Burn the rich // eat the rich" О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 в map_spots.xml слово primary_object вообще существует ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Egor4ikModMaker 8 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 Только что, Dennis_Chikin сказал: в map_spots.xml слово primary_object вообще существует ? существует и существует вот так <primary_object> <level_map spot="primary_object_spot" pointer="quest_pointer"/> </primary_object> <primary_object_spot x="0" y="0" width="15" height="15" alignment="c" scale="1" scale_min="1" scale_max="6" stretch="1"> <texture x="858" y="392" width="62" height="62">ui\ui_common</texture> </primary_object_spot> [Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // ☮ "Burn the rich // eat the rich" О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист. Ссылка на комментарий
Kirgudu 1 204 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 1 час назад, Egor4ikModMaker сказал: 1 час назад, AndreySol сказал: "как можно знать сид" - ну к примеру, через сет в game_story_ids.ltx. Или не реально ? Это явно простая синтаксическая ошибка. Проверь синтаксис добавленного кода. Собственно это странно, потому что bind_stalker я не трогал вообще! Т.е файл оригинальный, и до этого все работало без подобного вылета. Да не в bind_stalker ошибка, а в level_tasks. Попробуй перевести на русский: Цитата attempt to index global 'level_tasks' (a nil value) это означает "попытка проиндексировать глобальный объект 'level_tasks' (значение nil)". То есть ты из bind_stalker пытаешься вызвать какую-то функцию в level_tasks, но так как level_tasks имеет значение nil - получаешь ошибку. А быть равным nil какой-то скрипт может в том случае, если внутри имеется какая-то синтаксическая ошибка, и движок просто не может скрипт загрузить. Проверяй, что делал не так в level_tasks. Инструмент Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти