Guest User

Untitled

a guest
Aug 16th, 2017
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 51.33 KB | None | 0 0
  1. _G["Clantag"] = "no"
  2. setGlitchEnabled ( "fastsprint", true )
  3.  
  4. clanMembers = {}
  5. ticketPermitted = {}
  6.  
  7. function banCheck ( nick, ip, uname, serial )
  8.  
  9.     bool = false
  10.     connectCanceled = false
  11.     local i, j = string.find ( nick, "mtasa" )
  12.     if nick == "Player" then
  13.         cancelEvent ( true, "Bitte wähle einen Nickname ( Unter \"Settings\" )" )
  14.         connectCanceled = true
  15.     elseif i and j then
  16.         cancelEvent ( true, "Fuck you!" )
  17.         connectCanceled = true
  18.     elseif string.find ( nick, "'" ) then
  19.         cancelEvent ( true, "Bitte kein ' benutzen!" )
  20.         connectCanceled = true
  21.     else
  22.         if playerUID[nick] then
  23.             local result = dbPoll ( dbQuery ( handler, "SELECT ??, ??, ?? FROM ?? WHERE ??=?", "STime", "Grund", "AdminUID", "ban", "UID", playerUID[nick] ), -1 )
  24.             if result and result[1] then
  25.                 local bantime = result[1]["STime"]
  26.                 bool = not ( bantime == 0 )
  27.             end
  28.             local cancome = true
  29.             if bool and bantime then
  30.                 if ( bantime - getTBanSecTime ( 0 ) ) < 0 then
  31.                     dbExec ( handler, "DELETE FROM ?? WHERE ??=?", "ban", "UID", playerUID[nick] )
  32.                 elseif bantime > 0 then
  33.                     local reason = result[1]["Grund"]
  34.                     local admin = playerUIDName[tonumber ( result[1]["AdminUID"] )]
  35.                     local diff = math.floor ( ( ( bantime - getTBanSecTime ( 0 ) ) / 60 ) * 100 ) / 100
  36.                     cancelEvent ( true, "Du bist noch "..diff.." Stunden von "..admin.." gesperrt, Grund: "..reason )
  37.                     connectCanceled = true
  38.                     cancome = false
  39.                 else
  40.                     cancome = false
  41.                 end
  42.             else
  43.                 if not cancome then
  44.                     local reason = result[1]["Grund"]
  45.                     local admin = playerUIDName[tonumber ( result[1]["AdminUID"] )]
  46.                     cancelEvent ( true, "Du bist von "..admin.." gebannt worden! Grund: "..reason..", bei Fragen wende dich bitte an das Forum!" )
  47.                     connectCanceled = true
  48.                 elseif getPlayerWarnCount ( nick ) >= 3 then
  49.                     cancelEvent ( true, "Du hast 3 Warns! Ablaufdatum des nächsten Warns: "..getLowestWarnExtensionTime ( nick ) )
  50.                     connectCanceled = true
  51.                 else
  52.                     local serialresult = dbPoll ( dbQuery ( handler, "SELECT ??, ?? FROM ?? WHERE ?? LIKE ?", "Grund", "AdminUID", "ban", "Serial", serial ), -1 )
  53.                     if serialresult and serialresult[1] then
  54.                         local reason = serialresult[1]["Grund"]
  55.                         local admin = playerUIDName[tonumber(serialresult[1]["AdminUID"])]
  56.                         cancelEvent ( true, "Du bist von "..admin.." gebannt worden! Grund: "..reason..", bei Fragen wende dich bitte an das Forum!" )
  57.                         connectCanceled = true
  58.                     end
  59.                 end
  60.             end
  61.         end
  62.     end
  63. end
  64. addEventHandler ( "onPlayerConnect", getRootElement(), banCheck )
  65.  
  66.  
  67. function regcheck_func ( player )
  68.  
  69.     setPedStat ( player, 22, 50 )
  70.     setElementFrozen ( player, true )
  71.     vioSetElementData  ( player, "loggedin", 0 )
  72.    
  73.     local pname = getPlayerName ( player )
  74.     toggleAllControls ( player, false )
  75.     if player == client then
  76.         if isSerialValid ( getPlayerSerial(player) ) or isRegistered ( pname ) then
  77.             if ( hasInvalidChar ( player ) or string.find ( pname, "'" ) ) and not isRegistered ( pname ) then
  78.                 kickPlayer ( player, "Dein Name enthält ungültige Zeichen!" )
  79.             else
  80.                 if pname ~= "player" then
  81.                     if isRegistered ( pname ) then
  82.                         local serial = getPlayerSerial ( player )
  83.                         local thename = ""
  84.                         local haterlaubnis = false
  85.                         local result = dbPoll ( dbQuery ( handler, "SELECT ??, ?? FROM ?? WHERE ?? LIKE ?", "Name", "Erlaubnis", "players", "Serial", serial ), -1 )
  86.                         if result and result[1] then
  87.                             thename = result[1]["Name"]
  88.                             if tonumber ( result[1]["Erlaubnis"] ) == 1 then
  89.                                 thename = pname
  90.                                 haterlaubnis = true
  91.                             end
  92.                         else
  93.                             thename = pname
  94.                         end
  95.                         if string.lower(thename) ~= string.lower(getPlayerName ( player )) then
  96.                             if not haterlaubnis then
  97.                                 kickPlayer ( player, "Du hast schon ein Account mit einem anderen Namen ("..thename..")" )
  98.                                 return false
  99.                             end
  100.                         end
  101.                         triggerClientEvent ( player, "ShowLoginWindow", getRootElement(), thename, true )
  102.                     else
  103.                         local clantag = gettok ( pname, 1, string.byte(']') )
  104.                         if testmode == true then
  105.                             triggerClientEvent ( player, "ShowRegisterGui", getRootElement() )
  106.                         else
  107.                             local serial = getPlayerSerial ( player )
  108.                             if string.upper ( clantag ) == "[UTM" and not isThisTheBetaServer () then
  109.                                 kickPlayer (player, "Du bist kein Mitglied des Clans!")
  110.                             elseif string.upper ( clantag ) == "[NOVA" or string.upper ( clantag ) == "[VIO" or string.upper ( clantag ) == "[EXO" or string.upper ( clantag ) == "[XTM" or string.upper ( clantag ) == "[GRS" or string.upper ( clantag ) == "[COA" or string.upper ( clantag ) == "[VITA" or string.upper ( clantag ) == "[UTM" or string.upper ( clantag ) == "[UL" then
  111.                                 kickPlayer (player, "Dieses Clantag ist nicht erlaubt!")
  112.                             elseif #pname < 3 or #pname > 20 then
  113.                                 kickPlayer ( player, "Bitte mindestens 3 und maximal 20 Zeichen als Nickname!" )
  114.                             elseif hasInvalidChar ( player ) or string.find ( pname, "'" ) then
  115.                                 kickPlayer ( player, "Bitte nimm einen Nickname ohne ueberfluessige Zeichen!" )
  116.                             elseif string.lower (pname) == "niemand" or string.lower (pname) == "versteigerung" or string.lower (pname) == "none" then
  117.                                 kickPlayer ( player, "Ungültiger Name!" )
  118.                             else
  119.                                 triggerClientEvent ( player, "ShowRegisterGui", getRootElement() )
  120.                             end
  121.                         end
  122.                     end
  123.                 else
  124.                     kickPlayer ( player, "Bitte ändere deinen Nickname!" )
  125.                 end
  126.             end
  127.         else
  128.             kickPlayer ( player, "Dein MTA verwendet einen ungültigen Serial. Bitte neu installieren!" )
  129.         end
  130.     end
  131. end
  132. addEvent ( "regcheck", true )
  133. addEventHandler ("regcheck", getRootElement(), regcheck_func )
  134.  
  135.  
  136. function register_func ( player, passwort, bday, bmon, byear, geschlecht )
  137.     if player == client then
  138.         local pname = getPlayerName ( player )
  139.             if vioGetElementData ( player, "loggedin" ) == 0 and not isRegistered ( pname ) and player == client then
  140.                 setPlayerLoggedIn ( pname )
  141.                
  142.                 dbExec ( handler, "DELETE FROM players WHERE Name LIKE '"..pname.."'" )
  143.                 dbExec ( handler, "DELETE FROM userdata WHERE Name LIKE '"..pname.."'" )
  144.                
  145.                 toggleAllControls ( player, true )
  146.                 vioSetElementData ( player, "loggedin", 1 )
  147.  
  148.                 triggerClientEvent ( source, "DisableRegisterGui", source )
  149.  
  150.                 local ip = getPlayerIP ( player )
  151.                
  152.                 if geschlecht == nil then
  153.                     geschlecht = 1
  154.                 end
  155.                
  156.                 local regtime = getRealTime()
  157.                 local year = regtime.year + 1900
  158.                 local month = regtime.month + 1
  159.                 local day = regtime.monthday
  160.                 local hour = regtime.hour
  161.                 local minute = regtime.minute
  162.                
  163.                 local registerdatum = tostring(day.."."..month.."."..year..", "..hour..":"..minute)
  164.                 local lastlogin = registerdatum
  165.                
  166.                 passwort = hash ( "sha512", passwort )
  167.                 local lastLoginInt = getSecTime ( 0 )
  168.                
  169.                 local id = tonumber ( dbPoll ( dbQuery ( handler, "SELECT ?? FROM ?? WHERE id=id", "id", "idcounter" ), -1 )[1]["id"] )
  170.                 dbExec ( handler, "UPDATE ?? SET ?? = ?", "idcounter", "id", id+1 )
  171.                
  172.                 local result = dbExec ( handler, "INSERT INTO players ( UID, Name, Serial, IP, Last_login, Geburtsdatum_Tag, Geburtsdatum_Monat, Geburtsdatum_Jahr, Passwort, Geschlecht, RegisterDatum, LastLogin) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", id, pname, getPlayerSerial(player), getPlayerIP ( player ), lastlogin, tonumber ( bday), tonumber ( bmon), tonumber ( byear), passwort, geschlecht, registerdatum, lastLoginInt )
  173.                 if not result then
  174.                     outputDebugString ( "[register_func 1] Error executing the query" )
  175.                 else
  176.                     triggerClientEvent ( player, "infobox_start", player, "Du hast dich\nerfolgreich registriert!\n\nDeine Daten werden\nnun gespeichert!", 7500, 0, 255, 0 )
  177.                     playerUID[pname] = id
  178.                     playerUIDName[id] = pname
  179.                 end
  180.                
  181.                 local result = dbExec ( handler, "INSERT INTO achievments (UID) VALUES (?)", id )
  182.                 if not result then
  183.                     outputDebugString ( "[register_func 2] Error executing the query" )
  184.                 end
  185.                
  186.                 local result = dbExec ( handler, "INSERT INTO inventar (UID) VALUES (?)", id )
  187.                 if not result then
  188.                     outputDebugString ( "[register_func 3] Error executing the query" )
  189.                 end
  190.                
  191.                 local result = dbExec ( handler, "INSERT INTO packages (UID, Paket1, Paket2, Paket3, Paket4, Paket5, Paket6, Paket7, Paket8, Paket9, Paket10, Paket11, Paket12, Paket13, Paket14, Paket15, Paket16, Paket17, Paket18, Paket19, Paket20, Paket21, Paket22, Paket23, Paket24, Paket25) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", id,'0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0' )
  192.                 if not result then
  193.                     outputDebugString ( "[register_func 4] Error executing the query" )
  194.                 end
  195.                
  196.                 local result = dbExec ( handler, "INSERT INTO bonustable (UID, Lungenvolumen, Muskeln, Kondition, Boxen, KungFu, Streetfighting, CurStyle, PistolenSkill, DeagleSkill, ShotgunSkill, AssaultSkill) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", id, 'none', 'none', 'none', 'none', 'none', 'none', '4', 'none', 'none', 'none', 'none' )
  197.                 if not result then
  198.                     outputDebugString ( "[register_func 5] Error executing the query" )
  199.                 end
  200.                
  201.                 local result = dbExec ( handler, "INSERT INTO statistics ( UID ) VALUES (?)", id )
  202.                 if not result then
  203.                     outputDebugString ( "[register_func 6] Error executing the query" )
  204.                 end
  205.                
  206.                 local result = dbExec ( handler, "INSERT INTO skills ( UID ) VALUES (?)", id )
  207.                 if not result then
  208.                     outputDebugString ( "[register_func 7] Error executing the query" )
  209.                 end
  210.                
  211.                 vioSetElementData ( player, "money", 15000 )
  212.                 vioSetElementData ( player, "points", 0 )
  213.                 vioSetElementData ( player, "packages", "90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" )
  214.                 local Spawnpos_X = 1227.853515625
  215.                 vioSetElementData ( player, "spawnpos_x", Spawnpos_X )
  216.                 local Spawnpos_Y = 181.556640625
  217.                 vioSetElementData ( player, "spawnpos_y", Spawnpos_Y )
  218.                 local Spawnpos_Z = 20.409568786621
  219.                 vioSetElementData ( player, "spawnpos_z", Spawnpos_Z )
  220.                 local Spawnrot_X = 0
  221.                 vioSetElementData ( player, "spawnrot_x", Spawnrot_X )
  222.                 local SpawnInterior = 0
  223.                 vioSetElementData ( player, "spawnint", SpawnInterior )
  224.                 local SpawnDimension = 0
  225.                 vioSetElementData ( player, "spawndim", SpawnDimension )
  226.                 vioSetElementData ( player, "fraktion", 0 )
  227.                 vioSetElementData ( player, "rang", 0 )
  228.                 vioSetElementData ( player, "adminlvl", 0 )
  229.                 vioSetElementData ( player, "playingtime", 0 )
  230.                 vioSetElementData ( player, "curcars", 0 )
  231.                 vioSetElementData ( player, "maxcars", 5 )
  232.                 for i=1, 20 do
  233.                     vioSetElementData ( player, "carslot"..i, 0 )
  234.                 end
  235.                 vioSetElementData ( player, "deaths", 0 )
  236.                 vioSetElementData ( player, "kills", 0 )
  237.                 vioSetElementData ( player, "gangwarwins", 0 )
  238.                 vioSetElementData ( player, "gangwarlosses", 0 )
  239.                 vioSetElementData ( player, "jailtime", 0 )
  240.                 vioSetElementData ( player, "prison", 0 )
  241.                 vioSetElementData ( player, "bail", 0 )
  242.                 vioSetElementData ( player, "heaventime", 0 )
  243.                 vioSetElementData ( player, "housekey", 0 )
  244.                 vioSetElementData ( player, "bizkey", 0 )
  245.                 vioSetElementData ( player, "bankmoney", 35000 )
  246.                 vioSetElementData ( player, "drugs", 0 )
  247.                 local Skinid = getRandomRegisterSkin ( player, geschlecht )
  248.                 vioSetElementData ( player, "skinid", Skinid )
  249.                 vioSetElementData ( player, "carlicense", 0 )
  250.                 vioSetElementData ( player, "bikelicense", 0 )
  251.                 vioSetElementData ( player, "lkwlicense", 0 )
  252.                 vioSetElementData ( player, "helilicense", 0 )
  253.                 vioSetElementData ( player, "planelicensea", 0 )
  254.                 vioSetElementData ( player, "planelicenseb", 0 )
  255.                 vioSetElementData ( player, "motorbootlicense", 0 )
  256.                 vioSetElementData ( player, "segellicense", 0)
  257.                 vioSetElementData ( player, "fishinglicense", 0)
  258.                 vioSetElementData ( player, "wanteds", 0 )
  259.                 vioSetElementData ( player, "stvo_punkte", 0 )
  260.                 vioSetElementData ( player, "gunlicense", 0 )
  261.                 vioSetElementData ( player, "perso", 0 )
  262.                 vioSetElementData ( player, "boni", 1000 )
  263.                 vioSetElementData ( player, "pdayincome", 0 )
  264.                 vioSetElementData ( player, "hitglocke", 0 )
  265.                 vioSetElementData ( player, "medikits", 0 )
  266.                 vioSetElementData ( player, "repairkits", 0 )
  267.                 local run = 1
  268.                 while true do
  269.                     if run >= 20 then
  270.                         break
  271.                     else
  272.                         run = run + 1
  273.                     end
  274.                     local tnr = math.random ( 1000, 9999999 )
  275.                     local result = dbPoll ( dbQuery ( handler, "SELECT ?? FROM ?? WHERE ??=?", "Telefonnr", "userdata", "Telefonnr", tnr ), -1 )
  276.                     if not result or not result[1] then
  277.                         if tonumber ( tnr ) ~= 911 and tonumber ( tnr ) ~= 333 and tonumber ( tnr ) ~= 400 and tonumber (tnr ) ~= 666666 then
  278.                             Telefonnr = tnr
  279.                             break
  280.                         end
  281.                     end
  282.                 end
  283.                 if Telefonnr == nil then
  284.                     Telefonnr = math.random ( 1000, 9999999 )
  285.                 end
  286.                 vioSetElementData ( player, "telenr", Telefonnr )
  287.                 vioSetElementData ( player, "warns", 0 )
  288.                 vioSetElementData ( player, "gunboxa", "0|0" )
  289.                 vioSetElementData ( player, "gunboxb", "0|0" )
  290.                 vioSetElementData ( player, "gunboxc", "0|0" )
  291.                 vioSetElementData ( player, "job", "none" )
  292.                 vioSetElementData ( player, "jobtime", 0 )
  293.                 vioSetElementData ( player, "club", "none" )
  294.                 vioSetElementData ( player, "favchannel", 0 )
  295.                 vioSetElementData ( player, "bonuspoints", 0 )
  296.                 vioSetElementData ( player, "truckerlvl", 1 )
  297.                 vioSetElementData ( player, "airportlvl", 1 )
  298.                 vioSetElementData ( player, "bauarbeiterLVL", 0 )
  299.                 vioSetElementData ( player, "farmerLVL", 0 )
  300.                 vioSetElementData ( player, "contract", 0 )
  301.                 vioSetElementData ( player, "socialState", "Flüchtling" )
  302.                 vioSetElementData ( player, "streetCleanPoints", 0 )
  303.                 vioSetElementData ( player, "handyType", 1 )
  304.                 vioSetElementData ( player, "handyCosts", 0 )
  305.                
  306.                 _G[pname.."paydaytime"] = setTimer ( playingtime, 60000, 0, player )
  307.                
  308.                 vioSetElementData ( player, "loggedin", 1 )
  309.                 vioSetElementData ( player, "muted", 0 )
  310.                 vioSetElementData ( player, "curplayingtime", 0 )
  311.                 vioSetElementData ( player, "housex", 0 )
  312.                 vioSetElementData ( player, "housey", 0 )
  313.                 vioSetElementData ( player, "housez", 0 )
  314.                 vioSetElementData ( player, "house", "none" )
  315.                 vioSetElementData ( player, "handystate", "on" )
  316.                 vioSetElementData ( player, "object", 0 )
  317.                 vioSetElementData ( player, "ammoTyp", 0 )
  318.                 vioSetElementData ( player, "curAmmoTyp", 0 )
  319.                 vioSetElementData ( player, "nodmzone", 0 )
  320.                 vioSetElementData ( player, "coins", 0 )
  321.  
  322.                 bindKey ( source, "r", "down", reload )                                        
  323.                 setPlayerWantedLevel ( player, 0 )
  324.                 vioSetElementData ( player, "call", false )
  325.                
  326.                 packageLoad ( player )
  327.                 achievload ( player )
  328.                 inventoryload ( player )
  329.                 elementDataSettings ( player )
  330.                 bonusLoad ( player )
  331.                 skillDataLoad ( player )
  332.                 createPlayerAFK ( player )
  333.                 loadPlayerStatisticsMySQL ( player )
  334.                 if not allPrivateCars[pname] then
  335.                     allPrivateCars[pname] = {}
  336.                 end
  337.  
  338.                 local result = dbExec ( handler, "INSERT INTO userdata ( UID,Name,Skinid,Telefonnr) VALUES(?,?,?,?)", id, pname, Skinid, Telefonnr)
  339.                 if not result then
  340.                     outputDebugString ( "[register_func 8] Error executing the query" )
  341.                 else
  342.                     outputDebugString ("Daten für Spieler "..pname.." wurden angelegt!")
  343.                 end
  344.                 outputChatBox ( "Drücke F1, um das Hilfemenü zu öffnen!", player, 200, 200, 0 )
  345.                
  346.                 vioSetElementData ( player, "gameboy", 0 )
  347.                 loadAddictionsForPlayer ( player )
  348.                 spawnchange_func ( player, "", "noobspawn", "" )
  349.                 triggerJoinedPlayerTheTrams ( player )
  350.                 syncInvulnerablePedsWithPlayer ( player )
  351.                 playerLoginGangMembers ( player )
  352.                 spawnPlayer ( player, Spawnpos_X, Spawnpos_Y, Spawnpos_Z+5000, Spawnrot_X, Skinid, SpawnInterior, 0 )
  353.                 setElementFrozen ( player, true )
  354.                 toggleAllControls ( player, false )
  355.                 triggerClientEvent ( player, "starttutorial", player, Skinid )
  356.                 setPlayerHudComponentVisible ( player, "all", false )
  357.                 insertPlayerIntoLoggedIn ( pname, getPlayerIP(player), getPlayerSerial(player) )
  358.             end
  359.     end
  360. end
  361. addEvent ( "register", true )
  362. addEventHandler ( "register", getRootElement(), register_func)
  363.  
  364.  
  365. addEvent ( "tutorialended", true )
  366. addEventHandler ( "tutorialended", root, function ( )
  367.     setElementPosition ( client, 1227.853515625, 181.556640625, 20.409568786621 )
  368.     setCameraTarget ( client, client )
  369.     setElementFrozen ( client, false )
  370.     toggleAllControls ( client, true )
  371. end )
  372.  
  373.  
  374. addEvent ( "setPlayerTutorialMoney", true )
  375. addEventHandler ( "setPlayerTutorialMoney", root, function ( )
  376.     vioSetElementData ( client, "money", vioGetElementData ( client, "money" ) + 10000 )
  377. end )
  378.  
  379.  
  380. local maleSkins = {1, 2, 7, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 57, 58, 59, 60, 61, 62, 66, 67, 68, 71, 72, 73, 78, 79, 80, 81, 82, 83, 84, 94, 95, 96, 97, 98, 99, 100, 101, 108, 109, 110, 122, 128, 132, 133, 134, 135, 136, 137, 142, 143, 144, 146, 147, 153, 154, 155, 156, 158, 159, 160, 161, 162, 167, 168, 170, 171, 176, 177, 179, 180, 182, 183, 184, 185, 187, 189, 200, 202, 203, 204, 206, 209, 210, 212, 213, 217, 220, 221, 222, 223, 227, 228, 229, 230, 234, 235, 236, 239, 240, 241, 242, 249, 250, 252, 253, 255, 258, 259, 261, 262, 264, 269, 270, 271, 291, 302, 303, 306, 307, 310}
  381. local femaleSkins = {9, 10, 11, 12, 13, 31, 38, 39, 40, 41, 53, 54, 55, 56, 63, 64, 69, 75, 76, 77, 85, 87, 88, 89, 90, 91, 92, 93, 129, 130, 131, 138, 139, 140, 141, 145, 148, 150, 151, 152, 157, 169, 172, 178, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 201, 205, 207, 211, 214, 215, 216, 218, 219, 225, 226, 231, 232, 233, 238, 243, 244, 245, 246, 251, 256, 257, 263 }
  382.  
  383.  
  384. function getRandomRegisterSkin ( player, sex )
  385.     local testped = createPed ( 0, 9999, 9999, 9999 )
  386.     if sex == 1 then
  387.         local rnd = math.random ( 1, #femaleSkins )
  388.         if setElementModel ( testped, femaleSkins[rnd] ) then
  389.             destroyElement ( testped )
  390.             return femaleSkins[rnd]
  391.         else
  392.             destroyElement ( testped )
  393.             return getRandomRegisterSkin ( player, sex )
  394.         end
  395.     else
  396.         local rnd = math.random ( 1, #maleSkins )
  397.         if setElementModel ( testped, maleSkins[rnd] ) then
  398.             destroyElement ( testped )
  399.             return maleSkins[rnd]
  400.         else
  401.             destroyElement ( testped )
  402.             return getRandomRegisterSkin ( player, sex )
  403.         end
  404.     end
  405. end
  406.  
  407.  
  408. function login_func ( player, passwort )
  409.    
  410.     if player == client then
  411.         if vioGetElementData ( player, "loggedin" ) == 0 then
  412.             local pname = getPlayerName ( player )
  413.             local passwort = passwort
  414.            
  415.             local pwresult = dbPoll ( dbQuery ( handler, "SELECT ?? FROM ?? WHERE ??=?", "Passwort", "players", "UID", playerUID[pname] ), -1 )
  416.             if pwresult and pwresult[1] then
  417.                 pwresult = pwresult[1]["Passwort"]
  418.                 if pwresult == hash ( "sha512", passwort ) then
  419.                                    
  420.                     setPlayerLoggedIn ( pname )
  421.                
  422.                     toggleAllControls ( player, true )
  423.  
  424.                     vioSetElementData ( player, "loggedin", 1 )
  425.                     vioSetElementData ( player, "nodmzone", 0 )
  426.                    
  427.                     local logtime = getRealTime()
  428.                     local year = logtime.year + 1900
  429.                     local month = logtime.month + 1
  430.                     local day = logtime.monthday
  431.                     local hour = logtime.hour
  432.                     local minute = logtime.minute
  433.                    
  434.                     local lastLoginInt = getSecTime ( 0 )
  435.                     local lastlogin = tostring(day.."."..month.."."..year..", "..hour..":"..minute)
  436.                    
  437.                     local result = dbPoll ( dbQuery ( handler, "SELECT * from userdata WHERE UID = ?", playerUID[pname] ), -1 )
  438.                     if result then
  439.                         if result[1] then
  440.                             local dsatz = result[1]
  441.                             local money = tonumber ( dsatz["Geld"] )
  442.                             vioSetElementData ( player, "money", money )
  443.                             local fraktion = tonumber ( dsatz["Fraktion"] )
  444.                             vioSetElementData ( player, "fraktion", fraktion )
  445.                             if fraktion > 0 then
  446.                                 fraktionMembers[fraktion][player] = fraktion
  447.                                 bindKey ( player, "y", "down", "chatbox", "t" )
  448.                                 if fraktion ~= 10 and fraktion ~= 11 then
  449.                                     triggerClientEvent ( player, "syncPlayerList", player, fraktionMemberList[fraktion], fraktionMemberListInvite[fraktion] )
  450.                                 else
  451.                                     triggerClientEvent ( player, "syncPlayerList", player, fraktionMemberList[10], fraktionMemberListInvite[10] )
  452.                                 end
  453.                             end
  454.                             local rang = tonumber ( dsatz["FraktionsRang"] )
  455.                             vioSetElementData ( player, "rang", rang )
  456.                            
  457.                             local admnlvl = tonumber ( dsatz["Adminlevel"] )
  458.                             vioSetElementData ( player, "adminlvl", admnlvl )
  459.                             if admnlvl >= 1 then
  460.                                 adminsIngame[player] = admnlvl
  461.                             end
  462.                             if admnlvl == 1 then
  463.                                 donatorMute[player] = {}
  464.                             end
  465.                            
  466.                             vioSetElementData ( player, "spawnpos_x", tonumber ( dsatz["Spawnpos_X"] ) )
  467.                             vioSetElementData ( player, "spawnpos_y", tonumber ( dsatz["Spawnpos_Y"] ) )
  468.                             vioSetElementData ( player, "spawnpos_z", tonumber ( dsatz["Spawnpos_Z"] ) )
  469.                             vioSetElementData ( player, "spawnrot_x", tonumber ( dsatz["Spawnrot_X"] ) )
  470.                             vioSetElementData ( player, "spawnint", tonumber ( dsatz["SpawnInterior"] ) )
  471.                             vioSetElementData ( player, "spawndim", tonumber ( dsatz["SpawnDimension"] ) )
  472.                             vioSetElementData ( player, "playingtime", tonumber ( dsatz["Spielzeit"] ) )
  473.                             vioSetElementData ( player, "curcars", tonumber ( dsatz["CurrentCars"] ) )
  474.                             local maximumcars = tonumber ( dsatz["MaximumCars"] )
  475.                             vioSetElementData ( player, "maxcars",maximumcars  )
  476.                             local curcars = 0
  477.                             local offerOnCar = false
  478.                             local vehresult = dbPoll ( dbQuery ( handler, "SELECT ??, ?? FROM ?? WHERE ??=?", "Special", "Slot", "vehicles", "UID", playerUID[pname] ), -1 )
  479.                             for i=1, maximumcars do
  480.                                 vioSetElementData ( player, "carslot"..i, 0 )
  481.                             end
  482.                             if vehresult and vehresult[1] then
  483.                                 for i = 1, #vehresult do
  484.                                     local id = tonumber ( vehresult[i]["Slot"] )
  485.                                     local carvalue = tonumber ( vehresult[i]["Special"] )
  486.                                     if carvalue == 2 then
  487.                                         vioSetElementData ( player, "yachtImBesitz", true )
  488.                                     end
  489.                                     if not carvalue then
  490.                                         --if MySQL_DatasetExist("buyit", "Hoechstbietender LIKE '"..pname.."' AND Typ LIKE 'Veh'") then
  491.                                         --  carvalue = 3
  492.                                         --  offerOnCar = true
  493.                                         --else
  494.                                             carvalue = 0
  495.                                         --end
  496.                                     else
  497.                                         if carvalue == 2 then
  498.                                             carvalue = 2
  499.                                         else
  500.                                             carvalue = 1
  501.                                         end
  502.                                         curcars = curcars + 1
  503.                                     end
  504.                                     vioSetElementData ( player, "carslot"..id, carvalue )
  505.                                 end
  506.                             end
  507.                             vioSetElementData ( player, "curcars", curcars )
  508.                            
  509.                             vioSetElementData ( player, "deaths", tonumber ( dsatz["Tode"] ) )
  510.                             vioSetElementData ( player, "kills", tonumber ( dsatz["Kills"] ) )
  511.                             vioSetElementData ( player, "gangwarlosses", tonumber ( dsatz["GangwarVerloren"] ) )
  512.                             vioSetElementData ( player, "gangwarwins", tonumber ( dsatz["GangwarGewonnen"] ) )
  513.                             vioSetElementData ( player, "jailtime", tonumber ( dsatz["Knastzeit"] ) )
  514.                             vioSetElementData ( player, "prison", tonumber ( dsatz["Prison"] ) )
  515.                             vioSetElementData ( player, "bail", tonumber ( dsatz["Kaution"] )  )
  516.                             vioSetElementData ( player, "heaventime", tonumber ( dsatz["Himmelszeit"] ) )
  517.                            
  518.                             local resulthouse = dbPoll ( dbQuery ( handler, "SELECT ?? FROM ?? WHERE ??=?", "ID", "houses", "UID", playerUID[pname] ), -1 )
  519.                             local Hausschluessel = resulthouse[1] and resulthouse[1]["ID"] or false
  520.                             local key = tonumber ( dsatz["Hausschluessel"] )
  521.                             if Hausschluessel then
  522.                                 vioSetElementData ( player, "housekey", tonumber ( Hausschluessel ) )
  523.                             elseif key <= 0 then
  524.                                 vioSetElementData ( player, "housekey", key )
  525.                             else
  526.                                 vioSetElementData ( player, "housekey", 0 )
  527.                             end
  528.                            
  529.                             vioSetElementData ( player, "hitglocke", tonumber ( dsatz["Hitglocke"] ) )
  530.                             vioSetElementData ( player, "bizkey", tonumber ( dsatz["Bizschluessel"] ) )
  531.                             vioSetElementData ( player, "bankmoney", tonumber ( dsatz["Bankgeld"] ) )
  532.                             vioSetElementData ( player, "drugs", tonumber ( dsatz["Drogen"] ) )
  533.                             vioSetElementData ( player, "skinid", tonumber ( dsatz["Skinid"] ) )
  534.                             vioSetElementData ( player, "carlicense", tonumber ( dsatz["Autofuehrerschein"] ) )
  535.                             vioSetElementData ( player, "bikelicense", tonumber ( dsatz["Motorradtfuehrerschein"] ) )
  536.                             vioSetElementData ( player, "lkwlicense", tonumber ( dsatz["LKWfuehrerschein"] ) )
  537.                             vioSetElementData ( player, "helilicense", tonumber ( dsatz["Helikopterfuehrerschein"] ) )
  538.                             vioSetElementData ( player, "planelicensea", tonumber ( dsatz["FlugscheinKlasseA"] ) )
  539.                             vioSetElementData ( player, "planelicenseb", tonumber ( dsatz["FlugscheinKlasseB"] ) )
  540.                             vioSetElementData ( player, "motorbootlicense", tonumber ( dsatz["Motorbootschein"] ) )
  541.                             vioSetElementData ( player, "segellicense", tonumber ( dsatz["Segelschein"] ) )
  542.                             vioSetElementData ( player, "fishinglicense", tonumber ( dsatz["Angelschein"] ) )
  543.                             vioSetElementData ( player, "wanteds", tonumber ( dsatz["Wanteds"] ) )
  544.                             vioSetElementData ( player, "stvo_punkte", tonumber ( dsatz["StvoPunkte"] ) )
  545.                             vioSetElementData ( player, "gunlicense", tonumber ( dsatz["Waffenschein"] ) )
  546.                             vioSetElementData ( player, "perso", tonumber ( dsatz["Perso"] ) )
  547.                             vioSetElementData ( player, "boni", tonumber ( dsatz["Boni"] ) )
  548.                             vioSetElementData ( player, "pdayincome", tonumber ( dsatz["PdayIncome"] ) )
  549.                             vioSetElementData ( player, "telenr", tonumber ( dsatz["Telefonnr"] ) )
  550.                             vioSetElementData ( player, "warns", getPlayerWarnCount ( pname ) )
  551.                             vioSetElementData ( player, "gunboxa", dsatz["Gunbox1"] )
  552.                             vioSetElementData ( player, "gunboxb", dsatz["Gunbox2"] )
  553.                             vioSetElementData ( player, "gunboxc", dsatz["Gunbox3"] )
  554.                             vioSetElementData ( player, "job", dsatz["Job"] )
  555.                             vioSetElementData ( player, "jobtime", dsatz["Jobtime"] )
  556.                             vioSetElementData ( player, "club", dsatz["Club"] )
  557.                             vioSetElementData ( player, "favchannel", tonumber ( dsatz["FavRadio"] ) )
  558.                             vioSetElementData ( player, "bonuspoints", tonumber ( dsatz["Bonuspunkte"] ) )
  559.                             local skill = tonumber ( dsatz["Truckerskill"] )
  560.                             if not skill then
  561.                                 skill = 0
  562.                             end
  563.                             local ArmyPermissions = dsatz["ArmyPermissions"]
  564.                             for i = 1, 10 do
  565.                                 vioSetElementData ( player, "armyperm"..i, tonumber ( gettok ( ArmyPermissions, i, string.byte( '|' ) ) ) )
  566.                             end
  567.                             vioSetElementData ( player, "truckerlvl", skill )
  568.                             vioSetElementData ( player, "coins", tonumber ( dsatz["Coins"] ) )
  569.                             vioSetElementData ( player, "airportlvl", tonumber ( dsatz["AirportLevel"] ) )
  570.                             vioSetElementData ( player, "farmerLVL", tonumber ( dsatz["farmerLVL"] ) )
  571.                             vioSetElementData ( player, "bauarbeiterLVL", tonumber ( dsatz["bauarbeiterLVL"] ) )
  572.                             vioSetElementData ( player, "contract", tonumber ( dsatz["Contract"] ) )
  573.                             vioSetElementData ( player, "socialState", dsatz["SocialState"] )
  574.                             if tonumber ( dsatz["SocialState"] ) then
  575.                                 if tonumber ( dsatz["SocialState"] ) == 0 then
  576.                                     vioSetElementData ( player, "socialState", "Flüchtling" )
  577.                                 end
  578.                             end
  579.                             vioSetElementData ( player, "streetCleanPoints", tonumber ( dsatz["StreetCleanPoints"] ) )
  580.                            
  581.                             local handyString = dsatz["Handy"]
  582.                             local v1, v2
  583.                             v1 = tonumber ( gettok ( handyString, 1, string.byte ( '|' ) ) )
  584.                             v2 = tonumber ( gettok ( handyString, 2, string.byte ( '|' ) ) )
  585.                             vioSetElementData ( player, "handyType", v1 )
  586.                             vioSetElementData ( player, "handyCosts", v2 )
  587.                            
  588.                             loadAddictionsForPlayer ( player )
  589.                            
  590.                             --isPremium ( player )
  591.                            
  592.                             vioSetElementData ( player, "housex", 0 )
  593.                             vioSetElementData ( player, "housey", 0 )
  594.                             vioSetElementData ( player, "housez", 0 )
  595.                             vioSetElementData ( player, "house", "none" )
  596.                             vioSetElementData ( player, "curplayingtime", 0 )
  597.                             vioSetElementData ( player, "handystate", "on" )
  598.                             vioSetElementData ( player, "call", false )
  599.                            
  600.                             packageLoad ( player )
  601.                             achievload ( player )
  602.                             inventoryload ( player )
  603.                             elementDataSettings ( player )
  604.                             bonusLoad ( player )
  605.                             setPremiumData ( player )
  606.                             skillDataLoad ( player )
  607.                             createPlayerAFK ( player )
  608.                             loadPlayerStatisticsMySQL ( player )
  609.                             setMaximumCarsForPlayer ( player )
  610.  
  611.                             if not allPrivateCars[pname] then
  612.                                 allPrivateCars[pname] = {}
  613.                             end
  614.                            
  615.                             _G[pname.."paydaytime"] = setTimer ( playingtime, 60000, 0, player )
  616.                
  617.                             RemoteSpawnPlayer ( player )
  618.                             setElementFrozen ( player, true )
  619.                             setTimer ( setElementFrozen, 3000, 1, player, false )
  620.                             vioSetElementData ( player, "muted", 0 )
  621.                             triggerClientEvent ( player, "DisableLoginWindow", getRootElement() )                  
  622.                             triggerClientEvent ( player, "infobox_start", getRootElement(), "Du hast dich\nerfolgreich eingeloggt!\nDrücke F1, um das\nHilfemenü zu\nöffnen!", 5000, 0, 255, 0 )
  623.                             outputDebugString ("Spieler "..pname.." wurde eingeloggt, IP: "..getPlayerIP(player))
  624.                             vioSetElementData ( player, "loggedin", 1 )
  625.                             triggerJoinedPlayerTheTrams ( player )
  626.  
  627.                             if vioGetElementData ( player, "stvo_punkte" ) >= 15 then           -- SearchSTVO
  628.                                 vioSetElementData ( player, "carlicense", 0 )
  629.                                 vioSetElementData ( player, "stvo_punkte", 0 )
  630.                                 dbExec ( handler, "UPDATE ?? SET ??=?, ??=?, ??=? WHERE ??=?", "userdata", "Autofuehrerschein", 0, "UID", playerUID[pname] )
  631.                                 outputChatBox ( "Wegen deines schlechten Fahrverhaltens wurde dir dein Führerschein abgenommen!", player, 125, 0, 0 )
  632.                             end
  633.                            
  634.                             vioSetElementData ( player, "object", tonumber ( dbPoll ( dbQuery ( handler, "SELECT ?? FROM ?? WHERE ??=?", "Objekt", "inventar", "UID", playerUID[pname] ), -1 )[1]["Objekt"] ) )
  635.                            
  636.                             checkmsgs ( player )
  637.                            
  638.                             blacklistLogin ( pname )
  639.                            
  640.                             if isElement ( houses["pickup"][getPlayerName(player)] ) then
  641.                                 local x, y, z = getElementPosition (houses["pickup"][getPlayerName(player)])
  642.                                 createBlip ( x, y, z, 31, 2, 255, 0, 0, 255, 0, 99999, player )
  643.                             end
  644.                            
  645.                             local serial = getPlayerSerial ( player )
  646.                            
  647.                             dbExec ( handler, "UPDATE ?? SET ??=?, ??=?, ??=? WHERE ??=?", "players", "Last_login", lastlogin, "LastLogin", lastLoginInt, "Serial", serial, "UID", playerUID[pname] )
  648.                            
  649.                             outputChatBox ( "#383838═══════ #FFD700Deltaforce-RL Info #383838═══════", player, 56, 56, 56, true )
  650.                             outputChatBox ( "╔ Willkommen auf Deltaforce-RL.", player, 255, 215, 0 )
  651.                             outputChatBox ( "╠ Bei Fragen und Problemen kannst du /report benutzen.", player, 255, 215, 0 )
  652.                             outputChatBox ( "╠ Um einer Fraktion beizutreten, melde dich im Teamspeak³.", player, 255, 215, 0 )
  653.                             outputChatBox ( "╠ Teamspeak: 46.228.192.140", player, 255, 215, 0 )
  654.                             outputChatBox ( "╚ Forum: deltaforce-rl.forumprofi.de", player, 255, 215, 0 )
  655.                             outputChatBox ( "═══════════════════════════", player, 56, 56, 56 )
  656.                            
  657.                             local resultlogout = dbPoll ( dbQuery ( handler, "SELECT ??, ?? FROM ?? WHERE ??=?", "Position", "Waffen", "logout", "UID", playerUID[pname] ), -1 )
  658.                             if resultlogout and resultlogout[1] then
  659.                                 local position = resultlogout[1]["Position"]
  660.                                 if position then
  661.                                     weapons = resultlogout[1]["Waffen"]
  662.                                     dbExec ( handler, "DELETE FROM ?? WHERE ??=?", "logout", "UID", playerUID[pname] )
  663.                                     for i = 1, 12 do
  664.                                         local wstring = gettok ( weapons, i, string.byte( '|' ) )
  665.                                         if wstring then
  666.                                             if wstring then
  667.                                                 if #wstring >= 3 then
  668.                                                     local weapon = tonumber ( gettok ( wstring, 1, string.byte( ',' ) ) )
  669.                                                     local ammo = tonumber ( gettok ( wstring, 2, string.byte( ',' ) ) )
  670.                                                     giveWeapon ( player, weapon, ammo, true )
  671.                                                 end
  672.                                             end
  673.                                         end
  674.                                     end
  675.                                     if position ~= "false" then
  676.                                         local x = tonumber ( gettok ( position, 1, string.byte( '|' ) ) )
  677.                                         local y = tonumber ( gettok ( position, 2, string.byte( '|' ) ) )
  678.                                         local z = tonumber ( gettok ( position, 3, string.byte( '|' ) ) )
  679.                                         local int = tonumber ( gettok ( position, 4, string.byte( '|' ) ) )
  680.                                         local dim = tonumber ( gettok ( position, 5, string.byte( '|' ) ) )
  681.                                         setTimer ( setElementInterior, 1000, 1, player, int )
  682.                                         setTimer ( setElementDimension, 1000, 1, player, dim )
  683.                                         setTimer ( setElementPosition, 1000, 1, player, x, y, z )
  684.                                     end
  685.                                 end
  686.                             end
  687.                             getMailsForClient_func ( pname )
  688.                             playerLoginGangMembers ( player )
  689.                             syncInvulnerablePedsWithPlayer ( player )
  690.                             insertPlayerIntoLoggedIn ( pname, getPlayerIP(player), getPlayerSerial(player) )
  691.                         else
  692.                             triggerClientEvent ( player, "infobox_start", getRootElement(), "Der Spieler\nexistiert nicht!", 5000, 255, 0, 0 ) 
  693.                         end
  694.                     else
  695.                         outputDebugString ( "Einloggen klappt nicht!" )
  696.                     end    
  697.                 else
  698.                     triggerClientEvent ( player, "infobox_start", getRootElement(), "Ungueltiges Passwort -\nüberpruefe\ndeine Eingabe\noder melde dich\nim Forum.", 5000, 255, 0, 0 )
  699.                 end
  700.             else
  701.                 triggerClientEvent ( player, "infobox_start", getRootElement(), "Der Spieler\nexistiert nicht!", 5000, 255, 0, 0 ) 
  702.             end
  703.             if player and isElement ( player ) then
  704.                 bindKey ( player, "r", "down", reload )
  705.             end
  706.         else
  707.             triggerClientEvent ( player, "infobox_start", getRootElement(), "Der Spieler\nist einloggt!", 5000, 255, 0, 0 )
  708.         end
  709.     end
  710. end
  711. addEvent ( "einloggen", true )
  712. addEventHandler ( "einloggen", getRootElement(), login_func )
  713.  
  714.  
  715. function gameBeginGuiShow_func ( player )
  716.  
  717.     if player == client then
  718.         vioSetElementData ( player, "isInTut", false )
  719.         triggerClientEvent ( player, "showBeginGui", getRootElement() )
  720.         showCursor ( player, true )
  721.         setElementClicked ( player, true )
  722.         toggleAllControls ( player, true )
  723.         setElementPosition ( player, -1421.3, -287.2, 13.8 )
  724.         setElementInterior ( player, 0 )
  725.     end
  726. end
  727. addEvent ( "gameBeginGuiShow", true )
  728. addEventHandler ( "gameBeginGuiShow", getRootElement(), gameBeginGuiShow_func)
  729.    
  730.  
  731. function achievload ( player )
  732.  
  733.     local pname = getPlayerName ( player )
  734.     local result = dbPoll ( dbQuery ( handler, "SELECT * from achievments WHERE UID = ?", playerUID[pname] ), -1 )
  735.     local dsatz = nil
  736.     if result then
  737.         if result[1] then
  738.             dsatz = result[1]
  739.         else
  740.             outputDebugString ( "Spieler in Achievment-Datenbank nicht gefunden!" )
  741.             return false
  742.         end
  743.     end
  744.     vioSetElementData ( player, "schlaflosinsa", dsatz["SchlaflosInSA"] )
  745.     vioSetElementData ( player, "gunloads", dsatz["Waffenschieber"] )
  746.     vioSetElementData ( player, "angler_achiev", dsatz["Angler"] )
  747.     vioSetElementData ( player, "licenses_achiev", dsatz["Lizensen"] )
  748.     vioSetElementData ( player, "carwahn_achiev", dsatz["Fahrzeugwahn"] )
  749.     vioSetElementData ( player, "collectr_achiev", dsatz["DerSammler"] )
  750.     vioSetElementData ( player, "rl_achiev", dsatz["ReallifeWTF"] )
  751.     vioSetElementData ( player, "own_foots", dsatz["EigeneFuesse"] )
  752.     vioSetElementData ( player, "kingofthehill_achiev", dsatz["KingOfTheHill"] )
  753.     vioSetElementData ( player, "thetruthisoutthere_achiev", dsatz["TheTruthIsOutThere"] )
  754.     vioSetElementData ( player, "silentassasin_achiev", dsatz["SilentAssasin"] )
  755.     vioSetElementData ( player, "highwaytohell_achiev", dsatz["HighwayToHell"] )
  756.    
  757.     vioSetElementData ( player, "revolverheld_achiev", tonumber ( dsatz["Revolverheld"] ) )
  758.     vioSetElementData ( player, "chickendinner_achiev", tonumber ( dsatz["ChickenDinner"] ) )
  759.     vioSetElementData ( player, "nichtsgehtmehr_achiev", tonumber ( dsatz["NichtGehtMehr"] ) )
  760.     vioSetElementData ( player, "highscore_achiev", tonumber ( dsatz["highscore"] ) == 1 )
  761.    
  762.     local dstring = dsatz["LookoutsA"]
  763.     triggerClientEvent ( player, "hideLookoutMarkers", player, dstring )
  764.     local count = 0
  765.     for i = 1, 10 do
  766.         if tonumber ( gettok ( dstring, i, string.byte ( '|' ) ) ) == 1 then
  767.             count = count + 1
  768.         end
  769.     end
  770.     vioSetElementData ( player, "viewpoints", count )
  771.     loadHorseShoesFound ( player, pname )
  772.     loadPlayingTimeForSleeplessAchiev ( player, pname )
  773. end
  774.  
  775.  
  776. function inventoryload ( player )
  777.  
  778.     local pname = getPlayerName ( player )
  779.     vioSetElementData ( player, "playerid", playerUID[pname] )
  780.    
  781.     local dsatz
  782.     local result = dbPoll ( dbQuery ( handler, "SELECT * from inventar WHERE UID = ?", playerUID[pname] ), -1 )
  783.     if not result or not result[1] then
  784.         dbExec ( handler, "INSERT INTO inventar (UID) VALUES (?)", playerUID[pname] )
  785.         result = dbPoll ( dbQuery ( handler, "SELECT * from inventar WHERE UID = ?", playerUID[pname] ), -1 )
  786.     end
  787.     dsatz = result[1]
  788.     if dsatz["Wuerfel"] then
  789.         vioSetElementData ( player, "dice", tonumber ( dsatz["Wuerfel"] ) )
  790.     else
  791.         vioSetElementData ( player, "dice", 0 )
  792.     end
  793.     vioSetElementData ( player, "flowerseeds", tonumber ( dsatz["Blumensamen"] ) )
  794.     vioSetElementData ( player, "food1", tonumber ( dsatz["Essensslot1"] ) )
  795.     vioSetElementData ( player, "food2", tonumber ( dsatz["Essensslot2"] ) )
  796.     vioSetElementData ( player, "food3", tonumber ( dsatz["Essensslot3"] ) )
  797.     vioSetElementData ( player, "zigaretten", tonumber ( dsatz["Zigaretten"] ) )
  798.     vioSetElementData ( player, "mats", tonumber ( dsatz["Materials"] ) )
  799.     vioSetElementData ( player, "benzinkannister", tonumber ( dsatz["Benzinkanister"] ) )
  800.     vioSetElementData ( player, "fruitNotebook", tonumber ( dsatz["FruitNotebook"] ) )
  801.     vioSetElementData ( player, "casinoChips", tonumber ( dsatz["Chips"] ) )
  802.     vioSetElementData ( player, "gameboy", tonumber ( dsatz["Gameboy"] ) )
  803.     vioSetElementData ( player, "medikits", tonumber ( dsatz["Medikit"] ) )
  804.     vioSetElementData ( player, "repairkits", tonumber ( dsatz["Repairkit"] ) )
  805.     -- X-MAS --
  806.     -- vioSetElementData ( player, "presents", tonumber ( dsatz["Geschenke"] ) )
  807.     -- X-MAS --
  808. end
  809.  
  810.  
  811.    
  812. function datasave ( quitReason, reason )
  813.  
  814.     if clanMembers[source] then
  815.         clanMembers[source] = nil
  816.     end
  817.     if ticketPermitted[source] then
  818.         ticketPermitted[source] = nil
  819.     end
  820.     local pname = getPlayerName ( source )
  821.     removePlayerFromLoggedIn ( pname )
  822.     if vioGetElementData ( source, "loggedin" ) == 1 then
  823.         playerDisconnectGangMembers ( source )
  824.         pname = getPlayerName ( source )
  825.         local frak = vioGetElementData(source,"fraktion")
  826.         if fraktionMembers[frak] then
  827.             fraktionMembers[frak][source] = nil
  828.         end
  829.         adminsIngame[source] = nil
  830.         if vioGetElementData ( source, "shootingRanchGun" ) then
  831.         elseif quitReason and reason ~= "Ausgeloggt." then
  832.             if vioGetElementData ( source, "wanteds" ) >= 1 --[[and ( quitReason == "Quit" or quitReason == "Unknown" )]] and vioGetElementData ( source, "jailtime" ) == 0 and vioGetElementData ( source, "prison" ) == 0 then
  833.                 local x, y, z = getElementPosition ( source )
  834.                 local copShape = createColSphere ( x, y, z, 20 )
  835.                 local elementsInCopSphere = getElementsWithinColShape ( copShape, "player" )
  836.                 destroyElement ( copShape )
  837.                 for i=1, #elementsInCopSphere do
  838.                     local cPlayer = elementsInCopSphere[i]
  839.                     if ( isOnDuty ( cPlayer ) or isArmy ( cPlayer ) ) and cPlayer ~= source then
  840.                         local wanteds = vioGetElementData ( source, "wanteds" )
  841.                         vioSetElementData ( source, "wanteds", 0 )
  842.                         vioSetElementData ( source, "jailtime", wanteds * math.ceil(jailtimeperwanted*1.4) + vioGetElementData ( source, "jailtime" ) )
  843.                         wantedCost = 100*wanteds*(wanteds*.5)
  844.                         vioSetElementData ( source, "money", vioGetElementData ( source, "money" ) - wantedCost )
  845.                         if vioGetElementData ( source, "money" ) < 0 then
  846.                             vioSetElementData ( source, "money", 0 )
  847.                         end
  848.                         outputChatBox ( "Der Gesuchte "..getPlayerName ( source ).." ist offline gegangen - er wird beim nächsten Einloggen im Knast sein.", cPlayer, 0, 125, 0 )
  849.                         vioSetElementData ( cPlayer, "AnzahlEingeknastet", vioGetElementData ( cPlayer, "AnzahlEingeknastet" ) + 1 )
  850.                         vioSetElementData ( source, "AnzahlImKnast", vioGetElementData ( source, "AnzahlImKnast" ) + 1 )
  851.                         offlinemsg ( "Du bist für "..(wanteds * math.ceil(jailtimeperwanted*1.2)).." Minuten im Gefängnis (Offlineflucht?)", "Server", getPlayerName(source) )
  852.                         break
  853.                     end
  854.                 end
  855.             end
  856.             if shootingRanchGun[source] then
  857.                 takeWeapon ( source, shootingRanchGun[source] )
  858.             end
  859.             shootingRanchGun[source] = {}
  860.             local curWeaponsForSave = "|"
  861.             for i = 1, 12 do
  862.                 if i ~= 10 and i ~= 12 then
  863.                     local weapon = getPedWeapon ( source, i )
  864.                     local ammo = getPedTotalAmmo ( source, i )
  865.                     if weapon and ammo then
  866.                         if weapon > 0 and ammo > 0 then
  867.                             if #curWeaponsForSave <= 40 then
  868.                                 curWeaponsForSave = curWeaponsForSave..weapon..","..ammo.."|"
  869.                             end
  870.                         end
  871.                     end
  872.                 end
  873.             end
  874.             if #curWeaponsForSave > 1 then
  875.                 dbExec ( handler, "DELETE FROM logout WHERE UID = ?", playerUID[pname] )
  876.                 dbExec ( handler, "INSERT INTO logout (Position, Waffen, UID) VALUES (?,?,?)", 'false', curWeaponsForSave, playerUID[pname])
  877.             end
  878.         end
  879.         hangup ( source )
  880.         datasave_remote ( source )
  881.         if vioGetElementData ( source, "isInArea51Mission" ) then
  882.             removeArea51Bots ( pname )
  883.         end
  884.         local veh = getPedOccupiedVehicle ( source )
  885.         if veh then
  886.             if isElement ( veh ) then
  887.                 if getElementModel(veh) == 502 then
  888.                     destroyElement ( veh )
  889.                 end
  890.             end
  891.         end
  892.         killTimer ( _G[pname.."paydaytime"] )
  893.         clearInv ( source )
  894.         clearUserdata ( source )
  895.         clearBonus ( source )
  896.         clearAchiev ( source )
  897.         clearPackage ( source )
  898.         clearDataSettings ( source )
  899.     end
  900. end
  901. addEventHandler ("onPlayerQuit", getRootElement(), datasave )
  902.  
  903. function elementDataSettings ( player )
  904.  
  905.     local pname = getPlayerName ( player )
  906.     vioSetElementData ( player, "objectToPlace", false )
  907.     vioSetElementData ( player, "growing", false )
  908.     vioSetElementData ( player, "isInRace", false )
  909.     vioSetElementData ( player, "callswithpolice", false )
  910.     vioSetElementData ( player, "callswithmedic", false )
  911.     vioSetElementData ( player, "callswithmechaniker", false )
  912.     vioSetElementData ( player, "isLive", false )
  913.     vioSetElementData ( player, "isInArea51Mission", false )
  914.     vioSetElementData ( player, "armingBomb", false )
  915.     vioSetElementData ( player, "tied", true )
  916.     vioSetElementData ( player, "hasBomb", false )
  917.     vioSetElementData ( player, "wanzen", false )
  918.     ------------------
  919.    
  920.     local Weapon_Settings = dbPoll ( dbQuery ( handler, "SELECT ?? FROM ?? WHERE ??=?", "Spezial", "inventar", "UID", playerUID[pname] ), -1 )
  921.     local shads = {}
  922.    
  923.     if not Weapon_Settings or not Weapon_Settings[1] then
  924.         for i = 1, 6 do
  925.             shads[i] = 0
  926.         end
  927.     else
  928.         for i = 1, 6 do
  929.             shads[i] = tonumber ( gettok ( Weapon_Settings[1]["Spezial"], i, string.byte( '|' ) ) )
  930.         end
  931.     end
  932.    
  933.        
  934.     ----------------   
  935.     local ArmyPermissions = dbPoll ( dbQuery ( handler, "SELECT ?? FROM ?? WHERE ??=?", "ArmyPermissions", "userdata", "UID", playerUID[pname] ), -1 )
  936.     if ArmyPermissions and ArmyPermissions[1] then
  937.         ArmyPermissions = ArmyPermissions[1]["ArmyPermissions"]
  938.         for i = 1, 10 do
  939.             local int = tonumber ( gettok ( ArmyPermissions, i, string.byte( '|' ) ) )
  940.             if int then
  941.                 vioSetElementData ( player, "armyperm"..i, int )
  942.             else
  943.                 vioSetElementData ( player, "armyperm"..i, 0 )
  944.             end
  945.         end
  946.     else
  947.         for i = 1, 10 do
  948.             vioSetElementData ( player, "armyperm"..i, 0 )
  949.         end
  950.     end
  951. end
  952.  
  953. function saveArmyPermissions ( player )
  954.  
  955.     local pname = getPlayerName ( player )
  956.     local empty = ""
  957.     for i = 1, 10 do
  958.         empty = empty.."|"..vioGetElementData ( player, "armyperm"..i )
  959.     end
  960.     empty = empty.."|"
  961.     dbExec ( handler, "UPDATE ?? SET ??=? WHERE ??=?", "userdata", "ArmyPermissions", empty, "UID", playerUID[pname] )
  962. end
  963.  
  964.  
  965. function SaveCarData ( player )
  966.  
  967.     local pname = getPlayerName ( player )
  968.     dbExec ( handler, "UPDATE ?? SET ??=?, ??=?, ??=? WHERE ??=?", "userdata", "Geld", vioGetElementData ( player, "money" ), "CurrentCars", vioGetElementData ( player, "curcars" ), "MaximumCars", vioGetElementData ( player, "maxcars" ), "UID", playerUID[pname] )
  969. end
  970.  
  971. function datasave_remote ( player )
  972.    
  973.     local source = player
  974.     if tonumber ( vioGetElementData ( source, "loggedin" )) == 1 then
  975.         local pname = getPlayerName ( source ) 
  976.         local fields = "SET"
  977.         fields = fields.." Geld = '"..math.abs ( math.floor ( vioGetElementData ( source, "money" ) ) ).."'"
  978.         fields = fields..", Fraktion = '"..math.abs ( math.floor ( vioGetElementData ( source, "fraktion") ) ).."'"
  979.         fields = fields..", FraktionsRang = '"..math.floor ( vioGetElementData ( source, "rang" ) ).."'"
  980.         fields = fields..", Spielzeit = '"..math.floor ( vioGetElementData ( source, "playingtime" ) ).."'"
  981.         fields = fields..", Adminlevel = '"..math.floor ( vioGetElementData ( source, "adminlvl" ) ).."'"
  982.         fields = fields..", Hitglocke = '"..math.floor ( vioGetElementData ( source, "hitglocke" ) ).."'"
  983.         fields = fields..", CurrentCars = '"..math.floor ( vioGetElementData ( source, "curcars" ) ).."'"
  984.         fields = fields..", MaximumCars = '"..math.floor ( vioGetElementData ( source, "maxcars" ) ).."'"
  985.         fields = fields..", Knastzeit = '"..math.floor ( vioGetElementData ( source, "jailtime" ) ).."'"
  986.         fields = fields..", Prison = '"..math.floor ( vioGetElementData ( source, "prison" ) ).."'"
  987.         fields = fields..", Kaution = '"..math.floor ( vioGetElementData ( source, "bail" ) ).."'"
  988.         fields = fields..", Himmelszeit = '"..math.floor ( vioGetElementData ( source, "heaventime" ) ).."'"
  989.         fields = fields..", Hausschluessel = '"..math.floor ( vioGetElementData ( source, "housekey" ) ).."'"
  990.         fields = fields..", Bankgeld = '"..math.floor ( vioGetElementData ( source, "bankmoney" ) ).."'"
  991.         fields = fields..", Drogen = '"..math.floor ( vioGetElementData ( source, "drugs" ) ).."'"
  992.         fields = fields..", Skinid = '"..math.floor ( vioGetElementData ( source, "skinid" ) ).."'"
  993.         fields = fields..", Wanteds = '"..math.floor ( vioGetElementData ( source, "wanteds" ) ).."'"
  994.         fields = fields..", StvoPunkte = '"..math.floor ( vioGetElementData ( source, "stvo_punkte" ) ).."'"
  995.         fields = fields..", Boni = '"..math.floor ( vioGetElementData ( source, "boni" ) ).."'"
  996.         fields = fields..", PdayIncome = '"..math.floor ( vioGetElementData ( source, "pdayincome" ) ).."'"
  997.         fields = fields..", Warns = '"..math.floor ( vioGetElementData ( source, "warns" ) ).."'"
  998.         fields = fields..", Gunbox1 = '"..vioGetElementData ( source, "gunboxa" ).."'"
  999.         fields = fields..", Gunbox2 = '"..vioGetElementData ( source, "gunboxb" ).."'"
  1000.         fields = fields..", Gunbox3 = '"..vioGetElementData ( source, "gunboxc" ).."'"
  1001.         fields = fields..", Job = '"..vioGetElementData ( source, "job" ).."'"
  1002.         fields = fields..", Jobtime = '"..math.floor ( vioGetElementData ( source, "jobtime" ) ).."'"
  1003.         fields = fields..", Club = '"..vioGetElementData ( source, "club" ).."'"
  1004.         fields = fields..", FavRadio = '"..math.floor ( vioGetElementData ( source, "favchannel" ) ).."'"
  1005.         fields = fields..", Bonuspunkte = '"..math.floor ( vioGetElementData ( source, "bonuspoints" ) ).."'"
  1006.         local skill = tonumber ( vioGetElementData ( source, "truckerlvl" ) ) or 0
  1007.         fields = fields.." ,Coins = '"..vioGetElementData ( source, "coins" ).."'"
  1008.         fields = fields..", Truckerskill = '"..skill.."'"
  1009.         fields = fields..", farmerLVL = '"..vioGetElementData ( source, "farmerLVL" ).."'"
  1010.         fields = fields..", bauarbeiterLVL = '"..vioGetElementData ( source, "bauarbeiterLVL" ).."'"
  1011.         fields = fields..", AirportLevel = '"..math.floor ( vioGetElementData ( source, "airportlvl" ) ).."'"
  1012.         fields = fields..", Contract = '"..math.floor ( vioGetElementData ( source, "contract" ) ).."'"
  1013.         fields = fields..", SocialState = '".. vioGetElementData ( source, "socialState") .."'"
  1014.         fields = fields..", StreetCleanPoints = '"..math.floor ( vioGetElementData ( source, "streetCleanPoints" ) ).."'"
  1015.         local v1 = "|"..vioGetElementData ( source, "handyType" ).."|"
  1016.         local v2 = vioGetElementData ( source, "handyCosts" ).."|"
  1017.         local v3 = v1..v2
  1018.         fields = fields..", Handy = '"..v3.."'"
  1019.         dbExec ( handler, "UPDATE userdata "..fields.." WHERE UID=?", playerUID[pname] )
  1020.        
  1021.         saveAddictionsForPlayer ( source )
  1022.         achievsave(source)
  1023.         inventorysave(source)
  1024.         skillDataSave ( player )
  1025.         saveArmyPermissions ( player )
  1026.         saveStatisticsMySQL ( player )
  1027.         outputDebugString ("Daten für Spieler "..pname.." wurden gesichert!")
  1028.     end
  1029. end
  1030.  
  1031. function achievsave ( player )
  1032.  
  1033.     local pname = getPlayerName ( player )
  1034.     saveHorseShoesFound ( player, pname )
  1035.     dbExec ( handler, "UPDATE ?? SET ??=? WHERE ??=?", "achievments", "Waffenschieber", vioGetElementData ( player, "gunloads"), "UID", playerUID[pname] )
  1036.     savePlayingTimeForSleeplessAchiev ( player, pname )
  1037. end
  1038.  
  1039.  
  1040.  
  1041. function inventorysave ( player )
  1042.     local pname = getPlayerName ( player ) 
  1043.     dbExec ( handler, "UPDATE ?? SET ??=?, ??=?, ??=?, ??=?, ??=?, ??=?, ??=?, ??=?, ??=?, ??=?, ??=? WHERE ??=?", "inventar", "Blumensamen", vioGetElementData ( player, "flowerseeds" ), "Essensslot1", vioGetElementData ( player, "food1" ), "Essensslot2", vioGetElementData ( player, "food2" ), "Essensslot3", vioGetElementData ( player, "food3" ), "Zigaretten", vioGetElementData ( player, "zigaretten" ), "Materials", vioGetElementData ( player, "mats" ), "Benzinkanister", vioGetElementData ( player, "benzinkannister" ), "Objekt", vioGetElementData ( player, "object" ), "Chips", vioGetElementData ( player, "casinoChips" ), "Medikit", vioGetElementData ( player, "medikits" ), "Repairkit", vioGetElementData ( player, "repairkits" ), "UID", playerUID[pname] )
  1044. end
  1045.  
  1046. function casinoMoneySave ( player )
  1047.  
  1048.     if vioGetElementData ( player, "loggedin" ) == 1 then
  1049.         local name = getPlayerName ( player )
  1050.         local chips = math.abs ( math.floor ( vioGetElementData ( player, "casinoChips" ) ) )
  1051.         local money = math.floor ( vioGetElementData ( player, "money" ) )
  1052.         local bankMoney = math.floor ( vioGetElementData ( player, "bankmoney" ) )
  1053.         dbExec ( handler,"UPDATE userdata SET ??=?, ??=? WHERE UID=?", "Geld", money, "Bankgeld", bankMoney, playerUID[name] )
  1054.         dbExec ( handler, "UPDATE inventar SET Chips=? WHERE UID=?", chips, playerUID[name] )
  1055.     end
  1056. end
  1057.  
  1058.  
  1059.  
  1060. -- Info: Angabe von Last_Login in Tagen seit Jahresanfang, Angabe von Geschlecht in 1 u. 0 - 1 = Weiblich, 0 = männlich
  1061. -- Anreise in 1 u. 0, 0 = Schiff, 1 = Flugzeug
  1062. -- Scheine: 0 = nicht vorhanden, 1 = vorhanden
  1063.  
  1064. function logoutPlayer_func ( player, x, y, z, int, dim )
  1065.  
  1066.     local client = player
  1067.     if vioGetElementData ( client, "shootingRanchGun" ) then
  1068.        
  1069.     else
  1070.         local pname = getPlayerName ( client )
  1071.         local int = tonumber ( int )
  1072.         local dim = tonumber ( dim )
  1073.         local curWeaponsForSave = "|"
  1074.         for i = 1, 11 do
  1075.             if i ~= 10 then
  1076.                 local weapon = getPedWeapon ( client, i )
  1077.                 local ammo = getPedTotalAmmo ( client, i )
  1078.                 if weapon and ammo then
  1079.                     if weapon > 0 and ammo > 0 then
  1080.                         if #curWeaponsForSave <= 40 then
  1081.                             curWeaponsForSave = curWeaponsForSave..weapon..","..ammo.."|"
  1082.                         end
  1083.                     end
  1084.                 end
  1085.             end
  1086.         end
  1087.         pos = "|"..(math.floor(x*100)/100).."|"..(math.floor(y*100)/100).."|"..(math.floor(z*100)/100).."|"..int.."|"..dim.."|"
  1088.         if #curWeaponsForSave < 5 then
  1089.             curWeaponsForSave = ""
  1090.         end
  1091.         local result = dbExec ( handler,"INSERT INTO logout (Position, Waffen, UID) VALUES (?,?,?)", pos, curWeaponsForSave, playerUID[pname] )
  1092.         kickPlayer ( client, "Ausgeloggt." )
  1093.     end
  1094. end
  1095. addEvent ( "logoutPlayer", true )
  1096. addEventHandler ( "logoutPlayer", getRootElement(), logoutPlayer_func )
Advertisement
Add Comment
Please, Sign In to add comment