Advertisement
Guest User

Untitled

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