Перейти к контенту

Скриптование


Svoboда

Рекомендуемые сообщения

Я прошу прощения если нарушаю правила форума_(я не нашел темы по вылету именно с моим логом или проблема с таким же файлом)._Ув.дминистрация, прошу не удалять мое сообщение и рассмотреть как просьбу о помощи._Я столкнулся с вылетом в файле - "_g.script".

Expression : ai().script_engine().functor(start_game_callback,functor)


Function : CALifeSimulator::CALifeSimulator
File : E:\stalker\patch_1_0004\xr_3da\xrGame\alife_simulator.cpp
Line : 64
Description : failed to get start game callback

 

Я понимаю что вылет связан с строчками вызова новой игры,_но что именно - не понимаю.
Слезно прошу помочь потому что как я ни удалял файл, ошибка есть,_я даже пытался его изменить, но ошибка снова наведалась...
(Заранее извиняюсь и каюсь в том что написал тут,_простите народ,_я здесь новичок._Ваш форум мне хорошо помог,_надеюсь поможете еще._Заранее спасибо и еще раз извиняюсь за свою невнимательность,_если есть тема по моему логу направьте меня туда._Заранее спасибо.)
Изменено пользователем Kirgudu

[Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // 

 "Burn the rich // eat the rich"

О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист.

Egor4ikModMaker.gif

Поделиться этим сообщением


Ссылка на сообщение

Доброго времени суток , прошу помощи.

Достаточно Проблемный вопрос назрел , как все таки без Декомпелирования all.spawn'a можно дать НПС-у Story_id, в сталкер тч 1.0004 ( надеюсь существует какой-то способ )

Ибо у меня, ни в какую , на НПС , не вешается метка ( скорее НПС сам повесится, чем отметка на него по карте ). Устал честно что-то ковырять , во всех гайдах и уроках ( квестах на убийство и пр. ) Сказано что нужно распаковать алл.спавн , для этого принудительно скачать софт какой-то ( асдс) потом это еще и запаковывать , у меня просто и так весь комп забит под завязку, мне последнее место забивать не охота , подскажите выход из такой ситуации, Заранее благодарю.

[Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // 

 "Burn the rich // eat the rich"

О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист.

Egor4ikModMaker.gif

Поделиться этим сообщением


Ссылка на сообщение
6 часов назад, _Val_ сказал:

 


zip.add_npc("uchen_10", 26.068271636963,-11.718555450439,-272.28005981445,51614,1480, "[logic]\ncfg = scripts\\terra_npc\\yantar\\yan_uchen_1.ltx", 12505

Интересует следущее, это скриптовая ф-ция? Подскажите Чайнику, что с этим делать? ( ну координаты свои поставлю, путь к логике тоже свой, а дальше? )

 

[Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // 

 "Burn the rich // eat the rich"

О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист.

Egor4ikModMaker.gif

Поделиться этим сообщением


Ссылка на сообщение
1 час назад, _Val_ сказал:

Поставить и подключить модули нет_пакетов И как их подключить? (Upd:можно как нибудь по проще , сделать что-то для установки метки на НПс ? )

Изменено пользователем Egor4ikModMaker

[Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // 

 "Burn the rich // eat the rich"

О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист.

Egor4ikModMaker.gif

Поделиться этим сообщением


Ссылка на сообщение
20 часов назад, h0N0r сказал:

Ставить метку через map_add_object_spot(number, string, string), но нужна функция, чтобы получить секцию / профиль нпс и передать полученное в number.

А можно полную ф-цию , я в скриптах не шарю , так что прошу помощи у вас.

Просто хочу сделать что бы адекватно как у всех , работали квесты с указанием на карте. где же стоит этот нпс. 

[Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // 

 "Burn the rich // eat the rich"

О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист.

Egor4ikModMaker.gif

Поделиться этим сообщением


Ссылка на сообщение

Хорошо господа, последовав вашему совету , я постараюсь более точнее излагать свои мысли, и более конкретнее вопросы.

Изходя из поста Хикса ( пост ниже) 

https://www.amk-team.ru/forum/topic/6458-uroki-po-modostroeniyu/?page=3&tab=comments#comment-630233

 

Я пытаюсь понять : ( может я просто глупый и не нашел спойлер, но мне было бы привычно делать раскрывающимся текстом. ) 

Так что простите за километровое сообщение .

function add_lchanger_location()
    local sim = alife()
    if sim then
        -- escape - здесь идет вроде как пояснение , какая локация
        local obj = sim:story_object(91) - сюда надо записать присвоенный стори_ид
        if obj then
            level.map_add_object_spot(obj.id, "level_changer", "to_garbage") - конкретно эта часть вроде как отвечает за постановку метки, на карте. 
(Собственно здесь я немного путаюсь , т.к - автор ( Хикс) сперва пишет что типы меток пишутся в первые кавычки (т.е надпись level_changer) (им же указанные - crlc_big – большой белый круг;
crlc_mdl – средних размеров круг; crlc_small – маленький кружок. ) Но , позже я запутался, потому что он написал - Теперь можно тип метки указывать ”primary_object”. 
Куда это указывать , я так и не понял , если второе слово в кавычках , это вроде как название (здесь to_garbage это дословно - переход к свалке.)
Меня интересует следущее - можно без ковыряния алл.спавн-а , указать координаты, и сделать все эти махинации через скрипты? Да , для меня это правда сложно. Только на вас надеюсь. 
        end

[Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // 

 "Burn the rich // eat the rich"

О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист.

Egor4ikModMaker.gif

Поделиться этим сообщением


Ссылка на сообщение

Собственно если я правильно понял, получается что ф-ция должна принимать следующий вид: (поправьте если не так) 

function add_lchanger_location()
        local obj = sim:object("es_andrew") - по имени , как пояснили (Указал из профиля, нпс)
        if obj then
            level.map_add_object_spot(obj.id, "12000", "Андрюха") (если все правильно понял , то первое это ид - из game_story_ids, а второе - это то , что появится на карте если навести на отметку.
        end
Изменено пользователем Egor4ikModMaker

[Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // 

 "Burn the rich // eat the rich"

О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист.

Egor4ikModMaker.gif

Поделиться этим сообщением


Ссылка на сообщение

Я может совсем дегенерат , но я собственно ловлю вылет

(но по мимо этого я добавил в диалог экш на вызов этой ф-ции (  <action>level_tasks.andrew_at_map</action> ) 

 по этой ф-ции, (Прописал ее как было указано в level_tasks.script)

Ф-ция

function andrew_at_map()
        local obj = sim:object("es_andrew")
        if obj then
            level.map_add_object_spot(obj.id, "12000", "Андрюха")
        end

Log:

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)

[Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // 

 "Burn the rich // eat the rich"

О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист.

Egor4ikModMaker.gif

Поделиться этим сообщением


Ссылка на сообщение
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)

 

Теперь убрав даже строку вызова ф-ции из диалога, при попытке разговора с нпс

 ловлю безлогий вылет. обидно. 

Изменено пользователем Egor4ikModMaker
дополнение

[Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // 

 "Burn the rich // eat the rich"

О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист.

Egor4ikModMaker.gif

Поделиться этим сообщением


Ссылка на сообщение
Только что, Dennis_Chikin сказал:

Осталось выяснить, зачем добавлять ее в level_tasks.

И какая конечная цель всех манипуляций.

1)Добавление этой ф-ции собственно было описано в вышеуказанном уроке от Хикса

2)Конечная цель этих манипуляций , что бы нпс отображался на карте у гг ( при взятии квестов принеси-подай ) как с торговцем. 

[Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // 

 "Burn the rich // eat the rich"

О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист.

Egor4ikModMaker.gif

Поделиться этим сообщением


Ссылка на сообщение
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>

 

Изменено пользователем Egor4ikModMaker
  • Смешно 1

[Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // 

 "Burn the rich // eat the rich"

О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист.

Egor4ikModMaker.gif

Поделиться этим сообщением


Ссылка на сообщение
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"

О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист.

Egor4ikModMaker.gif

Поделиться этим сообщением


Ссылка на сообщение
Только что, Dennis_Chikin сказал:

Непись с диалогом тот же самый, на которого надо метку ?

 

<<в ручную прописал 12.000 = "esc_andrew" >> - поздравляю. Удивительно, что запускается.

Да

[Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // 

 "Burn the rich // eat the rich"

О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист.

Egor4ikModMaker.gif

Поделиться этим сообщением


Ссылка на сообщение
8 минут назад, Dennis_Chikin сказал:

 

level.map_add_object_spot_ser( n1:id(), "кракозябра", "надпись" )

Вызывает вопрос только что должно быть под "кракозяброй"?

Upd:

Поставил одно из ранее указанных значений вместо кракозябры

- green_location , ловлю безлогий вылет.

Такой же результат если поставить "primary_object".

Изменено пользователем Egor4ikModMaker

[Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // 

 "Burn the rich // eat the rich"

О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист.

Egor4ikModMaker.gif

Поделиться этим сообщением


Ссылка на сообщение
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"

О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист.

Egor4ikModMaker.gif

Поделиться этим сообщением


Ссылка на сообщение
3 минуты назад, Dennis_Chikin сказал:

sesok.script на обменник, и ссылку в студию.

Держи http://rgho.st/8p5J5cXqs

[Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // 

 "Burn the rich // eat the rich"

О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист.

Egor4ikModMaker.gif

Поделиться этим сообщением


Ссылка на сообщение
Только что, 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"

О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист.

Egor4ikModMaker.gif

Поделиться этим сообщением


Ссылка на сообщение
1 минуту назад, Kirgudu сказал:

Да не в bind_stalker ошибка, а в level_tasks. Попробуй перевести на русский:

это означает "попытка проиндексировать глобальный объект 'level_tasks' (значение nil)".

То есть ты из bind_stalker пытаешься вызвать какую-то функцию в level_tasks, но так как level_tasks имеет значение nil - получаешь ошибку.
А быть равным nil какой-то скрипт может в том случае, если внутри имеется какая-то синтаксическая ошибка, и движок просто не может скрипт загрузить.

Проверяй, что делал не так в level_tasks.

Все , что я делал в  level_tasks., это добавление ф-ции , вышеуказанной .

 т.е (что по логике должно было работать . ) 

function add_lchanger_location()
        local obj = sim:object("es_andrew") - по имени , как пояснили (Указал из профиля, нпс)
        if obj then
            level.map_add_object_spot(obj.id, "12000", "Андрюха") (если все правильно понял , то первое это ид - из game_story_ids, а второе - это то , что появится на карте если навести на отметку.
        end

[Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // 

 "Burn the rich // eat the rich"

О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист.

Egor4ikModMaker.gif

Поделиться этим сообщением


Ссылка на сообщение
56 минут назад, Dennis_Chikin сказал:

@Egor4ikModMaker, Это типа шутка такая - всадить в файл невидимый символ, после которого он вообще не читается ?

 

Нет , сам не знал , извиняюсь за неудобства.

Сейчас попробую.

Благодарствую всем , кто участвовал.

Все работает . всем спасибо 

Изменено пользователем Egor4ikModMaker

[Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // 

 "Burn the rich // eat the rich"

О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист.

Egor4ikModMaker.gif

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   1 пользователь

×
×
  • Создать...