Boofer 0 Опубликовано 4 Января 2012 Поделиться Опубликовано 4 Января 2012 (изменено) 1. Перемещением в слот у меня занимается отдельная функция трансфера. Всё работает. Т.о. заспавнив объект, ты никогда не получишь этот клиентский объект в той же самой функции и в том же самом вызове. Artos, жаль... И это никак нельзя исправить? Изменено 4 Января 2012 пользователем Boofer Ссылка на комментарий
Artos 99 Опубликовано 4 Января 2012 Поделиться Опубликовано 4 Января 2012 (изменено) Boofer, НИКАК. Ты спавнишь на сервер и НЕВОЗМОЖНО в тот же миг заставить движек создав объект, инициировать его и единовременно создать его клиентский объект у тебя в игре, да еще чтобы другой гейм-объект в игре воспринял этот объект как "у себя в слоте". Если уж очень приспичило - то спавни нужный объект заранее, положив куда нибудь в тайничек, и в нужное время трансфери его ... Изменено 4 Января 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
AK74 4 Опубликовано 4 Января 2012 Поделиться Опубликовано 4 Января 2012 Им прописан рестриктор, который обязывает их находиться именно в нем. Мне приходила в голову подобная мысль, но напрягает то, что в подобных местах они не разбегаются, а мне надо чтобы они туда не заходили. Как вариант, по аналогии: прописать твоим монстрам рестрикторы, в которые они не должны заходить. Вот как сделать это я и не знаю. Ну, не нашел "отпугивающей" команды. ЗЫ. А ведь в Скадовск мобы тоже не заходят. Может это мой случай? Ссылка на комментарий
Boofer 0 Опубликовано 4 Января 2012 Поделиться Опубликовано 4 Января 2012 (изменено) Artos, да нет не приспичило) Можете ещё подсказать как сделать таймер по реальному времени на использование объекта, чтобы по истечению некоторого времени после использования объект удалялся? P.S. На ТЧ. Таймеры уже заезженная тема. Посмотри как это сделано в АМК моде, там есть два таймера: по игровому и реальному времени. ColR_iT Добавлено через 21 мин.: В АМК смотрел, по такому же принципу сделать не получилось, увы, поэтому и спрашиваю. P.S. Вылетает игра и ругается на "pstor". Изменено 4 Января 2012 пользователем Boofer Ссылка на комментарий
Artos 99 Опубликовано 4 Января 2012 Поделиться Опубликовано 4 Января 2012 (изменено) AK74, не ленись ;-) , почитай на "тему" и вместо куцых вопросов может возникнуть немало "идей" ... Подкину немного "инфы для размышления": 1. В конфигах монстров/сталкеров имеется параметр SpaceRestrictionSection, куда прописаны классы/секции рестрикторов, которые будут "восприниматься" объектом/неписью. 2. Все рестрикторы делятся на несколько типов (см. топик "Справочник по классам и функциям"), нас интересуют с числами 2 и 3, т.е. те, в которых разрешено нахождение (in) и наоборот (out) - это условно. 3. Для всех монстров и сталкеров имеются в их нет-пакетах dynamic_out_restrictions и dynamic_in_restrictions ... Т.о. задав неписям типы рестрикторов для обязательного НЕвхождеия в них и установив "своим" рестрикторам соответствующий тип - можно добиться чтобы непись не пыталась входить в рестриктор. Есть еще более правильный вариант (но непростой) с заданием параметра terrain в конфиге монстра/сталкера, кторым как раз по всей Зоне иль каждой локации и по различным типам территорий можно разрешать ходить. Для монстров стоит обычно: 255,255,255,255 , т.е. бегать где угодно ... Вот и поэкспериментируй ... Добавлено через 8 мин.: Boofer, топиков/сообщений/статей не тему создания таймеров в сети великое множество. В самой игре и тем более в модах их (таймеров) также великое множество ... Что мешает посмотреть и взять или написать по аналогии? Если мод более-менее серьезный, то вероятно нет смысла плодить кучку локальных таймеров и озаботиться сделать нечто типа AMK-таймеров (о которых и упомянул ColR_iT), т.е. общих для различных скриптов таймеров. Не очень понял все же твоего вопроса про "таймер использования" - если у тебя объект использован (а, как правило, использование однократно) - то он тут же будет удален из игры движком. О каком " чтобы по истечению некоторого времени после использования объект удалялся?" - может тогда идти речь? И если что-то не получается, то и приводи информацию что же делал, чтобы говорить о том как сделать чтобы получалось. Иначе выходит - дайте мне готовый код, и даже не утруждая себя условиями для этого кода. Изменено 4 Января 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Boofer 0 Опубликовано 4 Января 2012 Поделиться Опубликовано 4 Января 2012 (изменено) Artos, нет, у меня объект с анимацией, что-то типа активация артефакта. Только она (активация артефакта) у меня идёт бесконечно, анимация каждый раз повтаряется и повторяется. А можно ссылку хотя бы на одну статью по созданию таймера? Извини ... я не справочное бюро и потрудить сам поискать. Ссылки на вики-сайты в шапке топика. --/Artos Изменено 4 Января 2012 пользователем Artos Ссылка на комментарий
S.T.A.L.K.E.R-DOLG 1 Опубликовано 4 Января 2012 Поделиться Опубликовано 4 Января 2012 (изменено) ColR_iT Даже и не думал сбивать с толку! Ведь он попросил ЛОГИКУ, я ее и описал, это kamp. НПС созданный скриптом или через all.spawn, без разницы будет при любой логике кроме ремарка иметь точку(точки) прописанные через all.spawn, way...название локации, как вы и показали в своем "код". Саму же логику мы как обычно пропишем в gamedata\config\scripts, -- файл логики название любое.ltx. Я сомневаюсь, что S.T.A.L.K.E.R-DOLG будет задавать логику через функцию\скрипт... хотя кто знает... я делал НПС по статье SCRIPTа и логика была прописана в файле ltx Добавлено через 5 мин.: [logic] active = remark1 danger = danger_ignore [danger_ignore] ignore_distance = 5 [remark1] no_move = true что эта за логика ? Изменено 4 Января 2012 пользователем S.T.A.L.K.E.R-DOLG Пункт 3. Ссылка на комментарий
ColR_iT 171 Опубликовано 4 Января 2012 Поделиться Опубликовано 4 Января 2012 S.T.A.L.K.E.R-DOLG, при такой логике НПС будет действовать следующим образом: изначально его активная схема будет remark1, в которой он будет просто стоять и всё, причем будет игнорировать опасность далее чем 5 метров. Даже если НПС был заспавнен через скрипт, то тебе как минимум нужно знать, что в файле all.spawn есть уже готовая точка, причем с нужными тебе координатами, если же их нет - тебе нужно править спавн файл. Ссылка на комментарий
Boofer 0 Опубликовано 4 Января 2012 Поделиться Опубликовано 4 Января 2012 (изменено) Вот скрипт старта таймера реального времени. Не мой. function start_timer(name,delay,action) if not delay then return false end if not action then action = "" end local time = game.time() --time in seconds since 1970 local a=1 while db.storage[db.actor:id()].pstor["rt"..a] do a=a+1 if a>100 then return false end end save_variable("rt"..a, name) save_variable("rt"..a.."d", time+delay*10000) save_variable("rt"..a.."p", action) return true end После вызова этой функции игра вылетает с логом: Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ...ing\s.t.a.l.k.e.r\gamedata\scripts\new_script.script:32: attempt to index field 'pstor' (a nil value) Строчку типа while db.storage[db.actor:id()].pstor["rt"..a] do я никогда раньше не видел и даже не представляю что в ней может быть не так. Изменено 4 Января 2012 пользователем Boofer Ссылка на комментарий
Wik 0 Опубликовано 4 Января 2012 Поделиться Опубликовано 4 Января 2012 (изменено) Подскажите, как сделать так чтобы на ГГ при обыске тайника нападали враги. (тесть чтобы спавн врагов происходил во время обыска тайника) Заранее благодарен. Изменено 4 Января 2012 пользователем Wik Ссылка на комментарий
Artos 99 Опубликовано 4 Января 2012 Поделиться Опубликовано 4 Января 2012 (изменено) Boofer, смею сделать предположение о том, что 'свои' скрипты ты не создаешь, а пользуешься копипастами из игры/модов ... Советую почитать мануал по Lua и собственно вообще: что такое переменная, аргументы, переменнные и пр. Как можно брать вырванную из контекста скрипта функцию, не удосужившись понять что за переменные ею используются и какие аргументы ей задаются, ожидать, что она вообще-что-то сделает/даст? Приведенная функция start_timer - одна из целой связки функций, которые обеспечивают ее работоспособность и глупо от нее ожидать работы без всей необходимой обвязки. Строка while db.storage[db.actor:id()].pstor["rt"..a] do как раз совершенно понятна и корректна, нужно всего лишь уметь читать, а не гадать ... Задан цикл while, в условии которого проверяется наличие у гейм-объекта актора (db.actor) в его pstor'е поля с именем "rt"..a, где а = 1...100. Если тебе непонятна эта строка, то ... или стОит под'учиь Lua, или не заморачиваться над написаниями своих скриптов/функций, а брать/просить кого-то писать тебе желаемое. Тем более далее также и save_variable встречается тебе неведомое, да еще и с неба свалившиеся name,delay,action ... P.S. И уж если у тебя ругается лог на отсутствие поля pstor в сторадже актора - то это говорит или о вызове функции ДО создания гейм-объекта актора (?) т.е. на самом старте игры, или о неправильном вообще функционировании кодов в игре. Изменено 4 Января 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
losiara 13 Опубликовано 4 Января 2012 Поделиться Опубликовано 4 Января 2012 (изменено) S.T.A.L.K.E.R-DOLG Не морочь голову, скачай программу ACDC menu2.2 для ТЧ и работай без батников и всего остального, проще будет, там менюшка есть ничего сложного... Предвижу появление у тебя еще кучи вопросов, поэтому заранее скажу, схема ремарк не используется полноценно в игре во время боевых сценок например или нападения мутантов, и т. д. по сути она является переходным этапом между др. схемами например в квестах!!! Ну торговца можно на ее основе создать, не более того. Сама схема нужная и необходимая, но не основная!!! Чаще других используется walker и надо сказать оправданно. walker ... remark -- подошел ГГ поговорил послушал чего нибудь... ... camper ... и т. д. Не стоит рассматривать туторы как руководство к действию, раз уж ты захотел что то замутить, то почитай внимательно о том что ты хочешь сделать, например о тех же файлах логики!!! Добавлено через 18 мин.: Wik А через рестриктор не подойдет??? [logic] active = sr_idle [sr_idle] on_actor_inside = {+new_restriktor} sr_idle@gigi %=play_snd(characters_voice\путь к звуковому файлу)% [sr_idle@gigi] on_timer = 5000 | nil %=название_файла% В данном случае, при входе актора в рестриктор, и наличии инфопоршня "new_restriktor" что в принципе необязательно, включается проигрыш музыкального фрагмента, а через 5 сек. происходит спавн кого тебе надо. Единственное замечание, функция спавна должна находиться в файле xr.effects.scripts. После всего этого рестриктор отключается, т. е. срабатывает одноразово!!! Можно и другое что нибудь придумать, например переключать секции по другим событиям, по необходимости... Если совсем просто, то выглядеть будет так: [logic] active = sr_idle [sr_idle] on_actor_inside = nil %=название функции% В этом случае, при входе в рестриктор сработает функция %=...%, а затем рестриктор отключится. Изменено 4 Января 2012 пользователем ColR_iT Жизнь следует измерять поступками, а не временем... Ссылка на комментарий
Artos 99 Опубликовано 4 Января 2012 Поделиться Опубликовано 4 Января 2012 (изменено) losiara, хотелось бы попросить несколько уменьшить твою активность по выдаче ответов по "всему и вся" ... 1. Если вопрос явно не по теме, то и не следует поддерживать оффтопик, даже из благих намерений. 2. Советуя что-то, задумайся, а не будет ли твой совет медвежьей услугою? Советовать пользоваться "ACDC menu2.2", я бы не стал ... Кроме "удобства не использовать батники" пользователь получает необходимость использования устаревших версий ACDC. Ведь не зря же мною был назван топик о универсальному ACDC, где и далее можно решать вопросы по рас(за)паковке спавна на 'сегодняшнем' уровне, а не позавчерашнем. 3. Отвечать не на "свой" вопрос, а на заданный! Wik, справшивает про ситуацию "при/во время обыска тайника", а ты ему про рестриктор грузишь ... Можно и пяткой чесать за ухом, но не советовать это делать другим. ;-) 4. Высказывая некую категоричность, не следует слишком обобщать, не оговаривая условия/исключения. "функция спавна должна находиться в файле xr.effects.scripts" - справедливо только для оригинальной игры и ей аналогичных модов. И тут в топике совсем недавно говорилось о расширителе, и во многих модах давно такая обязательность исключена. Да и собственно не обязательно саму "частную/тяжелую" функцию совать в штатные скрипты - достаточно сделать редирект. ТщательнЕе, плз, в ответах. Изменено 4 Января 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Wik 0 Опубликовано 4 Января 2012 Поделиться Опубликовано 4 Января 2012 К сожаления я ничего не понял, а если прописать активацию НПС в логику тайника, как например прописывается активация НПС в диалог. Ссылка на комментарий
Artos 99 Опубликовано 4 Января 2012 Поделиться Опубликовано 4 Января 2012 (изменено) Wik, фраза становится понятна только тогда, когда понятны слова из котрых складывается фраза. А вот, употребляя слова, смысл которых тебе непонятен - твой вопрос вызывает улыбку. :-) Не тайник или его логика должны "активировать" какого-то НПС. Актор, обыскивая тайник (юзая/используя его), может активировать логику использования тайника (схема ph_idle), которая и может выдавать коллбэк, по которому можно активировать в нужное время твою функцию спавна. См. в схеме "ph_idle" коллбэк "use_callback" ... А уж про активацию НПС в диалоге - это уже из-какой-то иной оперы, а не из игры. Уже появление надписи с предложением вступить в диалог по <F> - является следствием активности НПС к диалогу, а уж само нажатие (F) - тем более является активизацией всех доступных диалогов для уже активного собеседника ... Изменено 4 Января 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
S.T.A.L.K.E.R-DOLG 1 Опубликовано 5 Января 2012 Поделиться Опубликовано 5 Января 2012 (изменено) Строгое предупреждение от модератора ColR_iT Надоело! Трое суток чтения. Может всё таки до тебя дойдёт, что ты не в ту тему вопросы задаешь! Тебе ясно написали, что тебе нужно сюда: "Universal ACDC и другие perl-скрипты" и вопросы нужно задавать там, а то и того лучше в теме нужного тебе мода. Изменено 5 Января 2012 пользователем ColR_iT Пункт 3. Ссылка на комментарий
NaslednikTutti 1 Опубликовано 5 Января 2012 Поделиться Опубликовано 5 Января 2012 (изменено) Создал отряд военных, заспавнил их, прописал им логику: [logic] active = remark1 danger = danger_ignore [danger_ignore] ignore_distance = 5 [remark1] no_move = true По идеи он должен стоять на месте, но в игре он всё равно гуляет свободно по зоне. Как это исправить, помоги пожалуйста. Покажи секцию спавна полностью (под спойлером). ColR_iT Изменено 5 Января 2012 пользователем ColR_iT Не соответствует правилам. Ссылка на комментарий
NaslednikTutti 1 Опубликовано 5 Января 2012 Поделиться Опубликовано 5 Января 2012 (изменено) [military_camp_npc_1]:stalker $spawn = "respawn\military_camp_npc_1" character_profile = military_camp_npc_1 spec_rank = master community = army custom_data = scripts\escape\esc_military_camp_npc_logic_1.ltx С этим разобрался, спасибо losiara за помощь. Такая беда еще, спавн осуществляю через скрипт function start_add_spawn()--\\ --\\ -- spawn_military_camp_npc_1() spawn_military_camp_npc_2() spawn_military_camp_npc_3() spawn_military_camp_npc_4() end function spawn_military_camp_npc_1() local x= -158.419006 local y= -30.450201 local z= -348.824280 local level_vertex= 92764 local game_vertex_id= 1026 alife():create("military_camp_npc_1",vector():set(x,y,z),level_vertex,game_vertex_id) end function spawn_military_camp_npc_2() local x= -151.983821 local y= -30.513784 local z= -348.483551 local level_vertex= 100292 local game_vertex_id= 1026 alife():create("military_camp_npc_1",vector():set(x,y,z),level_vertex,game_vertex_id) end function spawn_military_camp_npc_3() local x= -168.470001 local y= -25.435743 local z= -354.477600 local level_vertex= 80827 local game_vertex_id= 1021 alife():create("military_camp_npc_1",vector():set(x,y,z),level_vertex,game_vertex_id) end function spawn_military_camp_npc_4() local x= -156.043976 local y= -30.033550 local z= -360.914581 local level_vertex= 95263 local game_vertex_id= 1026 alife():create("military_camp_npc_1",vector():set(x,y,z),level_vertex,game_vertex_id) end function save_variable(variable_name, value) xr_logic.pstor_store(db.actor, variable_name, value) end function load_variable(variable_name, value_if_not_found) return xr_logic.pstor_retrieve(db.actor, variable_name, value_if_not_found) end Проблема вот в чем, три нпс на охране лагеря, четвертый снайпер на башне. Снайпер (spawn_military_camp_npc_3) да и сами нпс спавнятся, так сказать они меняются координатами что ли, вообщем снайпер появляется то на башне (там где он должен быть), то на месте нпс_1, то на месте нпс_2 или нпс_4. Вот так кто где, постоянно меняются местами при запуске игры. Так вот, это проблема в скрипте? Работаю на ЗП 1.6.02. Добавлено через 17 мин.: if spawn_escape.load_variable("spawn_military_camp_npc",false)==false then spawn_escape.start_add_spawn() spawn_escape.save_variable("spawn_military_camp_npc",true) end Также спавняться, то два снайпера и два рядовых, то так то сяк вообще непонятно Изменено 5 Января 2012 пользователем NaslednikTutti Не соответствует правилам. Ссылка на комментарий
losiara 13 Опубликовано 5 Января 2012 Поделиться Опубликовано 5 Января 2012 (изменено) Всем добрый вечер! Возник вопрос относительно логики гулагов Также в описании работы может быть указаны дополнительные условия, при которых сталкер может занять данную работу. Например: predicate = function(obj) return obj:profile_name() == "soldier_commander” end то есть данную работу сможет выполнять лишь персонаж с профилем soldier_commander. Куда конкретно надо вставить данную функцию. Файл gulag_название_локации.scripts -... А в самом файле в какое место??? Заранее благодарю!!! Изменено 5 Января 2012 пользователем losiara Жизнь следует измерять поступками, а не временем... Ссылка на комментарий
ColR_iT 171 Опубликовано 5 Января 2012 Поделиться Опубликовано 5 Января 2012 losiara. Вот тебе на примере логики Волка из гулага esc_lager: -- Волк, собственной персоной. t = { section = "logic@esc_lager_volk", idle = 0, prior = 16, state = {0,1}, in_rest = "", out_rest = "esc_lager_guard_kill_zone", predicate = function(obj_info) return obj_info.profile_name == "esc_wolf" end } здесь видно, что в качестве предусловия на данную работу стоит проверка, что имя профиля esc_wolf. Обрати внимание, что предусловие происходит безымянной функцией, хотя правильно это называется функтор. obj_info - это объект класса game_object, таким образом можно сделать проверки различного рода, например кого-нибудь у кого денег будет больше какой-либо суммы, либо НПС с определенным рангом: -- проверка на деньги function(obj_info) return obj_info.money > 5000 end -- проверка на ранг function(obj_info) return obj_info.character_rank > 600 -- если не ошибаюсь, то это ветеран, мастер > 900 end В принципе всё зависит от фантазии. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти