Перейти к контенту

Скриптование


Svoboда

Рекомендуемые сообщения

Вот есть скрипт спавна рабочей аномалии.

Есть скрипт спавна рестриктора.

А есть скрипт спавна источника света(вместе с моделью)?

Поделиться этим сообщением


Ссылка на сообщение

Как сделать типа массива объектов и занести в него все предметы актора?

Массив так делается?:

local massiv_objects = {}

Поделиться этим сообщением


Ссылка на сообщение

Это теперь понятно, а как отследить все объекты инвентаря?

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Сталкеры!

А EditBox может распознавать русскую кирилицу?

А ввод в него русского текста?

Возможен поиск русского слова из текста по типу:

if string.find("Оружие") содержится в EditBox:GetText then

end?

Изменено пользователем TREWKO

Поделиться этим сообщением


Ссылка на сообщение

Товарищи!

Чё то я не понял:

Мне надо проверить, есть ли в слоте с артефактами предмет...

Я так понимаю надо сделать:

local xf_table = db.actor:item_in_slot(Какой слот у артефактов?(Посмотрел,  у артов в конфигах вообще нет слота, но они ссылаются на af_base, но у него slot закомментирован, есть animation_slot))
if xf_table = "item_test"(вот как записать наличие одно предмета из таблицы(string.find? Но как?)?)

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Ага, понятно, спасибо!

Вот ещё, сделал новый параметр ГГ, и хочу вывести прогресс бар на ухд.

Вот что сделал:

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)

Изменено пользователем TREWKO

Поделиться этим сообщением


Ссылка на сообщение

Здравствуйте!

Имеется система вида:

[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

Поделиться этим сообщением


Ссылка на сообщение

Всем привет, у меня два вопроса:

Возможно такое(Если ГГ видит Долговца, то...)?:

if db.actor:see("dolg_regular") then

 

И возможна ли проверка попадения какого либо объекта в зону(аномалию, спейс рестриктор)?

Что то типа:

local obj = "wpn_pm"

local am = "zone_flame"

if obj попал в am then

Поделиться этим сообщением


Ссылка на сообщение

Larry76, простые мины палочкой вверх?

Если да, то это аномалии такие, типа мины.

В состоянии idle имеют партикл палочки, а в активном состоянии, когда актор вошёл в зону мины, активное, тоесть хит и партикл взрыва, звук.

Спавнить их в sdk или all.spawn, или скриптом.

Также спавнить, как и аномалии.

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Как можно сделать не большую зону, пр наведении на которую курсор будет надпись и при нажатии кнопки действия мы получим функцию.

 

Добавлено через 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

Сам толком не проверял.

Изменено пользователем TREWKO

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

ФеНиКс:

Впервые я могу что-то предложить:

Ну во-первых тебе надо сделать проверку на дистанцию:

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()

То есть, при запуске игры выключается лампочка в подвале у сидора.

Но как только запускаю игру, игра идёт нормально... как только сидор махнул рукой - бац вылет!

Вылет без лога.

Удаляю скрипт--> игра работает без проблем.

Результат выключения лампочки увидеть не могу, так как слишком быстро всё происходит.

Изменено пользователем TREWKO

Поделиться этим сообщением


Ссылка на сообщение

Ну или скриптом задавать координаты электры, типа:

local obj = "barrel"

local anm = "zone_flame"

получаем какнить сам обьект...

obj:position = anm:position

Сам даже толком не знаю...

Поделиться этим сообщением


Ссылка на сообщение

И всё таки, как получить расстояние между объектами?

Поделиться этим сообщением


Ссылка на сообщение

Как нет пакетом редактировать оружие?

И возможно ли это?

Поделиться этим сообщением


Ссылка на сообщение

Кстати, а когда биндер актора зависает, надо снимать штаны и бегать?

А ели по реалу, как либо можно исправить зависания?

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Товарищи!

Как сделать проверку типа:

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, без кавычек...

Возможно ли такое?

Изменено пользователем TREWKO

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

С чем может быть связан следующий вылет, при использовании 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'?

Изменено пользователем TREWKO

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Товарищи!

Тут такое дело, где то читал, что если тайник забить под завязку, то при приближении к нему начинаются фризы.

То появилась идея:

Где хранятся дынные о содержимом тайниках?

Если отключить хранение данных о содержимом тайников в памяти и при открытии тайника читать содержимое тайника из ini файла, то фризы теоретически могут пропасть? Ini файл будет тупо лежать на жестаке и не функционировать, пока его не потревожат.

А уже при ползаньи в тайнике и выходе из него - сохранять содержимое тайника в ini снова... и тут обнуляем информацию о содержимом тайников из памяти.

Сделать ini файл по типу:

[Treasures]

esc_treasure_012=wpn_pn, wpn_toz34

bar_treasure_014=wpn_fn2000

Изменено пользователем TREWKO

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Кто сказал, что нельзя писать ini? :D

Вы только скажите, где лежит юзанье тайника и я попробую сделать.

 

Что то я не понял... а как заюзать каллбэк смерти?

Пробовал вывести в скрипт, но получаю вылет:

[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))

Изменено пользователем TREWKO

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

×
×
  • Создать...