dimka.qwer 0 Опубликовано 20 Марта 2010 Поделиться Опубликовано 20 Марта 2010 (изменено) Помогите разобраться с логикой нпс. Какую схему логики лучше всего прописать охраннику? walker и camper конечно подходят, но дабы такие охранники стояли на месте, в path_walk для каждого из них придется создавать точки с их координатами, что нехило добавляет лишней работы и вынуждает писать для каждого отдельный скрипт с логикой. Также параллельно пытаюсь разобраться с такими страшными вещами как Смарттерейны и гулаги. Изменено 20 Марта 2010 пользователем dimka.qwer Ссылка на комментарий
Влад 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 пользователем Влад Мои работы Не бойтесь совершенства. Вам его не достичь. C. Дали Ссылка на комментарий
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: Cold Zone *** Youtube *** Стволы *** SC2TV Ссылка на комментарий
Влад 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 пользователем Влад Мои работы Не бойтесь совершенства. Вам его не достичь. C. Дали Ссылка на комментарий
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) убрали совсем. В зависимости от задачи можно как-либо обойтись без этого Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Влад 9 Опубликовано 20 Марта 2010 Поделиться Опубликовано 20 Марта 2010 malandrinus Спасибо.А про lua_help.script совсем забыл . Мои работы Не бойтесь совершенства. Вам его не достичь. C. Дали Ссылка на комментарий
dimka.qwer 0 Опубликовано 20 Марта 2010 Поделиться Опубликовано 20 Марта 2010 Несколько вопросов к скриптерам: можно ли в скрипте прописать две и более функции alife():create ? может кто-нибудь объяснить, как автоматически запускать скрипт при старте игры через bind_stalker.script Ссылка на комментарий
Влад 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 пользователем Влад Мои работы Не бойтесь совершенства. Вам его не достичь. C. Дали Ссылка на комментарий
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 Ссылка на комментарий
dimka.qwer 0 Опубликовано 21 Марта 2010 Поделиться Опубликовано 21 Марта 2010 Как? Тут важны именно примеры :ny_happy: Ссылка на комментарий
Malandrinus 615 Опубликовано 21 Марта 2010 Поделиться Опубликовано 21 Марта 2010 Что нужно прописать в bind_stalker, чтобы вызвать один раз эту функцию при запуске игры ? Почему непременно в bind_stalker? Если так уж надо именно там, то в actor_binder:net_spawn или actor_binder:reinit Также можно в _g.start_game_callback, но надо учесть, что это вообще первый запускаемый скрипт и там ещё ничего не инициализировано. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
dimka.qwer 0 Опубликовано 21 Марта 2010 Поделиться Опубликовано 21 Марта 2010 А как сделать проверку того, чтобы скрипт загружался один раз при запуске? Ибо при простом прописывании функции, при каждой новой загрузке спаунится клон создаваемого непися Ссылка на комментарий
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) перед закрытием функциию Что-то кончается, что-то начинается... Ссылка на комментарий
Malandrinus 615 Опубликовано 21 Марта 2010 Поделиться Опубликовано 21 Марта 2010 Vano_Santuri, а что мешает сделать с инфопрошеном, но там где я написал в предыдущем посте? И это не будет грузить апдейт Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
nafigator 10 Опубликовано 21 Марта 2010 Поделиться Опубликовано 21 Марта 2010 Я не скриптер, но отвечу. Можно попробовать поставить колбэк на спавн того же болта при старте новой игры... как-то пользовал такой момент, не помню уже для чего, но что точно - болт спавнится не только при старте новой игры, но и при загрузке старой Ссылка на комментарий
dimka.qwer 0 Опубликовано 21 Марта 2010 Поделиться Опубликовано 21 Марта 2010 Я уже через bind_stalker сделал... А диалоги я сразу отбросил как вариант, потому что нехилый лаг случается во время диалогового спавна. Ссылка на комментарий
RayTwitty 509 Опубликовано 21 Марта 2010 Поделиться Опубликовано 21 Марта 2010 (изменено) Проблема-вопрос. Первый работаю с all.spawn. Для начала хочу изменить стартовый набор ГГ. Скачал xrSpawner v0.13.1 Beta. Открыл в нем all.spawn. На шел вот это: Добавил то что выделена красным. Потом жму "Принять изменения". Потом Файл->Сохранить. Начинаю новую игру, но нового предмета нет. После этого открываю опять алл.спавн и вижу что он остался таки каким был (нету моего добавленного предмета). Может я не так сохранил\добавил? З.Ы. Файл алл.спавн из мода "Зона Поражения 1.1". Изменено 21 Марта 2010 пользователем Shadows Ссылка на комментарий
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 Cold Zone *** Youtube *** Стволы *** SC2TV Ссылка на комментарий
Malandrinus 615 Опубликовано 22 Марта 2010 Поделиться Опубликовано 22 Марта 2010 Labus, парой постов ранее здесь как раз об этом шла речь. Правда будет срабатывать и при переходе на другой уровень, поскольку это по сути загрузка заново. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
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 Еще 10 лет таких цен, зарплат и пенсий, и вместо переписи населения будет перекличка Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти