Noneatme

Handy Script - MTA San Andreas SERVER

Jan 11th, 2013
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 25.85 KB | None | 0 0
  1. --[[
  2.     ##########################################################################
  3.     ##                                                                      ##
  4.     ## Project: 'MT-RPG' - Gamemode for MTA: San Andreas PROJECT X          ##
  5.     ##                      Developer: Noneatme                             ##
  6.     ##           License: See LICENSE in the top level directory            ##
  7.     ##                                                                      ##
  8.     ##########################################################################
  9.     [C] Copyright 2013 Noneatme
  10. ]]
  11.  
  12. addEvent("onMTHandyAction", true)
  13. addEvent("onMTOnlineTransfer", true)
  14. addEvent("onMTGeldLieferung", true)
  15.  
  16.  
  17. addEvent("onMTAmmunationBuy", true)
  18. addEvent("onMTHandyCasinoAction", true)
  19. addEvent("onMTHandyUpdatesNeed", true)
  20. addEvent("onMTHandyUpdatesEdit", true)
  21.  
  22. addEvent("onMTHandyRadioInsert", true)
  23. addEvent("onMTHandyRadioDelete", true)
  24. addEvent("onMTHandyRadiosGet", true)
  25.  
  26. addEvent("onMTHandyDataNeed", true)
  27.  
  28. addEvent("onMTHandyIQCQuit", true)
  29. addEvent("onMTHandyIQCJoin", true)
  30. addEvent("onMTHandyIQCSend", true)
  31.  
  32. addEvent("doHandyKickAntiSpam", true)
  33.  
  34. addEvent("doLAHandyCarAction", true)
  35.  
  36.  
  37. local mysqlhost1 = "localhost"
  38. local mysqluser1 = "root"
  39. local mysqlpassword1 = ""
  40. local mysqldatabase1 = "dbs_handy"
  41.  
  42. -- SECOND CONNECTION, OPTIONAL IF CONNECTION 1 DON'T WORK
  43.  
  44. local mysqlhost2 = "127.0.0.1"
  45. local mysqluser2 = "multivan"
  46. local mysqlpassword2 = ""
  47. local mysqldatabase2 = "dbs_rpg2"
  48.  
  49. local FUNC = {}
  50.  
  51. local ghandler
  52.  
  53. local dbpTime = -1 -- Zeit zum anpingen des MySQL Servers
  54. local delivertime = 15000 -- nicht aendern :D
  55.  
  56. local ammo_boxid = 2358 -- ID fuer die Box beim Ammu Nation bestellen
  57.  
  58. local preis = {}
  59. local chatter = {}
  60. local chatTimer = {}
  61. local casinoTimer = {}
  62.  
  63.  
  64. local updatetext = ""
  65.  
  66. local nutten_skins = {
  67.     [1] = 63,
  68.     [2] = 87,
  69.     [3] = 178,
  70.     [4] = 244,
  71.     [5] = 257,
  72. }
  73.  
  74. preis["pizza"] = 25 -- Preis fuer die Pizza
  75. preis["heilung"] = 50 -- Preis fuer die Heilung
  76.  
  77. local function flyPlaneOverPosition(x, y, z)
  78.     local ox, oy, oz = x-150, y+150, z+70
  79.     local nx, ny, nz = x+150, y-150, z+70
  80.     local car = createVehicle(getVehicleModelFromName("Dodo"), ox, oy, oz, 0, 0, 90)
  81.     local ped = createPed(60, ox, oy, oz)
  82.     warpPedIntoVehicle(ped, car)
  83.     local ob = createObject(1337, ox, oy, oz)
  84.     setElementAlpha(ob, 0)
  85.     attachElements(car, ob, 0, 0, 0, 0, 0, 180+45)
  86.     moveObject(ob, delivertime, nx, ny, nz)
  87.     setTimer(function()
  88.         vanishElement(car)
  89.         setTimer(destroyElement, 2500, 1, ob)
  90.         destroyElement(ped)
  91.     end, delivertime-2500, 1)
  92. end
  93.  
  94. addEventHandler("onMTHandyIQCSend", getRootElement(), function(text)
  95.     if(chatter[source]) and not(isTimer(chatTimer[source])) then
  96.         triggerClientEvent(getRootElement(), "onClientMTHandyIQCMessageSend", getRootElement(), getPlayerName(source)..": "..text)
  97.         chatTimer[source] = setTimer(function() end, 1000, 1)
  98.     else
  99.         outputChatBox("Du musst einige Sekunden warten bevor du eine neue Nachricht senden kannst.", source, 255, 0, 0)
  100.     end
  101. end)
  102.  
  103. addEventHandler("onMTHandyUpdatesNeed", getRootElement(), function()
  104.     triggerClientEvent(source, "onMTHandyDataNeedBack", source, "updates", updatetext)
  105. end)
  106.  
  107. addEventHandler("doLAHandyCarAction", getRootElement(), function(id, cmd)
  108.     executeCommandHandler(cmd, source, id)
  109. end)
  110.  
  111. -- ANTISPAM ACTION --
  112.  
  113. addEventHandler("doHandyKickAntiSpam", getRootElement(), function()
  114.     local name = getPlayerName(source)
  115.     outputChatBox(name.." wurde wegen Spam vom Server gekickt!", getRootElement(), 255, 0, 0)
  116.     outputServerLog(name.." wurde wegen Spam vom Server gekickt")
  117.     kickPlayer(source, "Anti-Spam", "Spam")
  118. end)
  119.  
  120. -- HANDY RADIO EVENTS --
  121.  
  122.  
  123. addEventHandler("onMTHandyRadioInsert", getRootElement(), function(name, url)
  124.     local string = name.."|"..url
  125.     -- CHEK IF ALREADY EXIST --
  126.     local query = dbQuery(ghandler, "SELECT * FROM galaxy_radiosender WHERE NAME = '"..getPlayerName(source).."' AND RADIO = '"..string.."';")
  127.     local result, numrows = dbPoll(query, dbpTime)
  128.     if(result and numrows > 0) then
  129.         dbFree(query)
  130.         outputChatBox("Es exestiert bereits der Radiosender in deiner Liste!", source, 255, 0, 0)
  131.         return
  132.     end
  133.     query = dbQuery(ghandler, "INSERT INTO galaxy_radiosender (NAME, RADIO) values ('"..getPlayerName(source).."', '"..string.."');")
  134.     result = dbPoll(query, dbpTime)
  135.     if(result) then
  136.         dbFree(query)
  137.         outputChatBox("Radio wurde erfolgreich angelegt!", source, 0, 255, 0)
  138.         FUNC["getplayerradios"](source)
  139.     else
  140.         outputChatBox("Radio konnte nicht angelegt werden! Maximal 255 Zeichen!", source, 255, 0, 0)
  141.     end
  142. end)
  143.  
  144. addEventHandler("onMTHandyRadiosGet", getRootElement(), function()
  145.     FUNC["getplayerradios"](source)
  146. end)
  147.  
  148. addEventHandler("onMTHandyRadioDelete", getRootElement(), function(name, url)
  149.     local string = name.."|"..url
  150.     local query = dbQuery(ghandler, "DELETE FROM galaxy_radiosender WHERE NAME = '"..getPlayerName(source).."' AND RADIO = '"..string.."';")
  151.     local result = dbPoll(query, dbpTime)
  152.     if(result) then
  153.         dbFree(query)
  154.         outputChatBox("Radio wurde erfolgreich geloescht!", source, 0, 255, 0)
  155.         FUNC["getplayerradios"](source)
  156.     else
  157.         outputChatBox("Radio konnte nicht geloescht werden!", source, 255, 0, 0)
  158.     end
  159. end)
  160.  
  161.  
  162. addEventHandler("onMTHandyCasinoAction", getRootElement(), function(nummer, einsatz, typ)
  163.     if(isTimer(casinoTimer[source])) then outputChatBox("Du musst noch Warten!", source, 255, 0, 0) return end
  164.     -- SICHERHEITSHINWEIS --
  165.     if(tonumber(laGetElementData ( source, "bankmoney" )) < einsatz) then outputChatBox("Du hast nicht soviel Geld auf der Hand!", source, 255, 0, 0) return end
  166.     givePlayerMoney(source, -einsatz)
  167.     laSetElementData(source, "bankmoney", laGetElementData ( source, "bankmoney" )-einsatz)
  168.     outputChatBox("Die Zahl wird gezogen, bitte warten...", source, 0, 255, 255)
  169.     local thePlayer = source
  170.     casinoTimer[source] = setTimer(function()
  171.         local anfang, ende = 0, 0
  172.         if(typ == 1) then
  173.             anfang, ende = 1, 10
  174.         else
  175.             anfang, ende = 1, 50
  176.         end
  177.         local gezogen = math.random(anfang, ende)
  178.         local gewinn
  179.         if(gezogen == nummer) then
  180.             if(typ == 1) then
  181.                 gewinn = einsatz*2
  182.             else
  183.                 gewinn = einsatz*3
  184.             end
  185.             givePlayerMoney(thePlayer, gewinn)
  186.             outputChatBox("Glueckwunsch! Die Zahl "..gezogen.." wurde gezogen und du hast $"..gewinn.." erhalten!", thePlayer, 0, 255, 0)
  187.         elseif(gezogen == nummer-1) or (gezogen == nummer+1) then
  188.             givePlayerMoney(thePlayer, einsatz)
  189.             outputChatBox("Die Nummer "..gezogen.." wurde gezogen, und du hast dein Geld wiederbekommen.", thePlayer, 0, 255, 0)
  190.         else
  191.             outputChatBox("Die Zahl "..gezogen.." wurde gezogen und du nichts erhalten.", thePlayer, 255, 0, 0)
  192.         end
  193.     end, 3000, 1)
  194. end)
  195.  
  196. addEventHandler("onMTHandyIQCJoin", getRootElement(), function()
  197.     chatter[source] = source
  198.     local chat = 0
  199.     for index, player in next, chatter do
  200.         chat = chat+1
  201.     end
  202.     triggerClientEvent(getRootElement(), "onClientMTHandyIQCMessageSend", getRootElement(), getPlayerName(source).." ist dem Chat beigetreten.", chat)
  203. end)
  204.  
  205. addEventHandler("onMTHandyIQCQuit", getRootElement(), function(typ)
  206.     if not(typ) then typ = "Verlassen" end
  207.     chatter[source] = nil
  208.     triggerClientEvent(getRootElement(), "onClientMTHandyIQCMessageSend", getRootElement(), getPlayerName(source).." hat den Chat verlassen.("..typ..")")
  209. end)
  210.  
  211. addEventHandler("onPlayerQuit", getRootElement(), function(typ)
  212.     if(chatter[source]) then
  213.         triggerEvent("onMTHandyIQCQuit", source, typ)
  214.     end
  215. end)
  216.  
  217.  
  218. FUNC["getplayerradios"] = function(thePlayer)
  219.     local query = dbQuery(ghandler, "SELECT * FROM galaxy_radiosender WHERE NAME = '"..getPlayerName(thePlayer).."';")
  220.     local result, numrows = dbPoll(query, dbpTime)
  221.     if(result and numrows > 0) then
  222.         triggerClientEvent(thePlayer, "onMTHandyRadiosGetBack", thePlayer, result)
  223.         dbFree(query)
  224.     else
  225.         triggerClientEvent(thePlayer, "onMTHandyRadiosGetBack", thePlayer, {})
  226.     end
  227. end
  228.  
  229. -- UPDATES LOADING --
  230.  
  231.  
  232. FUNC["loadupdates"] = function()
  233.     local query = dbQuery(ghandler, "SELECT * FROM galaxy_updates;")
  234.     local result, numrows = dbPoll(query, dbpTime)
  235.     if(result) and (numrows > 0) then
  236.         local text = result[1]['DATA']
  237.         updatetext = text
  238.         outputDebugString("Updatetext geladen!: "..text)
  239.         dbFree(query)
  240.     else
  241.         outputDebugString("Kein Updatetable vorhanden. Erstelle neue...")
  242.         query = dbQuery(ghandler, "INSERT INTO galaxy_updates (DATA) values ('Frische Updates kommen immer von Leyynen!');")
  243.         result = dbPoll(query, dbpTime)
  244.         if(result) then
  245.             outputDebugString("Updates in den Table erfolgreich insertet!")
  246.             dbFree(query)
  247.             FUNC["loadupdates"]()
  248.         end
  249.     end
  250. end
  251.  
  252.  
  253.  
  254. FUNC["updateupdates"] = function(thePlayer, text)
  255.     local query = dbQuery(ghandler, "UPDATE galaxy_updates SET DATA = '"..text.."';")
  256.     local result = dbPoll(query, dbpTime)
  257.     if(result) then
  258.         updatetext = text
  259.         outputServerLog("Die Updates wurden von "..getPlayerName(thePlayer).." bearbeitet.")
  260.         triggerClientEvent(getRootElement(), "onLAClientInfobar", thePlayer, "Updates wurden von "..getPlayerName(thePlayer).." bearbeitet.", 4000, 50, 50, 0)
  261.     else
  262.         outputChatBox("Updates konnten nicht gespeichert werden/Keine Aenderungen entdeckt!", thePlayer, 255, 0, 0)
  263.     end
  264. end
  265.  
  266.  
  267. -- EVENT --
  268. addEventHandler("onMTHandyUpdatesEdit", getRootElement(), function(text)
  269.     FUNC["updateupdates"](source, text)
  270. end)
  271.  
  272. -- EVENT HANDLER STARTUP --
  273.  
  274. addEventHandler("onResourceStart", getResourceRootElement(), function()
  275.     ghandler = dbConnect("mysql", "dbname="..mysqldatabase1..";host="..mysqlhost1, mysqluser1, mysqlpassword1, "autoreconnect=1")
  276.    
  277.     -- If the Handler 1 dont work
  278.     if not(ghandler) then  
  279.         ghandler = dbConnect("mysql", "dbname="..mysqldatabase2..";host="..mysqlhost2, mysqluser2, mysqlpassword2, "autoreconnect=1")
  280.         if not(ghandler) then
  281.             outputServerLog("[Handy]MySQL handler 2 not accepted! Shutting down...")
  282.             cancelEvent()
  283.         else
  284.             FUNC["loadupdates"]()
  285.             outputServerLog("[Handy]MySQL handler 2 accepted!")
  286.         end
  287.     else
  288.         FUNC["loadupdates"]()
  289.         outputServerLog("[Handy]MySQL handler 1 accepted!")
  290.     end
  291. end)
  292.  
  293.  
  294.  
  295. addEventHandler("onMTGeldLieferung", getRootElement(), function(menge)
  296.     -- SICHERHEITSHINWEIS --
  297.     if(menge > laGetElementData ( source, "bankmoney" )) then outputChatBox("Du hast nicht soviel Geld auf der Bank!", source, 255, 0, 0) return end
  298.     outputChatBox("Geld wird zu dir gesendet!", source, 0, 255, 0)
  299.     laSetElementData ( source, "bankmoney", laGetElementData ( source, "bankmoney" )-menge)
  300.     local x, y, z = getElementPosition(source)
  301.     local sender = source
  302.     flyPlaneOverPosition(x, y, z)
  303.     setTimer(function()
  304.         local fa = createObject ( 2903, x, y, z+50 )
  305.         local veh = createVehicle(getVehicleModelFromName("Securicar"), x, y, z)
  306.         attachElements(veh, fa, 0, 0, -8.8)
  307.         moveObject ( fa, 9000, x, y, z+9, 0, 0, 0, "InQuad" )
  308.         setTimer(function()
  309.             detachElements(veh)
  310.             setElementVelocity(veh, 0, 0, -0.1)
  311.         end, 3000, 1)
  312.        
  313.         setTimer(function()
  314.             vanishElement(veh)
  315.             vanishElement(fa)
  316.             local pickup = createPickup(x, y, z, 3, 1210, 50)
  317.             setElementData(pickup, "for", getPlayerName(sender))
  318.             setElementData(pickup, "menge", menge)
  319.             addEventHandler("onPickupHit", pickup, function(hitElement)
  320.                 if(getElementType(hitElement) == "player") and (getElementData(source, "for") == getPlayerName(hitElement)) then
  321.                     givePlayerMoney(hitElement, getElementData(source, "menge"))
  322.                     laSetElementData ( source, "money", laGetElementData(source, "money")+getElementData(source, "menge"))
  323.                     destroyElement(source)
  324.                     outputChatBox("Geldlieferung erhalten!", hitElement, 0, 255, 0)
  325.                 end
  326.             end)
  327.         end, 10000, 1)
  328.     end, delivertime/2, 1)
  329. end)
  330.  
  331. addEventHandler("onMTAmmunationBuy", getRootElement(), function(price, table1, table2)
  332.     if(price < 0) then return end
  333.     -- SICHERHEITSHINWEIS --
  334.     if(laGetElementData ( source, "bankmoney" ) < price) then outputChatBox("Du benoetigst mehr Geld um dies zu kaufen!", source, 255, 0, 0) return end
  335.     -- GELD MUSS NOCH ABGEZOGEN WERDEN, VARIABLE: PRICE
  336.     laSetElementData ( source, "bankmoney", money - price )
  337.     outputChatBox("Lieferung kommt!", source, 0, 200, 0)
  338.     local x, y, z = getElementPosition(source)
  339.     flyPlaneOverPosition(x, y, z)
  340.     setTimer(function()
  341.         local fa = createObject ( 2903, x, y, z+50 )
  342.         local box = createObject(ammo_boxid, x, y, z+50)
  343.         setObjectScale(box, 3.0)
  344.         attachElements(box, fa, 0, 0, -7.68)
  345.         moveObject ( fa, 9000, x, y, z+7, 0, 0, 0, "InOutQuad" )
  346.         setTimer(vanishElement, 10000, 1, fa)
  347.         setTimer(vanishElement, 10000, 1, box)
  348.         setTimer(function()
  349.             local pickup = createPickup(x, y, z-0.5, 3, ammo_boxid, 100)
  350.             setElementData(pickup, "weap:table1", table1)
  351.             setElementData(pickup, "weap:table2", table2)
  352.             addEventHandler("onPickupHit", pickup, function(hitElement)
  353.                 if(getElementType(hitElement) == "player") then
  354.                     local accept, accept2 = getElementData(source, "weap:table1"), getElementData(source, "weap:table2")
  355.                     local weap = "9mm"
  356.                     if(accept[weap] == true) then giveWeapon(hitElement, 22, 17*accept2[weap]) end
  357.                     weap = "deagle"
  358.                     if(accept[weap] == true) then giveWeapon(hitElement, 24, 7*accept2[weap]) end
  359.                     weap = "shotgun"
  360.                     if(accept[weap] == true) then giveWeapon(hitElement, 25, 5+accept2[weap]) end
  361.                     weap = "mp5"
  362.                     if(accept[weap] == true) then giveWeapon(hitElement, 29, 30*accept2[weap]) end
  363.                     weap = "ak-47"
  364.                     if(accept[weap] == true) then giveWeapon(hitElement, 30, 30*accept2[weap]) end
  365.                     weap = "m4"
  366.                     if(accept[weap] == true) then giveWeapon(hitElement, 31, 50*accept2[weap]) end
  367.                     weap = "rifle"
  368.                     if(accept[weap] == true) then giveWeapon(hitElement, 33, 1*accept2[weap]) end
  369.                     weap = "nachtsicht"
  370.                     if(accept[weap] == true) then giveWeapon(hitElement, 44, 1) end
  371.                     weap = "waerme"
  372.                     if(accept[weap] == true) then giveWeapon(hitElement, 25, 1) end
  373.                     weap = "armour"
  374.                     if(accept[weap] == true) then setPedArmor(hitElement, 100) end
  375.                     weap = "knife"
  376.                     if(accept[weap] == true) then giveWeapon(hitElement, 4, 1) end
  377.                     weap = "bat"
  378.                     if(accept[weap] == true) then giveWeapon(hitElement, 5, 1) end
  379.                     destroyElement(source)
  380.                 end
  381.             end)
  382.         end, 10000, 1)
  383.     end, delivertime/2, 1)
  384. end)
  385.  
  386. addEventHandler("onMTHandyAction", getRootElement(), function(typ, text, text2, text3, text4)
  387.     if(typ == "medicine") then
  388.         -- SICHERHEITSHINWEIS --
  389.         local money = tonumber(laGetElementData ( source, "bankmoney" ))
  390.         if(money < 50) then outputChatBox("Du benoetigst "..preis["heilung"].."$!", source, 255, 0, 0) return end
  391.         laSetElementData ( source, "bankmoney", money - 50 )
  392.         givePlayerMoney(source, -50)
  393.         outputChatBox("Lieferung kommt!", source, 0, 255, 0)
  394.         local x, y, z = getElementPosition(source)
  395.         flyPlaneOverPosition(x, y, z)
  396.         setTimer(function()
  397.             local fallschirm = createObject ( 2903, x, y, z+50 )
  398.             moveObject ( fallschirm, 9000, x, y, z+6.3, 0, 0, 0, "InOutQuad" )
  399.             setTimer ( vanishElement, 10000, 1, fallschirm )
  400.             setTimer(
  401.             function()
  402.                 local pickup = createPickup ( x, y, z-0.5, 3, 1240 )
  403.                 addEventHandler ( "onPickupHit", pickup,
  404.                 function ( player )
  405.                     if(getElementType(player) == "player") then
  406.                         playSoundFrontEnd ( player, 40 )
  407.                         destroyElement ( source )
  408.                         setElementHealth(player, 100)
  409.                     end
  410.                 end)
  411.             end, 10000, 1)
  412.         end, delivertime/2, 1)
  413.     elseif(typ == "pizza") then
  414.         -- SICHERHEITSHINWEIS --
  415.         local money = tonumber(laGetElementData ( source, "bankmoney" ))
  416.         if(money < 25) then outputChatBox("Du benoetigst "..preis["pizza"].."$!", source, 255, 0, 0) return end
  417.         laSetElementData ( source, "bankmoney", money - 25 )
  418.         givePlayerMoney(source, -25)
  419.         outputChatBox("Lieferung kommt!", source, 0, 255, 0)
  420.         local x, y, z = getElementPosition(source)
  421.         flyPlaneOverPosition(x, y, z)
  422.         setTimer(function()
  423.             local fallschirm = createObject ( 2903, x, y, z+50 )
  424.             moveObject ( fallschirm, 9000, x, y, z+6.3, 0, 0, 0, "InOutQuad" )
  425.             setTimer ( vanishElement, 10000, 1, fallschirm )
  426.             setTimer(
  427.             function()
  428.                 local pickup = createPickup ( x, y, z-0.5, 3, 1582 )
  429.                 addEventHandler ( "onPickupHit", pickup,
  430.                 function ( player )
  431.                     if(getElementType(player) == "player") then
  432.                         playSoundFrontEnd ( player, 40 )
  433.                         destroyElement ( source )
  434.                         setElementHealth(player, getElementHealth(player)+25)
  435.                     end
  436.                 end)
  437.             end, 10000, 1)
  438.         end, delivertime/2, 1)
  439.     elseif(typ == "nuttebestellung") then
  440.         -- SICHERHEITSHINWEIS --
  441.         local money = laGetElementData ( source, "bankmoney" )
  442.         if(money < 200) then outputChatBox("Du benoetigst 200$!", source, 255, 0, 0) return end
  443.         laSetElementData ( source, "bankmoney", money - 200 )
  444.         givePlayerMoney(source, -200)
  445.         outputChatBox("Bestellung wird geliefert!", source, 0, 255, 0)
  446.         local x, y, z = getElementPosition(source)
  447.         local player = source
  448.         flyPlaneOverPosition(x, y, z)
  449.         setTimer(function()
  450.             local fallschirm = createObject ( 2903, x, y, z+50 )
  451.             moveObject ( fallschirm, 9000, x, y, z+6.3, 0, 0, 0, "InOutQuad" )
  452.             setTimer ( vanishElement, 10000, 1, fallschirm )
  453.            
  454.             setTimer(
  455.             function()
  456.                 local skin = nutten_skins[math.random(1, #nutten_skins)]
  457.                 local rot = getPedRotation(player)
  458.                 local ped = createPed (skin, x, y, z-0.5, rot )
  459.                 setElementFrozen(ped, true)
  460.                 local rnd = math.random ( 1, 4 )
  461.                 if (rnd == 1) then
  462.                     setPedAnimation ( ped, "STRIP", "STR_Loop_A",-1,true,false,false)
  463.                 elseif (rnd == 2) then
  464.                     setPedAnimation ( ped, "STRIP", "STR_Loop_B",-1,true,false,false )
  465.                 elseif (rnd == 3) then
  466.                     setPedAnimation ( ped, "STRIP", "STR_Loop_C",-1,true,false,false )
  467.                 else
  468.                     setPedAnimation ( ped, "STRIP", "STR_Loop_A",-1,true,false,false )
  469.                 end
  470.                 addEventHandler("onPedWasted", ped, function()
  471.                     vanishElement(source)
  472.                 end)
  473.             end, 10000, 1)
  474.         end, delivertime/2, 1)
  475.     elseif(typ == "memoupdate") then
  476.         local query = dbQuery(ghandler, string.format("UPDATE galaxy_users SET MEMO = '%s' WHERE NAME = '%s';", text, getPlayerName(source)))
  477.         local result, numrows = dbPoll(query, dbpTime)
  478.         if(result and numrows > 0) then
  479.             dbFree(query)
  480.             outputChatBox("Memo gespeichert! Du kannst die 'back' Taste benutzen, wenn du deine Änderungen verwerfen möchtest.", source, 0, 255, 0)
  481.         else
  482.             error("Can't update memo for user "..getPlayerName(source).." in galaxy table")
  483.         end
  484.     elseif(typ == "backgroundupdate") then
  485.         local query = dbQuery(ghandler, string.format("UPDATE galaxy_users SET BACKGROUND = '%s' WHERE NAME = '%s';", text, getPlayerName(source)))
  486.         local result, numrows = dbPoll(query, dbpTime)
  487.         if(result and numrows > 0) then
  488.             dbFree(query)
  489.             outputDebugString("Background "..text.." fuer "..getPlayerName(source).." gespeichert")
  490.         else
  491.             error("Can't update Background for user "..getPlayerName(source).." in galaxy table")
  492.         end
  493.     elseif(typ == "emailsend") then
  494.         local empfaenger = text
  495.         local email = text2
  496.         local webserver = text3
  497.         local betreff = text4
  498.         if(betreff == "") or (betreff == " ") then betreff = "no subject" end
  499.         local query = dbQuery(ghandler, "INSERT INTO galaxy_messages (TO_NAME, FROM_NAME, MESSAGE_TEXT, SUBJECT_TEXT) VALUES ('"..empfaenger.."', '"..getPlayerName(source).."@"..webserver.."', '"..email.."', '"..betreff.."');")
  500.         local result = dbPoll(query, dbpTime)
  501.         if(result) then
  502.             dbFree(query)
  503.             outputChatBox("Email gesendet!", source, 0, 255, 0)
  504.             if(getPlayerFromName(gettok(empfaenger, 1, "@"))) then
  505.             --  outputChatBox("Du hast eine neue E-Mail von "..getPlayerName(source).."@"..webserver.." erhalten!", getPlayerFromName(gettok(empfaenger, 1, "@")), 0, 255, 0)
  506.                 triggerClientEvent(getPlayerFromName(gettok(empfaenger, 1, "@")), "onClientLAEmailBekomm", getPlayerFromName(gettok(empfaenger, 1, "@")), getPlayerName(source).."@"..webserver)
  507.             end
  508.         else
  509.             error("Cant save email for user "..getPlayerName(source).."!")
  510.             outputChatBox("Ein Fehler trat auf beim Senden der E-Mail!", source, 255, 0, 0)
  511.         end
  512.     elseif(typ == "emailsinbox") then
  513.         local webserver = text
  514.         local query = dbQuery(ghandler, "SELECT * FROM galaxy_messages WHERE TO_NAME = '"..getPlayerName(source).."@"..webserver.."';")
  515.         local result = dbPoll(query, dbpTime)
  516.         if(result) then
  517.             triggerClientEvent(source, "onMTHandyActionBack", source, "emailsinbox", result)
  518.             dbFree(query)
  519.         else
  520.             outputChatBox("Du hast keine E-Mails/Ein Fehler trat auf.", source, 255, 0, 0)
  521.         end
  522.     elseif(typ == "emailsoutbox") then
  523.         local webserver = text
  524.         local query = dbQuery(ghandler, "SELECT * FROM galaxy_messages WHERE FROM_NAME = '"..getPlayerName(source).."@"..webserver.."';")
  525.         local result = dbPoll(query, dbpTime)
  526.         if(result) then
  527.             triggerClientEvent(source, "onMTHandyActionBack", source, "emailsoutbox", result)
  528.             dbFree(query)
  529.         else
  530.             outputChatBox("Du hast keine E-Mails/Ein Fehler trat auf.", source, 255, 0, 0)
  531.         end
  532.     elseif(typ == "maildelete") then
  533.         local webserver = text
  534.         local query = dbQuery(ghandler, "DELETE FROM galaxy_messages WHERE MAILID = '"..text.."';")
  535.         local result = dbPoll(query, dbpTime)
  536.         if(result) then
  537.             outputChatBox("Email erfolgreich gelöscht!", source, 0, 255, 0)
  538.             dbFree(query)
  539.         else
  540.             outputChatBox("Du hast keine E-Mails/Ein Fehler trat auf.", source, 255, 0, 0)
  541.         end
  542.     end
  543. end)
  544.  
  545. local function checkPlayerHandyTable(thePlayer)
  546.     local query = dbQuery(ghandler, "SELECT * FROM galaxy_users WHERE NAME = '"..getPlayerName(thePlayer).."';")
  547.     local result, numrows = dbPoll(query, dbpTime)
  548.     if(result and numrows > 0) then
  549.         dbFree(query)
  550.     else
  551.         dbFree(query)
  552.         local linie = "======================"
  553.         local memo = linie.."\nNotiz von "..getPlayerName(thePlayer).."\n"..linie
  554.         query = dbQuery(ghandler, "INSERT INTO galaxy_users (NAME, MEMO, BACKGROUND) values ('"..getPlayerName(thePlayer).."', '"..memo.."', '1');")
  555.         result = dbPoll(query, dbpTime)
  556.         if(result) then
  557.             dbFree(query)
  558.         else
  559.             error("Can't insert data for user "..getPlayerName(thePlayer).." in galaxy table")
  560.         end
  561.     end
  562. end
  563.  
  564.  
  565. addEventHandler("onMTHandyDataNeed", getRootElement(), function(data)
  566.     if(data == "onlinegeld") then
  567.         triggerClientEvent(source, "onMTHandyDataNeedBack", source, data, laGetElementData(source, "bankmoney"))
  568.     elseif(data == "memo") then
  569.         checkPlayerHandyTable(source)
  570.         local query = dbQuery(ghandler, "SELECT * FROM galaxy_users WHERE NAME = '"..getPlayerName(source).."';")
  571.         local result, numrows = dbPoll(query, dbpTime)
  572.         if(result) and (numrows > 0) then
  573.             local memo = result[1]['MEMO']
  574.             triggerClientEvent(source, "onMTHandyDataNeedBack", source, "memo", memo)
  575.             dbFree(query)
  576.         else
  577.             error("Can't get data for user "..getPlayerName(source).." at Handy resource")
  578.         end
  579.     elseif(data == "background") then
  580.         checkPlayerHandyTable(source)
  581.         local query = dbQuery(ghandler, "SELECT * FROM galaxy_users WHERE NAME = '"..getPlayerName(source).."';")
  582.         local result, numrows = dbPoll(query, dbpTime)
  583.         if(result) and (numrows > 0) then
  584.             local id = result[1]['BACKGROUND']
  585.             triggerClientEvent(source, "onMTHandyDataNeedBack", source, "background", id)
  586.             dbFree(query)
  587.         else
  588.             error("Can't get data for user "..getPlayerName(source).." at Handy resource")
  589.         end
  590.     end
  591. end)
  592.  
  593. addEventHandler("onMTOnlineTransfer", getRootElement(), function(to, value)
  594.     -- SICHERHEITSHINWEIS --
  595.     local money = laGetElementData ( source, "bankmoney" )
  596.     if(money < value) then sendInfoMessage("Du hast nicht soviel Geld auf der Bank!", source, "red") return end
  597.     local reason = ""
  598. --  triggerEvent("onMTATMAction", source, "ueberweisen", value, to, "Onlinetransfer")
  599.     triggerEvent ( "cashPointTransfer", source, value, to, false, reason )
  600. end)
  601.  
  602.  
  603. addEventHandler("onVehicleExplode", getRootElement(), function()
  604.     if(getVehicleType(source) == "Plane") or (getVehicleType(source) == "Helicopter") then
  605.         local veh = source
  606.         setTimer(function()
  607.             if(isElement(veh)) then
  608.                 local x, y, z = getElementPosition(veh)
  609.                 createExplosion(x, y, z, 4)
  610.                 createExplosion(x, y, z, 1)
  611.                 setTimer(function()
  612.                     if(isElement(veh)) then
  613.                         local x, y, z = getElementPosition(veh)
  614.                         createExplosion(x, y, z, 7)
  615.                         createExplosion(x, y, z, 7)
  616.                         local x, y, z = getElementVelocity(veh)
  617.                         setElementVelocity(veh, x, y, z+math.random(1, 5)/10)
  618.                         x, y, z = getVehicleTurnVelocity(veh)
  619.                         setVehicleTurnVelocity(veh, x, y+math.random(1, 2)/10, z)
  620.                         setTimer(function()
  621.                             if(isElement(veh)) then
  622.                                 local x, y, z = getElementPosition(veh)
  623.                                 createExplosion(x, y, z+6, 7)
  624.                                 setTimer(function()
  625.                                     if(isElement(veh)) then
  626.                                         local x, y, z = getElementPosition(veh)
  627.                                         createExplosion(x, y, z, 0)
  628.                                         setTimer(function()
  629.                                             if(isElement(veh)) then
  630.                                                 local x, y, z = getElementPosition(veh)
  631.                                                 createExplosion(x, y, z, 0)
  632.                                                 setTimer(function()
  633.                                                     if(isElement(veh)) then
  634.                                                         local x, y, z = getElementPosition(veh)
  635.                                                         createExplosion(x, y, z, 0)
  636.                                                     end
  637.                                                 end, 700, 1)
  638.                                             end
  639.                                         end, 500, 1)
  640.                                     end
  641.                                 end, 500, 1)
  642.                             end
  643.                         end, 100, 1)
  644.                     end
  645.                 end, 100, 1)
  646.             end
  647.         end, 300, 1)
  648.     end
  649. end)
  650.  
  651. -- FUNKTIONEN NICHT RAUSNEHMEN --
  652.  
  653. local v_e_doing = {}
  654.  
  655. function vanishElement(theElement)
  656.     if(v_e_doing[theElement] == true) then return end
  657.     v_e_doing[theElement] = true
  658.     for i = 1, 25 do
  659.         setTimer ( setElementAlpha, 100 * i, 1, theElement, 255 / 25 * ( 25 - i ) )
  660.     end
  661.     setTimer ( destroyElement, 2500, 1, theElement )
  662. end
  663.  
  664. -- DEBUG --
  665. -- SICHERHEITSHINWEIS --
  666.  
  667. -- Die Funktionen koennt ihr stehen lassen. Bei nicht Vorhandenen Sicherheitssystem werden die Element-Dats benutzt --
  668.  
  669. function mtGetElementData(..)
  670.     return getElementData(thePlayer, value)
  671. end
  672.  
  673. function mtGetPlayerMoney(thePlayer)
  674.     return getPlayerMoney(thePlayer)
  675. end
  676.  
  677. function laGetElementData(thePlayer, value)
  678.     if(value == "bankmoney") or (value == "money") then
  679.         return getPlayerMoney(thePlayer)
  680.     else
  681.         return getElementData(thePlayer, value)
  682.     end
  683. end
  684.  
  685. function laSetElementData(thePlayer, value, value2)
  686.     return setElementData(thePlayer, value, value2)
  687. end
Advertisement
Add Comment
Please, Sign In to add comment