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

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

Kirag, про погоду я и сам догадался ,но я её ни где не менял

у меня в папке геймдата только необходимый минимум для работы уровней(погода везде динамик_дефаулт) т.е погода везде стандартная . Если отключить скрипт аномалий на Затоне то уровень нормально грузится

 

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

 

Не подскажеш как проверку наваять...

 

 

Kirag,

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

Изменено пользователем Горчаков Антон
Ссылка на комментарий

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

и Никто не подскажет как такой написать а то я в этом не бум-бум..

 

Не соответствует. N6260

Ссылка на комментарий
ZeeK, запускай таймер, при запуске инфопоршень забирай\выдавай, а при окончании таймера опять же выдавай\забирай поршень, ну и прекондишн на диалог повесь для этого инфопоршня
Ссылка на комментарий

function start_taimer() --при запуске этой функции запуститься таймер игровово времени с именем dialog,

amk.g_start_timer("dialog",0,0,1) --время 0 дней, 0 часов, 1 мин.

end

 

открываем amk.script ищем function __do_timer_action

в конец добавляем

 

if select_string=="dialog" then --имя таймера

db.actor:give_info_portion("info_dialog_taimer") --по истечению таимера выдаем поршен

new_kardon.shustryi_sms() --или сработает функция

end

 

 

В файле bind_stalker.script в функцию

function actor_binder:update(delta)

добавляем (перед последним end)

amk.actor_update(delta)

local timers={}

local g_timers={}

local timer_trigger=nil

 

function actor_update(delta)

if not timer_trigger then

timer_trigger=game.time()

end

if timer_trigger<=game.time() then

timer_trigger=game.time()+1000

check_timers()

end

end

 

function start_timer(name,delay,action)

if not delay then

return false

end

 

if not action then

action = ""

end

 

local time = game.time() --time in seconds since 1970

local a=1

while db.storage[db.actor:id()].pstor["xt"..a] do

a=a+1

if a>100 then

return false

end

end

save_variable("xt"..a, name)

save_variable("xd"..a, time+delay*1000*system_ini():r_float("alife","time_factor"))

save_variable("xp"..a, action)

 

return true

end

 

function g_start_timer(name,delay_d,delay_h,delay_m,action)

local time = level.get_time_days()*60*24+level.get_time_hours()*60+level.get_time_minutes() --time in game minutes

if delay_d==nil or delay_h==nil or delay_m==nil then

return false

end

 

if action==nil then

action = ""

end

 

local a=1

while db.storage[db.actor:id()].pstor["gt"..a] do

a=a+1

if a>100 then

return false

end

end

 

save_variable("gt"..a, name)

save_variable("gd"..a, time+delay_d*60*24+delay_h*60+delay_m)

save_variable("gp"..a, action)

 

return true

end

 

function check_timers()

local tmp

for a=1,100,1 do

tmp=load_variable("xt"..a,nil)

if tmp~=nil then

__timer_found(a)

end

end

 

for a=1,100,1 do

tmp=load_variable("gt"..a,nil)

if tmp~=nil then

__g_timer_found(a)

end

end

end

 

function __timer_found(idx)

local time = game.time() --time in seconds since 1970

local name,params

if load_variable("xd"..idx, nil)<=time then

name=load_variable("xt"..idx, nil)

params=load_variable("xp"..idx, nil)

del_variable("xt"..idx)

del_variable("xd"..idx)

del_variable("xp"..idx)

oau_reason=name.." "..params

__do_timer_action(name,params)

return true

end

return false

end

 

function __g_timer_found(idx)

local gtime = level.get_time_days()*60*24+level.get_time_hours()*60+level.get_time_minutes() --time in game minutes

local name,params

if load_variable("gd"..idx, nil)<=gtime then

name=load_variable("gt"..idx, nil)

params=load_variable("gp"..idx, nil)

del_variable("gt"..idx)

del_variable("gd"..idx)

del_variable("gp"..idx)

oau_reason=name.." "..params

__do_timer_action(name,params)

return true

end

return false

end

 

function __do_timer_action(select_string,params_string)

if select_string=="name_taimer" then --имя таймера

my_file.my_function() --функция которая сработает по истичению

end

end

 

function save_variable(variable_name, value)

if value==nil then

amk.mylog("saving nil into "..variable_name)

del_variable(variable_name)

else

xr_logic.pstor_store(db.actor, variable_name, value)

end

end

 

function load_variable(variable_name, value_if_not_found)

return xr_logic.pstor_retrieve(db.actor, variable_name, value_if_not_found)

end

 

function del_variable(variable_name)

if db.storage[db.actor:id()].pstor[variable_name] then

db.storage[db.actor:id()].pstor[variable_name] = nil

end

end

 

 

by max_max_08.

Ссылка на комментарий

кровоSTALKER, бог с вами, тут то зачем такой таймер?(ну если конечно прям этот баг(с перезагрузкой) ненужен то да)

ZeeK,

local time = time_global()
local delay= 60000 -- в данном случае минута 
function blabla()
  if time_global()>time+delay and выдан\не выдан ваш поршень then  
выдать\забрать поршень
    time=time_global()
  end
end

 

ну и вызываете где вам надо, вот этого вполне хватит

Изменено пользователем Struck
Ссылка на комментарий

Горчаков Антон

 

Например вот так:

 

local lvl = level.name()
if lvl == "l01_escape" then
    -- действия для Кордона
elseif lvl == "l02_garbage" then
    -- действия для Свалки
elseif lvl == "l03_agroprom" then
    -- и т.д. по всем уровням
end

 

Ну, с действиями сообразишь, что нужно, то и пиши. Если для уровня делать ничего не надо, просто оставь пустую строку, потом может пригодиться.

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

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Ссылка на комментарий

Всем привет, у меня два вопроса:

Возможно такое(Если ГГ видит Долговца, то...)?:

if db.actor:see("dolg_regular") then

 

И возможна ли проверка попадения какого либо объекта в зону(аномалию, спейс рестриктор)?

Что то типа:

local obj = "wpn_pm"

local am = "zone_flame"

if obj попал в am then

Ссылка на комментарий
Возможно такое(Если ГГ видит Долговца, то...)?:

if db.actor:see("dolg_regular") then

ГГ никого не видит, то есть функция db.actor:see всегда возвращает false. Наоборот проверить можно

 

И возможна ли проверка попадения какого либо объекта в зону(аномалию, спейс рестриктор)?

Что то типа:

local obj = "wpn_pm"

local am = "zone_flame"

if obj попал в am then

проверка будет выглядеть так:

if am:inside(obj:position()) then

Ссылка на комментарий

люди помогите со спавном.. а туторы почитал и совсем запутался :( я респавн никак не могу сделать в лс напишите кто рубит в этом деле плиз.

Строгое предупреждение от модератора n6260
Юзаем заглавные буквы.
Ссылка на комментарий
...
local actor = db.actor
local wpn_sec = actor:item_in_slot(slot):section()
...

 

function GC(wpn_sec)
    if wpn_sec == nil then
        return nil
    end
  return wpn_sec:clsid()
end

При обращении к ней вылетает с логом:

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: c:\games\s.t.a.l.k.e.r\gamedata\scripts\_g.script:773: attempt to call method 'clsid' (a nil value)

Что тут не так? :huh:

 

Kolmogor,спасибо,работает :)

Изменено пользователем Влад
Не бойтесь совершенства. Вам его не достичь.
C. Дали
Ссылка на комментарий

Влад :)

local wpn_sec = actor:item_in_slot(slot):section()

Зря section() вызвал - у тебя wpn_sec присвоилась строка с названием секции оружия. У ней понятное дело никакого метода clsid() нет

Попробуй написать просто

local wpn_sec = actor:item_in_slot(slot)

Ссылка на комментарий

Как выглядит проверка на количество репутации у ГГ к опр. группировке? Нужно для прекондишна в диалог.

 

Добавлено через 33 мин.:

И ещё, как прибавить актору радиацию по средствам скрипта?

Ссылка на комментарий

Хм... Странно, не работает.

function add_radiation_from_vintorez()

if db.actor:active_item() == "wpn_vintorez_m2" then

db.actor.radiation = 0.1

end

end

 

 

Мне нужно если юзается этот итем ((мой винторез) тоесть если он в слоте под оружие) то прибовляется радиация.

Ссылка на комментарий

кровоSTALKER, у тебя вылет или просто ничего не происходит?

Если ничего не происходит, значит увеличь параметр радиации. Или очень маленькое увеличение радиации, или увеличение радиации только при юзании

Изменено пользователем SkyLoader
Ссылка на комментарий

кровоSTALKER, вот как-то так:

local weapon = db.actor:item_in_slot(2)    
if db.actor:active_slot()==2 and weapon and weapon:section()=="wpn_vintorez_m2" then db.actor.radiation = 0.0001

Эту штуку суешь в апдейт актора (ф-ия actor_binder:update(delta) в файле bind_stalker.script) и после взятия твоего оружия в руки, радиация должна начать прибавляться (если оружие в слоте, но в руках его нет, то радиации не будет).

Изменено пользователем Министр
Ссылка на комментарий

Люди помогите скрипт написать :wacko2: (для народной солянки).

Имеем: энное количество установленных GPS меток. Необходимо: найти метку с текстовым описанием, например "QWERTY" и определить ее координаты, level vertex, game vertex, и присвоить их какимлибо переменным (напр xx,yy,zz,lv,gv).

 

Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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