Перейти к контенту

Рекомендуемые сообщения

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*, мне, например, твоя уверенность в наличии готового алгоритма определения факта выстрела непонятна. Что-то не встречалось до сих пор ... Есть только косвенные методы с теми или иными ограничениями/обусловленностями.

Не знаю в ченм суть твоей идеи, но ... возможно тот факт, что при разрядке хотя бы одного патрона для актора срабатывает коллбэк на полученяе патрона(ов) - может помочь тебе сэкономить на мониторинге патронов в рюкзаке ...

Т.е. мониторя кол-во патронов в стволе и по факту уменьшения их кол-ва в магазине и отсутствии кобэка на взятие - можно с достаточной уверенностью говорить о событии 'выстрел'.

Но(!) тут другая заковыка - при смене режима на тот же подствольник - кол-во патронов также меняется ... не изменяясь в рюкзаке. Так что потребно и тип патронов отслеживать.

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Artos

Спасибо! Колбек и впрям ведь вызываться должен.

Отслеживать нужно, т.к мне необходимо уменьшать кондишион оружия при каждом выстреле, притом оружие может быть одной и той же секции, так что конфиг не подходит для этого.

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий
Сообщение от модератора ColR_iT
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
Изменено пользователем ColR_iT

FLUDMAN.gif

Ссылка на комментарий

Кто хорошо разбирается в скриптах, помогите пожалуйста. Такая вот ситуация. Хотел выедрнуть из 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

Изменено пользователем *Razor*
Ссылка на комментарий

Игра ругается на скрипт zone_mgr, на его 42 строку, в частности на переменную bounding_box, она должна содержать значение, но оно пустое.

Где то не до конца совместил. Сравнивай файлы через WinMerge или ТоталКомандер.

 

Добавлено через 38 мин.:

Хотел ещё спросить, можно ли скриптово создать объект по типу "окна инвентаря", точнее ту часть, где находятся иконки предметов, и их можно перетаскивать.

Возможно ли создать аналогичную вещь скриптово, и ложить туда определённые "элементы", содержащие картинку и какую то доп. информацию.

Если да, то есть ли где рабочий пример?

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

*Razor*

Наиболее вероятно, что в процессе адаптации ты упустил инициализацию в 'zone_mgr.script', т.е. вызов zone_mgr.initialize() из некоего стороннего скрипта. Проверь ...

Ну а пока в 42-ю строку можешь засунуть типа: if not bounding_box then initialize() end

- но это не панацея и может аукнуться в какой-то иной ситуации.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Всем привет слушайте кто знает что это может значить.

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!

 

 

В заранее спасибо.

Лёха_тц.gif
Ссылка на комментарий

ПРИВЕТ ВСЕМ!!!

Уважаемые мододелы и умельцы править всё и вся! Пытаюсь распаковать 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? С уважением и заранее благодарю.

Ссылка на комментарий

Подскажите начинающему, а то я что то заплутал во этих всех файлах, в голове бардак, например я прописал в ал-спавн новую аномалию в alife_l03_agroprom, в файлах way_l03_agroprom тоже надо что то прописать, запутался в конец, а хочется попробовать разобраться.

 

Да Вы уж извините и самому стыдно, но сколько не искал ,того что мне нужно не нашёл. Ну последняя просьба, подскажите программку для снятия координат и если можно ссылку на неё.

Изменено пользователем ХЕМУЛЬ36RUS

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

Ссылка на комментарий

ХЕМУЛЬ36RUS, чтобы не путаться - нужно всего лишь понимать что ты хочешь и знать (хотя бы в общих чертах) способы достижения.

Погадалками и постоянными переспросами по каждой мелочи ты и сам мало чего достигнешь и у других вызовешь не желание помочь, а ... игнорировать. Будь посамостоятельнее и работай своею головой почаще.

 

Ответ очевиден: Аномалии не имеют свойства двигаться и им прописывать какие-либо пути бессмысленно.

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

ХЕМУЛЬ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-ри года ковыряний уже много чего накопилось.

Мой архив

Сталкером не занимаюсь.

Ссылка на комментарий

XЕМУЛЬ36RUS

Way используют только двигающиеся аномалии, аля файрболы, которые летают по указанному пути. (Такой есть в ТЧ, в х-16, и их много в ЗП)

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий
*Shoker*, не путай людей. 'аля файрболы' (в х-16) - это считай партиклы, а не какие не аномалии. Точнее, это space_restrictor'ы, для которых работает схема 'sr_particle'. От аномалий - тут только собственно партиклы. Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

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 и прочие...

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

*Shoker*

Помня, что твоя идея была в 'износе от выстрелов', то ... вполне достаточно было бы вопользоваться:

а) В 'se_item.script' для классов оружия добавить функции чтения нет-пакетов и там брать нужные параметры с конца пакета. Учитывая, что апдейт и не част и не редок - для обсчета выстрелов этого вполне достаточно. И не требуется загружать апдейт актора.

б) Где удобно выполнять мониторинг наличия активного оружия в руках ГГ и именно это оружие (ID) мониторить в 'se_item.script'.

в) Отсекать перезарядки и пр. по их коллбэкам.

Все это в сумме и даст небольшую нагрузку на ресурсы и достаточную точность для твоего износа.

 

UPDATE_ пакета у меня, например используется в нескольких местах и не имею нареканий. Но вот то, что ты путаешь параметры - говорит не о неправильности работы модуля нет-пакетов, а о неправильной трактовке и применения нет-пакетов.

Что по твоему должен означать упомянутый тобою 'updcondition', учитывая что для всех предметов имеется 'condition'? Ведь именно второй тебе то и нужен.

 

Если ты читаешь и используешь только общие параметры для оружия - то неважно какой пакет ты читаешь Get_Data_Weapon иль иной. А вот если тебе нужны эксклюзивные для класса параметры или ты еще и изменяешь пакет - то использовать нужно ТОЛЬКО соответствующий классу объекта метод.

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Кстати говоря, всегда интересовало, чем UPDATE_ пакеты отличаются от STATE_ ?

Я думал что вроде как UPDATE_ меняется постоянно, а STATE_ имеет стабильные значения.

 

> неправильной трактовке и применения нет-пакетов.

Значит для чтения UPDATE_ пакетов всё же нужно использовать соответствующую функцию (Get_Data_WeaponGL, Get_Data_WeaponShotgun...) ?

А как примерно определить какую где, если с шотганами ясно, то что насчёт GL и прочих оставшихся?

 

>в) Отсекать перезарядки и пр. по их коллбэкам.

Я знаю колбек лишь на то, что в оружии закончились патроны, все остальные вроде надо делать кустарно.

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

*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

 

 

Я уже тебе говорил ранее, что является критерием выстрела чтобы отсечь факт разрядки/перезарадки. Коллбэк на появление у ГГ нового патрона/пачки - это и есть не выстрел, а раз(переза)рядка.

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Darkscape, задавая вопросы стОит все же вдумываться в то, что пишешь ...

 

1. Как спавнить объекты через all.spawn - читаем многочисленные туторы (см. ссылки в шапке).

Спавн объектов в all.spawn идет по именам, т.е. имена заспавненных объектов эксклюзивны (по крайней мере для конкретной локации). Зная имя объекта в all.spawn - по имени находишь объект в игре и удаляешь его.

Инфопоршнем ничто не удаляется, это всего лишь некая информация (порция), используемая неким образом в игре. Для удаления объектов используется один единственный всем известный метод (reliase), применяемый к удаляемому серверному объекту.

 

2. Переведи на русский ...

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...