1. Вопрос должен соответствовать выбранной Вами темы. 2. Изучите то, что уже есть в теме (воспользуйтесь поиском на форуме). 3. Указывайте необходимую информацию: чистая игра ТЧ или с установленным модом (указать какой). 4. Для того, чтобы было понятно в чем ошибка, приводите коды (оформленные соответствующем образом). 5. Вопросы по SDK задаем в этой теме.
Награды: 36
Регистрация: 08.11.2012
Город: Красноярск
ccerega, я ее просто прописал неправильно, очевидно.
Добавлено (27.04.2013, 16:14:41) --------------------------------------------- Еще один вылет, лог вот
Expression : !m_DefaultCharacters.empty() Function : CSE_ALifeTraderAbstract::specific_character File : E:\stalker\patch_1_0004\xr_3da\xrGame\xrServer_Objects_ALife_Monsters.cpp Line : 333 Description : no default specific character set for class Arguments : esc_bridge_bandit_leader
И даже после всего прочего - мы все равно остаемся здесь.
Награды: 36
Регистрация: 08.11.2012
Город: Красноярск
valeras_98, заменил outfit.ltx на оригинальный и перетащил секции. Заработало. В моде был корявый outfit.ltx.
Добавлено (29.04.2013, 10:47:04) --------------------------------------------- Вот еще вопрос: куда нажать в игре, чтобы вылезли координаты места, где стоишь.
И даже после всего прочего - мы все равно остаемся здесь.
Репутация: 1472
Регистрация: 02.10.2012
Город: Нижний новгород
Dmitriy_Nekratov, нужен скрипт для снятия координат, часа через 2 помтараюсь скинуть.
Добавлено (29.04.2013, 14:36:36) --------------------------------------------- В файле ui_main_menu.script в конце дописываешь это:
Код
function main_menu:OnButton_credits_clicked() local text local vid local gvid local a = vector() local text a = db.actor:position() vid = db.actor:level_vertex_id() gvid = db.actor:game_vertex_id() text = "Позиция:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\
Чтобы посмотреть координаты, нажимаешь в меню титры.
Dmitriy_Nekratov, Лог говорит, что ты лезешь куда-то не зная что делать. А мы должны устраивать "Что? Где? Когда?", пытаясь либо угадать, либо тренировать телепатические способности. Просто так лог не вылезет. Говори, что делал, а лучше приводи коды своих "добавок".
Награды: 36
Регистрация: 08.11.2012
Город: Красноярск
Callisto, вот, разбирайтесь, а я похихикаю
--' Ключем является группировка персонажа. Значением является таблица, содержашая имена секций предметов. local item_by_community = {}
--' Зависимости в спауне предметов. Предмет спауниться только если есть хотя бы один из зависимых. local item_dependence = {}
--' Множители и минимаксы для выпадения вещей в зависимости от уровня local mul_by_level = {} local count_by_level = {}
--' Предметы, которые нельзя удалять (квестовые например) local always_keep_item = {}
--' Предметы, относящиеся к патронам. Их надо спаунить другим методом. local ammo_sections = {}
local death_ini = ini_file("misc\\death_generic.ltx")
function init_drop_settings() local community_list = { "stalker", "dolg", "freedom", "bandit", "military", "zombied", "ecolog", "killer", "monolith", "arena_enemy", "actor_dolg" }
for k,v in pairs(community_list) do --' Необходимо заполнить таблицу item_by_community [v]= {} if death_ini:section_exist(v) then local n = death_ini:line_count(v) local id, value = "", "" for i=0,n-1 do result, id, value = death_ini:r_line(v,i,"","") item_by_community [v][id]= 1000*tonumber(value) end end end
--' Заполняем таблицу зависимостей local n = death_ini:line_count("item_dependence") local id, value = "", "" for i=0,n-1 do result, id, value = death_ini:r_line("item_dependence",i,"","") item_dependence [id]= {} local vvv = parse_names(value) for k,v in pairs(vvv) do item_dependence [id][v]= true end end
--' Множители и минимаксы для выпадения вещей в зависимости от уровня local level_name = level.name()
if not death_ini:section_exist(level_name) then level_name = "default" end
local n = death_ini:line_count(level_name) local id, value = "", "" for i=0,n-1 do result, id, value = death_ini:r_line(level_name,i,"","") mul_by_level [id]= tonumber(value) end
local item_count_section = "item_count_" .. level.get_game_difficulty() local n = death_ini:line_count(item_count_section) for i=0,n-1 do result, id, value = death_ini:r_line(item_count_section,i,"","") --' Нужно распарсить value в два значения local t = parse_nums(value) if t[1] == nil then abort("Error on [death_ini] declaration. Section [%s], line [%s]", item_count_section, tostring(id)) end local min = t[1] local max = t[2] if max == nil then max = min end
if mul_by_level [id]== nil then mul_by_level [id]= 0 end
min = tonumber(min) * mul_by_level [id]max = tonumber(max) * mul_by_level
[id]count_by_level [id]= {min = min, max = max} end
--' Предметы, которые нельзя удалять (квестовые например) local n = death_ini:line_count("keep_items") for i=0,n-1 do result, id, value = death_ini:r_line("keep_items",i,"","") if value == "true" then always_keep_item [id]= true end end
--' Предметы, относящиеся к патронам. Их надо спаунить другим методом. ammo_sections = {} local n = death_ini:line_count("ammo_sections") local id, value = "", "" for i=0,n-1 do result, id, value = death_ini:r_line("ammo_sections",i,"","") ammo_sections [id]= true end end
class "drop_manager" function drop_manager:__init(npc) self.npc = npc end function drop_manager:create_release_item() --' Спрашиваем у серверного объекта генерились ли предметы local se_obj = alife():object(self.npc:id()) if se_obj.death_droped == true then return end se_obj.death_droped = true
--' Запускаем итератор на удаление предметов self.npc:iterate_inventory(keep_item, self.npc)
-- dbglog("drop_manager: check loot") --' Проверка на отсутствие спауна лута local ini = self.npc:spawn_ini()
if ini and ini:section_exist("dont_spawn_loot") then -- dbglog("drop_manager: we should not spawn -- exit") return end
--' Доспавниваем необходимое количество итемов: --' Необходимо составить список объектов которые могут быть заспавнены для персонажа
-- dbglog("drop_manager: generate loot items") local spawn_items = item_by_community[self.npc:character_community()] for k,v in pairs(spawn_items) do --' По каждому объекту необходимо получить зависимости if check_item_dependence(self.npc, k) == true then --' По каждому объекту необходимо получить количество local number = math.ceil(math.random(count_by_level[k].min, count_by_level[k].max)) --' Необходимо заспавнить нужное количество. create_items(self.npc, k, number, v) end end
-- dbglog("drop_manager: done - ok") end
--' Функция вызывается для каждого предмета, если вернет false то предмет удалится. -- xiani: я так понял что предметы всетаки надо удалять тут вручную а не просто возвращать false? function keep_item(npc, item) local section = item:section()
if section == "bolt" then return false end
if section == "device_torch" -- or section == "device_pda" or section == "hand_radio" or section == "guitar_a" or section == "harmonica_a" then alife():release(alife():object(item:id()), true) return false end
if always_keep_item [section]== true then return true end
local item_id = item:id() local item_in_slot = npc:item_in_slot(1) if item_in_slot ~= nil and item_in_slot:id() == item_id then if xiani_config.dm_keep_ammo ~= true then item:unload_magazine() end --' Тут надо уменьшить кондишн оружия item:set_condition((math.random(15)+75)*item:condition()/100) return true end item_in_slot = npc:item_in_slot(2) if item_in_slot ~= nil and item_in_slot:id() == item_id then if xiani_config.dm_keep_ammo ~= true then item:unload_magazine() end --' Тут надо уменьшить кондишн оружия item:set_condition((math.random(15)+75)*item:condition()/100) return true end
if xiani_config.dm_keep_items == true then return true end alife():release(alife():object(item:id()), true) end
--' Функция спавнит необходимое число предметов function create_items(npc, section, number, rnd) --'printf("create %s of %s", tostring(number), tostring(section)) if ammo_sections [section]== true then if number > 0 then se_respawn.create_ammo(section, npc:position(), npc:level_vertex_id(), npc:game_vertex_id(), npc:id(), number) end else for i=1,number do --' Проверяем вероятность появить каждый объект в отдельности if math.random(1000) <= rnd then alife():create(section, npc:position(), npc:level_vertex_id(), npc:game_vertex_id(), npc:id()) end end end end
--' Функция проверяет есть ли хоть один из зависимых объектов у персонажа function check_item_dependence(npc, section) if item_dependence [section]== nil then return true end
local d_flag = true for k,v in pairs(item_dependence[section]) do local obj = npc:object(k) if obj ~= nil and npc:marked_dropped(obj) ~= true then return true end d_flag = false end
return d_flag end
За не чтение шапки темы и пренебрежительное отношение к пользователям, бан на трое суток. comador
Если хочешь помощи, то можешь просто рассказать, что хочешь сделать и привести свои добавленные коды (а не скидывать весь скрипт: "нате мол, смотрите и ищите, что я там добавил и что не правильно").
Может, у кого есть желание и уйма свободного времени и займется твоей проблемой, но я без детальной информации не хочу тратить личное время.
Если мой ответ показался слишком грубым, то прошу прощения.
Репутация: 167
Регистрация: 01.04.2013
Город: Москва
Цитата
английский и путь файла я тоже знаю
Отлично! Только кроме вылета ты на тот момент ничего не предоставил. Само собой разумеется, что человек вообще не понимает, что за вылет. Вот такой вопрос можно больше принять за набивание постов(извиняюсь, но это как-бы ответ на послание в личку, выставленный на всеобщее обозрение).
Цитата
Никаких изменений не делал, и вообще его не открывал!
А вот это ты читал?
Цитата
Хотя могут быть и варианты, если ты из другого скрипта обращался к этому
Скажи честно - обязаны ли люди, видящие столь скупые сообщения в чем-либо разбираться? Может лучше тебе озаботиться хотя-бы бэкапом файлов, в которые ты лезешь? Может тогда и сам разберешься, чего наворотил.
Репутация: 167
Регистрация: 01.04.2013
Город: Москва
black_stalker1997, напомни, что за диалог и где? Может не диалог, а реплику? сорри, плохо помню оригинал. Вообще - допустим это реплика. Сначала ищешь её в звуках. Потом по названию поиском ищешь файл, откуда оно вызывается. Вуаля...
Сообщение отредактировал Змея - Пятница, 03.05.2013, 20:46:05