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

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


Svoboда

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

Habaromaniac, в сюжете(оригинала тч) все переходы идут через аll.sраwn, а координаты брать через скрипт. Замени в скрипте ui_main_menu функцию function main_menu_on_button_return_game()

local console = get_console()

console:execute("main_menu_off")

end

на

function main_menu_on_button_return_game()

local console = get_console()

local text

local vid

local gvid

local a = vector()

local text

a = db.actor:position()

vid = db.actor:level_vertex_id()

gvid = db.actor:game_vertex_id()

text = "Позиция ГГ:nx= "..a.x.."\\ny = "..a.y.."\\nz= "..a.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid

news_manager.send_tip(db.actor, text, nil, nil, 30000)

console:execute("main_menu_off")

end и тебе придет смс с координатами ГГ!

Удачи!

Legend of Stalker

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


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

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

Legend of Stalker

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


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

Artos, а вот и мой

function create_level_changer(

p_story_id, -- STORY_ID нового level_changer (понадобится нам позже)

p_position, -- вектор, координаты точки, в которой будет располагаться центр нового level_changer

p_lvertex_id, -- level_vertext_id - идентифицируют уровень, на котором будет создан level_changer

p_gvertex_id, -- game_vertext_id

p_dest_lv, -- level_vertex_id - идентифицируют уровень, на будет перебрасывать игрока

p_dest_gv, -- game_vertex_id

p_dest_pos, -- координаты точки, в которой на новом уровне окажется игрок

p_dest_dir, -- направрение взгляда игрока

p_dest_level, -- название уровня, например "L11_Pripyat"

p_silent -- следует задать 1, чтобы подавить вопрос о смене уровня (автоматический переход)

)

local obj = alife():create("level_changer", p_position, p_lvertex_id, p_gvertex_id)

level.map_add_object_spot(obj.id, "level_changer", "")

local packet = net_packet()

obj:STATE_Write(packet)

-- свойства cse_alife_object

local game_vertex_id = packet:r_u16()

local cse_alife_object__unk1_f32 = packet:r_float()

local cse_alife_object__unk2_u32 = 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 axis_x_x = packet:r_float()

local axis_x_y = packet:r_float()

local axis_x_z = packet:r_float()

local axis_y_x = packet:r_float()

local axis_y_y = packet:r_float()

local axis_y_z = packet:r_float()

local axis_z_x = packet:r_float()

local axis_z_y = packet:r_float()

local axis_z_z = packet:r_float()

local offset_x = packet:r_float()

local offset_y = packet:r_float()

local offset_z = packet:r_float()

end

end

-- свойства cse_alife_space_restrictor

local restrictor_type = packet:r_u8()

-- свойства cse_level_changer

local dest_game_vertex_id = packet:r_u16()

local dest_level_vertex_id = packet:r_u32()

local dest_position = packet:r_vec3()

local dest_direction = packet:r_vec3()

local dest_level_name = packet:r_stringZ()

local dest_graph_point = packet:r_stringZ()

local silent_mode = packet:r_u8()

packet:w_begin(game_vertex_id) -- game_vertex_id

packet:w_float(cse_alife_object__unk1_f32)

packet:w_u32(cse_alife_object__unk2_u32)

packet:w_u32(level_vertex_id) -- level_vertex_id

packet:w_u32( bit_not(193) ) -- object_flags = -193 = 0xFFFFFF3E

packet:w_stringZ(custom_data)

packet:w_u32(p_story_id) -- story_id

packet:w_u32(spawn_story_id)

packet:w_u8(1) -- количество фигур

packet:w_u8(1) -- тип фигуры: box

packet:w_float(2) -- axis_x_x

packet:w_float(0) -- axis_x_y

packet:w_float(0) -- axis_x_z

packet:w_float(0) -- axis_y_x

packet:w_float(4) -- axis_y_y

packet:w_float(0) -- axis_y_z

packet:w_float(0) -- axis_z_x

packet:w_float(0) -- axis_z_y

packet:w_float(4) -- axis_z_z

packet:w_float(0) -- offset_x

packet:w_float(0) -- offset_y

packet:w_float(0) -- offset_z

packet:w_u8(3) -- restrictor_type

packet:w_u16(p_dest_gv) -- destination game_vertex_id

packet:w_u32(p_dest_lv) -- destination level_vertex_id

packet:w_vec3(p_dest_pos) -- destination position

packet:w_vec3(p_dest_dir) -- destination direction (направление взгляда)

packet:w_stringZ(p_dest_level) -- destination level name

packet:w_stringZ("start_actor_99") -- some string, always const

packet:w_u8(p_silent) -- 1 for silent level changing

packet:r_seek(0)

obj:STATE_Read(packet, packet:w_tell())

end

 

а вот

function zat_to_lab()

create_level_changer(2000, vector():set(-313.8479309082,18.318702697754,632.98205566406),322208,212, -- где переход

934,2202, vector():set(-79.5249557495117,42.8666152954102,463.847686767578), -- куда переходить

vector():set(0.0,0.0,-1.0), -- направление взгляда при появлении

"av_peshera",1) -- на какую локу и запрос (0 - появится вопрос, 1 - автоматический переход)

news_manager.send_tip("Затон -> Лабиринт", "Новый путь!", 2, 25, "diagterev")

end

 

Напомню, левел ченжер хочу создать в зп, творю на сгм 1.7

Legend of Stalker

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


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

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

Legend of Stalker

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


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

Всем здравия желаю! Наверное это наиболее подходящая тема... Создал новый класс, но при старте новой игры получаю вылет

FATAL ERROR

 

[error]Expression : !m_error_code

[error]Function : raii_guard::~raii_guard

[error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp

[error]Line : 748

[error]Description : d:\x-ray cop sdk\editors\gamedata\scripts\_g.script:562: table index is nil

 

 

stack trace:

 

 

 

Прилагаю подробные коды:

cs_register (object_factory, "CDemon", "se_monster.se_monster", "SM_DMN", "demon_s")

 

 

monster_classes = {

...

[clsid.demon_s] = true} -- вот на эту строчку игра и ругается

 

 

 

function is_monster_demon(actor, npc)

return npc:clsid() == clsid.demon_s

end

 

monster_classes = {

...

[clsid.demon_s ] = "demon", -- в конце предыдущей строки запятая была изначально, сделал по анологии

}

 

C++ class clsid {

...

const demon_s = 400;

};

C++ class CDemon : CGameObject {

 

CDemon ();

 

function Visual() const;

function _construct();

function getEnabled() const;

function net_Import(net_packet&);

function net_Export(net_packet&);

function getVisible() const;

function net_Spawn(cse_abstract*);

function use(CGameObject*);

};

 

П.с Платформа ЗП

Вопроса два:

1) Нужно ли добавлять класс в lua_help.script

2) Собственно что я не так сделал?

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

Legend of Stalker

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


Ссылка на сообщение
Artos, сначала я естесственно почитал вот это:

 

Регистрация скриптовых классов с помощью object_factory. Делал исходя из этого, но возможно некоторые аспекты я все же упустил... А если поменять CDemon на допустим CCat то я так понимаю движок это "съест"?

Legend of Stalker

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


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

Artos, задумка собственно заставить демона летать, + чтобы он сидел на родных анимках из метро. Но чую это не выйдет... Т.к я пока подставил за место CDemon класс CFracture, то собственно возникает вопрос: где нужно регистрировать класс CDemon? Я перед этим спрашивал в ковырялке зп, где хранится список анимаций для монстров?, т.к я хочу создать свой собственный список анимаций, вот собственно и вся цель ковыряния классов.

П.с. При подстановке в конфиге допустим за место класса SM_BLOOD класса SM_BOAR, получаем вылет, мол нехватает анимки какой-нибудь. Вот и пришел к выводу что список анимаций зависит от класса

Legend of Stalker

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


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

Artos, возможно я опять что-то упустил, но при старте новой игры происходит вылет:

Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : d:\x-ray cop sdk\editors\gamedata\scripts\_g.script:562: table index is nil

Вылет происходит в любом случае, даже если демон и не заспавнен. Но! Если поменять класс демона на класс излома(CDemon на CFracture), то вылет исчезнет. Ясное дело что такая затычка несовсем правильная, встает вопрос, почему? Коды приводил выше

Legend of Stalker

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


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

Вопрос к знатокам моддинга. Возможно ли как либо отследить время проигрываемой анимации у монстра? Например отследить анимацию у снорка stand_run_2, а затем продлить проигрыш этой анимации принудительно, чтобы анимация отыгрывалась полностью, т.к в часто бывает что кусок анимации не отыгрывается. Буду очень благодарен

Legend of Stalker

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


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

Artos, а нельзя ли сделать немоного по другому, наоборот, т.е "если монстр занят каким либо действием, то берем управление на себя и отпускаем его если дистанция до игрока допустим 10 метров"? И еще, недавно начали происходить произвольные вылеты со строчкой в логе(точного лога пока нет):

application is aborting

Что это примрно может быть? Понимаю что пальцем в небо, но может мысли какие и есть...

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

Legend of Stalker

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


Ссылка на сообщение
*Shoker*, это началось вроде с попытки вставить новую анимацию смарткавера из чн в зп, но в игре оно почему-то нехотело нормально отыгрыватся и я отрубил вроде как все хвосты к чн-вским каверам, но вылеты остались, причем вылет происходит произвольно, либо во время синхронизации либо где-то где стоит кавер с новой анимацией. Интерестно то, что в omf-файлах сами анимации есть, но проигрыватся они не хотели не в игре, не в сдк, что странно... Изменено пользователем ziStam

Legend of Stalker

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


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

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