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

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

Скажите пожалуйста, как по нет-пакету получить имя профиля сталкера?

и можно ли его получить так:

 

 

function get_npc_character(p_obj)
if p_obj then
local params = read_stalker_params(p_obj)
character_profile = params.character_profile
return character_profile
end
end

 Или вот так:

 

 

function get_npc_name(p_obj_id)
local obj = alife():object(p_obj_id)
if not obj then return "none" end
stpk:w_begin(0)
stpk:r_seek(2)
obj:STATE_Write(stpk)
local game_vertex_id = stpk:r_u16()
local distance = stpk:r_float()
local direct_control = stpk:r_s32()
local level_vertex_id = stpk:r_s32()
local object_flags = stpk:r_s32()
local character_profile = stpk:r_stringZ()
if not character_profile then return "none" end
return character_profile
end

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

level.prefetch_sound() в SOC вообще работает ?

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

Но результатов от того, что он там делал - не вижу.

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

Кажется да, в ТЧ не работает. Проверял на чистой версии 1.004

 

! Cannot find saved game ~#i#:#timer [load_sound] send [esc_lager1] time 151900.640625
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_lager2] time 76861.28125
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_lager3] time 6158.66796875
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_lager4] time 6098.7456054688
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_lager5] time 49973.76953125
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_lager6] time 5801.388671875
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_lager7] time 5827.8383789063
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_wolf] time 51055.2109375
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_specnaz1] time 120311.9296875
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_specnaz2] time 6131.2065429688
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_specnaz3] time 6202.162109375
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_specnaz4] time 6135.0942382813
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_specnaz5] time 6163.4208984375
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_specnaz6] time 6137.5444335938
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_blokpost_soldier1] time 120561.21875
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_blokpost_soldier2] time 6199.7275390625
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_blokpost_soldier3] time 7081.654296875
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_blokpost_soldier4] time 6173.3525390625
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_blokpost_soldier5] time 6077.3876953125
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_blokpost_soldier6] time 6117.654296875
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_blokpost_soldier7] time 6213.7060546875
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_blokpost_soldier8] time 6071.0737304688
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_blokpost_soldier9] time 6168.5727539063
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_blokpost_commander] time 6136.7456054688
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_shustryi] time 5780.669921875

 

 

 

 

! Cannot find saved game ~#i#:#timer [prefetch_sounds] send [end] time 8899533
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_lager1] time 215009.796875
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_lager2] time 37829.171875
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_lager3] time 81040.7421875
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_lager4] time 7518.0048828125
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_lager5] time 5922.2114257813
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_lager6] time 59345.6171875
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_lager7] time 5590.4750976563
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_wolf] time 5426.0971679688
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_specnaz1] time 93804.1171875
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_specnaz2] time 5843.2153320313
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_specnaz3] time 5842.4467773438
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_specnaz4] time 5840.8466796875
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_specnaz5] time 5830.0473632813
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_specnaz6] time 5896.013671875
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_blokpost_soldier1] time 49885.50390625
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_blokpost_soldier2] time 5872.9169921875
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_blokpost_soldier3] time 6959.5307617188
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_blokpost_soldier4] time 6058.220703125
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_blokpost_soldier5] time 5916.9033203125
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_blokpost_soldier6] time 5829.4350585938
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_blokpost_soldier7] time 5931.599609375
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_blokpost_soldier8] time 5905.4916992188
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_blokpost_soldier9] time 5933.857421875
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_blokpost_commander] time 5909.751953125
! Cannot find saved game ~#i#:#timer [load_sound] send [esc_shustryi] time 5658.0590820313

 

 

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

звуки грузились через npc:add_sound() ?

 

Вообще, если взять какую-то тушку, и скормить ей ВСЕ - будет вполне себе кэширование.

Но я не разобрался, что должно быть в параметрах. Там в скриптике была попытка сделать тупо (вместо prefetch в preload() было тупо add_sound по всем подкаталогам, но оно грузит только первый, от остальных отказывается.

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

Кэширование пытался сделать через level.prefetch_sound, потом попробовал через db.actor:add_sound(), но там во втором случае вообще ничего не происходило, т.к. даже по вермени проходило всег 0,3 сек. против 9 сек через level.prefetch_sound. Больше не копал.

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

Делал тоже самое, вот только результат не очень понравился. После 5-ти минут игры она пытается востановить кеш, и сразу же происходит вылет.

x202.gif

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

Подозреваю, что для второго варианта должны быть какие-то "идеологически правильные" id.

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

Wookie, для класса io существует метод lines, принимающий в качестве аргумента имя файла, и возвращает функцию итератор, которая при вызове возвращает по одной строку из указанного файла, как только достигнет конца файла - вернёт nil, при этом файл будет закрыт.
Точно не помню, но кажется можно вызывать и без аргумента, в таком случае будет обрабатываться стандартный поток ввода, по окончании итерации ничего закрываться не будет.

for line in io.lines("filenNme") do ... end

Это работает на чистом Lua, но и на ЗП должно работать.

Изменено пользователем ColR_iT
  • Нравится 1
Ссылка на комментарий

Всем привет. Можете подсказать, у меня ничего не получается. Я пытаюсь сделать удаление заспавненного скриптом телепорта, при поднятии предмета. Подскажите пожалуйста что и куда прописывать нужно. Заранее благодарен.

 

Функцию checking_taken_item я изучил он делает все, спавнит нпс и т.д. НО никак я с ее помощью не могу удалить телепорт заспавненный скриптом вот моя функция удаления телепорта:

function delete_teleport_kastet(story_id)   local se_obj = alife():story_object(97125)    if se_obj then       alife():release(se_obj)       news_manager.send_tip(db.actor, "Телепорт отключен", nil, nil, 30000)    endendfunction checking_taken_item77(obj)   if obj:section()=="quest_case_kastet" then delete_teleport_kastet(obj) endend

 

 

Извиняюсь но спойлер что то не работает.

 

Удивительно, но работает не только спойлер, но и остальные теги.

ColR_iT

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

АМК..1.4.1..+..Народная..Солянка..от..19.04.10..дополнение..14.08.10..+..патч..3.09.10..+..DMX..1.3.5..+..ADDON..BY..SARUMAN

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

Вот моя функция спавна телепорта:

function spawn_tele_kastet1()

local se_obj = alife():create("m_teleport_esc_kastet1",vector():set(-4.934,0.633,267.286),272133,183)

local t = amk.get_anomaly_data(se_obj)

t.sid = 97128

amk.set_anomaly_data(t, se_obj)

end

 

И еще, в функции что я писал выше я сделал опечатку, там СИД не 97125 а 97 128.

Как удалить телепорт подскажите пожалуйста.

АМК..1.4.1..+..Народная..Солянка..от..19.04.10..дополнение..14.08.10..+..патч..3.09.10..+..DMX..1.3.5..+..ADDON..BY..SARUMAN

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

Небольшой вопрос. Какая функция лучше для определения текущей игровой локации на апдейте? Проверять локации через level.name()== "l01_escape" или может по alife():level_name("l01_escape")?

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

Первой конечно. Вторая используется по-другому: alife():level_name(level_id), где level_id можно получить несколькими способами, один из них:
game_graph():vertex(obj:game_vertex_id()):level_id()

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

В arhara_dialog.skript телепорт удаляется через такую функцию:

function delete_teleport_baza_vxod(story_id)
   local se_obj = alife():story_object(17000)
   if se_obj then
    alife():release(se_obj)
    news_manager.send_tip(db.actor, "Телепорт на входе в базу отключен", nil, nil, 30000)
   end
end

function checking_taken_item45(obj)
   if obj:section()=="kluch_dell_teleport" then delete_teleport_baza_vxod(obj)
   end
end

Я делаю такую же функцию, но у меня телепорт не удаляется. Подскажите пожалуйста может быть я что то не так делаю?

P.S. Вот моя функция СПАВНА телепорта :

function spawn_tele_kastet2()
   local se_obj = alife():create("m_teleport_esc_kastet2",vector():set(21.189,0.585,256.948),299742,182)
   local t = amk.get_anomaly_data(se_obj)
   t.sid = 97129
   amk.set_anomaly_data(t, se_obj)
end

 

Используй тег [cоdе] для выделения кода в тесте.

В шапке об этом написано. В следующий раз удалю пост.

ColR_iT

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

АМК..1.4.1..+..Народная..Солянка..от..19.04.10..дополнение..14.08.10..+..патч..3.09.10..+..DMX..1.3.5..+..ADDON..BY..SARUMAN

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

Есть вылет:

FATAL ERROR
 
[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\priquel\sources\engine\xrServerEntities\script_engine.cpp
[error]Line          : 180
[error]Description   : <no expression>
[error]Arguments     : LUA error: ...stalker clear sky\gamedata\scripts\os_respawn.script:49: attempt to call method 'alive' (a nil value)
 
 
stack trace:

Вот фрагмент из os_respawn:

local obj = alife():object(k)  --получаем объект по его Id
        local name = oldstory.get_npc_character(obj) --тут получаем имя профиля сталкера(100% работает)
        if obj and name==p_name then  -- if obj это типа проверка что obj не равен nil?
Вылет >       if obj:alive() then   --по вылету выходит, что не может применить alive к obj = nil ? 
                cnt = cnt+1
            else
И что же тут не так?
Ссылка на комментарий

Странно как-то. Должно работать. Попробуй так:

 

if obj.alive and obj:alive() then
  cnt = cnt + 1

 

 

Возможно obj не имеет метода alive, т.е. это какой-то объект, который живым быть не может, автомат например. Хотя тогда бы и лог другой был. Ещё функцию oldstory.get_npc_character показал бы.

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

Давно со скриптами сталкера не работал, мозги немного заплыли жиром.

Хочу попробовать "грубо" реализовать тело игрока от первого лица через физ объект с анимациями, но для этого нужно решить некоторые проблемы, в частности ни у кого нет идей каким образом можно двигать физ. объект (коллизия у него будет отключена) 

вместе с игроком? Функции телепортации для физ. объектов вроде как нету, пока рассматриваю вариант пытаться двигать объект за игроком через физику, но это будет то ещё извращение. 

Работаю на ЧН, но сойдёт и ЗП вариант.

 

Как вариант - посмотри реализацию грави-пушки.

ColR_iT

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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

А подскажите плз, можно ли сделать так, чтобы каждый раз при заходе на уровень (для ЗП) один раз выполнялся определенный скрипт. Пробовал по вот этому методу http://www.amk-team.ru/forum/index.php?act=findpost&pid=472142, но наверное в ЗП это не работает, у меня не получилось.

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

Подскажите, пожалуйста.
Ситуация такая: нужно сохранять 2 таблицы:
table1 = {[1] = {id_a=<1..65535>, numb=<1..8>, id_b=<1..65535>}, [2] = {id_a=<1..65535>, numb=<1..8>, id_b=<1..65535>} ...}
table2 = {[1] = {id=<1..65535>, c=<1..1000> }, [2] = {id=<1..65535>, c=<1..1000> } ...}
Запас по числу элементов [1],[2]... желательно 40+.
Пробовал использовать функции amk.save_table, amk.load_table. Я так понимаю, они переводят таблицы в строку, затем обратно.
По мере заполнения таблиц получаю либо зависание при сохранении, либо вылет при попытке загрузки (чаще).
С нет-пакетами знаком плохо.
Может есть другие готовые и более подходящие функции для хранения таблиц? Или можно на упомянутых как-то по-другому организовать таблицы (разбить, исключить подтаблицы...)?
Или, если единственный вариант - разбираться с нет-пакетами, - подскажите, какие функции и где (из каких модов) посмотреть.
Спасибо.

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

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

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

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

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

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

Войти

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

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

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