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

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

malandrinus, ясно. А не подскажешь, почему SetWidth(number) в ЗП, тоже выдает ошибку на метод? Может его можно чем заменить?

Что-то кончается, что-то начинается...

Ссылка на комментарий

Vano_Santuri,

SetWndSize(vector2)

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

malandrinus, точно, спасибо, помогло.

У меня такой вопрос, не мог бы ты подсказать, или дать готовый пример как делать последовательность через апдейт?

Т.е допустим выполняются 5 разных действий(функций) через 20 секунд каждая. Может есть готовый образец где?

Что-то кончается, что-то начинается...

Ссылка на комментарий

Vano_Santuri,

Готового примера нет, но это достаточно просто сделать. Заносишь функции в массив. Ставишь один счётчик на циклический перебор. Ставишь второй циклический счётчик на время 20 секунд. Каждый апдейт обновляешь второй счётчик и по достижении 20-и секунд заворачиваешь его в ноль. При этом обновляешь первый счётчик, выполняешь очередную функцию из массива, при достижении конца массива заворачиваешь его в ноль.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

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

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

[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

Ссылка на комментарий

TREWKO

 

Не уверен, что при попытке прочитать три числа через запятую как float прочитает то, что надо, или хотя бы не вылетит...

 

Попробуй читать это, как строку, и перевести строку в таблицу. Например так:

 

local pr = system_ini():r_string("ini_section","ff_bul")

local pr_table = parse_data(pr)

local mins = tonumber(pr_table[1])

local maxs = tonumber(pr_table[2])

local tiss = tonumber(pr_table[3])

get_console():execute("Значение №1: "..mins.." Значение №2: "..maxs.." Значение №3: "..tiss)

 

Функция parse data у меня прописана в _g.script-е для удобства вызова, разбивает строку в таблицу по запятым, если запятая внутри скобок, она игнорируется, т.е например конструкция area(-117,170,100,alive) будет воспринята как одно целое.

 

function parse_data(str)
    local string_parts = {}
    if str == nil then
        string_parts[1] = nil
        return string_parts
    end
    local str_beg,str_end
    str_end = str
    local split_pos = find_split_pos(str_end)
    while split_pos ~= nil do
        str_beg, str_end = split_string(str_end,split_pos)
        table.insert(string_parts,str_beg)
        split_pos = find_split_pos(str_end)
    end
    table.insert(string_parts,str_end)
    return string_parts
end

function find_split_pos(str)
    local split_pos = string.find(str,",")
    if split_pos == nil then
        return nil
    end
    local br1_pos = string.find(str,"(",1,true)
    local br2_pos = string.find(str,")",1,true)
    if br1_pos ~= nil and br2_pos ~= nil and br1_pos < br2_pos and split_pos > br1_pos then
        local str_end1 = string.sub(str,(br2_pos +1),string.len(str))
        if string.find(str_end1,",") ~= nil then
            split_pos = br2_pos + string.find(str_end1,",")
        else
            split_pos = nil
        end
    end
    return split_pos
end

function split_string(str,split_pos)
    local str_beg = (string.sub(str,1,split_pos-1))
    local str_end = string.sub(str,(split_pos+1),string.len(str))
    return str_beg,str_end
end

 

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Ссылка на комментарий

Мне интересно, что не так с этим скриптом, что при его подключении игра вылетает при начале новой игры?

 

function start_add_spawn() --список скриптовых функций, срабатывающих при начале новой игры
spawn_esc_guide()
spawn_bar_trader()
spawn_yan_ghost()
spawn_esc_engineer()
end

-- привет, сталкер!

-- проводник на Кордоне
function spawn_esc_guide()
local x= -186.924500
local y= -20.201139
local z= -151.780029
local level_vertex= 64274
local game_vertex_id= 46
alife():create("esc_guide_spawn",vector():set(x,y,z),level_vertex,game_vertex_id)
end

-- торговец подсобки Бара
function spawn_bar_trader()
local x= 116.236366
local y= -5.306613
local z= 20.705244
local level_vertex= 33910
local game_vertex_id= 1239
alife():create("bar_trader_spawn",vector():set(x,y,z),level_vertex,game_vertex_id)
end

-- Призрак в бункер экологов
function spawn_yan_ghost()
local x= 32.335987
local y= -11.726542
local z= -278.578430
local level_vertex= 54978
local game_vertex_id= 1480
alife():create("yan_ghost_spawn",vector():set(x,y,z),level_vertex,game_vertex_id)
end

-- ремонтник в подвальчик Кордона
function spawn_esc_engineer()
local x= -214.010605
local y= -23.182829
local z= -122.567764
local level_vertex= 39269
local game_vertex_id= 59
alife():create("esc_engineer_spawn",vector():set(x,y,z),level_vertex,game_vertex_id)
end

-- случайно удалили Волка из all.spawn
-- мне проще так вернуть
function spawn_esc_wolf()
local x= -199.693237
local y= -19.873648
local z= -136.582733
local level_vertex= 52973
local game_vertex_id= 57
alife():create("esc_wolf_spawn",vector():set(x,y,z),level_vertex,game_vertex_id)
end

 

 

Log:

FATAL ERROR

[error]Expression    : g_uiSpotXml->NavigateToNode(path_base,0)
[error]Function      : CMapLocation::LoadSpot
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\map_location.cpp
[error]Line          : 78
[error]Description   : XML node not found in file map_spots.xml
[error]Arguments     : alife_presentation_stranger


stack trace:

 

Ссылка на комментарий

Мне кажется все из за волка

1 в алл спавне задается его стори ид

2 в алл спавне условия нахождения его в лагере

 

впрочем легко проверить попробуй подключать свои скрипты по одному :big_boss:

Ссылка на комментарий

подскажите что писать в логике, спавню скриптом НПС в ЗП, а он разговаривать не хочет,

спавн через смарт-терраин для меня не выход

Строгое предупреждение от модератора n6260
Юзаем заглавные буквы.
Изменено пользователем n6260
Сюжетное продолжение чистого неба
Зона обр.2010г.
S.T.A.L.K.E.R.-Расширение территорий

 

Ссылка на комментарий

Expression : assertion failed

Function : CActorCondition::UpdateTutorialThresholds

File : E:\stalker\sources\trunk\xr_3da\xrGame\ActorCondition.cpp

Line : 404

Description : ai().script_engine().functor<LPCSTR>(cb_name,fl)

Помогите пожалуйста понять суть вылета и его причину

Замедляю полураспад души стержнями музыки

Ссылка на комментарий

Ирбис, почему все думают что на этом форуме одни экстрасенсы? Не знаешь?

Где:

1 условия вылета.

2 какие изменения вносились перед вылетом.

3 в какой из игр происходит вылет.

4 версия игры.

Научитесь в конце концов задавать вопросы нормально, а не лишь бы спросить.

Возможно всё, ну или почти всё.
Ссылка на комментарий

Вылет на ТЧ 6 патч лицензия +Аи пак+напарники.Вылет абсолютно в разных местах,но проявляется приблизительно при скоплении более 9 живых существ рядом с главным героем.Я не могу понять суть лога ошибки,что он обозначает и где копать.

Изменено пользователем Ирбис

Замедляю полураспад души стержнями музыки

Ссылка на комментарий
Function : CActorCondition::UpdateTutorialThresholds

File : E:\stalker\sources\trunk\xr_3da\xrGame\ActorCondition.cpp

Description : ai().script_engine().functor<LPCSTR>(cb_name,fl)

Проверь, на месте ли колбеки на обучающие сообщения в файле _g.script. Их имена:

on_actor_critical_power

on_actor_critical_max_power

on_actor_bleeding

on_actor_satiety

on_actor_radiation

on_actor_psy

on_actor_cant_walk_weight

on_actor_weapon_jammed

Может какого-то нет или там что-то не в порядке.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Всем привет,

Спавнил аномалии в рандомных точках на трех локациях (ЧАЭС,Припять(из ТЧ) и Затон ) таким скриптом(для каждой локи свой файл)

local anoms = {

"zone_mine_thermal",

"zone_mine_electric_weak",

"zone_mine_electric_strong",

"zone_mine_acidic",

"zone_mine_acidic",

"zone_mine_gravitational_weak",

"zone_mine_gravitational_strong",

"zone_mine_gravitational_strong",

"zone_mine_gravitational_strong"

}

 

 

 

function random_spawn1()

for i=1,500 do

local section = anoms[math.random(table.getn(anoms))]

local var = spawn_anom(section,

math.random(1,6),

level.vertex_position(math.random(1,1851251)),

math.random(1,1851251),

math.random(0,317),

math.random(1,3))

end

end

function spawn_anom(anom_name,plosh,position,level_vertex_id,game_vertex_id,powers_a,time

_dangeros)

local obj = alife():create(anom_name,position,level_vertex_id,game_vertex_id)

local pac = net_packet()

obj:STATE_Write(pac)

local game_vertex_id = pac:r_u16()

local distance = pac:r_float()

local direction = pac:r_u32()

local level_vertex_id = pac:r_u32()

local object_flags = pac:r_s32()

local custom_data = pac:r_stringZ()

local story_id = pac:r_s32()

local spawn_story_id = pac:r_s32()

local shape_count = pac:r_u8()

for i=1,shape_count do

local shape_type = pac:r_u8()

if shape_type == 0 then

local center = pac:r_vec3()

local plosh = pac:r_float()

else

local box = pac:r_matrix()

end

end

local restrikror_type = pac:r_u8()

local powers = pac:r_float()

local owner_id = pac:r_s32()

local on_off_mode_enabled_time = pac:r_u32()

local on_off_mode_disabled_time = pac:r_u32()

local on_off_mode_shift_time = pac:r_u32()

local offline_interactive_radius = pac:r_float()

local artefact_spawn_places_count = pac:r_u16()

local artefact_position_offset = pac:r_s32()

local last_spawn_time_present = pac:r_u8()

if pac:r_elapsed()~= 0 then

abort("left=%d",pac:r_elapsed())

end

pac:w_begin(game_vertex_id)

pac:w_float(distance)

pac:w_u32(direction)

pac:w_u32(level_vertex_id)

pac:w_u32(object_flags)

pac:w_stringZ(custom_data)

pac:w_s32(story_id)

pac:w_s32(spawn_story_id)

pac:w_u8(1)

pac:w_u8(0)

local sphere_center = vector()

sphere_center:set(0,0,0)

pac:w_vec3(sphere_center)

pac:w_float(plosh)

pac:w_u8(restrikror_type)

if powers_a ~= nil then

powers = powers_a

end

pac:w_float(powers)

if time_dangeros == nil then

owner_id = bit_not(0)

else

owner_id = time_dangeros

end

pac:w_u32(owner_id)

pac:w_u32(on_off_mode_enabled_time)

pac:w_u32(on_off_mode_disabled_time)

pac:w_u32(on_off_mode_shift_time)

pac:w_float(offline_interactive_radius)

pac:w_u16(artefact_spawn_places_count)

pac:w_u32(artefact_position_offset)

pac:w_u8(last_spawn_time_present)

pac:r_seek(0)

obj:STATE_Read(pac,pac:w_tell())

return obj

end

 

 

 

 

 

 

Вызывал черес db.script

function add_actor( obj )

actor = obj

actor_proxy:net_spawn( obj )

add_obj( obj )

if not db.actor:has_info("anom_spawned")

then

pripyat1.random_spawn()

aes1.random_spawn_aes1()

opx.random_spawn1()

this.actor:give_info_portion("anom_spawned")

end

end

 

 

 

В итоге на ЧАЭС аномалии спавнятся нормально, в Припяти ни одной, а при переходе на затон вылет

FATAL ERROR

 

[error]Expression : it!=WeatherFXs.end()

[error]Function : CEnvironment::SetWeatherFX

[error]File : D:\prog_repository\sources\trunk\xrEngine\Environment.cpp

[error]Line : 311

[error]Description : Invalid weather effect name.

[error]Arguments : ©

 

 

stack trace:

 

 

чем это лечить?

 

ЗЫ: спавн происходил в ЗП

Изменено пользователем Горчаков Антон
Ссылка на комментарий

Горчаков Антон

 

Что касается вылета на Затоне - проверь погоду, возмущается по поводу неверного погодного эффекта. Очень не уверен, что аномалии к этому вообще причастны.

 

По поводу отсутствия аномалий на Припяти, и почти на 100% уверен, на Затоне та же картина - тут дело, похоже, в вызове функций спавна. Ты же на ЧАЭС первый раз вызвал, я не ошибаюсь?

Проблема в том, что для определения позиций спавна ты используешь level.vertex_position(n). Метод нужный, но есть одно НО: он работает только для вертексов, расположенных на данной локации. На этой локации все и будет в порядке - аномалии будут в случайных местах, но привязаны к АИ-сетке, читай - к террейну.

На других локациях они тоже должны заспавниться, и тоже будут привязаны к террейну, но к террейну первой локации, на которой функция была вызвана. То есть скорее всего, либо под уровнем, либо над ним, Чтобы более-менее совпали все три координаты двух вертексов с разных локаций, да еще и аномалия попала именно на этот вертекс - очень маловероятно.

Так что перед спавном надо делать проверку, какой именно текущий уровень, и спавнить аномалии только для него.

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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