DiXares 1 Опубликовано 18 Апреля 2010 Вот есть скрипт спавна рабочей аномалии. Есть скрипт спавна рестриктора. А есть скрипт спавна источника света(вместе с моделью)? Поделиться этим сообщением Ссылка на сообщение
DiXares 1 Опубликовано 30 Апреля 2010 Как сделать типа массива объектов и занести в него все предметы актора? Массив так делается?: local massiv_objects = {} Поделиться этим сообщением Ссылка на сообщение
DiXares 1 Опубликовано 30 Апреля 2010 Это теперь понятно, а как отследить все объекты инвентаря? Поделиться этим сообщением Ссылка на сообщение
DiXares 1 Опубликовано 12 Мая 2010 (изменено) Сталкеры! А EditBox может распознавать русскую кирилицу? А ввод в него русского текста? Возможен поиск русского слова из текста по типу: if string.find("Оружие") содержится в EditBox:GetText then end? Изменено 12 Мая 2010 пользователем TREWKO Поделиться этим сообщением Ссылка на сообщение
DiXares 1 Опубликовано 14 Мая 2010 Товарищи! Чё то я не понял: Мне надо проверить, есть ли в слоте с артефактами предмет... Я так понимаю надо сделать: local xf_table = db.actor:item_in_slot(Какой слот у артефактов?(Посмотрел, у артов в конфигах вообще нет слота, но они ссылаются на af_base, но у него slot закомментирован, есть animation_slot)) if xf_table = "item_test"(вот как записать наличие одно предмета из таблицы(string.find? Но как?)?) Поделиться этим сообщением Ссылка на сообщение
DiXares 1 Опубликовано 14 Мая 2010 (изменено) Ага, понятно, спасибо! Вот ещё, сделал новый параметр ГГ, и хочу вывести прогресс бар на ухд. Вот что сделал: function progress_bar_oxy() if DiXaresCounterOxy == 0 then local texture_fds = "progress_bar_oxy_0" local hud = get_hud() local cs = hud:GetCustomStatic(texture_fds) if cs == nil then hud:AddCustomStatic(texture_fds, true) end hud:RemoveCustomStatic("progress_bar_oxy_10", true) hud:RemoveCustomStatic("progress_bar_oxy_20", true) hud:RemoveCustomStatic("progress_bar_oxy_30", true) hud:RemoveCustomStatic("progress_bar_oxy_40", true) hud:RemoveCustomStatic("progress_bar_oxy_50", true) hud:RemoveCustomStatic("progress_bar_oxy_60", true) hud:RemoveCustomStatic("progress_bar_oxy_70", true) hud:RemoveCustomStatic("progress_bar_oxy_80", true) hud:RemoveCustomStatic("progress_bar_oxy_90", true) hud:RemoveCustomStatic("progress_bar_oxy_100", true) end if DiXaresCounterOxy < 0.1 and DiXaresCounterOxy > 0.0 then local texture_fds = "progress_bar_oxy_10" local hud = get_hud() local cs = hud:GetCustomStatic(texture_fds) if cs == nil then hud:AddCustomStatic(texture_fds, true) end hud:RemoveCustomStatic("progress_bar_oxy_0", true) hud:RemoveCustomStatic("progress_bar_oxy_20", true) hud:RemoveCustomStatic("progress_bar_oxy_30", true) hud:RemoveCustomStatic("progress_bar_oxy_40", true) hud:RemoveCustomStatic("progress_bar_oxy_50", true) hud:RemoveCustomStatic("progress_bar_oxy_60", true) hud:RemoveCustomStatic("progress_bar_oxy_70", true) hud:RemoveCustomStatic("progress_bar_oxy_80", true) hud:RemoveCustomStatic("progress_bar_oxy_90", true) hud:RemoveCustomStatic("progress_bar_oxy_100", true) end if DiXaresCounterOxy < 0.2 and DiXaresCounterOxy > 0.1 then local texture_fds = "progress_bar_oxy_20" local hud = get_hud() local cs = hud:GetCustomStatic(texture_fds) if cs == nil then hud:AddCustomStatic(texture_fds, true) end hud:RemoveCustomStatic("progress_bar_oxy_10", true) hud:RemoveCustomStatic("progress_bar_oxy_0", true) hud:RemoveCustomStatic("progress_bar_oxy_30", true) hud:RemoveCustomStatic("progress_bar_oxy_40", true) hud:RemoveCustomStatic("progress_bar_oxy_50", true) hud:RemoveCustomStatic("progress_bar_oxy_60", true) hud:RemoveCustomStatic("progress_bar_oxy_70", true) hud:RemoveCustomStatic("progress_bar_oxy_80", true) hud:RemoveCustomStatic("progress_bar_oxy_90", true) hud:RemoveCustomStatic("progress_bar_oxy_100", true) end if DiXaresCounterOxy < 0.3 and DiXaresCounterOxy > 0.2 then local texture_fds = "progress_bar_oxy_30" local hud = get_hud() local cs = hud:GetCustomStatic(texture_fds) if cs == nil then hud:AddCustomStatic(texture_fds, true) end hud:RemoveCustomStatic("progress_bar_oxy_10", true) hud:RemoveCustomStatic("progress_bar_oxy_20", true) hud:RemoveCustomStatic("progress_bar_oxy_0", true) hud:RemoveCustomStatic("progress_bar_oxy_40", true) hud:RemoveCustomStatic("progress_bar_oxy_50", true) hud:RemoveCustomStatic("progress_bar_oxy_60", true) hud:RemoveCustomStatic("progress_bar_oxy_70", true) hud:RemoveCustomStatic("progress_bar_oxy_80", true) hud:RemoveCustomStatic("progress_bar_oxy_90", true) hud:RemoveCustomStatic("progress_bar_oxy_100", true) end if DiXaresCounterOxy < 0.4 and DiXaresCounterOxy > 0.3 then local texture_fds = "progress_bar_oxy_40" local hud = get_hud() local cs = hud:GetCustomStatic(texture_fds) if cs == nil then hud:AddCustomStatic(texture_fds, true) end hud:RemoveCustomStatic("progress_bar_oxy_10", true) hud:RemoveCustomStatic("progress_bar_oxy_20", true) hud:RemoveCustomStatic("progress_bar_oxy_30", true) hud:RemoveCustomStatic("progress_bar_oxy_0", true) hud:RemoveCustomStatic("progress_bar_oxy_50", true) hud:RemoveCustomStatic("progress_bar_oxy_60", true) hud:RemoveCustomStatic("progress_bar_oxy_70", true) hud:RemoveCustomStatic("progress_bar_oxy_80", true) hud:RemoveCustomStatic("progress_bar_oxy_90", true) hud:RemoveCustomStatic("progress_bar_oxy_100", true) end if DiXaresCounterOxy < 0.5 and DiXaresCounterOxy > 0.4 then local texture_fds = "progress_bar_oxy_50" local hud = get_hud() local cs = hud:GetCustomStatic(texture_fds) if cs == nil then hud:AddCustomStatic(texture_fds, true) end hud:RemoveCustomStatic("progress_bar_oxy_10", true) hud:RemoveCustomStatic("progress_bar_oxy_20", true) hud:RemoveCustomStatic("progress_bar_oxy_30", true) hud:RemoveCustomStatic("progress_bar_oxy_40", true) hud:RemoveCustomStatic("progress_bar_oxy_0", true) hud:RemoveCustomStatic("progress_bar_oxy_60", true) hud:RemoveCustomStatic("progress_bar_oxy_70", true) hud:RemoveCustomStatic("progress_bar_oxy_80", true) hud:RemoveCustomStatic("progress_bar_oxy_90", true) hud:RemoveCustomStatic("progress_bar_oxy_100", true) end if DiXaresCounterOxy < 0.6 and DiXaresCounterOxy > 0.5 then local texture_fds = "progress_bar_oxy_60" local hud = get_hud() local cs = hud:GetCustomStatic(texture_fds) if cs == nil then hud:AddCustomStatic(texture_fds, true) end hud:RemoveCustomStatic("progress_bar_oxy_10", true) hud:RemoveCustomStatic("progress_bar_oxy_20", true) hud:RemoveCustomStatic("progress_bar_oxy_30", true) hud:RemoveCustomStatic("progress_bar_oxy_40", true) hud:RemoveCustomStatic("progress_bar_oxy_50", true) hud:RemoveCustomStatic("progress_bar_oxy_0", true) hud:RemoveCustomStatic("progress_bar_oxy_70", true) hud:RemoveCustomStatic("progress_bar_oxy_80", true) hud:RemoveCustomStatic("progress_bar_oxy_90", true) hud:RemoveCustomStatic("progress_bar_oxy_100", true) end if DiXaresCounterOxy < 0.7 and DiXaresCounterOxy > 0.6 then local texture_fds = "progress_bar_oxy_70" local hud = get_hud() local cs = hud:GetCustomStatic(texture_fds) if cs == nil then hud:AddCustomStatic(texture_fds, true) end hud:RemoveCustomStatic("progress_bar_oxy_10", true) hud:RemoveCustomStatic("progress_bar_oxy_20", true) hud:RemoveCustomStatic("progress_bar_oxy_30", true) hud:RemoveCustomStatic("progress_bar_oxy_40", true) hud:RemoveCustomStatic("progress_bar_oxy_50", true) hud:RemoveCustomStatic("progress_bar_oxy_60", true) hud:RemoveCustomStatic("progress_bar_oxy_0", true) hud:RemoveCustomStatic("progress_bar_oxy_80", true) hud:RemoveCustomStatic("progress_bar_oxy_90", true) hud:RemoveCustomStatic("progress_bar_oxy_100", true) end if DiXaresCounterOxy < 0.8 and DiXaresCounterOxy > 0.7 then local texture_fds = "progress_bar_oxy_80" local hud = get_hud() local cs = hud:GetCustomStatic(texture_fds) if cs == nil then hud:AddCustomStatic(texture_fds, true) end hud:RemoveCustomStatic("progress_bar_oxy_10", true) hud:RemoveCustomStatic("progress_bar_oxy_20", true) hud:RemoveCustomStatic("progress_bar_oxy_30", true) hud:RemoveCustomStatic("progress_bar_oxy_40", true) hud:RemoveCustomStatic("progress_bar_oxy_50", true) hud:RemoveCustomStatic("progress_bar_oxy_60", true) hud:RemoveCustomStatic("progress_bar_oxy_70", true) hud:RemoveCustomStatic("progress_bar_oxy_0", true) hud:RemoveCustomStatic("progress_bar_oxy_90", true) hud:RemoveCustomStatic("progress_bar_oxy_100", true) end if DiXaresCounterOxy < 0.9 and DiXaresCounterOxy > 0.8 then local texture_fds = "progress_bar_oxy_90" local hud = get_hud() local cs = hud:GetCustomStatic(texture_fds) if cs == nil then hud:AddCustomStatic(texture_fds, true) end hud:RemoveCustomStatic("progress_bar_oxy_10", true) hud:RemoveCustomStatic("progress_bar_oxy_20", true) hud:RemoveCustomStatic("progress_bar_oxy_30", true) hud:RemoveCustomStatic("progress_bar_oxy_40", true) hud:RemoveCustomStatic("progress_bar_oxy_50", true) hud:RemoveCustomStatic("progress_bar_oxy_60", true) hud:RemoveCustomStatic("progress_bar_oxy_70", true) hud:RemoveCustomStatic("progress_bar_oxy_80", true) hud:RemoveCustomStatic("progress_bar_oxy_0", true) hud:RemoveCustomStatic("progress_bar_oxy_100", true) end if DiXaresCounterOxy < 1.0 and DiXaresCounterOxy > 0.9 then local texture_fds = "progress_bar_oxy_100" local hud = get_hud() local cs = hud:GetCustomStatic(texture_fds) if cs == nil then hud:AddCustomStatic(texture_fds, true) end hud:RemoveCustomStatic("progress_bar_oxy_10", true) hud:RemoveCustomStatic("progress_bar_oxy_20", true) hud:RemoveCustomStatic("progress_bar_oxy_30", true) hud:RemoveCustomStatic("progress_bar_oxy_40", true) hud:RemoveCustomStatic("progress_bar_oxy_50", true) hud:RemoveCustomStatic("progress_bar_oxy_60", true) hud:RemoveCustomStatic("progress_bar_oxy_70", true) hud:RemoveCustomStatic("progress_bar_oxy_80", true) hud:RemoveCustomStatic("progress_bar_oxy_90", true) hud:RemoveCustomStatic("progress_bar_oxy_0", true) end end Сделал виртуальную шкалу от 0.0 до 1.0. Дак вот, при вычитании из 1.0 числа 0.1 получаю дробь большую, примерно такую: 9.9882327382 Но бар не работает. Есть ли другой способ создания прогресс бара? И вот ещё, ни как не могу прочитать лампочку: function desfunctions_lights_1() for i=1,65535 do local obj = alife():object(i) if obj and obj:name()=="level_prefix_lights_hanging_lamp" then ds = obj:get_hanging_lamp() ds:turn_off() end end end Получаю вылет: dixarxights.script:46: attempt to call method 'get_hanging_lamp' (a nil value) Изменено 14 Мая 2010 пользователем TREWKO Поделиться этим сообщением Ссылка на сообщение
DiXares 1 Опубликовано 21 Мая 2010 Здравствуйте! Имеется система вида: [ini_section] ff_bul=1000, 2000, 5000 Нужно сделать чтение этих переменных: function read() local pr = system_ini():r_float("ini_section","ff_bul") end Надо разбить эту pr на три параметра, но не знаю как... Может так?: function read_ini_three() local pr = system_ini():r_float("ini_section","ff_bul") local min, max, tiss = pr local min = mins local max = maxs local tiss = ss get_console():execute("Значение №1: "..mins.." Значение №2: "..maxs.." Значение №3: "..tiss) end Поделиться этим сообщением Ссылка на сообщение
DiXares 1 Опубликовано 5 Июня 2010 Всем привет, у меня два вопроса: Возможно такое(Если ГГ видит Долговца, то...)?: if db.actor:see("dolg_regular") then И возможна ли проверка попадения какого либо объекта в зону(аномалию, спейс рестриктор)? Что то типа: local obj = "wpn_pm" local am = "zone_flame" if obj попал в am then Поделиться этим сообщением Ссылка на сообщение
DiXares 1 Опубликовано 12 Июня 2010 Larry76, простые мины палочкой вверх? Если да, то это аномалии такие, типа мины. В состоянии idle имеют партикл палочки, а в активном состоянии, когда актор вошёл в зону мины, активное, тоесть хит и партикл взрыва, звук. Спавнить их в sdk или all.spawn, или скриптом. Также спавнить, как и аномалии. Поделиться этим сообщением Ссылка на сообщение
DiXares 1 Опубликовано 12 Июня 2010 (изменено) Как можно сделать не большую зону, пр наведении на которую курсор будет надпись и при нажатии кнопки действия мы получим функцию. Добавлено через 14 мин.: Larry76, спавнятся как и аномалии. Скриптом я аномалии так и не научился спавнить, скрипт у меня не пашет. Секция мины = zone_mine_field Но вот: function create_anom(section,rad_anom,x,y,z,lv,gv,mode) -- con(section) if gv==nil then gv=db.actor:game_vertex_id() end if lv==nil then lv=db.actor:level_vertex_id() end if pos==nil then pos=db.actor:position() end local p_obj = alife():create(section,vector():set(x,y,z),lv,gv) local packet = net_packet() packet:w_begin(0) p_obj:STATE_Write(packet) packet:r_seek(2) local game_vertex_id = packet:r_u16() local cse_alife_object__unk1_f32 = packet:r_float() local cse_alife_object__unk2_u32 = packet:r_s32() local level_vertex_id = packet:r_s32() local object_flags = packet:r_s32() local custom_data = packet:r_stringZ() local story_id = packet:r_s32() local cse_alife_object__unk3_u32 = packet:r_s32() local shape_count = packet:r_u8() for i=1,shape_count do local shape_type = packet:r_u8() if shape_type == 0 then local center = packet:r_vec3() local radius = packet:r_float() else local box = packet:r_matrix() end end local restrictor_type = packet:r_u8() local cse_alife_custom_zone__unk1_f32 = packet:r_float() local cse_alife_custom_zone__unk2_u32 = packet:r_s32() local on_off_mode_enabled_time = packet:r_s32() local on_off_mode_disabled_time = packet:r_s32() local on_off_mode_shift_time = packet:r_s32() local offline_interactive_radius = packet:r_float() local artefact_spawn_places_count = packet:r_u16() local cse_alife_anomalous_zone__unk1_u32 = packet:r_s32() local last_spawn_time_present = packet:r_u8() -- if packet:r_elapsed() ~= 0 then abort("left=%d", packet:r_elapsed()) end packet:w_u16(game_vertex_id) packet:w_float(cse_alife_object__unk1_f32) packet:w_s32(cse_alife_object__unk2_u32) packet:w_s32(level_vertex_id) packet:w_s32(object_flags) if mode~=nil then custom_data = mode end packet:w_stringZ(custom_data) packet:w_s32(story_id) packet:w_s32(cse_alife_object__unk3_u32) packet:w_u8(1) packet:w_u8(0) local sphere_center = vector() sphere_center:set(0, 0, 0) packet:w_vec3(sphere_center) radius = rad_anom packet:w_float(radius) packet:w_u8(restrictor_type) packet:w_float(cse_alife_custom_zone__unk1_f32) cse_alife_custom_zone__unk2_u32 = bit_not(0) packet:w_s32(cse_alife_custom_zone__unk2_u32) packet:w_s32(on_off_mode_enabled_time) packet:w_s32(on_off_mode_disabled_time) packet:w_s32(on_off_mode_shift_time) packet:w_float(offline_interactive_radius) packet:w_u16(artefact_spawn_places_count) packet:w_s32(cse_alife_anomalous_zone__unk1_u32) if mode == nil then packet:w_u8(last_spawn_time_present) end p_obj:STATE_Read(packet, packet:w_tell()-packet:r_tell()) -- add_spot_on_map(p_obj.id,"red_location","Аномалия") return p_obj end Вызвать так: Ниже этого скрипта пиши: function anm_cr() create_anom("zone_mine_field",radius,x,y,z,lv,gv, nil) -- пропиши координаты и радиус. end Сам толком не проверял. Изменено 12 Июня 2010 пользователем TREWKO Поделиться этим сообщением Ссылка на сообщение
DiXares 1 Опубликовано 15 Июня 2010 (изменено) ФеНиКс: Впервые я могу что-то предложить: Ну во-первых тебе надо сделать проверку на дистанцию: local flobals = false function bind_hit_static() for a=1,65635,1 do local obj=level.object_by_id(a) if obj and string.find(obj:name(),"имя нпс") and not flobals then if obj:position():distance_to(db.actor:position()) < 10 then local h = hit (); h.power = 1; h.direction = vector():set (0, 0, 0); h.impulse = 0; h.draftsman = obj; h.type = hit.explosion; obj:hit (h); flobals = true end end end end Вот мы и получили хит... по моему))) Теперь надо сделать сообщение, получаем такое: local flobals = false function bind_hit_static() for a=1,65635,1 do local npc=level.object_by_id(a) if npc and string.find(npc:name(),"имя нпс") and not flobals then if npc:position():distance_to(db.actor:position()) < 10 then local h = hit (); h.power = 1; h.direction = vector():set (0, 0, 0); h.impulse = 0; h.draftsman = obj; h.type = hit.explosion; npc:hit (h); flobals = true local sactor = alife():actor() local cactor = level.object_by_id(sactor.id) cactor:give_game_news( "%c[255,255,1,1]Имя того, кто это скажет\\n%c[255,1,255,1]Дальше подойти нельзя! Опасная зона!", "ui\\ui_iconstotal", Frect():set(1245,517,83,47), math.random(1000, 2000), -- задержка появления сообщения. корейский рандом))) 5000 -- сколько продержится это сообщение. ) end end end end Но вот я не понял, эффект какой, пост эффект? Или аним? К сожалению не врубился, как прописать sid... Может: level.object_by_sid(номер сида)? Кстати: Засунул в скрипт test.script это: local lamps_marsh_vr_on = false function bind() local id, obj for id=0, 65535 do obj = level.object_by_id(id) if obj ~= nil and obj:section() == "lights_hanging_lamp" and string.find(obj:name(), "light_alarm_glass_0001") then local hl = obj:get_hanging_lamp() if hl ~= nil then if lamps_marsh_vr_on then hl:turn_on() else hl:turn_off() end end end end end Прописал в биндер сталка: test.bind() То есть, при запуске игры выключается лампочка в подвале у сидора. Но как только запускаю игру, игра идёт нормально... как только сидор махнул рукой - бац вылет! Вылет без лога. Удаляю скрипт--> игра работает без проблем. Результат выключения лампочки увидеть не могу, так как слишком быстро всё происходит. Изменено 15 Июня 2010 пользователем TREWKO Поделиться этим сообщением Ссылка на сообщение
DiXares 1 Опубликовано 16 Июня 2010 Ну или скриптом задавать координаты электры, типа: local obj = "barrel" local anm = "zone_flame" получаем какнить сам обьект... obj:position = anm:position Сам даже толком не знаю... Поделиться этим сообщением Ссылка на сообщение
DiXares 1 Опубликовано 16 Июня 2010 Получаем ид... или чё там... Поделиться этим сообщением Ссылка на сообщение
DiXares 1 Опубликовано 16 Июня 2010 И всё таки, как получить расстояние между объектами? Поделиться этим сообщением Ссылка на сообщение
DiXares 1 Опубликовано 25 Июня 2010 Как нет пакетом редактировать оружие? И возможно ли это? Поделиться этим сообщением Ссылка на сообщение
DiXares 1 Опубликовано 25 Июня 2010 Кстати, а когда биндер актора зависает, надо снимать штаны и бегать? А ели по реалу, как либо можно исправить зависания? Поделиться этим сообщением Ссылка на сообщение
DiXares 1 Опубликовано 27 Июня 2010 (изменено) Товарищи! Как сделать проверку типа: local tbls = {"wpn_pm_1","wpn_fn2000","wpn_ksvk","wpn_ak74"} local sec = "wpn_fn2000" function test() if sec есть таблице tbls then .. end end И ещё одно... когда читаю r_s32 значение(цифру: 32) из ini файла, то оно преобразовывается в скрипте в "32", а мне надо, что бы просто в 32, без кавычек... Возможно ли такое? Изменено 27 Июня 2010 пользователем TREWKO Поделиться этим сообщением Ссылка на сообщение
DiXares 1 Опубликовано 27 Июня 2010 (изменено) С чем может быть связан следующий вылет, при использовании LootMoneyMod?: FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: d:\stalker_sx\gamedata\scripts\lootmoney.script:28: bad argument #1 to 'random' (number expected, got nil) stack trace: В lootmoney.script, 24-28 строки, это: local DeafMoneyExperienced = ini_file("DiXarConfiguration\\SLDiXarConfiguration.dxfi"):r_string("SFDeathLootMoney", "SFDeafMoneyStalker") local parse_table2 = parse_data(DeafMoneyExperienced) local DeafMoneyExperiencedMin = tonumber(parse_table2[1]) local DeafMoneyExperiencedMax = tonumber(parse_table2[2]) elseif npc_rank == "experienced" and deadmoney >=500 then deadmoney=math.random(DeafMoneyExperiencedMin,DeafMoneyExperiencedMax) -------------------------------------------------------------------------------------------------------- Влад, функция работает, но как то странно выдаёт значения, сделал так: function test() for i=1,#tbls do if tbls[i] == sec then ODS("Тестовая функция сработала сразу и без помех") else ODS("Тестовая функция не сработала! ERROR!!! 404") end end end А в консоли ответ: Тестовая функция не сработала! ERROR!!! 404 Тестовая функция сработала сразу и без помех Тестовая функция не сработала! ERROR!!! 404 Тестовая функция не сработала! ERROR!!! 404 Аааа... всё понял! Просто не по назначению использую))) --------------------------------------------------------------------------------- И как правильно записать скрипт, что-бы заспавнить каждый из предметов в таблице? Установил причину вылета лутмани мода... читаю число денег из ini файла и надеюсь получить 4000, а получаю "4000". То есть скрипт получает nil и пытается сделать из него рандом... вылет... Дак всё таки, как эти скобки убрать? НО! Скрипт читает секцию для ранга новичок, без проблем! Как так может быть? Что за жесть? --------------------------------------------------------------------------------- И в чём отличие: Скобок: "wp", от скобок: 'wp'? Изменено 27 Июня 2010 пользователем TREWKO Поделиться этим сообщением Ссылка на сообщение
DiXares 1 Опубликовано 28 Июня 2010 (изменено) Товарищи! Тут такое дело, где то читал, что если тайник забить под завязку, то при приближении к нему начинаются фризы. То появилась идея: Где хранятся дынные о содержимом тайниках? Если отключить хранение данных о содержимом тайников в памяти и при открытии тайника читать содержимое тайника из ini файла, то фризы теоретически могут пропасть? Ini файл будет тупо лежать на жестаке и не функционировать, пока его не потревожат. А уже при ползаньи в тайнике и выходе из него - сохранять содержимое тайника в ini снова... и тут обнуляем информацию о содержимом тайников из памяти. Сделать ini файл по типу: [Treasures] esc_treasure_012=wpn_pn, wpn_toz34 bar_treasure_014=wpn_fn2000 Изменено 28 Июня 2010 пользователем TREWKO Поделиться этим сообщением Ссылка на сообщение
DiXares 1 Опубликовано 29 Июня 2010 (изменено) Кто сказал, что нельзя писать ini? Вы только скажите, где лежит юзанье тайника и я попробую сделать. Что то я не понял... а как заюзать каллбэк смерти? Пробовал вывести в скрипт, но получаю вылет: [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: d:\stalker_sx\gamedata\scripts\dixarsestalker.script:7: attempt to index local 'npc' (a nil value) Скрипт такой: function DeathCallback(npc, killer) local sactor = alife():actor() local cactor = level.object_by_id(sactor.id) cactor:give_game_news( "%c[255,255,1,1]DiXarDeathCallback\\n%c[255,1,255,1]"..killer.." убил "..npc:section(), "ui\\ui_iconstotal", Frect():set(1245,517,83,47), math.random(1, 1), 50000 ) end Вызываю из se_stalker.script(функция: se_stalker:on_death(killer)) Изменено 29 Июня 2010 пользователем TREWKO Поделиться этим сообщением Ссылка на сообщение