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

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


Svoboда

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

Скажите пожалуйсто, как заспавнить огонь в керосиновой лампе.

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


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

Люди, вот такая у меня проблема, при старте игры на Кордоне такой вылет

[error]Expression : fatal error

[error]Function : CScriptEngine::lua_error

[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

[error]Line : 73

[error]Description : <no expression>

[error]Arguments : LUA error: ...game$\s.t.a.l.k.e.r\gamedata\scripts\xr_logic.script:126: attempt to index local 'st' (a nil value)

.

Скажите как исправить, если надо могу залить свои скрипты.

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


Ссылка на сообщение
(изменено)

Люди, что делать, если ACDC при запаковке что то пропускает, из за чего all.spawn каждый раз становится меньше и меньше, да и игра с ним уже не запускается.

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

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


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

Ребята, а можно как то отдельному НПС прописать логику, что бы он допустим в 23.00 шел спать, а в 5.00 вставал?

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


Ссылка на сообщение
_Призрак_, а можно, пожалуйсто, точнее с проверкой на время, а то самому не получается написать.

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


Ссылка на сообщение
(изменено)

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

[error]Expression : fatal error

[error]Function : CScriptEngine::lua_error

[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

[error]Line : 73

[error]Description : <no expression>

[error]Arguments : LUA error: ...:\my game$\s.t.a.l.k.e.r\gamedata\scripts\amk.script:303: attempt to concatenate local 'params' (a table value)

 

Случился он на новой локации. Происходило так, я ранил свободовца гранатой, подбежал к нему, дал аптечку, с далека начали стрелять другие свободовцы по мне, он прошелся рядом, дал мне по морде с кулака и вылет.

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

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


Ссылка на сообщение
(изменено)

Ребята, я пытаюсь написать скрипт для ТЧ, что бы при определённо одетом котюме проигрывался звук "дыхания", я "очень не сильно" рабираюсь в скриптах, но с горем пополам что то написал, но в итоге оно не работает, подскажите пожалуйсто, где ошибка? Заранее спасибо.

Собственно вот он:

local outfits={

"stalker_gas_outfit",

"military_stalker_commander_outfit"

}

 

local snd = xr_sound.get_safe_sound_object([[actor\sopit]])

 

function protivogaz_sound()

if db.actor and db.actor:alive() then

local outfit = db.actor:item_in_slot(6)

if outfit and outfit:section() and outfits[outfit:section()] then

if not snd:playing() then

snd:play_at_pos(db.actor, vector ():set (0, 0, 0), 0, sound_object.s2d)

end

end

end

end

 

 

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

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


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

Люди, я опять по поводу своего скрипта, ничего не изменял, только теперь всё время такой вылет, да и не работает:

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: ...$\s.t.a.l.k.e.r\gamedata\scripts\bind_stalker.script:302: attempt to index global 'ulman_outfit_sound' (a nil value)

 

Саму функцию вызываю через бинд сталкер так:

game_stats.update (delta, self.object)

ulman_outfit_sound.sound_update()

Уже не знаю что делать, помогите пожалуйсто.

 

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


Ссылка на сообщение
_Призрак_, ZeeK, а хоть где именно, и вообще скрипт работоспособный?

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


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

KD87, да, он на той странице, просто я функцию переименовал, сейчас он выглядит так, в конце дописал ещё 2 end`aи вылета теперь нет:

local outfits={

"stalker_gas_outfit",

"military_stalker_commander_outfit"

}

 

local snd = sound_object([[alexmx\helicopter]])

 

function sound_update()

if db.actor and db.actor:alive() then

local outfit = db.actor:item_in_slot(6)

if outfit and outfit:section() and outfits[outfit:section()] then

if not snd:playing() then

snd:play_at_pos(db.actor, vector ():set (0, 0, 0), 0, sound_object.s2d)

end

end

end

end

 

Вызываю так, как написал ранее. Но он так и не работает...

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


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

Ребята, с огромной помощью, всё таки мой скрипт заработал, но со звуком появился глюк. Вот ссылка, которая демонстрирует собственно проблему. Кто то с таким сталкивался?

 

P.S. Сам по себе звук нормальный, в звуковом файли один цикл дыхания.

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


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

Я знаю, что я надоел, извините. Я вот хочу попробовать написать скрипт для ТЧ, что бы когда ГГ был голоден, проигрывался звук, желательно рандомный, я примерно что то написал, но вот незнаю как сделать, что бы функция вызывалась каждые 2-3 минуты нормального времени, то есть что бы звук проигрывался при условии голода через определённый промежуток времени. Можете пожалуйсто рассказать на примере. Заранее спасибо. :)

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


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

Shadows, да со скриптом мне уже помогли, но спасибо и за такой способ, буду теперь знать.

А вот на счёт голода, вроде бы в моём случае надо ковырять от _g.script да и какая то более чем странная функция там есть:

function on_actor_satiety()

end

Что то мне кажется, что она и была задумана для чего то подобного.

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


Ссылка на сообщение
(изменено)

Ребята, я был прав, функция:

function on_actor_satiety()
end

отвечает за голод. Я переделал её вот так:

snd = sound_object([[ambient\underground\rnd_giant]])
function on_actor_satiety()
        if not snd:playing() then 
            snd:play_at_pos(db.actor, vector():set(0,0,0), 0, sound_object.s2d)
        end
end

И звук проигрывался, но к сожалению только один раз за всю игру. Можно ли как то исправить это недоразумение?

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

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


Ссылка на сообщение
(изменено)

К сожалению больше ни в каком скритпе функция "on_actor_satiety" нигде не вызывается и нигде больше даже такое название не встречается, получается движком вызывается... А вообще с этим что то можно сделать?

Хотя я тут наткнулся на скрипт game_stats.script и он как раз ссылается на "satiety".

Собственно вот такие функции:

function shutdown ()

printf ("GAME STATS START AT LEVEL [%s]", level.name ())

local l_name = level.name ()

for a = 1, table.getn (stats), 1 do

if stats[a].id == actor_position then

printf ("[stats][%s][%s][%d][%f,%f,%f][%f, %f, %f]", l_name, stats[a].time, stats[a].id, stats[a].position.x, stats[a].position.y, stats[a].position.z, stats[a].health, stats[a].radiation, stats[a].satiety)

elseif stats[a].id == actor_item_take then

printf ("[stats][%s][%s][%d][%f,%f,%f][%s]", l_name, stats[a].time, stats[a].id, stats[a].position.x, stats[a].position.y, stats[a].position.z, stats[a].item_name)

elseif stats[a].id == actor_item_drop then

printf ("[stats][%s][%s][%d][%f,%f,%f][%s]", l_name, stats[a].time, stats[a].id, stats[a].position.x, stats[a].position.y, stats[a].position.z, stats[a].item_name)

elseif stats[a].id == actor_money_trade or stats[a].id == actor_money_quest or stats[a].id == actor_money_total then

printf ("[stats][%s][%s][%d][%f,%f,%f][%d]", l_name, stats[a].time, stats[a].id, stats[a].position.x, stats[a].position.y, stats[a].position.z, stats[a].money)

end

end

stats = {}

end

 

и такая:

function update (delta, actor)

additional_time = additional_time + delta

if additional_time < filter_time then

return

end

additional_time = 0

local t = {

time = game.get_game_time ():timeToString (game.CTime.TimeToSeconds),

id = actor_position,

position = actor:position (),

health = actor.health,

radiation = actor.radiation,

satiety = actor.satiety

}

table.insert (stats, t)

end

 

Может это как то использовать можно?

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

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


Ссылка на сообщение
Real Wolf, мне точно тяжело, я ведь пока только начинаю учиться... А вообще просто интересно, из имеющихся данных, что то можно сделать?

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


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

dragunof, кстати, у меня такое было, я про это рассказывал, а игра сама запускается, или вылет при самой загрузке?

И на счёт того скрипта, звук играется, но всегда, то есть независимо от голода...но всё же не пойму почему встречается переменная "satiety" в других скриптах.

И ещё, от каких скриптов может быть такое, что сейвы не загружаются? Просто на синхронизации зависает игра и всё, только процесс выключать надо. И кстати, существуют ли на ТЧ вообще какие то отладочные скрипты?

 

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


Ссылка на сообщение
(изменено)

dragunof, у меня такое было, когда в bind_stalker, скорее не туда куда надо, я вписывал функцию, но у меня было по другому, у меня работали только жизненно важные скрипты, всегда было время 00.00, и при попытке вызова функции связанной с "actor" проходил именно такой вылет.

Я тут написал скрипт и как всегда из-за него не загружались сейвы, что с ним не так, кто знает?

function spawn_parts(obj)
   local section = obj:section()

   if section=="m_fracture_e" then
         amk.spawn_item_in_inv("anom_remover",obj)
      end
   if section=="m_boar_e" then
         amk.spawn_item_in_inv("mutant_boar_leg",obj)
         amk.spawn_item_in_inv("mutant_boar_leg",obj)
         amk.spawn_item_in_inv("mutant_boar_leg",obj)
      end
   if section=="boar_weak" then
         amk.spawn_item_in_inv("mutant_boar_leg",obj)
         amk.spawn_item_in_inv("mutant_boar_leg",obj)
         amk.spawn_item_in_inv("mutant_boar_leg",obj)
      end
   if section=="boar_normal" then
         amk.spawn_item_in_inv("mutant_boar_leg",obj)
         amk.spawn_item_in_inv("mutant_boar_leg",obj)
         amk.spawn_item_in_inv("mutant_boar_leg",obj)
      end
   if section=="boar_strong" then
         amk.spawn_item_in_inv("mutant_boar_leg",obj)
         amk.spawn_item_in_inv("mutant_boar_leg",obj)
         amk.spawn_item_in_inv("mutant_boar_leg",obj)
      end
   if section=="m_burer_e" then
         amk.spawn_item_in_inv("mutant_burer_hand",obj)
      end
   if section=="burer_weak" then
         amk.spawn_item_in_inv("mutant_burer_hand",obj)
      end
   if section=="burer_normal" then
         amk.spawn_item_in_inv("mutant_burer_hand",obj)
      end
   if section=="burer_strong" then
         amk.spawn_item_in_inv("mutant_burer_hand",obj)
      end
   if section=="m_chimera_e" then
         amk.spawn_item_in_inv("mutant_chimera_kogot",obj)
         amk.spawn_item_in_inv("mutant_chimera_kogot",obj)
         amk.spawn_item_in_inv("mutant_chimera_kogot",obj)
      end
   if section=="chimera_weak" then
         amk.spawn_item_in_inv("mutant_chimera_kogot",obj)
         amk.spawn_item_in_inv("mutant_chimera_kogot",obj)
         amk.spawn_item_in_inv("mutant_chimera_kogot",obj)
      end
   if section=="chimera_normal" then
         amk.spawn_item_in_inv("mutant_chimera_kogot",obj)
         amk.spawn_item_in_inv("mutant_chimera_kogot",obj)
         amk.spawn_item_in_inv("mutant_chimera_kogot",obj)
      end
   if section=="chimera_strong" then
         amk.spawn_item_in_inv("mutant_chimera_kogot",obj)
         amk.spawn_item_in_inv("mutant_chimera_kogot",obj)
         amk.spawn_item_in_inv("mutant_chimera_kogot",obj)
      end
   if section=="electro_chimera" then
         amk.spawn_item_in_inv("mutant_chimera_kogot",obj)
         amk.spawn_item_in_inv("mutant_chimera_kogot",obj)
         amk.spawn_item_in_inv("mutant_chimera_kogot",obj)
      end
   if section=="m_gigant_e" then
         amk.spawn_item_in_inv("mutant_psevdogigant_hand",obj)
      end
   if section=="m_gigant_normal" then
         amk.spawn_item_in_inv("mutant_psevdogigant_hand",obj)
      end
   if section=="gigant_normal" then
         amk.spawn_item_in_inv("mutant_psevdogigant_hand",obj)
      end
   if section=="gigant_strong" then
         amk.spawn_item_in_inv("mutant_psevdogigant_hand",obj)
      end
   if section=="m_poltergeist_e" then
         amk.spawn_item_in_inv("mutant_poltergeist_glas",obj)
      end
   if section=="m_poltergeist_normal" then
         amk.spawn_item_in_inv("mutant_poltergeist_glas",obj)
      end
   if section=="m_poltergeist_normal_tele" then
         amk.spawn_item_in_inv("mutant_poltergeist_glas",obj)
      end
   if section=="m_poltergeist_tele_outdoor" then
         amk.spawn_item_in_inv("mutant_poltergeist_glas",obj)
      end
   if section=="m_poltergeist_normal_flame" then
         amk.spawn_item_in_inv("mutant_poltergeist_glas",obj)
      end
   if section=="m_poltergeist_strong_flame" then
         amk.spawn_item_in_inv("mutant_poltergeist_glas",obj)
      end
   if section=="m_snork_e" then
         amk.spawn_item_in_inv("mutant_snork_leg",obj)
      end
   if section=="snork_weak" then
         amk.spawn_item_in_inv("mutant_snork_leg",obj)
      end
   if section=="snork_normal" then
         amk.spawn_item_in_inv("mutant_snork_leg",obj)
      end
   if section=="snork_strong" then
         amk.spawn_item_in_inv("mutant_snork_leg",obj)
      end
   if section=="aes_snork" then
         amk.spawn_item_in_inv("mutant_snork_leg",obj)
      end
   if section=="snork_arena" then
         amk.spawn_item_in_inv("mutant_snork_leg",obj)
      end
   if section=="snork_indoor" then
         amk.spawn_item_in_inv("mutant_snork_leg",obj)
      end
   if section=="snork_outdoor" then
         amk.spawn_item_in_inv("mutant_snork_leg",obj)
      end
   if section=="snork_jumper" then
         amk.spawn_item_in_inv("mutant_snork_leg",obj)
      end
   if section=="m_zombie_e" then
         amk.spawn_item_in_inv("mutant_zombie_hand",obj)
      end
   if section=="zombie_weak" then
         amk.spawn_item_in_inv("mutant_zombie_hand",obj)
      end
   if section=="zombie_normal" then
         amk.spawn_item_in_inv("mutant_zombie_hand",obj)
      end
   if section=="zombie_strong" then
         amk.spawn_item_in_inv("mutant_zombie_hand",obj)
      end
   if section=="zombie_trup" then
         amk.spawn_item_in_inv("mutant_zombie_hand",obj)
      end
   if section=="zombie_trup2" then
         amk.spawn_item_in_inv("mutant_zombie_hand",obj)
      end
   if section=="zombie_blow" then
         amk.spawn_item_in_inv("mutant_zombie_hand",obj)
      end
   if section=="zombie_beee" then
         amk.spawn_item_in_inv("mutant_zombie_hand",obj)
      end
   if section=="zombie_immortal" then
         amk.spawn_item_in_inv("mutant_zombie_hand",obj)
      end
   end

 

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

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


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

_Призрак_, вызываю из bind_monster так

function generic_object_binder:death_callback(victim, who)
        ulman_monster_parts.spawn_parts(victim)

Теперь уже не уверен, но вот как то что бы из за этого сейвы не загружались, как то странно.

Да и вообще за основу немного брал ARC_diary, там в контроллёров так спавнилось:

function monster_killed(obj,who)
  local obj_sect = obj:section()
  if obj_sect=="controller_tubeman" then
    amk.spawn_item_in_inv("sgus",obj)
    if not has_alife_info("kontroler_diary_info_17") then
       amk.spawn_item_in_inv("arc_diary_17", obj)
    end

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


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

У меня тоже вопрос по приёмнику, всё делал не по уроку, а методом тыка, всё работает, но вот только недавно заметил что при выстреле он не замолкает. Решил проверить по этому уроку, прописал логику такую, какая нужна, но он всё равно не замолкает, почему?

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


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

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

AMK-Team.ru

×
×
  • Создать...