Advertisement
Shy353

Untitled

Apr 25th, 2021
436
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 22.11 KB | None | 0 0
  1.  
  2. // =========================================== S E R V E R   E V E N T S ==============================================
  3. /*
  4.  
  5. ░█████╗░░█████╗░░█████╗░░█████╗░██╗░░░██╗███╗░░██╗████████╗  ░██████╗██╗░░░██╗░██████╗████████╗███████╗███╗░░░███╗
  6. ██╔══██╗██╔══██╗██╔══██╗██╔══██╗██║░░░██║████╗░██║╚══██╔══╝  ██╔════╝╚██╗░██╔╝██╔════╝╚══██╔══╝██╔════╝████╗░████║
  7. ███████║██║░░╚═╝██║░░╚═╝██║░░██║██║░░░██║██╔██╗██║░░░██║░░░  ╚█████╗░░╚████╔╝░╚█████╗░░░░██║░░░█████╗░░██╔████╔██║
  8. ██╔══██║██║░░██╗██║░░██╗██║░░██║██║░░░██║██║╚████║░░░██║░░░  ░╚═══██╗░░╚██╔╝░░░╚═══██╗░░░██║░░░██╔══╝░░██║╚██╔╝██║
  9. ██║░░██║╚█████╔╝╚█████╔╝╚█████╔╝╚██████╔╝██║░╚███║░░░██║░░░  ██████╔╝░░░██║░░░██████╔╝░░░██║░░░███████╗██║░╚═╝░██║
  10. ╚═╝░░╚═╝░╚════╝░░╚════╝░░╚════╝░░╚═════╝░╚═╝░░╚══╝░░░╚═╝░░░  ╚═════╝░░░░╚═╝░░░╚═════╝░░░░╚═╝░░░╚══════╝╚═╝░░░░░╚═╝
  11.  
  12. ██████╗░██╗░░░██╗  ░██████╗██╗░░██╗██╗░░░██╗
  13. ██╔══██╗╚██╗░██╔╝  ██╔════╝██║░░██║╚██╗░██╔╝
  14. ██████╦╝░╚████╔╝░  ╚█████╗░███████║░╚████╔╝░
  15. ██╔══██╗░░╚██╔╝░░  ░╚═══██╗██╔══██║░░╚██╔╝░░
  16. ██████╦╝░░░██║░░░  ██████╔╝██║░░██║░░░██║░░░
  17. ╚═════╝░░░░╚═╝░░░  ╚═════╝░╚═╝░░╚═╝░░░╚═╝░░░
  18. */
  19. class PlayerStats
  20. {
  21. Kills = 0;
  22. Deaths = 0;
  23. Cash = 0;
  24. Level = 0;
  25. Registered = false;
  26. Logged = false;
  27. Bank = 0;
  28. AutoLogin = "on";
  29.   Weapons = [];
  30.   DP = false;
  31.   dPos = null;
  32.   Spree = 0;
  33. }
  34. function onServerStart()
  35. {
  36. }
  37.  
  38. function onServerStop()
  39. {
  40. }
  41.  
  42. function onScriptLoad()
  43. {
  44. stats <- array ( GetMaxPlayers(), null );
  45.  db <- ConnectSQL("Database.db");
  46.  QuerySQL( db, "CREATE TABLE IF NOT EXISTS Accounts( Nickname TEXT, Password TEXT, IP VARCHAR(32), UID VARCHAR(255), UID2 VARCHAR(255), Kills INTEGER, Deaths INTEGER, Cash INTEGER, Bank INTEGER, Level INTEGER, AutoLogin TEXT )");
  47.  print("Account system by SHy has been loaded."); //This is to keep account system's credits
  48. }
  49.  
  50. function onScriptUnload()
  51. {
  52. DiscconectSQL( db );
  53. }
  54. function PlayerInfo(player)
  55. {
  56. local q = QuerySQL( db, "SELECT * FROM Accounts WHERE Nickname='"+player.Name+"'" );
  57. if (q)
  58. {
  59. if ( GetSQLColumnData( q, 2 ) == player.IP && GetSQLColumnData( q, 3 ) == player.UniqueID && GetSQLColumnData( q, 4 ) == player.UniqueID2 && GetSQLColumnData( q, 10 ).tostring() == "on" )
  60. {
  61. Message("[#c00ff2]"+player.Name+" got automatically logged in.");
  62. stats[ player.ID ].Registered = true;
  63. stats[ player.ID ].Logged = true;
  64. stats[ player.ID ].Kills = GetSQLColumnData( q, 5 );
  65. stats[ player.ID ].Deaths = GetSQLColumnData( q, 6 );
  66. AddCash( player, GetSQLColumnData( q, 7 ) );
  67. stats[ player.ID ].Bank = GetSQLColumnData( q, 8 );
  68. stats[ player.ID ].Level = GetSQLColumnData( q, 9 );
  69. QuerySQL( db, "UPDATE Accounts SET IP='"+player.IP+"', UID='"+player.UniqueID+"', UID2='"+player.UniqueID2+"' WHERE Nickname='"+player.Name+"'" );
  70. }
  71. else
  72. {
  73. MessagePlayer("[#000fff]The account ( "+player.Name+" ) is registered, please login into it.", player);
  74. stats[ player.ID ].Registered = true;
  75. }
  76. }
  77. else MessagePlayer("[#00ff00]Your account is not registered, type /register to have a control over your account!", player);
  78. }
  79. function RemoveCash( player, amount )
  80. {
  81. local cash = stats[ player.ID ].Cash;
  82. local det = cash - amount;
  83. stats[ player.ID ].Cash = det;
  84. player.Cash = det;
  85. }
  86. function AddCash( player, amount )
  87. {
  88. local cash = stats[ player.ID ].Cash;
  89. local add = cash + amount;
  90. stats[ player.ID ].Cash = add;
  91. player.Cash = add;
  92. }
  93. function UpdateInfo(player)
  94. {
  95. QuerySQL( db, "UPDATE Accounts SET IP='"+player.IP+"', UID='"+player.UniqueID+"', UID2='"+player.UniqueID2+"', Kills = '"+stats[ player.ID ].Kills+"', Deaths='"+stats[ player.ID ].Deaths+"', Cash='"+stats[ player.ID ].Cash+"', Bank = '"+stats[ player.ID ].Bank+"' WHERE Nickname= '" + player.Name + "'" );
  96. print("Stats saved!");
  97. }
  98. // =========================================== P L A Y E R   E V E N T S ==============================================
  99.  
  100. function onPlayerJoin( player )
  101. {
  102. stats[ player.ID ] = PlayerStats();
  103. Message("[#00ff00]"+player.Name+" [#ffffff]has connected to the server.");
  104. PlayerInfo(player);
  105. }
  106.  
  107. function onPlayerPart( player, reason )
  108. {
  109.  if ( stats[ player.ID ].Logged ) UpdateInfo(player);
  110. }
  111.  
  112. function onPlayerRequestClass( player, classID, team, skin )
  113. {
  114.     return 1;
  115. }
  116.  
  117. function onPlayerRequestSpawn( player )
  118. {
  119. if ( !stats[ player.ID ].Registered ) return MessagePlayer("[#ffffff]Please register to start playing in the server.", player);
  120. else if ( !stats[ player.ID ].Logged ) return MessagePlayer("[#ffffff]The account is registered, please do /login.", player);
  121. else return 1;
  122. }
  123.  
  124. function onPlayerSpawn( player )
  125. {
  126.         GiveSpawnwep(player);
  127.         if ( stats[ player.ID ].DP ) {
  128. player.Pos = stats[ player.ID ].dPos;
  129. PrivMessage( player, "You have been teleported to the place where you had last died.");
  130. }
  131. }
  132.  
  133. function onPlayerDeath( player, reason )
  134. {
  135. stats[ player.ID ].Deaths++;
  136. if ( stats[ player.ID ].Cash >= 100 ) RemoveCash( player, 100 );
  137. UpdateInfo(player);
  138. if ( stats[ player.ID ].DP )
  139. {
  140. stats[ player.ID ].dPos = player.Pos;
  141. }
  142. }
  143.  
  144. function onPlayerKill( killer, player, reason, bodypart )
  145. {
  146.     killer.Score++;
  147. stats[ killer.ID ].Kills++;
  148. stats[killer.ID].Spree++;
  149. if (stats[player.ID].Spree > 0) stats[player.ID].Spree--;
  150. stats[ player.ID ].Deaths++;
  151. AddCash( killer, 500 );
  152. if ( player.Cash >= 100 ) RemoveCash( player, 100 );
  153. PrivMessage( killer, "You received 500$ as a kill reward.");
  154. PrivMessage( player, "You have lost 100$ for being killed.");
  155. UpdateInfo(killer);
  156. UpdateInfo(player);
  157. checkSpree(killer);
  158. }
  159.  
  160. function onPlayerTeamKill( killer, player, reason, bodypart )
  161. {
  162. killer.Health = 0;
  163. Message("[#0000ff]Auto-Killed "+killer.Name+" for teamkilling.");
  164. stats[ killer.ID ].Deaths++;
  165. stats[ player.ID ].Deaths++;
  166. }
  167.  
  168. function onPlayerChat( player, text )
  169. {
  170. if ( !stats[ player.ID ].Logged ) return MessagePlayer("[#ff0000]Please login to speak.", player);
  171. else return 1;
  172. }
  173. function onPlayerCommand( player, cmd, text )
  174. {
  175.  if ( cmd == "register" )
  176.  {
  177.  if (!text) MessagePlayer("[#ff0000]Error:[#ffffff] Wrong syntax, use /"+cmd+" <Password>.:", player);
  178.  else if ( stats[ player.ID ].Registered ) MessagePlayer("[#ff0000]Error:[#ffffff] You are already registerd.", player);
  179.  else
  180.  {
  181.  local reward = 5000;
  182. AddCash( player, reward.tointeger() );
  183.  QuerySQL( db, "INSERT INTO Accounts( Nickname , Password, IP, UID, UID2, Kills, Deaths, Cash, Level, Bank, AutoLogin ) VALUES( '"+player.Name+"', '"+SHA256( text )+"', '"+player.IP+"', '"+player.UniqueID+"', '"+player.UniqueID2+"', '0', '0', '0', '1', '0', 'on')" );
  184.  Message("[#ff00ff]"+player.Name+" is a registered user now.");
  185. stats[ player.ID ].Registered = true;
  186. stats[ player.ID ].Logged = true;
  187.  MessagePlayer("[#ff00ff]You have registered your account in the server, you have received "+reward.tointeger()+"$ as a registration reward!", player);
  188.  }
  189.  }
  190.  else if ( cmd == "login" )
  191.  {
  192.  if (!text) MessagePlayer("[#ff0000]Error:[#ffffff] Wrong syntax, use /"+cmd+" <Password>.", player);
  193.  else if ( stats[ player.ID ].Logged ) MessagePlayer("[#ff0000]Error:[#ffffff] You're already logged in.", player);
  194.   else if ( !stats[ player.ID ].Registered ) MessagePlayer("[#ff0000]Error:[#ffffff] You're not registered, please type /register.", player);
  195. else
  196. {
  197. local q = QuerySQL( db, "SELECT * FROM Accounts WHERE Nickname='"+player.Name+"'" );
  198. local Pass = GetSQLColumnData( q, 1 );
  199. if ( SHA256( text ) != Pass ) MessagePlayer("[#ff0000]Error: [#ffffff] The password you entered is wrong.", player);
  200. else{
  201. stats[ player.ID ].Registered = true;
  202. stats[ player.ID ].Logged = true;
  203. stats[ player.ID ].Kills = GetSQLColumnData( q, 5 ).tointeger();
  204. stats[ player.ID ].Deaths = GetSQLColumnData( q, 6 ).tointeger();
  205. AddCash( player, GetSQLColumnData( q, 7 ) );
  206. stats[ player.ID ].Bank = GetSQLColumnData( q, 8 ).tointeger();
  207. stats[ player.ID ].Level = GetSQLColumnData( q, 9 ).tointeger();
  208. stats[ player.ID ].AutoLogin = GetSQLColumnData( q, 10 ).tostring();
  209. Message("[#00ff00]"+player.Name+" has logged into the server.");
  210. MessagePlayer("[#ffffff]You've successfully logged in.", player);
  211. }
  212. }
  213. }
  214. else if ( cmd == "setpass" )
  215. {
  216. if (!text) MessagePlayer("[#ff0000]Error: [#ffffff] /setpass <New Pass>.", player);
  217. else if ( !stats[ player.ID ].Registered ) MessagePlayer("[#ff0000]Error:[#ffffff] You are not registered.", player);
  218. else if ( !stats[ player.ID ].Logged ) MessagePlayer("[#ff0000]Error: [#ffffff] You're not logged in, please /login.", player);
  219. else{
  220. QuerySQL( db, "UPDATE Accounts SET Password='"+SHA256( text )+"' WHERE Nickname='"+player.Name+"'" );
  221. MessagePlayer("[#00ff00]You have successfully changed your password to: ( "+text+" ).", player);
  222. }
  223. }
  224. else if ( cmd == "stats" )
  225. {
  226. if (!text)
  227. {
  228. MessagePlayer("[#00ff00]Your stats: Kills: "+stats[ player.ID ].Kills+", Deaths: "+stats[ player.ID ].Deaths+", Cash: "+stats[ player.ID ].Cash+", Bank:"+stats[ player.ID ].Bank+".", player);
  229. }
  230. else if (text)
  231. {
  232. local plr = FindPlayer(text);
  233. if (!plr) MessagePlayer("[#ff0000]Error:[#ffffff] Player not found.", player);
  234. else{
  235. MessagePlayer("[#f0f0ff] "+plr.Name+" statistics: Kills: "+stats[ plr.ID ].Kills+", Deaths: "+stats[ plr.ID ].Deaths+", Cash: "+stats[ plr.ID ].Cash+", Bank: "+stats[ plr.ID ].Bank+", Level: "+stats[ plr.ID ].Level+".", player);
  236. }
  237. }
  238. }
  239. else if ( cmd == "setautologin" || cmd == "autologin" )
  240. {
  241. if (!text) MessagePlayer("[#ff0000]Error: [#ffffff]Correct syntax: /"+cmd+" <on/off>.", player);
  242. else if ( !stats[ player.ID ].Registered ) MessagePlayer("[#ff0000]Error:[#ffffff] You're not registered.", player);
  243. else if ( !stats[ player.ID ].Logged ) MessagePlayer("[#ff0000]Error:[#ffffff] You're not logged in.", player);
  244. else if ( text == "on" )
  245. {
  246. QuerySQL( db, "UPDATE Accounts SET AutoLogin='on' WHERE Nickname='"+player.Name+"'" );
  247. MessagePlayer("[#00ff00]Your autologin has been turned on.", player);
  248. }
  249. else if ( text == "off" )
  250. {
  251. QuerySQL( db, "UPDATE Accounts SET AutoLogin='off' WHERE Nickname='"+player.Name+"'" );
  252. MessagePlayer("[#00ff00]Your autologin has been turned off.", player);
  253. }
  254. else MessagePlayer("[#ff0000]Error: use /"+cmd+" <on/off>.", player);
  255. }
  256.  
  257. else if ( cmd =="credits" || cmd == "credts" )
  258. {
  259. MessagePlayer("[#ff000f]Account system by SHy.", player);
  260. }
  261. else if ( cmd == "cmds" || cmd == "commands" )
  262. {
  263. MessagePlayer("[#fff000]Available commands: (/)register, login, setautologin( or autologin ), setpass, stats, deposit, withdraw, givecash.", player);
  264. }
  265. else if ( cmd == "deposit" )
  266. {
  267. if (!text) MessagePlayer("[#ff0000]Error:[#ffffff] /deposit <amount>.", player);
  268. else if ( !stats[ player.ID ].Registered ) return MessaagePlayer("[#ff0000]Error:[#ffffff] Command is limited to registered users only.", player);
  269. else if ( !IsNum( text ) ) MessagePlayer("[#00ff00]Amount must be integer....", player);
  270. else if ( player.Cash < text.tointeger() ) return MessagePlayer("[#ff0000]Error: You don't have that much cash which you want to deposit.", player);
  271. else
  272. {
  273. stats[ player.ID ].Bank += text.tointeger();
  274. RemoveCash( player, text.tointeger() );
  275. MessagePlayer("[#fff000]You successfully deposited "+text.tointeger()+" amount in your bank account.", player);
  276. }
  277. }
  278. else if ( cmd == "withdraw" )
  279. {
  280. if (!text) MessagePlayer("[#ff0000]Error:[#ffffff] Use /withdraw <amount>.", player);
  281. else if ( !stats[ player.ID ].Registered ) return MessaagePlayer("[#ff0000]Error:[#ffffff] Command is limited to registered users only.", player);
  282. else if ( !IsNum( text ) ) MessagePlayer("[#00ff00]Amount must be integer....", player);
  283. else if ( stats[ player.ID ].Bank < text.tointeger() ) return MessagePlayer("[#ff0000]Error: You don't have that much cash which you want to withdraw.", player);
  284. else
  285. {
  286. stats[ player.ID ].Bank -= text.tointeger();
  287. AddCash( player, text.tointeger() );
  288. MessagePlayer("[#fff000]You successfully withdrawn "+text.tointeger()+" amount from your bank account.", player);
  289. }
  290. }
  291. else if ( cmd == "givecash" )
  292. {
  293. if (!text) MessagePlayer("[#ff0000]Error:[#ffffff] Use /givecash <Player> <Amount>.", player);
  294. else if ( !stats[ player.ID ].Registered ) return MessaagePlayer("[#ff0000]Error:[#ffffff] Command is limited to registered users only.", player);
  295. else
  296. {
  297. local plr = GetPlayer( GetTok( text, " ", 1 ) );
  298. local amount = GetTok( text, " ", 2 );
  299. if (!plr) MessagePlayer("[#ff0000]Error: Player not found.", player);
  300. else if (!amount) return MessagePlayer("[#ff00000]Error: [#ffffff]Enter amount u want to give.", player);
  301. else if ( !IsNum( amount ) ) return MessagePlayer("[#ff00000]Error: [#ffffff]Amount which you want to give must be integer.", player);
  302. else if ( plr.Name == player.Name ) return MessagePlayer("[#ffff00]You can't send cash cash to yourself.", player);
  303. else
  304. {
  305. RemoveCash( player, amount.tointeger() );
  306. AddCash( plr, amount.tointeger() );
  307. MessagePlayer("[#fffffff]You gave "+amount.tointeger()+"$ to "+plr.Name+".", player);
  308. MessagePlayer("[#fffffff]You have received "+amount.tointeger()+"$ from "+player.Name+".", plr );
  309. }
  310. }
  311. }
  312.  
  313. else if ( cmd == "cash" || cmd == "bank" )
  314. {
  315. if ( !stats[ player.ID ].Registered ) return MessaagePlayer("[#ff0000]Error:[#ffffff] Command is limited to registered users only.", player);
  316. else
  317. {
  318. if (!text)
  319. {
  320. MessagePlayer("[#fff000]Your money statistics: Cash in hand: "+stats[ player.ID ].Cash+" and Bank account: "+stats[ player.ID ].Bank+".", player);
  321. }
  322. else if ( text )
  323. {
  324. local plr = FindPlayer(text);
  325. if ( !plr) return MessagePlayer("[#ff0000]Error:[#fff000]Player not found.", player);
  326. else if ( !stats[ plr.ID ].Registered ) return MessagePlayer("[#00ff00]Error: The player hasn't registered his account yet.", player);
  327. else
  328. {
  329. MessagePlayer("[#fff000]"+plr.Name+" money statistics: Cash in hand: "+plr.Cash+" and Bank account: "+stats[ plr.ID ].Bank+".", player);
  330. }
  331. }
  332. }
  333. }
  334. else if (cmd == "spawnwep") {
  335.     if (!text) return MessaagePlayer("Please use: /spawnwep <Weapons>.");
  336.  local weps = split( text, " " ),ID, wepsset = null;
  337.             for( local i = 0; i < weps.len(); i++ )
  338.             {
  339.                 ( IsNum( weps[ i ] ) ) ? ID = weps[ i ].tointeger() : ID = GetWeaponID( weps[ i ] );                          
  340.                 if ( ID >= 33 ) MessagePlayer( "[#ff0000]Error: Invalid Weapon ID/Name.", player );
  341.                 else
  342.                 {
  343.                     player.SetWeapon( ID, 999 );
  344.                     stats[player.ID].Weapons.push(ID);
  345.                     if (wepsset == null) wepsset = " "+ ID;
  346.                     else wepsset += (" " + ID);
  347.                 }
  348.             }
  349.             MessagePlayer( "[#00ff00]Spawnwep saved.",player);
  350. }
  351. else if (cmd == "delspawnwep"){
  352. foreach (idx, val in stats[player.ID].Weapons) {
  353.  stats[player.ID].Weapons.remove(val);
  354. }
  355. MessaagePlayer("[#00ff00]Spawnweps have been set to default.", player);
  356. }
  357. else if ( cmd == "diepos" || "deathpos" )
  358. {
  359. if (!text) PrivMessage( player, "Error: Wrong syntax, Use /"+cmd+" <on/off>.");
  360. else
  361. {
  362. if ( text.tolower() == "on" )
  363. {
  364. if ( stats[ player.ID ].DP ) PrivMessage( player, "Deathpos already enabled.");
  365. else
  366. {
  367. stats[ player.ID ].DP = true;
  368. MessagePlayer("Deathpos enabled.", player);
  369. }
  370. }
  371. else if ( text.tolower() == "off" )
  372. {
  373. if ( !stats[ player.ID ].DP ) PrivMessage( player, "You had not enabled deathpos.");
  374. else
  375. {
  376. stats[ player.ID ].DP = false;
  377. PrivMessage( player, "Deathpos has been turned off.");
  378. }
  379. }
  380. }
  381. }
  382. else return MessaagePlayer("[#ff0000]Error: Invalid command!", player);
  383. }
  384. function onPlayerPM( player, playerTo, message )
  385. {
  386.     return 1;
  387. }
  388. // SLC's very useful functions
  389. function GetTok( string, separator, n, ... )
  390. {
  391.  local m = ( vargv.len() > 0 ) ? vargv[ 0 ] : n, tokenized = split( string, separator ), text = "";
  392.  
  393.  if ( ( n > tokenized.len() ) || ( n < 1 ) ) return null;
  394.  
  395.  for ( ; n <= m; n++ )
  396.  {
  397.   text += text == "" ? tokenized[ n - 1 ] : separator + tokenized[ n - 1 ];
  398.  }
  399.  
  400.  return text;
  401. }
  402.  
  403. function NumTok(string, separator)
  404. {
  405.     local tokenized = split(string, separator);
  406.     return tokenized.len();
  407. }
  408. function GetPlayer( target )
  409. {
  410.  local target1 = target.tostring();
  411.  
  412.  if ( IsNum( target ) )
  413.  {
  414.   target = target.tointeger();
  415.  
  416.   if ( FindPlayer( target) ) return FindPlayer( target );
  417.   else return null;
  418.  }
  419.  else if ( FindPlayer( target ) ) return FindPlayer( target );
  420.  else return null;
  421. }
  422.  
  423. function onPlayerBeginTyping( player )
  424. {
  425. }
  426.  
  427. function onPlayerEndTyping( player )
  428. {
  429. }
  430.  
  431. function onNameChangeable( player )
  432. {
  433. }
  434.  
  435. function onPlayerSpectate( player, target )
  436. {
  437. }
  438.  
  439. function onPlayerCrashDump( player, crash )
  440. {
  441. }
  442.  
  443. function onPlayerMove( player, lastX, lastY, lastZ, newX, newY, newZ )
  444. {
  445. }
  446.  
  447. function onPlayerHealthChange( player, lastHP, newHP )
  448. {
  449. }
  450.  
  451. function onPlayerArmourChange( player, lastArmour, newArmour )
  452. {
  453. }
  454.  
  455. function onPlayerWeaponChange( player, oldWep, newWep )
  456. {
  457. }
  458.  
  459. function onPlayerAwayChange( player, status )
  460. {
  461. }
  462.  
  463. function onPlayerNameChange( player, oldName, newName )
  464. {
  465. }
  466.  
  467. function onPlayerActionChange( player, oldAction, newAction )
  468. {
  469. }
  470.  
  471. function onPlayerStateChange( player, oldState, newState )
  472. {
  473. }
  474.  
  475. function onPlayerOnFireChange( player, IsOnFireNow )
  476. {
  477. }
  478.  
  479. function onPlayerCrouchChange( player, IsCrouchingNow )
  480. {
  481. }
  482.  
  483. function onPlayerGameKeysChange( player, oldKeys, newKeys )
  484. {
  485. }
  486.  
  487. function onPlayerUpdate( player, update )
  488. {
  489. }
  490.  
  491. function onClientScriptData( player )
  492. {
  493.     // receiving client data
  494.     local stream = Stream.ReadByte();
  495.     switch ( stream )
  496.     {
  497.         default:
  498.         break;
  499.     }
  500. }
  501.  
  502. // ========================================== V E H I C L E   E V E N T S =============================================
  503.  
  504. function onPlayerEnteringVehicle( player, vehicle, door )
  505. {
  506.     return 1;
  507. }
  508.  
  509. function onPlayerEnterVehicle( player, vehicle, door )
  510. {
  511. }
  512.  
  513. function onPlayerExitVehicle( player, vehicle )
  514. {
  515. }
  516.  
  517. function onVehicleExplode( vehicle )
  518. {
  519. }
  520.  
  521. function onVehicleRespawn( vehicle )
  522. {
  523. }
  524.  
  525. function onVehicleHealthChange( vehicle, oldHP, newHP )
  526. {
  527. }
  528.  
  529. function onVehicleMove( vehicle, lastX, lastY, lastZ, newX, newY, newZ )
  530. {
  531. }
  532.  
  533. // =========================================== P I C K U P   E V E N T S ==============================================
  534.  
  535. function onPickupClaimPicked( player, pickup )
  536. {
  537.     return 1;
  538. }
  539.  
  540. function onPickupPickedUp( player, pickup )
  541. {
  542. }
  543.  
  544. function onPickupRespawn( pickup )
  545. {
  546. }
  547.  
  548. // ========================================== O B J E C T   E V E N T S ==============================================
  549.  
  550. function onObjectShot( object, player, weapon )
  551. {
  552. }
  553.  
  554. function onObjectBump( object, player )
  555. {
  556. }
  557.  
  558. // ====================================== C H E C K P O I N T   E V E N T S ==========================================
  559.  
  560. function onCheckpointEntered( player, checkpoint )
  561. {
  562. }
  563.  
  564. function onCheckpointExited( player, checkpoint )
  565. {
  566. }
  567.  
  568. // =========================================== B I N D   E V E N T S =================================================
  569.  
  570. function onKeyDown( player, key )
  571. {
  572. }
  573.  
  574. function onKeyUp( player, key )
  575. {
  576. }
  577.  
  578. // ================================== E N D   OF   O F F I C I A L   E V E N T S ======================================
  579.  
  580.  
  581. function SendDataToClient( player, ... )
  582. {
  583.     if( vargv[0] )
  584.     {
  585.         local     byte = vargv[0],
  586.                 len = vargv.len();
  587.                
  588.         if( 1 > len ) devprint( "ToClent <" + byte + "> No params specified." );
  589.         else
  590.         {
  591.             Stream.StartWrite();
  592.             Stream.WriteByte( byte );
  593.  
  594.             for( local i = 1; i < len; i++ )
  595.             {
  596.                 switch( typeof( vargv[i] ) )
  597.                 {
  598.                     case "integer": Stream.WriteInt( vargv[i] ); break;
  599.                     case "string": Stream.WriteString( vargv[i] ); break;
  600.                     case "float": Stream.WriteFloat( vargv[i] ); break;
  601.                 }
  602.             }
  603.            
  604.             if( player == null ) Stream.SendStream( null );
  605.             else if( typeof( player ) == "instance" ) Stream.SendStream( player );
  606.             else devprint( "ToClient <" + byte + "> Player is not online." );
  607.         }
  608.     }
  609.     else devprint( "ToClient: Even the byte wasn't specified..." );
  610. }
  611.  
  612. function GiveSpawnwep(player) {
  613.     foreach (idx, ID in stats[player.ID].Weapons) {
  614.         player.SetWeapon(ID, 9999);
  615.     }
  616. }
  617.  
  618. function checkSpree(player) {
  619.     if (stats[player.ID].Spree >= 5)
  620.     {
  621.         Message("[#00ff00]"+player.Name+" is on a killing spree of "+stats[player.ID].Spree+"!");
  622.         local reward = random(300, 3000);
  623.         AddCash(player, reward);
  624.         PrivMessage(player, "Received $"+reward+" as spree reward.");
  625.     }
  626. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement