Горчаков Антон 0 Опубликовано 3 Июня 2010 Поделиться Опубликовано 3 Июня 2010 (изменено) Kirag, про погоду я и сам догадался ,но я её ни где не менял у меня в папке геймдата только необходимый минимум для работы уровней(погода везде динамик_дефаулт) т.е погода везде стандартная . Если отключить скрипт аномалий на Затоне то уровень нормально грузится На других локациях они тоже должны заспавниться, и тоже будут привязаны к террейну, но к террейну первой локации, на которой функция была вызвана. А то я думаю почему у меня на Припяти один раз заспавнилось штук 5 аномалий и то гдето в воздухе. Не подскажеш как проверку наваять... Kirag, Списибо, аномалии появляются везде, а также исчез вылет на затоне(видать изза аномалий глючило) Изменено 4 Июня 2010 пользователем Горчаков Антон Ссылка на комментарий
ZeeK 57 Опубликовано 3 Июня 2010 Поделиться Опубликовано 3 Июня 2010 Никто не скажет возможен ли таймер который после включения изымал бы диалог у НПС, а после прохождения времен возвращать? и Никто не подскажет как такой написать а то я в этом не бум-бум.. Не соответствует. N6260 Ссылка на комментарий
Struck 61 Опубликовано 3 Июня 2010 Поделиться Опубликовано 3 Июня 2010 ZeeK, запускай таймер, при запуске инфопоршень забирай\выдавай, а при окончании таймера опять же выдавай\забирай поршень, ну и прекондишн на диалог повесь для этого инфопоршня Ссылка на комментарий
ZeeK 57 Опубликовано 3 Июня 2010 Поделиться Опубликовано 3 Июня 2010 А никто не покажет как написать такой таймер Не соответствует. N6260 Ссылка на комментарий
iDreD 5 Опубликовано 3 Июня 2010 Поделиться Опубликовано 3 Июня 2010 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. Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
Struck 61 Опубликовано 3 Июня 2010 Поделиться Опубликовано 3 Июня 2010 (изменено) кровоSTALKER, бог с вами, тут то зачем такой таймер?(ну если конечно прям этот баг(с перезагрузкой) ненужен то да) ZeeK, local time = time_global() local delay= 60000 -- в данном случае минута function blabla() if time_global()>time+delay and выдан\не выдан ваш поршень then выдать\забрать поршень time=time_global() end end ну и вызываете где вам надо, вот этого вполне хватит Изменено 3 Июня 2010 пользователем Struck Ссылка на комментарий
Kirag 39 Опубликовано 3 Июня 2010 Поделиться Опубликовано 3 Июня 2010 (изменено) Горчаков Антон Например вот так: local lvl = level.name() if lvl == "l01_escape" then -- действия для Кордона elseif lvl == "l02_garbage" then -- действия для Свалки elseif lvl == "l03_agroprom" then -- и т.д. по всем уровням end Ну, с действиями сообразишь, что нужно, то и пиши. Если для уровня делать ничего не надо, просто оставь пустую строку, потом может пригодиться. Изменено 3 Июня 2010 пользователем Kirag Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
DiXares 1 Опубликовано 5 Июня 2010 Поделиться Опубликовано 5 Июня 2010 Всем привет, у меня два вопроса: Возможно такое(Если ГГ видит Долговца, то...)?: if db.actor:see("dolg_regular") then И возможна ли проверка попадения какого либо объекта в зону(аномалию, спейс рестриктор)? Что то типа: local obj = "wpn_pm" local am = "zone_flame" if obj попал в am then Ссылка на комментарий
Kolmogor 5 Опубликовано 8 Июня 2010 Поделиться Опубликовано 8 Июня 2010 Возможно такое(Если ГГ видит Долговца, то...)?: 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 Ссылка на комментарий
chubrick 0 Опубликовано 8 Июня 2010 Поделиться Опубликовано 8 Июня 2010 люди помогите со спавном.. а туторы почитал и совсем запутался я респавн никак не могу сделать в лс напишите кто рубит в этом деле плиз. Строгое предупреждение от модератора n6260 Юзаем заглавные буквы. Ссылка на комментарий
Влад 9 Опубликовано 9 Июня 2010 Поделиться Опубликовано 9 Июня 2010 (изменено) ... 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) Что тут не так? Kolmogor,спасибо,работает Изменено 9 Июня 2010 пользователем Влад Мои работы Не бойтесь совершенства. Вам его не достичь. C. Дали Ссылка на комментарий
Kolmogor 5 Опубликовано 9 Июня 2010 Поделиться Опубликовано 9 Июня 2010 Влад local wpn_sec = actor:item_in_slot(slot):section() Зря section() вызвал - у тебя wpn_sec присвоилась строка с названием секции оружия. У ней понятное дело никакого метода clsid() нет Попробуй написать просто local wpn_sec = actor:item_in_slot(slot) Ссылка на комментарий
Unnamed Black Wolf 4 Опубликовано 9 Июня 2010 Поделиться Опубликовано 9 Июня 2010 Вот не помню работает или нет.. Но есть ещё метод вызова клсид через точку, а не двоеточие... Ссылка на комментарий
Kolmogor 5 Опубликовано 9 Июня 2010 Поделиться Опубликовано 9 Июня 2010 Unnamed Black Wolf, Через точку это если серверный объект, а там был клиентский Ссылка на комментарий
iDreD 5 Опубликовано 9 Июня 2010 Поделиться Опубликовано 9 Июня 2010 Как выглядит проверка на количество репутации у ГГ к опр. группировке? Нужно для прекондишна в диалог. Добавлено через 33 мин.: И ещё, как прибавить актору радиацию по средствам скрипта? Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
Министр 3 Опубликовано 9 Июня 2010 Поделиться Опубликовано 9 Июня 2010 (изменено) кровоSTALKER, db.actor.radiation = x Где x - кол-во прибавляемой (!) радиации. Изменено 9 Июня 2010 пользователем Министр Ссылка на комментарий
iDreD 5 Опубликовано 9 Июня 2010 Поделиться Опубликовано 9 Июня 2010 Хм... Странно, не работает. function add_radiation_from_vintorez() if db.actor:active_item() == "wpn_vintorez_m2" then db.actor.radiation = 0.1 end end Мне нужно если юзается этот итем ((мой винторез) тоесть если он в слоте под оружие) то прибовляется радиация. Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
SkyLoader 53 Опубликовано 9 Июня 2010 Поделиться Опубликовано 9 Июня 2010 (изменено) кровоSTALKER, у тебя вылет или просто ничего не происходит? Если ничего не происходит, значит увеличь параметр радиации. Или очень маленькое увеличение радиации, или увеличение радиации только при юзании Изменено 9 Июня 2010 пользователем SkyLoader Ссылка на комментарий
Министр 3 Опубликовано 9 Июня 2010 Поделиться Опубликовано 9 Июня 2010 (изменено) крово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) и после взятия твоего оружия в руки, радиация должна начать прибавляться (если оружие в слоте, но в руках его нет, то радиации не будет). Изменено 9 Июня 2010 пользователем Министр Ссылка на комментарий
prohodimetzzz 0 Опубликовано 11 Июня 2010 Поделиться Опубликовано 11 Июня 2010 Люди помогите скрипт написать (для народной солянки). Имеем: энное количество установленных GPS меток. Необходимо: найти метку с текстовым описанием, например "QWERTY" и определить ее координаты, level vertex, game vertex, и присвоить их какимлибо переменным (напр xx,yy,zz,lv,gv). Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти