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

[SoC] Ковыряемся в файлах


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

В продолжение темы: вот скрипт, который спавнит аномалию. Как здесь вписать ее id? Чтобы он сохранялся и читался из нет-пакета?

function get_story_id_not_replay()
   local ST
   ST = xr_logic.pstor_retrieve(db.actor, "ScriptAnomId", 0)
   if type(ST) ~= "number" or ST == nil then
     ST = 9000
     xr_logic.pstor_store(db.actor, "ScriptAnomId", ST)
  end
  if type(ST) == "number" or ST ~= nil then
    ST = ST + 1
    xr_logic.pstor_store(db.actor, "ScriptAnomId", ST)
  end
  return tonumber(ST)
end

function create_anom(name_anom, posit_anom, lvid_anom, gvid_anom, radius_anom, power_anom)
   local obj = alife():create(name_anom, posit_anom, lvid_anom, gvid_anom)
-----------------------write----------------------
local packet = net_packet()
obj:STATE_Write(packet)
-----------------------load-----------------------
-- cse_alife_object
local game_vertex_id = packet:r_u16()
local distance = packet:r_float()
local direct_control = packet:r_u32()
local level_vertex_id = packet:r_u32()
local object_flags = packet:r_u32()
local custom_data = packet:r_stringZ()
local story_id = packet:r_u32()
local spawn_story_id = packet:r_u32()
-- cse_shape
local shape_count = packet:r_u8()
for i=1,shape_count do
local shape_type = packet:r_u8()
if shape_type == 0 then
-- sphere
local center = packet:r_vec3()
local radius = packet:r_float()
else
-- box
local box = packet:r_matrix()
end
end
-- cse_alife_space_restrictor
local restrictor_type = packet:r_u8()
-- cse_alife_custom_zone
local max_power = packet:r_float()
local owner_id = packet:r_u32()
local enabled_time = packet:r_u32()
local disabled_time = packet:r_u32()
local start_time_shift = packet:r_u32()
-- cse_alife_anomalous_zone
local offline_interactive_radius = packet:r_float()
local artefact_spawn_count = packet:r_u16()
local artefact_position_offset = packet:r_u32()
-- se_zone_anom
local last_spawn_time_present = packet:r_u8()
if (string.find (name_anom, 'zone_zharka_static') ~= nil
or string.find (name_anom, 'zone_witches_galantine') ~= nil
or string.find (name_anom, 'zone_mosquito_bald') ~= nil
or string.find (name_anom, 'zone_mincer') ~= nil
or string.find (name_anom, 'zone_gravi_zone') ~= nil
or string.find (name_anom, 'zone_buzz') ~= nil )
and packet:r_elapsed() ~= 0 then
abort("left=%d", left)
end
---------------------------save--------------------
-- cse_alife_object
packet:w_begin(game_vertex_id)
packet:w_float(distance)
packet:w_u32(direct_control)
packet:w_u32(level_vertex_id)
object_flags = bit_not(193)
packet:w_u32(object_flags)
packet:w_stringZ(custom_data)
packet:w_u32(get_story_id_not_replay())
packet:w_u32(get_story_id_not_replay())
-- cse_shape
packet:w_u8(1) -- количество фигур
packet:w_u8(0) -- тип фигуры: сфера
packet:w_vec3(vector():set(0, 0, 0))
if radius_anom ~= nil then
packet:w_float(radius_anom)
else
packet:w_float(1.0)
end
-- cse_alife_space_restrictor
packet:w_u8(restrictor_type)
-- cse_alife_custom_zone
if power_anom ~= nil then
packet:w_float(power_anom)
else
packet:w_float(max_power)
end
packet:w_u32(owner_id)
packet:w_u32(enabled_time)
packet:w_u32(disabled_time)
packet:w_u32(start_time_shift)
-- cse_alife_anomalous_zone
packet:w_float(offline_interactive_radius)
packet:w_u16(artefact_spawn_count)
packet:w_u32(artefact_position_offset)
-- se_zone_anom
packet:w_u8(last_spawn_time_present)
------------------------read------------------------
packet:r_seek(0)
obj:STATE_Read (packet, packet:w_tell())
end
-----------------------------------спавним аномалии-----------------------------------
function spawn_anom1()
this.create_anom('zone_witches_galantine_strong', vector():set(132.84954833984,8.5610275268555,-19.224378585815),1152755,4019, 3, 0.7)
end

 

 

Сталкер - наше всё!

PowerMonger

в gulag_escpase в конце у меня уже поставлено на бандиты вот

if gulag_type == "esc_bridge" then

return npc_community == "bandit"

end

 

if gulag_type == "esc_specnaz" then

return se_obj:profile_name() == "esc_soldier_specnaz"

end

 

if gulag_type == "esc_blokpost" then

return npc_community == "straj"

end

 

if gulag_type == "esc_killers" then

return npc_community == "killer"

end

 

if gulag_type == "esc_lager" then

return npc_community == "stalker"

end

 

if gulag_type == "esc_fabrika_bandit" then

return npc_community == "military"

end

 

if gulag_type == "esc_ambush" then

return npc_community == "bandit"

end

 

if gulag_type == "esc_corps" then

return npc_community == "stalker"

end

 

if gulag_type == "esc_assault" then

return npc_community == "stalker"

end

 

if gulag_type == "esc_stalker_camp" then

return npc_community == "stalker"

end

 

 

return false

end

 

  • Нравится 1

@AndrewMor, Тут ты можешь можешь только все zone_witches_galantine_strong удалить. Как вариант можешь создать уникальную аномалию, или:

 

по имени:


for a=10,65635,1 do
local obj=alife():object(a)
if obj and string.find(obj:name(),"имя_аномалии") then -- name = из all.spawn

-- Если надо удалить все, то используй obj:section_name()
alife():release(obj,true)
end
end

 

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

 

 


Тут ты можешь можешь только все zone_witches_galantine_strong удалить. Как вариант можешь создать уникальную аномалию, или:

Мне нужно удалить именно конкретные аномалии, которые я буду спавнить скриптом. Дать им уникальные id'ы, а потом по этим id/ам их удалить, также скриптово.

 

Хотя я могу эти аномалии и через all.spawn заспавнить, а удалить скриптово. Так даже удобнее будет. Спасибо, буду пробовать.

Сталкер - наше всё!

@AndrewMor, Поздно прочитал, тогда используй obj:section_name()

Только так, будет удалять все аномалии с такой секцией.

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

Есть тут 1 проблема: 

После убийства пси собаки (которую я заспавнил на новой локации) я получаю вылет: 

Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ...Oaie ?a?iiauey\gamedata\scripts\sim_statistic.script:12: attempt to index global 'xr_statistic' (a nil value)

Как исправить?

@MGS, 

ну очевидно же. В скрипте xr_statistic, скорее всего, синтаксическая ошибка.

Изменено пользователем Капрал Хикс

 

 


Function : CScriptEngine::lua_error

Если не уверен в написании скриптов, проверь их на ошибки с помощью программы LuaChecker.

Здравствуйте, сталкеры, и удачи, как в Зоне, так и в моддинге.

 

Я очень рад, что узнал об этом сайте вовремя, одновременно начав ковыряться в файлах S.T.A.L.K.E.R.'а. Раньше (года три назад) хорошо разбирался в конфигах и сделал небольшую модификацию, но потом забросил игру. Теперь снова решил окунуться с головой во вселенную S.T.A.L.K.E.R.'а. Но вот беда: за это время я забыл, где что находится и как делается... досада. Поэтому последовал вопрос: как сделать использование предметов в ТЧ и ЧН как в ЗП? Не мгновенным восстановлением здоровья аптечками, а постепенным и с возможностью установки времени лечения в конфиге. Сам в скриптах игры новичок, поэтому не злитесь, если глупыми вопросами достану.

 

Если не в ту тему попал или вопрос уже задавался, извините, ради Бога. Искал, искал, но ничего не нашёл. Заранее благодарен за помощь.

Заспавнил дверь на Затоне, как в ЗП в Железном лесу. При подключении логики двери - вылет:

Expression : motion_ID.valid()
Function : CKinematicsAnimated::ID_Cycle
File : E:\stalker\sources\trunk\xr_3da\SkeletonAnimated.cpp
Line : 136
Description : ! MODEL: can't find cycle:
Arguments :

 

Чего-то не хватает, анимации, что ли? И где ее взять?

Сталкер - наше всё!

Всем доброго здравия. Накопилась пара вопросов, по порядку. Использую стандартную ф-ю спавна alife():create и т.д. При спавне вместо 4х заявленных плотей появляется 3. Или вместо десяти девять не суть важно, но всегда на одну меньше. Не пойму куда девается одна единица. Можно конечно добавить лишнюю строчку и не морочаться, но хотелось бы разобраться. И второй вопрос: Наверное всем знаком РПК из соли rpk74_sk1, перенёс его в игру со всеми "хвостиками". Всё работает нормально, но, периодически возникает пачка красных строк в консоли can not find save ~ weapon_type(описание примерно). Как я понял это происходит при автосейве. Что это может значить, может кто сталкивался с подобным, тоже хотелось бы понять что не так. 

Безглючная работа компа и модов, зависит от присутствия у юзера драйверов mozgi.sys и pryami_hands.vxd.

 

@VVV32768, что касается недостачи одной спавненной единицы, то с 90% вероятностью могу сказать, что это неправильно составленная функция (спав, ведь происходит в цикле?).

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

  • Нравится 1

@VVV32768, Валер, скорее всего ствол не прописан вот в этом скрипте, weap.script

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

(спав, ведь происходит в цикле?)

Да безусловно, при заходе на локу. Вот сама функция 

alife():create("m_flesh_e",vector():set(107.92,-20.33,-287.06),1112414,4016)

А это шапка:

function main()

spawn_npc()

end

По пулемёту вот скрин:

%D0%A1%D1%82%D1%80%D0%BE%D1%87%D0%BA%D0%

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

 

Говоря про код, я имел ввиду весь код спавна вместе с циклом. Как ты предполагаешь нашу помощь не видя и не зная, что именно ты написал?

ColR_iT

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

Безглючная работа компа и модов, зависит от присутствия у юзера драйверов mozgi.sys и pryami_hands.vxd.

 

 

 

Что это может значить, может кто сталкивался с подобным, тоже хотелось бы понять что не так

Забыли прописать ствол в news_main.script в таблице типов оружия.

  • Нравится 2

Вообще-то я белая и пушистая...

Интересно, в оригинале я не нашёл такого скрипта news_main.script

Я тоже как-то спрашивал про эти строки, и мне советовали то что я написал, мне это вполне помогло, да и сейчас в моем моде таких в консоли нет, новое оружие прописано именно в weap. Ну может это просто совпадение. :unknw:

Изменено пользователем Хемуль36рус

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

Забыли прописать ствол в news_main.script

И то правда, вот ведь скрезол проклятый. Всё наладилось, спасибо ! По РПК вопрос снят.

не видя и не зная, что именно ты написал?

Да я уже постил по спавну в этой теме http://www.amk-team.ru/forum/index.php?showtopic=5525&p=801117 Не хотелось бы повторять посты а в остальном, спавн работает безупречно и нареканий к нему нет с моей стороны. В отличии от других вариантов стыкуется с любым модом не приводя к перекосам и фаталу.

P.S. 

А вот в АМК такие строки когда убьёшь нпс стволом который не прописан в news_main.script.

Хемуль36рус Кстати Саш, то над чем я сейчас работаю это Альта, а там все скрипты АМКашные.

 

 

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

Безглючная работа компа и модов, зависит от присутствия у юзера драйверов mozgi.sys и pryami_hands.vxd.

 

Хемуль36рус

А в чистой игре и не будет таких строк. А вот в АМК такие строки когда убьёшь нпс стволом который не прописан в news_main.script.

  • Нравится 1

Ковырял скрипт монорха, Охотники на вертолёты. В общем когда вертушки сбиты или улетели, НПС продолжает палить в воздух. Я так понял надо сбросить менеджер изменения состояния тела, но не пойму как, какая  команда нужна. Пробывал идл устанавливать стоит как истукан. Сохранялся, загружался, НПС (Толик) пошел в лагерь. Может работу гулага надо проиницилизировать не пойму.

ЗЫ

Сейчас НПС хорошо валит вертушки из пулемёта, оригинальный скрипт во обще не рабочий, из-за ошибок подсчёта точки упреждения, автор напутал арифметику векторов (та ещё пакость).

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

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

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

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

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

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

Войти

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

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

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