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

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


Svoboда

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

Ребята, как сделать таймер без вывода на худ, время которого подойдет к концу и выдается инфопоршень?
Я делаю мод на АМК

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

Ранее был известен под ником BoBaH_671.

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


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

Подскажите плиз, в чем ошибка? Я сделал непися, который ну типа должен застрелиться, вот файл с логикой:

[smart_terrains]
none = true

[logic]
active = remark1

[remark1]
target = 6
anim = wait
def_state_standing = ward
danger = danger_condition@maroder_boss
on_actor_dist_le_nvis = 2 | remark2

[remark2]
target = actor
anim = suicide
snd = zombied_fight_attack

meet = no_meet
danger = danger_condition@maroder_boss
on_signal = sound_end | remark3

[remark3]
target = actor
anim = suicide
meet = no_meet
danger = danger_condition@maroder_boss
on_timer = 500| remark4 %=vovan.valter_shot%

[remark4]
target = actor
anim = suicide
meet = no_meet
danger = danger_condition@maroder_boss
on_timer = 150| %=kill%

[danger_condition@maroder_boss]
ignore_distance = 0
ignore_distance_corpse = 0

 

И вот когда я подхожу к нему, через некоторое время происходит вылет:

Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line : 73
Description :
Arguments : LUA error: ....r. - shadow of chernobyl\gamedata\scripts\_g.script:1121: bad argument #2 to 'format' (string expected, got no value)

 

А когда я убираю из логики строку %=vovan.valter_shot% все нормально работает, он сдыхает! Но мне надо еще звук выстрела, вот сама функция:

 

function valter_shot()
local snd_obj = xr_sound.get_safe_sound_object([[weapons\t_desert_eagle_shot]])
snd_obj:play(db.actor, 0, sound_object.s2d)
end

 

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

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

Ранее был известен под ником BoBaH_671.

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


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

Народ, кто подскажет: как создать переход с локи на локу?


Так, уже все сделал с готовыми скриптами... Но токо что означают эти цифры?

 

 

 

function create_agro_taynik() 
-- создается переход c АГРОПРОМА В ТАЙНИК СТРЕЛКА 
if (not has_alife_info( "teleport_to_taynik" )) then 
y_level.create_level_changer(60000, vector():set( -45.089,-0.637,-34.386 ),194126,654, 
3053, 
717, 
vector():set( -75.975,-6.726,-74.848 ), 
vector():set( 0.0,1.5,0.0 ),"l03u_agr_underground",0) 
db.actor:give_info_portion("teleport_to_taynik") 
end 
-- создается переход ИЗ ТАЙНИКА СТРЕЛКА НА АГРОПРОМ 
if (not has_alife_info( "teleport_from_taynik" )) then 
y_level.create_level_changer(60001, vector():set( -81.394,-4.946,-70.915 ),2709,717, 
194118, 
695, 
vector():set( -47.207,-0.364,-40.833 ), 
vector():set( 0.0,3.0,0.0 ),"l03_agroprom",0) 
db.actor:give_info_portion("teleport_from_taynik") 
end 
end

 
 
-81.394,-4.946,-70.915  - это ясно - позиция
А числа 2709 и 717 вероятно гейм и левел вертексы, но что за числа 194118 и 695? Разжуйте  плиз.
Изменено пользователем BoBaH_671

Ранее был известен под ником BoBaH_671.

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


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

Такс, еще раз обращаюсь за помощью...

Как сделать, чтобы ГГ выдавался инфопоршень при переходе с локи на локу?

  • Согласен 1

Ранее был известен под ником BoBaH_671.

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


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

Народ, помогите плиз. Я хочу сделать, чтобы непись говорил что-нибудь, короче, знаю я, что в логике надо прописать
snd = ... , но только в какие файлы прописывать свой звук?

Ранее был известен под ником BoBaH_671.

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


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

Народ, как стартануть таймер в АМК моде, после окончания времени которого выдается инфопоршень? В амк.скрипт че то писать надо... Помогите плиз!

Ранее был известен под ником BoBaH_671.

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


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

Добрый день. Меня мучает один вопрос: как узнать координаты ГГ на мультиплеерной карте? 

Ранее был известен под ником BoBaH_671.

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


Ссылка на сообщение
Как прописать custom_data определенному объекту через скрипт?

Завалялась вот функция:

local obj=alife():create("esc_stalk",vector():set(-63.919,6.269,-36.914),283878,3051)
local params=amk.read_stalker_params(obj)
params.custom="[logic]\ncfg = scripts\\name.ltx" ---- путь к файлу логики.
params.sid=12547
amk.write_stalker_params(params,obj)

Работать будет только с АМК модом.

Изменено пользователем BoBaH_671
  • Полезно 1

Ранее был известен под ником BoBaH_671.

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


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

 

 

Чтобы заспавнить правильно левел ченджер нужно использовать net-packet

@Grif_on, спавн LC через скрипт:

 

 

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 - идентифицируют уровень, на который level_changer будет перебрасывать игрока 
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(0) -- тип фигуры: сфера
-- packet:w_vec3(vector():set(0, 0, 0)) -- sphere_center
-- packet:w_float(3.0)
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_s32(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_02") -- 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())
news_manager.send_tip(db.actor, "Новый путь", nil, nil, 10000)
end



--Сам спавн
function lc()
if (not has_alife_info("blablabla" )) then
script_name.create_level_changer(11111, vector():set(82.091148376465, 24.181016921997, -22.771390914917), 432354, 3119,
2349,
158301,
vector():set(369.19384765625, -0.00164741277694702, -172.899780273438), 
vector():set(   0.0,0.0,0.0 ),"L12_Stancia",0)
 db.actor:give_info_portion("blablabla")
end
end

 

 

  • Спасибо 1

Ранее был известен под ником BoBaH_671.

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


Ссылка на сообщение
Как заставить ГГ в какой-то момент перестать двигаться?
level.disable_input() -- блокировка управления
level.enable_input() -- разблокировка управления

Блочится даже управление мышью.

Изменено пользователем BoBaH_671
  • Спасибо 1

Ранее был известен под ником BoBaH_671.

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


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

 

 

У меня на компьютере нет level.script, может кто скинет?

Это пространство имён.

Ранее был известен под ником BoBaH_671.

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


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

 

 

Как рандомно выбрать 3 предмета из этой таблицы, и, допустим, заспавнить их ГГ?
local item_list =
{"medkit",
"bread",
"vodka"}

function spawn_random_item()
local a = item_list[math.random(table.getn(item_list))]
alife():create(a, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end
  • Спасибо 1

Ранее был известен под ником BoBaH_671.

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


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

@Romann, если ты вызывал из логики рестриктора фунцкию, то это не является правильным. Нужно юзать схему sr_cutscene, подробнее о ней можно узнать тут.

  • Полезно 1

Ранее был известен под ником BoBaH_671.

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


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

@CRAZY_STALKER666, vector():set(x,y,z) попробуй.

Изменено пользователем BoBaH_671
  • Спасибо 1

Ранее был известен под ником BoBaH_671.

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


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

 

 

как проверить находиться ли ГГ в диалоге с НПЦ

А разве не подходит?

if db.actor:is_talking() then ... end

Или тебе надо проверить даилог с конкретным НПС?

  • Спасибо 1

Ранее был известен под ником BoBaH_671.

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


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

Вопрос, наверно, глупый, но как вызывать функции из других скриптов без указания имени скрипта, в котором функция находится? Как это сделано, например, в _g.script. Там, полагаю, и нужно решать все это дело.

Ранее был известен под ником BoBaH_671.

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


Ссылка на сообщение
@Dennis_Chikin, что не так? Повторю. Как можно вызывать функции из других скриптов, при это не указывая их имя(скриптов, разумеется). Вот есть _1.script, в нем функция 123, как её вызвать из других скриптов без указания имени скрипта? _1.123(), а я хочу 123(). Где надо свои скрипты регистрировать, чтобы это работало?

Ранее был известен под ником BoBaH_671.

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


Ссылка на сообщение
@Дизель, ну я же задал вопрос. Ответа в твоём посте что-то не вижу, по делу, пожалуйста. Какая разница, для каких мне целей оно надо? Для удобства.

Ранее был известен под ником BoBaH_671.

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


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

@Дизель, give_info, abort. Только они зареганы в _g.script, а я хочу в своём файле сделать подобное.

 

Денис, спасибо, сразу твой пост не заметил. С телефона просто...

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

Ранее был известен под ником BoBaH_671.

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


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

Есть таблица с кучей поршней. Как сделать выдачу поршня или что ещё, если из этой таблицы имеем более, к примеру, 20-ти поршней?

Ранее был известен под ником BoBaH_671.

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


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

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