[SoC] Ковыряемся в файлах - Страница 177 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

[SoC] Ковыряемся в файлах


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

Starter, тогда "отключится" вешание артефактов на пояс - ибо после двойного клика артефакт оказывается там - значит, если он на поясе, то удаляем его и создаем аномалию - способ менее красивый. чем оригинальный

i-igroman.ru - Мой, принципиально новый сайт о компьютерных играх

lekzd насчёт того чтобы арт мне на поясн надевался мне это не надо, просто скачал недавно минный мод а он основан на активации артефактов. Весь прикол в том что на земле нормальная мина а в руках артефакт, вот я и пытаюсь как-то обойти именно ту анимация активации артефакта, менять модель бесполезно потому что нету анимации. Вот проблема такая, кто занет решение подскажите пожалуйста. :russian_ru:

ЯДиск папка с крутым схроном!

Starter, гыгы.

у меня в аддоне нормальный худ мины в руках.и ставит ее ГГ не как арт,а нормально бросает :)

Kirag

Допустим, с 30 патронов дошли до 20, десяток действий сделали. А потом игроку приперло нажать "разрядить оружие", как обычный автомат. И что получим в результате? Обрыв последовательности действий... В результате - простор для глюков...

 

В качестве доказательства что не все так сложно сделал скриптовую газовую шмалялку на основе ПБ (выстрелы само собой холостые).

Отслеживаются все выстрелы кроме последнего. Но это на выбор - либо отслеживаем и его, но тогда убираем защиту от сбоя при нештатной разрядке магазина либо наоборот. Защита от дозарядки при неполной разрядке магазина есть.

Таймер нужен только в моем случае - так как проверку расстояния надо было как то останавливать, иначе она будет длится бесконечно пока условие не выполнится.

Соответственно вместо одного действия на все выстрелы вполне можно расписать серию действий - на каждый выстрел индивидуально.

local ch=1
local magazin=10
local time_delay =0
local action = false

function weapon()
local activ_item = db.actor:active_item()
             
    if activ_item and activ_item:section() =="wpn_pb" then
     
        local count_mag = activ_item:get_ammo_in_magazine()
        
        if (count_mag == 0 or count_mag==10) then
          ch=1
           end
        
        if (magazin - count_mag==ch) then
        action = true 
        ch=ch+1
        time_delay = time_global()+3000
        end 
        
        
        if action then
           if (time_global()>time_delay) then
            action = false
            time_delay= 0
            else
                for k, v in pairs (db.storage) do
                local obj = level.object_by_id(k)
                
                        if (obj and get_clsid(obj) == clsid.script_stalker) then
                        if obj:position():distance_to_sqr(db.actor:position()) < 12 then
                        obj:kill(obj)
                        end
                    end
                end
            end
        end
    end
end

 

Изменено пользователем Garry_Galler
Garry_Galler, Интересная штука....вспоминая игру Portal - можно ли заспавнить телепорт при таком выстреле,допустим через 10 метров от ГГ ?

Monnoroch

думаю можно.

просто ставим активацию функции спавна телепорта на любой выстрел - а в координатах спавна указываем нужное смещение по вектору x или z относительно ГГ. Либо по радиусу от ГГ.

Garry_Galler, вооот!

тут то вся загвоздка.как поймать левел вертекс на 10 метров от ГГ по данному вектору?

Monnoroch

а зачем тебе левер вертекс?

если мне надо смещение прямо перед ГГ я использую такую функцию

 

function spawn_bobm()

local pos = db.actor:position()

local dir = db.actor:direction()

pos = pos:add(dir:mul(2)) --смещение 2 метра прямо перед ГГ

local obj = alife():create("bomba", pos, db.actor:level_vertex_id(), db.actor:game_vertex_id())

obj_id = obj.id

end

 

вот так у меня спавнится перед ГГ бомба с дистанционным управлением - то есть она как бы из инвентаря(удаляясь оттуда) перекидывается на землю.

 

телепорты я спавнил обычной функцией - через create - ну конфиг еще создавал для них + биндер самодельных телепортов от Imp'а

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

Monnoroch

ну не знаю - я спавнил десяток солдат на дистанции 20 метров от ГГ - нормально спавнились - прямо по курсу. Причем курс собственно можно задать - через dir = vector_rotate_y(obj:direction(),ang) где ang - угол поворота по вектору y

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

Здраствуйте!

Вы не подскажите как сделать так чтобы с "данного" оружия можно было стрелять только в "Экоскелете"?...

Изменено пользователем Friday13
тут то вся загвоздка.как поймать левел вертекс на 10 метров от ГГ по данному вектору?

Вот это как раз не проблема. Есть функция

level.vertex_in_direction(int <от какого вертекса>, vector <направление>, float <расстояние>)

Только не перепутайте. В game_object есть такая же, но она не работает.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Friday13, Создать два вида "данного" оружия - одно будет с магазином в 0 патронов, другое - сколько надо

 

если надет экзоскелет и в инвентаре 0-вое оружие - удаляем и спавним вместо него стреляющее оружие и наоборот, если не надет экзоскелет

i-igroman.ru - Мой, принципиально новый сайт о компьютерных играх

не подскажите как сделать так чтобы с "данного" оружия можно было стрелять только в "Экоскелете"?...

Вот например. Нельзя взять ПКМ, если не надета экза.

Изменишь где что нужно :

function check_armor()
local armor = db.actor:item_in_slot(6)
local weapon = db.actor:item_in_slot(2)

if db.actor:active_slot()==2 and weapon then
local tmp
if armor then
tmp = armor:section()
else
tmp = "none"
end

if (not string.find(tmp, "exo" )) and weapon:section()=="wpn_pkm" then
db.actor:drop_item(weapon)
local tmpw = amk.spawn_item_in_inv("wpn_pkm" )
db.actor:transfer_item(weapon,db.actor)
alife():release(tmpw)
end
end

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

Thank you for your honesty.

Now fuck off and die.

SCRIPT

function spawn ()

for i =1, 1000000 do

alife():create("айди npс из spawn sections - типа "agr_stalker_regular",vector():set(x,y,z),lv,gv)

end

end

 

получаешь миллион NPC за раз. :ny_ph34r_1:

а если хочешь чтобы у каждого была своя координата - тогда просто дублируешь строчки с alife():create и в каждую нужный профиль и нужные координаты вписываешь.

можно сделать рандомные координаты... чтобы не снимать их для каждого NPC по отдельности.

тебе что надо?

мне надо так, чтоб была группа нейтралов полукругом))

Thank you for your honesty.

Now fuck off and die.

Интересно. А если в игре есть еще м60 и миниган то как дополнить скрипт? И еще, если на гг не надета экза то ствол удаляется и спавнится в инвертарь новый, как выдать сообщение если экза не надета?

max_max_08

Тогда так :

function check_armor()
local armor = db.actor:item_in_slot(6)
local weapon = db.actor:item_in_slot(2)

if db.actor:active_slot()==2 and weapon then
local tmp
if armor then
tmp = armor:section()
else
tmp = "none"
end

if (not string.find(tmp, "exo" )) and (weapon:section()=="wpn_pkm" or weapon:section()=="wpn_m60" or weapon:section()=="wpn_minigun") then
db.actor:drop_item(weapon)
local tmpw = amk.spawn_item_in_inv("wpn_pkm" )
db.actor:transfer_item(weapon,db.actor)
alife():release(tmpw)
news_manager.send_tip(db.actor,"Невозможно взять пулемёт в руки без экзы",nil,nil,10000)
end
end

Вообще-то этой фунцией я не пользовался. Юзал эту :

function check_armor()
   local wpn,arm
   local armor = db.actor:item_in_slot(6)
   local weapon = db.actor:item_in_slot(2)

   if weapon then
       wpn = weapon:section()
   else
       wpn = "no_weapon"
   end

   if armor then
       arm = armor:section()
   else
       arm = "no_armor"
   end

   if string:find(wpn,"wpn_название") or string:find(wpn,"wpn_название") or string:find(wpn,"wpn_название") then -- через 'or' пиши сколько нужно стволов
       if (not string.find(arm, "exo" )) then
           db.actor:drop_item(weapon)
           local temp = alife():create("wpn_ak74",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),d
b.actor:id())
           db.actor:transfer_item(weapon,db.actor)
           alife():release(temp)
           news_manager.send_tip(db.actor,"Невозможно взять пулемёт в руки без экзы",nil,nil,10000)
       end
   end
end

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

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

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

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

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

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

Войти

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

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

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