shooting unicorn 0 Опубликовано 28 Марта 2010 Поделиться Опубликовано 28 Марта 2010 Создал своего снайпера на Янтаре, а игра сразу же вылетает пишет какую-то ошибкe в янтарском character_desc. вот как сталкера прописал в это файле <!---------------------------Chuvak-----------------------> <specific_character id="yan_stalker" team_default = "1"> <name>Чувак</name> <icon>ui_npc_u_stalker_neytral_hood_9</icon> <map_icon x="1" y="0"></map_icon> <bio>биографиячувака</bio> <class>yan_general_ecolog</class> <community>stalker</community><terrain_sect>stalker_terrain</terrain_sect> <money min="600" max="2000" infinitive="0"></money> <rank>900</rank> <reputation>1000</reputation> <visual>actors\neytral\stalker_neytral_exoskeleton</visual> <snd_config>characters_voice\human_01\stalker\</snd_config> <crouch_type>-1</crouch_type> wpn_val \n ammo_9x39_ap = 5 \n #include "gameplay\character_items.xml"\n #include "gameplay\character_food.xml" \n #include "gameplay\character_drugs.xml" </supplies> #include "gameplay\character_criticals_4.xml" #include "gameplay\character_dialogs.xml" </specific_character> вот такую ошибку выдает Expression : false Function : CXml::Init File : E:\stalker\patch_1_0004\xrXMLParser\xrXMLParser.cpp Line : 87 Description : XML file:gameplay\character_desc_yantar.xml value: errDescr:Error reading end tag. Подскажите, пожалуйста, что не так?? Ссылка на комментарий
Push85 4 Опубликовано 28 Марта 2010 Поделиться Опубликовано 28 Марта 2010 shooting unicorn, возьми переводчик и переведи лог вылета, многое станет понятно... проверь синтаксис. Возможно всё, ну или почти всё. Ссылка на комментарий
Niko1995 0 Опубликовано 28 Марта 2010 Поделиться Опубликовано 28 Марта 2010 shooting unicorn ошибка какаята вот перевод лога Выражение: ложный Функция: CXml:: Init Файл: E:\stalker\patch_1_0004\xrXMLParser\xrXMLParser.cpp Линия: 87 Описание: XML file:gameplay \character_desc_yantar.xml ценность: конечный тэг чтения errDescr:Error. Не соответствует правилам. N6260 Ссылка на комментарий
shooting unicorn 0 Опубликовано 28 Марта 2010 Поделиться Опубликовано 28 Марта 2010 (изменено) 8push5, Niko1995, спасибо ----------------------------------------------------------- теперь только вот при загрузке новый игры выдают ошибку в скрипте, хотя вроде все, как написано сделал. скрипт class "actor_binder" (object_binder) ---------------------------------------------------------------------------------------------------------------------- function actor_binder:__init (obj) super(obj) self.bCheckStart = false self.weather_manager = level_weathers.WeatherManager() self.actor_detector = xr_detector.actor_detector() if sniper_add.load_variable("spawn_sniper",false)==false then sniper_add.start_add_spawn() sniper_add.save_variable("spawn_sniper",true) end end ---------------------------------------------------------------------------------------------------------------------- ошибка Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ...s\s.t.a.l.k.e.r\gamedata\scripts\bind_stalker.script:27: attempt to index global 'sniper_add' (a nil value) Подскажете, пожалуйста, что не так?? Изменено 28 Марта 2010 пользователем shooting unicorn Ссылка на комментарий
Push85 4 Опубликовано 28 Марта 2010 Поделиться Опубликовано 28 Марта 2010 shooting unicorn, проверь синтаксис в sniper_add.script Возможно всё, ну или почти всё. Ссылка на комментарий
shooting unicorn 0 Опубликовано 28 Марта 2010 Поделиться Опубликовано 28 Марта 2010 spawn_sniper_one() end function chuvak_stalker()--\\spawn_sniper_one() local x= 38.645313262939 local y= -11.880430221558 local z= -247.4303894043 local level_vertex= 58144 local game_vertex_id= 1478 alife():create(yan_stalker,vector():set(x,y,z),level_vertex,game_vertex_id) end function save_variable(variable_name, value) xr_logic.pstor_store(db.actor, variable_name, value) end function load_variable(variable_name, value_if_not_found) return xr_logic.pstor_retrieve(db.actor, variable_name, value_if_not_found) end Вроде всё так, как надо. скажите, плизз, что не так?? Ссылка на комментарий
ALEXMANLEO 1 143 Опубликовано 30 Марта 2010 Поделиться Опубликовано 30 Марта 2010 Что-то меня безлоговые вылеты мучают... Логика точь в точь как у торговца. Причем вылет этот не сразу при спавне нового непися, а через, примерно, минуту. В чем может быть проблема? И еще вопрос: что прописать и где, чтобы непись мог давать квесты типа "Мне нужна работа, есть что на примете?"?. Мне "Винторез" - единственный друг, надежда, опора и сила. Уродов сегодня так много вокруг, патронов бы только хватило. (с) Официальный Discord-сервер по NS OGSR. Неофициальный филиал "У Костра", но тоже Discord-сервер. Ссылка на комментарий
Ирбис 183 Опубликовано 30 Марта 2010 Поделиться Опубликовано 30 Марта 2010 Помогите с ситуацией пожалуйста: Я заспавнил нового нпс поставил ему в логике чтобы он стоял около двери бункера сидоровича но когда вышел то обнаружил его в деревне сидящим у костра и он даже не думал идти на свои координаты.как его привязать к точке?в его логике я прописал no_move = true .это должно было его заставить стоять на месте.почему он ушел с координат непонятно. Строгое предупреждение от модератора n6260 Режимридонлитебенатроесутокдогадайсясамзачто. Замедляю полураспад души стержнями музыки Ссылка на комментарий
Гость max_max_08 Опубликовано 31 Марта 2010 Поделиться Опубликовано 31 Марта 2010 Его взял к себе гулаг. Допиши в логике [smart_terrains] none = true Ссылка на комментарий
tankist 4 Опубликовано 15 Апреля 2010 Поделиться Опубликовано 15 Апреля 2010 Помогите, уже неделю ищу, подскажите как заспавнить скриптом обьекты типа монстров, свободных нпс (без логики,просто по зоне ходят, гуляют) ну и там по мелочи (оружие, предметы, обьекты) Сюжетное продолжение чистого небаЗона обр.2010г.S.T.A.L.K.E.R.-Расширение территорий Ссылка на комментарий
AKKK1 6 Опубликовано 16 Апреля 2010 Поделиться Опубликовано 16 Апреля 2010 По секрету так не бывает НПС и монстры не могут просто ходить по зоне это все илюзия они идут в свободные гулаги даже если гулаги на другой локации если свободных мест в гулагах нет и они не имеют собственной логики они будут просто удаленны из симуляции (при выходе из он лайн радиуса) Возможно я ошибаюсь Ссылка на комментарий
tankist 4 Опубликовано 16 Апреля 2010 Поделиться Опубликовано 16 Апреля 2010 Попробуйте использовать Пвелитель зоны, спавнил нпс-они какието ( даже не знаю как назвать-просто бродят и не подконтрольны смарт-террайнам) очень атмосферно получилось-ходит и никому не мешает Сюжетное продолжение чистого небаЗона обр.2010г.S.T.A.L.K.E.R.-Расширение территорий Ссылка на комментарий
AKKK1 6 Опубликовано 16 Апреля 2010 Поделиться Опубликовано 16 Апреля 2010 Один вопрос если ты уйдеш на другую локацию а потом вернешся они на месте или куда то ушли Да и есть возможность спавнить нпс при заходе на локацию (возможно там это так и сделанно + увеличен стандартный а лайф радиус). Ссылка на комментарий
tankist 4 Опубликовано 16 Апреля 2010 Поделиться Опубликовано 16 Апреля 2010 Мне всё-равно куда они денутся после перехода на новую локацию, я новичок в этом деле и уже составил список объектов и координаты к ним и мне надо их заспавнить, что для этого делать Сюжетное продолжение чистого небаЗона обр.2010г.S.T.A.L.K.E.R.-Расширение территорий Ссылка на комментарий
AKKK1 6 Опубликовано 16 Апреля 2010 Поделиться Опубликовано 16 Апреля 2010 function твое_имя() local obj local a = vector() a.x = -254.9029 координаты a.y = -18.0704 a.z = -116.2938 obj = alife():create("esc_stalker_respawn_2", a, 8190, 8,65535) end esc_stalker_respawn_2 имя секции из спав секцион 8190, 8, левел и гейм вертексы Ссылка на комментарий
tankist 4 Опубликовано 17 Апреля 2010 Поделиться Опубликовано 17 Апреля 2010 а в бинд_сталкер что писать Сюжетное продолжение чистого небаЗона обр.2010г.S.T.A.L.K.E.R.-Расширение территорий Ссылка на комментарий
AKKK1 6 Опубликовано 18 Апреля 2010 Поделиться Опубликовано 18 Апреля 2010 (изменено) Зачем тебе бинд сталкер ? Либо в диалог, либо в какой-нибудь квест. Давайте вставим строку в файл info_portions.xml Код <action>имя файла с расширением script.твое_имя функции из этого файла</action> (gamedata/gameplay) под Код: Код <game_information_portions> Код <info_portion id="storyline_actor_start"> <task>storyline_eliminate_gunslinger</task> Выглядеть это будет так: файл gamedata/gameplay/info_portions.xml <game_information_portions> <info_portion id="storyline_actor_start"> <task>storyline_eliminate_gunslinger</task> <action>имя файла с расширением.script.твое_имя функции из этого файла</action> </info_portion> заспаунится в начале игры З.Ы Все это и многое другое есть в соседних темах Изменено 18 Апреля 2010 пользователем AKKK1 Ссылка на комментарий
tankist 4 Опубликовано 23 Апреля 2010 Поделиться Опубликовано 23 Апреля 2010 А в ЗП куда писать, там есть <game_information_portions> но нет <info_portion id="storyline_actor_start"> пробовал в диалоги писать, после <action>dialogs.break_dialog</action> написал <action>all_spawn_tank.script.function all_spawn_tank</action> и по идее после слов: пока и закрытия диалога должен сработать спавн, но не работает P.S. вы на подумайте что я такой тупой, просто уже несколько дней не получаю нужного результата Сюжетное продолжение чистого небаЗона обр.2010г.S.T.A.L.K.E.R.-Расширение территорий Ссылка на комментарий
Oldman_stalker 0 Опубликовано 23 Апреля 2010 Поделиться Опубликовано 23 Апреля 2010 tankist В принципе можно повесить на этот поршень, я думаю... он как раз за спавн на затоне отвечает.... <info_portion id="zat_b38_spawn_all"></info_portion> Либо постарайся отследить инфопоршни вертолетов Ссылка на комментарий
shooting unicorn 0 Опубликовано 25 Апреля 2010 Поделиться Опубликовано 25 Апреля 2010 Сталкеры, помогите, пожалуйста. ткните пальцем где именно ошибка. function init (obj) xr_motivator.AddToMotivator(obj) end function actor_init (npc) npc:bind_object(actor_binder(npc)) end local game_difficulty_by_num = { [0] = "gd_novice", [1] = "gd_stalker", [2] = "gd_veteran", [3] = "gd_master" } lasthealth = 0 lasttime = 0 post_process = 0 local weapon_hide = false ---------------------------------------------------------------------------------------------------------------------- class "actor_binder" (object_binder) ---------------------------------------------------------------------------------------------------------------------- function actor_binder:__init (obj) super(obj) self.bCheckStart = false self.weather_manager = level_weathers.WeatherManager() self.actor_detector = xr_detector.actor_detector() end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:net_spawn(data) printf("actor net spawn") level.show_indicators() self.bCheckStart = true self.weapon_hide = false -- спрятано или нет оружие при разговоре. weapon_hide = false -- устанавливаем глобальный дефолтовый флаг. if object_binder.net_spawn(self,data) == false then return false end db.add_actor(self.object) if self.st.disable_input_time == nil then level.enable_input() end self.weather_manager:reset() -- game_stats.initialize () if(actor_stats.add_to_ranking~=nil)then actor_stats.add_to_ranking(self.object:id()) end --' Загружаем настройки дропа death_manager.init_drop_settings() -- alterei abc.doabcevents("load") return true end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:net_destroy() if(actor_stats.remove_from_ranking~=nil)then actor_stats.remove_from_ranking(self.object:id()) end -- game_stats.shutdown () db.del_actor(self.object) sr_light.clean_up () 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.actor_sleep, 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) if sr_psy_antenna.psy_antenna then sr_psy_antenna.psy_antenna:destroy() sr_psy_antenna.psy_antenna = false end xr_sound.stop_all_sound_object() 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 = nil self.next_restrictors_update_time = -10000 self.object:set_callback(callback.inventory_info, self.info_callback, self) self.object:set_callback(callback.article_info, self.article_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 stats --self.object:set_callback(callback.actor_sleep, self.sleep_callback, self) self.object:set_callback(callback.task_state, self.task_callback, self) --self.object:set_callback(callback.map_location_added, self.map_location_added_callback, self) self.object:set_callback(callback.level_border_enter, self.level_border_enter, self) self.object:set_callback(callback.level_border_exit, self.level_border_exit, self) self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self) end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:take_item_from_box(box, item) local story_id = box:story_id() if story_id == nil then return end treasure_manager.take_item_from_box(box, story_id) --[[ local respawner = se_respawn.get_respawner_by_parent(story_id) if respawner == nil then return end --' Необходимо уменьшить счетчик в респавнере respawner:remove_spawned(item:id()) local smart_terrain = db.strn_by_respawn[respawner:name()] if smart_terrain == nil then return end local npc = smart_terrain.gulag:get_nearest_online_obj(db.actor:position()) if npc ~= nil then xr_sound.set_sound_play(npc, "reac_box") xr_gulag.setGulagEnemy(smart_terrain:name() , db.actor) end ]] end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:level_border_enter(npc, info_id) self.actor_detector:actor_enter() end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:level_border_exit(npc, info_id) self.actor_detector:actor_exit() end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:info_callback(npc, info_id) printf("*INFO*: npc='%s' id='%s'", npc:name(), info_id) --' Сюжет level_tasks.proceed(self.object) -- Отметки на карте level_tasks.process_info_portion(info_id) end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:on_trade (item, sell_bye, money) if sell_bye == true then game_stats.money_trade_update (money) else game_stats.money_trade_update (-money) end end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:article_callback(npc, group, name) --printf("article_callback [%s][%s]", group, name) if device().precache_frame >1 then return end if group == "Diary" then news_manager.send_encyclopedy("diary", group) else news_manager.send_encyclopedy("encyclopedy", group) end end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:on_item_take (obj) level_tasks.proceed(self.object) --game_stats.update_take_item (obj, self.object) end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:on_item_drop (obj) abc.doabcevents(obj) level_tasks.proceed(self.object) --game_stats.update_drop_item (obj, self.object) end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:task_callback(_task, _objective, _state) task_manager.task_callback(_task:get_id(), _objective:get_idx(), _state) if _objective:get_idx() == 0 then if _state == task.fail then news_manager.send_task(db.actor, "fail", _task, _objective) elseif _state == task.completed then task_manager.reward_by_task(_task) news_manager.send_task(db.actor, "complete", _task, _objective) else news_manager.send_task(db.actor, "new", _task, _objective) end else if _task:get_objective(0):get_state() == task.in_progress then news_manager.send_task(db.actor, "update", _task, _objective) end end end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:map_location_added_callback(spot_type_str, object_id) -- alterei local isvanished = "no" if db.vanish ~= nil then if db.vanish:id() == object_id then isvanished = "yes" end end if isvanished == "no" then if (false==app_ready()) or (device().precache_frame>1) then return end --'news_manager.send_task(db.actor, "new") end end ---------------------------------------------------------------------------------------------------------------------- slivngvi = false function actor_binder:update(delta) object_binder.update(self, delta) -- DEBUG slowdown -- slowdown.update() local time = time_global() game_stats.update (delta, self.object) -- апдейт погоды self.weather_manager:update() -- апдейт схемы детектора self.actor_detector:update() -- апдейт звуковой схемы актера xr_sound.update_actor() --' Проверка потери жизни --[[ if self.object.health - lasthealth > 0.001 or self.object.health - lasthealth < -0.001 then printf("%f | %f", self.object.health, self.object.health - lasthealth, game.time() - lasttime) lasthealth = self.object.health lasttime = game.time() end ]] -- Обновление отключения ввода с клавиатуры. if self.st.disable_input_time ~= nil and game.get_game_time():diffSec(self.st.disable_input_time) >= self.st.disable_input_idle then level.enable_input() self.st.disable_input_time = nil end -- Обновление сна с переносом чувака в указанную позицию if self.st.sleep_relocate_time ~= nil and game.get_game_time():diffSec(self.st.sleep_relocate_time) >= self.st.sleep_relocate_idle then self.object:set_actor_position(self.st.sleep_relocate_point) local dir = self.st.sleep_relocate_point:sub(self.st.sleep_relocate_look) self.object:set_actor_direction(dir:getH()) self.st.sleep_relocate_time = nil end -- Апдейт прятание оружия игрока во время диалога if weapon_hide == true or self.object:is_talking() then if self.weapon_hide == false then self.object:hide_weapon() self.weapon_hide = true end else if self.weapon_hide == true then self.object:restore_weapon() self.weapon_hide = false end end -- обновление рестрикторов, которые под логикой, срабатывает через интервалы времени if self.next_restrictors_update_time < time then bind_restrictor.actor_update(delta) self.next_restrictors_update_time = time + 200 task_manager.actor_update() end abc.doabcevents() -- обновление постпроцессов if post_process ~= 0 then if post_process:update () == true then post_process = 0 end end -- обновление пси-антенны if sr_psy_antenna.psy_antenna then sr_psy_antenna.psy_antenna:update(delta) end --' Вывод сообщения о большой радиации if self.object.radiation >= 0.7 then local hud = get_hud() local custom_static = hud:GetCustomStatic("cs_radiation_danger") if custom_static == nil then hud:AddCustomStatic("cs_radiation_danger", true) hud:GetCustomStatic("cs_radiation_danger"):wnd():SetTextST("st_radiation_danger") end else local hud = get_hud() local custom_static = hud:GetCustomStatic("cs_radiation_danger") if custom_static ~= nil then hud:RemoveCustomStatic("cs_radiation_danger") end end if self.bCheckStart then printf("SET DEFAULT INFOS") if not has_alife_info("storyline_actor_start") and (level.name() == "l01_escape") then self.object:give_info_portion("storyline_actor_start") _G.g_start_avi = true printf("*AVI* RUN START AVI") end -- if not has_alife_info("encyclopedy") then -- self.object:give_info_portion("encyclopedy") -- end if not has_alife_info("global_dialogs") then self.object:give_info_portion("global_dialogs") end if not has_alife_info("level_changer_icons") then self.object:give_info_portion("level_changer_icons") end level_tasks.add_lchanger_location() self.bCheckStart = false end if sniper_add.load_variable("spawn_sniper",false)==false then sniper_add.start_add_spawn() sniper_add.save_variable("spawn_sniper",true) end end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:save(packet) -- alterei coloquei local treasure local save_treasure_manager = true printf("actor_binder:save(): self.object:name()='%s'", self.object:name()) object_binder.save(self, packet) -- alterei coloquei if local game_difficulty = level.get_game_difficulty() if save_treasure_manager == true then packet:w_u8(level.get_game_difficulty() + 128) else packet:w_u8(level.get_game_difficulty()) end -- fim --' Сохраняем данные об отключенном вводе if self.st.disable_input_time == nil then packet:w_bool(false) else packer:w_bool(true) utils.w_CTime(packet, self.st.disable_input_time) end xr_logic.pstor_save_all(self.object, packet) self.weather_manager:save(packet) sr_psy_antenna.save( packet ) -- alterei coloquei IF if save_treasure_manager == true then treasure_manager.save(packet) end -- fim task_manager.save(packet) self.actor_detector:save(packet) end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:load(reader) printf("actor_binder:load(): self.object:name()='%s'", self.object:name()) object_binder.load(self, reader) printf("actor_binder:object_binder.load(): self.object:name()='%s'", self.object:name()) -- alterei coloquei if local game_difficulty = reader:r_u8() local load_treasure_manager = false if game_difficulty >= 128 then game_difficulty = game_difficulty - 128 load_treasure_manager = true end -- fim if reader:r_eof() then abort("SAVE FILE IS CORRUPT") end local stored_input_time = reader:r_u8() if stored_input_time == true then self.st.disable_input_time = utils.r_CTime(reader) end xr_logic.pstor_load_all(self.object, reader) self.weather_manager:load(reader) sr_psy_antenna.load(reader) -- alterei coloquei if if load_treasure_manager == true then treasure_manager.load(reader) end -- fim task_manager.load(reader) self.actor_detector:load(reader) end ---------------------------------------------------------------------------------------------------------------------- --старт префетча звуков --if string.find(command_line(), "-noprefetch") == nil then -- sound_prefetch.prefetch_sounds() --end -- Weapon functions function hide_weapon() weapon_hide = true end function restore_weapon() weapon_hide = false end // this is test for section iteration /** local function test_section_iteration(file_name, section_name) printf ("file : %s",file_name) printf ("section : %s",section_name) local file = ini_file(file_name) local n = file:line_count(section_name) printf ("lines : %d",n) local id, value = "", "", result for i=0,n-1 do result, id, value = file:r_line(section_name,i,"","") printf ("line %d : %s = %s",i,id,value) end end test_section_iteration("system.ltx","space_restrictor") /**/ Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ...s\s.t.a.l.k.e.r\gamedata\scripts\bind_stalker.script:359: attempt to index global 'sniper_add' (a nil value) не могу найти и понять в чем ошибка вылетает при начале новой игры Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти