Svoboда 3 Опубликовано 23 Апреля 2009 Поделиться Опубликовано 23 Апреля 2009 Тема для обсуждения скриптов всего и всех в серии игр STALKER. Задавая вопрос (!): 1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего; 2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме); 3. Изучите информацию которая может вам помочь: Stalkerin. Там есть много хороших статей касательно данной темы.Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения. Справочное руководство по языку Lua 5.1https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ruСправочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены. Логика со вступлением и четырьмя частями: ВступлениеЧасть перваяЧасть втораяЧасть третьяЧасть четвертая. Smart_terrain (в простонароде - гулаг)Интересный способ настроики логики для гулаговСкриптовая часть игровой логики 4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос; 5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе; 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода; 7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины. 8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ. 9. И помните: «Правильно заданный вопрос – половина ответа». Какие вопросы следует задавать, а какие нет... Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу. Вопросы которые будут удалятся, следовательно их задавать не нужно:-- Где находится та или иная функция? Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;-- Как сделать что-то/то-то? С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов? В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос. И последнее: очень рекомендовано к прочтению Правила форума 1 2 Ссылка на комментарий
serega-gamer 0 Опубликовано 9 Марта 2011 Поделиться Опубликовано 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 пользователем Куфзук Реклама любых модов бесплатно на моём сайте писать в личку Ссылка на комментарий
_Призрак_ 11 Опубликовано 9 Марта 2011 Поделиться Опубликовано 9 Марта 2011 Все гораздо проще: local wpn = db.actor:item_in_slot(db.actor:active_slot()) if wpn and (wpn:section() == "wpn_igla" or wpn:section() == "wpn_pm" or wpn:section() == "wpn_knife") then Freedom Ссылка на комментарий
@"StreloK" 2 Опубликовано 9 Марта 2011 Поделиться Опубликовано 9 Марта 2011 (изменено) Люди может кто помочь с логикой? Нужно сделать что бы НПС требовал у ГГ убрать оружие из рук, а в случае неубора в течении 10 секунд начинал в него стрелять, после того как ГГ его убирает переходил в другое состояние (после убора НЕПись бьёт ГГ прикладом). Я начал делать так - [smart_terrains] none = true [logic] active = remark@base meet = meet [remark@base] anim = threat_heli no_move = true target = actor meet = meet on_actor_dist_ge_nvis = 8|walker on_info = {+info_ybral}remark@ybral [meet] meet_state = 10|threat_heli meet_state_wpn = 10|threat_heli victim = 10|actor victim_wpn = 10|actor use = true use_wpn = true [remark@ybral] anim = punch snd = cit_jail_guard_sneer meet = meet@punch target = actor on_signal = sound_end| %=run_cam_effector(fatigue)% on_actor_dist_ge_nvis = 8|walker [meet@punch] meet_state = 10|threat_heli meet_state_wpn = 10|threat_heli victim = 10|actor victim_wpn = 10|actor use = true use_wpn = true [walker] path_walk = agr_soldier_sniper_1_walk path_look = agr_soldier_sniper_1_look Но незнаю как собственно реализовать требование убрать оружие. Может кто помочь? Глянь на вики: >>Click Me<< Куфзук Добавлено через 133 мин.: Куфзук можешь подсказать что не так? Сделал вот такую логику, а НПСу а он вообще ничего неделает (только по валк-пути ходит) и на то есть оружие у ГГ или нет ему до фени. [smart_terrains] none = true [logic] active = walker@base combat_ignore = combat_ignore [walker@base] path_walk = agr_soldier_spesnaz_1_walk path_look = agr_soldier_spesnaz_1_look meet = meet on_actor_dist_ge_nvis = 80|walker on_info = {+info_ybral}remark@ybral [meet] meet_state = 50| {+info_yberi} threat_fire %=killactor%, walk@ {+info_yberi} talk_abuse, wait | 10 | walk %+info_yberi%; wait | 2 | threat;state meet_state_wpn = 50| {+info_yberi} threat_fire %=killactor%, threat@ {+info_yberi} talk_abuse, wait victim = 10|actor victim_wpn = 10|actor use = false use_wpn = false [remark@ybral] anim = punch snd = cit_jail_guard_sneer meet = meet@punch target = actor on_signal = sound_end| %=run_cam_effector(fatigue)% on_actor_dist_ge_nvis = 8|walker [meet@punch] meet_state = 10|threat_heli meet_state_wpn = 10|threat_heli victim = 10|actor victim_wpn = 10|actor use = false use_wpn = false [walker] path_walk = agr_soldier_spesnaz_1_walk path_look = agr_soldier_spesnaz_1_look [combat_ignore] combat_ignore_cond = always А инфопоршень info_ybral, ты как выдаешь? Ты здесь возможно ошибку допустил, у тебя в мите выдаеться инфопоршень info_yberi. Сообщение от модератора Куфзук Без дабл постов, пожалуйста! А может кто подсказать-как можно сделать чтобы НПС про получении инфопоршня подбегали к ГГ? Изменено 10 Марта 2011 пользователем Куфзук Prefiero morir de pie, que vivir siempre arrodillado. Ссылка на комментарий
STARTS 0 Опубликовано 9 Марта 2011 Поделиться Опубликовано 9 Марта 2011 (изменено) Доброго времени суток! Столкнулся с проблемой в ЗП! self.kBackGround = CUIStatic() self.kBackGround:SetWindowName("kBackGround") self.kBackGround:SetAutoDelete(true) self.kBackGround:InitTexture("ui\\amk_transmutator") self.kBackGround:SetTextureRect(Frect():set(3,7,531,262)) self.kBackGround:Init(3,7,531,262) self:AttachChild(self.kBackGround) В ЗП нет self.kBackGround:Init(3,7,531,262) как его заменить? --------------------------------------------------------------- serega-gamer, попробуй так local wpn = db.actor:item_in_slot(db.actor:active_slot()) tab = {"wpn_1", "wpn_2", "дальше_веапоны"} for k,v in pairs (tab) do if wpn and wpn:section()== v then sect = v end end Не уверен что правильно, но мысль ты уловил)) Изменено 9 Марта 2011 пользователем STARTS Ссылка на комментарий
serega-gamer 0 Опубликовано 10 Марта 2011 Поделиться Опубликовано 10 Марта 2011 (изменено) Ага STARTS спасибо Строгое предупреждение от модератора Куфзук За нежелание придерживаться ОБЩИХ правил форума - рид на трое суток. Изменено 10 Марта 2011 пользователем Куфзук Реклама любых модов бесплатно на моём сайте писать в личку Ссылка на комментарий
midichs 1 Опубликовано 10 Марта 2011 Поделиться Опубликовано 10 Марта 2011 (изменено) Подскажите, что это такое: Specified story object is already in the Story registry! ???(появилось после добавления точки перехода в спавн) Появилося в логе? Если да, то где же лог? А так вообще, то у тебя story_id, который ты присвоил своему переходу, просто занят. Куфзук Изменено 10 Марта 2011 пользователем Куфзук Ссылка на комментарий
stunder 13 Опубликовано 10 Марта 2011 Поделиться Опубликовано 10 Марта 2011 midichs, данный SID уже используется Мод "Жесть" В команду Two Team ("Жесть") требуется моделлер. Ссылка на комментарий
midichs 1 Опубликовано 10 Марта 2011 Поделиться Опубликовано 10 Марта 2011 Вот лог, наверное конфликт с модом проводники? [error]Expression : no_assert [error]Function : CALifeStoryRegistry::add [error]File : D:\xray-svn\xr_3da\xrGame\alife_story_registry.cpp [error]Line : 30 [error]Description : Specified story object is already in the Story registry! Ссылка на комментарий
stunder 13 Опубликовано 10 Марта 2011 Поделиться Опубликовано 10 Марта 2011 midichs, тебе же уже ответили. Скорее всего, ибо какой-то SID используется несколько раз. Мод "Жесть" В команду Two Team ("Жесть") требуется моделлер. Ссылка на комментарий
ColR_iT 171 Опубликовано 10 Марта 2011 Поделиться Опубликовано 10 Марта 2011 @"StreloK", ну для начала скажу, что инфопоршни доступны только для actora. Ну а вообще, тебе как это сделать нужно, какая ситуация? Ссылка на комментарий
@"StreloK" 2 Опубликовано 10 Марта 2011 Поделиться Опубликовано 10 Марта 2011 Изменяюсь за даблпост. Ситуация-ГГ входит в рестриктор то выдаёт инфопоршень, непись появляется за углом (в онлайне) и подбегает к ГГ. Можно-ли такое сделать? Prefiero morir de pie, que vivir siempre arrodillado. Ссылка на комментарий
stunder 13 Опубликовано 10 Марта 2011 Поделиться Опубликовано 10 Марта 2011 Да, возможно. Ставь условие спавна на инфопоршень. http://www.stalkerin.gameru.net/wiki/index...8.D1.8F_spawner Мод "Жесть" В команду Two Team ("Жесть") требуется моделлер. Ссылка на комментарий
@"StreloK" 2 Опубликовано 10 Марта 2011 Поделиться Опубликовано 10 Марта 2011 stunder как делать спавн при получении инфопоршеня я знаю. А как сделать чтобы он (нпс) подошёл к ГГ? Prefiero morir de pie, que vivir siempre arrodillado. Ссылка на комментарий
Gandifil 0 Опубликовано 11 Марта 2011 Поделиться Опубликовано 11 Марта 2011 1 вопрос: Люди скажите, как исправить двойной вызов функции? А то у меня какая-то ерунда. Если я использую спальный мешок: 1)Если меченный хочет спать то окошко появляется два раза. 2)Если не хочет спать, то появляется два сообщения и спавнится в инвентарь два мешка. Так же с модом медленных аптечек тоже самое: 1)Если Меченный не хавал до этого аптечки, то он излечивается и 1 раз появляется сообщение что "меченный не может лечится двумя аптечками". Спавниться одна аптечка(то есть без расстраты). 2)Если хавал, то два сообщения и две аптечки в инвентарь(то есть уже излишек) Что с этим делать? Дурак знает как затеять драку, умный знает как победить в драке, мудрец знает как избежать драки. Ссылка на комментарий
Painter 3 476 Опубликовано 11 Марта 2011 Поделиться Опубликовано 11 Марта 2011 @"StreloK", это уже в all.spawn лезть нужно. Портфолио Ссылка на комментарий
STARTS 0 Опубликовано 11 Марта 2011 Поделиться Опубликовано 11 Марта 2011 Gandifil Код для начала кинь, а потом уже люди посмотрят и скажут) Ссылка на комментарий
=VENOM= 50 Опубликовано 11 Марта 2011 Поделиться Опубликовано 11 Марта 2011 Jurok, для того, чтобы непись подошёл к игроку в "олспон" лезть ни к чему. Это исключительно настройка логики. Подскажу - юзайте схему follower, а для @"StreloK" - схема и соответствующая модификация xr_attendant практически готова - только отшлифую ещё пару функций, и в ЛС отбарабаню . Ссылка на комментарий
Gandifil 0 Опубликовано 11 Марта 2011 Поделиться Опубликовано 11 Марта 2011 Вот мои скрипты Вот моя папка со скриптами. Только укажите в чем моя ошибка - там такое кол-во модов....Мог че нибудь и пропустить. Дурак знает как затеять драку, умный знает как победить в драке, мудрец знает как избежать драки. Ссылка на комментарий
AKKK1 6 Опубликовано 11 Марта 2011 Поделиться Опубликовано 11 Марта 2011 =VENOM= Подошел в смысле на конкретную точку где гг кабы должен быть ? Или туда где гг находтся в данный момент ? ( на другой локе к примеру). Ссылка на комментарий
=VENOM= 50 Опубликовано 11 Марта 2011 Поделиться Опубликовано 11 Марта 2011 Нет, это для сценок нападения на игрока - онлайн. Схема follower всё обсчитывает автоматически, её нужно только чуть-чуть подрихтовать. Поэтому непись пойдёт не туда, где игрок "должен быть", а прямо к игроку, даже если пытаться уйти от непися. Ну, а дельше всё зависит от фантазии разработчика ... Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти