Jump to content

[مساعدة] مشكلة في مود


Recommended Posts

سلام عليكم

ياشباب في مود البودي قارد ( الحارس الشخصي ) اذا جيت اكتب الكلمة بأف8 يظهر لي الشخص لكنه مايتحرك معي

 

client: 

local gMe = getLocalPlayer()

addEvent("doPedJump", true)
addEvent("doPedEnter", true)
addEvent("doPedExitVeh", true)

addEventHandler("doPedJump", getLocalPlayer(), function(p, boolean)
    setPedControlState(p, "jump", boolean)
end)

addEventHandler("doPedEnter", getLocalPlayer(), function(p, boolean)
    setPedControlState(p, "enter_passenger", boolean)
end)

addEventHandler("doPedExitVeh", getLocalPlayer(), function(p, boolean)
    setPedControlState(p, "enter_exit", boolean)
end)


-- DAMAGE ABFRAGE --

local pedTarget = {}
local pedTimer = {}
local pedShooting = {}

local function doPedAttackOtherPlayer(ped)
    if(isTimer(pedTimer[ped])) or (isPedInVehicle(ped)) then
        killTimer(pedTimer[ped])
    end
    if(isElement(ped)) then
        pedTimer[ped] = setTimer(function()
            if(isElement(ped)) then
                local target = pedTarget[ped]
                if(target) then
                    local x, y, z = getElementPosition(ped)
                    local x2, y2, z2 = getElementPosition(target)
                    if(isLineOfSightClear(x, y, z, x2, y2, z2, true, false, false, false, false, false)) then
                        if(getElementHealth(target) > 1) then
                            if(pedShooting[ped] ~= true) then
                                --[[
                                local x1, y1 = getElementPosition(ped)
                                local x2, y2 = getElementPosition(target)
                                    local rot = math.atan2(y2 - y1, x2 - x1) * 180 / math.pi
                                    rot = rot-90
                                    setPedRotation(ped, rot)
                                    setPedAnimation(ped)
                                    if(getPedControlState(ped, "fire") ~= true) then
                                        setPedControlState(ped, "fire", true)
                                    end
                                    setPedAimTarget(ped, x2, y2, z2)]]
                                setPedControlState(ped, "fire", true)
                                pedShooting[ped] = true
                            else
                                local x1, y1, z1 = getElementPosition(ped)
                                local x2, y2, z2 = getElementPosition(target)
                                local rot = math.atan2(y2 - y1, x2 - x1) * 180 / math.pi
                                rot = rot-90
                                setPedRotation(ped, rot)
                                setPedAimTarget(ped, x2, y2, z2)
                            end
                        else
                            killTimer(pedTimer[ped])
                            pedShooting[ped] = false
                            setPedControlState(ped, "fire", false)
                        end
                    else
                        killTimer(pedTimer[ped])
                        pedShooting[ped] = false
                        setPedControlState(ped, "fire", false)
                    end
                end
            else
                killTimer(pedTimer[ped])
            end
        end, 500, -1)
    else
        killTimer(pedTimer[ped])
    end
end

addEventHandler("onClientPedDamage", getRootElement(), function(attacker)
    if(getElementData(source, "bodyguard") == true) then
        if(attacker) and (isElement(attacker)) then
            if(getElementType(attacker) == "player") or (getElementType(attacker) == "vehicle") then
                pedTarget[source] = attacker
                doPedAttackOtherPlayer(source)
            end
        end
    end
end)

-- onClientRender Func --


addEventHandler("onClientRender", getRootElement(), function()
    for index, p in pairs(getElementsByType("ped", getRootElement(), true)) do
        if(getElementData(p, "bodyguard") == true) then
            local owner = getElementData(p, "besitzer")
            if(owner) then
                local x, y, z = getElementPosition(p)
                local x2, y2, z2 = getElementPosition(gMe)
                if(isLineOfSightClear(x, y, z, x2, y2, z2, true, true, false, true)) then
                    local sx, sy = getScreenFromWorldPosition(x, y, z+1)
                    if(sx) and (sy) then
                        local distance = getDistanceBetweenPoints3D(x, y, z, x2, y2, z2)
                        if(distance < 30) then
                            dxDrawText(owner.."'s Bodyguard", sx+2, sy+2, sx, sy, tocolor(0, 0, 0, 200), 2-(distance/20), "arial", "center", "center")
                            dxDrawText(owner.."'s Bodyguard", sx, sy, sx, sy, tocolor(0, 255, 0, 200), 2-(distance/20), "arial", "center", "center")
                        end
                    end
                end
            end
        end
    end
end)

 

------------------------------------------------------------------

server: 

 

local ablauf = {}
local ped = {}
local stat = {}
local firetimer = {}
local timer = {}
local jx, jy, jz = {}, {}, {}
local pedSayTimer = {}

local say_messages = {
    [1] = "Hallo!",
    [2] = "Ich mache nur meinen Job.",
    [3] = "Brauchst du Hilfe? Nein? Ich auch nicht.",
    [4] = "Du befindest dich in einer sehr gefaehrlichen Lage.",
    [5] = "Menschen koennen unterwasser ueberleben. Aber nicht lange.",
    [6] = "Der Koerper eines Menschens enthaelt ein halbes kilo Salz.",
    [7] = "Kopiere einen Spiegel, und du erhaelst einen Fotokopierer.",
    [8] = "Der erste Passagierflug fand 1940 statt. Alle an Bord kreischten waerend des gesammten Flug's.",
    [9] = "Der erste Mensch der bewies, das Kuhmlich trinkbar ist, war sehr, sehr durstig.",
    [10] = "Bevor das Flugzeug erfunden wurde, musste jeder Mensch 100 Kilo Helium essen, um fliegen zu koennen.",
    [11] = "Mobiltelefone verursachen kein Krebs. Nur Hepatitis.",
    [12] = "69 Prozent aller Zaubertricks sind keine Zaubertricks, sondern hexerei.",
    [13] = "Ratten koennen nicht spucken.",
    [14] = "Auf jeden quadratzentimeter Mensch leben 32 Millionen Bakterien.",
    [15] = "Der Mond umkreist die Erde alle 27,32 Tage.",
    [16] = "Die Milliardste stelle von Pi ist 9.",
    [17] = "Ein Liter Wasser wiegt 9,99 Kilogramm.",
    [18] = "Heisses Wasser gefriert schneller als kaltes.",
    [19] = "China ist der zweitgroesste Hersteller von Sojabohnen.",
    [20] = "Wolfram besitzt den zweithoechsten Siedepunk. 3410.C",
    [21] = "Die Zahene 2x Taeglich zu Reinigen ist die beste Methode gegen Mundgeruch.",
    [22] = "Die Autobremse wurde erst 1895 erfunden. Zuvor musste der Fahrer solange im Kreis fahren, bis alle Insassen ihre Geschaefte erledigt hatten.",
    [23] = "Der erste Mensch auf dem Mount Everest betrat ihn ausversehn, als er einen Vogel jagte.",
    [24] = "Der Karpfen ist der giftigste Fisch der Welt.",
    [25] = "Rechtshaender leben im Durchschnitt neun Jahre laenger als Linkshaender.",
    [26] = "Eine Schlange kann bis zu 3 Jahren schlafen.",
    [27] = "Wenn man 6 Jahre und 9 Monate ununterbrochen furzt, hat man genug Gas gesammelt, um die Energie einer Atombombe darzustellen.",
    [28] = "Mit dem Kopf gegen die Wand zu knallen verbraucht 150 Kalorien die Stunde.",
    [29] = "Es ist unmoeglich mit offenen Augen zu niesen.",
    [30] = "Man stirbt eher an einem Champagner-Korken als von einer giftigen Spinne.",
    [31] = "1567 stolperte der Mann mit dem laengsten Bart Europas ueber eben diesen, stuerzte die Treppe herab und brach sich das Genick.",
    [32] = "In Indien ist es moeglich Tiere zu heiraten.",
    [33] = "Erhitzt man Eier in der Mikrowelle explodieren sie.",
    [34] = "Ein Mensch wiegt weniger, wenn der Mond genau ueber ihm steht.",
    [35] = "Nach einer Auswertung von 32.000.000 Datensaetzen ist das haeufigste Passwort im Internet 123456.",
    [36] = "Ein Mensch kann durch einen Sprung auf ebenem Boden nicht laenger als eine Sekunde in der Luft bleiben.",
    [37] = "Tritt man gegen eine Laterne mit einer Quecksilberdampflampe, erlischt diese fuer bis zu 5 Minuten.",
    [38] = "Der Halleyscher Komet naehert sich der Erde alle 76 Jahre.",
    [39] = "Zu jeder Uhrzeit sind auf der ganzen Welt rund 50 Millionen Menschen betrunken."
}

local function doPedSaySomething(ped)
    if(isTimer(pedSayTimer[ped])) then
        killTimer(pedSayTimer[ped])
    end
    if(isElement(ped)) then
        local message = say_messages[math.random(1, #say_messages)]
        local x, y, z = getElementPosition(ped)
        local col = createColSphere(x, y, z, 10)
        for index, p in ipairs( getElementsWithinColShape(col, "player") ) do
            local x2, y2, z2 = getElementPosition ( p )
            local distance = getDistanceBetweenPoints3D ( x, y, z, x2, y2, z2 )
            local rgb = 15 * distance - 125
            local rgb = math.abs ( rgb - 255 ) + 125
            outputChatBox ("Bodyguard sagt: " ..message, p, rgb, rgb, rgb )
        end
        destroyElement(col)
        pedSayTimer[ped] = setTimer(doPedSaySomething, 10000+math.random(5000, 60000), 1, ped)
    end
end


local function functionscheck()
    for index, p in next, ped do
        if(isElement(p)) then
            local player = getPlayerFromName(getElementData(p, "besitzer"))
            if(player) and (ped[player]) then
                if(isElement(p)) and (ablauf[player] == true) then
                    if not(stat[p]) then
                        stat[p] = {}
                        timer[p] = {}
                    end
                    local owner = player
                    if(owner) then
                        local x, y, z = getElementPosition(owner)
                        local x2, y2, z2 = getElementPosition(p)
                        if(getDistanceBetweenPoints3D(x, y, z, x2, y2, z2) > 3) then
                            -- SPRINT CHECK --
                            stat[p]["running"] = true
                            if(getDistanceBetweenPoints3D(x, y, z, x2, y2, z2) > 10) then
                                if(stat[p]["jumping"] ~= true) and (stat[p]["inveh"] ~= true) then
                                    setPedAnimation(p, "ped" , "sprint_civi", -1, true, true, false) -- Sprintet
                                end
                            else
                                if(stat[p]["jumping"] ~= true) and (stat[p]["inveh"] ~= true) then
                                    setPedAnimation(p, "ped" , "JOG_maleA", -1, true, true, false) -- Joggt
                                end
                            end
                            -- ROTATION --
                            local x1, y1 = getElementPosition(p)
                            local x2, y2 = getElementPosition(owner)
                            local rot = math.atan2(y2 - y1, x2 - x1) * 180 / math.pi
                            rot = rot-90
                            setPedRotation(p, rot)
                            -- CAR --
                            local inveh = false
                            if(isPedInVehicle(player)) then
                                inveh = true
                            end
                            if(inveh == true) and (getDistanceBetweenPoints3D(x, y, z, x2, y2, z2) < 4) then 
                                if(stat[p]["inveh"] ~= true) and (stat[p]["enterveh"] ~= true) then
                                    stat[p]["enterveh"] = true
                                    setPedAnimation(p)
                                    triggerClientEvent(getRootElement(), "doPedEnter", player, p, true)
                                    setTimer(function()
                                        local occupants = getVehicleOccupants(getPedOccupiedVehicle(player))
                                        for i = 1, getVehicleMaxPassengers(getPedOccupiedVehicle(player)), 1 do
                                            if not(occupants) then
                                                warpPedIntoVehicle(p, getPedOccupiedVehicle(player), i)
                                                stat[p]["inveh"] = true
                                                break;
                                            end
                                        end
                                        stat[p]["enterveh"] = false
                                    end, 2000, 1)
                                end
                            else
                                if(stat[p]["inveh"] == true) and (stat[p]["enterveh"] == false) and(isPedInVehicle(player) == false) then -- er ist nicht im auto aber ich bin es
                                    stat[p]["enterveh"] = true
                                    triggerClientEvent(getRootElement(), "doPedExitVeh", player, p, true)
                                    setTimer(function()
                                        removePedFromVehicle(p)
                                        stat[p]["enterveh"] = false
                                        stat[p]["inveh"] = false
                                    end, 1000, 1)
                                end
                            end
                            -- JUMP CHECK  --
                            if(inveh == false) then
                                if((z-z2) > 0.8) and (getDistanceBetweenPoints3D(x, y, z, x2, y2, z2) < 4) and (stat[p]["jumping"] ~= true) then -- er ist oben
                                    stat[p]["jumping"] = true
                                    setPedAnimation(p)
                                    triggerClientEvent(getRootElement(), "doPedJump", player, p, true)
                                    if(isTimer(timer[p]["jump"])) then killTimer(timer[p]["jump"]) end
                                    timer[p]["jump"] = setTimer(function()
                                        stat[p]["jumping"] = false
                                        triggerClientEvent(getRootElement(), "doPedJump", player, p, false)
                                    end, 800, 1)
                                end
                            end
                        else
                            if (stat[p]["running"] == true)then
                                stat[p]["running"] = false
                                setPedAnimation(p)
                            end
                        end
                    else
                        destroyElement(p)
                    end
                end
            end
        else
            if(isElement(p)) then
                destroyElement(p)
            end
            p = nil
        end
    end
end

setTimer(functionscheck, 200, -1)


addCommandHandler("follower", function(p)
    if(ablauf[p] == true) then return end
    ablauf[p] = true
    local x, y, z = getElementPosition(p)
    ped[p] = createPed(164, x, y+1, z)
    setElementData(ped[p], "besitzer", getPlayerName(p))
    setElementData(ped[p], "bodyguard", true)
    setTimer(giveWeapon, 1000, 1, ped[p], 27, 99999, true)
    setPedStat (ped[p], 72, 999)
    setPedStat (ped[p], 76, 999)
    setPedStat (ped[p], 74, 999)
    --addEventHandler("onClientPedDamage", ped, on_damage_check)
    pedSayTimer[ped[p]] = setTimer(doPedSaySomething, 5000, 1, ped[p])
    addEventHandler("onPedWasted", ped[p], function()
        local ped = source
        setTimer(destroyElement, 1000, 1, ped)
        ablauf[p] = false
        
    end)
end)
 

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...