Скрипты |
Здравствуйте, гость ( Авторизация | Регистрация )
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
Скрипты |
13.07.2009, 11:34
Сообщение
#141
|
|
Навий черны у ношьти Репутация: 377 Группа: Забанен Сообщений: 2210 Регистрация: 11.03.2009 |
FAQ Lua в X-Ray Список всех функций, переменных, классов и т.п. что используются в Сталкере находится по адресу: Код gamedata/scripts/lua_help.script Для получения файла надо распаковать игру. Можно скачать, в принципе Тут =>> Уроки Сообщение отредактировал RayTwitty - 09.06.2018, 20:23 -------------------- нарушение правил п. 7.2
|
 
|
|
|
|
23.02.2012, 10:55
Сообщение
#142
|
|
В Пальто Репутация: 930 Группа: Участник Сообщений: 6980 Награды: 8 Регистрация: 18.07.2008 |
Вообще в xr_effects указано три типа функций - anim_obj_forward, anim_obj_backforward и anim_obj_forward (reset, точного названия не помню). Соотвественно все три можно вызывать из логики.
"Тут вроде понял, возник сразу вопрос, логика двери??? У меня простая анимация, вернее в максе вшил 3 одна просто открытие open, вторая закрытие close, и третья полный цикл: открытие, задержка в открытом состоянии 3 секунды и закрытие idle. Вшил также две контрольные точки, закрытая дверь и открытая дверь. Теперь можно по подробнее по логике двери? что это? анимация вшитая или писать логику для неё надо?" я них.. ничего не понял Да, в спавне укажу путь к кастомдате двери, по этому пути создай лтх файл логики (с соответствующим названием), туда напиши логику, что я тебе написал) Ну, знаешь ли, без логики анимация как бы не работает А вот то, что ты написал в первом посте - это привязка к кнопке, естественно кнопка не может открыться, это же кнопка, а не дверь) Policai, там ничего сложного, поверь) Просто большинство скриптов написано.. эм.. как бы сказать.. некомпетентными людьми) Вот смотри, логика для двери, используется у нас в "Обливион Лосте" (в бета тесте отсутствует): [logic] active = ph_door@locked [ph_door@locked] locked = true on_info = {+quest_gr_art_1_start} ph_door@close - игрок получает первое задание и дверь открывается, ну прям как в ТЧ tip_open = tip_door_locked snd_open_start = trader_door_locked not_for_npc = true [ph_door@close] locked = false closed = true tip_open = tip_door_open on_use = ph_door@open not_for_npc = true [ph_door@open] locked = false closed = false on_use = ph_door@close tip_close = tip_door_close not_for_npc = true |
 
|
|
23.02.2012, 11:10
Сообщение
#143
|
|
Почти Игрок Репутация: 2 Группа: Участник Сообщений: 24 Регистрация: 23.02.2012 |
Цитата первом посте - это привязка к кнопке, естественно кнопка не может открыться, это же кнопка, а не дверь) Я сделал по анологии, именно так сделан вход в лабу х-8. на двери прописано что это анимация а на пульте то что у меня в посте, я и сделал также.... наверно по разному общаемся... да и трудно обьяснить тупому мне.... я работаю не с аллспавном а в сдк. Я сделал так: ставлю физик\ доор, присваиваю визуал моей двери, прописываю там анимацию полную idle, (Мне надо чтоб дверь открылась и закрылась сама )в кустом дате указываю путь к файлу лтх с названием как у этой двери. В этом лтх прописываю: [collide] ignore_static [animated_object] ставлю пульт сбоку и прописываю в кустом дата путь к лтх с названием как и у пульта, в лтх прописываю: [logic] active = ph_button@no_card [ph_button@no_card] anim = idle tooltip = tip_no_access_card on_info = {=actor_has_item(zat_a23_labx8_key)} ph_button@has_card [ph_button@has_card] anim = idle tooltip = tip_need_access_card on_press = ph_button@unlocked on_info = {!actor_has_item(zat_a23_labx8_key)} ph_button@no_card [ph_button@unlocked] anim = idle tooltip = st_lx8_button_press_true on_game_timer = 20 | {-lx8_door_open} %+lx8_door_open =anim_obj_forward(lim_door_laba_hide)% on_game_timer2 = 10 | {-lx8_green_on} %+lx8_green_on =turn_off(lx8_light_switch_1_red_id) =turn_on(lx8_light_switch_1_green_id)% on_info = {=actor_in_zone(lim_sr_actor_in_lab) -lim_actor_in_lab} %+lim_actor_in_lab =create_squad(lx8_polter_squad:lim_smart_terrain)% Именно так сделано в ЗП вход в лабу х-8. Жирным выделено то что я поменял на своё, всё остальное так как было в оригинале. Карточку заспавнил рядышком и проверяю в игре. Подхожу к пульту, появляется надпись нужна карта доступа, отхожу , беру карту, подхожу с картой, появляется надпись Открыть, нажимаю ввод появляется надпись Доступ разрешён потом 3-4 секунды и вылет с жалобой на строку 1317. Я понимаю что эта анимация просто не прописана поэтому вылет. Я также понимаю что скорее всего логика на ту родную анимацию уже есть в файлах игры где то, вопрос где? Извини пожалуста Ким что я такой навязчивый, просто у меня очень много анимаций по всем локам, и мне хотелось бы понять что то общее, чтоб не искать ответы на вопросы по каждой анимации. Скорее всего я не прав, но мне кажется почему то, что будет проще работать если у меня будет какой то основной общий скрипт, прописанный с небольшими изменениями или на пульте с картой или на пульт с кнопками, или просто в спейс рестрикторе, скрипт который просто даёт команду на запуск выбранной анимации. Сообщение отредактировал Policai - 23.02.2012, 11:40 |
 
|
|
23.02.2012, 12:51
Сообщение
#144
|
|
В Пальто Репутация: 930 Группа: Участник Сообщений: 6980 Награды: 8 Регистрация: 18.07.2008 |
Policai, погоди, но зачем создавать анимку, если такая уже есть? Возьми аналог (те же двери лифта) и установи их на дверь (в тч - это проход со свалки к бару).
|
 
|
|
23.02.2012, 13:08
Сообщение
#145
|
|
Почти Игрок Репутация: 2 Группа: Участник Сообщений: 24 Регистрация: 23.02.2012 |
Тут ситуация такая что таких анимок нету..... Моя дверь это стена отьезжающая вбок.... или круглая бункерная дверь, плюс сама анимация с другими костями и цикличная. Те анимации которые уже есть подходящие для меня, я использую, с ними нет проблем, проблемы только с новыми анимациями.
Сообщение отредактировал Policai - 23.02.2012, 13:13 |
 
|
|
23.02.2012, 13:12
Сообщение
#146
|
|
В Пальто Репутация: 930 Группа: Участник Сообщений: 6980 Награды: 8 Регистрация: 18.07.2008 |
Policai, тогда их надо прописывать в скриптах, но там будет куча возни. Вообще анимка отъезжающей двери быть таки должна)
|
 
|
|
23.02.2012, 13:27
Сообщение
#147
|
|
Почти Игрок Репутация: 2 Группа: Участник Сообщений: 24 Регистрация: 23.02.2012 |
В ЗП нету отьезжающих дверей...... повырезали всё, есть лифтовые двери но там нет анимации как таковой, там 2 положения, открытые и закрытые, типо актор не видит сам процесс открывания, думаю это сделать проще.... а мне надо именно чтоб был этот сам процесс открытия двери... в этом весь смак... с ТЧ и ЧН в ЗП не работают скрипты, с мостом в рыжем лесу такая же проблема....
|
 
|
|
23.02.2012, 21:22
Сообщение
#148
|
|
Репутация: 0 Группа: Участник Сообщений: 1 Регистрация: 23.02.2012 |
|
 
|
|
24.02.2012, 08:08
Сообщение
#149
|
|
В Пальто Репутация: 930 Группа: Участник Сообщений: 6980 Награды: 8 Регистрация: 18.07.2008 |
Dart_Sergius, скорее всего в ph_door, там смещение каждого объекта надо будет указать и т.д. Либо с нуля написать скрипт логики.
|
 
|
|
26.02.2012, 17:08
Сообщение
#150
|
|
Почти Игрок Репутация: 2 Группа: Участник Сообщений: 24 Регистрация: 23.02.2012 |
Ким
Всё разобрался..... сделал, всё гораздо проще чем кажется..... Единственный минус что на любую анимацию я использую логику двери...... какие могут быть последствия? А так работает всё как надо, и не нужно писать скрипт логики с нуля. Сейчас у меня практически на одинаковой логике работает анимация стены сдвигающейся в сторону, управление с пульта, и подьёмный мост с рыжего леса, управление с рубильника, и самодельная дверь, тоже с пульта... Сообщение отредактировал Policai - 26.02.2012, 17:10 |
 
|
|
26.02.2012, 17:29
Сообщение
#151
|
|
В Пальто Репутация: 930 Группа: Участник Сообщений: 6980 Награды: 8 Регистрация: 18.07.2008 |
Policai, ну ка напиши в чем проблема была, а то кому-нибудь понадобится)
Последствия? Да вроде не должны быть, единственное в игре не красиво будет. |
 
|
|
28.02.2012, 16:12
Сообщение
#152
|
|
Игровой Эксперт Репутация: 407 Группа: Участник Сообщений: 2394 Награды: 5 Регистрация: 19.01.2009 |
скажу сразу,что в lua,я почти профан(синтаксиса не знаю) и сейчас его прикручиваю к движку
Возможен ли precache?-т.е инклуд скрипта,но его выполнение будет происходить только после вызова именно этого скрипта.. Читал про " если я первый скрипт вызваю как(С++) Код RunLuaScript("..\\EngineMedia\\Scripts\\startup.lua"); то я бы второй хотел бы вызвать так: Код RunLuaScript("keyboard-esc.lua"); А не как сейчас: Код RunLuaScript("..\\EngineMedia\\Scripts\\keyboard-esc.lua"); Вводить собственный precache всех ресурсов не хотелось бы-нужны именно скрипты Сообщение отредактировал Tron - 28.02.2012, 16:14 |
 
|
|
09.05.2012, 10:18
Сообщение
#153
|
|
Опытный Геймер Репутация: 17 Группа: Участник Сообщений: 158 Награды: 1 Регистрация: 30.10.2009 |
Параметр в кастом дате смарт террейна
Код stay = min[, max] ;время, на которое сталкер останется, умолчание=навсегда как задаются параметры min и мах? пытался задавать так Код stay = 9, 11 пишет что инвалидный параметр. Подскажите как задать этот параметр |
 
|
|
02.06.2014, 02:12
Сообщение
#154
|
|
Игровой Эксперт Репутация: 407 Группа: Участник Сообщений: 2394 Награды: 5 Регистрация: 19.01.2009 |
Забыл отписать-разобрался в своей проблеме.
Линковал статически луабинд,ко многим длл.кам из проекта,и передавал туда lua_state. Вообще странно было,что статические функции работали Сообщение отредактировал Tron - 02.06.2014, 02:12 |
 
|
|
11.06.2014, 17:41
Сообщение
#155
|
|
Почти Игроман Репутация: 124 Группа: Участник Сообщений: 686 Награды: 2 Регистрация: 17.09.2007 |
Вопрос по работе диалогов. В чем может быть ошибка?
dialogs_escape.script function money_check_1() return db.actor:money() >= 10 end function fuel_to_actor_1(oSpeaker1, oSpeaker2) dialogs.give_items("explosive_mobiltank", 1) dialogs.relocate_money(oNPC, 10, "out") end function money_check_2() return db.actor:money() >= 20 end function fuel_to_actor_2(oSpeaker1, oSpeaker2) dialogs.give_items("explosive_mobiltank", 2) dialogs.relocate_money(oNPC, 20, "out") end function money_check_4() return db.actor:money() >= 40 end function fuel_to_actor_4(oSpeaker1, oSpeaker2) dialogs.give_items("explosive_mobiltank", 4) dialogs.relocate_money(oNPC, 40, "out") end function no_money_for_fuel() return db.actor:money() >= 0 end dialogs_escape <dialog id="esc_need_fuel"> <phrase_list> <phrase id="0"> <text>Нужен бензин.</text> <next>2</next> </phrase> <phrase id="2"> <text>Хорошо. Сколько канистр?</text> <next>3</next> <next>4</next> <next>5</next> <next>6</next> </phrase> <phrase id="3"> <text>Одной хватит.</text> <next>31</next> <next>7</next> </phrase> <phrase id="31"> <precondition>dialog_escape.money_check_1</precondition> <action>dialog_escape.fuel_to_actor_1</action> <text>Ни гвоздя, ни жезла тебе, Меченый.</text> </phrase> <phrase id="4"> <text>Две.</text> <next>41</next> <next>7</next> </phrase> <phrase id="41"> <precondition>dialog_escape.money_check_2</precondition> <action>dialog_escape.fuel_to_actor_2</action> <text>Ни гвоздя, ни жезла тебе, Меченый.</text> </phrase> <phrase id="5"> <text>Сразу четыре.</text> <next>51</next> <next>7</next> </phrase> <phrase id="51"> <precondition>dialog_escape.money_check_4</precondition> <action>dialog_escape.fuel_to_actor_4</action> <text>Ни гвоздя, ни жезла тебе, Меченый.</text> </phrase> <phrase id="6"> <text>Я передумал...</text> <action>dialogs.break_dialog</action> </phrase> <phrase id="7"> <precondition>dialog_escape.no_money_for_fuel</precondition> <text>Походу, пока тебе с твоими деньгами только пешеходом быть.</text> </phrase> </phrase_list> </dialog> При кликах на пункты с выбором(3, 4, 5) иногда выкидывает фразу из диалога "не хватает денег", как будто врет функция money_check_X. При повторном клике все идет как надо и это сообщение выскакивает когда положено. За основу взял диалог с покупкой авто у Бармена из LA, и там не понятно назначение функции в конце: Цитата function not_has_car_money() , которая является предусловием для пункта диалога "у тебя нет денег" в dialogs.xmlreturn not has_car_money() end -- has_car_money - денег >= цене самого дешевого автомобиля Что эта функция выполняет, если и так по умолчанию при недостатке денег диалог на "нет денег" и ссылается? Сообщение отредактировал Alwen - 11.06.2014, 17:45 |
 
|
|
11.06.2014, 18:11
Сообщение
#156
|
|
Почти Мастер Репутация: 311 Группа: Участник Сообщений: 1092 Награды: 5 Регистрация: 01.03.2011 |
|
 
|
|
11.06.2014, 18:46
Сообщение
#157
|
|
Почти Игроман Репутация: 124 Группа: Участник Сообщений: 686 Награды: 2 Регистрация: 17.09.2007 |
function no_money_for_fuel() return db.actor:money() >= 0 end Уверен? Нет. Но если делать как у торговли авто ЛА, с предусловием актор_мани() <= мин_цена_айтема, то при выборе самого дорого товара и недостатке денег на него стабильно получаю вылет No available phrase to say, dialog[esc_need_fuel] |
 
|
|
11.06.2014, 19:09
Сообщение
#158
|
|
Почти Мастер Репутация: 311 Группа: Участник Сообщений: 1092 Награды: 5 Регистрация: 01.03.2011 |
Нет. Но если делать как у торговли авто ЛА Причем тут ЛА? Очевидно же, что функция возвращает true всегда, когда у актора есть деньги. Т.о. прекондишн твоей фразы про нехватку денег всегда пропускает эту фразу. Делай конкретно в этом месте < 10. Upd: лучше сделать так, наверное. Сделай для каждой фразы свою фразу отказа и там отдельную функцию no_money с разными количествами проверямых денег. Сообщение отредактировал K.D. - 11.06.2014, 19:15 |
 
|
|
11.06.2014, 20:01
Сообщение
#159
|
|
Почти Игроман Репутация: 124 Группа: Участник Сообщений: 686 Награды: 2 Регистрация: 17.09.2007 |
Второй вариант сделал, но мучает этот вылет "No available phrase to say, dialog[esc_need_fuel]", если нажимать вариант на 40 при 30 денег в инентаре.
dialog_escape.script function money_check_1() return db.actor:money() >= 10 end function fuel_to_actor_1(oSpeaker1, oSpeaker2) dialogs.give_items("explosive_mobiltank", 1) dialogs.relocate_money(oNPC, 10, "out") end function money_check_2() return db.actor:money() >= 20 end function fuel_to_actor_2(oSpeaker1, oSpeaker2) dialogs.give_items("explosive_mobiltank", 2) dialogs.relocate_money(oNPC, 20, "out") end function money_check_4() return db.actor:money() >= 40 end function fuel_to_actor_4(oSpeaker1, oSpeaker2) dialogs.give_items("explosive_mobiltank", 4) dialogs.relocate_money(oNPC, 40, "out") end --function no_money_check() -- return db.actor:money() < 0 --end function no_money_for_fuel() return not money_check_1 end function no_money_for_fuel_two() return not money_check_2 end function no_money_for_fuel_four() return not money_check_4 end dialogs_escape.xml <dialog id="esc_need_fuel"> <phrase_list> <phrase id="0"> <text>Нужен бензин.</text> <next>2</next> </phrase> <phrase id="2"> <text>Хорошо. Сколько канистр?</text> <next>3</next> <next>4</next> <next>5</next> <next>6</next> </phrase> <phrase id="3"> <text>Одной хватит.</text> <next>31</next> <next>7</next> </phrase> <phrase id="31"> <precondition>dialog_escape.money_check_1</precondition> <action>dialog_escape.fuel_to_actor_1</action> <text>Ни гвоздя, ни жезла тебе, Меченый.</text> </phrase> <phrase id="4"> <text>Две.</text> <next>41</next> <next>72</next> </phrase> <phrase id="41"> <precondition>dialog_escape.money_check_2</precondition> <action>dialog_escape.fuel_to_actor_2</action> <text>Ни гвоздя, ни жезла тебе, Меченый.</text> </phrase> <phrase id="5"> <text>Сразу четыре.</text> <next>51</next> <next>71</next> </phrase> <phrase id="51"> <precondition>dialog_escape.money_check_4</precondition> <action>dialog_escape.fuel_to_actor_4</action> <text>Ни гвоздя, ни жезла тебе, Меченый.</text> </phrase> <phrase id="6"> <text>Я передумал...</text> <action>dialogs.break_dialog</action> </phrase> <phrase id="7"> <precondition>dialog_escape.no_money_for_fuel</precondition> <text>Походу, пока тебе с твоими деньгами только пешеходом быть.</text> </phrase> <phrase id="71"> <precondition>dialog_escape.no_money_for_fuel_four</precondition> <text>Тебе на столько не хватит.</text> </phrase> <phrase id="72"> <precondition>dialog_escape.no_money_for_fuel_two</precondition> <text>Тебе на столько не хватит.</text> </phrase> </phrase_list> </dialog> Сообщение отредактировал Alwen - 11.06.2014, 20:07 |
 
|
|
11.06.2014, 20:07
Сообщение
#160
|
|
Мастер Игры Репутация: 232 Группа: Друзья GM Сообщений: 1299 Награды: 4 Регистрация: 05.03.2012 |
Alwen,
Перенеси весь текст (<text></text>) в любой файл из config\text\rus. -------------------- |
 
|
|
11.06.2014, 20:52
Сообщение
#161
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
|
 
|
|
Текстовая версия | Сейчас: 24.04.2024, 13:42 |