igor822605 22 Опубликовано 2 Ноября 2009 Поделиться Опубликовано 2 Ноября 2009 (изменено) Не получается прописать болт в прадажу. Обьясните по чему. Прописывал бороде [trader] buy_condition = {+zat_b30_sultan_loose} buy_tier_2, trade_generic_buy sell_condition = trade_generic_sell buy_supplies = {=wealthy_functor +zat_b30_sultan_loose} supplies_tier_4, {=wealthy_functor +zat_b29_exclusive_conditions} supplies_tier_3, {+zat_b30_sultan_loose} supplies_tier_3, {+zat_b29_exclusive_conditions} supplies_tier_2, supplies_start [trade_generic_buy] ;Артефакты af_cristall = 1, 0.6 af_fireball = 1, 0.6 af_dummy_glassbeads = 1, 0.6 af_eye = 1, 0.6 af_fire = 1, 0.6 af_medusa = 1, 0.6 af_cristall_flower = 1, 0.6 af_night_star = 1, 0.6 af_vyvert = 1, 0.6 af_gravi = 1, 0.6 af_gold_fish = 1, 0.6 af_blood = 1, 0.6 af_mincer_meat = 1, 0.6 af_soul = 1, 0.6 af_fuzz_kolobok = 1, 0.6 af_baloon = 1, 0.6 af_glass = 1, 0.6 af_electra_sparkler = 1, 0.6 af_electra_flash = 1, 0.6 af_electra_moonlight = 1, 0.6 af_dummy_battery = 1, 0.6 af_dummy_dummy = 1, 0.6 af_ice = 1, 0.6 ;Аммуниция ammo_9x18_fmj ;NO TRADE ammo_9x18_pmm ;NO TRADE ammo_9x19_pbp ;NO TRADE ammo_9x19_fmj ;NO TRADE ammo_11.43x23_hydro ;NO TRADE ammo_11.43x23_fmj ;NO TRADE ammo_12x70_buck ;NO TRADE ammo_12x76_zhekan ;NO TRADE ammo_5.45x39_ap ;NO TRADE ammo_5.45x39_fmj ;NO TRADE ammo_9x39_ap ;NO TRADE ammo_9x39_pab9 ;NO TRADE ammo_5.56x45_ss190 ;NO TRADE ammo_5.56x45_ap ;NO TRADE ammo_7.62x54_7h1 ;NO TRADE ammo_og-7b ;NO TRADE ammo_vog-25 ;NO TRADE grenade_f1 ;NO TRADE grenade_rgd5 ;NO TRADE ammo_m209 ;NO TRADE ammo_pkm_100 ;NO TRADE ;Оружие wpn_pm ;NO TRADE wpn_pb ;NO TRADE wpn_fort ;NO TRADE wpn_hpsa ;NO TRADE wpn_beretta ;NO TRADE wpn_walther ;NO TRADE wpn_sig220 ;NO TRADE wpn_colt1911 ;NO TRADE wpn_usp ;NO TRADE wpn_desert_eagle ;NO TRADE wpn_bm16 ;NO TRADE wpn_toz34 ;NO TRADE wpn_wincheaster1300 ;NO TRADE wpn_spas12 ;NO TRADE wpn_protecta ;NO TRADE wpn_ak74u ;NO TRADE wpn_mp5 ;NO TRADE wpn_ak74 ;NO TRADE wpn_abakan ;NO TRADE wpn_l85 ;NO TRADE wpn_lr300 ;NO TRADE wpn_sig550 ;NO TRADE wpn_groza ;NO TRADE wpn_val ;NO TRADE wpn_vintorez ;NO TRADE wpn_svu ;NO TRADE wpn_svd ;NO TRADE wpn_rg-6 ;NO TRADE wpn_rpg7 ;NO TRADE wpn_g36 ;NO TRADE wpn_fn2000 ;NO TRADE wpn_pkm ;NO TRADE ;ADDONS wpn_addon_scope ;NO TRADE wpn_addon_scope_x2.7 ;NO TRADE wpn_addon_scope_detector ;NO TRADE wpn_addon_scope_night ;NO TRADE wpn_addon_scope_susat ;NO TRADE wpn_addon_scope_susat_x1.6 ;NO TRADE wpn_addon_scope_susat_custom ;NO TRADE wpn_addon_scope_susat_dusk ;NO TRADE wpn_addon_scope_susat_night ;NO TRADE wpn_addon_silencer ;NO TRADE wpn_addon_grenade_launcher ;NO TRADE wpn_addon_grenade_launcher_m203 ;NO TRADE ;Броники novice_outfit ;NO TRADE specops_outfit ;NO TRADE military_outfit ;NO TRADE stalker_outfit ;NO TRADE scientific_outfit ;NO TRADE exo_outfit ;NO TRADE svoboda_light_outfit ;NO TRADE svoboda_heavy_outfit ;NO TRADE cs_heavy_outfit ;NO TRADE dolg_outfit ;NO TRADE dolg_heavy_outfit ;NO TRADE ;Шлемы helm_respirator ;NO TRADE helm_hardhat ;NO TRADE helm_protective ;NO TRADE helm_tactic ;NO TRADE helm_battle ;NO TRADE ;Медикаменты bandage ;NO TRADE medkit ;NO TRADE medkit_scientic ;NO TRADE medkit_army ;NO TRADE antirad ;NO TRADE ;Бустеры drug_booster ;NO TRADE drug_coagulant ;NO TRADE drug_psy_blockade ;NO TRADE drug_antidot ;NO TRADE drug_radioprotector ;NO TRADE drug_anabiotic ;NO TRADE ;Еда bread = 0.6, 0.3 kolbasa = 0.6, 0.3 conserva = 0.6, 0.3 vodka = 0.6, 0.3 energy_drink = 0.6, 0.3 ;Предметы device_torch ;NO TRADE detector_simple ;NO TRADE detector_advanced ;NO TRADE detector_elite ;NO TRADE detector_scientific ;NO TRADE device_pda ;NO TRADE hand_radio ;NO TRADE guitar_a ;NO TRADE harmonica_a ;NO TRADE anomaly_scaner ;NO TRADE bolt = 0.7, 0.7 ;Квестовые предметы jup_a9_conservation_info ;NO TRADE jup_a9_power_info ;NO TRADE jup_a9_way_info ;NO TRADE jup_a9_evacuation_info ;NO TRADE jup_a9_meeting_info ;NO TRADE jup_a9_losses_info ;NO TRADE jup_a9_delivery_info ;NO TRADE jup_b10_ufo_memory ;NO TRADE jup_b10_ufo_memory_2 ;NO TRADE jup_b10_notes_01 ;NO TRADE jup_b10_notes_02 ;NO TRADE jup_b10_notes_03 ;NO TRADE jup_b205_sokolov_note ;NO TRADE jup_b206_plant ;NO TRADE jup_b209_monster_scanner ;NO TRADE jup_b200_tech_materials_wire ;NO TRADE jup_b200_tech_materials_acetone ;NO TRADE jup_b200_tech_materials_textolite ;NO TRADE jup_b200_tech_materials_transistor ;NO TRADE jup_b200_tech_materials_capacitor ;NO TRADE jup_b9_blackbox ;NO TRADE jup_b32_scanner_device ;NO TRADE jup_b46_duty_founder_pda ;NO TRADE jup_b207_merc_pda_with_contract ;NO TRADE jup_b47_jupiter_products_info ;NO TRADE toolkit_2 ;NO TRADE toolkit_1 ;NO TRADE zat_b33_safe_container ;NO TRADE zat_b57_gas ;NO TRADE zat_b12_key_1 ;NO TRADE zat_b12_key_2 ;NO TRADE zat_b12_documents_1 ;NO TRADE zat_b12_documents_2 ;NO TRADE device_pda_port_bandit_leader ;NO TRADE device_flash_snag ;NO TRADE jup_b202_bandit_pda ;NO TRADE zat_b40_notebook ;NO TRADE zat_b40_pda_1 ;NO TRADE zat_b40_pda_2 ;NO TRADE device_pda_zat_b5_dealer ;NO TRADE zat_b20_noah_pda ;NO TRADE zat_a23_access_card ;NO TRADE zat_a23_gauss_rifle_docs ;NO TRADE zat_b44_barge_pda ;NO TRADE zat_b39_joker_pda ;NO TRADE zat_b22_medic_pda ;NO TRADE toolkit_3 ;NO TRADE pri_b35_lab_x8_key ;NO TRADE pri_b306_envoy_pda ;NO TRADE pri_b36_monolith_hiding_place_pda ;NO TRADE pri_a25_explosive_charge_item ;NO TRADE pri_a19_american_experiment_info ;NO TRADE pri_a19_lab_x16_info ;NO TRADE pri_a19_lab_x10_info ;NO TRADE pri_a19_lab_x7_info ;NO TRADE pri_a19_lab_x18_info ;NO TRADE zat_a23_labx8_key ;NO TRADE lx8_service_instruction ;NO TRADE af_compass ;NO TRADE af_oasis_heart ;NO TRADE jup_b1_half_artifact ;NO TRADE af_quest_b14_twisted ;NO TRADE ;Уникальные предметы wpn_pm_actor ;NO TRADE wpn_sig550_luckygun ;NO TRADE wpn_pkm_zulus ;NO TRADE wpn_wincheaster1300_trapper ;NO TRADE wpn_desert_eagle_nimble ;NO TRADE wpn_groza_nimble ;NO TRADE wpn_mp5_nimble ;NO TRADE wpn_sig220_nimble ;NO TRADE wpn_spas12_nimble ;NO TRADE wpn_svd_nimble ;NO TRADE wpn_svu_nimble ;NO TRADE wpn_usp_nimble ;NO TRADE wpn_vintorez_nimble ;NO TRADE wpn_g36_nimble ;NO TRADE wpn_fn2000_nimble ;NO TRADE wpn_protecta_nimble ;NO TRADE stalker_outfit_barge ;NO TRADE helm_respirator_joker ;NO TRADE helm_hardhat_snag ;NO TRADE wpn_ak74u_snag ;NO TRADE wpn_fort_snag ;NO TRADE [buy_tier_2]:trade_generic_buy ;Артефакты af_cristall = 1.2, 0.6 af_fireball = 1.2, 0.6 af_dummy_glassbeads = 1.2, 0.6 af_eye = 1.2, 0.6 af_fire = 1.2, 0.6 af_medusa = 1.2, 0.6 af_cristall_flower = 1.2, 0.6 af_night_star = 1.2, 0.6 af_vyvert = 1.2, 0.6 af_gravi = 1.2, 0.6 af_gold_fish = 1.2, 0.6 af_blood = 1.2, 0.6 af_mincer_meat = 1.2, 0.6 af_soul = 1.2, 0.6 af_fuzz_kolobok = 1.2, 0.6 af_baloon = 1.2, 0.6 af_glass = 1.2, 0.6 af_electra_sparkler = 1.2, 0.6 af_electra_flash = 1.2, 0.6 af_electra_moonlight = 1.2, 0.6 af_dummy_battery = 1.2, 0.6 af_dummy_dummy = 1.2, 0.6 af_ice = 1.2, 0.6 [trade_generic_sell] ;Артефакты af_cristall = 1.2, 2 af_fireball = 1.2, 2 af_dummy_glassbeads = 1.2, 2 af_eye ;NO TRADE af_fire ;NO TRADE af_medusa = 1.2, 2 af_cristall_flower = 1.2, 2 af_night_star = 1.2, 2 af_vyvert = 1.2, 2 af_gravi ;NO TRADE af_gold_fish ;NO TRADE af_blood = 1.2, 2 af_mincer_meat = 1.2, 2 af_soul = 1.2, 2 af_fuzz_kolobok = 1.2, 2 af_baloon ;NO TRADE af_glass ;NO TRADE af_electra_sparkler = 1.2, 2 af_electra_flash = 1.2, 2 af_electra_moonlight = 1.2, 2 af_dummy_battery = 1.2, 2 af_dummy_dummy ;NO TRADE af_ice ;NO TRADE ;Аммуниция ammo_9x18_fmj ;NO TRADE ammo_9x18_pmm ;NO TRADE ammo_9x19_pbp ;NO TRADE ammo_9x19_fmj ;NO TRADE ammo_11.43x23_hydro ;NO TRADE ammo_11.43x23_fmj ;NO TRADE ammo_12x70_buck ;NO TRADE ammo_12x76_zhekan ;NO TRADE ammo_5.45x39_ap ;NO TRADE ammo_5.45x39_fmj ;NO TRADE ammo_9x39_ap ;NO TRADE ammo_9x39_pab9 ;NO TRADE ammo_5.56x45_ss190 ;NO TRADE ammo_5.56x45_ap ;NO TRADE ammo_7.62x54_7h1 ;NO TRADE ammo_og-7b ;NO TRADE ammo_vog-25 ;NO TRADE grenade_f1 ;NO TRADE grenade_rgd5 ;NO TRADE ammo_m209 ;NO TRADE ammo_gauss ;NO TRADE ammo_gauss_cardan ;NO TRADE ;Оружие wpn_pm ;NO TRADE wpn_pb ;NO TRADE wpn_fort ;NO TRADE wpn_hpsa ;NO TRADE wpn_beretta ;NO TRADE wpn_walther ;NO TRADE wpn_sig220 ;NO TRADE wpn_colt1911 ;NO TRADE wpn_usp ;NO TRADE wpn_desert_eagle ;NO TRADE wpn_bm16 ;NO TRADE wpn_toz34 ;NO TRADE wpn_wincheaster1300 ;NO TRADE wpn_spas12 ;NO TRADE wpn_protecta ;NO TRADE wpn_ak74u ;NO TRADE wpn_mp5 ;NO TRADE wpn_ak74 ;NO TRADE wpn_abakan ;NO TRADE wpn_l85 ;NO TRADE wpn_lr300 ;NO TRADE wpn_sig550 ;NO TRADE wpn_groza ;NO TRADE wpn_val ;NO TRADE wpn_vintorez ;NO TRADE wpn_svu ;NO TRADE wpn_svd ;NO TRADE wpn_rg-6 ;NO TRADE wpn_rpg7 ;NO TRADE wpn_g36 ;NO TRADE wpn_fn2000 ;NO TRADE ;ADDONS wpn_addon_scope ;NO TRADE wpn_addon_scope_x2.7 ;NO TRADE wpn_addon_scope_detector ;NO TRADE wpn_addon_scope_night ;NO TRADE wpn_addon_scope_susat ;NO TRADE wpn_addon_scope_susat_x1.6 ;NO TRADE wpn_addon_scope_susat_custom ;NO TRADE wpn_addon_scope_susat_dusk ;NO TRADE wpn_addon_scope_susat_night ;NO TRADE wpn_addon_silencer ;NO TRADE wpn_addon_grenade_launcher ;NO TRADE wpn_addon_grenade_launcher_m203 ;NO TRADE ;Броники novice_outfit ;NO TRADE specops_outfit ;NO TRADE military_outfit ;NO TRADE stalker_outfit ;NO TRADE scientific_outfit ;NO TRADE exo_outfit ;NO TRADE svoboda_light_outfit ;NO TRADE svoboda_heavy_outfit ;NO TRADE cs_heavy_outfit ;NO TRADE dolg_outfit ;NO TRADE dolg_heavy_outfit ;NO TRADE ;Шлемы helm_respirator ;NO TRADE helm_hardhat ;NO TRADE helm_protective ;NO TRADE helm_tactic ;NO TRADE helm_battle ;NO TRADE ;Медикаменты bandage ;NO TRADE medkit ;NO TRADE medkit_scientic ;NO TRADE medkit_army ;NO TRADE antirad ;NO TRADE ;Бустеры drug_booster ;NO TRADE drug_coagulant ;NO TRADE drug_psy_blockade ;NO TRADE drug_antidot ;NO TRADE drug_radioprotector ;NO TRADE drug_anabiotic ;NO TRADE ;Еда bread = 1, 2 kolbasa = 1, 2 conserva = 1, 2 vodka = 1, 2 energy_drink = 1, 2 ;Предметы device_torch ;NO TRADE detector_simple ;NO TRADE detector_advanced ;NO TRADE detector_elite ;NO TRADE detector_scientific ;NO TRADE device_pda ;NO TRADE guitar_a ;NO TRADE harmonica_a ;NO TRADE anomaly_scaner ;NO TRADE bolt = 1.7, 2.2 ;Квестовые предметы jup_a9_conservation_info ;NO TRADE jup_a9_power_info ;NO TRADE jup_a9_way_info ;NO TRADE jup_a9_evacuation_info ;NO TRADE jup_a9_meeting_info ;NO TRADE jup_a9_losses_info ;NO TRADE jup_a9_delivery_info ;NO TRADE jup_b10_ufo_memory ;NO TRADE jup_b10_ufo_memory_2 ;NO TRADE jup_b10_notes_01 ;NO TRADE jup_b10_notes_02 ;NO TRADE jup_b10_notes_03 ;NO TRADE jup_b205_sokolov_note ;NO TRADE jup_b206_plant ;NO TRADE jup_b209_monster_scanner ;NO TRADE jup_b200_tech_materials_wire ;NO TRADE jup_b200_tech_materials_acetone ;NO TRADE jup_b200_tech_materials_textolite ;NO TRADE jup_b200_tech_materials_transistor ;NO TRADE jup_b200_tech_materials_capacitor ;NO TRADE jup_b9_blackbox ;NO TRADE jup_b32_scanner_device ;NO TRADE jup_b46_duty_founder_pda ;NO TRADE jup_b207_merc_pda_with_contract ;NO TRADE jup_b47_jupiter_products_info ;NO TRADE toolkit_2 ;NO TRADE toolkit_1 ;NO TRADE zat_b33_safe_container ;NO TRADE zat_b57_gas ;NO TRADE zat_b12_key_1 ;NO TRADE zat_b12_key_2 ;NO TRADE zat_b12_documents_1 ;NO TRADE zat_b12_documents_2 ;NO TRADE device_pda_port_bandit_leader ;NO TRADE device_flash_snag ;NO TRADE jup_b202_bandit_pda ;NO TRADE zat_b40_notebook ;NO TRADE zat_b40_pda_1 ;NO TRADE zat_b40_pda_2 ;NO TRADE device_pda_zat_b5_dealer ;NO TRADE zat_b20_noah_pda ;NO TRADE zat_a23_access_card ;NO TRADE zat_a23_gauss_rifle_docs ;NO TRADE zat_b44_barge_pda ;NO TRADE zat_b39_joker_pda ;NO TRADE zat_b22_medic_pda ;NO TRADE toolkit_3 ;NO TRADE pri_b35_lab_x8_key ;NO TRADE pri_b306_envoy_pda ;NO TRADE pri_b36_monolith_hiding_place_pda ;NO TRADE pri_a25_explosive_charge_item ;NO TRADE pri_a19_american_experiment_info ;NO TRADE pri_a19_lab_x16_info ;NO TRADE pri_a19_lab_x10_info ;NO TRADE pri_a19_lab_x7_info ;NO TRADE pri_a19_lab_x18_info ;NO TRADE zat_a23_labx8_key ;NO TRADE lx8_service_instruction ;NO TRADE af_compass ;NO TRADE af_oasis_heart ;NO TRADE jup_b1_half_artifact ;NO TRADE af_quest_b14_twisted ;NO TRADE ;Уникальные предметы [supplies_start] ;Еда bread = 15, 0.8 kolbasa = 15, 0.8 conserva = 15, 0.8 vodka = 15, 0.8 energy_drink = 15, 0.8 bolt = 15, 0.8 [supplies_tier_2]:supplies_start af_cristall = 1, 0.4 af_dummy_glassbeads = 1, 0.4 af_medusa = 1, 0.4 af_cristall_flower = 1, 0.4 af_night_star = 1, 0.4 af_blood = 1, 0.4 af_soul = 1, 0.4 af_fuzz_kolobok = 1, 0.4 af_electra_sparkler = 1, 0.4 [supplies_tier_3]:supplies_start af_cristall = 2, 0.4 af_dummy_glassbeads = 2, 0.4 af_medusa = 2, 0.4 af_cristall_flower = 2, 0.4 af_night_star = 2, 0.4 af_blood = 2, 0.4 af_soul = 2, 0.4 af_fuzz_kolobok = 2, 0.4 af_electra_sparkler = 2, 0.4 af_fireball = 1, 0.4 af_vyvert = 1, 0.4 af_mincer_meat = 1, 0.4 af_electra_flash = 1, 0.4 af_electra_moonlight = 1, 0.4 af_dummy_battery = 1, 0.4 [supplies_tier_4]:supplies_start af_cristall = 3, 0.4 af_dummy_glassbeads = 3, 0.4 af_medusa = 3, 0.4 af_cristall_flower = 3, 0.4 af_night_star = 3, 0.4 af_blood = 3, 0.4 af_soul = 3, 0.4 af_fuzz_kolobok = 3, 0.4 af_electra_sparkler = 3, 0.4 af_fireball = 2, 0.4 af_vyvert = 2, 0.4 af_mincer_meat = 2, 0.4 af_electra_flash = 2, 0.4 af_electra_moonlight = 2, 0.4 af_dummy_battery = 2, 0.4 Cтрока в конфиге оружия: scope_zoom_factor = 90 степень приближения худа при прицеливании -чем больше значение -тем меньше зум. [ЯР], Покажи как. В ЛС. Ок? Изменено 2 Ноября 2009 пользователем igor822605 Ссылка на комментарий
Guzerus 0 Опубликовано 2 Ноября 2009 Поделиться Опубликовано 2 Ноября 2009 Небольшой вопрос. Смотрите,я хочу к ОНС прикрутить Death Zone. Как я понял,чтобы прикрутить только погоду,надо просто перенести из DZ папку weathers. Правильно? А то я просто накатил поверх,но у некоторых вылета при накатывании,вот я и хочу разобраться. Мой ник читается гузерус. Ссылка на комментарий
n6260 150 Опубликовано 2 Ноября 2009 Поделиться Опубликовано 2 Ноября 2009 [ЯР] - точность так же как в ТЧ - раздел дисперсии, угловых разбросов и отдачи в конфиге оружия. Зум - то же самое - строку "зум_фактор" никто не отменял. Игорь: 1. У болта класс "болт". 2. У него в конфиге может быть запрет к видимости в инвентаре. 3. Скорее всего неправильно прописал. Или он уже прописан как запрещенный к продаже. З.Ы. Конфиги болта не смотрел, и твой спойлер тоже (ты бы еще пару файлов туда вставил бы ) не охота искать строки с болтом. Ты бы их выделил чтоль... Гузерус - смотри на предмет пересекающихся файлов и совмещай их ручками в блокноте. Если пересекающихся файлов по погоде нет - по идее вылетов быть не должно. Проверить можно только путем эксперимента. 256 символов Ссылка на комментарий
monk 2 859 Опубликовано 2 Ноября 2009 Поделиться Опубликовано 2 Ноября 2009 Доброго времени. Камрады, пожалуйста выложите дефолтный xr_kamp.script из распакованого ЗП. Спасибо. Раньше и меня вела дорога приключений, а потом вышел S.T.A.K.E.R 2 Ссылка на комментарий
igor822605 22 Опубликовано 2 Ноября 2009 Поделиться Опубликовано 2 Ноября 2009 (изменено) ---------------------------------------------------------------------------------------------------------------------- -- Схема лагерь. Чудак(и) у костра. -- автор: Диденко Руслан (Stohe) -- TODO: ---------------------------------------------------------------------------------------------------------------------- --function printf() --end kamps = {} kamp_stalkers = {} -- могут ли сталкеры в лагере юзаться игроком. -- Объявления итераторов local k,v,kk,vv = 0,0,0,0 --------------------------------------------------------------------------------------------------------------------- --Evaluators ---------------------------------------------------------------------------------------------------------------------- --' Условие завершения скрипта class "evaluator_kamp_end" (property_evaluator) function evaluator_kamp_end:__init(name, storage) super (nil, name) self.a = storage end function evaluator_kamp_end:evaluate() return not xr_logic.is_active(self.object, self.a) end --' Находимся ли мы на заданной позиции class "evaluator_on_position" (property_evaluator) function evaluator_on_position:__init(name, storage) super (nil, name) self.a = storage end function evaluator_on_position:evaluate() if self.object:level_vertex_id() == self.a.pos_vertex then return true end return false end ---------------------------------------------------------------------------------------------------------------------- --Actions ---------------------------------------------------------------------------------------------------------------------- --' Идет в заданную область class "action_go_position" (action_base) function action_go_position:__init (npc_name,action_name,storage) super (nil,action_name) self.a = storage end function action_go_position:initialize() action_base.initialize(self) -- self.object:set_node_evaluator() -- self.object:set_path_evaluator() self.object:set_desired_position() self.object:set_desired_direction() self.a.pos_vertex = nil self.a.npc_position_num = nil self.a.signals = {} end function action_go_position:execute () action_base.execute (self) -- Спрашиваем где сидеть local tmp_pos_vertex, npc_position_num = kamps[self.a.center_point]:getDestVertex(self.object, self.a.radius) if self.a.npc_position_num ~= npc_position_num then self.a.npc_position_num = npc_position_num self.a.pos_vertex = tmp_pos_vertex --' Определяем куда смотреть. self.a.pp = patrol(self.a.center_point):point(0) local dir = vector():set(math.random(-1,1), 0, math.random(-1,1)) dir:normalize() local delta_dist = math.random(0,0.5) self.a.pp.x = self.a.pp.x + dir.x * delta_dist self.a.pp.z = self.a.pp.z + dir.z * delta_dist self.object:set_dest_level_vertex_id(self.a.pos_vertex) --printf("vertex_position") local desired_direction = vector():sub(self.a.pp,level.vertex_position(self.a.pos_vertex)) --printf("desired_direction = %s", vec_to_str(desired_direction)) if desired_direction ~= nil and not utils.vector_cmp(desired_direction, vector():set(0,0,0)) then desired_direction:normalize() self.object:set_desired_direction(desired_direction) end self.object:set_path_type(game_object.level_path) state_mgr.set_state(self.object, self.a.def_state_moving) end end function action_go_position:finalize () action_base.finalize (self) end --' Просто сидит и втыкает class "action_wait" (action_base) function action_wait:__init (npc_name,action_name,storage) super (nil,action_name) self.a = storage end function action_wait:initialize() action_base.initialize(self) -- self.object:set_node_evaluator() -- self.object:set_path_evaluator() self.object:set_desired_position() self.object:set_desired_direction() kamps[self.a.center_point]:increasePops(self.object) end function action_wait:activate_scheme() self.a.signals = {} end function action_wait:execute() action_base.execute (self) --' повернуть его лицом к центру state_mgr.set_state(self.object, "sit", nil, nil, {look_position = self.a.pp}) end function action_wait:finalize() kamps[self.a.center_point]:decreasePops(self.object) action_base.finalize (self) end function action_wait:deactivate(npc) kamps[self.a.center_point]:removeNpc(npc) end function action_wait:death_callback(npc) kamps[self.a.center_point]:removeNpc(npc) end function action_wait:net_destroy(npc) kamps[self.a.center_point]:removeNpc(npc) end class "CKampManager" function CKampManager:__init(path) self.kamp_name = path self.patrol = patrol(path) --self.center = self.patrol:level_vertex_id(0) self.position = {{dir = vector():set(1, 0, 0), used = nil}, {dir = vector():set(1, 0, 1), used = nil}, {dir = vector():set(0, 0, 1), used = nil}, {dir = vector():set(-1, 0, 1), used = nil}, {dir = vector():set(-1, 0, 0), used = nil}, {dir = vector():set(-1, 0, -1),used = nil}, {dir = vector():set(0, 0, -1), used = nil}, {dir = vector():set(1, 0, -1), used = nil}} self.npc = {} self.population = 0 self.kamp_state = "idle" -- Где то здесь распарсим патрульный путь и проапдейтим вектор позиций. -- 0 вершина - центр лагеря. -- 1 флаг - сектор занят, в поинте можно сидеть. -- 2 флаг - сектор занят, в поинте нельзя сидеть. --[[ for k = 1, self.patrol:count() - 1 do -- если есть 1 или 2 флажок - отметить сектор как занятый if self.patrol:flag(k,1) or self.patrol:flag(k,2) then -- отметить сектор как занятый for key,value in pairs(self.position) do dir = vector():sub(level.vertex_position(self.patrol:level_vertex_id(k)), level.vertex_position(self.center)) if value.dir then yaw = yaw_degree(dir, value.dir) if yaw <=23 then --'printf("KAMP node[%s], sector[%s,] yaw[%s]", k, key, yaw_degree(dir, value.dir)) value.used = -1 break end end end end -- если есть 1 флажок - создать место для сидения в точке пути if self.patrol:flag(k,1) then -- создать точку для сидения table.insert(self.position, {vertex = self.patrol:level_vertex_id(k)}) end end ]] --print_table(self.position) --Таблица соответствий состояния лагеря и допустимых анимаций и звуков. self.avail_state = {idle = { directed = { "wait", "sit", "sit_ass", "sit_knee", "eat_kolbasa", "eat_vodka", "eat_energy", "eat_bread", "trans"}}, pre_harmonica = { directed = { "wait_harmonica"}, undirected = { "wait", "sit", "sit_ass", "sit_knee", "eat_kolbasa", "eat_vodka", "eat_energy", "eat_bread", "trans"}}, harmonica = { directed = { "play_harmonica"}, undirected = { "wait", "sit", "sit_ass", "sit_knee", "eat_kolbasa", "eat_vodka", "eat_energy", "eat_bread", "trans"}}, post_harmonica = { directed = { "wait_harmonica"}, undirected = { "wait", "sit", "sit_ass", "sit_knee", "eat_kolbasa", "eat_vodka", "eat_energy", "eat_bread", "trans"}}, pre_guitar = { directed = { "wait_guitar"}, undirected = { "wait", "sit", "sit_ass", "sit_knee", "eat_kolbasa", "eat_vodka", "eat_energy", "eat_bread", "trans"}}, guitar = { directed = { "play_guitar"}, undirected = { "wait", "sit", "sit_ass", "sit_knee", "eat_kolbasa", "eat_vodka", "eat_energy", "eat_bread", "trans"}}, post_guitar = { directed = { "wait_guitar"}, undirected = { "wait", "sit", "sit_ass", "sit_knee", "eat_kolbasa", "eat_vodka", "eat_energy", "eat_bread", "trans"}}, story = { directed = { "declarate"}, undirected = { "wait", "sit", "sit_ass", "sit_knee", "eat_kolbasa", "eat_vodka", "eat_energy", "eat_bread", "trans"}}} self.avail_sound = {idle = { directed = "idle"}, pre_harmonica = { directed = "pre_harmonica", undirected = ""}, harmonica = { directed = "", undirected = ""}, post_harmonica = { directed = "", undirected = "reac_harmonica"}, pre_guitar = { directed = "pre_guitar", undirected = ""}, guitar = { directed = "", undirected = ""}, post_guitar = { directed = "", undirected = "reac_guitar"}, story = { directed = "", undirected = ""}} -- Таблица таймаутов по состоянию. Если состояние установилось, то некоторое время оно не может быт изменено. self.timeout = {idle = { min = 30000 }, pre_harmonica = { min = 3000 }, harmonica = { min = 5000, soundstart = true }, post_harmonica = { min = 3000 }, pre_guitar = { min = 3000 }, guitar = { min = 5000, soundstart = true }, post_guitar = { min = 3000 }, story = { min = 1000, soundstart = true }} -- Таблица глобальных состояний лагеря. self.kamp_states = { idle = true, pre_harmonica = false, harmonica = false, post_harmonica = false, pre_guitar = false, guitar = false, post_guitar = false, story = true } -- Таблица допустимых переходов между состояниями с вероятностями. self.trans_kamp = { idle = { idle = 0, pre_harmonica = 0, pre_guitar = 50, story = 50}, pre_harmonica = { harmonica = 100 }, harmonica = { post_harmonica = 100 }, post_harmonica = { idle = 70, harmonica = 30 }, pre_guitar = { guitar = 100 }, guitar = { post_guitar = 100 }, post_guitar = { idle = 70, guitar = 30 }, story = { idle = 100 }} -- Хранилище для режиссера лагеря. Режиссерем является сталкер, затеявший необычное поведение self.director = nil --' Для теста создаем объект истории self.sound_manager = sound_manager.get_sound_manager("kamp_"..path) end function CKampManager:selectPosition(npc_id) -- создаем список доступных позиций --printf("KAMP. [%s] called select position", npc_id) local free = {} for k,v in pairs(self.position) do if v.used == nil then table.insert(free, k) end end --' затем из доступных позиций выбрать рандомно одну. if #free > 0 then --printf("KAMP [%s] free node > 0", npc_id) local rr = math.random(#free) self.position[free[rr]].used = npc_id self.npc[npc_id].position = free[rr] end --printf("KAMP [%s] npc table", npc_id) --print_table(self.npc) --printf("KAMP [%s] position table", npc_id) --print_table(self.position) end function CKampManager:getDestVertex(npc, radius) local npc_id = npc:id() --printf("get dest Vertex called [%s]", npc_id) if self.npc[npc_id].position == nil then --printf("-------debug_info------------- %s", self.kamp_name) --print_table(self.npc) --printf("-------debug_info------------- %s", self.kamp_name) --print_table(self.position) --printf("-------debug_info------------- %s", self.kamp_name) abort("get dest Vertex: nil [%s]", npc_id) return nil end -- высчитываем вертех по направлению -- Берем позицию в заданном направлении, затем берем ниарест точку от нее. local pp = self.patrol:point(0) local dir = self.position[self.npc[npc_id].position].dir -- Считаем рандомное отклонение направления. dir.x = dir.x + math.random(-1,1)/5 dir.z = dir.z + math.random(-1,1)/5 dir:normalize() radius = radius + math.random(-0.3,0.3) local dest_vertex = 4294967295 while dest_vertex == 4294967295 do local tmp_pos = vector():set(0,0,0) tmp_pos.x = pp.x + dir.x * radius tmp_pos.z = pp.z + dir.z * radius tmp_pos.y = pp.y dest_vertex = level.vertex_id(tmp_pos) if dest_vertex == 4294967295 then if radius < 1 then abort("Invalid AI map at kamp point [%s]", self.kamp_name) else radius = radius - 0.5 end end end if not npc:accessible(dest_vertex) then --printf("vertex_position %s", tostring(dest_vertex)) local vp = level.vertex_position(dest_vertex) --printf("Nearest for npc[%s] kamp [%s] position [%s:%s:%s]", npc:name(), tostring(self.kamp_name),tostring(vp.x), tostring(vp.y), tostring(vp.z)) local nearest_vertex = npc:accessible_nearest(vp, vector():set(0,0,0)) --printf("Nearest for npc[%s] kamp [%s] position [%s:%s:%s]", npc:name(), tostring(self.kamp_name), vec_to_str(nearest_vertex)) return nearest_vertex, self.npc[npc_id].position end return dest_vertex, self.npc[npc_id].position end function CKampManager:proceedState(npc) -- Проверка на таймаут local npc_id = npc:id() local active_sound_count = npc:active_sound_count() if self.npc[npc_id].need_sound_begin == true then if active_sound_count == 0 then return else self.npc[npc_id].need_sound_begin = false end end if self.begin ~= nil and time_global() - self.begin < self.timeout[self.kamp_state].min then return end --' Если режиссер не закончил говорить - ждем конца фразы. if active_sound_count > 0 then return end --' Если начали говорить какую то историю саунд-менеджера if not self.sound_manager:is_finished() then self.sound_manager:update() return end --printf("Proceed state for [%s]", npc_id) -- Определяются допустимые в данный момент переходы. local temp = {} local max_rnd = 0 for k,v in pairs(self.trans_kamp[self.kamp_state]) do -- Определяются допустимые состояния для лагеря. if self.kamp_states[k] == true then temp[k] = v max_rnd = max_rnd + v end end -- Осуществляется рандомный взвешенный переход. if max_rnd == 0 then -- Если переходить некуда - переходим в айдл temp["idle"] = 100 max_rnd = 100 end local p = math.random(0,max_rnd) for k,v in pairs(temp) do p = p - v if p <= 0 then --printf("Selected [%s]", k) if k == "idle" then self.director = nil if self.kamp_state ~= "idle" then self.npc[npc_id].begin = nil end elseif k == "story" then self.sound_manager:set_story("test_story") self.director = npc_id self.censor = nil else self.npc[npc_id].begin = nil if self.timeout[k].soundstart == true then self.npc[npc_id].need_sound_begin = true end self.director = npc_id self.censor = nil end self.kamp_state = k self.begin = time_global() for kk,vv in pairs(self.npc) do vv.new = true end return end end end function CKampManager:proceedRole(npc, director) --printf("Proceed Role for [%s]", npc:id()) -- Определить список доступных анимаций по состоянию лагеря. -- определить список доступных анимаций по наличию предметов -- выбрать одну из них (то же самое со звуком). local states = 0 local sound = "" local state = "" local npc_id = npc:id() -- Выбирать новое состояние только раз в какое то время. if self.npc[npc_id].begin == nil or time_global() - self.npc[npc_id].begin >= self.npc[npc_id].state_idle then if director then states = self.avail_state[self.kamp_state].directed else states = self.avail_state[self.kamp_state].undirected end --' Выбираем только те анимации, которые может играть НПС. local temp = {} for k,v in pairs(states) do --printf("npc community is [%s]", character_community(npc)) --print_table(self.npc[npc_id].states) if self.npc[npc_id].states[v] == true then table.insert(temp, v) end end self.npc[npc_id].begin = time_global() state = temp[math.random(#temp)] self.npc[npc_id].state_selected = state self.npc[npc_id].state_idle = math.random(15000,20000) else state = self.npc[npc_id].state_selected end if self.kamp_state == "story" then sound = "" else if director then sound = self.avail_sound[self.kamp_state].directed else sound = self.avail_sound[self.kamp_state].undirected end end --printf("Proceed Role state [%s] sound [%s]", state, sound) return state, sound end function CKampManager:updateNpc(npc) -- Проверка что сталкер может делать, а что нет. self:checkNpcAbility(npc) -- Просим лагерь выбрать текущее состояние. Менять состояние лагеря -- имеет право только режиссер. local npc_id = npc:id() local director = self.director == nil or self.director == npc_id if director then self:proceedState(npc) end -- Говорим чудаку выбрать себе состояние для текущего состояния лагеря. local state, sound = self:proceedRole(npc, director) local substate = nil if state == "wait_harmonica" then if sound == "pre_harmonica" and self.npc[npc_id].new == true then xr_sound.set_sound_play(npc:id(), "intro_music") self.npc[npc_id].new = false end state = "harmonica" xr_kamp.kamp_stalkers[npc_id] = false elseif state == "play_harmonica" then state = "harmonica" substate = 1 xr_kamp.kamp_stalkers[npc_id] = false elseif state == "wait_guitar" then if sound == "pre_guitar" and self.npc[npc_id].new == true then xr_sound.set_sound_play(npc:id(), "intro_music") self.npc[npc_id].new = false end state = "guitar" xr_kamp.kamp_stalkers[npc_id] = false elseif state == "play_guitar" then state = "guitar" substate = 1 xr_kamp.kamp_stalkers[npc_id] = false elseif state == "declarate" then if self.npc[npc_id].new == true then self.npc[npc_id].new = false end if character_community(npc) == "monolith" then local t = math.mod(npc_id, 2) if t == 0 then state = "trans_0" else state = "trans_1" end elseif character_community(npc) == "zombied" then state = "trans_zombied" else local t = math.mod(npc_id, 3) if t == 0 then state = "sit" elseif t == 1 then state = "sit_ass" else state = "sit_knee" end end xr_kamp.kamp_stalkers[npc_id] = false elseif state == "trans" then if character_community(npc) == "monolith" then local t = math.mod(npc_id, 2) if t == 0 then state = "trans_0" else state = "trans_1" end elseif character_community(npc) == "zombied" then state = "trans_zombied" end xr_kamp.kamp_stalkers[npc_id] = false else xr_kamp.kamp_stalkers[npc_id] = true end -- Выбор реальных звуков if sound == "idle" then sound = "state" elseif sound == "reac_guitar" then sound = "reac_music" elseif sound == "reac_harmonica" then sound = "reac_music" else sound = "" end --printf("Proceed Update Npc [%s] sound [%s]", state, sound) return state, sound, substate end function CKampManager:checkNpcAbility(npc) local npc_id = npc:id() if character_community(npc) ~= "monolith" and character_community(npc) ~= "zombied" then -- есть колбасу if npc:object("kolbasa") then self.npc[npc_id].states["eat_kolbasa"] = true else self.npc[npc_id].states["eat_kolbasa"] = false end -- пить водку if npc:object("vodka") then self.npc[npc_id].states["eat_vodka"] = true else self.npc[npc_id].states["eat_vodka"] = false end -- пить енергитический напиток if npc:object("energy_drink") then self.npc[npc_id].states["eat_energy"] = true else self.npc[npc_id].states["eat_energy"] = false end -- есть хлеб if npc:object("bread") then self.npc[npc_id].states["eat_bread"] = true else self.npc[npc_id].states["eat_bread"] = false end -- играть на гармошке -- if npc:object("harmonica_a") then -- self.npc[npc_id].states["play_harmonica"] = true -- self.npc[npc_id].states["wait_harmonica"] = true -- self.kamp_states["pre_harmonica"] = true -- self.kamp_states["harmonica"] = true -- self.kamp_states["post_harmonica"] = true -- else self.npc[npc_id].states["play_harmonica"] = false self.npc[npc_id].states["wait_harmonica"] = false self.kamp_states["pre_harmonica"] = false self.kamp_states["harmonica"] = false self.kamp_states["post_harmonica"] = false -- end -- играть на гитаре -- if npc:object("guitar_a") then -- self.npc[npc_id].states["play_guitar"] = true -- self.npc[npc_id].states["wait_guitar"] = true -- self.kamp_states["pre_guitar"] = true -- self.kamp_states["guitar"] = true -- self.kamp_states["post_guitar"] = true -- else self.npc[npc_id].states["play_guitar"] = false self.npc[npc_id].states["wait_guitar"] = false self.kamp_states["pre_guitar"] = false self.kamp_states["guitar"] = false self.kamp_states["post_guitar"] = false -- end end end function CKampManager:addNpc(npc) --printf("KAMP [%s] add npc", npc:name()) if self.npc[npc:id()] ~= nil then --printf("NPC is already exist") return end if character_community(npc) == "monolith" or character_community(npc) == "zombied" then self.npc[npc:id()] = {name = npc:name(), position = nil, current = nil, speak = 0, states = { stand_wait = false, sit = false, sit_ass = false, sit_knee = false, declarate = true, eat_kolbasa = false, eat_vodka = false, eat_energy = false, eat_bread = false, trans = true, play_harmonica = false, play_guitar = false}} else self.npc[npc:id()] = {name = npc:name(), position = nil, current = nil, speak = 0, states = { stand_wait = true, sit = true, sit_ass = true, sit_knee = true, declarate = true, eat_kolbasa = false, eat_vodka = false, eat_energy = false, eat_bread = false, trans = false, play_harmonica = false, play_guitar = false}} end self:selectPosition(npc:id()) self.sound_manager:register_npc(npc:id()) end function CKampManager:removeNpc(npc) --printf("KAMP [%s] remove npc", npc:name()) -- callstack() self.sound_manager:unregister_npc(npc:id()) local npc_id = npc:id() if self.npc[npc_id] ~= nil then -- Если удаляем режиссера - необходимо форсированно перевести лагерь в идловое состояние. if self.director == npc_id then self.director = nil self.npc[npc_id].begin = nil self.censor = nil self.kamp_state = "idle" self.begin = time_global() for kk,vv in pairs(self.npc) do vv.new = true end --' xr_sound.set_sound(npc, nil) stop_play_sound(npc) end self.position[self.npc[npc_id].position].used = nil self.npc[npc_id] = nil end end function CKampManager:increasePops(npc) self.population = self.population + 1 local campfire = bind_campfire.campfire_table[self.kamp_name.."_campfire"] if self.population > 0 and campfire ~= nil and not campfire:is_on() then campfire:turn_on() end end function CKampManager:decreasePops(npc) self.population = self.population - 1 local campfire = bind_campfire.campfire_table[self.kamp_name.."_campfire"] if self.population < 1 and campfire ~= nil and campfire:is_on() then campfire:turn_off() end end ---------------------------------------------------------------------------------------------------------------------- --Kamp binder ---------------------------------------------------------------------------------------------------------------------- function add_to_binder(object, ini, scheme, section, storage) local operators = {} local properties = {} local manager = object:motivation_action_manager() properties["kamp_end"] = xr_evaluators_id.stohe_kamp_base + 1 properties["on_position"] = xr_evaluators_id.stohe_kamp_base + 2 properties["contact"] = xr_evaluators_id.stohe_meet_base + 1 operators["go_position"] = xr_actions_id.stohe_kamp_base + 1 operators["wait"] = xr_actions_id.stohe_kamp_base + 3 -- Evaluators manager:add_evaluator (properties["kamp_end"], this.evaluator_kamp_end ("kamp_end", storage, "kamp_end")) manager:add_evaluator (properties["on_position"], this.evaluator_on_position ("kamp_on_position", storage, "kamp_on_position")) -- Actions local action = this.action_wait (object:name(),"action_kamp_wait", storage) action:add_precondition (world_property(stalker_ids.property_alive, true)) action:add_precondition (world_property(stalker_ids.property_danger,false)) action:add_precondition (world_property(stalker_ids.property_enemy, false)) action:add_precondition (world_property(stalker_ids.property_anomaly,false)) xr_motivator.addCommonPrecondition(action) action:add_precondition (world_property(properties["on_position"], true)) action:add_effect (world_property(properties["kamp_end"], true)) manager:add_action (operators["wait"], action) xr_logic.subscribe_action_for_events(object, storage, action) action = this.action_go_position (object:name(),"action_go_kamp", storage) action:add_precondition (world_property(stalker_ids.property_alive, true)) action:add_precondition (world_property(stalker_ids.property_danger,false)) action:add_precondition (world_property(stalker_ids.property_enemy, false)) action:add_precondition (world_property(stalker_ids.property_anomaly,false)) xr_motivator.addCommonPrecondition(action) action:add_precondition (world_property(properties["on_position"], false)) action:add_effect (world_property(properties["on_position"], true)) manager:add_action (operators["go_position"], action) action = manager:action (xr_actions_id.alife) action:add_precondition (world_property(properties["kamp_end"], true)) end -- включение лагеря function set_scheme(npc, ini, scheme, section, gulag_name) local st = xr_logic.assign_storage_and_bind(npc, ini, scheme, section) st.logic = xr_logic.cfg_get_switch_conditions(ini, section, npc) st.center_point = utils.cfg_get_string(ini, section, "center_point", npc, true, gulag_name) st.radius = utils.cfg_get_number(ini, section, "radius", npc, false, 2) if kamps[st.center_point] == nil then kamps[st.center_point] = CKampManager(st.center_point) end kamps[st.center_point]:addNpc(npc) st.pos_vertex = nil st.def_state_moving = utils.cfg_get_string(ini, section, "def_state_moving", npc, false, "", "walk") end Изменено 2 Ноября 2009 пользователем igor822605 Ссылка на комментарий
St.Ser 0 Опубликовано 2 Ноября 2009 Поделиться Опубликовано 2 Ноября 2009 (изменено) Доброго дня - не подскажите где поковырять дабы бандиты при встречи с ГГ в него начинали не стрелять а попробовали бы с начало обшмонать.(Как допустим при выкупе Вано) Из за зоны алайфа 400 метров постоянная пальба сталкеров и бандитов уже достала. Ставить другом или нейтралом бандитов то же не хочется - это ведь бандиты. И еще как заставить неписей быстрее стрелять (они видят гг, в него целятся но не стреляют) Кстати - обратите внимание, что наконец то в игре начала работать переменная k_air_resistance!!! (раньше работала только на сетевой игре) По непонятным мне причинам там стоит почти везде 1.5 (должно от 0.4) Из за этого траектория пули чрезвычайно крутая и самая главная что пуля на расстоянии уже в 150 м теряет 70% своей убойности (допустим непись держит по кораусу на расстоянии 200 метров больше 10 пуль из АК, на 50 метров ему хватает трех) Изменено 2 Ноября 2009 пользователем St.Ser Ссылка на комментарий
Vergas 11 Опубликовано 2 Ноября 2009 Поделиться Опубликовано 2 Ноября 2009 Переделывая мед резинку под ЗП сталкнулся с такой фигней. Колбек на использование аптечки из инвентаря уже отработал. Из него поднимаю пересчет аптечек в этом самом инвентаре. Получается, что аптечка ещё там. Т.е было 4, одну использовал, считаю - 4 штуки.... Кто-нить знает, в чем тут дело? НЛС-6: У каждого своя зона _______________________________________________________________ Не ищи легких путей и не возвращайся той же дорогой Ссылка на комментарий
VlaS 0 Опубликовано 2 Ноября 2009 Поделиться Опубликовано 2 Ноября 2009 St.Ser, Кстати - обратите внимание, что наконец то в игре начала работать переменная k_air_resistance!!! (раньше работала только на сетевой игре) Обратили. Как не работала с ТЧ, так и не работает в ЗП(для каждого типа пули). Ссылка на комментарий
LinK 31 Опубликовано 2 Ноября 2009 Поделиться Опубликовано 2 Ноября 2009 Я так понял нету нормальной проги для ЗП для снятия координат с вертексами? Ссылка на комментарий
St.Ser 0 Опубликовано 2 Ноября 2009 Поделиться Опубликовано 2 Ноября 2009 (изменено) Еще одна непонятка с приоритетами у неписей. 1)Поставил себе бандитов врагами - 5000 2)Поставил неписям возможность воевать от 400 метров. Моделирую ситуацию 1)Группа бандитов 3 человека 2)Расстояние 50 метров 3)Открываю по ним огонь Их реакция!!! 1)Меня они видят 2)В меня они целятся 3)НЕ стреляют! 4)Продолжают идти по своим делам пока я их не перестреляю!!!! Моделирую ситуацию 1)Группа сталкеров 3 человека 2)Расстояние 300 метров 3)Открываю огонь на поражение Их реакция. 1)Голос внимание, Скадовск атакован! 2)Все сталкеры в радиусе 400 метров открывают по мне огонь!!! Вопрос - а как бы так сделать чтоб и бандиты так же начали по мне палить? Как бы не настраивал м_сталкер и отношения - бандиты начинают палить по ГГ только с 40 метров!! А если сделать сталкеров и бандитов врагами то друг по другу они палят с 400 метров при моих настройках!! Изменено 2 Ноября 2009 пользователем St.Ser Ссылка на комментарий
Смокер 5 Опубликовано 2 Ноября 2009 Поделиться Опубликовано 2 Ноября 2009 1.По поводу времени.В некоторых скриптах, есть ремарки о том, что"....так как течение времени ускорено в 10 раз,то пользуем такую функцию...".Точно не помню в каком, но есть. 2.По поводу координат.Это положение ГГ на локации?Если да, то на WIKI вполне рабочий скрипт дается. Ссылка на комментарий
ViRUS 2 Опубликовано 2 Ноября 2009 Поделиться Опубликовано 2 Ноября 2009 Пытался запустить ЗП с моделью из ТЧ, и при обращении к ней вылетает с ошибкой Aplication is aborting. Как можно адаптировать модели из ТЧ на ЗП? Кто сможет подредактировать модели ГГ, напишите пожалуйста мне в ЛС. Ссылка на комментарий
Shadowman 939 Опубликовано 2 Ноября 2009 Поделиться Опубликовано 2 Ноября 2009 (изменено) нету нормальной проги для ЗП для снятия координат с вертексами? LinK, Position Informer чем не устраивает? Брал, кажется, на офф. форуме. Изменено 2 Ноября 2009 пользователем Shadowman Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64 Ссылка на комментарий
Fly-n-DiE 2 Опубликовано 3 Ноября 2009 Поделиться Опубликовано 3 Ноября 2009 Вышел патч 1.6.01. В шапке темы распаковщик подходит для распаковки пропатченной игры? Ссылка на комментарий
Pihan13 9 Опубликовано 3 Ноября 2009 Поделиться Опубликовано 3 Ноября 2009 Fly-n-DiE, конечно. сам архивчик с патчем: S.T.A.L.K.E.R. - Зов Припяти\patches\xpatch_01.db Локация "Жилище Картографа" Хелп по созданию смарт террейнов Ссылка на комментарий
ZeeK 57 Опубликовано 3 Ноября 2009 Поделиться Опубликовано 3 Ноября 2009 Вопрос: как забацать музон на скадовске и янове аля бар из ТЧ и Болот из ЧН? Тут как я понимаю одними конфигами не обойтись... Возможно прописать скрипт на вкл музыки в определенных секторах? Не соответствует. N6260 Ссылка на комментарий
McDragon 8 Опубликовано 3 Ноября 2009 Поделиться Опубликовано 3 Ноября 2009 Может здесь добрые люди подскажут как ворон из ЗП убрать?(( Гафно ваша мифология. (с) Ссылка на комментарий
перегар 94 Опубликовано 3 Ноября 2009 Поделиться Опубликовано 3 Ноября 2009 YUran Это надо править не в actor.ltx а в \configs\weapons\w_.... смотри секцию [wpn_...._hud]:hud_base hands_position = hands_orientation= item_position = item_orientation = Но лучше скопировать с оригинального конфига, если он от ЧН, как будет от ТЧ я незнаю. ЗЫ у меня такая же фигня была с AWM. Все мы могли бы быть разными, если не были бы так одинаковы.Нам что водка, что пулемёт - лишь бы с ног валило. Ссылка на комментарий
sprata 0 Опубликовано 4 Ноября 2009 Поделиться Опубликовано 4 Ноября 2009 Всем привет ! Возможно ли соединить центральную часть Припяти из ТЧ и восточную из ЗП в одну большую локацию ? Было бы очень здоровски (имхо). Вот только нигде пока не встречал подобных модов. Ссылка на комментарий
K-Lex 0 Опубликовано 4 Ноября 2009 Поделиться Опубликовано 4 Ноября 2009 Возможно ли соединить центральную часть Припяти из ТЧ и восточную из ЗП в одну большую локацию ? Было бы очень здоровски (имхо). Вот только нигде пока не встречал подобных модов. Может и можно , но работы вагон и маленькая тележка ибо доделывать надо очень много, очень по разному выглядят локации, и Припять в ЧН представляет собой "коридор" улиц по которому нужно просто пробиться, а интересных мест там очень мало (про тех. сложности не говорю). Я в этом конечно не спец, но могу сказать что появление такого мода маловероятно ибо результат будет меньше затраченных усилий, имхо. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти