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

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


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

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

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

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

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

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

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
Ссылка на комментарий

Monnoroch

думаю можно.

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

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

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 по отдельности.

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

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

Интересно. А если в игре есть еще м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
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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