Clayman 104 Опубликовано 23 Мая 2014 Поделиться Опубликовано 23 Мая 2014 @stalker_grez, почитай - http://stalker-2.com.ua/articles.php?article_id=4, расписал про смарты подробней некуда. Многие вопросы отпадут сами собой. Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/270/#findComment-849953
stalker_grez 130 Опубликовано 24 Мая 2014 Поделиться Опубликовано 24 Мая 2014 @Clayman, в обычном спавне и респавне отрядов у меня всё в порядке. Не пробовал только поработать с секцией [smart_control], позже попробую по этой статье. Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/270/#findComment-850042
Clayman 104 Опубликовано 24 Мая 2014 Поделиться Опубликовано 24 Мая 2014 Там например есть описание arrive_dist =, который и определяет, с какой дистанции сквад берется под логику смарта. Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/270/#findComment-850137
stalker_grez 130 Опубликовано 24 Мая 2014 Поделиться Опубликовано 24 Мая 2014 @stalker_grez,ясно. Но я сделал, чтобы он сначала заспавнился в одном смарте, потом добежал до второго и после диалога перешел к логике во втором. Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/270/#findComment-850216
ммихаилл 1 Опубликовано 27 Мая 2014 Поделиться Опубликовано 27 Мая 2014 Можно ли прописать проверку на использования определенного оружия? То бишь: ГГ стреляет из ПМ в НПС и тот переходит на схему врага, а если ГГ стреляет из Форта, то НПС просто погибает. Вторая часть особо не важна, главное функция проверки. Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/270/#findComment-851355
Дедушка Тапок 61 Опубликовано 28 Мая 2014 Поделиться Опубликовано 28 Мая 2014 Здравствуйте форумчане! Я столкнулся с проблемой. При добавлении скриптов на убирание рук ГГ при исп. предметов у меня вылетает ошибка! [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 : ...op\bin\gamedata\scripts\smart_terrain_control.script:65: attempt to index field 'actor' (a nil value) Хотя вписывал как положено! function init (obj)xr_motivator.AddToMotivator(obj)endfunction actor_init (npc)npc:bind_object(actor_binder(npc))endlocal game_difficulty_by_num = {[0] = "gd_novice",[1] = "gd_stalker",[2] = "gd_veteran",[3] = "gd_master"}local weapon_hide = {}local primary_objects_filled = false----------------------------------------------------------------------------------------------------------------------class "actor_binder" (object_binder)----------------------------------------------------------------------------------------------------------------------function actor_binder:__init (obj) super(obj)self.bCheckStart = falseself.weather_manager = level_weathers.get_weather_manager()self.surge_manager = surge_manager.get_surge_manager()--self.actor_detector = xr_detector.actor_detector()self.last_level_name = nilself.deimos_intensity = nil-- self.actor_weapon_on_start = trueself.loaded_active_slot = 3self.loaded_slot_applied = falseself.last_detective_achievement_spawn_time = nilself.last_mutant_hunter_achievement_spawn_time = nil-- AtmosFearself.atmosfear=atmosfear.get_atmosfear()self.fallout_manager = fallout_manager.get_fallout_manager()self.psi_storm_manager = psi_storm_manager.get_psi_storm_manager()end----------------------------------------------------------------------------------------------------------------------function actor_binder:net_spawn(data)-- printf("actor net spawn")level.show_indicators()self.bCheckStart = trueself.weapon_hide = false -- спрятано или нет оружие при разговоре.self.weapon_hide_in_dialog = falseweapon_hide = {} -- устанавливаем глобальный дефолтовый флаг.if object_binder.net_spawn(self,data) == false thenreturn falseenddb.add_actor(self.object)db.actor.deimos_intensity = self.deimos_intensityself.deimos_intensity = nilif self.st.disable_input_time == nil thenlevel.enable_input()endxr_s.on_game_load() --' Distemper 03.2008 --self.weather_manager:reset()--' Загружаем настройки дропаdeath_manager.init_drop_settings()--'Устанавливаем ссылку на таскменеджерself.task_manager = task_manager.get_task_manager()self.spawn_frame = device().frameself.already_jumped = falseself.loaded = falsebenchmark.main() --' Distemper 06.2008 --return trueend----------------------------------------------------------------------------------------------------------------------function actor_binder:net_destroy()xr_sound.stop_sounds_by_id(self.object:id())local board_factions = sim_board.get_sim_board().playersif(board_factions) thenfor k,v in pairs (board_factions) doxr_sound.stop_sounds_by_id(v.id)endendif(actor_stats.remove_from_ranking~=nil)thenactor_stats.remove_from_ranking(self.object:id())endlevel.show_weapon(true)db.del_actor(self.object)self.object:set_callback(callback.inventory_info, nil)self.object:set_callback(callback.article_info, nil)self.object:set_callback(callback.on_item_take, nil)self.object:set_callback(callback.on_item_drop, nil)self.object:set_callback(callback.task_state, nil)self.object:set_callback(callback.level_border_enter, nil)self.object:set_callback(callback.level_border_exit, nil)self.object:set_callback(callback.take_item_from_box, nil)self.object:set_callback(callback.use_object, nil)log("--------->"..tostring(_G.amb_vol))log("--------->"..tostring(_G.mus_vol))if(_G.amb_vol~=0) thenget_console():execute("snd_volume_eff "..tostring(_G.amb_vol))_G.amb_vol = 0endif(_G.mus_vol~=0) thenget_console():execute("snd_volume_music "..tostring(_G.mus_vol))_G.mus_vol = 0endif sr_psy_antenna.psy_antenna thensr_psy_antenna.psy_antenna:destroy()sr_psy_antenna.psy_antenna = falseendxrs_dyn_music.finish_theme()xr_s.on_actor_destroy()object_binder.net_destroy(self)end----------------------------------------------------------------------------------------------------------------------function actor_binder:reinit()object_binder.reinit(self)local npc_id = self.object:id()db.storage[npc_id] = { }self.st = db.storage[npc_id]self.st.pstor = nilself.object:set_callback(callback.inventory_info, self.info_callback, self)self.object:set_callback(callback.on_item_take, self.on_item_take, self)self.object:set_callback(callback.on_item_drop, self.on_item_drop, self)self.object:set_callback(callback.trade_sell_buy_item, self.on_trade, self) -- for game statsself.object:set_callback(callback.task_state, self.task_callback, self)self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self)self.object:set_callback(callback.use_object, self.use_inventory_item, self)end----------------------------------------------------------------------------------------------------------------------function actor_binder:take_item_from_box(box, item)local box_name = box:name()end----------------------------------------------------------------------------------------------------------------------function actor_binder:info_callback(npc, info_id)printf("*INFO*: npc='%s' id='%s'", npc:name(), info_id)--' Сюжет-- Отметки на картеend----------------------------------------------------------------------------------------------------------------------function actor_binder:on_trade (item, sell_bye, money)if sell_bye == true thengame_stats.money_trade_update (money)elsegame_stats.money_trade_update (-money)endend----------------------------------------------------------------------------------------------------------------------function actor_binder:article_callback(npc, group, name)end----------------------------------------------------------------------------------------------------------------------function actor_binder:on_item_take (obj)printf("on_item_take [%s]", obj:name())if isArtefact(obj) thenlocal anomal_zone = bind_anomaly_zone.parent_zones_by_artefact_id[obj:id()]if anomal_zone ~= nil thenanomal_zone:on_artefact_take(obj)elsebind_anomaly_zone.artefact_ways_by_id[obj:id()] = nilendlocal artefact = obj:get_artefact()artefact:FollowByPath("NULL",0,vector():set(500,500,500))xr_statistic.inc_founded_artefacts_counter(obj:id())--[[local s_art = alife():object(obj:id())if(s_art) thenxr_statistic.inc_founded_artefacts_counter(s_art:section_name())elsexr_statistic.inc_founded_artefacts_counter()end]]endtreasure_manager.get_treasure_manager():on_item_take(obj:id())end----------------------------------------------------------------------------------------------------------------------function actor_binder:on_item_drop (obj)endfunction actor_binder:use_inventory_item(obj)if(obj) thenlocal s_obj = alife():object(obj:id())if(s_obj) and (s_obj:section_name()=="drug_anabiotic") thenxr_effects.disable_ui_only(db.actor, nil)level.add_cam_effector("camera_effects\\surge_02.anm", 10, false, "bind_stalker.anabiotic_callback")level.add_pp_effector("surge_fade.ppe", 11, false)give_info("anabiotic_in_process")_G.mus_vol = get_console():get_float("snd_volume_music")_G.amb_vol = get_console():get_float("snd_volume_eff")get_console():execute("snd_volume_music 0")get_console():execute("snd_volume_eff 0")elseif (spalnik) then spalnik.use_inventory_item(s_obj) end --Idler используем спальник?elsedfz_hide_wpn.object_eat(obj)endendend-- AtmosFear Booster Checkif (s_obj) and (s_obj:section_name() == "drug_psy_blockade" or s_obj:section_name() == "drug_radioprotector" or s_obj:section_name() == "drug_antidot") thenlocal boost_time = system_ini():r_float(s_obj:section_name(),"boost_time")xr_logic.pstor_store(db.actor,s_obj:section_name().."_expiration",atmosfear.CTimeAddSec(game.get_game_time(),boost_time*level.get_time_factor()))end-- End AtmosFear Booster Checkendendfunction anabiotic_callback()level.add_cam_effector("camera_effects\\surge_01.anm", 10, false, "bind_stalker.anabiotic_callback2")local rnd = math.random(35,45)local m = surge_manager.get_surge_manager()if(m.started) thenlocal tf = level.get_time_factor()local diff_sec = math.ceil(game.get_game_time():diffSec(m.inited_time)/tf)if(rnd>(m.surge_time-diff_sec)*tf/60) thenm.time_forwarded = truem.ui_disabled = truem:kill_all_unhided()m:end_surge()endendlocal m = psi_storm_manager.get_psi_storm_manager()if(m.started) thenlocal tf = level.get_time_factor()local diff_sec = math.ceil(game.get_game_time():diffSec(m.inited_time)/tf)if(rnd>(m.psi_storm_duration-diff_sec)*tf/60) thenm.time_forwarded = true--m.ui_disabled = truem:finish()endendlevel.change_game_time(0,0,rnd)level_weathers.get_weather_manager():forced_weather_change()printf("anabiotic_callback: time forwarded on [%d]", rnd)endfunction anabiotic_callback2()xr_effects.enable_ui(db.actor, nil)get_console():execute("snd_volume_music "..tostring(_G.mus_vol))get_console():execute("snd_volume_eff "..tostring(_G.amb_vol))_G.amb_vol = 0_G.mus_vol = 0disable_info("anabiotic_in_process")end----------------------------------------------------------------------------------------------------------------------function actor_binder:task_callback(_task, _state)if _state ~= task.fail thenif _state == task.completed thennews_manager.send_task(db.actor, "complete", _task)elsenews_manager.send_task(db.actor, "new", _task)endendtask_manager.task_callback(_task, _state)end----------------------------------------------------------------------------------------------------------------------function actor_binder:update(delta)object_binder.update(self, delta)--[[ Вызывается раз в 2 секунды. ]]--local interval_to_callback = 0if interval_to_callback < time_global() thendfz_hide_wpn.timer_minutes_wpn_hide()local interval_to_callback = time_global() + 2000end--[[ Вызывается раз в 2 секунды. ]]--if string.find(command_line(), "-designer") thenreturnendif self.already_jumped==false and jump_level.need_jump==true and (device().frame > self.spawn_frame+2000) thenjump_level.try_to_jump()self.already_jumped = truereturnend-- Вызов апдейта переноса игрока проводникомif travel_func ~= nil thentravel_func()end-- DEBUG slowdown--slowdown.update()local time = time_global()game_stats.update (delta, self.object)-- апдейт погодыself.weather_manager:update()self:check_detective_achievement()self:check_mutant_hunter_achievement()--' Апдейт саундменеджераxr_sound.update(self.object:id())-- Обновление отключения ввода с клавиатуры.if self.st.disable_input_time ~= nil andgame.get_game_time():diffSec(self.st.disable_input_time) >= self.st.disable_input_idlethenlevel.enable_input()self.st.disable_input_time = nilend-- Апдейт прятание оружия игрока во время диалогаif self.object:is_talking() thenif self.weapon_hide_in_dialog == false thenself.object:hide_weapon()printf("hiding weapon!!!")self.weapon_hide_in_dialog = trueendelseif self.weapon_hide_in_dialog == true thenprintf("restoring weapon!!!")self.object:restore_weapon()self.weapon_hide_in_dialog = falseendend-- Апдейт прятание оружия игрока в зоне sr_no_weaponif check_for_weapon_hide_by_zones() == true thenif self.weapon_hide == false thenprintf("hiding weapon!!!")self.object:hide_weapon()self.weapon_hide = trueendelseif self.weapon_hide == true thenprintf("restoring weapon!!!")self.object:restore_weapon()self.weapon_hide = falseendend-- обновление пси-антенныif sr_psy_antenna.psy_antenna thensr_psy_antenna.psy_antenna:update(delta)end--[[--' Вывод сообщения о большой радиацииif self.object.radiation >= 0.7 thenlocal hud = get_hud()local custom_static = hud:GetCustomStatic("cs_radiation_danger")if custom_static == nil thenhud:AddCustomStatic("cs_radiation_danger", true)hud:GetCustomStatic("cs_radiation_danger"):wnd():TextControl():SetTextST("st_radiation_danger")endelselocal hud = get_hud()local custom_static = hud:GetCustomStatic("cs_radiation_danger")if custom_static ~= nil thenhud:RemoveCustomStatic("cs_radiation_danger")endend]]--if self.bCheckStart thenprintf("SET DEFAULT INFOS")if not has_alife_info("global_dialogs") thenself.object:give_info_portion("global_dialogs")endif not has_alife_info("level_changer_icons") thenself.object:give_info_portion("level_changer_icons")endself.bCheckStart = false-- if self.actor_weapon_on_start == true then-- db.actor:activate_slot(3)-- self.actor_weapon_on_start = false-- endend-- device().precache_frame == 0 andif not self.loaded_slot_applied thenself.object:activate_slot(self.loaded_active_slot)self.loaded_slot_applied = trueendxr_s.on_actor_update(delta)if(self.surge_manager) thenif(self.f_surge_manager_loaded ~= true) thenself.surge_manager:initialize()self.f_surge_manager_loaded = trueendif(self.surge_manager.levels_respawn[level.name()]) thenself.surge_manager:respawn_artefacts_and_replace_anomaly_zone()endself.surge_manager:update()end-- AtmosFearif(self.psi_storm_manager) thenif(self.f_psi_storm_manager_loaded ~= true) thenself.psi_storm_manager:initialize()self.f_psi_storm_manager_loaded = trueendself.psi_storm_manager:update()endif(self.fallout_manager) thenself.fallout_manager:update()endif(self.atmosfear) thenself.atmosfear:update()endif not db.actor:has_info("atmosfear_default_console_settings_loaded") thenself.atmosfear:loadDefaultConsoleSettings()db.actor:give_info_portion("atmosfear_default_console_settings_loaded")end-- End AtmosFear-- Апдейт доступности для симуляции.simulation_objects.get_sim_obj_registry():update_avaliability(alife():actor())if not self.loaded thenget_console():execute("dump_infos")self.loaded = trueendtreasure_manager.get_treasure_manager():update()if not(primary_objects_filled) thenpda.fill_primary_objects()primary_objects_filled = trueendpda.fill_sleep_zones()if dinamic_hud thendinamic_hud.update()endend----------------------------------------------------------------------------------------------------------------------function actor_binder:save(packet)set_save_marker(packet, "save", false, "actor_binder")object_binder.save(self, packet)--' Сохраняем уровень сложностиpacket:w_u8(level.get_game_difficulty())--' Сохраняем данные об отключенном вводеif self.st.disable_input_time == nil thenpacket:w_bool(false)elsepacket:w_bool(true)utils.w_CTime(packet, self.st.disable_input_time)endxr_logic.pstor_save_all(self.object, packet)self.weather_manager:save(packet)release_body_manager.get_release_body_manager():save(packet)-- AtmosFearself.atmosfear:save(packet)self.psi_storm_manager:save(packet)self.fallout_manager:save(packet)-- End AtmosFearself.surge_manager:save(packet)sr_psy_antenna.save( packet )packet:w_bool(sim_board.get_sim_board().simulation_started)xr_sound.actor_save(packet)packet:w_stringZ(tostring(self.last_level_name))xr_statistic.save(packet)treasure_manager.get_treasure_manager():save(packet)local n = 0for k,v in pairs(db.script_ids) don = n + 1endpacket:w_u8(n)for k,v in pairs (db.script_ids) dopacket:w_u16(k)packet:w_stringZ(v)endtask_manager.get_task_manager():save(packet)-- packet:w_bool(self.actor_weapon_on_start)packet:w_u8(self.object:active_slot())local deimos_exist = falsefor k,v in pairs(db.zone_by_name) doif(db.storage[v:id()] and db.storage[v:id()].active_scheme=="sr_deimos") thendeimos_exist = truepacket:w_bool(true)packet:w_float(db.storage[v:id()].sr_deimos.intensity)endendif not deimos_exist thenpacket:w_bool(false)endif self.last_detective_achievement_spawn_time == nil thenpacket:w_bool(false)elsepacket:w_bool(true)utils.w_CTime(packet, self.last_detective_achievement_spawn_time)endif self.last_mutant_hunter_achievement_spawn_time == nil thenpacket:w_bool(false)elsepacket:w_bool(true)utils.w_CTime(packet, self.last_mutant_hunter_achievement_spawn_time)endset_save_marker(packet, "save", true, "actor_binder")end----------------------------------------------------------------------------------------------------------------------function actor_binder:load(reader)set_save_marker(reader, "load", false, "actor_binder")object_binder.load(self, reader)--' Загружаем уровень сложностиlocal game_difficulty = reader:r_u8()printf("load game_difficulty %s", tostring(game_difficulty))get_console():execute("g_game_difficulty "..game_difficulty_by_num[game_difficulty])local stored_input_time = reader:r_u8()if stored_input_time == true thenself.st.disable_input_time = utils.r_CTime(reader)endxr_logic.pstor_load_all(self.object, reader)self.weather_manager:load(reader)release_body_manager.get_release_body_manager():load(reader)-- self.surge_manager:initialize()-- AtmosFearself.atmosfear:load(reader)self.psi_storm_manager:load(reader)self.fallout_manager:load(reader)self.f_psi_storm_manager_loaded = true-- End AtmosFearself.surge_manager:load(reader)self.f_surge_manager_loaded = truesr_psy_antenna.load(reader)sim_board.get_sim_board().simulation_started = reader:r_bool()xr_sound.actor_load(reader)local n = reader:r_stringZ()if(n~="nil") thenself.last_level_name = nendxr_statistic.load(reader)treasure_manager.get_treasure_manager():load(reader)n = reader:r_u8()for i = 1,n dodb.script_ids[reader:r_u16()] = reader:r_stringZ()endtask_manager.get_task_manager():load(reader)-- self.actor_weapon_on_start = reader:r_bool()self.loaded_active_slot = reader:r_u8()self.loaded_slot_applied = falselocal b = reader:r_bool()if( thenself.deimos_intensity = reader:r_float()endlocal stored_achievement_time = reader:r_bool()if stored_achievement_time == true thenself.last_detective_achievement_spawn_time = utils.r_CTime(reader)endstored_achievement_time = reader:r_bool()if stored_achievement_time == true thenself.last_mutant_hunter_achievement_spawn_time = utils.r_CTime(reader)endset_save_marker(reader, "load", true, "actor_binder")end--*************************************************************--* Подспаун вещей в ящики *--*************************************************************local detective_achievement_items = { "medkit","antirad","bandage"}local mutant_hunter_achievement_items = { "ammo_5.45x39_ap","ammo_5.56x45_ap","ammo_9x39_ap","ammo_5.56x45_ap","ammo_12x76_zhekan"}local function spawn_achivement_items(items_table, count, inv_box_story_id)local inv_box = alife():object(get_story_object_id(inv_box_story_id))for i = 1,count doalife():create(items_table[math.random(#items_table)],inv_box.position,inv_box.m_level_vertex_id,inv_box.m_game_vertex_id,inv_box.id)endendfunction actor_binder:check_detective_achievement()if not has_alife_info("detective_achievement_gained") thenreturnendif self.last_detective_achievement_spawn_time == nil thenself.last_detective_achievement_spawn_time = game.get_game_time()endif game.get_game_time():diffSec(self.last_detective_achievement_spawn_time) > 43200 thenspawn_achivement_items(detective_achievement_items, 4, "zat_a2_actor_treasure")xr_effects.send_tip(db.actor, nil, {"st_detective_news","got_medicine"})self.last_detective_achievement_spawn_time = game.get_game_time()endendfunction actor_binder:check_mutant_hunter_achievement()if not has_alife_info("mutant_hunter_achievement_gained") thenreturnendif self.last_mutant_hunter_achievement_spawn_time == nil thenself.last_mutant_hunter_achievement_spawn_time = game.get_game_time()endif game.get_game_time():diffSec(self.last_mutant_hunter_achievement_spawn_time) > 43200 thenspawn_achivement_items(mutant_hunter_achievement_items, 5, "jup_b202_actor_treasure")xr_effects.send_tip(db.actor, nil, {"st_mutant_hunter_news","got_ammo"})self.last_mutant_hunter_achievement_spawn_time = game.get_game_time()endend----------------------------------------------------------------------------------------------------------------------function check_for_weapon_hide_by_zones()for k,v in pairs(weapon_hide) doif v == true thenreturn trueendendreturn falseend-- Weapon functionsfunction hide_weapon(zone_id)printf("[WEAPON_CONTROL]:hiding weapon from zone [%s] in section [%s]!!!", zone_id, db.storage[zone_id].active_section)weapon_hide[zone_id] = trueendfunction restore_weapon(zone_id)printf("[WEAPON_CONTROL]:restoring weapon from zone [%s] in section [%s]!!!", zone_id, db.storage[zone_id].active_section)weapon_hide[zone_id] = falseend -- Состояние смарттеррейна-- Может быть трех видов: normal, danger, alarm-- normal - все как обычно, без ограничений-- danger - в зоне контроля находится игрок с оружием. Нужно запереть двери и предложить ему убираться-- alarm - игрок атаковал смарт. Нужно запереть двери и подождать время.NORMAL = 0DANGER = 1ALARM = 2current_smart_id = nillocal ALARM_TIME = 2*60*60class "CBaseOnActorControl"function CBaseOnActorControl:__init(smart, ini, section)self.noweap_zone = utils.cfg_get_string(ini, section, "noweap_zone", self, true, "")self.ignore_zone = utils.cfg_get_string(ini, section, "ignore_zone", self, false, "")self.alarm_start_sound = xr_logic.parse_condlist(smart, section, "alarm_start_sound", utils.cfg_get_string(ini, section, "alarm_start_sound", self, false, "") )self.alarm_stop_sound = xr_logic.parse_condlist(smart, section, "alarm_stop_sound", utils.cfg_get_string(ini, section, "alarm_stop_sound", self, false, "") )self.smart = smartself.status = NORMALendfunction CBaseOnActorControl:update()--printf("%s alarm status [%s]", self.smart:name(), self.status)if self.status == ALARM thenif game.get_game_time():diffSec(self.alarm_time) < ALARM_TIME then--printf("TIME %s", game.get_game_time():diffSec(self.alarm_time))returnendlocal sound = xr_logic.pick_section_from_condlist(db.actor, self.smart, self.alarm_stop_sound)--printf("SOUND = %s", tostring(sound))--' Озвучка на конец атакиif sound ~= nil thenxr_sound.set_sound_play(db.actor:id(), sound)endfor squad_id,squad in pairs(sim_board.get_sim_board().smarts[self.smart.id].squads) dogame_relations.set_squad_goodwill(squad_id, "neutral")endendif self:get_actor_treat() == true thenself.status = DANGERelseself.status = NORMALendend-- Возвращает статус угрожает ли игрок смарту или нет (находится ли с оружием в пределах новеапон зоны).function CBaseOnActorControl:get_actor_treat()local zone = db.zone_by_name[self.noweap_zone]if zone == nil thenreturn falseendif not zone:inside(db.actor:position()) thenif current_smart_id == self.smart.id thencurrent_smart_id = nilendreturn falseelsecurrent_smart_id = self.smart.idendif isWeapon(db.actor:active_item()) thenreturn trueendreturn falseend-- Устанавливает, что игрок атаковал смартfunction CBaseOnActorControl:actor_attack()if self.status ~= ALARM thenlocal sound = xr_logic.pick_section_from_condlist(db.actor, self.smart, self.alarm_start_sound)--' Озвучка на начало атаки.if sound ~= nil thenxr_sound.set_sound_play(db.actor:id(), sound)endfor squad_id,squad in pairs(sim_board.get_sim_board().smarts[self.smart.id].squads) dogame_relations.set_squad_goodwill(squad_id, "enemy")endendself.status = ALARMself.alarm_time = game.get_game_time()endfunction CBaseOnActorControl:get_status()return self.statusend-- НЕ ЗАБЫТЬ СЕЙВ ЛОАДfunction CBaseOnActorControl:save(packet)set_save_marker(packet, "save", false, "CBaseOnActorControl")packet:w_u8(self.status)utils.w_CTime(packet, self.alarm_time)set_save_marker(packet, "save", true, "CBaseOnActorControl")endfunction CBaseOnActorControl:load(packet)set_save_marker(packet, "load", false, "CBaseOnActorControl")self.status = packet:r_u8()self.alarm_time = utils.r_CTime(packet)set_save_marker(packet, "load", true, "CBaseOnActorControl")end Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/270/#findComment-851987
alex5773 1 332 Опубликовано 28 Мая 2014 Поделиться Опубликовано 28 Мая 2014 Хотя вписывал как положено! Если бы ты вписывал как положено, то с проблемой бы этой не столкнулся. Вот тебе script Syntax Checker(для проверки скриптов, запускаешь и указываешь на папку scripts, и программка проверяет правильность написания скриптов, ну и указывает на ошибку) http://rghost.ru/private/55911083/903850d1e1ce6ed1742bc31610c64e2b И удачи в освоении модинга 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/270/#findComment-852035
Дедушка Тапок 61 Опубликовано 28 Мая 2014 Поделиться Опубликовано 28 Мая 2014 Объясните, для чего нужны такие скрипты: bind_stalker.script.bak, bind_monster.script.bak, xr_motivator.script.bak ? Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/270/#findComment-852151
alex5773 1 332 Опубликовано 28 Мая 2014 Поделиться Опубликовано 28 Мая 2014 для чего нужны такие скрипты: bind_stalker.script.bak, bind_monster.script.bak Чтоб удалить их, они тебе явно не нужны, и игре тоже. Это просто кто-то их так сохранял оригинальными(до изменений). Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/270/#findComment-852158
dPlayer 552 Опубликовано 31 Мая 2014 Поделиться Опубликовано 31 Мая 2014 Ну все, придется вам все ваши моды под новый патч переделывать http://cop.stalker-game.ru/?page=patches&item=4 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/270/#findComment-853348
andreyich 30 Опубликовано 31 Мая 2014 Поделиться Опубликовано 31 Мая 2014 Народ помогите. Какой файл отвечает за картинку в меню? И еще вопрос как сделать регулируемым несъемный прицел (например прицел на фн2000)? И еще можно ли сделать так что бы когда включен режим подствольного гранатамета (несъемного) нажатием правой кнопки включался оптический прицел? Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/270/#findComment-853352
stalker_grez 130 Опубликовано 2 Июня 2014 Поделиться Опубликовано 2 Июня 2014 @andreyich,Файл отвечающий за картинку в меню лежит в gamedata/textures/ui/ui_actor_main_menu.dds 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/270/#findComment-853991
Ezio_Auditore900 66 Опубликовано 18 Июня 2014 Поделиться Опубликовано 18 Июня 2014 Всем привет! Не подскажете, как привязать wpn_hand_оружие_hud_animation.omf к рукам? Пытался дописать в Hex-редакторе - вылет с жалобой can't find motion file... Заранее спасибо! P.S. извеняюсь, если пишу не туда. Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/270/#findComment-855236
andreyich 30 Опубликовано 18 Июня 2014 Поделиться Опубликовано 18 Июня 2014 Скажите как сделать рандомную музыку в меню? Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/270/#findComment-855261
Ezio_Auditore900 66 Опубликовано 18 Июня 2014 Поделиться Опубликовано 18 Июня 2014 (изменено) @andreyich, Заходишь в файл по пути configs\ui\ui_mm_main, находишь строку <menu_sound random="0" > и меняешь 0 на 1. Тоже самое нужно сделать и с файлом ui_mm_main_16. Затем нужно дописать после <menu_music>music\menu</menu_music> свою музыку по аналогии. <menu_sound random="1" > <menu_music>music\menu</menu_music> <menu_music>music\menu0</menu_music> <menu_music>music\menu1</menu_music> <menu_music>music\menu2</menu_music> Удачи Изменено 18 Июня 2014 пользователем Ezio_Auditore900 Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/270/#findComment-855265
AnoniM12 45 Опубликовано 18 Июня 2014 Поделиться Опубликовано 18 Июня 2014 @Ezio_Auditore900, в Actor Editor добавляешь новые анимации оружия для каждой модели рук и экспортируешь. Еще вариант - добавить новые анимации к GSC-анимации. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/270/#findComment-855297
ммихаилл 1 Опубликовано 5 Июля 2014 Поделиться Опубликовано 5 Июля 2014 В каком файле логику нужно пустить в nil, чтобы на "скадовске" во время атаки на сталкера, не пускалась функция войны между бандитами и сталкирами и ГГ, то бишь = -тревога. Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/270/#findComment-859600
Painter 3 576 Опубликовано 5 Июля 2014 Поделиться Опубликовано 5 Июля 2014 (изменено) Для того, чтобы вырезать тревогу на базах, в файле smart_terrain_control.script достаточно "закомментить" следующие строки: -- Устанавливает, что игрок атаковал смарт function CBaseOnActorControl:actor_attack() if self.status ~= ALARM then local sound = xr_logic.pick_section_from_condlist(db.actor, self.smart, self.alarm_start_sound) --' Озвучка на начало атаки. if sound ~= nil then xr_sound.set_sound_play(db.actor:id(), sound) end for squad_id,squad in pairs(sim_board.get_sim_board().smarts[self.smart.id].squads) do game_relations.set_squad_goodwill(squad_id, "enemy") end end self.status = ALARM self.alarm_time = game.get_game_time() end -- Устанавливает, что игрок атаковал смарт function CBaseOnActorControl:actor_attack() --[[ if self.status ~= ALARM then local sound = xr_logic.pick_section_from_condlist(db.actor, self.smart, self.alarm_start_sound) --' Озвучка на начало атаки. if sound ~= nil then xr_sound.set_sound_play(db.actor:id(), sound) end for squad_id,squad in pairs(sim_board.get_sim_board().smarts[self.smart.id].squads) do game_relations.set_squad_goodwill(squad_id, "enemy") end end self.status = ALARM self.alarm_time = game.get_game_time() ]]-- end Как итог: больше не будет активироваться соответствующая реплика, а двери останутся открытыми. Разумеется, это самый простой (и не далеко не лучший способ). Дальше придётся дорабатывать самому. Изменено 5 Июля 2014 пользователем Jurok 1 3 Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/270/#findComment-859625
DarkSatellite 5 Опубликовано 14 Июля 2014 Поделиться Опубликовано 14 Июля 2014 Подскажите пожалуйста, как в Зове Припяти сделать так, чтобы в случае смерти сталкеров и мутантов, их тела оставались полностью неподвижными. То есть, не катились с неровных поверхностей или от прикосновений ног ГГ, словно они весят очень легко... Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/270/#findComment-862075
DimasDsf 1 Опубликовано 17 Июля 2014 Поделиться Опубликовано 17 Июля 2014 (изменено) Здравствуйте, собираюсь задать вопрос не из легкихМожет кто-то все-таки знает. В моде Atmosfear3 есть опция превращения нпс в зомби, но... происходит это наиубогийшим образом, а то есть нпс полностью удаляется и вместо него спавнится зомби. Выглядит убого и самое главное экипировка никак не соответствует.Так вот я решил взяться за другой подход то есть переназначение нпс в группировку зомби, и выставление вражеского отношения. Отношение решил делать так function enemy(actor, npc) npc:set_relation (game_object.enemy, db.actor) end используя за "npc" нпс которого скрипт решил удалять Если есть более удобный код или этот не сработает подскажите как сделать лучше А вот с группировкой проблема... Вопрос:можно ли через скрипт сменить группировку у нпс и если можно то как? за написание пока не брался так как стрельба по тому же долговцу хоть и враждебному скорее всего закончится "хейтом" всей группировки да и врагом нпс станет только мне вот кстати дефаултная функция превращения в зомби function CSurgeManager:turn_to_zombie(obj) local cl_obj = level.object_by_id(obj.id)local positionlocal sectionlocal zombie_typeif cl_obj ~= nil thenposition=cl_obj:position()section=cl_obj:section()elseposition=obj.positionsection=obj:section_name()endalife():release(alife():object(obj.id), true)local section_number = string.sub(section, -1)if section_number=="4" thenzombie_type="sim_default_zombied_4"elseif section_number=="3" thenzombie_type="sim_default_zombied_3"elseif section_number=="2" or section_number=="1" thenzombie_type="sim_default_zombied_2"elsezombie_type="sim_default_zombied_1"endalife():create(zombie_type, position, db.actor:level_vertex_id(), db.actor:game_vertex_id())--self.debugMessages[1]:SetText("type: "..tostring(zombie_type))end Изменено 17 Июля 2014 пользователем DimasDsf Ссылка на комментарий https://www.amk-team.ru/forum/topic/14899-cop-kovyrjaemsja-v-fajlah/page/270/#findComment-863018
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти