mister_cow может не правильно работать, не так как ты хотел. Тот предмет может спауниться у всех НПС. ВариантVOva-VIP мне больше нравиться тот что постом выше.
АРКОТ Дык не робит, как я не пытался.
В детх женереке прописал,
в чарактер_деск тоже,
в спавн секшнс кастом дату прописал и туда с логикой вписал.
Ничего
1. death_generic.ltx - отвечает за привязку патронов к оружию;
2. death_items_by_communities.ltx - отвечает за вероятность заспаунить предметы или нет для каждой группировки. Секция [stalker] - значения по умолчанию;
3. death_items_by_levels.ltx - отвечает за возможность появления в инвентаре предметов в зависимости от локации (т.е. можно запретить появление определённых предметов на конкретной локации вне зависимости от группировки);
4. death_items_count**5001618d69873ce82a42**
отредактировал(а) ColR_iT: 24-02-2012 14:02 GMT3 час.
mister_cow Ты если не понял, то покажи как ты создал кастом дату и как все вписал. Я тебе показал свой пример для спавна скриптовому неписю документа. Я заспавнил скриптом непися и через кастом дату вписал ему то, что обычно спавнишь через all.spawn т.е.
[spawn]
Опять же НИ нужна, даже если он скриптовый. НИ не нужно, если ты создал весь его профиль и прописал кастом дату и этот твой документ ему в спавн.
крысобелка :
Что означает этот лог:
Description : Invalid source num channels:
Arguments : d:\games\s.t.a.l.k.e.r 1.6\gamedata\sounds\music\echo-10.ogg
сделаю копию этого файла один назови echo-10_r второй echo-10.ogg_l
это кажется дело в этом
Arist
Функция relocate_item_section работает следующим образом:
Принимает три аргумента:victim, section и type.
Параметр type принимает два значения: "in" и "out" и соответс**50096c9725ff35736f77**ode]if quest_section[section] == true and
victim:object(section) ~= nil
then
victim:transfer_item(victim:object(section), db.actor)[/code]Сверяем с глобальной таблицей quest_section из файла _g.script, что секция нашего предмета соответствует одному из элементов, а также проверяем есть ли предмет с данной секцией у объекта, в данном случае переданного параметром victim.
Если же совпадений не найдено, т.е. в данной таблицы такой записи нет, то предмет будет не передаваться от НПС игроку, а спавнится у актора в инвентаре.
Поэтому, здесь несколько вариантов: либо прописать твой предмет в глобальную таблицу квестовых предметов, в файле _g.script (таблица находится в самом низу файла), либо передавать предмет вот такой функцией:
[code]function transfer_items_from_npc (victim, section)
-- Существует ли актор и объект
if db.actor and victim then
-- Проверим, а объект случаем не актор?
if victim:id() ~= -1 then
-- Нет, не актор.
-- А есть ли нужный предмет у объекта?
if victim:object(section) ~= nil then
-- Предмет есть и мы его передаём актору.
victim:transfer_item(victim:object(section), db.actor)
end
end
end
end[/code]
Функцию вызывать из реплики оппонента.
В таком случае предмет будет именно передаваться.
У меня появилась проблема странная с НПС, когда они ударяют тебя, если долго пытаться поговорить с оружием.
Дело в том, что ударять стали только единицы НПС, многие просто не ударяют, просто говорят, что с оружием говорить не будут, и у некоторых даже вылетает (ошибка указывает на 20 строку _g скрипта).
Вот например с Волком если так делать, то вылетает. Например долго пытаюсь с ним с оружием на руках поговорить. Он просто ничего не делает, но если я отойду от него примерно на 15 метров, то вот тогда и происходит вылет.
С чем это может быть связано? Можно ли как-нибудь хотя бы просто избежать вылета? (кроме того, что в каждой логике ставить use_wpn = true)
отредактировал(а) VOva-VIP: 24-02-2012 20:17 GMT3 час.
Здравствуйте.
При загрузке ста**50016c9725ff35736f77**to concatenate field '?' (a nil value)
[/code]
в этом файле на этой строчке находится вот что:
[code]get_console():execute("g_game_difficulty "..game_difficulty_by_num[game_difficulty])[/code]
VOva-VIP :
Киньте тутор или подскажите: как осуществить respawn через all.spawn?
Respawn NPC.
Для создания респавна NPC, понадобится два файла: all.spawn и spawn_section.ltx.
Это минимальный набор. Для полной настройки респавнера, нужны ещё character_desc_simulation.xml и npc_profile.xml.
1. В all.spawn создаём секцию респавнера:
[10000]
; cse_abstract properties
section_name = respawn
name = имя респавнера
position = координаты (x,y,z)
direction = 0,0,0
Где:
respawn_section = id респавн-секций из файла spawn_section.ltx. Цифры после запятой, означают отношение одной секции к другой. Если планируется одинаковое колличество респавна из каждой секции, то цифры ставить не требуется.
max_count = колличество респавн-запросов за период времени, пока ГГ находится на локации. При переходе на другую локацию, счётчик max_count сбрасывается. (ставить не обязательно)
min_count = минимальное колличество нпс, для экстренного респавна. (ставить не обязательно)
max_spawn = колличество нпс за один цикл респавна.
idle_spawn = тип спавна. Известно три типа medium, often, seldom. Обычно, используется тип medium.
conditions =Условие респавна. Можно установить проверку условий (инфопоршень), где респавн будет происходить только при выполнении условия. Номер означает общий процент выполнения респавна. Например так:
conditions = {+инфо} 100, 0 где, респавн будет происходить со сто-процентной вероятностью, только при наличии установленного инфопоршна.
2. В файле spawn_section.ltx, создаём респавн-секции:
Где:
esc_urody_respawn_1 id респавн-секции.
sim_urody_novice и sim_urody_regular классы профайлов нпс.
novice и regular ранги нпс.
bandit группировка нпс.
3. В файле npc_profile.xml регистрируем классы sim_urody_regular и sim_urody_novice
sim_urody_regular
sim_urody_novice
4. Создаём профили, в файле character_desc_simulation.xml, с классами sim_urody_regular и sim_urody_novice и группировкой bandit. Respawn монстров.
В принципе, респавн мутантов идентичен респавну нпс. Но с одним лишь отличием, которое его значительно упрощает. Вся настройка респавна мутантов, ограничивается секцией в файле "all.spawn". Вписываем секцию респавнера, как указано в -RESPAWN NPC-. Все настройки идентичны, кроме строки respawn_section = . В ней прописываем типы мутантов, из файла "se_respawn.script". Такие как flesh_weak, flesh_normal, dog_weak, boar_strong, и т.д..
ОБЩИЕ НАСТРОЙКИ.
Обязательные условия респавна:
1. На локации обязательно должен быть хоть один гулаг для респавнящихся NPC и мутантов, так как количество NPC для респавна, ориентируется по доступным местам в гулагах.
2. Респавн производится, только если под гулагами есть доступные работы.
3. На каждой локации, респавн ограничен определёнными типами неписей. Данные ограничения установлены в файле misc\smart_terrain_presets.ltx. Чтобы сделать возможным респавн неписей, не предусмотренных на данной локации. Надо в указанном файле, в секции нужной локации, дописать требуемые типы неписей.
Для проверки созданного респавнера, можно не ждать когда сработает системный респавн, а вызвать принудительно респавн в нужной секции. Для этого, прописываем в любой логике, вызов функции %=respawner_spawn(имя респавнера)%. Где, "имя респавнера" - имя секции, созданной в файле all.spawn. Скобки обязательны.
Например, можно создать рядом с зоной респавнера, временный рестриктор. И в кастом дате рестриктора, прописать вызов функции принудительного вызова респавна, в нужном респавнере, при входе ГГ в зону рестриктора:
2. Затем, в файле game_story_id.ltx регистрируем story_id ящика. (выбираем любое свободное число).
3. Создаём респавнер в файле all.spawn. Координаты и размеры зоны респавнера, должны быть такими, чтоб инвентарный ящик поместился внутри зоны респавнера:
[10001]
; cse_abstract properties
section_name = respawn
name = имя_респавнера
position = координаты x,y,z
direction = 0,0,0
Где:
respawn_section = список вещей респавна, в виде их спавн - секций. Как и в респавнерах неписей, возможна прописка соотношений между вещами.
Например: respawn_section = wpn_pm,2, vodka,2, medkit,1, energy_drink,2, ammo_9x18_fmj,3
idle_spawn = тип спавна. Инвентарь не имеет типов спавна, поэтому ставится (-1).
parent = Story_id инвентарного ящика (из game_story_id.ltx), в котором производить респавн вещей .
item_spawn = (true\false) возможность включения и отключения респавна. Можно задавать условия, например инфопоршнем или функцией (разумеется прописанной в xr_conditions.script).
max_count = количество респав-циклов за определённый период времени. (Пока ГГ находится на локации. После перехода ГГ на другую локацию, счётчик сбрасывается).
4. Создаём вызов респавна. Обычно вызов производится из smart_terrain. В "custom_data" любого подходящего smart_terrain, под секцией [smart_terrain], вписываем вызов респавна:
[smart_terrain]
respawn = имя респавнера
И респавн будет производиться, при каждом пополнении нпс, под данным смартом.
; cse_abstract properties
section_name = physic_destroyable_object
name = esc_surprise_box_012
position = -186.322723388672,-21.6794471740723,-131.523406982422
direction = 0.0713645741343498,-0.00591489719226956,0.0827646702528