Advertisement
Guest User

d

a guest
Aug 3rd, 2017
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 51.47 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", 3000000 )
  212. vioSetElementData ( player, "points", 0 )
  213. vioSetElementData ( player, "packages", "90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" )
  214. local Spawnpos_X = -1969.730
  215. vioSetElementData ( player, "spawnpos_x", Spawnpos_X )
  216. local Spawnpos_Y = 116.0128
  217. vioSetElementData ( player, "spawnpos_y", Spawnpos_Y )
  218. local Spawnpos_Z = 28
  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. allPrivateCars[pname] = {}
  335.  
  336. local result = dbExec ( handler, "INSERT INTO userdata ( UID,Name,Skinid,Telefonnr) VALUES(?,?,?,?)", id, pname, Skinid, Telefonnr)
  337. if not result then
  338. outputDebugString ( "[register_func 8] Error executing the query" )
  339. else
  340. outputDebugString ("Daten für Spieler "..pname.." wurden angelegt!")
  341. end
  342. outputChatBox ( "Drücke F1, um das Hilfemenü zu öffnen!", player, 200, 200, 0 )
  343.  
  344. vioSetElementData ( player, "gameboy", 0 )
  345. loadAddictionsForPlayer ( player )
  346. spawnchange_func ( player, "", "noobspawn", "" )
  347. triggerJoinedPlayerTheTrams ( player )
  348. syncInvulnerablePedsWithPlayer ( player )
  349. playerLoginGangMembers ( player )
  350. spawnPlayer ( player, Spawnpos_X, Spawnpos_Y, Spawnpos_Z+5000, Spawnrot_X, Skinid, SpawnInterior, 0 )
  351. setElementFrozen ( player, true )
  352. toggleAllControls ( player, false )
  353. triggerClientEvent ( player, "starttutorial", player, Skinid )
  354. setPlayerHudComponentVisible ( player, "all", false )
  355. insertPlayerIntoLoggedIn ( pname, getPlayerIP(player), getPlayerSerial(player) )
  356. end
  357. end
  358. end
  359. addEvent ( "register", true )
  360. addEventHandler ( "register", getRootElement(), register_func)
  361.  
  362.  
  363. addEvent ( "tutorialended", true )
  364. addEventHandler ( "tutorialended", root, function ( )
  365. setElementPosition ( client, -2000.2779541016, 196.17945861816, 27.577531051636 )
  366. setCameraTarget ( client, client )
  367. setElementFrozen ( client, false )
  368. toggleAllControls ( client, true )
  369. end )
  370.  
  371.  
  372. addEvent ( "setPlayerTutorialMoney", true )
  373. addEventHandler ( "setPlayerTutorialMoney", root, function ( )
  374. vioSetElementData ( client, "money", vioGetElementData ( client, "money" ) + 10000 )
  375. end )
  376.  
  377.  
  378. 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}
  379. 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 }
  380.  
  381.  
  382. function getRandomRegisterSkin ( player, sex )
  383. local testped = createPed ( 0, 9999, 9999, 9999 )
  384. if sex == 1 then
  385. local rnd = math.random ( 1, #femaleSkins )
  386. if setElementModel ( testped, femaleSkins[rnd] ) then
  387. destroyElement ( testped )
  388. return femaleSkins[rnd]
  389. else
  390. destroyElement ( testped )
  391. return getRandomRegisterSkin ( player, sex )
  392. end
  393. else
  394. local rnd = math.random ( 1, #maleSkins )
  395. if setElementModel ( testped, maleSkins[rnd] ) then
  396. destroyElement ( testped )
  397. return maleSkins[rnd]
  398. else
  399. destroyElement ( testped )
  400. return getRandomRegisterSkin ( player, sex )
  401. end
  402. end
  403. end
  404.  
  405.  
  406. function login_func ( player, passwort )
  407.  
  408. if player == client then
  409. if vioGetElementData ( player, "loggedin" ) == 0 then
  410. local pname = getPlayerName ( player )
  411. local passwort = passwort
  412.  
  413. local pwresult = dbPoll ( dbQuery ( handler, "SELECT ?? FROM ?? WHERE ??=?", "Passwort", "players", "UID", playerUID[pname] ), -1 )
  414. if pwresult and pwresult[1] then
  415. pwresult = pwresult[1]["Passwort"]
  416. if pwresult == hash ( "sha512", passwort ) then
  417.  
  418. setPlayerLoggedIn ( pname )
  419.  
  420. toggleAllControls ( player, true )
  421.  
  422. vioSetElementData ( player, "loggedin", 1 )
  423. vioSetElementData ( player, "nodmzone", 0 )
  424.  
  425. local logtime = getRealTime()
  426. local year = logtime.year + 1900
  427. local month = logtime.month + 1
  428. local day = logtime.monthday
  429. local hour = logtime.hour
  430. local minute = logtime.minute
  431.  
  432. local lastLoginInt = getSecTime ( 0 )
  433. local lastlogin = tostring(day.."."..month.."."..year..", "..hour..":"..minute)
  434.  
  435. local result = dbPoll ( dbQuery ( handler, "SELECT * from userdata WHERE UID = ?", playerUID[pname] ), -1 )
  436. if result then
  437. if result[1] then
  438. local dsatz = result[1]
  439. local money = tonumber ( dsatz["Geld"] )
  440. vioSetElementData ( player, "money", money )
  441. local fraktion = tonumber ( dsatz["Fraktion"] )
  442. vioSetElementData ( player, "fraktion", fraktion )
  443. if fraktion > 0 then
  444. fraktionMembers[fraktion][player] = fraktion
  445. bindKey ( player, "y", "down", "chatbox", "t" )
  446. if fraktion ~= 10 and fraktion ~= 11 then
  447. triggerClientEvent ( player, "syncPlayerList", player, fraktionMemberList[fraktion], fraktionMemberListInvite[fraktion] )
  448. else
  449. triggerClientEvent ( player, "syncPlayerList", player, fraktionMemberList[10], fraktionMemberListInvite[10] )
  450. end
  451. end
  452. local rang = tonumber ( dsatz["FraktionsRang"] )
  453. vioSetElementData ( player, "rang", rang )
  454.  
  455. local admnlvl = tonumber ( dsatz["Adminlevel"] )
  456. vioSetElementData ( player, "adminlvl", admnlvl )
  457. if admnlvl >= 1 then
  458. adminsIngame[player] = admnlvl
  459. end
  460. if admnlvl == 1 then
  461. donatorMute[player] = {}
  462. end
  463.  
  464. vioSetElementData ( player, "spawnpos_x", tonumber ( dsatz["Spawnpos_X"] ) )
  465. vioSetElementData ( player, "spawnpos_y", tonumber ( dsatz["Spawnpos_Y"] ) )
  466. vioSetElementData ( player, "spawnpos_z", tonumber ( dsatz["Spawnpos_Z"] ) )
  467. vioSetElementData ( player, "spawnrot_x", tonumber ( dsatz["Spawnrot_X"] ) )
  468. vioSetElementData ( player, "spawnint", tonumber ( dsatz["SpawnInterior"] ) )
  469. vioSetElementData ( player, "spawndim", tonumber ( dsatz["SpawnDimension"] ) )
  470. vioSetElementData ( player, "playingtime", tonumber ( dsatz["Spielzeit"] ) )
  471. vioSetElementData ( player, "curcars", tonumber ( dsatz["CurrentCars"] ) )
  472. local maximumcars = tonumber ( dsatz["MaximumCars"] )
  473. vioSetElementData ( player, "maxcars",maximumcars )
  474. local curcars = 0
  475. local offerOnCar = false
  476. local vehresult = dbPoll ( dbQuery ( handler, "SELECT ??, ?? FROM ?? WHERE ??=?", "Special", "Slot", "vehicles", "UID", playerUID[pname] ), -1 )
  477. for i=1, maximumcars do
  478. vioSetElementData ( player, "carslot"..i, 0 )
  479. end
  480. if vehresult and vehresult[1] then
  481. for i = 1, #vehresult do
  482. local id = tonumber ( vehresult[i]["Slot"] )
  483. local carvalue = tonumber ( vehresult[i]["Special"] )
  484. if carvalue == 2 then
  485. vioSetElementData ( player, "yachtImBesitz", true )
  486. end
  487. if not carvalue then
  488. --if MySQL_DatasetExist("buyit", "Hoechstbietender LIKE '"..pname.."' AND Typ LIKE 'Veh'") then
  489. -- carvalue = 3
  490. -- offerOnCar = true
  491. --else
  492. carvalue = 0
  493. --end
  494. else
  495. if carvalue == 2 then
  496. carvalue = 2
  497. else
  498. carvalue = 1
  499. end
  500. curcars = curcars + 1
  501. end
  502. vioSetElementData ( player, "carslot"..id, carvalue )
  503. end
  504. end
  505. vioSetElementData ( player, "curcars", curcars )
  506.  
  507. vioSetElementData ( player, "deaths", tonumber ( dsatz["Tode"] ) )
  508. vioSetElementData ( player, "kills", tonumber ( dsatz["Kills"] ) )
  509. vioSetElementData ( player, "gangwarlosses", tonumber ( dsatz["GangwarVerloren"] ) )
  510. vioSetElementData ( player, "gangwarwins", tonumber ( dsatz["GangwarGewonnen"] ) )
  511. vioSetElementData ( player, "jailtime", tonumber ( dsatz["Knastzeit"] ) )
  512. vioSetElementData ( player, "prison", tonumber ( dsatz["Prison"] ) )
  513. vioSetElementData ( player, "bail", tonumber ( dsatz["Kaution"] ) )
  514. vioSetElementData ( player, "heaventime", tonumber ( dsatz["Himmelszeit"] ) )
  515.  
  516. local resulthouse = dbPoll ( dbQuery ( handler, "SELECT ?? FROM ?? WHERE ??=?", "ID", "houses", "UID", playerUID[pname] ), -1 )
  517. local Hausschluessel = resulthouse[1] and resulthouse[1]["ID"] or false
  518. local key = tonumber ( dsatz["Hausschluessel"] )
  519. if Hausschluessel then
  520. vioSetElementData ( player, "housekey", tonumber ( Hausschluessel ) )
  521. elseif key <= 0 then
  522. vioSetElementData ( player, "housekey", key )
  523. else
  524. vioSetElementData ( player, "housekey", 0 )
  525. end
  526.  
  527. vioSetElementData ( player, "hitglocke", tonumber ( dsatz["Hitglocke"] ) )
  528. vioSetElementData ( player, "bizkey", tonumber ( dsatz["Bizschluessel"] ) )
  529. vioSetElementData ( player, "bankmoney", tonumber ( dsatz["Bankgeld"] ) )
  530. vioSetElementData ( player, "drugs", tonumber ( dsatz["Drogen"] ) )
  531. vioSetElementData ( player, "skinid", tonumber ( dsatz["Skinid"] ) )
  532. vioSetElementData ( player, "carlicense", tonumber ( dsatz["Autofuehrerschein"] ) )
  533. vioSetElementData ( player, "bikelicense", tonumber ( dsatz["Motorradtfuehrerschein"] ) )
  534. vioSetElementData ( player, "lkwlicense", tonumber ( dsatz["LKWfuehrerschein"] ) )
  535. vioSetElementData ( player, "helilicense", tonumber ( dsatz["Helikopterfuehrerschein"] ) )
  536. vioSetElementData ( player, "planelicensea", tonumber ( dsatz["FlugscheinKlasseA"] ) )
  537. vioSetElementData ( player, "planelicenseb", tonumber ( dsatz["FlugscheinKlasseB"] ) )
  538. vioSetElementData ( player, "motorbootlicense", tonumber ( dsatz["Motorbootschein"] ) )
  539. vioSetElementData ( player, "segellicense", tonumber ( dsatz["Segelschein"] ) )
  540. vioSetElementData ( player, "fishinglicense", tonumber ( dsatz["Angelschein"] ) )
  541. vioSetElementData ( player, "wanteds", tonumber ( dsatz["Wanteds"] ) )
  542. vioSetElementData ( player, "stvo_punkte", tonumber ( dsatz["StvoPunkte"] ) )
  543. vioSetElementData ( player, "gunlicense", tonumber ( dsatz["Waffenschein"] ) )
  544. vioSetElementData ( player, "perso", tonumber ( dsatz["Perso"] ) )
  545. vioSetElementData ( player, "boni", tonumber ( dsatz["Boni"] ) )
  546. vioSetElementData ( player, "pdayincome", tonumber ( dsatz["PdayIncome"] ) )
  547. vioSetElementData ( player, "telenr", tonumber ( dsatz["Telefonnr"] ) )
  548. vioSetElementData ( player, "warns", getPlayerWarnCount ( pname ) )
  549. vioSetElementData ( player, "gunboxa", dsatz["Gunbox1"] )
  550. vioSetElementData ( player, "gunboxb", dsatz["Gunbox2"] )
  551. vioSetElementData ( player, "gunboxc", dsatz["Gunbox3"] )
  552. vioSetElementData ( player, "job", dsatz["Job"] )
  553. vioSetElementData ( player, "jobtime", dsatz["Jobtime"] )
  554. vioSetElementData ( player, "club", dsatz["Club"] )
  555. vioSetElementData ( player, "favchannel", tonumber ( dsatz["FavRadio"] ) )
  556. vioSetElementData ( player, "bonuspoints", tonumber ( dsatz["Bonuspunkte"] ) )
  557. local skill = tonumber ( dsatz["Truckerskill"] )
  558. if not skill then
  559. skill = 0
  560. end
  561. local ArmyPermissions = dsatz["ArmyPermissions"]
  562. for i = 1, 10 do
  563. vioSetElementData ( player, "armyperm"..i, tonumber ( gettok ( ArmyPermissions, i, string.byte( '|' ) ) ) )
  564. end
  565. vioSetElementData ( player, "truckerlvl", skill )
  566. vioSetElementData ( player, "coins", tonumber ( dsatz["Coins"] ) )
  567. vioSetElementData ( player, "airportlvl", tonumber ( dsatz["AirportLevel"] ) )
  568. vioSetElementData ( player, "farmerLVL", tonumber ( dsatz["farmerLVL"] ) )
  569. vioSetElementData ( player, "bauarbeiterLVL", tonumber ( dsatz["bauarbeiterLVL"] ) )
  570. vioSetElementData ( player, "contract", tonumber ( dsatz["Contract"] ) )
  571. vioSetElementData ( player, "socialState", dsatz["SocialState"] )
  572. if tonumber ( dsatz["SocialState"] ) then
  573. if tonumber ( dsatz["SocialState"] ) == 0 then
  574. vioSetElementData ( player, "socialState", "Flüchtling" )
  575. end
  576. end
  577. vioSetElementData ( player, "streetCleanPoints", tonumber ( dsatz["StreetCleanPoints"] ) )
  578.  
  579. local handyString = dsatz["Handy"]
  580. local v1, v2
  581. v1 = tonumber ( gettok ( handyString, 1, string.byte ( '|' ) ) )
  582. v2 = tonumber ( gettok ( handyString, 2, string.byte ( '|' ) ) )
  583. vioSetElementData ( player, "handyType", v1 )
  584. vioSetElementData ( player, "handyCosts", v2 )
  585.  
  586. loadAddictionsForPlayer ( player )
  587.  
  588. --isPremium ( player )
  589.  
  590. vioSetElementData ( player, "housex", 0 )
  591. vioSetElementData ( player, "housey", 0 )
  592. vioSetElementData ( player, "housez", 0 )
  593. vioSetElementData ( player, "house", "none" )
  594. vioSetElementData ( player, "curplayingtime", 0 )
  595. vioSetElementData ( player, "handystate", "on" )
  596. vioSetElementData ( player, "call", false )
  597.  
  598. packageLoad ( player )
  599. achievload ( player )
  600. inventoryload ( player )
  601. elementDataSettings ( player )
  602. bonusLoad ( player )
  603. setPremiumData ( player )
  604. skillDataLoad ( player )
  605. createPlayerAFK ( player )
  606. loadPlayerStatisticsMySQL ( player )
  607. setMaximumCarsForPlayer ( player )
  608.  
  609. _G[pname.."paydaytime"] = setTimer ( playingtime, 60000, 0, player )
  610.  
  611. RemoteSpawnPlayer ( player )
  612. setElementFrozen ( player, true )
  613. setTimer ( setElementFrozen, 3000, 1, player, false )
  614. vioSetElementData ( player, "muted", 0 )
  615. triggerClientEvent ( player, "DisableLoginWindow", getRootElement() )
  616. triggerClientEvent ( player, "infobox_start", getRootElement(), "Du hast dich\nerfolgreich eingeloggt!\nDrücke F1, um das\nHilfemenü zu\nöffnen!", 5000, 0, 255, 0 )
  617. outputDebugString ("Spieler "..pname.." wurde eingeloggt, IP: "..getPlayerIP(player))
  618. vioSetElementData ( player, "loggedin", 1 )
  619. triggerJoinedPlayerTheTrams ( player )
  620.  
  621. if vioGetElementData ( player, "stvo_punkte" ) >= 15 then -- SearchSTVO
  622. vioSetElementData ( player, "carlicense", 0 )
  623. vioSetElementData ( player, "stvo_punkte", 0 )
  624. dbExec ( handler, "UPDATE ?? SET ??=?, ??=?, ??=? WHERE ??=?", "userdata", "Autofuehrerschein", 0, "UID", playerUID[pname] )
  625. outputChatBox ( "Wegen deines schlechten Fahrverhaltens wurde dir dein Führerschein abgenommen!", player, 125, 0, 0 )
  626. end
  627.  
  628. vioSetElementData ( player, "object", tonumber ( dbPoll ( dbQuery ( handler, "SELECT ?? FROM ?? WHERE ??=?", "Objekt", "inventar", "UID", playerUID[pname] ), -1 )[1]["Objekt"] ) )
  629.  
  630. checkmsgs ( player )
  631.  
  632. blacklistLogin ( pname )
  633.  
  634. if isElement ( houses["pickup"][getPlayerName(player)] ) then
  635. local x, y, z = getElementPosition (houses["pickup"][getPlayerName(player)])
  636. createBlip ( x, y, z, 31, 2, 255, 0, 0, 255, 0, 99999, player )
  637. end
  638.  
  639. local serial = getPlayerSerial ( player )
  640.  
  641. dbExec ( handler, "UPDATE ?? SET ??=?, ??=?, ??=? WHERE ??=?", "players", "Last_login", lastlogin, "LastLogin", lastLoginInt, "Serial", serial, "UID", playerUID[pname] )
  642.  
  643. outputChatBox ( "#666666═════════ #0000ccSkyLife-RL Info #666666═════════", player, 56, 56, 56, true )
  644. outputChatBox ( "#666666╔ #ffffffWillkommen auf SkyLife-Reallife.", player, 255, 215, 0, true )
  645. outputChatBox ( "#666666╠ #ffffffBei Fragen und Problemen kannst du /report benutzen.", player, 255, 215, 0, true )
  646. outputChatBox ( "#666666╠ #ffffffUm einer Fraktion beizutreten, melde dich im Teamspeak³.", player, 255, 215, 0, true )
  647. outputChatBox ( "#666666╠ #ffffffTeamspeak: 185.188.7.102", player, 255, 215, 0, true )
  648. outputChatBox ( "#666666╚ #ffffffForum: m.V", player, 255, 215, 0, true )
  649. outputChatBox ( "#666666═══════════════════════════════", player, 56, 56, 56, true )
  650.  
  651. local resultlogout = dbPoll ( dbQuery ( handler, "SELECT ??, ?? FROM ?? WHERE ??=?", "Position", "Waffen", "logout", "UID", playerUID[pname] ), -1 )
  652. if resultlogout and resultlogout[1] then
  653. local position = resultlogout[1]["Position"]
  654. if position then
  655. weapons = resultlogout[1]["Waffen"]
  656. dbExec ( handler, "DELETE FROM ?? WHERE ??=?", "logout", "UID", playerUID[pname] )
  657. for i = 1, 12 do
  658. local wstring = gettok ( weapons, i, string.byte( '|' ) )
  659. if wstring then
  660. if wstring then
  661. if #wstring >= 3 then
  662. local weapon = tonumber ( gettok ( wstring, 1, string.byte( ',' ) ) )
  663. local ammo = tonumber ( gettok ( wstring, 2, string.byte( ',' ) ) )
  664. giveWeapon ( player, weapon, ammo, true )
  665. end
  666. end
  667. end
  668. end
  669. if position ~= "false" then
  670. local x = tonumber ( gettok ( position, 1, string.byte( '|' ) ) )
  671. local y = tonumber ( gettok ( position, 2, string.byte( '|' ) ) )
  672. local z = tonumber ( gettok ( position, 3, string.byte( '|' ) ) )
  673. local int = tonumber ( gettok ( position, 4, string.byte( '|' ) ) )
  674. local dim = tonumber ( gettok ( position, 5, string.byte( '|' ) ) )
  675. setTimer ( setElementInterior, 1000, 1, player, int )
  676. setTimer ( setElementDimension, 1000, 1, player, dim )
  677. setTimer ( setElementPosition, 1000, 1, player, x, y, z )
  678. end
  679. end
  680. end
  681. getMailsForClient_func ( pname )
  682. playerLoginGangMembers ( player )
  683. syncInvulnerablePedsWithPlayer ( player )
  684. insertPlayerIntoLoggedIn ( pname, getPlayerIP(player), getPlayerSerial(player) )
  685. else
  686. triggerClientEvent ( player, "infobox_start", getRootElement(), "Der Spieler\nexistiert nicht!", 5000, 255, 0, 0 )
  687. end
  688. else
  689. outputDebugString ( "Einloggen klappt nicht!" )
  690. end
  691. else
  692. triggerClientEvent ( player, "infobox_start", getRootElement(), "Ungueltiges Passwort -\nüberpruefe\ndeine Eingabe\noder melde dich\nim Forum.", 5000, 255, 0, 0 )
  693. end
  694. else
  695. triggerClientEvent ( player, "infobox_start", getRootElement(), "Der Spieler\nexistiert nicht!", 5000, 255, 0, 0 )
  696. end
  697. if player and isElement ( player ) then
  698. bindKey ( player, "r", "down", reload )
  699. end
  700. else
  701. triggerClientEvent ( player, "infobox_start", getRootElement(), "Der Spieler\nist einloggt!", 5000, 255, 0, 0 )
  702. end
  703. end
  704. end
  705. addEvent ( "einloggen", true )
  706. addEventHandler ( "einloggen", getRootElement(), login_func )
  707.  
  708.  
  709. function gameBeginGuiShow_func ( player )
  710.  
  711. if player == client then
  712. vioSetElementData ( player, "isInTut", false )
  713. triggerClientEvent ( player, "showBeginGui", getRootElement() )
  714. showCursor ( player, true )
  715. setElementClicked ( player, true )
  716. toggleAllControls ( player, true )
  717. setElementPosition ( player, -1421.3, -287.2, 13.8 )
  718. setElementInterior ( player, 0 )
  719. end
  720. end
  721. addEvent ( "gameBeginGuiShow", true )
  722. addEventHandler ( "gameBeginGuiShow", getRootElement(), gameBeginGuiShow_func)
  723.  
  724.  
  725. function achievload ( player )
  726.  
  727. local pname = getPlayerName ( player )
  728. local result = dbPoll ( dbQuery ( handler, "SELECT * from achievments WHERE UID = ?", playerUID[pname] ), -1 )
  729. local dsatz = nil
  730. if result then
  731. if result[1] then
  732. dsatz = result[1]
  733. else
  734. outputDebugString ( "Spieler in Achievment-Datenbank nicht gefunden!" )
  735. return false
  736. end
  737. end
  738. vioSetElementData ( player, "schlaflosinsa", dsatz["SchlaflosInSA"] )
  739. vioSetElementData ( player, "gunloads", dsatz["Waffenschieber"] )
  740. vioSetElementData ( player, "angler_achiev", dsatz["Angler"] )
  741. vioSetElementData ( player, "licenses_achiev", dsatz["Lizensen"] )
  742. vioSetElementData ( player, "carwahn_achiev", dsatz["Fahrzeugwahn"] )
  743. vioSetElementData ( player, "collectr_achiev", dsatz["DerSammler"] )
  744. vioSetElementData ( player, "rl_achiev", dsatz["ReallifeWTF"] )
  745. vioSetElementData ( player, "own_foots", dsatz["EigeneFuesse"] )
  746. vioSetElementData ( player, "kingofthehill_achiev", dsatz["KingOfTheHill"] )
  747. vioSetElementData ( player, "thetruthisoutthere_achiev", dsatz["TheTruthIsOutThere"] )
  748. vioSetElementData ( player, "silentassasin_achiev", dsatz["SilentAssasin"] )
  749. vioSetElementData ( player, "highwaytohell_achiev", dsatz["HighwayToHell"] )
  750.  
  751. vioSetElementData ( player, "revolverheld_achiev", tonumber ( dsatz["Revolverheld"] ) )
  752. vioSetElementData ( player, "chickendinner_achiev", tonumber ( dsatz["ChickenDinner"] ) )
  753. vioSetElementData ( player, "nichtsgehtmehr_achiev", tonumber ( dsatz["NichtGehtMehr"] ) )
  754. vioSetElementData ( player, "highscore_achiev", tonumber ( dsatz["highscore"] ) == 1 )
  755.  
  756. local dstring = dsatz["LookoutsA"]
  757. triggerClientEvent ( player, "hideLookoutMarkers", player, dstring )
  758. local count = 0
  759. for i = 1, 10 do
  760. if tonumber ( gettok ( dstring, i, string.byte ( '|' ) ) ) == 1 then
  761. count = count + 1
  762. end
  763. end
  764. vioSetElementData ( player, "viewpoints", count )
  765. loadHorseShoesFound ( player, pname )
  766. loadPlayingTimeForSleeplessAchiev ( player, pname )
  767. end
  768.  
  769.  
  770. function inventoryload ( player )
  771.  
  772. local pname = getPlayerName ( player )
  773. vioSetElementData ( player, "playerid", playerUID[pname] )
  774.  
  775. local dsatz
  776. local result = dbPoll ( dbQuery ( handler, "SELECT * from inventar WHERE UID = ?", playerUID[pname] ), -1 )
  777. if not result or not result[1] then
  778. dbExec ( handler, "INSERT INTO inventar (UID) VALUES (?)", playerUID[pname] )
  779. result = dbPoll ( dbQuery ( handler, "SELECT * from inventar WHERE UID = ?", playerUID[pname] ), -1 )
  780. end
  781. dsatz = result[1]
  782. if dsatz["Wuerfel"] then
  783. vioSetElementData ( player, "dice", tonumber ( dsatz["Wuerfel"] ) )
  784. else
  785. vioSetElementData ( player, "dice", 0 )
  786. end
  787. vioSetElementData ( player, "flowerseeds", tonumber ( dsatz["Blumensamen"] ) )
  788. vioSetElementData ( player, "food1", tonumber ( dsatz["Essensslot1"] ) )
  789. vioSetElementData ( player, "food2", tonumber ( dsatz["Essensslot2"] ) )
  790. vioSetElementData ( player, "food3", tonumber ( dsatz["Essensslot3"] ) )
  791. vioSetElementData ( player, "zigaretten", tonumber ( dsatz["Zigaretten"] ) )
  792. vioSetElementData ( player, "mats", tonumber ( dsatz["Materials"] ) )
  793. vioSetElementData ( player, "benzinkannister", tonumber ( dsatz["Benzinkanister"] ) )
  794. vioSetElementData ( player, "fruitNotebook", tonumber ( dsatz["FruitNotebook"] ) )
  795. vioSetElementData ( player, "casinoChips", tonumber ( dsatz["Chips"] ) )
  796. vioSetElementData ( player, "gameboy", tonumber ( dsatz["Gameboy"] ) )
  797. vioSetElementData ( player, "medikits", tonumber ( dsatz["Medikit"] ) )
  798. vioSetElementData ( player, "repairkits", tonumber ( dsatz["Repairkit"] ) )
  799. -- X-MAS --
  800. -- vioSetElementData ( player, "presents", tonumber ( dsatz["Geschenke"] ) )
  801. -- X-MAS --
  802. end
  803.  
  804.  
  805.  
  806. function datasave ( quitReason, reason )
  807.  
  808. if clanMembers[source] then
  809. clanMembers[source] = nil
  810. end
  811. if ticketPermitted[source] then
  812. ticketPermitted[source] = nil
  813. end
  814. local pname = getPlayerName ( source )
  815. if allPrivateCars[pname] then
  816. for i, v in pairs ( allPrivateCars[pname] ) do
  817. if isElement ( v ) then
  818. destroyElement ( v )
  819. end
  820. end
  821. allPrivateCars[pname] = nil
  822. end
  823. removePlayerFromLoggedIn ( pname )
  824. if vioGetElementData ( source, "loggedin" ) == 1 then
  825. playerDisconnectGangMembers ( source )
  826. pname = getPlayerName ( source )
  827. local frak = vioGetElementData(source,"fraktion")
  828. if fraktionMembers[frak] then
  829. fraktionMembers[frak][source] = nil
  830. end
  831. adminsIngame[source] = nil
  832. if vioGetElementData ( source, "shootingRanchGun" ) then
  833. elseif quitReason and reason ~= "Ausgeloggt." then
  834. if vioGetElementData ( source, "wanteds" ) >= 1 --[[and ( quitReason == "Quit" or quitReason == "Unknown" )]] and vioGetElementData ( source, "jailtime" ) == 0 and vioGetElementData ( source, "prison" ) == 0 then
  835. local x, y, z = getElementPosition ( source )
  836. local copShape = createColSphere ( x, y, z, 20 )
  837. local elementsInCopSphere = getElementsWithinColShape ( copShape, "player" )
  838. destroyElement ( copShape )
  839. for i=1, #elementsInCopSphere do
  840. local cPlayer = elementsInCopSphere[i]
  841. if ( isOnDuty ( cPlayer ) or isArmy ( cPlayer ) ) and cPlayer ~= source then
  842. local wanteds = vioGetElementData ( source, "wanteds" )
  843. vioSetElementData ( source, "wanteds", 0 )
  844. vioSetElementData ( source, "jailtime", wanteds * math.ceil(jailtimeperwanted*1.4) + vioGetElementData ( source, "jailtime" ) )
  845. wantedCost = 100*wanteds*(wanteds*.5)
  846. vioSetElementData ( source, "money", vioGetElementData ( source, "money" ) - wantedCost )
  847. if vioGetElementData ( source, "money" ) < 0 then
  848. vioSetElementData ( source, "money", 0 )
  849. end
  850. outputChatBox ( "Der Gesuchte "..getPlayerName ( source ).." ist offline gegangen - er wird beim nächsten Einloggen im Knast sein.", cPlayer, 0, 125, 0 )
  851. vioSetElementData ( cPlayer, "AnzahlEingeknastet", vioGetElementData ( cPlayer, "AnzahlEingeknastet" ) + 1 )
  852. vioSetElementData ( source, "AnzahlImKnast", vioGetElementData ( source, "AnzahlImKnast" ) + 1 )
  853. offlinemsg ( "Du bist für "..(wanteds * math.ceil(jailtimeperwanted*1.2)).." Minuten im Gefängnis (Offlineflucht?)", "Server", getPlayerName(source) )
  854. break
  855. end
  856. end
  857. end
  858. if shootingRanchGun[source] then
  859. takeWeapon ( source, shootingRanchGun[source] )
  860. end
  861. shootingRanchGun[source] = {}
  862. local curWeaponsForSave = "|"
  863. for i = 1, 12 do
  864. if i ~= 10 and i ~= 12 then
  865. local weapon = getPedWeapon ( source, i )
  866. local ammo = getPedTotalAmmo ( source, i )
  867. if weapon and ammo then
  868. if weapon > 0 and ammo > 0 then
  869. if #curWeaponsForSave <= 40 then
  870. curWeaponsForSave = curWeaponsForSave..weapon..","..ammo.."|"
  871. end
  872. end
  873. end
  874. end
  875. end
  876. if #curWeaponsForSave > 1 then
  877. dbExec ( handler, "DELETE FROM logout WHERE UID = ?", playerUID[pname] )
  878. dbExec ( handler, "INSERT INTO logout (Position, Waffen, UID) VALUES (?,?,?)", 'false', curWeaponsForSave, playerUID[pname])
  879. end
  880. end
  881. hangup ( source )
  882. datasave_remote ( source )
  883. if vioGetElementData ( source, "isInArea51Mission" ) then
  884. removeArea51Bots ( pname )
  885. end
  886. local veh = getPedOccupiedVehicle ( source )
  887. if veh then
  888. if isElement ( veh ) then
  889. if getElementModel(veh) == 502 then
  890. destroyElement ( veh )
  891. end
  892. end
  893. end
  894. killTimer ( _G[pname.."paydaytime"] )
  895. clearInv ( source )
  896. clearUserdata ( source )
  897. clearBonus ( source )
  898. clearAchiev ( source )
  899. clearPackage ( source )
  900. clearDataSettings ( source )
  901. end
  902. end
  903. addEventHandler ("onPlayerQuit", getRootElement(), datasave )
  904.  
  905. function elementDataSettings ( player )
  906.  
  907. local pname = getPlayerName ( player )
  908. vioSetElementData ( player, "objectToPlace", false )
  909. vioSetElementData ( player, "growing", false )
  910. vioSetElementData ( player, "isInRace", false )
  911. vioSetElementData ( player, "callswithpolice", false )
  912. vioSetElementData ( player, "callswithmedic", false )
  913. vioSetElementData ( player, "callswithmechaniker", false )
  914. vioSetElementData ( player, "isLive", false )
  915. vioSetElementData ( player, "isInArea51Mission", false )
  916. vioSetElementData ( player, "armingBomb", false )
  917. vioSetElementData ( player, "tied", true )
  918. vioSetElementData ( player, "hasBomb", false )
  919. vioSetElementData ( player, "wanzen", false )
  920. ------------------
  921.  
  922. local Weapon_Settings = dbPoll ( dbQuery ( handler, "SELECT ?? FROM ?? WHERE ??=?", "Spezial", "inventar", "UID", playerUID[pname] ), -1 )
  923. local shads = {}
  924.  
  925. if not Weapon_Settings or not Weapon_Settings[1] then
  926. for i = 1, 6 do
  927. shads[i] = 0
  928. end
  929. else
  930. for i = 1, 6 do
  931. shads[i] = tonumber ( gettok ( Weapon_Settings[1]["Spezial"], i, string.byte( '|' ) ) )
  932. end
  933. end
  934.  
  935.  
  936. ----------------
  937. local ArmyPermissions = dbPoll ( dbQuery ( handler, "SELECT ?? FROM ?? WHERE ??=?", "ArmyPermissions", "userdata", "UID", playerUID[pname] ), -1 )
  938. if ArmyPermissions and ArmyPermissions[1] then
  939. ArmyPermissions = ArmyPermissions[1]["ArmyPermissions"]
  940. for i = 1, 10 do
  941. local int = tonumber ( gettok ( ArmyPermissions, i, string.byte( '|' ) ) )
  942. if int then
  943. vioSetElementData ( player, "armyperm"..i, int )
  944. else
  945. vioSetElementData ( player, "armyperm"..i, 0 )
  946. end
  947. end
  948. else
  949. for i = 1, 10 do
  950. vioSetElementData ( player, "armyperm"..i, 0 )
  951. end
  952. end
  953. end
  954.  
  955. function saveArmyPermissions ( player )
  956.  
  957. local pname = getPlayerName ( player )
  958. local empty = ""
  959. for i = 1, 10 do
  960. empty = empty.."|"..vioGetElementData ( player, "armyperm"..i )
  961. end
  962. empty = empty.."|"
  963. dbExec ( handler, "UPDATE ?? SET ??=? WHERE ??=?", "userdata", "ArmyPermissions", empty, "UID", playerUID[pname] )
  964. end
  965.  
  966.  
  967. function SaveCarData ( player )
  968.  
  969. local pname = getPlayerName ( player )
  970. dbExec ( handler, "UPDATE ?? SET ??=?, ??=?, ??=? WHERE ??=?", "userdata", "Geld", vioGetElementData ( player, "money" ), "CurrentCars", vioGetElementData ( player, "curcars" ), "MaximumCars", vioGetElementData ( player, "maxcars" ), "UID", playerUID[pname] )
  971. end
  972.  
  973. function datasave_remote ( player )
  974.  
  975. local source = player
  976. if tonumber ( vioGetElementData ( source, "loggedin" )) == 1 then
  977. local pname = getPlayerName ( source )
  978. local fields = "SET"
  979. fields = fields.." Geld = '"..math.abs ( math.floor ( vioGetElementData ( source, "money" ) ) ).."'"
  980. fields = fields..", Fraktion = '"..math.abs ( math.floor ( vioGetElementData ( source, "fraktion") ) ).."'"
  981. fields = fields..", FraktionsRang = '"..math.floor ( vioGetElementData ( source, "rang" ) ).."'"
  982. fields = fields..", Spielzeit = '"..math.floor ( vioGetElementData ( source, "playingtime" ) ).."'"
  983. fields = fields..", Adminlevel = '"..math.floor ( vioGetElementData ( source, "adminlvl" ) ).."'"
  984. fields = fields..", Hitglocke = '"..math.floor ( vioGetElementData ( source, "hitglocke" ) ).."'"
  985. fields = fields..", CurrentCars = '"..math.floor ( vioGetElementData ( source, "curcars" ) ).."'"
  986. fields = fields..", MaximumCars = '"..math.floor ( vioGetElementData ( source, "maxcars" ) ).."'"
  987. fields = fields..", Knastzeit = '"..math.floor ( vioGetElementData ( source, "jailtime" ) ).."'"
  988. fields = fields..", Prison = '"..math.floor ( vioGetElementData ( source, "prison" ) ).."'"
  989. fields = fields..", Kaution = '"..math.floor ( vioGetElementData ( source, "bail" ) ).."'"
  990. fields = fields..", Himmelszeit = '"..math.floor ( vioGetElementData ( source, "heaventime" ) ).."'"
  991. fields = fields..", Hausschluessel = '"..math.floor ( vioGetElementData ( source, "housekey" ) ).."'"
  992. fields = fields..", Bankgeld = '"..math.floor ( vioGetElementData ( source, "bankmoney" ) ).."'"
  993. fields = fields..", Drogen = '"..math.floor ( vioGetElementData ( source, "drugs" ) ).."'"
  994. fields = fields..", Skinid = '"..math.floor ( vioGetElementData ( source, "skinid" ) ).."'"
  995. fields = fields..", Wanteds = '"..math.floor ( vioGetElementData ( source, "wanteds" ) ).."'"
  996. fields = fields..", StvoPunkte = '"..math.floor ( vioGetElementData ( source, "stvo_punkte" ) ).."'"
  997. fields = fields..", Boni = '"..math.floor ( vioGetElementData ( source, "boni" ) ).."'"
  998. fields = fields..", PdayIncome = '"..math.floor ( vioGetElementData ( source, "pdayincome" ) ).."'"
  999. fields = fields..", Warns = '"..math.floor ( vioGetElementData ( source, "warns" ) ).."'"
  1000. fields = fields..", Gunbox1 = '"..vioGetElementData ( source, "gunboxa" ).."'"
  1001. fields = fields..", Gunbox2 = '"..vioGetElementData ( source, "gunboxb" ).."'"
  1002. fields = fields..", Gunbox3 = '"..vioGetElementData ( source, "gunboxc" ).."'"
  1003. fields = fields..", Job = '"..vioGetElementData ( source, "job" ).."'"
  1004. fields = fields..", Jobtime = '"..math.floor ( vioGetElementData ( source, "jobtime" ) ).."'"
  1005. fields = fields..", Club = '"..vioGetElementData ( source, "club" ).."'"
  1006. fields = fields..", FavRadio = '"..math.floor ( vioGetElementData ( source, "favchannel" ) ).."'"
  1007. fields = fields..", Bonuspunkte = '"..math.floor ( vioGetElementData ( source, "bonuspoints" ) ).."'"
  1008. local skill = tonumber ( vioGetElementData ( source, "truckerlvl" ) ) or 0
  1009. fields = fields.." ,Coins = '"..vioGetElementData ( source, "coins" ).."'"
  1010. fields = fields..", Truckerskill = '"..skill.."'"
  1011. fields = fields..", farmerLVL = '"..vioGetElementData ( source, "farmerLVL" ).."'"
  1012. fields = fields..", bauarbeiterLVL = '"..vioGetElementData ( source, "bauarbeiterLVL" ).."'"
  1013. fields = fields..", AirportLevel = '"..math.floor ( vioGetElementData ( source, "airportlvl" ) ).."'"
  1014. fields = fields..", Contract = '"..math.floor ( vioGetElementData ( source, "contract" ) ).."'"
  1015. fields = fields..", SocialState = '".. vioGetElementData ( source, "socialState") .."'"
  1016. fields = fields..", StreetCleanPoints = '"..math.floor ( vioGetElementData ( source, "streetCleanPoints" ) ).."'"
  1017. local v1 = "|"..vioGetElementData ( source, "handyType" ).."|"
  1018. local v2 = vioGetElementData ( source, "handyCosts" ).."|"
  1019. local v3 = v1..v2
  1020. fields = fields..", Handy = '"..v3.."'"
  1021. dbExec ( handler, "UPDATE userdata "..fields.." WHERE UID=?", playerUID[pname] )
  1022.  
  1023. saveAddictionsForPlayer ( source )
  1024. achievsave(source)
  1025. inventorysave(source)
  1026. skillDataSave ( player )
  1027. saveArmyPermissions ( player )
  1028. saveStatisticsMySQL ( player )
  1029. outputDebugString ("Daten für Spieler "..pname.." wurden gesichert!")
  1030. end
  1031. end
  1032.  
  1033. function achievsave ( player )
  1034.  
  1035. local pname = getPlayerName ( player )
  1036. saveHorseShoesFound ( player, pname )
  1037. dbExec ( handler, "UPDATE ?? SET ??=? WHERE ??=?", "achievments", "Waffenschieber", vioGetElementData ( player, "gunloads"), "UID", playerUID[pname] )
  1038. savePlayingTimeForSleeplessAchiev ( player, pname )
  1039. end
  1040.  
  1041.  
  1042.  
  1043. function inventorysave ( player )
  1044. local pname = getPlayerName ( player )
  1045. 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] )
  1046. end
  1047.  
  1048. function casinoMoneySave ( player )
  1049.  
  1050. if vioGetElementData ( player, "loggedin" ) == 1 then
  1051. local name = getPlayerName ( player )
  1052. local chips = math.abs ( math.floor ( vioGetElementData ( player, "casinoChips" ) ) )
  1053. local money = math.floor ( vioGetElementData ( player, "money" ) )
  1054. local bankMoney = math.floor ( vioGetElementData ( player, "bankmoney" ) )
  1055. dbExec ( handler,"UPDATE userdata SET ??=?, ??=? WHERE UID=?", "Geld", money, "Bankgeld", bankMoney, playerUID[name] )
  1056. dbExec ( handler, "UPDATE inventar SET Chips=? WHERE UID=?", chips, playerUID[name] )
  1057. end
  1058. end
  1059.  
  1060.  
  1061.  
  1062. -- Info: Angabe von Last_Login in Tagen seit Jahresanfang, Angabe von Geschlecht in 1 u. 0 - 1 = Weiblich, 0 = männlich
  1063. -- Anreise in 1 u. 0, 0 = Schiff, 1 = Flugzeug
  1064. -- Scheine: 0 = nicht vorhanden, 1 = vorhanden
  1065.  
  1066. function logoutPlayer_func ( player, x, y, z, int, dim )
  1067.  
  1068. local client = player
  1069. if vioGetElementData ( client, "shootingRanchGun" ) then
  1070.  
  1071. else
  1072. local pname = getPlayerName ( client )
  1073. local int = tonumber ( int )
  1074. local dim = tonumber ( dim )
  1075. local curWeaponsForSave = "|"
  1076. for i = 1, 11 do
  1077. if i ~= 10 then
  1078. local weapon = getPedWeapon ( client, i )
  1079. local ammo = getPedTotalAmmo ( client, i )
  1080. if weapon and ammo then
  1081. if weapon > 0 and ammo > 0 then
  1082. if #curWeaponsForSave <= 40 then
  1083. curWeaponsForSave = curWeaponsForSave..weapon..","..ammo.."|"
  1084. end
  1085. end
  1086. end
  1087. end
  1088. end
  1089. pos = "|"..(math.floor(x*100)/100).."|"..(math.floor(y*100)/100).."|"..(math.floor(z*100)/100).."|"..int.."|"..dim.."|"
  1090. if #curWeaponsForSave < 5 then
  1091. curWeaponsForSave = ""
  1092. end
  1093. local result = dbExec ( handler,"INSERT INTO logout (Position, Waffen, UID) VALUES (?,?,?)", pos, curWeaponsForSave, playerUID[pname] )
  1094. kickPlayer ( client, "Ausgeloggt." )
  1095. end
  1096. end
  1097. addEvent ( "logoutPlayer", true )
  1098. addEventHandler ( "logoutPlayer", getRootElement(), logoutPlayer_func )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement