Artos 99 Опубликовано 6 Февраля 2012 Поделиться Опубликовано 6 Февраля 2012 Ответ на "хороший" вопрос разочарует ... "Штатными методами/логикой игры - никак не отследить всех оптом." Объяснение довольно банально и подходит для всех подобных вопросов, когда хочется и чтобы БТР во всех стрелял и двери передо всеми открывались и пр. Схемы обрабатывают заданные им условия на каждом апдейте объекта, которому прописалась схема и активизировалась соответствующая секция логики. Т.о. каждый объект, помимо собственного метода 'update' (своего класса), постоянно вызывает апдейт своей активной схемы. Что будет, если какому-то рестриктору прописать нечто типа "проверяй всех на вхождение в тебя", а не конкретно кого-то? На каждом апдейте схемы должен вызывться итератор (переборщик) и проверять по некоему списку всех подходящих объектов на предмет их вхождения в него. Доступных "штатных" списков достаточно мало. Это глобальный список 65535 всех игровых идентификаторов (ID) и тот же db.storage ... Достаточно легко догадаться какие ресурсы потребуют еже-апдейтные перепроверки каждого элемента из таблицы на "это сталкер? он в зоне?". Для одного такого рестриктора может и не заметно будет в игре ... Для нескольких ... десятков/сотен - падение FPS и лаги - обеспечены. Т.о. , если захотелось проверять всех - делаем это самописными скриптами, которые включаются по условию, работают некоторое время и выключаются, когда надобность в них отпала. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
KitkaT.Net 2 Опубликовано 6 Февраля 2012 Поделиться Опубликовано 6 Февраля 2012 Вот еще один неясный вопросец Поставил смарт-террайн general_lager на локации из костяпака. (А конкретно на предбаннике): [7188] ; cse_abstract properties section_name = smart_terrain name = predbannik_mil_vorota position = -525.90728759766,18.635328292847,227.23803710938 direction = -0.0412191227078438, 0.00485695945098996, 0.117325648665428 version = 118 script_version = 6 ; cse_alife_object properties game_vertex_id = 3880 distance = 2.09999990463257 level_vertex_id = 133668 object_flags = 0xffffffbe custom_data = <<END [smart_terrain] type = general_lager capacity = 13 communities = military END ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 2.8756000995636 ; cse_alife_space_restrictor properties restrictor_type = 0 ; se_smart_terrain properties Создал секцию респавна: [7187] ; cse_abstract properties section_name = respawn name = predbannik_soldier_respawn position = 119.52111816406,8.4225988388062,-17.136754989624 direction = 0, 0, 0 version = 118 script_version = 6 ; cse_alife_object properties game_vertex_id = 4019 distance = 4.19999980926514 level_vertex_id = 1135044 object_flags = 0xffffff3e custom_data = <<END [respawn] respawn_section = agr_soldier_veteran,5,agr_soldier_regular,10 max_spawn = 15 idle_spawn = often END ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 1 ; cse_alife_space_restrictor properties restrictor_type = 0 ; se_respawn properties Поставил time_factor в alife.ltx на 396, выждал два дня - реакции ноль. Как не было солдатиков так и нетю. Вопрос знатокам - почему ? Почему смарт мало того что не забирает солдат с других локаций, дак он еще и не видит респавнер под боком. Добавлено через 34 мин.: И да, в файлах smart_terrain_presets.ltx, general_lager.ltx возможность респавна прописал. Ничто не вечно под луной. Ссылка на комментарий
Artos 99 Опубликовано 6 Февраля 2012 Поделиться Опубликовано 6 Февраля 2012 (изменено) KitkaT.Net, а почитать ранее написанное в топике? ... Повторю относительно вопроса: Для каждого объекта, который спавнится респавнерами, считывается его кастомдата и проверяется секция "smart_terrains". Если в этой секции нет отвязки от гулагов "none = true", то для такого объекта (не предмета) производится проверка на получение им работы в гулагах. Если таковой работы объекту не найдется - от тут же удаляется из игры. Т.о. "НЕспавн" объектов респавнерами зависит от наличия свободных работ в гулагах для соотв.неписей. Собственно сам спавн то как раз происходит всегда - вот только и reliase за ним может следовать. Поставив информационную строку вывода в лог перед удалением таких объектов в se_respawn.script, можно определить и ошибки при недостатках работ и лишний "мусор", который спавнят респавнеры. Изменено 6 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
*Shoker* 322 Опубликовано 6 Февраля 2012 Поделиться Опубликовано 6 Февраля 2012 (изменено) Есть ли в игре штатная функция, которая отправляла бы НПС в оффлайн, но при этом, если он находился в зоне действия онлайн-элайфа - он возвращался обратно без посторонних действий скриптера (без таймеров, проверок на расстояние и прочее, только движковые методы). Тоесть это должен быть не принудительный флаг перевода в оффлайн\онлайн. Мне просто надо симулировать движковые (не ручные) вызовы switch_online\offline из se_stalker.script Если такой функции нету, то как правильно собрать её самому. У меня у НПС стоит принудительный флаг нахождения в онлайне, и когда он отключается, мне надо чтобы у этого НПС вызвался либо switch_offline метод (с ним проблем нету, если НПС был за радиусом действия онлайна, он и так перейдёт в оффлайн), либо switch_online (а вот с ним у меня проблема, ибо НПС уже в онлайне, а мне необходимо вызвать эту функцию) Зарание спасибо. ___ sim:set_switch_online (id, true) sim:set_switch_offline (id, true) Если я так сделаю, то тогда НПС будет сам переходить в онлайн\оффлайн в зависимости от расстояния от игрока как по дефолту? Вопрос наверно глупый, просто раньше не работал с этим. Я тогда буду его принудительно в оффлайн тащить, а дальше его движок вытаскивать обратно при необходимости будет, если я правильно значения этих функций понял. Изменено 6 Февраля 2012 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Artos 99 Опубликовано 6 Февраля 2012 Поделиться Опубликовано 6 Февраля 2012 *Shoker*, читаем (внизу): #3742 "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
*Shoker* 322 Опубликовано 6 Февраля 2012 Поделиться Опубликовано 6 Февраля 2012 (изменено) Спасибо, проглядел, выручил.. Ещё и add_call используется, хоть буду знать как с ним работать, совсем забыл про него. Вот только если объект находится вне зоны радиуса онлайна, но в данный момент принудительно онлайн, как тогда поведёт себя скрипт? Я так понял его кинет в оффлайн, потом в онлайн, а потом его игра обратно в оффлайн затащит? Изменено 6 Февраля 2012 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
KitkaT.Net 2 Опубликовано 7 Февраля 2012 Поделиться Опубликовано 7 Февраля 2012 Ок, пишу здесь. (Просто подумал, что там уже просто в скрипте где-то ошибка и поэтому туда запостил) function se_respawn:CreateObject(sProbability, sSpawnSection) if math.random(100) > tonumber(sProbability) then return end local iSum = 0 --[[ -- Вычитываем секцию для спавна, по указанной вероятности. --]] if not sSpawnSection then for k,v in pairs(self.tSectionsToRespawn) do iSum = iSum + v.probability end iSum = math.random(0, iSum) for k,v in pairs(self.tSectionsToRespawn) do iSum = iSum - v.probability if iSum <= 0 then sSpawnSection = v.section break end end end if sSpawnSection == nil then return false end if self.iParent then local oParent = alife():story_object(self.iParent) if oParent == nil then abort("SPAWNING [%s], cant find parent with SID [%s]", self:name(), self.iParent) return end if oParent.id and self.bItemSpawn then local oItem = alife():create(sSpawnSection, self.position, self.m_level_vertex_id, self.m_game_vertex_id, oParent.id) table.insert(self.tSpawnObject, oItem.id) return true end else local oCreature = alife():create(sSpawnSection, self.position, self.m_level_vertex_id, self.m_game_vertex_id) if self.sName==nil then if self.tSpawnProp[sSpawnSection].isCheck == true then oCreature:brain():update() local iSmartTerrainID = oCreature:smart_terrain_id() if iSmartTerrainID ~= 65535 then table.insert(self.tSpawnObject, oCreature.id) return true else alife():release(oCreature, true) printf("Заспавнили, но удалились: "..tSpawnObject)- добавил эту строчку. Почему вылетает? return false end end table.insert(self.tSpawnObject, oCreature.id) return true else if self.sLogic ~= "nil" then if IsMonster(oCreature) then local tData = net_packet_read.GetMonster(oCreature) tData.sCustomData = "[logic]\ncfg = scripts\\"..self.sLogic..".ltx" net_packet_write.SetMonster(tData, oCreature) elseif IsStalker(oCreature) then local tData = net_packet_read.GetStalker(oCreature) tData.sCustomData = "[logic]\ncfg = scripts\\"..self.sLogic..".ltx" net_packet_write.SetStalker(tData, oCreature) end end table.insert(self.tSpawnObject, oCreature.id) return true end end end Подскажите почему? Или скажите, как правильно определить какие сталкеры заспавнились и удалились. p.s. Artos, проверил, у спавнящихся сталкеров кастомдаты нет. Но когда пробовал установить кастомдату самого респавна [smart_terrains] respawn_check = false военные все равно спавниться не пожелали. Сам то смарт работает, если просто создавать в all.spawn сталкеров и прописывать им этот смарт, они туда идут и спокойно работают. (и почему кстати не забирает смарт с других локаций сталкеров ? Например с агропрома, там же тоже респавн есть? Следовательно проблема наверное все-таки в смарте. Я правильно думаю?) Ничто не вечно под луной. Ссылка на комментарий
Artos 99 Опубликовано 7 Февраля 2012 Поделиться Опубликовано 7 Февраля 2012 (изменено) KitkaT.Net, думаешь не правильно, т.к. полная какофония и с понятиями и методами .... 1. В скрипте ошибка в том, что пытаешься срастить конкатенацией строку с таблицей ( printf("Заспавнили, но удалились: "..tSpawnObject) ). Естественно луа вылетает с ошибкою. Если хочешь посмотреть в логе - то и выводи не таблицу, а имя иль еще чего, поставив ДО удаления вывод строки типа: printf( "Респавнер="..self.name()..":заспавнил,но_удалил="..oCreature:name() ) 2. Смарт или есть или его нет, это оболлочка для гулага. А вот работает ли гулаг, выдает ли работы, принимает ли на работу кого-то - это гадай сам, т.к. нам ничего о твоем гулаге не ведомо. 3. Респавнеру что-то писать в кастомдату относительно "smart_terrains" - глупо! Ему это глубоко фиолетово. Подобная запись важна для неписей и монстров. Изменено 7 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
дядяСаша 0 Опубликовано 8 Февраля 2012 Поделиться Опубликовано 8 Февраля 2012 Добрый день, народ. Вопрос: (игра ТЧ 1006) чем вызывается эта ошибка? При прохождении Припяти, заходить с АЭС(туда нормально) в лог пишется: ! AI_PathNodes: Can't find intersection segment - строк очень много. Из сейвов срабатывает только автосейв захода в Припять. Если прошёл без убийства ГГ и ушёл на радар, дальше опять всё нормально работает. Добавлено через 17 мин.: Насчёт респавнера - больной вопрос: У тебя помоему не прописано в ST: stay = medium (в самом гулаге скорость респавна) и там же помоему указывается сам респавнер который работает на гулаг respawn = имя респавнера чисто теоретически, сам пока не пробовал. Ссылка на комментарий
*Shoker* 322 Опубликовано 8 Февраля 2012 Поделиться Опубликовано 8 Февраля 2012 (изменено) В alife.ltx помима параметра switch_distance есть параметр switch_factor, как правильно, используя два этих параметра, узнать находится ли НПС в зоне переключения оффлайн\онлайн или нет. Или может быть есть готовая функция определения, нужно ли НПС переключится. И вот ещё, можно ли перевести НПС принудительно в оффлайн, но чтобы он сам вернулся в онлайн, если попадал под радиус действия switch_zone, скрипт что дал Artos мне не совсем подошёл, т.к он возвращает НПС обратно в онлайн. Проблема в том, что я работаю не с одним НПС, а со сквадом, и в ЧН, а там они в оригинале вообще в оффлайн до смены локации не уходят, если хоть раз были в онлайне. Я это частично пофиксил, но осталась проблема с флагом того, что сквад онлайн\оффлайн. Он ставится только из колбеков на switch_online\offline Мне сейчас надо либо научить их переходу в оффлайн, и самостоятельно в онлайн при необходимости, либо зарание делать проверку на расстояние, и вручную менять флаги. _____ Нашёл в se_stalker методы can_switch_offline\can_switch_online, странно что раньше не заметил, попробую их. _____ Кажется управился. Изменено 8 Февраля 2012 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
*Shoker* 322 Опубликовано 9 Февраля 2012 Поделиться Опубликовано 9 Февраля 2012 Оказалось can_switch_-ы не делают проверку на расстояние =\ Немного покапавшись подсчитал что переход происходит так: Offline: > SD + (SD * SF) Online: < SD - (SD * SF) Тоесть если SD = 10, а SF = 0.2, то в оффлайн персонаж перейдёт на расстоянии 12 метров от игрока, а в онлайн около 8 метров. Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Artos 99 Опубликовано 9 Февраля 2012 Поделиться Опубликовано 9 Февраля 2012 (изменено) *Shoker*, ты бы пояснил нормалным языком (без упоминаний методов и пр. кодов) что требуется ... может и будет тема к разговору/ответу, а не погадалкам. Выведенная тобою формула изначально известна. Наличие SF - дает гистерезис (исключает "дребезг") при нахождении объекта на границе (SD). Методы типа can_switch_xxx и не предназначены для проверок дистанций и т.п., иначе бы тормоза в игре от таких проверок для всех объектов были бы ой какие немалые. Это всего лишь возврат 'флага' о возможности переключения состояния, а уж проверки делаются в иных местах. *Shoker*: ... можно ли перевести НПС принудительно в оффлайн, но чтобы он сам вернулся в онлайн, если попадал под радиус действия switch_zone, скрипт что дал Artos мне не совсем подошёл, т.к он возвращает НПС обратно в онлайн. Да, конечно можно. Первая половина скрипта Artos'а это и делает - переводит объект в оффлайн, что можно и самому сделать, отдав две команды: alife():set_switch_online(id, false) alife():set_switch_offline(id, true) Вот только сам объект уже не выйдет в онлайн, пока ему кто-то не скомандует обратный набор команд: alife():set_switch_online(id, true) alife():set_switch_offline(id, false) Пиши свои обработчики для какой-то switch_zone и командуй из них своими неписями ... Изменено 9 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
*Shoker* 322 Опубликовано 9 Февраля 2012 Поделиться Опубликовано 9 Февраля 2012 (изменено) Так в том то и дело, что мне надо чтобы неписи сами в онлайн возвращались, потому что он у меня изначально находится под флагом "всегда онлайн", и в момент использования твоей функции он может быть как в зоне действия онлайна, так и в зоне действия оффлайна (switch_distance) Ежели я использую твою функцию, непись всегда в онлайн возвращается, а дальше из за особенностей ЧН-овской войны группировок, ему опять ставится флаг "только онлайн" И кстати, если судить логически, разве: alife():set_switch_online(id, true) alife():set_switch_offline(id, true) Не должен делать примерно то, о чём я говорю? Тоесть делать так, чтобы НПС переходил в онлайн\оффлайн в зависимости от расстояния между ним и игроком. Пока проблему решил подсчётом расстояния от игрока до НПС по формуле выше. Но в идеале конечно хочется 100%-ый вариант. Изменено 9 Февраля 2012 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Artos 99 Опубликовано 9 Февраля 2012 Поделиться Опубликовано 9 Февраля 2012 *Shoker*, советую тебе разобраться с ... типами методов/свойств, дабы не методом 'тыка' получать желаемое, а используя заведомо нужное. У объектов есть флаги: alife_object_flag.UseSwitches alife_object_flag.SwitchOnline alife_object_flag.SwitchOffline - которые и определяют что будет делать движек с этим объектом в пределах и за переделами switch_distance. Собственно методы объекта can_switch_offline и can_switch_online и читают последние два флага (с некоторыми оговорками). Отдавая команду: set_switch_online или set_switch_offline - ты 'вручную' управляешь этими флагами. Только уход в оффлайн достаточно долог (~20 тактов апдейта актора), т.к. не каждый объект обрабатывается каждым тактом. Очевидно, что одновременный сброс/установка флагов 'SwitchOnline' и 'SwitchOffline' достаточно бессмыслены и могут приводить скорее к коллизиям чем каким-то осмысленным ситуациям (не хочется сейчас просчитывать). Если тебе хочется, чтобы твой НПС сам выходил в онлайн, то забудь об этом. Само-собою ничего в игре не происходит и тем более сами объекты не управляют собою. Или ими руководит схема или движек. О схеме уже писал выше - пиши схему-обработчик твоей switch_zone и будет тебе "сам выходит в онлайн". Если же оставляешь движку руководить, то мне до сих пор неясны твои заморочки. Для чего отправлять непися в оффлайн, если он в зоне switch_distance? Чего сетовать, что скрипт переключения возвращает непися в онлайн и в тоже время требовать чтобы он сам оттуда выходил? Что-то или у меня с логикой или у тебя ... До сих пор не понял смысл и цель твоих манипуляций. (наверное не стОит далее со мною заморачиваться, а то до "иконок и скриншетов" скоро дойдет ... Подожди, может кто более понятливый откликнится.) "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Tris 9 Опубликовано 9 Февраля 2012 Поделиться Опубликовано 9 Февраля 2012 Такой вопрос: Хотел зделать чтобы антирадар без жгута не использовался но когда есть жгут антирадар спавнится в инвентарь но не используется, прошу мне помочь, указать на мою ошибку. function use_antirad() if not db.actor:object("zgyt") then spawn_to_inventar("antirad") news_manager.send_tip(db.actor, game.translate_string("У_вас_нет_жгута.")) elseif db.actor:object("zgyt") then spawn_to_inventar("antirad_norm") del_zgyt() db.actor:eat(db.actor:object("antirad_norm")) end end -- Функция спавна в инвентарь. function spawn_to_inventar(spawn_item, npc) if npc==nil then npc=db.actor end return alife():create(spawn_item, npc:position(), npc:level_vertex_id(), npc:game_vertex_id(), npc:id()) end -- Функция удаления. function del_zgyt() local oItem = db.actor:object("zgyt") if oItem then db.actor:drop_item(oItem) alife():release(alife():object(oItem:id()), true) end end • Dead Forgetting Zone • Мои работы. Обновление: 24.08.2012 Ссылка на комментарий
dPlayer 452 Опубликовано 9 Февраля 2012 Поделиться Опубликовано 9 Февраля 2012 Спрошу из любопытства: возможно ли полноценно реализовать работу с картой в скриптовом ПДА(зум, метки и т.д.)? Ссылка на комментарий
*Shoker* 322 Опубликовано 9 Февраля 2012 Поделиться Опубликовано 9 Февраля 2012 (изменено) Artos Если в кратце: Работают я с ЧН, там система сквадов устроена так, что если хоть 1 НПС из сквада в онлайне, то и весь сквад онлайн. Более того - скваду ставится флаг "сквад всегда в онлайне", ставится он только из se_stalker в колбеках switch_online\offline. И я не знаю, толи это баг, толи задумка GSC, но в оригинале у них сквады, попавшие в онлайн, не уходят в оффлайн (тока после смены локации) В частности им как раз мешает флажок "сквад всегда в онлайне" т.к он меняется только из se_stalker в колбеках онлайн\оффлайн. Но цимес в том, что из за этого же флага "сквад всегда в онлайне" колбеки на переход в онлайн\оффлайн больше не вызываются, т.к сквад навсегда остаётся в онлайне (до смены локации) Я исправил это тем, что в момент, когда сквад ищет себе новое "задание" снимаю флажок "принудительного перевода НПС в онлайн", а также, сейчас, проверяю расстояние от игрока до всех НПС из сквада, и если они все в зоне переключения в оффлайн, сам ставлю скваду флажок "сквад всегда в онлайне" = false (иначе остаётся true) Если я этот флажок ( "сквад всегда в онлайне") оставляю равным true, то в момент выдачи работы сквада, всем его НПС опять ставится флаг "принудительного перевода НПС в онлайн", и непись попадёт в онлайн. Но если я не делаю проверку на расстояние от игрока и НПС, а всегда ставлю флаг "сквад всегда в онлайне" = false (а если этого не делать, то в момент выдачи работы, НПС принудительно кинет в онлайн, даже если он за радиусом онлайн элайфа), то получается ситуация, что те сквады, что остались в онлайне, имеют в свойствах сквада флаг того, что они в оффлайне (со всеми вытекающими последствиями), а проблема в том, что как я сказал в начале, флаг этот в чистой игре ставится только в se_stalker в колбеках..., и если с колбеком с уходом в оффлайн всё нормально (сквад был в онлайне), то с колбеком на переход в онлайн проблема, т.к непись уже в онлайне... соответственно колбек не вызывается, и флаг "сквад всегда в онлайне" остаётся равным false, хотя это не соответствует действительности. Именно этого мне нужно избежать. Тоесть грубо говоря если флаг "сквад всегда в онлайне" не менять вручную, сквад и его НПС всегда будут в онлайне (их кинет обратно), но ежели изменить его вручную на false, то у НПС, которые находятся близко к игроку (в Зоне действия онлайн-элайфа), т.к колбек на переход в онлайн не вызовется, этот флаг так и останется false. Тоесть по факту сквад в онлайне, но на уровне скриптов остаётся в оффлайне. Кстати, вроде тут относительно недавно обсуждалось. Мне необходимо в момент смерти НПС добавить к его оружию апгрейд через нет-пакеты, но переводить оружие online-offline-online нельзя, т.к получается что в момент смерти НПС, оружие в его руках будет пропадать и исчезать, существуют ли ещё какие то варианты, чтобы изменения нет-пакета сработали? Изменено 9 Февраля 2012 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
ziStam 1 Опубликовано 9 Февраля 2012 Поделиться Опубликовано 9 Февраля 2012 Вопрос к знатокам моддинга. Возможно ли как либо отследить время проигрываемой анимации у монстра? Например отследить анимацию у снорка stand_run_2, а затем продлить проигрыш этой анимации принудительно, чтобы анимация отыгрывалась полностью, т.к в часто бывает что кусок анимации не отыгрывается. Буду очень благодарен Legend of Stalker Ссылка на комментарий
Artos 99 Опубликовано 9 Февраля 2012 Поделиться Опубликовано 9 Февраля 2012 (с конца) Нет-пакетами меняются свойства серверного объекта. Если серверный объект НЕ передаст измененные свойства клиентскому объекту - то толку от таких операций с нет-пакетами никакого. Т.о. после изменения нет-пакетами свойств серверного объекта необходимо эти свойства передать клиентскому, т.е. вызвать принудительно методы STATE|UPDATE_Read, при котором и произойдет передача измененных свойст и в игре станут видны изменения. Учитывая, что для многих объектов, например типа 'предмет', нет-пакеты читаются/пишутся только при их спавне в игру и по завершению игры, то без искусственного вызова тут не обойтись. Единственным способом вызвать искуственннно методы STATE|UPDATE_Read является пока именно перевод объекта в оффлан и обратно. При чем, собственно измененные свойства считываются клиентским объектом именно при переходе в онлайн! Думаю с оружием убиенного НПС посложнее и/или попроще. Во-первых в этот момент не советовал бы вообще трогать ни НПС ни его активное оружие. Помимо "обычных нюансов", тут еще немало подводных камней, с которыми мне, например, при написании ормального скрипта разрывных патронов, пришлось преодолеть. Оружие может ведь еще продолжать стрелять - а значит имеет активные партиклы. Если так уж хочется - попробуй проверить, может быть в момент смерти для активного оружия манипуляции с нет-пакетами вызываются самим движком и стОит только под них подстроиться ... Если нет - то иных вариантов кроме как ->off->on-line мне неведомо. По остальному ... пока промолчу, переварить твои буковки нужно на свежую голову. Но однозначно, НЕ подстраиваться нужно под имеющееся, а имеющееся подстраивать под себя! (ну а что и как - пока не готов посоветовать, т.к. ЧН пока в эту сторону так глубоко не копал). "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
*Shoker* 322 Опубликовано 9 Февраля 2012 Поделиться Опубликовано 9 Февраля 2012 (изменено) Да в принципе вопрос со сквадами я решил, просто не уверен насчёт его стопроцентной гарантии ну да ладно. Сейчас меня это уже не так волнует. По игровым отладочным меткам с карты всё сходится. ----------------- Кстати я не совсем тогда понял, зачем тебе записывать нет-пакеты при использовании разрывных патронов, там же вроде тока читать их надо, а не писать. Правда я эту часть твоего мода почти не смотрел, и это была древняя версия. ----------------- А что если менять нет-пакет оружия в момент его подьёма игроком. Как быть если объект находится в инвенторе игрока, его же не перенести в оффлайн\онлайн пока он внутри инвенторя... или можно? Ещё как вариант я попробую выкидывание ствола, с заменой пакета, и возвращение его в инвентарь, но вот интересно, можно ли обойтись без выкидывания. Изменено 9 Февраля 2012 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти