-.Paradox.- Posted May 22, 2014 Posted May 22, 2014 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 < 50) 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(255, 255, 255, 200), 2-(distance/20), "arial", "center", "center") end end end end end end end) The trigger part: addEventHandler("onClientGUIClick", guiRoot, function() if source == shops.Button[2] then local row = guiGridListGetSelectedItem(shops.Gridlist[1]) if row == 0 then triggerServerEvent("setMyHealth", localPlayer) elseif row == 1 then triggerServerEvent("setMyArmor", localPlayer) elseif row == 2 then triggerServerEvent("repairMyCar", localPlayer) elseif row == 3 then triggerServerEvent("giveMeJetpack", localPlayer) elseif row == 4 then triggerServerEvent("giveMeParachute", localPlayer) elseif row == 5 then triggerServerEvent("giveMeNight", localPlayer) elseif row == 6 then triggerServerEvent("giveMeInfrared", localPlayer) elseif row == 7 then triggerServerEvent("giveMeCamera", localPlayer) elseif row == 8 then triggerServerEvent("giveMeGuard", localPlayer) 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[i]) 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.-- s8) --> 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("fol", addEvent("giveMeGuard", true) addEventHandler("giveMeGuard", root, 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) P.S This is a community script and tried to make it work with mine, i'm trying to make this, when the player is level 100 he can buy the bodyguard but i get this error. Table index is nil. Line 176 If you're looking for a cheap paid scripter, don't hesitate to contact me. Great minds discuss ideas, Average minds discuss events and small minds discuss people.
TAPL Posted May 22, 2014 Posted May 22, 2014 triggerServerEvent("giveMeGuard", localPlayer) change to: triggerServerEvent("giveMeGuard", localPlayer, localPlayer)
-.Paradox.- Posted May 22, 2014 Author Posted May 22, 2014 Thanks If you're looking for a cheap paid scripter, don't hesitate to contact me. Great minds discuss ideas, Average minds discuss events and small minds discuss people.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now