Artos 99 Опубликовано 10 Октября 2011 Поделиться Опубликовано 10 Октября 2011 (изменено) FLUDMAN Сам рекомендую читать статьи на вики-сайтах, но и ... сам же порой чертыхаюсь, читая их ... Как говориться читай, но и пережевывай, а не заглатывай бездумно! 1. Поправки по некоторым определениям: respawn_section = id респавн-секций из файла spawn_section.ltx. Цифры после запятой, означают отношение одной секции к другой. Если планируется одинаковое колличество респавна из каждой секции, то цифры ставить не требуется. max_count = колличество респавн-запросов за период времени, пока ГГ находится на локации. При переходе на другую локацию, счётчик max_count сбрасывается. (ставить не обязательно) min_count = минимальное колличество нпс, для экстренного респавна. (ставить не обязательно) max_spawn = колличество нпс за один цикл респавна. idle_spawn = тип спавна. Известно три типа medium, often, seldom. Обычно, используется тип medium. respawn_section = id респавн-секций (например из файла spawn_section.ltx). Цифры после запятой, означают вероятность спавна объекта данной секции в каждом цикле респавна. Если планируется 100% вероятность спавна из секции, то цифры ставить не требуется. max_count = максимальное колличество заспавненных объектов (по всем секциям) за период времени, пока ГГ находится на локации. При переходе на другую локацию, счётчик max_count сбрасывается. (ставить не обязательно) min_count = минимальное количество объектов, которое будет обязательно заспавнено (для экстренного респавна). (ставить не обязательно) max_spawn = количество попыток заспавнить объект спавна за один цикл респавна. При 100%-ом спавне эквивалентно кол-ву спавнящихся объектов за один цикл. idle_spawn = периодичность спавна. Известно три типа medium, often, seldom. Обычно, используется тип medium. Возможно задание числом (в секундах игрового времени). Возможно задать двумя числами (мин и макс. время между респавнами). При '-1' - респавн происходит по событию. 2. Исходный скрипт респавнера, заспавнив объект монстра или сталкера, проверяет получение заспавненным объектом работы в каком-либо гулаге (по всей Зоне!). При отсутствии таковой - объект удаляется. Сделано это очевидно в целях недопущения переполнения Зоны. Однако, перед проверкой на получение работы в гулаге проверяется кастом-дата объекта, который должен быть заспавнен, и если в нем есть в секции [smart_terrains] строка 'none = true' или 'respawn_check = false' - то такие объекты, будучи заспавненными, НЕ будут удалены даже если для них нет работы в гулагах. Объекты с 'none = true' будут всегда праздно-шатающимися (отвязанными от гулагов). Объекты с 'respawn_check = false' могут получить работу в подходящем для них гулаге при ее освобождении. Т.о. ответ на вопрос: Если в 'custom_data' секции спавна объекта прописать указанные выше строки - никакие гулаги/работы и их отсутствие для спавна таких объектов не помеха. Добавлено через 20 мин.: *Shoker*, мне, например, твоя уверенность в наличии готового алгоритма определения факта выстрела непонятна. Что-то не встречалось до сих пор ... Есть только косвенные методы с теми или иными ограничениями/обусловленностями. Не знаю в ченм суть твоей идеи, но ... возможно тот факт, что при разрядке хотя бы одного патрона для актора срабатывает коллбэк на полученяе патрона(ов) - может помочь тебе сэкономить на мониторинге патронов в рюкзаке ... Т.е. мониторя кол-во патронов в стволе и по факту уменьшения их кол-ва в магазине и отсутствии кобэка на взятие - можно с достаточной уверенностью говорить о событии 'выстрел'. Но(!) тут другая заковыка - при смене режима на тот же подствольник - кол-во патронов также меняется ... не изменяясь в рюкзаке. Так что потребно и тип патронов отслеживать. Изменено 10 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
*Shoker* 322 Опубликовано 10 Октября 2011 Поделиться Опубликовано 10 Октября 2011 Artos Спасибо! Колбек и впрям ведь вызываться должен. Отслеживать нужно, т.к мне необходимо уменьшать кондишион оружия при каждом выстреле, притом оружие может быть одной и той же секции, так что конфиг не подходит для этого. Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
FLUDMAN 7 Опубликовано 11 Октября 2011 Поделиться Опубликовано 11 Октября 2011 (изменено) Сообщение от модератора ColR_iT 5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе; Изменено 11 Октября 2011 пользователем ColR_iT Ссылка на комментарий
*Razor* 0 Опубликовано 11 Октября 2011 Поделиться Опубликовано 11 Октября 2011 (изменено) Кто хорошо разбирается в скриптах, помогите пожалуйста. Такая вот ситуация. Хотел выедрнуть из ARS mod 0.5.2 спавн аномалий на локациях и обход аномалий неписями, еле разобрался с коллбеками, теперь вот не дает запустится такой вылет, вроде бы все зарегистрировал, все вспомогательные функции добавил, но увы: [error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp [error]Line : 748 [error]Description : ...blishing\stalkercop\gamedata\scripts\zone_mgr.script:42: attempt to index upvalue 'bounding_box' (a nil value) Вот архив со спавном и обходом на чистую игру 1.6.02 + лог: http://rghost.ru/25187391 Изменено 11 Октября 2011 пользователем *Razor* Ссылка на комментарий
*Shoker* 322 Опубликовано 11 Октября 2011 Поделиться Опубликовано 11 Октября 2011 (изменено) Игра ругается на скрипт zone_mgr, на его 42 строку, в частности на переменную bounding_box, она должна содержать значение, но оно пустое. Где то не до конца совместил. Сравнивай файлы через WinMerge или ТоталКомандер. Добавлено через 38 мин.: Хотел ещё спросить, можно ли скриптово создать объект по типу "окна инвентаря", точнее ту часть, где находятся иконки предметов, и их можно перетаскивать. Возможно ли создать аналогичную вещь скриптово, и ложить туда определённые "элементы", содержащие картинку и какую то доп. информацию. Если да, то есть ли где рабочий пример? Изменено 11 Октября 2011 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Artos 99 Опубликовано 11 Октября 2011 Поделиться Опубликовано 11 Октября 2011 *Razor* Наиболее вероятно, что в процессе адаптации ты упустил инициализацию в 'zone_mgr.script', т.е. вызов zone_mgr.initialize() из некоего стороннего скрипта. Проверь ... Ну а пока в 42-ю строку можешь засунуть типа: if not bounding_box then initialize() end - но это не панацея и может аукнуться в какой-то иной ситуации. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Лёха_тц 3 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 Всем привет слушайте кто знает что это может значить. Expression : header().graph_guid() == ai().game_graph().header().guid() Function : CALifeSpawnRegistry::load File : E:\stalker\patch_1_0004\xr_3da\xrGame\alife_spawn_registry.cpp Line : 167 Description : Spawn doesn't correspond to the graph : REBUILD SPAWN! В заранее спасибо. Ссылка на комментарий
RvP 1 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 Лёха_тц, all.spawn не соответствует game.graph-у Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
alen_fantom 653 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 ПРИВЕТ ВСЕМ!!! Уважаемые мододелы и умельцы править всё и вся! Пытаюсь распаковать all.spawn из НС 3.09. Установил ActivePerl 5.8.9 Build 826, скачал и установил на диск С асдс, октябрьскую версию, прописал bat файл, запустил распаковку, первая остановка: stalker_sniper - прописал, запустил сного и вот - zone_ameba - это что, анамалия? Прописал в анамалии и следуюшая остановка data left in atp_anom_ameba Что нужно прописать в файле acdc.pl? Выручайте. Может кто нибудь может скинуть acdc.pl настроенный на НС от 3.09 под патч 1.0004? С уважением и заранее благодарю. Ссылка на комментарий
Хемуль36рус 1 789 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 (изменено) Подскажите начинающему, а то я что то заплутал во этих всех файлах, в голове бардак, например я прописал в ал-спавн новую аномалию в alife_l03_agroprom, в файлах way_l03_agroprom тоже надо что то прописать, запутался в конец, а хочется попробовать разобраться. Да Вы уж извините и самому стыдно, но сколько не искал ,того что мне нужно не нашёл. Ну последняя просьба, подскажите программку для снятия координат и если можно ссылку на неё. Изменено 12 Октября 2011 пользователем ХЕМУЛЬ36RUS Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g. Ссылка на комментарий
Artos 99 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 (изменено) ХЕМУЛЬ36RUS, чтобы не путаться - нужно всего лишь понимать что ты хочешь и знать (хотя бы в общих чертах) способы достижения. Погадалками и постоянными переспросами по каждой мелочи ты и сам мало чего достигнешь и у других вызовешь не желание помочь, а ... игнорировать. Будь посамостоятельнее и работай своею головой почаще. Ответ очевиден: Аномалии не имеют свойства двигаться и им прописывать какие-либо пути бессмысленно. Изменено 12 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
amik 253 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 ХЕМУЛЬ36RUS way нужен только при присутствии логики. У аномалий ее нету. [152] ; cse_abstract properties section_name = zone_mosquito_bald_weak name = esc_zone_mosquito_bald_weak position = -62.7365341186523,20.1926517486572,169.534149169922 direction = -0.367405563592911,0.0629953369498253,0.17383885383606 version = 118 script_version = 6 ; cse_alife_object properties game_vertex_id = 165 distance = 39.2000007629395 level_vertex_id = 213209 object_flags = 0xffffff3e ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 5.02300071716309 ; cse_alife_space_restrictor properties restrictor_type = 0 ; cse_alife_custom_zone properties max_power = 0 ; cse_alife_anomalous_zone properties offline_interactive_radius = 30 artefact_spawn_count = 32 ; se_zone_anom properties В section_name = zone_mosquito_bald_weak Ставишь любое название аномалии из файлов zone_... и все. А вообще не спеши, сам пробуй понять как и что. В интернете, за 4-ри года ковыряний уже много чего накопилось. Мой архив Сталкером не занимаюсь. Ссылка на комментарий
*Shoker* 322 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 XЕМУЛЬ36RUS Way используют только двигающиеся аномалии, аля файрболы, которые летают по указанному пути. (Такой есть в ТЧ, в х-16, и их много в ЗП) Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Artos 99 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 (изменено) *Shoker*, не путай людей. 'аля файрболы' (в х-16) - это считай партиклы, а не какие не аномалии. Точнее, это space_restrictor'ы, для которых работает схема 'sr_particle'. От аномалий - тут только собственно партиклы. Изменено 12 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
*Shoker* 322 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 (изменено) Artos В ЗП это именно аномалии (ZS_TORRD, zone_fireball), да и в ТЧ ж ведь они тоже наносят урон (там класс Z_TORRID). В СДК для ЗП для этого класса даже отдельная строка под указание пути. Ну и чтобы не захломлять "Справочник" > По сути тебе всего то требуется считывать последние параметры из нет-пакета оружия, что можно было гораздо проще организовать. Указать read - позицию? В принципе верно, приму на заметку, хотя существенного падения скорости я не заметил. > Параметр 'updgrenade_mode', о котором ты срашиваешь, никуда не делся с 2008 года Я вызывал с разбором UPDATE_ пакета, но этот параметр возвращал nil UPDATE_ пакет точно разбирался, но например когда я пытался вывести updcondition, он выводил мне стабильно число 102, а после ломки ствола и save\load - 32 ... так что я не уверен, что в моём случае этот пакет был разобран правильно. И ещё, я для ВСЕГО оружия использую функцию по разбору нет пакета Get_Data_Weapon, тоесть и для дробовиков, и для автоматов. Корректно ли это, ведь я заметил у тебя ещё Get_Data_WeaponGL, Get_Data_WeaponShotgun и прочие... Изменено 12 Октября 2011 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Artos 99 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 (изменено) *Shoker* Помня, что твоя идея была в 'износе от выстрелов', то ... вполне достаточно было бы вопользоваться: а) В 'se_item.script' для классов оружия добавить функции чтения нет-пакетов и там брать нужные параметры с конца пакета. Учитывая, что апдейт и не част и не редок - для обсчета выстрелов этого вполне достаточно. И не требуется загружать апдейт актора. б) Где удобно выполнять мониторинг наличия активного оружия в руках ГГ и именно это оружие (ID) мониторить в 'se_item.script'. в) Отсекать перезарядки и пр. по их коллбэкам. Все это в сумме и даст небольшую нагрузку на ресурсы и достаточную точность для твоего износа. UPDATE_ пакета у меня, например используется в нескольких местах и не имею нареканий. Но вот то, что ты путаешь параметры - говорит не о неправильности работы модуля нет-пакетов, а о неправильной трактовке и применения нет-пакетов. Что по твоему должен означать упомянутый тобою 'updcondition', учитывая что для всех предметов имеется 'condition'? Ведь именно второй тебе то и нужен. Если ты читаешь и используешь только общие параметры для оружия - то неважно какой пакет ты читаешь Get_Data_Weapon иль иной. А вот если тебе нужны эксклюзивные для класса параметры или ты еще и изменяешь пакет - то использовать нужно ТОЛЬКО соответствующий классу объекта метод. Изменено 12 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
*Shoker* 322 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 (изменено) Кстати говоря, всегда интересовало, чем UPDATE_ пакеты отличаются от STATE_ ? Я думал что вроде как UPDATE_ меняется постоянно, а STATE_ имеет стабильные значения. > неправильной трактовке и применения нет-пакетов. Значит для чтения UPDATE_ пакетов всё же нужно использовать соответствующую функцию (Get_Data_WeaponGL, Get_Data_WeaponShotgun...) ? А как примерно определить какую где, если с шотганами ясно, то что насчёт GL и прочих оставшихся? >в) Отсекать перезарядки и пр. по их коллбэкам. Я знаю колбек лишь на то, что в оружии закончились патроны, все остальные вроде надо делать кустарно. Изменено 12 Октября 2011 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Artos 99 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 (изменено) *Shoker* По сути, нет-пакет объекта состоит из двух частей, которые считываются/записываются двумя разными методами. Упрощенно, это две части одно таблицы, каждая из которых может читаться/изменяться своим методом по отдельности. Разделение на STATE и UPDATE довольно условное и ясно может быть только самим разрабам. Опять же упрощенно, STATE - это основные параметры объекта, которые он имеет в настоящий момент. UPDATE - дополнительные параметры и те которые объект должен получить/установить/достичь ... (например, на следующем апдейте). Тут очень много вариаций и нюансов. STATE - никак НЕ стабильные значения, как ты трактуешь. Опять же условно: это те параметры статус (state) которых определен на настоящий момент. Повторяю, если ты только читаешь нет-пакет и из него тебе требуются только общие для всех классов оружия параметры - то достаточно считать основной класс, а не заморачиваться на дочерних. Как определять класс? Странный вопрос для тебя ... Открой тот же 'class_registrator.script' и смотри куда какое оружие относится. Вот это добавлено в новую версию модуля нет-пакетов: function Get_Data_AnyWeapon(soObj,bFull) --/ серверный объект на входе local iCid = soObj:clsid() if iCid == wpn_knife_s then return Get_Data_Weapon(soObj,bFull) --/> elseif iCid == wpn_ak74_s or wpn_groza_s then return Get_Data_WeaponGL(soObj,bFull) --/> elseif iCid == wpn_shotgun_s or iCid == wpn_bm16_s or iCid == wpn_rg6_s then return Get_Data_WeaponShotgun(soObj,bFull) --/> else return Get_Data_WeaponMagazined(soObj,bFull) --/> end end function Set_Data_AnyWeapon(tT,soObj,bFull) --/ таблица параметров и серверный объект на входе local iCid = soObj:clsid() if iCid == wpn_knife_s then return Set_Data_Weapon(tT,soObj,bFull) --/> elseif iCid == wpn_ak74_s or wpn_groza_s then return Set_Data_WeaponGL(tT,soObj,bFull) --/> elseif iCid == wpn_shotgun_s or iCid == wpn_bm16_s or iCid == wpn_rg6_s then return Set_Data_WeaponShotgun(tT,soObj,bFull) --/> else return Set_Data_WeaponMagazined(tT,soObj,bFull) --/> end end Я уже тебе говорил ранее, что является критерием выстрела чтобы отсечь факт разрядки/перезарадки. Коллбэк на появление у ГГ нового патрона/пачки - это и есть не выстрел, а раз(переза)рядка. Изменено 12 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Darkscape 0 Опубликовано 13 Октября 2011 Поделиться Опубликовано 13 Октября 2011 1. Как через all.spawn заспавнить объект, а потом скриптом/инфопоршном его удалить? 2. Как вместо ПДА вызывать скрипт? Ссылка на комментарий
Artos 99 Опубликовано 13 Октября 2011 Поделиться Опубликовано 13 Октября 2011 (изменено) Darkscape, задавая вопросы стОит все же вдумываться в то, что пишешь ... 1. Как спавнить объекты через all.spawn - читаем многочисленные туторы (см. ссылки в шапке). Спавн объектов в all.spawn идет по именам, т.е. имена заспавненных объектов эксклюзивны (по крайней мере для конкретной локации). Зная имя объекта в all.spawn - по имени находишь объект в игре и удаляешь его. Инфопоршнем ничто не удаляется, это всего лишь некая информация (порция), используемая неким образом в игре. Для удаления объектов используется один единственный всем известный метод (reliase), применяемый к удаляемому серверному объекту. 2. Переведи на русский ... Изменено 13 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти