Заказать скрипт

#21
@☢stalker39☢, тема на запрос на выкладывание скриптов это бесплатно. Либо можно договориться о написании на заказ
Понятно,меня на данный монмент интересует только один скрипт или аддон на лидера фракции для NS.
 

HikkaSurito

Новорождённый
#26
Мне нужен маленький скриптик для дарк рп.
Ну, или скорее корректировка.
Вот на хл2рп есть карты, типа сити 17 и прочее. Там есть слайдер двери, которые нельзя открыть. Сделано это для того, чтобы потом подставить скрипт, дабы их могли открывать только комбайны. Но вот проблема, у меня есть чистый скрипт на открывание этих дверей, но чистый он потому, что в нем нет вайтлиста для комбайнов, их могут открывать все, в т.ч. гражданские.
А вот мне нужен этот самый вайтлист. Когда я пытался обратиться за этим на форум фейспанч, мне попытались помочь. Написали такие скрипты, но они не работали. Комбайны просто не могли открыть эти двери, как и гражданские. То есть, скрипт переставал работать. Так что если тут есть хорошие скриптеры, надеюсь на помощь в починке этих скриптов.

P.S. Да, мне нужен вайтлист на работы, типа эти двери может открывать только team_helix и т.д.

А теперь, сами скрипты:

Чистый:

Код:
function KeyPressedUse (ply, key)
    if key == IN_USE then 
        local t = {}   
        t.start = ply:GetPos()   
        t.endpos = ply:GetShootPos() + ply:GetAimVector() * 100   
        t.filter = ply
        local trace = util.TraceLine(t)          
        if trace.Entity and trace.Entity:IsValid() and (trace.Entity:GetClass() == "func_door" or trace.Entity:GetClass() == "prop_door_rotating" or trace.Entity:GetClass() == "prop_dynamic") then
            trace.Entity:Fire("Open")
        end
    end
end
hook.Add( "KeyPress", "KeyPressedUse", KeyPressedUse  )
Первая попытка:

Код:
local jobs = { TEAM_WFYUED,
               TEAM_GYUIO };

function KeyPressedUse (ply, key)
    if key == IN_USE then
        if( !table.HasValue( jobs, _p:Team() ) ) then
            _p:ChatPrint( "Incorrect job" );
            return;
           end
        local t = {}   
        t.start = ply:GetPos()   
        t.endpos = ply:GetShootPos() + ply:GetAimVector() * 100   
        t.filter = ply
        local trace = util.TraceLine(t)          
        if trace.Entity and trace.Entity:IsValid() and (trace.Entity:GetClass() == "func_door" or trace.Entity:GetClass() == "prop_door_rotating" or trace.Entity:GetClass() == "prop_dynamic") then
            trace.Entity:Fire("Open")
        end
    end
end
hook.Add( "KeyPress", "KeyPressedUse", KeyPressedUse  )
Вторая попытка:

Код:
local foo = {
timer.Simple(1, function()
   foo[1] = TEAM_HELIX
   foo[2] = TEAM_CMD_SEC
end)}
local tbl = {
    jobs = ["TEAM_HELIX"] = true,
    doors = {
        ["func_door"] = true,
        ["prop_door_rotating"] = true,
        ["prop_dynamic"] = true
    }
}

-- Jobs does not exist until the gamemode has loaded, so we're gonna do it in here.
hook.Add("InitPostEntity", "insertJobs", function()
    local jobs = {
        [TEAM_HELIX] = true,
    }

    table.Merge(tbl.jobs, jobs);
end);

hook.Add("PlayerUse", "openDoors", function(ply, ent)
    if (not IsValid(ply) or not IsValid(ent)) then return; end

    local tr = util.TraceLine({
        start = ply:GetPos(),
        endpos = ply:GetShootPos() + ply:GetAimVector() * 100,
        filter = ply
    });

    if (IsValid(tr.Entity) and tbl.doors[tr.Entity:GetClass()]) then
        if (tbl.jobs[ply:Team()]) then
            -- If the door is locked then it won't open, uncomment this to make the doors unlock and open
            -- tr.Entity:Fire("unlock");
            tr.Entity:Fire("open", "", .5);
        end
    end
end);
Все, надеюсь на помощь, на русском я хотя бы свободно могу расписать все как есть.
 

Hikka

Модератор
Команда форума
#27
@HikkaSurito, пробуй.

Код:
local tblWhiteList = {
    [TEAM_HELIX] = true,
}

function KeyPressedUse(ply, key)
    if key == IN_USE and tblWhiteList[ply:Team()] then
        local t = {}  
        t.start = ply:GetPos()  
        t.endpos = ply:GetShootPos() + ply:GetAimVector() * 100  
        t.filter = ply
        local trace = util.TraceLine(t)
        local tEntity = trace.Entity
        if IsValid(tEntity) and (tEntity:GetClass() == "func_door" or tEntity:GetClass() == "prop_door_rotating" or tEntity:GetClass() == "prop_dynamic") then
            tEntity:Fire("Open")
        end
    end
end
hook.Add("KeyPress", "KeyPressedUse", KeyPressedUse)
В первом случае, неправильный индекс в таблице.
Во втором случае, неправильное применение в таблице. По этому и не работало. Ну я накидал свой вариант, должен работать, но это не точно.
 

HikkaSurito

Новорождённый
#28
@HikkaSurito, пробуй.

Код:
local tblWhiteList = {
    [TEAM_HELIX] = true,
}

function KeyPressedUse(ply, key)
    if key == IN_USE and tblWhiteList[ply:Team()] then
        local t = {}
        t.start = ply:GetPos()
        t.endpos = ply:GetShootPos() + ply:GetAimVector() * 100
        t.filter = ply
        local trace = util.TraceLine(t)     
        if trace.Entity and trace.Entity:IsValid() and (trace.Entity:GetClass() == "func_door" or trace.Entity:GetClass() == "prop_door_rotating" or trace.Entity:GetClass() == "prop_dynamic") then
            trace.Entity:Fire("Open")
        end
    end
end
hook.Add("KeyPress", "KeyPressedUse", KeyPressedUse)
В первом случае, неправильный индекс в таблице.
Во втором случае, неправильное применение в таблице. По этому и не работало. Ну я накидал свой вариант, должен работать, но это не точно.

Сейчас испробую...
Не, не работает
 

Hikka

Модератор
Команда форума
#29
по поводу вайтлиста, тебе нужно чтобы только TEAM_HELIX могли открывать? если да, то должно работать только для TEAM_HELIX ну или тех кто в таблице отмечен.
По поводу индекса TEAM_HELIX, уверен что правильно?
Смотреть в создание работы т.е TEAM_CITIZEN = DarkRP.createJob -- TEAM_CITIZEN это индекс работы.
 

HikkaSurito

Новорождённый
#30
по поводу вайтлиста, тебе нужно чтобы только TEAM_HELIX могли открывать? если да, то должно работать только для TEAM_HELIX ну или тех кто в таблице отмечен.
По поводу индекса TEAM_HELIX, уверен что правильно?
Смотреть в создание работы т.е TEAM_CITIZEN = DarkRP.createJob -- TEAM_CITIZEN это индекс работы.
Так,мне нужно чтобы их открывать могли не только хеликсы, мне нужны разные комбайны.
Хеликса я взял в пример.

TEAM_HELIX = DarkRP.createJob("C24 MPF SU HELIX", {

Первая строчка работы хеликса
 

Hikka

Модератор
Команда форума
#31
Так,мне нужно чтобы их открывать могли не только хеликсы, мне нужны разные комбайны.
Хеликса я взял в пример.
добавишь в вайтлист таблицу вручную, вот сюда
Код:
local tblWhiteList = {
    [TEAM_HELIX] = true,
}
пример более лучший
Код:
local tblWhiteList = { -- индексы работ, тип кто может открывать дверь.
    [TEAM_HELIX] = true,
    [TEAM_CITIZEN] = true,
}
 

HikkaSurito

Новорождённый
#32
добавишь в вайтлист таблицу вручную, вот сюда
Код:
local tblWhiteList = {
    [TEAM_HELIX] = true,
}
пример более лучший
Код:
local tblWhiteList = { -- индексы работ, тип кто может открывать дверь.
    [TEAM_HELIX] = true,
    [TEAM_CITIZEN] = true,
}
Ну, сам скрипт не работает, я только что проверил на хеликсе и нифига
 

HikkaSurito

Новорождённый
#34
Тима хеликс существует?
Скинь сюда как именно ты создаешь эту работу, мб индекс неправильный или что еще.
Код:
TEAM_HELIX = DarkRP.createJob("C24 MPF SU HELIX", {
color = Color(0, 0, 255, 255),
model = {"models/DPFilms/Metropolice/Playermodels/pm_civil_medic.mdl"},
description = [[Юнит ГО подразделения ХЕЛИКС, медик альянса]],
weapons = {"weapon_medkit",
    "fas2_cweaponry_pmp",
    "weapon_cuff_rope",
    "swep_radiodevice"
    , "stunstick", "battering_ram", "weapon_stunweap"},
command = "HELIX",
max = 2,
salary = 700,
admin = 0,
vote = false,
hasLicense = false,
candemote = false,
category = "SU",
PlayerLoadout = function(ply)
ply:SetHealth(110) -- ХП
ply:SetArmor(75) -- Броня
end,
            type = "SU", --— type of team
requireUnlock = TEAM_01, --— job that need to be unlocked firsy
unlockCost = 75000 --— unlock cost
})
Весь код профы, профа идеально работает
 

Hikka

Модератор
Команда форума
#35
А ты ккуда закидываешь скрипт который я тебе кидал? в lua/autorun/server или в моде добавляешь?
 

Hikka

Модератор
Команда форума
#37
Вообщем это все странно, но мой вариант должен работать, я даже и не знаю. Может быть когда-то сделаю другое решение, но пока что нет идей. (кроме абсурдных, которые нагружают сервер)
 

HikkaSurito

Новорождённый
#38
Вообщем это все странно, но мой вариант должен работать, я даже и не знаю. Может быть когда-то сделаю другое решение, но пока что нет идей. (кроме абсурдных, которые нагружают сервер)
Ладно, может кто то еще допишет твой скрипт. Спасибо!
 

Hikka

Модератор
Команда форума
#39
Ладно, может кто то еще допишет твой скрипт. Спасибо!
Код:
local tblWhiteList = {
    [TEAM_HELIX] = true,
}

local function KeyPressedUse(ply, key)
    if key == IN_USE then
        print("IN_USE: "..ply:Team())
        local t = {}
        t.start = ply:GetPos()
        t.endpos = ply:GetShootPos() + ply:GetAimVector() * 100
        t.filter = ply
        local trace = util.TraceLine(t)
        local tEntity = trace.Entity
        if (IsValid(tEntity) and (tEntity:GetClass() == "func_door" or tEntity:GetClass() == "prop_door_rotating" or tEntity:GetClass() == "prop_dynamic") and tblWhiteList[ply:Team()]) then
            tEntity:Fire("Open")
        end
    end
end
hook.Add("KeyPress", "KeyPressedUse", KeyPressedUse)
попробуй еще так.
и что тебе будет в консоль сервера писать типо IN_USE: что-то
 

HikkaSurito

Новорождённый
#40
Код:
local tblWhiteList = {
    [TEAM_HELIX] = true,
}

local function KeyPressedUse(ply, key)
    if key == IN_USE then
        print("IN_USE: "..ply:Team())
        local t = {}
        t.start = ply:GetPos()
        t.endpos = ply:GetShootPos() + ply:GetAimVector() * 100
        t.filter = ply
        local trace = util.TraceLine(t)
        local tEntity = trace.Entity
        if (IsValid(tEntity) and (tEntity:GetClass() == "func_door" or tEntity:GetClass() == "prop_door_rotating" or tEntity:GetClass() == "prop_dynamic") and tblWhiteList[ply:Team()]) then
            tEntity:Fire("Open")
        end
    end
end
hook.Add("KeyPress", "KeyPressedUse", KeyPressedUse)
попробуй еще так.
и что тебе будет в консоль сервера писать типо IN_USE: что-то

В консоли ничего не пишет,скрипт не работает.
Сейчас попробую скрипт из треда который мне написал другой парень, секунду.
 
Помощь Пользователи

Вы не присоединились ни к одной комнате.

    Вы не присоединились ни к одной комнате.