Svoboда 3 Опубликовано 23 Апреля 2009 Поделиться Опубликовано 23 Апреля 2009 Тема для обсуждения скриптов всего и всех в серии игр STALKER. Задавая вопрос (!): 1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего; 2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме); 3. Изучите информацию которая может вам помочь: Stalkerin. Там есть много хороших статей касательно данной темы.Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения. Справочное руководство по языку Lua 5.1https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ruСправочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены. Логика со вступлением и четырьмя частями: ВступлениеЧасть перваяЧасть втораяЧасть третьяЧасть четвертая. Smart_terrain (в простонароде - гулаг)Интересный способ настроики логики для гулаговСкриптовая часть игровой логики 4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос; 5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе; 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода; 7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины. 8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ. 9. И помните: «Правильно заданный вопрос – половина ответа». Какие вопросы следует задавать, а какие нет... Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу. Вопросы которые будут удалятся, следовательно их задавать не нужно:-- Где находится та или иная функция? Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;-- Как сделать что-то/то-то? С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов? В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос. И последнее: очень рекомендовано к прочтению Правила форума 1 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/
dimka.qwer 0 Опубликовано 20 Марта 2010 Поделиться Опубликовано 20 Марта 2010 (изменено) Помогите разобраться с логикой нпс. Какую схему логики лучше всего прописать охраннику? walker и camper конечно подходят, но дабы такие охранники стояли на месте, в path_walk для каждого из них придется создавать точки с их координатами, что нехило добавляет лишней работы и вынуждает писать для каждого отдельный скрипт с логикой. Также параллельно пытаюсь разобраться с такими страшными вещами как Смарттерейны и гулаги. Изменено 20 Марта 2010 пользователем dimka.qwer Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/20/#findComment-402893
Влад 9 Опубликовано 20 Марта 2010 Поделиться Опубликовано 20 Марта 2010 (изменено) Вопрос по кастом статикам в ЗП: cust_static:wnd():SetWidth(num) cust_static:wnd():SetHeight(cw) cust_static:wnd():SetWndPos(pos) custom_static:wnd():SetColor(col) Не один из методов не работает.В ТЧ всё работало..Собсно ПЫС это полностью вырезали,или чем-то заменили? Изменено 20 Марта 2010 пользователем Влад Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/20/#findComment-403433
Galil 18 Опубликовано 20 Марта 2010 Поделиться Опубликовано 20 Марта 2010 Склепал скрипт для проигрывания определенных партиклов в определенные погодные периоды. Вообщем намекните что нетак я сделал. Вылет с логом, намекающим на неработоспособность bind_stalker.script if weather_types[level.name()]==0 then local = level.get_weather() if weather == then if not self.particles then self.particles=particles_object("anomaly2\\snow_vuga") self.particles:play_at_pos( db.actor:position() ) end end if self.particles then self.particles:move_to(db.actor:position(),vector():set(0,0,0)) end for k,v in pairs(snow_times) do if weather =="weather_surge" then need_play = true end end local need_play = false if need_play==true then if self.particles and not self.particles:playing() then self.particles:play() end else if self.particles and self.particles:playing() then self.particles:stop_deffered() end end end if weather_types[level.name()]==0 then local weather = level.get_weather() if not self.particles then self.particles=particles_object("anomaly2\\snow") self.particles:play_at_pos( db.actor:position() ) end if self.particles then self.particles:move_to(db.actor:position(),vector():set(0,0,0)) end for k,v in pairs(snow_times) do if(weather == "weather_rainy" or weather == "weather_stormy") then need_play = true end end local need_play = false if need_play==true then if self.particles and not self.particles:playing() then self.particles:play() end else if self.particles and self.particles:playing() then self.particles:stop_deffered() end end end Дублирование вообще разрешено в скриптах? Я вообще неочень ориентируюсь в скриптах :ny_ph34r: Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/20/#findComment-403463
Влад 9 Опубликовано 20 Марта 2010 Поделиться Опубликовано 20 Марта 2010 (изменено) Galil [spoiler=Делай работу над ошибками ] local ? = level.get_weather() не задано имя локальной переменной ... if weather == ? then чему они должны равнятся? ... if not self.particles then self.particles=particles_object("anomaly2\\snow_vuga") self.particles:play_at_pos( db.actor:position() ) || \/ что такое self.? откуда его взял? ... need_play = true end end local need_play = false ... сначала задаём переменную,а только потом юзаем.т.е.,так: local need_play = false ... проверка/действия ... need_play = true end end Вопрос по кастом статикам в ЗП: cust_static:wnd():SetWidth(num) cust_static:wnd():SetHeight(cw) cust_static:wnd():SetWndPos(pos) custom_static:wnd():SetColor(col) Не один из методов не работает.В ТЧ всё работало..Собсно ПЫС это полностью вырезали,или чем-то заменили? Изменено 20 Марта 2010 пользователем Влад Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/20/#findComment-403476
Malandrinus 615 Опубликовано 20 Марта 2010 Поделиться Опубликовано 20 Марта 2010 Влад, есть же lua_help.script cust_static:wnd():SetWidth(num) cust_static:wnd():SetHeight(cw) SetWndSize(vector2); cust_static:wnd():SetWndPos(pos) SetWndPos(vector2) или всё сразу SetWndRect(Frect); custom_static:wnd():SetColor(col) убрали совсем. В зависимости от задачи можно как-либо обойтись без этого Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/20/#findComment-403520
Влад 9 Опубликовано 20 Марта 2010 Поделиться Опубликовано 20 Марта 2010 malandrinus Спасибо.А про lua_help.script совсем забыл . Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/20/#findComment-403524
dimka.qwer 0 Опубликовано 20 Марта 2010 Поделиться Опубликовано 20 Марта 2010 Несколько вопросов к скриптерам: можно ли в скрипте прописать две и более функции alife():create ? может кто-нибудь объяснить, как автоматически запускать скрипт при старте игры через bind_stalker.script Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/20/#findComment-403539
Влад 9 Опубликовано 20 Марта 2010 Поделиться Опубликовано 20 Марта 2010 (изменено) dimka.qwer можно ли в скрипте прописать две и более функции alife():create да,можно. как автоматически запускать скрипт при старте игры через bind_stalker.script находим: function actor_binder:on_item_drop (obj) для проверки итема на выброс из инвентаря. function actor_binder:on_item_take (obj) на взятие итема function actor_binder:update(delta) "общий апдейтер". Изменено 20 Марта 2010 пользователем Влад Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/20/#findComment-403547
dimka.qwer 0 Опубликовано 21 Марта 2010 Поделиться Опубликовано 21 Марта 2010 (изменено) Блин, никак не могу разобраться с bind_stalker.script Имеется следующая функция спавна в файле mod_spawn.script function mod_spawn () alife():create("esc_hunt",vector():set(-213.69770812988,-23.183309555054,-122.53145599365),39933,59) end Что нужно прописать в bind_stalker, чтобы вызвать один раз эту функцию при запуске игры ? Изменено 21 Марта 2010 пользователем dimka.qwer Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/20/#findComment-403825
dimka.qwer 0 Опубликовано 21 Марта 2010 Поделиться Опубликовано 21 Марта 2010 Как? Тут важны именно примеры :ny_happy: Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/20/#findComment-403833
Malandrinus 615 Опубликовано 21 Марта 2010 Поделиться Опубликовано 21 Марта 2010 Что нужно прописать в bind_stalker, чтобы вызвать один раз эту функцию при запуске игры ? Почему непременно в bind_stalker? Если так уж надо именно там, то в actor_binder:net_spawn или actor_binder:reinit Также можно в _g.start_game_callback, но надо учесть, что это вообще первый запускаемый скрипт и там ещё ничего не инициализировано. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/20/#findComment-403841
dimka.qwer 0 Опубликовано 21 Марта 2010 Поделиться Опубликовано 21 Марта 2010 А как сделать проверку того, чтобы скрипт загружался один раз при запуске? Ибо при простом прописывании функции, при каждой новой загрузке спаунится клон создаваемого непися Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/20/#findComment-403847
Vano_Santuri 33 Опубликовано 21 Марта 2010 Поделиться Опубликовано 21 Марта 2010 Возможно мой ответ будет , глупым и весомым, но можно все повесить на колбэк апдейта если у вас такой имеется. function mod_spawn () if not db.actor:has_info("spawn_esc_hunt") then alife():create("esc_hunt",vector():set(-213.69770812988,-23.183309555054,-122.53145599365),39933,59) db.actor:give_info_portion("spawn_esc_hunt") end end Единственно прописать инфопоршень в файлы, понимаю, что способ извращенский и немного подгружает апдейтер, но если у вас не слишком много повешено на апдейт, то должно сработать... если колбэк не стоит , просто вызывайте в bind_stalker.script function actor_binder:update(delta) перед закрытием функциию Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/20/#findComment-403853
Malandrinus 615 Опубликовано 21 Марта 2010 Поделиться Опубликовано 21 Марта 2010 Vano_Santuri, а что мешает сделать с инфопрошеном, но там где я написал в предыдущем посте? И это не будет грузить апдейт Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/20/#findComment-403895
nafigator 10 Опубликовано 21 Марта 2010 Поделиться Опубликовано 21 Марта 2010 Я не скриптер, но отвечу. Можно попробовать поставить колбэк на спавн того же болта при старте новой игры... как-то пользовал такой момент, не помню уже для чего, но что точно - болт спавнится не только при старте новой игры, но и при загрузке старой Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/20/#findComment-403908
dimka.qwer 0 Опубликовано 21 Марта 2010 Поделиться Опубликовано 21 Марта 2010 Я уже через bind_stalker сделал... А диалоги я сразу отбросил как вариант, потому что нехилый лаг случается во время диалогового спавна. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/20/#findComment-404123
RayTwitty 571 Опубликовано 21 Марта 2010 Поделиться Опубликовано 21 Марта 2010 (изменено) Проблема-вопрос. Первый работаю с all.spawn. Для начала хочу изменить стартовый набор ГГ. Скачал xrSpawner v0.13.1 Beta. Открыл в нем all.spawn. На шел вот это: Добавил то что выделена красным. Потом жму "Принять изменения". Потом Файл->Сохранить. Начинаю новую игру, но нового предмета нет. После этого открываю опять алл.спавн и вижу что он остался таки каким был (нету моего добавленного предмета). Может я не так сохранил\добавил? З.Ы. Файл алл.спавн из мода "Зона Поражения 1.1". Изменено 21 Марта 2010 пользователем Shadows Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/20/#findComment-404139
Galil 18 Опубликовано 21 Марта 2010 Поделиться Опубликовано 21 Марта 2010 (изменено) Вобщем исправил я свой первоначальный скрипт, игра запустилась, но... скрипт не срабатывает. Долго думая я переделал его. И опять при загрузке ловлю вылет с логом, намекающим на неработоспособность bind_stalker. Вот новый вариант моего скрипта. if weather_types[level.name()]==0 then local weather = level.get_weather() local play_vuga = false local play_snow = false if play_vuga = false then if not self.particles then self.particles=particles_object("anomaly2\\snow_vuga") self.particles:play_at_pos( db.actor:position() ) end if self.particles then self.particles:move_to(db.actor:position(),vector():set(0,0,0)) end end if weather == "weather_surge" or weather == "weather_thunder" then play_vuga = true end elseif weather == "weather_rainy" or weather == "weather_stormy" or weather == "weather_grey" or weather == "weather_foggy" then play_snow = true end end if play_vuga = true then if self.particles and not self.particles:playing() then self.particles:play() end else if self.particles and self.particles:playing() then self.particles:stop_deffered() end end if play_snow = false then if not self.particles then self.particles=particles_object("anomaly2\\snow") self.particles:play_at_pos( db.actor:position() ) end if self.particles then self.particles:move_to(db.actor:position(),vector():set(0,0,0)) end end if play_snow = true then if self.particles and not self.particles:playing() then self.particles:play() end else if self.particles and self.particles:playing() then self.particles:stop_deffered() end end end Я уж не знаю где ошибся...вчера когда делал скрипт, просто сонный был - поэтому много ошибок сделал. По поводу self. - все работает с ним. А вообще он был в скрипте от Monnoroch. И еще один вопрос на засыпку - при каких случаях НПС может заснуть(желательно перечислить все)? Изменено 22 Марта 2010 пользователем Galil Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/20/#findComment-404154
Malandrinus 615 Опубликовано 22 Марта 2010 Поделиться Опубликовано 22 Марта 2010 Labus, парой постов ранее здесь как раз об этом шла речь. Правда будет срабатывать и при переходе на другой уровень, поскольку это по сути загрузка заново. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/20/#findComment-405005
Arhara 32 Опубликовано 23 Марта 2010 Поделиться Опубликовано 23 Марта 2010 (изменено) Svoboда, custom_data = <<END [smart_terrain] none = true cfg = scripts\az_patrul_1.ltx END А чтобы ходил не тупо по маршруту, если такая простая логика, то лучше так - а тайминги и вероятности проставишь сам. [piyan_kapitan_look] points = p0,p1,p2 p0:name = wp00|t=1000 p0:flags = 0x1 p0:position = -147.18115234375,-0.584499299526215,-305.457458496094 p0:game_vertex_id = 447 p0:level_vertex_id = 90847 p1:name = wp01|t=1000 p1:flags = 0x2 p1:position = -151.469772338867,1.54915750026703,-294.154266357422 p1:game_vertex_id = 447 p1:level_vertex_id = 86489 p2:name = wp02|t=1000 p2:flags = 0x3 p2:position = -154.860473632813,0.0715790092945099,-300.463287353516 p2:game_vertex_id = 447 p2:level_vertex_id = 82560 [piyan_kapitan_walk] points = p0,p1,p2 p0:name = wp00 p0:flags = 0x1 p0:position = -146.631423950195,-0.615138828754425,-305.455871582031 p0:game_vertex_id = 447 p0:level_vertex_id = 91609 p0:links = p1(1),p2(1) p1:name = wp01 p1:flags = 0x2 p1:position = -150.6865234375,1.56070673465729,-293.817443847656 p1:game_vertex_id = 447 p1:level_vertex_id = 87210 p1:links = p0(1),p2(1) p2:name = wp02 p2:flags = 0x3 p2:position = -155.097885131836,0.12029841542244,-300.179504394531 p2:game_vertex_id = 447 p2:level_vertex_id = 81791 p2:links = p0(1),p1(1) Изменено 23 Марта 2010 пользователем Arhara Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/20/#findComment-406023
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти