Все посты %s в %S - AMK Team
Перейти к контенту

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


Svoboда

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

Народ! Я в ЧН сделал так что в группировку можно вступить (actor_army) прописал в game_relations.ltx(communities, [communities_relations], [actor_communities], [communities_sympathy]) и в sim_board.script (local actor_communitites) Игра начинается все ОК но при открытии ПДА раздел СТАТИСТИКА - вылет вот лог:

 

Expression : fatal error

Function : CScriptEngine::lua_error

File : E:\priquel\sources\engine\xrServerEntities\script_engine.cpp

Line : 180

Description : <no expression>

Arguments : LUA error: ...Ð. - ×èñòîå Íåáî\gamedata\scripts\sim_faction.script:656: attempt to index field '?' (a nil value)

 

В чем причина и причем здесь sim.faction?Если кто-то имел с этим дело то плиз скажите как правильно сделать!

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


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

Ага все разобрался терь все ОК

Ну уж тода еще 2 вопроса:

1. Вот смотри заспавню я actora в другом месте и вся проблема будет в том что как я понял только после выброса и вступления в чистое небо запускается война группировок глобальная а вместе с ней чн и ренегатов у остальных стоит элементарное ограничение по заданию тип ток после отдавания хабара сидоровича нач война сталкеров и бандосов

{+esc_take_habar_complete} а у чистого неба такой штуки нет с ренегатами да и ваще глобал вар не запуститься Как сделать чтоб война сразу запускалась?

2.Допустим я заспавню лидера торговца военным иль монолиту а вот награда за захват точки будет ли у него браться автоматически ? иль надо чето в логике прописать или еще где?

Подскажи плиз

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


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

IQDDD , могут быть несколько причин:

1. [expansion_4] ; Уничтожить базу

base_squad_number = 50

precondition_target_eliminate = gar_smart_terrain_3_5

 

 

war_target_title = st_faction_war_stalker_eliminate_base

 

war_stage_icon = st_stage_icon_stalker_eliminate_bandit_no

war_stage_icon_complete = st_stage_icon_stalker_eliminate_bandit_yes

war_stage_icon_hint = st_stage_icon_stalker_eliminate_bandit_no

war_stage_icon_hint_complete = st_stage_icon_stalker_eliminate_bandit_yes

 

level_up_snd = esc_stalker_expansion_4_up

level_down_snd = esc_stalker_expansion_4_down

 

Как видишь здесь есть параметр base_squad_number = 50 (точно не знаю по-моему это сила и кол-во отряда в целом не занятых экспансией ,т.е. закрепленные на смартах и никуда не идут

 

2.Военный блокпост?! Хммм в оригинале такого нет ,в буре на зоне и на свалке есть но там все работает если ты сам добавлял может где описался

 

3. открой faction_stalker в config/misc и посмотри есть ли там такая штука какую я тебе написал

 

4. может стоять ограничение по прохождению precondition_cond = {+esc_join_stalker_on} true, false

если есть то убери эту строку:)

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


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

Народ, help! Разговор с лебедевым в чистом небе не начинается, он просто стоит и все... Естественно изменял скрипты, а где функции и скрипты отвечающие за эту сцену?

Заранее спасибо!

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


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

AutoGnom, нет не правильно

on_info = {условие(это инфопоршень)} ph_door@open, т.е

on_info = {+actor_talked_with_wolf} ph_door@open это означает, что после того как нам выдадут инфу(actor_talked_with_wolf) дверь откроется

а + это если есть инфа

а - это если инфы еще нет

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


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

AutoGnom, Сейчас не скажу не дома, но посмотри в логике выключателя выжигателя, и соответственно логику антенн(скорее всего рестриктор), и добавь код, чтобы получился период (скоко угодно включай выключай)

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


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

Если конкретный непись - в логике указываешь, если вообще всем, то добавь в character_descr ссыль на папку со своей озвучкой, но смотри чтобы все файлы присутствовали, например у зомби нет половины озвучки в отличие от сталкеров, потому что не предусмотрено скриптом, что они будут говорить.

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

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


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

Конкретнее... Вообще логику никак не реанимируешь - надо самому ее прописать. А сам вертолет и все его движения типа, атаки, перемещения заложены в движке. Разговоры пилотов - в скрипте. Логику надо писать самому, почитай здесь пункт 15.3.12

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


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

qwqwqw, Определись уже наконец!

1. Ты спавнишь его раненым, а в логике просто прописываешь камп, и под действием аллайфа после выздоровления он пойдет на камп

2. спавнишь живого-здорового но указываешь в логике wound и условия перехода на kamp

НО НЕ НАДО ДЕЛАТЬ ВСЕ СРАЗУ!Сложно будет...

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


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

В своем моде сумашедшему я сделал такую логику:

;marsh crazy sniper   
[logic]
active = {-mar_want_to_talk_sniper} camper@sniper, {+mar_want_to_talk_sniper} remark@sniper
relation = enemy
sympathy = 0
on_death = death

[death]
on_info = %+mar_sniper_dead%

[camper@sniper]
path_walk = mar_crazy_1_walk
path_look = mar_crazy_1_look
out_restr = mar_crazy_restrictor
def_state_moving = sneak_run
def_state_campering = hide_na
def_state_campering_fire = hide_sniper_fire
sniper = true
on_info = {+mar_sniper_must_go_away} %=destroy_object%

[remark@sniper]
anim = guard
target = actor
meet = meet
combat_ignore_cond = true
on_info = {+mar_enemy_sniper_talke_bad} camper@sniper
on_info2 = {+mar_sniper_must_go_away} %=destroy_object%



[meet]   НАС ИТЕРЕСУЕТ ЭТО:
meet_state 		= 3|ward@nil
meet_state_wpn 	= 6|backoff@threat_weap
victim 			= 3|actor
victim_wpn 		= 6|actor
use				= true
use_wpn			= false
sound_start 	= mar_crazy_sniper_meet      -------------звук привет
sound_stop 		= mar_crazy_sniper_meet_bye     -------звук пока
trade_enable = false
quest_npc = true    ----------ставим это обязательно!иначе будут дефолтные звуки

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


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

Всем привет! Делаю мод на ЧН, и вот столкнулся со следуещей проблемой:

В ЧН работа некоторым смартам не прописана(нпс тупо сидят в центре) и вот я прописываю в all.spawn смарту

 

[exclusive]

......

END

 

Но при заселение этого смарта происходит безлоговый вылет, скорее всего из-за того что точки path_walk находятся еще дальше чем def_restr

И как это исправить? Заданием out_restr в файле логике?

 

 

 

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


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

Вот кусок кода из ТЧ(1.004)

local ini = system_ini()

local weather = level.get_weather() -- тип погоды
local weather_sect = ini:r_string("weathers", weather) -- секция погоды, соответствующая типу

В ЧН работать не хочет, вылет...

Попробовал заменить на такой код:

local ini = ini_file("game.ltx")
local weather = utils.cfg_get_string(ini, level.name(), "weathers", db.actor, false, "", "[default]")
local weather_sect = ini:r_string("weathers", weather) -- секция погоды, соответствующая типу

Тоже будет вылет(через раз), иногда загружается игра.

Вот лог вылета:

Клиент: Синхронизация...

* phase time: 9 ms

* phase cmem: 221717 K

* [win32]: free[3093848 K], reserved[108356 K], committed[992036 K]

* [ D3D ]: textures[364135 K]

* [x-ray]: crt heap[221717 K], process heap[8541 K], game lua[92729 K], render[185 K]

* [x-ray]: economy: strings[15913 K], smem[1050 K]

! Cannot find saved game ~:ogsm_cleaner_release_wpn_mp51258

* Log file has been saved successfully!

! Can't find texture 'tree\tree_fuflo'

* MEMORY USAGE: 271197 K

* End of synchronization A[1] R[1]

 

FATAL ERROR

 

[error]Expression : fatal error

[error]Function : CInifile::r_section

[error]File : E:\priquel\sources\engine\xrCore\Xr_ini.cpp

[error]Line : 443

[error]Description :

[error]Arguments : Can't open section 'weathers'

 

 

stack trace:

 

 

Так вот вопрос, как заставить его работать в чн?

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


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

За'use'в поиск в данной теме нашел, что данный вылет:

FATAL ERROR

 

[error]Expression : motion_ID.valid()

[error]Function : CKinematicsAnimated::ID_Cycle

[error]File : E:\priquel\sources\engine\Layers\xrRender\SkeletonAnimated.cpp

[error]Line : 208

[error]Description : ! MODEL: can't find cycle:

[error]Arguments : $editor

 

 

stack trace:

 

 

при спавне вертолета, происходит, т.к. " При спавне вертолёта через скрипт, обязательно требуется перепаковка net_packet, с переназначением параметров:"

skeleton_name = idle
startup_animation = idle

 

Для спавна вертолета я использую такую функцию:

function heli(section,posx,posy,posz,lvid,gvid,logic)

local obj = alife():create(section,vector():set(posx,posy,posz),lvid,gvid)

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_s32 = packet:r_s32()

local level_vertex_id = packet:r_s32()

local object_flags = packet:r_s32()

local custom_data = packet:r_stringZ()

local story_id = packet:r_s32()

local cse_alife_object__unk3_s32 = packet:r_s32()

 

-- свойства cse_visual

local visual = packet:r_stringZ()

local cse_visual__unk1_u8 = packet:r_u8()

-- свойства cse_motion

local motion_name = packet:r_stringZ()

 

-- свойства cse_ph_skeleton

local skeleton_name = packet:r_stringZ()

local cse_ph_skeleton__unk1_u8 = packet:r_u8()

local cse_ph_skeleton__unk2_u16 = packet:r_u16()

 

-- свойства cse_alife_helicopter

local cse_alife_helicopter__unk1_sz = packet:r_stringZ()

local engine_sound = packet:r_stringZ()

 

--устанавливаем логику

custom_data = "[logic]\ncfg = scripts\\heli\\"..logic..".ltx"

 

-- теперь заполняем нужные параметры

-- свойства cse_alife_object

packet:w_begin(game_vertex_id)

packet:w_float(cse_alife_object__unk1_f32)

packet:w_s32(cse_alife_object__unk2_s32)

packet:w_s32(level_vertex_id)

object_flags = bit_not(5) -- ~5 = 0xfffffffa

packet:w_s32(object_flags)

packet:w_stringZ(custom_data)

packet:w_s32(-1)

packet:w_s32(cse_alife_object__unk3_s32)

 

-- свойства cse_visual

packet:w_stringZ(visual)

packet:w_u8(cse_visual__unk1_u8)

 

-- свойства cse_motion

packet:w_stringZ(motion_name)

 

-- свойства cse_ph_skeleton

skeleton_name = "idle"

packet:w_stringZ(skeleton_name)

packet:w_u8(cse_ph_skeleton__unk1_u8)

packet:w_u16(cse_ph_skeleton__unk2_u16)

 

-- свойства cse_alife_helicopter

cse_alife_helicopter__unk1_sz = "idle"

engine_sound = "vehicles\\helicopter\\helicopter"

packet:w_stringZ(cse_alife_helicopter__unk1_sz)

packet:w_stringZ(engine_sound)

 

-- считываем скорректированные параметры

packet:r_seek(0)

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

 

 

return obj

end

 

 

Так вот подскажите, что сюда добавить, чтобы устанавливолось startup_animation = idle?

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


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

Я опять про спавн предметов в ящик:


local spawn_item1 = { "Имя предмета который спауним(если несколько то через запятую)"}

local function spawn_item_to_box(items_table, count, inv_box_story_id)
local inv_box = alife():object(get_story_object_id(inv_box_story_id))
for i = 1,count do
alife():create(items_table[math.random(#items_table)],
inv_box.position,
inv_box.m_level_vertex_id,
inv_box.m_game_vertex_id,
inv_box.id)
end
end

function spawn_item_to_treasure(actor, obj, p)
spawn_item_to_box(spawn_item1, 1, "Стори айди тайника")
end

 

 

Вылетает с руганью на get_story_object_id, якобы не знает что это за функция, чем исправить, не подскажете?

Изменено пользователем Старлей

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


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

Есть такой мод на ЧН "Наемники", позволяет нанимать отряды. Этот мод добавлялся в разные солянки, но у всех одна и та же проблема, вылет при попыке нанять отряд:

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 :

[error]Arguments : LUA error: ...er clear sky\gamedata\scripts\actor_need_help.script:744: attempt to index field '?' (a nil value)

 

 

 

stack trace:

Что ж идем туда, куда нас послали: в 744 строку скрипта.

 smart = squad.board.smarts[v].smrt

Это из куска функции, в функцию передается параметр squad, который равен

 local se_npc = alife():object(npc:id())
local squad = se_npc.board.squads[se_npc.squad_id]

Так вот вопрос какое значение он не может получить? Подскажите, или хотя бы пошлите меня туда, куда ссылается smart = squad.board.smarts[v].smrt на какую там функцию, или скрипт.

Вот сам скрипт целиком: http://yadi.sk/d/Ob8RCGAn2ZHOG

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

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


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

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

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

 

 

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

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


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

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