serega-gamer 0 Опубликовано 17 Ноября 2010 помогите кто нибуть нужен спальник на тч ну со всеми скриптами чтобы он спать хотел каждые примерно часов 10-12 в скриптах я полный ноль самому сделать не получается Добавлено через 2 мин.: hakim лучше всего через аллспавн по моему через скрипт такие обьекты ваще нельзя заспавеить Реклама любых модов бесплатно на моём сайте писать в личку Поделиться этим сообщением Ссылка на сообщение
serega-gamer 0 Опубликовано 22 Ноября 2010 (изменено) Люди помогите столкнулся с такой проблемой скачал ai пак 3 в 1 с этого форума который содержит -АИ pack - xStream -AI additions - Rulix (Bak) -AI modification - Monnoroch -Собирательство. - Red75 суть проблемы добавляю некоторые амкшные скрипты и идёт вылет я их не то что добавляю я их даже в bind_stalker.script не прописал но почемуто вылетает вот с таким логом 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: ... of chernobyl\gamedata\scripts\blowout_scheme.script:80: attempt to call field 'blowout_type' (a nil value) в скриптах я так что сам догнать не могу Изменено 24 Ноября 2010 пользователем n6260 Реклама любых модов бесплатно на моём сайте писать в личку Поделиться этим сообщением Ссылка на сообщение
serega-gamer 0 Опубликовано 9 Марта 2011 (изменено) Доброго времени суток всем.Народ помогите пожалуйста вот такое у меня дело,я скачал и одаптировал к своему моду АИ вертолётов в нём есть такая штука как ПЗРК дак вот суть проблемы в том что в скрипте ПЗРК можно указать только одну секцию оружия а мне нужно несколько в общем около 20 я пытался зделать это сам вот посмотрите что я сделал не так function get_dir_to_obj(self_pos,obj_pos) return obj_pos:sub(self_pos):normalize() end function get_dir_to_obj_2d(self_pos,obj_pos) self_pos.y = 0 obj_pos.y = 0 return obj_pos:sub(self_pos):normalize() end function get_sun_dir() --читаем погоду из конфига. local h = level.get_time_hours() -- игровое вчеря, Ч local m = level.get_time_minutes() -- игровое время, М if h >= 22 or h < 5 then return vector():set(0,-1,0) -- если ночь, считаем, что солнце прямо внизу. Вертолетов там точно не летает, мешать наведению не будет. end local ini = system_ini() local weather = level.get_weather() -- тип погоды local weather_sect = ini:r_string("weathers", weather) -- секция погоды, соответствующая типу local h1 = h + 1 if string.find(weather,"indoor") or weather == "sarkofag" or (weather == "yantar" and not ini:section_exist(yantar_06)) then h = 0 h1 = 12 end local weather_time, time_sect, sun_dir, split, sav, sah, sav1, sah1 if h < 10 then weather_time = "0"..tostring(h)..":00:00" else weather_time = tostring(h)..":00:00" end -- какой час погоды в текущей секции if weather_time == "24:00:00" then weather_time = "00:00:00" end time_sect = ini:r_string(weather_sect, weather_time) -- секция текущей погоды на данный час sun_ang = ini:r_string(time_sect,"sun_dir") split = string.find(sun_ang,",") sav = tonumber(string.sub(sun_ang,1,split-1)) sah = tonumber(string.sub(sun_ang,(split+1),string.len(sun_ang))) if h1 < 10 then weather_time = "0"..tostring(h1)..":00:00" else weather_time = tostring(h1)..":00:00" end if weather_time == "24:00:00" then weather_time = "00:00:00" end time_sect = ini:r_string(weather_sect, weather_time) -- секция текущей погоды на данный час sun_ang = ini:r_string(time_sect,"sun_dir") split = string.find(sun_ang,",") sav1 = tonumber(string.sub(sun_ang,1,split-1)) sah1 = tonumber(string.sub(sun_ang,(split+1),string.len(sun_ang))) if sah1 > 180 and sah < 180 then sah1 = sah1 - 360 end local sun_ang_v = sav + m*(sav1-sav)/60 local sun_ang_h = sah + m*(sah1-sah)/60 local s = vector():set(0,0,-1) local hdir = vector_rotate_y (s, sun_ang_h) local vdir = math.tan(sun_ang_v* -0.017453292519943295769236907684886) local sun_dir = vector():set(hdir.x,vdir,hdir.z) --:normalize() return sun_dir end function see_target(obj,target) return obj:see(target) end function lock_heli_actor() local sun_dir = get_sun_dir() local self_pos = db.actor:position() local self_dir = device().cam_dir local heli_pos, heli_actor_dir local heli_sun_angle, heli_actor_angle local actor_sun_angle = yaw_degree3d(sun_dir,self_dir) local lock_priority, lock_id = 0,nil if actor_sun_angle <= 20 then --захват солнца в любом случае return "sun" end for k,v in pairs(db.heli) do --if see_target(db.actor,v) then --если вертолет виден, разбираемся дальше, нет - и говорить не о чем. if v:get_helicopter():isVisible(db.actor) then --если вертолет виден, разбираемся дальше, нет - и говорить не о чем. local target_info = get_target_info(v:section()) heli_pos = v:position() heli_pos.y = heli_pos.y + target_info.engine_h heli_actor_dir = get_dir_to_obj(self_pos,heli_pos) heli_actor_angle = yaw_degree3d(heli_actor_dir,self_dir) if heli_actor_angle <= 10/target_info.evu then -- если ПЗРК смотрит в сторону вертолета, иначе точно не захватится heli_sun_angle = yaw_degree3d(heli_actor_dir,sun_dir) local lp = 1000/(heli_pos:distance_to(self_pos))*(math.cos(heli_actor_angle*0.017453292519943295 769236907684886))^2/target_info.evu if heli_sun_angle > 20 then -- если вертолет не под солнцем, то его можно захватить, иначе потеряется на фоне солнца if lp > lock_priority then lock_priority = lp lock_id = v:id() end end end end end return tostring(lock_id) end function check_lock(missile,self_pos,self_dir,sun_dir) -- local sun_dir = get_sun_dir() -- local self_pos = db.actor:position() -- local self_dir = device().cam_dir local heli_pos, heli_missile_dir local heli_sun_angle, heli_missile_angle local missile_sun_angle = yaw_degree3d(sun_dir,self_dir) local lock_priority, lock_id = 0,nil if missile_sun_angle <= 20 then --захват солнца в любом случае return "sun" end for k,v in pairs(db.heli) do --if see_target(db.actor,v) then --если вертолет виден, разбираемся дальше, нет - и говорить не о чем. if missile:isVisible(v) then --если вертолет виден, разбираемся дальше, нет - и говорить не о чем. local target_info = get_target_info(v:section()) heli_pos = v:position() heli_pos.y = heli_pos.y + target_info.engine_h heli_missile_dir = get_dir_to_obj(self_pos,heli_pos) heli_missile_angle = yaw_degree3d(heli_missile_dir,self_dir) if heli_missile_angle <= 20/target_info.evu then -- если вертолет в поле зрения ГСН, иначе точно не захватится. Угол обзора снижается при наличии ЭВУ heli_sun_angle = yaw_degree3d(heli_missile_dir,sun_dir) local lp = (heli_pos:distance_to_sqr(self_pos))*(math.cos(heli_missile_angle*0.017453292519 943295769236907684886))^2/target_info.evu if heli_sun_angle > 20 then -- если вертолет не под солнцем, то его можно захватить, иначе потеряется на фоне солнца if lp > lock_priority then lock_priority = lp lock_id = v:id() end end end end end return tostring(lock_id) end function get_target_info(section) local target_info = {} target_info.evu = read_string(section, "evu", 1) -- экранно-выхлопное устройство, цифра - во сколько раз снижается заметность target_info.lipa = read_string(section, "lipa", 0) -- станция помех "Липа", max расстояние, на к-рое исказится позиция. target_info.flares = read_string(section, "flares", 0) -- система выброса тепловых ловушек target_info.engine_h = read_string(section, "engine_h", 2.7) -- высота двигателя return target_info end function launch_actor() local target = lock_heli_actor() if target ~= "nil" then spawn.missile(db.actor:position().x,db.actor:position().y,db.actor:position().z, db.actor:level_vertex_id(),db.actor:game_vertex_id(),target ) end end local pzrk_status = 0 local pzrk_active_timer = nil local beep = 0 --local snd_lock = xr_sound.get_safe_sound_object([[material\$500]]) local snd_lock = xr_sound.get_safe_sound_object([[detectors\contact_8]]) local snd_lock_length = snd_lock:length() local snd_launch = xr_sound.get_safe_sound_object([[weapons\rpg7_shoot]]) local snd_power = xr_sound.get_safe_sound_object([[weapons\generic_close]]) local launch_time = nil local empty = nil local ammo_total = 0 --db.actor:object("hunters_toz") function update() local wpn_tab = {"wpn_igla","wpn_nan2_igla"} local wpn = weapon:section() if string.find(wpn,wpn_tab[name]) then sect = wpn_tab[name] -- break -- end -- end -- if device().fov < 35 then local pos = db.actor:position() local dir = db.actor:direction() pos.x = pos.x + 0.1*dir.z pos.z = pos.z - 0.1*dir.x pos.y = pos.y + 1.85 local target = lock_heli_actor() if target ~= "nil" and pzrk_status == 2 then if time_global() > beep then snd_lock:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) beep = time_global() + snd_lock_length end else end if pzrk_status == 0 and wpn:get_ammo_in_magazine() == 1 then --до подготовки к пуску ammo_total = wpn:get_ammo_total() -- пока не пытались готовиться к пуску, смотрим, сколько было боеприпасов. elseif pzrk_status == 0 and wpn:get_ammo_in_magazine() == 0 then --первый выстрел - подготовка к пуску --запуск системы охлаждения ГСН и гироскопа происходит в ЛЮБОМ случае, независимо от наличия захвата цели. wpn:set_ammo_elapsed(1) pzrk_status = 1 pzrk_active_timer = time_global() + 40000 -- время работы источника питания не менее 40 с. snd_power:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) elseif pzrk_status == 1 then --ждем 5 с, пока ракета готовится к пуску if wpn:get_ammo_in_magazine() == 0 then --пуск невозможен wpn:set_ammo_elapsed(1) end if time_global() > (pzrk_active_timer - 35000) then --через 5 с ракета раскочегарилась, переходим в следующий режим pzrk_status = 2 end if wpn:get_ammo_total() == ammo_total + 1 then --к-во боеприпасов увеличилось на 1, значит пытались разрядить, а не активировать. --qqq("unloaded") wpn:set_ammo_elapsed(0) pzrk_status = 5 launch_time = time_global() end elseif pzrk_status == 2 and wpn:get_ammo_in_magazine() == 0 then --второй выстрел - пуск if target ~= "nil" then -- если есть захват, блокировка пуска снимается -- local pos = device().cam_pos -- local dir = device().cam_dir local sun_dir = get_sun_dir() if target == "sun" then target_pos = vector() target_pos.x = pos.x + 5000*sun_dir.x target_pos.y = pos.y + 5000*sun_dir.y target_pos.z = pos.z + 5000*sun_dir.z else target_obj = level.object_by_id(tonumber(target)) target_pos = target_obj:position() end spawn.missile(pos,db.actor:level_vertex_id(),db.actor:game_vertex_id(),target,0, target_pos,dir,sun_dir) snd_launch:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) pzrk_status = 3 launch_time = time_global() else wpn:set_ammo_elapsed(1) end elseif pzrk_status == 2 and wpn:get_ammo_in_magazine() == 1 then -- если источник питания сдох, а ракета так и не выпущена, она пропадает if time_global() > pzrk_active_timer then --qqq("timer_up") wpn:set_ammo_elapsed(0) pzrk_status = 3 launch_time = time_global() end elseif pzrk_status == 3 and time_global() > launch_time + 2100 then --empty = alife():create("igla_tube_empty",vector():set(db.actor:position().x,db.actor:position().y+2,db.actor:positi on().z+2),db.actor:level_vertex_id(),db.actor:game_vertex_id()) empty = alife():create("igla_tube_empty",pos,db.actor:level_vertex_id(),db.actor:game_vertex_id()) snd_power:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) pzrk_status = 4 pzrk_active_timer = nil elseif pzrk_status == 4 then local tube = level.object_by_id(empty.id) if tube then tube:set_const_force(vector():set(dir.z,0,-dir.x), 300, 150) pzrk_status = 5 end elseif pzrk_status == 5 and wpn:get_ammo_in_magazine() == 1 then pzrk_status = 0 end -- end --qqq("pzrk: status = "..pzrk_status.." active_timer = "..tostring(pzrk_active_timer).." time = "..time_global()) end end function read_string(section, value, default) if system_ini():line_exist(section,value) then return system_ini():r_float(section,value) else return default end end function dir_front(dir) return dir:normalize() end function dir_right(dir) return vector():set(dir.z,0,-1*dir.x):normalize() end function dir_up(dir) local dir_xz = vector():set(dir.x,0,dir.z):magnitude() -- проекция вектора dir на горизонтальную плоскость local dir_xz1 = vector():set((-1*dir.x) ,0,(-1*dir.z)):set_length(dir.y) return vector():set(dir_xz1.x ,dir_xz,dir_xz1.z):normalize() end function offset_to_global(pos,dir,off) local dir_front = dir_front(dir) local dir_up = dir_up(dir) local dir_right = dir_right(dir) pos.x = pos.x + dir_right.x*off.x + dir_up.x*off.y + dir_front.x*off.z pos.y = pos.y + dir_right.y*off.x + dir_up.y*off.y + dir_front.y*off.z pos.z = pos.z + dir_right.z*off.x + dir_up.z*off.y + dir_front.z*off.z return pos end я сменил это local wpn = db.actor:item_in_slot(db.actor:active_slot()) if wpn and wpn:section() == "wpn_igla" then на это local wpn_tab = {"wpn_igla","wpn_nan2_igla"} local wpn = weapon:section() if string.find(wpn,wpn_tab[name]) then sect = wpn_tab[name] кто что знает помогите плиззззз!!!!! Строгое предупреждение от модератора Куфзук Пишем грамотно, без запятых читать это - весьма проблематично!!! И про спойлеры не забываем! Кстате, суть проблемы друдно улавима! Ты лишь написал, что ты криво адаптировал АИ вертолетов, ну, а что не вышло или вышло ты же упустил. Ко всему, есть тема: AI вертолетов, где ты уже бывал, т.е. о ней знаешь. Ты чего - издеваешься!? Нарушение пунктов правил: 2.1.2 и 2.5 Добавлено через 14 мин.: Я написал что адапртировал я нормально просто мне секций несколько прописать надо и всё!!!!!!! Изменено 9 Марта 2011 пользователем Куфзук Реклама любых модов бесплатно на моём сайте писать в личку Поделиться этим сообщением Ссылка на сообщение
serega-gamer 0 Опубликовано 10 Марта 2011 (изменено) Ага STARTS спасибо Строгое предупреждение от модератора Куфзук За нежелание придерживаться ОБЩИХ правил форума - рид на трое суток. Изменено 10 Марта 2011 пользователем Куфзук Реклама любых модов бесплатно на моём сайте писать в личку Поделиться этим сообщением Ссылка на сообщение
serega-gamer 0 Опубликовано 1 Апреля 2011 (изменено) Доброго времени суток всем.Народ помогите пожалуйста такая проблема все наверно слышали про Interactive Music Mod дак вот я хочу сделать так что бы его можно было отключить в опциях меню игры в графе звуки такой же кнопкой как eax вот здесь файл xml отвечающий за кнопку и скрипт где прописана функция кнопки я нашёл но не могу понять какую функцию и где нужно прописать чтобы моя кнопка отключения звука Interactive Music Modа работала помогите пожалуйста как мне это осуществить а то всю голову уже сломал Изменено 1 Апреля 2011 пользователем serega-gamer Реклама любых модов бесплатно на моём сайте писать в личку Поделиться этим сообщением Ссылка на сообщение
serega-gamer 0 Опубликовано 1 Июля 2011 Привет всем народ пытаюсь совместить 2 мода Helicopter AI+PZRK и Stories revival mod v0.6 подскажите пожалуйста ка бы мне совместить эти функции в _g скрипте function printf(fmt,...) log(string.format(fmt,...)) end function qqq(n) local scr = true local con = true local k = "debug data QQQ "..tostring(n) if scr then news_manager.send_tip(db.actor, k, nil, nil, 5000) end if con then get_console():execute ("load "..k) get_console():execute ("flush") end end function parse_data(str) local string_parts = {} if str == nil then string_parts[1] = nil return string_parts end local str_beg,str_end str_end = str local split_pos = find_split_pos(str_end) while split_pos ~= nil do str_beg, str_end = split_string(str_end,split_pos) table.insert(string_parts,str_beg) split_pos = find_split_pos(str_end) end table.insert(string_parts,str_end) return string_parts end function find_split_pos(str) local split_pos = string.find(str,",") if split_pos == nil then return nil end local br1_pos = string.find(str,"(",1,true) local br2_pos = string.find(str,")",1,true) if br1_pos ~= nil and br2_pos ~= nil and br1_pos < br2_pos and split_pos > br1_pos then local str_end1 = string.sub(str,(br2_pos +1),string.len(str)) if string.find(str_end1,",") ~= nil then split_pos = br2_pos + string.find(str_end1,",") else split_pos = nil end end return split_pos end function split_string(str,split_pos) local str_beg = (string.sub(str,1,split_pos-1)) local str_end = string.sub(str,(split_pos+1),string.len(str)) return str_beg,str_end end и function printf(fmt,...) -- local arg={...} -- if arg==nil or arg[0]==nil then -- mylog(fmt) -- else -- mylog(string.format(fmt,...)) -- end end local bufferedmessages={} function mylog(msg) -- if db and db.actor then -- if bufferedmessages then -- for k,v in ipairs(bufferedmessages) do -- db.actor:give_game_news(v, "ui\\ui_iconsTotal", Frect():set(0,0,100,100), 0, 15000) -- end -- bufferedmessages=nil -- end -- db.actor:give_game_news(msg, "ui\\ui_iconsTotal", Frect():set(0,0,100,100), 0, 15000) -- else -- table.insert(bufferedmessages,msg) -- end end Добавлено через 2 мин.: Забыл сказать первый код из Helicopter AI+PZRK ну а второй я думаю понятно откуда Строгое предупреждение от модератора kokkai Большие массивы прячем под спойлер Реклама любых модов бесплатно на моём сайте писать в личку Поделиться этим сообщением Ссылка на сообщение
serega-gamer 0 Опубликовано 30 Июля 2011 Всем Привет! Помогите пожалуйста что и куда прописать что бы включить (девайс авто доктор) аптечки у меня уже работают а вот авто доктор не пашет... -- ПОЛЕВАЯ МЕДИЦИНА -- -- Автоматическая система ввода антирада -- автор Atrocious 2008 , отладка ошибок KamikaZze 2009 local autoinjector = system_ini():r_s32("options","autoinjector") local max_rad_percentage = 90 --[[radiation level, at which the system kicks in ]]-- local monitor_long_exposure = true --[[the system will also activate, if the user was exposed to radiation over a longer time ]]-- local min_rad_percentage = 10 --[[minmum radiation dose, before the system counts the time (unused if monitor_long_exposure is 'false') ]]-- local max_radiated_seconds = 20 --[[maximum time of low radiation, before anti-rads are administered (unused if monitor_long_exposure is 'false') ]]-- local reminder = true --[[get reminding messages, if you are out of anti-rad supplies ]]-- local mins_till_next_remind = 60 --[[time in minutes until you get the next reminder message (unused if reminder is 'false') ]]-- local use_text = true --[[show text if the system has something to tell? ]]-- local use_sounds = true --[[play sounds if the system has something to tell? ]]-- local use_custom_sounds = true --[[use Half Life 1 HEV sounds? (unused if use_sounds is 'false') ]]-- local use_scientific_kit = true --[[disassemble scientific medkits for anti-rad usage? ]]-- local suit_radiation = 70 local suit_bullet_proof = 50 --[[selection parameters: suits with radiation protection or bullet protection equal to or higher than those two percentage values, will provide the injection system. ]]-- local additional_suits={ "nonos_kostum", "outfit_stalker_m1" } --[[List of suits that use the injection system, even though they don't meet the radiation or bullet protection requirements. Currently on the list are Ghost's suit and a Stalker suit that can be found in the Dark Valley. Put new suits on top of the list. Don't forget to put " " and , HINT: DON'T put a comma behind the last suit name! ]]-- ---------------------------------------------------------------------------- ------------------------- End of options --------------------------- ---------------------------------------------------------------------------- function system_enabled() if autoinjector == 1 then return true else return false end end function get_max_percentage() if max_rad_percentage > 100 then max_rad_percentage = 100 elseif max_rad_percentage < 10 then max_rad_percentage = 10 end return max_rad_percentage/100 end function get_min_percentage() if min_rad_percentage > 90 then min_rad_percentage = 90 elseif min_rad_percentage < 1 then min_rad_percentage = 1 end return min_rad_percentage/100 end function get_suit_rad() if suit_radiation > 100 then suit_radiation = 100 elseif suit_radiation < 0 then suit_radiation = 0 end return suit_radiation/100 end function get_suit_bproof() if suit_bullet_proof > 100 then suit_bullet_proof = 100 elseif suit_bullet_proof < 0 then suit_bullet_proof = 0 end return suit_bullet_proof/100 end function get_rad_time() if max_radiated_seconds > 300 then max_radiated_seconds = 300 elseif max_radiated_seconds < 0 then max_radiated_seconds = 0 end return math.floor(max_radiated_seconds/3) end local last_section = " " local last_result = false function is_auto_injection_suit() local checker = 0 local rini = system_ini() local suit = db.actor:item_in_slot(6) local section = nil local injection_suit_found = false if suit then section = suit:section() end -- if section and last_section == section then return last_result elseif section and rini:section_exist(section) then local radiation_protection = rini:r_float(section, "radiation_protection" ) local fire_wound_protection = rini:r_float(section, "fire_wound_protection" ) if radiation_protection >= get_suit_rad() or fire_wound_protection >= get_suit_bproof() then injection_suit_found = true else for k,v in pairs(additional_suits) do if section == v then checker = 1 break -- injection_suit_found = true -- Так как это происходит тут, делать нельзя. Автор скрипта неверно обращается с локальной переменной -- Чтобы избежать вылета, я вынес переменную ниже, а тут воткнул промежуточную переменную end end -- а вот тут оно уже и отрабатывает как надо if checker == 1 then injection_suit_found = true end -- 14/02/2009 KamikaZze end last_section = section last_result = injection_suit_found end -- return injection_suit_found end local auto_injection_active = is_auto_injection_suit() local radiation_warning = true local reminder_count = 0 --инициализировал по умолчанию на 0 чтобы избежать вылета функции check_antirad_supplies() при загрузке сохранения local exposure_count = 0 function check_radiation() if auto_injection_active and radiation_warning and (db.actor.radiation >= get_max_percentage() or long_time_exposure) then if medication_delay == nil or medication_delay < time_global() then if db.actor:object("antirad") and not antirad_spawned then db.actor:eat(db.actor:object("antirad")) if use_text then local news_text if long_time_exposure then news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default]Долгое нахождение в зоне повышенной радиации! %c[255,0,230,0]Применяется противорадиационный препарат." else news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default]Получена высокая доза радиации! %c[255,0,230,0]Применяется противорадиационный препарат." end db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 3000) end if use_sounds then local snd_obj if use_custom_sounds then snd_obj = xr_sound.get_safe_sound_object( [[HEV\administering-anti-rad]] ) else snd_obj = xr_sound.get_safe_sound_object( [[device\pda\pda_tip]] ) end if snd_obj then snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) end end elseif use_scientific_kit and db.actor:object("medkit_scientic") and not antirad_spawned then alife():release(alife():object(db.actor:object("medkit_scientic"):id()), true) alife():create("antirad", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) alife():create("medkit", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) antirad_spawned = true return elseif antirad_spawned then db.actor:eat(db.actor:object("antirad")) antirad_spawned = false if use_text then local news_text if long_time_exposure then news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default]Долгое нахождение в зоне повышенной радиации! \\nПротиворадиационый препарат отсутствует! %c[255,230,230,0]Использеутся препарат из научной аптечки!" else news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default]Получена высокая доза радиации! \\nПротивоадиационый препарат отсутствует! %c[255,230,230,0]Использеутся препарат из научной аптечки!" end db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 5000) end if use_sounds then local snd_obj if use_custom_sounds then snd_obj = xr_sound.get_safe_sound_object( [[HEV\administering-anti-rad]] ) else snd_obj = xr_sound.get_safe_sound_object( [[device\pda\pda_tip]] ) end if snd_obj then snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) end end else if use_text then local news_text if long_time_exposure then news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[255,230,0,0]ОПАСНОСТЬ! Долгое нахождение в зоне повышенной радиации! Противорадиационные препараты отстутствуют!" else news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[255,230,0,0]ОПАСНОСТЬ! Получена высокая доза радиации! Противорадиационные препараты отстутствуют!" end db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 5000) end if use_sounds then local snd_obj if use_custom_sounds then snd_obj = xr_sound.get_safe_sound_object( [[HEV\hi-rad-no-anti-rad]] ) else snd_obj = xr_sound.get_safe_sound_object( [[device\pda\pda_tip]] ) end if snd_obj then snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) end end radiation_warning = false end exposure_count = 0 long_time_exposure = false medication_delay = time_global() + 3000 end elseif auto_injection_active and radiation_warning and monitor_long_exposure and (medication_delay == nil or medication_delay < time_global()) then if db.actor.radiation >= get_min_percentage() then exposure_count = exposure_count + 1 if exposure_count > get_rad_time() then long_time_exposure = true else medication_delay = time_global() + 3000 end else exposure_count = 0 long_time_exposure = false medication_delay = time_global() + 3000 end end end function check_antirad_supplies() if auto_injection_active then if antirad_check_delay == nil or game.get_game_time():diffSec(antirad_check_delay) > 60 then if not db.actor:object("antirad") and not (use_scientific_kit and db.actor:object("medkit_scientic")) then --ошибка срабатывает в этой проверке, если reminder_count не инициализирована if reminder and reminder_count and reminder_count == 0 or reminder_count >= mins_till_next_remind then --ошибка срабатывает в этой проверке, если reminder_count не инициализирована if use_text then local news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default]Напоминаю: %c[255,230,0,0]Противорадиационные препараты отстутствуют! %c[default]Автоматический ввод препаратов невозможен." db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 3000) end if use_sounds then local snd_obj if use_custom_sounds then snd_obj = xr_sound.get_safe_sound_object( [[HEV\no-anti-rad]] ) else snd_obj = xr_sound.get_safe_sound_object( [[device\pda\pda_tip]] ) end if snd_obj then snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) end end reminder_count = 1 elseif reminder then reminder_count = reminder_count + 1 end else radiation_warning = true reminder_count = 0 end antirad_check_delay = game.get_game_time() end end end function check_auto_injection_suit() if antirad_suit_delay == nil or antirad_suit_delay < time_global() then auto_injection_active = is_auto_injection_suit() if db.actor and auto_injection_active and db.actor:dont_has_info("auto_injection_system_startup") then if db.actor:object("antirad") then if use_text then local news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default]Запуск системы. %c[255,0,230,0]Противорадиационные препараты доступны." db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 5000) end if use_sounds then local snd_obj if use_custom_sounds then snd_obj = xr_sound.get_safe_sound_object( [[HEV\automedic-on]] ) else snd_obj = xr_sound.get_safe_sound_object( [[device\pda\pda_tip]] ) end if snd_obj then snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) end end reminder_count = 0 elseif not db.actor:object("antirad") and use_scientific_kit and db.actor:object("medkit_scientic") then if use_text then local news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default]Запуск системы. \\n".."%c[255,230,230,0]Противорадиационные препараты отстутствуют! Используются препараты из научной аптечки." db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 5000) end if use_sounds then local snd_obj if use_custom_sounds then snd_obj = xr_sound.get_safe_sound_object( [[HEV\automedic-on]] ) else snd_obj = xr_sound.get_safe_sound_object( [[device\pda\pda_tip]] ) end if snd_obj then snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) end end reminder_count = 0 else if use_text then local news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default]Запуск системы. %c[255,230,0,0]Противорадиационные препараты отстутствуют!" db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 5000) end if use_sounds then local snd_obj if use_custom_sounds then snd_obj = xr_sound.get_safe_sound_object( [[HEV\automedic-on-no-anti-rad]] ) else snd_obj = xr_sound.get_safe_sound_object( [[device\pda\pda_tip]] ) end if snd_obj then snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) end end reminder_count = 1 end antirad_check_delay = game.get_game_time() db.actor:give_info_portion("auto_injection_system_startup") elseif not auto_injection_active then db.actor:disable_info_portion("auto_injection_system_startup") end antirad_suit_delay = time_global() + 3000 end end -- Ухудшение аптечек -- Автор - Mixser -- Спасибо за помощь Kamikazze & Fear93 med_cnt = 0 --счётчик для аптечек text_h5 = "%c[255,225,225,0]Эффективность аптечек понизилась..." text_h10 = "%c[255,225,225,0]Эффективность аптечек понизилась до среднего уровня..." text_h15 = "%c[255,225,225,0]Эффективность аптечек упала до критического уровня..." text_too_much = "%c[255,255,0,0]Крайне высока вероятность умереть от передозировки лекартств!" function med_count() --news_manager.send_tip(db.actor,"Вызвана функция med_count()", nil, nil, 2000) med_cnt = med_cnt+1 --news_manager.send_tip(db.actor,db.actor.health, nil, nil, 10000) -- Можно не выводить количество использованных аптечек... Надо просто закомментировать (--) строчку: news_manager.send_tip(db.actor,"Количество использованных аптечек - "..med_cnt, nil, nil, 2000). --news_manager.send_tip(db.actor,"Количество использованных аптечек - "..med_cnt, nil, nil, 2000) if med_cnt == 3 then news_manager.send_tip(db.actor,text_h5, nil, nil, 10000) end if med_cnt == 7 then news_manager.send_tip(db.actor,text_h10, nil, nil, 10000) end if med_cnt == 11 then news_manager.send_tip(db.actor,text_h15, nil, nil, 10000) end if med_cnt == 15 then news_manager.send_tip(db.actor,text_too_much, nil, nil, 10000) end return med_cnt end function use_medkit(pid) --news_manager.send_tip(db.actor,"Вызвана функция use_medkit(pid)", nil, nil, 10000) if alife():object(pid)==nil then --news_manager.send_tip(db.actor,pid, nil, nil, 10000) local cur_med_cnt = med_count() if cur_med_cnt>=3 and cur_med_cnt<7 then db.actor.health=-0.05 end if cur_med_cnt>=7 and cur_med_cnt<11 then db.actor.health=-0.1 end if cur_med_cnt>=11 and cur_med_cnt<15 then db.actor.health=-0.2 end if cur_med_cnt>=15 then db.actor.health=-0.35 end end end function use_medkit_army(pid) if alife():object(pid)==nil then local cur_med_cnt = med_count() if cur_med_cnt>=3 and cur_med_cnt<7 then db.actor.health=-0.2 end if cur_med_cnt>=7 and cur_med_cnt<11 then db.actor.health=-0.3 end if cur_med_cnt>=11 and cur_med_cnt<15 then db.actor.health=-0.5 end if cur_med_cnt>=15 then db.actor.health=-0.7 end end end function use_medkit_scientic(pid) if alife():object(pid)==nil then --medkit_scientic local cur_med_cnt = med_count() if cur_med_cnt>=3 and cur_med_cnt<7 then db.actor.health=-0.4 end if cur_med_cnt>=7 and cur_med_cnt<11 then db.actor.health=-0.6 end if cur_med_cnt>=11 and cur_med_cnt<15 then db.actor.health=-0.8 end if cur_med_cnt>15 then db.actor.health=-1.1 end end end function use_medkit_red(pid) if alife():object(pid)==nil then --medkit_red local cur_med_cnt = med_count() if cur_med_cnt>=3 and cur_med_cnt<7 then db.actor.health=-0.5 end if cur_med_cnt>=7 and cur_med_cnt<11 then db.actor.health=-0.7 end if cur_med_cnt>=11 and cur_med_cnt<15 then db.actor.health=-0.9 end if cur_med_cnt>15 then db.actor.health=-1.3 end end end function use_voda(pid) if alife():object(pid)==nil then news_manager.send_tip(db.actor,"%c[255,0,230,0]Эффективность аптечки восстановлена...", nil, nil, 10000) -- soundtrack.to_drink() med_cnt = 0 end end function check_medkit(p_obj) --news_manager.send_tip(db.actor,"Вызвана функция - check_medkit(p_obj)", nil, nil, 10000) if p_obj and p_obj:section() == "medkit" then amk.start_timer("mdk", 0.01, p_obj:id()) end if p_obj and p_obj:section() == "medkit_army" then amk.start_timer("mdk_a", 0.01, p_obj:id()) end if p_obj and p_obj:section() == "medkit_scientic" then amk.start_timer("mdk_c", 0.01, p_obj:id()) end if p_obj and p_obj:section() == "medkit_red" then amk.start_timer("mdk_r", 0.01, p_obj:id()) end if p_obj and p_obj:section() == "voda" then amk.start_timer("voda", 0.01, p_obj:id()) end end -- Девайс "Автодоктор" -- Автор - Mixser -- Спасибо за помощь Kamikazze & Fear93 count = false flag_start = true --start start_bad = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default] Старт. Проверка... %c[255,225,0,0]Внимание! Выявлено отстуствие необходимых препаратов!" --start_army = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default] Старт. Проверка... %c[255,0,230,0] Отсуствуют армейские аптечки!" --start_scientic = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default] Старт. Проверка... %c[255,0,230,0]Отсуствуют научные аптечки!" --start_dix = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default] Старт. Проверка... %c[255,0,230,0]Отсуствуют стимуляторы!" start_normal = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default] Старт. Проверка... %c[255,0,230,0]Все компоненты присуствуют!" --use items scientic_use = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default] %c[255,0,230,0]Применяется научная аптечка." army_use = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default] %c[255,0,230,0]Применяется армейская аптечка." red_use = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default] %c[255,0,230,0]Применяется универсальный мед. набор." --antirad_use = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default] %c[255,0,230,0]Высокий уровень радиации! Применяется антирад." dix_use = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default] %c[255,0,230,0] Снижение выносливости! Применяется стимулятор." --rad_scientic = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default]Получена высокая доза радиации! \\nПротивоадиационый препарат отсутствует! %c[255,230,230,0]Использеутся препарат из научной аптечки!" power_army = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default] Снижение выносливости! \\n Стимулятор отсутствует! %c[255,230,230,0]Используется препарат из армейской аптечки!" power_red = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default] Снижение выносливости! \\n Стимулятор отсутствует! %c[255,230,230,0]Используется препарат из универсального мед.набора!" test = "hflbfwbb" function check_autodoctor() -- news_manager.send_tip(db.actor,"Вызвана функция check_autodoctor()", nil, nil, 2000) local bio_belt=inventory.belt["autodoctor"] if bio_belt then count = true if count == true then --db.actor:give_game_news(start, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 3000) autohealing() end return count else --news_manager.send_tip(db.actor,"flag_start - "..flag_start, nil, nil, 2000) flag_start = false count = false return count,flag_start end end function start_up() local bio_belt=inventory.belt["autodoctor"] if flag_start == false then if count == true then if not db.actor:object("medkit_army" ) or not db.actor:object("medkit_scientic" ) or not db.actor:object("medkit_red" ) or not db.actor:object("dix" ) then snd_obj = xr_sound.get_safe_sound_object( [[HEV\automedic-on-no-anti-rad]] ) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) flag_start = true db.actor:give_game_news(start_bad, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 3000) else snd_obj = xr_sound.get_safe_sound_object( [[HEV\automedic-on]] ) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) flag_start = true --news_manager.send_tip(db.actor,"flag_start - "..flag_start, nil, nil, 2000) db.actor:give_game_news(start_normal, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 3000) --return flag_start end return flag_start end end end ----------------- ----------------- function autohealing() --db.actor:inventory_for_each(item) --check_inv() --db.actor.health=db.actor.health --news_manager.send_tip(db.actor,"flag_start - "..flag_start, nil, nil, 2000) local obt = nil local snd_obj = nil --news_manager.send_tip(db.actor,"Вызвана функция autohealing()", nil, nil, 2000) --local have_medkit_army=db.actor:object("medkit_army") -- переменная под армейскую аптечку. Есть ли она? --local have_medkit_scientic=db.actor:object("medkit_scientic") -- переменная под научную аптечку. Есть ли она? --local have_antirad=db.actor:object("antirad") -- переменная под антирад. Есть ли она? --local have_dix=db.actor:object("dix") -- переменная под стимулятор. Есть ли она? ---------------------------- ---------------------------- if db.actor.health<=0.5 and db.actor.health>=0.25 then if db.actor:object("medkit_army") then obt = db.actor:object("medkit_army") snd_obj = xr_sound.get_safe_sound_object( [[HEV\administering-anti-rad]] ) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) db.actor:give_game_news(army_use, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 3000) db.actor:eat(obt) end end if db.actor.health<0.25 then if db.actor:object("medkit_scientic") then obt = db.actor:object("medkit_scientic") snd_obj = xr_sound.get_safe_sound_object( [[HEV\administering-anti-rad]] ) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) db.actor:give_game_news(scientic_use, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 3000) db.actor:eat(obt) end end if db.actor.health<0.30 then if db.actor:object("medkit_red") then obt = db.actor:object("medkit_red") snd_obj = xr_sound.get_safe_sound_object( [[HEV\administering-anti-rad]] ) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) db.actor:give_game_news(red_use, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 3000) db.actor:eat(obt) end end if db.actor.power<=0.15 then if db.actor:object("dix") then obt = db.actor:object("dix") snd_obj = xr_sound.get_safe_sound_object( [[HEV\administering-anti-rad]] ) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) db.actor:give_game_news(dix_use, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 3000) db.actor:eat(obt) elseif not db.actor:object("dix") and db.actor:object("medkit_army") then obt = db.actor:object("medkit_army") snd_obj = xr_sound.get_safe_sound_object( [[HEV\administering-anti-rad]] ) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) db.actor:give_game_news(power_army, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 3000) db.actor:eat(obt) elseif not db.actor:object("dix") and db.actor:object("medkit_red") then obt = db.actor:object("medkit_red") snd_obj = xr_sound.get_safe_sound_object( [[HEV\administering-anti-rad]] ) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) db.actor:give_game_news(power_red, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 3000) db.actor:eat(obt) amk.spawn_item_in_inv("medkit",nil) end end end Реклама любых модов бесплатно на моём сайте писать в личку Поделиться этим сообщением Ссылка на сообщение
serega-gamer 0 Опубликовано 1 Августа 2011 (изменено) Kirag На счёт того как искать где прописан скрипт я знаю а в том месте откуда я его взял работет только функция аптечек а функции автодоктора ни где не прописаны проверял 100 раз в огсе было такое я пытался сделать по аналогии но получал вылеты в огсе функция немного другая потом я решил выдрать из огсе как все наверно знают огсе использует функции амк естественно имеет скрипт amk дак вот скрипт в котором автодоктор называется healing он прописан в скрипте амк в моём моде тоже есть амк скрипт но в огсе этот скрипт просто за*ран различными функциями в моём таких просто нет я пытался скопировать ту функцию из амк в которой прописан автодоктор но получил вылет видимо там ещё какие то функции задействованы а полностью перебрать все функции амк + ещё и правленные огсешными скриптерами у меня мозгов не хватит а полностью использовать амк скрипт из огсе тоже не получится наверно понятно почему. Вот не знаю что делать качать ещё какие нибуть моды весом в несколько гигов ради того чтобы посмотреть как устрорена функция как то не очень интересно!!!! извиняюсь что сразу не описал всю суть своей проблемы Строгое предупреждение от модератора Cyclone Читать монолитные тексты радости мало кому доставит. Рецидив п. 2.5. 7 суток Р\О. Изменено 1 Августа 2011 пользователем Cyclone Реклама любых модов бесплатно на моём сайте писать в личку Поделиться этим сообщением Ссылка на сообщение
serega-gamer 0 Опубликовано 25 Ноября 2011 Всем привет народ! Помогите правильно построить следующую функцию для ТЧ hev_crash = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default] %c[255,230,0,0]Общий сбой системы система отключается!" local snd_obj = nil local act_suit = db.actor:item_in_slot(6) local hev_min_cond_active = 0.01 ---------------------------- ---------------------------- if act_suit and act_suit:section() == "nano_kostum" then if act_suit:condition() < hev_min_cond_active then snd_obj = xr_sound.get_safe_sound_object( [[HEV\hev_crash]] ) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) db.actor:give_game_news(hev_crash, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 3000) end end В общем я хочу сделать так что бы когда состояние костюма нулевое то гг получал сообщение о том что система жизнеобеспечения отключается но проблема в том что когда костюм достигает нулевой кондиции эти сообщения появлются одно за другим эквивалент появления примерно доля сотой секунды в общем они не перестают приходить.Помогите сосатвить функцию так что бы сообщение приходило только один раз! Реклама любых модов бесплатно на моём сайте писать в личку Поделиться этим сообщением Ссылка на сообщение
serega-gamer 0 Опубликовано 26 Ноября 2011 (изменено) Gun12 Спасибо большое! Я как раз так и хотел что бы сообщение о ре-активации системы тоже приходило :ny_z_2: Теперь такая проблема скажите пожалуйста кто в курсе можно ли через db.actor кровотечение отследить?? А то я что то только пси здоровье, радиацию, мораль и выносливость нашёл! Изменено 26 Ноября 2011 пользователем serega-gamer Реклама любых модов бесплатно на моём сайте писать в личку Поделиться этим сообщением Ссылка на сообщение
serega-gamer 0 Опубликовано 2 Декабря 2011 Всем привет народ! Помогите пожалуйста построить следующую функцию, в общем мне нужно сделать функцию на проверку патронов в инвентаре и в магазине активного оружия то есть если я к примеру стрелляю из АК-74 и у меня кончились патроны в инвентаре и в магазине автомата тогда должен воспроизвестись звуковой файл! Проблема в том что я не знаю как составить проверку на количество оставшихся патронов! Помогите пожалуйста кому не трудно... Реклама любых модов бесплатно на моём сайте писать в личку Поделиться этим сообщением Ссылка на сообщение
serega-gamer 0 Опубликовано 2 Декабря 2011 (изменено) Artos ты не прав мне не лень мне очень интересно просто я не знаю как сделать проверку на патроны в инвентаре! Проверку на патроны в магазине я сделал пока только на 1 слот Изменено 2 Декабря 2011 пользователем Artos Реклама любых модов бесплатно на моём сайте писать в личку Поделиться этим сообщением Ссылка на сообщение
serega-gamer 0 Опубликовано 3 Декабря 2011 (изменено) Всем спасибо за помощ! Artos ты прав в том что я не совсем правильно изложил свой ход мыслей точнее не правильно обяснил что именно я хочу! А хочу я как раз сделать глобальную проверку патронов к обсолютно всем стволам а не к некоторым.Дело то в том что у меня действительно очень мало опыта для написания кодов в lua я даже не знаю как использовать флаги точнее как построить функцию проверки на то что, выполнилось ли уже какое либо действие или нет а код что я выложил это только так набросок проверки.Вот если бы кто нибудь хоть разок подробно обяснил как использовать все функции и классы в луа и какой класс или функция что значит либо за что отвечает. Конечно я понимаю что не кто не станет станет тратить на меня своё время и обьяснять мне все нюансы языка луа я так же понимаю что большинство людей ни кто ни чему не учил что они сами научились так сказать методом тыка но хоть кто то бы подумал о том что бы создать тему по языку луа так сказать для чайников или что то подобное. Но я всё таки буду пытаться писать коды набирать опыт и тогда я думаю всё получится тут веть главно сильно захотеть и всё будет :ny_ph34r_1: И всё же тебе лень! Лень просто "прогуляться" по форуму и глянуть то, что уже в нём есть. Неужели ты думаешь, что до тебя до этого никто не додумался? Ты правда веришь, что все, кто может использовать скрипты для своих потребностей, программисты? Вряд ли. Например, в шапке темы, есть ссылка на "Справочное руководство по языку Lua 5.1". На той же Wiki есть ссылки на различные ресурсы, как на русском, так и на английском языках по языку Lua, именно по языку, не по скриптовой части STALKERa. Про Lua также есть тема и здесь, на форуме, называется она: "Язык Lua. Общие вопросы программирования". По поводу функций и классов, также есть хорошая, я бы даже сказал - отличная тема: "Справочник по функциям и классам", на нашем форуме, там расписано много основных классов и их методов, которые используют модостроители. Ну и наконец, есть еще один ресурс, который есть у каждого, у кого установлен STALKER - это оригинальные скрипты GSC!!! Почему многие ими пренебрегают - лично мне не понятно. Проблема в том, что многие просто-напросто не хотят читать уже написанное, причин много, но основная всё же - это лень! Всем подавай готовенькое! Это не правильно хотя бы по отношению к другим пользователям - почему одни должны читать и познавать, а другие требуют чтобы им сделали!? Не хочу тебя, да и не кого, обидеть, но попробуй потрать неделю на прочтение темы "Справочник по функциям и классам", а затем ещё неделю на практические опыты при помощи этих статей и ты узнаешь для себя мнооого нового и, поверь, плюсов от этого ты извлечешь гораздо больше, нежели из готового варианта. Нужно не просто хотеть, нужно для этого ещё и что-то делать! Иначе твоё хотение больше будет похоже на мечты, а не на цели ... P.S. И не забывай про уважение к языку на котором ты пишешь - пиши грамотнее! Спасибо за понимание. ColR_iT Изменено 3 Декабря 2011 пользователем ColR_iT Реклама любых модов бесплатно на моём сайте писать в личку Поделиться этим сообщением Ссылка на сообщение
serega-gamer 0 Опубликовано 4 Декабря 2011 (изменено) Всем ещё раз спасибо за помощ! Вот почему так - обьясните народ, не могу додуматься как построить функцию, пишу на форуме так мол и так, помогите, а через некоторое время сам додумываюсь как её построить! Всё таки, когда что то не получается - нужно пробовать ещё, теперь я это уяснил. local flag_wpn_1 local flag_wpn_2 function ammo_controls() local snd_obj = nil local s1 = db.actor:item_in_slot(1) local s2 = db.actor:item_in_slot(2) if not flag_wpn_1 then if s1 and s1:get_ammo_total() < 1 then snd_obj = xr_sound.get_safe_sound_object( [[HEV\ammo_0]] ) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) flag_wpn_1 = true end elseif s1 and s1:get_ammo_in_magazine() >= 1 then flag_wpn_1 = nil end if not flag_wpn_2 then if s2 and s2:get_ammo_total() < 1 then snd_obj = xr_sound.get_safe_sound_object( [[HEV\ammo_0]] ) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) flag_wpn_2 = true end elseif s2 and s2:get_ammo_in_magazine() >= 1 then flag_wpn_2 = nil end end Не смейтесь, если функция построена банально - делаю как умею, что с меня взять)))) Большое спасибо abramcumner и Artos за то, что подсказали мне 2 этих параметра: get_ammo_in_magazine() и get_ammo_total() - без них я бы врятли справился! Добавлено через 113 мин.: Поправка я слегка изменил local flag_wpn_1 local flag_wpn_2 function ammo_controls() local snd_obj = nil local s1 = db.actor:item_in_slot(1) local s2 = db.actor:item_in_slot(2) local act_slot = db.actor:active_slot() if not flag_wpn_1 then if s1 and s1:get_ammo_total() < 1 and act_slot == 1 then snd_obj = xr_sound.get_safe_sound_object( [[HEV\ammo_0]] ) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) flag_wpn_1 = true end elseif s1 and s1:get_ammo_in_magazine() >= 1 then flag_wpn_1 = nil end if not flag_wpn_2 then if s2 and s2:get_ammo_total() < 1 and act_slot == 2 then snd_obj = xr_sound.get_safe_sound_object( [[HEV\ammo_0]] ) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) flag_wpn_2 = true end elseif s2 and s2:get_ammo_in_magazine() >= 1 then flag_wpn_2 = nil end хотелось бы сделать то же самое и с гранатами, но к сожелению я не знаю как их щитать; методы с get_ammo_in_magazine() и get_ammo_total() к ним не подходят. Подскажите пожалуйста что-нибудь! Строгое предупреждение от модератора ColR_iT Это последний раз! Не знаешь где расставлять знаки препинания - используй проверку пунктуации, хотя бы, из того же Wordа. Изменено 4 Декабря 2011 пользователем ColR_iT Реклама любых модов бесплатно на моём сайте писать в личку Поделиться этим сообщением Ссылка на сообщение
serega-gamer 0 Опубликовано 9 Декабря 2011 (изменено) Строгое предупреждение от модератора ColR_iT Потрясающе! Ты пишешь: но всё же пиши как то понятнее почему люди должны напрягать свой мозг читая твои посты когда к тебе самому уже неоднократно была точно такая же просьба. Читать твои посты неудобно - отсутствие пунктуации. Итого: 3 дня Read Only. Изменено 9 Декабря 2011 пользователем ColR_iT Реклама любых модов бесплатно на моём сайте писать в личку Поделиться этим сообщением Ссылка на сообщение
serega-gamer 0 Опубликовано 29 Декабря 2011 Всем привет народ! Есть проблемка мне нужно построить таймер на амк функциях но к сожалению с таймерами ещё не разу не сталкивался другим словом вообще не понимаю что к чему. Помогите, пожалуйста, мне нужен таймер реального времени примерно на 6-7 секунд. Если кому не трудно опишите, пожалуйста, подробно, что к чему какая функция или переменная где и как фигурирует заранее спасибо! Реклама любых модов бесплатно на моём сайте писать в личку Поделиться этим сообщением Ссылка на сообщение
serega-gamer 0 Опубликовано 15 Марта 2012 (изменено) Всем привет народ! Недавно построил следующую функцию local cond_1 local cond_2 local cond_3 local cond_4 function suit_condition() local suit_active = nil local act_suit = db.actor:item_in_slot(6) if (act_suit and act_suit:section() == "nonos_kostum") or (act_suit and act_suit:section() == "nano_outfit") then suit_active = true end if suit_active then db.actor:give_info_portion("suit_v1_or_v2_active") elseif not suit_active then db.actor:disable_info_portion("suit_v1_or_v2_active") end if suit_active and act_suit:condition() == 1.00 and has_alife_info("hev_energy_0") then db.actor:give_info_portion("hev_restore") elseif not suit_active then db.actor:disable_info_portion("hev_energy_0") db.actor:disable_info_portion("hev_restore") end if suit_active and act_suit:condition() <= 0.80 then db.actor:give_info_portion("hev_batery_repair") elseif (suit_active and act_suit:condition() > 0.80) or (not suit_active) then db.actor:disable_info_portion("hev_batery_repair") end if has_alife_info("hev_batery_repair") and act_suit:condition() >= 0.01 then db.actor:give_info_portion("hev_energy_less_than_100") elseif suit_active and act_suit:condition() < 0.01 then db.actor:disable_info_portion("hev_energy_less_than_100") end if suit_active and has_alife_info("hev_energy_less_than_100") and act_suit:condition() == 1.00 then snd_obj = xr_sound.get_safe_sound_object( [[HEV\hev_energy_100]] ) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) db.actor:give_game_news(hev_cond_100, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 3000) db.actor:disable_info_portion("hev_energy_less_than_100") end if has_alife_info("hev_batery_repair") and act_suit:condition() >= 0.61 then if not cond_1 then snd_obj = xr_sound.get_safe_sound_object( [[HEV\hev_energy_80]] ) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) db.actor:give_game_news(hev_cond_80, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 3000) cond_1 = true end elseif suit_active and act_suit:condition() > 0.80 then cond_1 = nil end if suit_active and act_suit:condition() <= 0.60 and act_suit:condition() >= 0.41 then if not cond_2 then snd_obj = xr_sound.get_safe_sound_object( [[HEV\hev_energy_60]] ) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) db.actor:give_game_news(hev_cond_60, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 3000) cond_2 = true end elseif suit_active and act_suit:condition() > 0.60 then cond_2 = nil end if suit_active and act_suit:condition() <= 0.40 and act_suit:condition() >= 0.21 then if not cond_3 then snd_obj = xr_sound.get_safe_sound_object( [[HEV\hev_energy_40]] ) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) db.actor:give_game_news(hev_cond_40, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 3000) cond_3 = true end elseif suit_active and act_suit:condition() > 0.40 then cond_3 = nil end if suit_active and act_suit:condition() <= 0.20 and act_suit:condition() >= 0.01 then if not cond_4 then snd_obj = xr_sound.get_safe_sound_object( [[HEV\hev_energy_20]] ) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) db.actor:give_game_news(hev_cond_20, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 3000) cond_4 = true end elseif suit_active and act_suit:condition() > 0.20 then cond_4 = nil end end и у меня при стопроцентной кондиции костюма перестали работать диалоги тупо не нажимается на текст, а когда кондиция меньше 80 % то всё ок всё работает, посмотрите, кому не сложно, может найдёте ошибку заранее спасибо! Строгое предупреждение от модератора ColR_iT Раз тебе ответили, то содержимое поста оставлю, но чтобы подобное желание не повторялось, вот тебе выписка из правил форума: 2.1.2. Запрещено оставлять повторные сообщения (или дублировать их) в одной или нескольких темах. Изменено 16 Марта 2012 пользователем ColR_iT Реклама любых модов бесплатно на моём сайте писать в личку Поделиться этим сообщением Ссылка на сообщение
serega-gamer 0 Опубликовано 10 Сентября 2012 Всем привет! Подскажите, пожалуйста, можно ли как то отследить открытие инвентаря мёртвого npc главным героем? ЗП Реклама любых модов бесплатно на моём сайте писать в личку Поделиться этим сообщением Ссылка на сообщение
serega-gamer 0 Опубликовано 10 Сентября 2012 Artos В ЗП эти поршни не работают, их даже нет в xrGame.dll и так же нету скрипта xr_use . Извеняюсь что не туда написал. Реклама любых модов бесплатно на моём сайте писать в личку Поделиться этим сообщением Ссылка на сообщение
serega-gamer 0 Опубликовано 11 Октября 2012 (изменено) Всем здрасте! На днях написал скрипт для рем.комплекта и толком не протестировал, а сегодня заметил баг, проявляется он в том что функция будто зашкаливает делая одно и тоже (хотя вызывается один раз из интерфейса), в общем задумка была такая, функция сравнивает то что в слоте и в инвентаре по имени секции, если есть несколько одинаковых предметов то починка идёт если не то нет.А теперь о проблеме, когда в инвентаре не больше 2 одинаковых предметов и в слоте стоит идентичный им по секции предмет то всё идёт нормально а если предметов в инвентаре много, больше 2 тогда функция как будто зашкаливает, удаляет все идентичные предметы и так же проигрывает звуки починки (естественно наслаивая их друг на друга) подскажите пожалуйста, что здесь не правильно? function repair_wpn_1()local item_in_slot = db.actor:item_in_slot(2)local act_rank = ranks.get_obj_rank_name(db.actor)local cond_novice = item_in_slot:condition() + (math.random(20)+20)/100local cond_experienced = item_in_slot:condition() + (math.random(20)+30)/100local cond_veteran = item_in_slot:condition() + (math.random(20)+40)/100local cond_master = item_in_slot:condition() + (math.random(30)+50)/100for i= 0, db.actor:object_count() - 1 dolocal item = db.actor:object(i)if item:section() == item_in_slot:section() and item:id() ~= item_in_slot:id() and 0.20 <= item:condition() thenif act_rank == "novice" and 1.00 > item_in_slot:condition() and 0.20 <= item_in_slot:condition() thenitem_in_slot:set_condition(cond_novice)this.repair_wpn_sound()alife():release(alife():object(item:id()), true)elseif act_rank == "experienced" and 1.00 > item_in_slot:condition() and 0.20 <= item_in_slot:condition() thenitem_in_slot:set_condition(cond_experienced)this.repair_wpn_sound()alife():release(alife():object(item:id()), true)elseif act_rank == "veteran" and 1.00 > item_in_slot:condition() and 0.20 <= item_in_slot:condition() thenitem_in_slot:set_condition(cond_veteran)this.repair_wpn_sound()alife():release(alife():object(item:id()), true)elseif act_rank == "master" and 1.00 > item_in_slot:condition() and 0.20 <= item_in_slot:condition() thenitem_in_slot:set_condition(cond_master)this.repair_wpn_sound()alife():release(alife():object(item:id()), true)endendendend Изменено 11 Октября 2012 пользователем serega-gamer Реклама любых модов бесплатно на моём сайте писать в личку Поделиться этим сообщением Ссылка на сообщение