Геныч
Сообщения : 3 Дата регистрации : 2010-08-06
| Тема: Учебник АМК Ч3 Пт Авг 06, 2010 4:50 pm | |
| НПС- Отслеживание НПС :
Отслеживание НПС (выдает инфу о входящих в онлайф НПСах) открой xr_motivator.script и найди там net_spawn function motivator_binder:net_spawn(sobject) printf("motivator_binder:net_spawn(): self.object:name()='%s'", self.object:name()) и замени на: function motivator_binder:net_spawn(sobject) printf("motivator_binder:net_spawn(): self.object:name()='%s'", self.object:name()) abort("motivator_binder:net_spawn(): self.object:name()='%s'", self.object:name())
- Спавн Мертвого НПС:
Как с помощью скрипта заспавнить МЕРТВОГО нпс?
Заспавнить живого и прописать ему через нет_пакеты здоровье ноль. Примерно так: Код:
local obj=amk.spawn_item("yan_ecolog_respawn_2",vector():set(187.84,5.18,360.68), 938,386349)
local tbl = amk.read_stalker_params(obj) tbl.health = 0 tbl.updhealth = 0 amk.write_stalker_params(tbl, obj)
- Kонфиги Kвестовых Tрупов :
Кто знает где прописаны конфиги квестовых трупов на кордоне?
а КТО ИМЕНО? По идее трупы должны прописываться там же где и живые в
character_desc_escape
Особенно интересует труп у вагончика и труп на ферме. вот это помоему на ферме <specific_character id="esc_stalker_novice_default3" team_default = "1"> <name>GENERATE_NAME_stalker</name> <icon>ui_npc_u_green_stalker_3</icon> <bio>esc_stalker_novice_bio</bio> со вторым сложнее, но помоему вот этот у вагончика <specific_character id="esc_stalker_novice_default4" team_default = "1"> <name>GENERATE_NAME_stalker</name> <icon>ui_npc_u_green_stalker_3</icon> <bio>esc_stalker_novice_bio</bio Кстати если тебе нужен гарантированный труп положи тому который лежит у входа в тунель с электрой <specific_character id="esc_stalker_novice_default9" team_default = "1"> <name>GENERATE_NAME_stalker</name> <icon>ui_npc_u_green_stalker_5</icon> <bio>esc_stalker_novice_bio</bio> хотя там новичков трупов 5 или 6 esc_stalker_novice_default10 тоже труп. Все похожи друг на друга. Так что окончательно можно понять только по экспериментировав с ними . Я только за esc_stalker_novice_default9 уверен
- Метка на НПС:
А как сделать чтобы метку на волка поставить? А лучше не на Волка а какого-нибудь обычного непися?
По поводу метки... Получить Волка как объект и поставить на него метку: level.map_add_object_spot_ser(npc.id, "blue_location","Волк") или level_tasks.add_location(npc.id, "blue_location","Волк") treasure -Иконка тайника green_location -Зеленая стандартная пометка квестов blue_location -Кружок с человечком crlc_big -Большой круг типа где-то тут... crlc_mdl -Средний круг crlc_small -Маленький круг alife_presentation_monstr -Большая белая точка
- Конфиг Петрухи :
Конфиг Петрухи gamedata/config/gameplay/charecter_esc_desc.xml,
Петруха называется esc_ranger
- Лут оружие:
Как сделать что-бы у мертвых NPC с новым оружием в инвентаре были и новые патроны. Подскажи пожалуйста где ковырять?
В папке misc, такие файлы:
death_generic.ltx -привязывается оружие к патронам (разобраться не сложно);
death_items_by_communities.ltx -вероятность заспаунить предметы или нет (можно расписать у каждой группировки). В секции [stalker] указываются дефолтные значения; death_items_by_levels.ltx -указывается возможность появления в инвентаре предметов в за
висимости от локации (т.е. можно запретить появление определённых предметов на конкретной локации вне зависимости от группировки; death_items_count.ltx -указывается количество (от и до) предметов в зависимости от уровня сложности.
Все файлы для игры на чистом АМК надо извлекать из db архива либо смотреть самую первую версия Weapons Pack, а в NLC часть из них уже есть.
- переодеть НПС :
Вопросы: что бы "переодеть" НПС редактируем эту строку в его конфиге:
<visual>actors\novice\green_stalker_8</visual> ?
И что-бы изменить иконку ОДЕТОГО костюма в инвентаре -какую строку надо исправить в
конфиге костюма?
1. Да. 2. Иконка меняется здесь: <icon>ui_npc_u_stalker_neytral_balon_1</icon>
- Редактирование профиля НПС:
Редактирование профиля НПС:
\config\gameplay\character_desc_[название локации].xml
Каждый из них разбит на секции -по одной на NPC. Используются следующие параметры: <name>...</name> -Имя (ссылка на строку в текстовом массиве). <icon>ui_npc_...</icon> -Иконка для диалогов/торговли. <bio>..._bio</bio> -Биография (в игре не используется). <class>...</class> -Класс (лучше не трогать).Imp 12:46, 12 августа 2007 (EEST)Нужно для того что-бы автоматические респавнеры могли спавнить немного разных персонажей. То есть например в игре есть описание восьми (кажеться может и больше) разных новичков и что бы при автоматическом респавне не получалась куча братьев-близнецов, респавнер настраивается на класс персонажей и спавнит случайным образом разных персонажей одного класса. <community>...</community> -Группировка. <rank>...</rank> -Ранг. <reputation>...</reputation> -Репутация. <money min="..." max="..." infinitive="..."/> -Количество денег (infinitive="1" -бесконечные деньги).
<snd_config>...</snd_config> -Набор звуков. <crouch_type>-1</crouch_type> -Тип приседания. Лучше не трогать. <visual>actors\...</visual> -Внешность. Влияет как на внешний вид костюма, так и на его свойства. Укажите здесь экзоскелет -и персонаж действительно в нем окажется: как по внешности, так и по свойствам. <supplies>...</supplies> -Предметы, находящиеся у него в инвентаре. Некоторые из них в игре не отображаются, поэтому не удивляйтесь присутствию здесь предметов вроде рации или фонарика.
- Спавн вещей НПС:
А как уже имеющемуся НПС заспавнить что-то в инвентарь. Это реально?
Пожалуйста. Спавн Сига и патронов в инвентарь Волка: Код local npc,obj
for i=0,65534 do --перебираем онлайн-объекты npc = level.object_by_id(i) if npc and npc:name() == "esc_wolf" then --если объект(непись) существует
--и его имя такое-то obj = alife():object(npc:id()) --определяем его по id
end end alife():create("wpn_sig550", --ну, и спавним предметы, какие надо... obj.position, obj.m_level_vertex_id, obj.m_game_vertex_id, obj.id) --ему в инвентарь alife():create_ammo("ammo_5.56x45_ss190", --патроны, какие надо... obj.position, obj.m_level_vertex_id, obj.m_game_vertex_id, obj.id, --ему в инвентарь 30)
Если непись был только что заспавнен, то ещё легче -перебор делать не надо, сразу получаем его как объект, а по id его определяем сдедующим образом: obj = alife():object(npc.id)
Если известен story_id -тоже перебирать не надо. PS у меня не получается таким образом заспавнить более одной пачки патронов, чтобы было больше, надо ещё раз писать полностью: alife():create_ammo и т.д.
- добавить нового торговца:
В каких файлах, что нужно прописать, чтобы добавить нового торговца, например на Кордон?
Совсем нового? Или существующему НПС добавить функцию торговли? Первое через спавн и всем, что с этим связано. Второе, через файл гулага, к которому прописан НПС. Вот, для примера как прописать торговлю повару на базе свободы. Берем файл gulag_mil_freedom1.ltx, находим секцию повара и пишем:
[logic@mil_freedom_cook] active = walker1@mil_freedom_cook actor_dialogs = dialogs@mil_freedom_cook trade = misc\trade_povar.ltx on_death = on_death@mil_freedom_cook Дальше создаешь файл trade_povar.ltx похожий на trade_generic.ltx
- Спавн персонального НПС :
Спавн персонального НПС (типа Волка)
1) Создаем профиль твоего непися аналогично тому же Волку или Лукашу в одном из файлов character_desc_.... вообщем в том где ты хочешь чтобы непись спавнилась. Для примера вот: <!---------------------------dan----------------------> <specific_character id="esc_dan" team_default = "1"> <name>Дэн</name> <icon>ui_npc_u_actor</icon> <map_icon x="0" y="0"></map_icon> <bio>sim_stalker_novice_bio</bio> <class>esc_dan</class> <community>trader</community> <terrain_sect>stalker_terrain</terrain_sect> <money min="100000" max="110000" infinitive="1"></money> <rank>259</rank> <reputation>100</reputation> <visual>actors\svoboda\stalker_sv_exoskeleton</visual> <snd_config>characters_voice\human_02\bandit\</snd_config> <crouch_type>0</crouch_type> <supplies> [spawn] \n wpn_groza \n ammo_9x39_ap \n wpn_spas12 \n ammo_12x70_buck \n
bar_tiran_pda \n
#include "gameplay\character_food.xml" \n
#include "gameplay\character_drugs.xml"
</supplies>
#include "gameplay\character_criticals_6.xml"
<actor_dialog>informator_pda_give</actor_dialog>
<actor_dialog>prinesi_hvost</actor_dialog>
<start_dialog>hello_dialog</start_dialog>
#include "gameplay\character_dialogs.xml"
</specific_character>
2) Дальше прописываем его в файле npc_profile вот так:
<character id="esc_provodnik">
<class>esc_provodnik</class>
</character>
<character id="esc_dan">
<class>esc_dan</class>
</character>
3)прописываем его в файле spawn_sections вот так:
[esc_dan]:stalker
$spawn = "respawn\esc_dan"
character_profile = esc_dan
spec_rank = veteran
community = trader
4) Создаем свой скриптовый файл и в нем пишем функцию спавна вот такую:
function esc_shustryi()
local obj = alife():create("esc_dan",vector():set(112.3336,-7.41105,-42.5093),413823,124)
local params=amk.read_stalker_params(obj)
params.custom="[logic]\nactive=walker\n[walker]\npath_walk = esc_dan_walk1\npath_look =
esc_dan_look1\ncombat_ignore_cond=always"
params.sid=481520
amk.write_stalker_params(params,obj)
end
esc_shustryi название нашей функции
local params=amk.read_stalker_params(obj)
params.sid=481520
amk.write_stalker_params(params,obj) при помощи этой функции(кстати она работает только в
amk) присваиваем неписю номер
path_walk = esc_dan_walk1 это путь твоего непися
path_look = esc_dan_look1 это точка(точки) куда будет смотреть твой непись
И walk и look могут состоять как из одной точки так и из множества точек
5) Де компелируем all.spawn и ишем соответствующий файл way_.... ( в примере это
way_l01_escape) и пропишем ему путь и look вот так :
[esc_dan_walk1]
points = p0,p1,p2
p0:name = wp00|a=run
p0:position = -8.28458690643311,2.47888994216919,61.6851959228516
p0:game_vertex_id = 88
p0:level_vertex_id = 268486
p1:name = wp01|a=hide
p1:position = -87.5448226928711,-4.86890649795532,-76.5067977905273
p1:game_vertex_id = 75
p1:level_vertex_id = 177755
p2:name = wp02|a=sneak
p2:position = -13.3662910461426,0.638113260269165,259.589599609375
p2:game_vertex_id = 184
p2:level_vertex_id = 263975
[esc_dan_look1]
points = p0,p1,p2
p0:name = wp00
p0:position = 5.22266483306885,2.47839999198914,61.6714706420898
p0:game_vertex_id = 89
p0:level_vertex_id = 281623
p1:name = wp01
p1:position = -160.825149536133,-30.1117496490479,-359.227966308594
p1:game_vertex_id = 31
p1:level_vertex_id = 88416
p2:name = wp02
p2:position = 164.339752197266,-8.24007034301758,-12.4323778152466
p2:game_vertex_id = 137
p2:level_vertex_id = 468145
как ты видешь здесь путь и look состоят из 3 точек(минимум по одной)Теперь твоя непись бу
дет ходить и смотреть по прописанным тобой точкам. Компелируем all.spawn и
начинаем(обязательно новую игру)
Свою функцию спавна вставляем в нужный тебе диалог и после разговора непись твоя спав
ниться.
<phrase id="111">
<text>escape_shustryi_start_111</text>
<action>new_spawn.esc_shustryi</action>
<next>1111</next>
</phrase>
<phrase id="11">
<text>escape_shustryi_start_11</text>
<next>111</next>
</phrase>
new_spawn -название файла(скриптового)
esc_shustryi -название функции
- Как экзоскелету увеличить защиту головы:
Как экзоскелету увеличить защиту головы? С одного выстрела ПБ в голову, челы в экзоскелетах валяться!
Найдешь, и мне расскажешь. Пока могу только рассказать, что имеет отношение к защите головы у экзосеклета: outfit.ltx -> bones_koeff_protection = exo_helmet_damage damages.ltx -> [exo_helmet_damage]:body_exo_damage,head_helmet_damage [head_helmet_damage] bip01_neck = 1.0, 0.2 bip01_head = 1.0, 0.2 eyelid_1 = 1.0, 0.2 eye_left = 1.0, 0.2 eye_right = 1.0, 0.2 jaw_1 = 1.0, 0.2
- больше раненных сталкеров :
Есть вопрос: в каких файлах и какие параметры (и на какие) надо менять, чтобы стало больше "раненных" сталкеров (те к-ые орут дай аптечку). И раз уж на то пошло расскажите про damage.ltx
Попробуй в файле xr_wounded.script изменить это:
Код: def.hp_state = "10|"..state.."@help_heavy" def.hp_state_see = "10|"..state.."@help_heavy"
на это:
Код: def.hp_state = "50|"..state.."@help_heavy" def.hp_state_see = "50|"..state.."@help_heavy
- NPC покупают оружие:
NPC покупают оружие: Чтобы обычные сталкеры и др. npc могли покупать у ГГ оружие, нужно править файл gamedata\config\misc\trade_generic.ltx. Его структура точно такая же, как и у любого другого торговца. После строки [generic_buy] находим строку ;Оружие и после неё у каждого вида ставим зачения N и n.n. Можно например так: ;Оружие wpn_pm = 0.08, 0.12 wpn_pb ;NO TRADE wpn_fort = 0.08, 0.12 wpn_hpsa = 0.08, 0.12 wpn_beretta = 0.08, 0.12 wpn_walther = 0.08, 0.12 wpn_sig220 ;NO TRADE … … А чтобы у npc продавалось оружие, нужно проделать тоже самое, только после строки [generic_sell] Метод я проверял, вроде как работает. Чтобы после покупки персонаж не выкидывал купленное оружие(а также чтобы подбирал его с земли), в файле gamedata\config\creatures\m_stalker.ltx строку can_select_items = off меняем на can_select_items = on и строку use_single_item_rule = on меняем на use_single_item_rule = off .
- респавн НПС:
Подскажите пожалуйста, как увеличить время между респавном нпс ? А то при установке АМК 1.4 вроде выбираю 24-32 часа, а неписи спавнятся гораздо чаще, как в оригинале. В 1.3.1 всё работало корректно.
gamedata\scripts\se_repawn.scripts
idle_time:setHMSms( 0, 0, 0, math.random(self.idle_spawn_min, self.idle_spawn_max)*1000) исправить на idle_time:setHMSms( math.random(Первое число, Второе число), 0, 0,
math.random(self.idle_spawn_min, self.idle_spawn_max)*1000) где первое и второе числа задают диапазон случайной переменной в часах отвечающей за респаун.
- Вооружение НПС:
Кто-рибудь ответьте пожалуйста на вопрос: если перевооружить NPC на всей локации, при респавне новые NPC тоже будут с новым оружием или нет?
Нет. Для этого надо править
...\S.T.A.L.K.E.R\gamedata\config\gameplay\character_desc_simulation.xml
Из него берутся респаунившиеся неписи. В АМК этот файл не используется, надо брать из .db архива.
- Спавн НПС:
И еще, если я хочу привязать свой спаун к заходу на локацию, например зашел гг на локацию кордон и чтобы нужные мне неписи спавнились каждый раз при заходе на кордон. Где мне нужно создать инфопоршень?
По поводу спавна... При загрузке уровня происходит спавн актёра и перевод его в онлайн, вызывается function
actor_binder:net_spawn(data) (файл bind_stalker), соответственно, поместить сюда вызов вашей функции спавна, в которой перед спавном предмета проверять имя локации: if level == "l01_escape" then
... таким образом при каждом заходе будет спавн.
- Как поменять плату за проход под мостом на Кордоне:
Как поменять плату за проход под мостом на Кордоне:
gamedata.scripts.escape_dialog.script
Почти в самом конце функции has_soldiers_bribe и give_soldiers_bribe, увеличил 500 до 5000.
| |
|