Advertisement
Guest User

Untitled

a guest
Jun 19th, 2012
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 34.56 KB | None | 0 0
  1. //-----------------------------------------------------------------------------------|
  2. // [svAddons] |
  3. // |
  4. // |
  5. // - You may not remove these credits |
  6. // - You may not claim this script as yours |
  7. // |
  8. // |
  9. // |
  10. // [VERSION 1.1] Created by SuperViper |
  11. //-----------------------------------------------------------------------------------|
  12.  
  13. #include <a_samp>
  14.  
  15. #define SVCS_svAddons
  16.  
  17. #define VEHICLE_INFO_ENGINE (0)
  18. #define VEHICLE_INFO_LIGHTS (1)
  19. #define VEHICLE_INFO_ALARM (2)
  20. #define VEHICLE_INFO_DOORS (3)
  21. #define VEHICLE_INFO_BONNET (4)
  22. #define VEHICLE_INFO_BOOT (5)
  23. #define VEHICLE_INFO_OBJECTIVE (6)
  24.  
  25. #define OBJECT_EDITING_NONE (0)
  26. #define OBJECT_EDITING_NORMAL (1)
  27. #define OBJECT_EDITING_PLAYER (2)
  28. #define OBJECT_EDITING_ATTACHED (3)
  29.  
  30. #define DEATH_EFFECT_NONE (0)
  31. #define DEATH_EFFECT_REDGAS (1)
  32. #define DEATH_EFFECT_SMOKE (2)
  33. #define DEATH_EFFECT_EXPLODE (3)
  34. #define DEATH_EFFECT_MINEXPLODE (4)
  35. #define DEATH_EFFECT_FIRE (5)
  36.  
  37. #define WHITELIST_MODE_NONE (0)
  38. #define WHITELIST_MODE_ALLOWPLAYER (1)
  39. #define WHITELIST_MODE_SPECIFICIP (2)
  40. #define WHITELIST_MODE_IP_FIND (3)
  41.  
  42. forward svAddons_Detection();
  43. forward svAddons_StopShaking(playerid);
  44. forward svAddons_DeleteEffect(objectid);
  45. forward svAd_StopAudioStreamForPlayerEx(playerid);
  46.  
  47. forward OnVehicleCreate(vehicleid);
  48. forward OnPlayerPausedUpdate(playerid, bool: paused);
  49. forward OnPlayerWeaponUpdate(playerid, newgun, oldgun);
  50. forward OnReceiveClientMessage(playerid, color, message[]);
  51. forward OnPlayerWaterStatusUpdate(playerid, bool: inWater);
  52. forward OnRconLoginBlocked(playerid, ip[], password[], success);
  53. forward OnPlayerStreamedAudioChange(playerid, stopped, audiourl[]);
  54.  
  55. new svAddons_oldURL[MAX_PLAYERS][256], svAddons_PlayerAudioLoops[MAX_PLAYERS], svAddons_PlayerLoopTime[MAX_PLAYERS];
  56. new bool: svAddons_cVehiclePlate[MAX_VEHICLES], svAddons_VehiclePlate[MAX_VEHICLES][20];
  57. new svAddons_EditingObjectState[MAX_PLAYERS], svAddons_EditingObject[MAX_PLAYERS];
  58. new svAddons_PlayerTabbedUpdates[MAX_PLAYERS], bool: svAddons_PlayerTabbed[MAX_PLAYERS];
  59. new bool: svAddons_BeingCrashed[MAX_PLAYERS], svAddons_CrashObject[MAX_PLAYERS];
  60. new bool: svAddons_DisabledSprunk;
  61. new svAddons_Whitelist, svAddons_WhitelistIP[17], bool: svAddons_Whitelisted[MAX_PLAYERS];
  62. new svAddons_PlayerWeapon[MAX_PLAYERS];
  63. new svAddons_DeathEffect[MAX_PLAYERS];
  64. new svAddons_VehicleInterior[MAX_PLAYERS];
  65. new bool: svAddons_Reconnecting[MAX_PLAYERS], svAddons_ReconnectingIP[MAX_PLAYERS][17];
  66. new svAddons_VehicleTrailers[MAX_VEHICLES];
  67. new bool: svAddons_InWater[MAX_PLAYERS];
  68.  
  69. new svAddons_VehicleNames[][] =
  70. {
  71. "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel", "Dumper", "Firetruck", "Trashmaster",
  72. "Stretch", "Manana", "Infernus", "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
  73. "Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection", "Hunter", "Premier", "Enforcer",
  74. "Securicar", "Banshee", "Predator", "Bus", "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach",
  75. "Cabbie", "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral", "Squalo", "Seasparrow",
  76. "Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder", "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair",
  77. "Berkley's RC Van", "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale", "Oceanic",
  78. "Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy", "Hermes", "Sabre", "Rustler", "ZR-350", "Walton",
  79. "Regina", "Comet", "BMX", "Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper", "Rancher",
  80. "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring", "Sandking", "Blista Compact", "Police Maverick",
  81. "Boxville", "Benson", "Mesa", "RC Goblin", "Hotring Racer A", "Hotring Racer B", "Bloodring Banger", "Rancher",
  82. "Super GT", "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster", "Stunt", "Tanker", "Roadtrain",
  83. "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra", "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck",
  84. "Fortune", "Cadrona", "SWAT Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer", "Remington", "Slamvan",
  85. "Blade", "Streak", "Freight", "Vortex", "Vincent", "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder",
  86. "Primo", "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite", "Windsor", "Monster", "Monster",
  87. "Uranus", "Jester", "Sultan", "Stratium", "Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito",
  88. "Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper", "Broadway", "Tornado", "AT-400", "DFT-30",
  89. "Huntley", "Stafford", "BF-400", "News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club",
  90. "Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "LSPD Car", "SFPD Car", "LVPD Car",
  91. "Police Rancher", "Picador", "Splashy", "Alpha", "Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs",
  92. "Boxville", "Tiller", "Utility Trailer"
  93. };
  94.  
  95. new svAddons_WeaponNames[][] =
  96. {
  97. "Fist", "Brass Knuckles", "Golf Club", "Nightstick", "Knife", "Baseball Bat", "Shovel", "Pool Cue", "Katana",
  98. "Chainsaw", "Double-ended Dildo", "Dildo", "Vibrator", "Silver Vibrator", "Flowers", "Cane", "Grenade", "Tear Gas",
  99. "Molotov Cocktail", "", "", "", "9mm", "Silenced 9mm", "Desert Eagle", "Shotgun", "Sawnoff Shotgun", "Combat Shotgun",
  100. "Uzi", "MP5", "AK-47", "M4", "Tec-9", "Country Rifle", "Sniper Rifle", "RPG", "HS Rocket", "Flamethrower", "Minigun",
  101. "Satchel Charge", "Detonator", "Spraycan", "Fire Extinguisher", "Camera", "Night Vision Goggles", "Thermal Goggles",
  102. "Parachute"
  103. };
  104.  
  105. #define IsPlayerSwimming IsPlayerInWater
  106.  
  107. stock IsPlayerInWater(playerid)
  108. {
  109. new animationIndex = GetPlayerAnimationIndex(playerid);
  110. return (animationIndex >= 1538 && animationIndex <= 1544 && animationIndex != 1542);
  111. }
  112.  
  113. stock SetPlayerPosEx(playerid, Float: posX, Float: posY, Float: posZ, interior = 0, virtualworld = 0, Float: angle = 0.0)
  114. {
  115. SetPlayerVirtualWorld(playerid, virtualworld);
  116. SetPlayerInterior(playerid, interior);
  117. SetPlayerPos(playerid, posX, posY, posZ);
  118. SetPlayerFacingAngle(playerid, angle);
  119. return 1;
  120. }
  121.  
  122. stock GetPlayersName(playerid)
  123. {
  124. new playersName[MAX_PLAYER_NAME];
  125. GetPlayerName(playerid, playersName, MAX_PLAYER_NAME);
  126. return playersName;
  127. }
  128.  
  129. stock GetPlayersNameEx(playerid)
  130. {
  131. new playersName[MAX_PLAYER_NAME];
  132. GetPlayerName(playerid, playersName, MAX_PLAYER_NAME);
  133. for(new i = 0; i < strlen(playersName); i++)
  134. {
  135. if(playersName[i] == '_')
  136. {
  137. playersName[i] = ' ';
  138. }
  139. }
  140. return playersName;
  141. }
  142.  
  143. stock CrashPlayer(playerid)
  144. {
  145. new Float: playersPos[3];
  146. svAddons_BeingCrashed[playerid] = true;
  147. GetPlayerPos(playerid, playersPos[0], playersPos[1], playersPos[2]);
  148. return svAddons_CrashObject[playerid] = CreatePlayerObject(playerid, 385, playersPos[0], playersPos[1], playersPos[2], 0.0, 0.0, 0.0);
  149. }
  150.  
  151. stock GetPlayersIP(playerid)
  152. {
  153. new playersIP[17];
  154. GetPlayerIp(playerid, playersIP, 17);
  155. return playersIP;
  156. }
  157.  
  158. stock ExplodePlayer(playerid)
  159. {
  160. new Float: playersPos[3];
  161. GetPlayerPos(playerid, playersPos[0], playersPos[1], playersPos[2]);
  162. return CreateExplosion(playersPos[0], playersPos[1], playersPos[2], 6, 10.0);
  163. }
  164.  
  165. stock ExplodeVehicle(vehicleid)
  166. {
  167. new Float: vehiclesPos[3];
  168. GetVehiclePos(vehicleid, vehiclesPos[0], vehiclesPos[1], vehiclesPos[2]);
  169. return CreateExplosion(vehiclesPos[0], vehiclesPos[1], vehiclesPos[2], 6, 10.0);
  170. }
  171.  
  172. stock SetPlayerMoney(playerid, amount)
  173. {
  174. ResetPlayerMoney(playerid);
  175. return GivePlayerMoney(playerid, amount);
  176. }
  177.  
  178. stock GivePlayerJetpack(playerid)
  179. {
  180. return SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USEJETPACK);
  181. }
  182.  
  183. stock IsPlayerSpawned(playerid)
  184. {
  185. new playerState = GetPlayerState(playerid);
  186. return ((playerState >= 1 && playerState <= 6) || playerState == 8);
  187. }
  188.  
  189. stock GetVehicleInfo(vehicleid, infoType)
  190. {
  191. new vInfo[7];
  192. GetVehicleParamsEx(vehicleid, vInfo[0], vInfo[1], vInfo[2], vInfo[3], vInfo[4], vInfo[5], vInfo[6]);
  193. return (infoType <= 6) ? vInfo[infoType] : -1;
  194. }
  195.  
  196. stock SetVehicleInfo(vehicleid, infoType, value)
  197. {
  198. new vInfo[7];
  199. GetVehicleParamsEx(vehicleid, vInfo[0], vInfo[1], vInfo[2], vInfo[3], vInfo[4], vInfo[5], vInfo[6]);
  200. if(infoType <= 6) vInfo[infoType] = value;
  201. return (infoType <= 6) ? SetVehicleParamsEx(vehicleid, vInfo[0], vInfo[1], vInfo[2], vInfo[3], vInfo[4], vInfo[5], vInfo[6]) : -1;
  202. }
  203.  
  204. stock IsPlayerInVehicleFireMode(playerid)
  205. {
  206. return (GetPlayerCameraMode(playerid) == 55);
  207. }
  208.  
  209. stock GetVehicleDriver(vehicleid)
  210. {
  211. new vehicleDriver = INVALID_PLAYER_ID;
  212.  
  213. for(new i = 0; i < MAX_PLAYERS; i++)
  214. {
  215. if(IsPlayerConnected(i))
  216. {
  217. if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
  218. {
  219. if(GetPlayerVehicleID(i) == vehicleid)
  220. {
  221. vehicleDriver = i;
  222. break;
  223. }
  224. }
  225. }
  226. }
  227.  
  228. return vehicleDriver;
  229. }
  230.  
  231. stock GetVehiclePassengers(vehicleid, &passengerOne = INVALID_PLAYER_ID, &passengerTwo = INVALID_PLAYER_ID, &passengerThree = INVALID_PLAYER_ID)
  232. {
  233. for(new i = 0; i < MAX_PLAYERS; i++)
  234. {
  235. if(IsPlayerConnected(i))
  236. {
  237. if(GetPlayerState(i) == PLAYER_STATE_PASSENGER)
  238. {
  239. if(GetPlayerVehicleID(i) == vehicleid)
  240. {
  241. switch(GetPlayerVehicleSeat(i))
  242. {
  243. case 1: passengerOne = i;
  244. case 2: passengerTwo = i;
  245. case 3: passengerThree = i;
  246. }
  247. }
  248. }
  249. }
  250. }
  251. }
  252.  
  253. stock GetVehicleNumberPlate(vehicleid)
  254. {
  255. return (svAddons_cVehiclePlate[vehicleid] == true) ? svAddons_VehiclePlate[vehicleid] : "XYZR 000";
  256. }
  257.  
  258. stock IsPlayerSpectating(playerid)
  259. {
  260. return (GetPlayerState(playerid) == PLAYER_STATE_SPECTATING):
  261. }
  262.  
  263. stock GetPlayerObjectEditingState(playerid)
  264. {
  265. return svAddons_EditingObjectState[playerid];
  266. }
  267.  
  268. stock GetPlayerEditingObject(playerid)
  269. {
  270. return (svAddons_EditingObjectState[playerid] == OBJECT_EDITING_NONE) ? -1 : svAddons_EditingObject[playerid];
  271. }
  272.  
  273. stock RemovePlayerWeapon(playerid, weaponid)
  274. {
  275. return SetPlayerAmmo(playerid, weaponid, 0);
  276. }
  277.  
  278. stock ClosePlayerDialog(playerid)
  279. {
  280. return ShowPlayerDialog(playerid, -1, 1, " ", " ", " ", "");
  281. }
  282.  
  283. stock SetPlayerDeathEffect(playerid, deffid)
  284. {
  285. return svAddons_DeathEffect[playerid] = deffid;
  286. }
  287.  
  288. stock GetPlayerDeathEffect(playerid)
  289. {
  290. return svAddons_DeathEffect[playerid];
  291. }
  292.  
  293. stock DisableSprunkMachines()
  294. {
  295. return svAddons_DisabledSprunk = true;
  296. }
  297.  
  298. stock ChangeServerPassword(password[])
  299. {
  300. new rconCMD[50];
  301. format(rconCMD, sizeof(rconCMD), "password %s", password);
  302. return SendRconCommand(rconCMD);
  303. }
  304.  
  305. stock LoadFilterscript(scriptName[], bool: reload = false)
  306. {
  307. new rconCMD[50], sof = sizeof(rconCMD);
  308. format(rconCMD, sof, "loadfs %s", scriptName);
  309. if(reload == true)
  310. {
  311. format(rconCMD, sof, "re%s", rconCMD);
  312. }
  313. return SendRconCommand(rconCMD);
  314. }
  315.  
  316. stock UnloadFilterscript(scriptName[])
  317. {
  318. new rconCMD[50];
  319. format(rconCMD, sizeof(rconCMD), "unloadfs %s", scriptName);
  320. return SendRconCommand(rconCMD);
  321. }
  322.  
  323. stock ChangeServerName(serverName[])
  324. {
  325. new rconCMD[50];
  326. format(rconCMD, sizeof(rconCMD), "hostname %s", serverName);
  327. return SendRconCommand(rconCMD);
  328. }
  329.  
  330. stock SendServerRCONMessage(message[])
  331. {
  332. new rconCMD[120];
  333. format(rconCMD, sizeof(rconCMD), "say %s", message);
  334. return SendRconCommand(rconCMD);
  335. }
  336.  
  337. stock SendMessageToRCONAdmins(color, message[])
  338. {
  339. for(new i = 0; i < MAX_PLAYERS; i++)
  340. {
  341. if(IsPlayerAdmin(i))
  342. {
  343. SendClientMessage(i, color, message);
  344. }
  345. }
  346. }
  347.  
  348. stock ChangeServerWebsite(url[])
  349. {
  350. new rconCMD[128];
  351. format(rconCMD, sizeof(rconCMD), "weburl %s", url);
  352. return SendRconCommand(rconCMD);
  353. }
  354.  
  355. stock ChangeMapName(mName[])
  356. {
  357. new rconCMD[60];
  358. format(rconCMD, sizeof(rconCMD), "mapname %s", mName);
  359. return SendRconCommand(rconCMD);
  360. }
  361.  
  362. stock IsValidSkin(skinID)
  363. {
  364. return (skinID != 74);
  365. }
  366.  
  367. stock ClearPlayersChat(playerid, bool: includeScrollingChat = false)
  368. {
  369. for(new i = 0; i < (includeScrollingChat == true) ? 100 : 25; i++)
  370. {
  371. SendClientMessage(playerid, -1, "");
  372. }
  373. }
  374.  
  375. stock ClearAllPlayersChat(bool: includeScrollingChat = false)
  376. {
  377. for(new i = 0; i < (includeScrollingChat == true) ? 100 : 25; i++)
  378. {
  379. SendClientMessageToAll(-1, "");
  380. }
  381. }
  382.  
  383. stock TeleportPlayerToPlayer(playerid, giveplayerid, Float: offsetX = 1.0, Float: offsetY = 0.0, Float: offsetZ = 0.0)
  384. {
  385. new Float: playersPos[3];
  386. GetPlayerPos(giveplayerid, playersPos[0], playersPos[1], playersPos[2]);
  387. return SetPlayerPos(playerid, playersPos[0] + offsetX, playersPos[1] + offsetY, playersPos[2] + offsetZ);
  388. }
  389.  
  390. stock StopVehicleMovement(vehicleid)
  391. {
  392. return SetVehicleVelocity(vehicleid, 0.0, 0.0, 0.0);
  393. }
  394.  
  395. stock GetVehicleSpeed(vehicleid)
  396. {
  397. new Float: vehiclesVelocity[3];
  398. GetVehicleVelocity(vehicleid, vehiclesVelocity[0], vehiclesVelocity[1], vehiclesVelocity[2]);
  399. return floatround(floatsqroot((vehiclesVelocity[0]*vehiclesVelocity[0]+vehiclesVelocity[1]*vehiclesVelocity[1])) * 100.0 * 1.6);
  400. }
  401.  
  402. stock GetVehicleModelName(modelID)
  403. {
  404. new vehiclesName[25];
  405. if(modelID >= 400 && modelID <= 612)
  406. {
  407. format(vehiclesName, sizeof(vehiclesName), "%s", svAddons_VehicleNames[modelID - 400]);
  408. }
  409. return vehiclesName;
  410. }
  411.  
  412. stock GetVehicleIDFromName(string[], bool: useFind = false)
  413. {
  414.  
  415. if(string[0] >= '0' && string[0] <= '9')
  416. {
  417. new id = strval(string);
  418. if(id >= 400 && id <= 612)
  419. {
  420. return id;
  421. }
  422. }
  423. else
  424. {
  425. if(useFind == false)
  426. {
  427. for(new i = 0, sof = sizeof(svAddons_VehicleNames); i < sof; i++)
  428. {
  429. if(!strcmp(svAddons_VehicleNames[i], string, true))
  430. {
  431. return i + 400;
  432. }
  433. }
  434. }
  435. else if(useFind == true)
  436. {
  437. for(new i = 0, sof = sizeof(svAddons_VehicleNames); i < sof; i++)
  438. {
  439. if(strfind(svAddons_VehicleNames[i], string, true) != -1)
  440. {
  441. return i + 400;
  442. }
  443. }
  444. }
  445. }
  446.  
  447. return 0;
  448. }
  449.  
  450. stock GetWeaponID(weaponName[], bool: ignoreCase = true, bool: useFind = false)
  451. {
  452. new weaponID = -1;
  453. if(useFind == false)
  454. {
  455. for(new i = 0, sof = sizeof(svAddons_WeaponNames); i < sof; i++)
  456. {
  457. if(!strcmp(svAddons_WeaponNames[i], weaponName, ignoreCase))
  458. {
  459. weaponID = i;
  460. break;
  461. }
  462. }
  463. }
  464. else if(useFind == true)
  465. {
  466. for(new i = 0, sof = sizeof(svAddons_WeaponNames); i < sof; i++)
  467. {
  468. if(strfind(svAddons_WeaponNames[i], weaponName, ignorecase) > -1)
  469. {
  470. weaponID = i;
  471. break;
  472. }
  473. }
  474. }
  475. return weaponID;
  476. }
  477.  
  478. stock GetPlayerIDFromIP(ip[], bool: useFind = false)
  479. {
  480. new playerid = INVALID_PLAYER_ID, playersIP[17];
  481. if(useFind == false)
  482. {
  483. for(new i = 0; i < MAX_PLAYERS; i++)
  484. {
  485. if(IsPlayerConnected(i))
  486. {
  487. GetPlayerIp(i, playersIP, 17);
  488. if(!strcmp(playersIP, ip))
  489. {
  490. playerid = i;
  491. break;
  492. }
  493. }
  494. }
  495. }
  496. else if(useFind == true)
  497. {
  498. for(new i = 0; i < MAX_PLAYERS; i++)
  499. {
  500. if(IsPlayerConnected(i))
  501. {
  502. GetPlayerIp(i, playersIP, 17);
  503. if(strfind(playersIP, ip) > -1)
  504. {
  505. playerid = i;
  506. break;
  507. }
  508. }
  509. }
  510. }
  511. return playerid;
  512. }
  513.  
  514. stock CountTotalPlayers()
  515. {
  516. new count;
  517. for(new i = 0; i < MAX_PLAYERS; i++)
  518. {
  519. if(IsPlayerConnected(i))
  520. {
  521. count++;
  522. }
  523. }
  524. return count;
  525. }
  526.  
  527. stock CountTotalRCONAdmins()
  528. {
  529. new count;
  530. for(new i = 0; i < MAX_PLAYERS; i++)
  531. {
  532. if(IsPlayerAdmin(i))
  533. {
  534. count++;
  535. }
  536. }
  537. return count;
  538. }
  539.  
  540. stock CountTotalNPCs()
  541. {
  542. new count;
  543. for(new i = 0; i < MAX_PLAYERS; i++)
  544. {
  545. if(IsPlayerNPC(i))
  546. {
  547. count++;
  548. }
  549. }
  550. return count;
  551. }
  552.  
  553. stock CountTotalPausedPlayers()
  554. {
  555. new count;
  556. for(new i = 0; i < MAX_PLAYERS; i++)
  557. {
  558. if(IsPlayerConnected(i))
  559. {
  560. if(svAddons_PlayerTabbed[i] == true)
  561. {
  562. count++;
  563. }
  564. }
  565. }
  566. return count;
  567. }
  568.  
  569. stock Float: GetVehiclesAngle(vehicleid)
  570. {
  571. new Float: vehiclesAngle;
  572. GetVehicleZAngle(vehicleid, vehiclesAngle);
  573. return vehiclesAngle;
  574. }
  575.  
  576. stock Float: GetVehiclesHealth(vehicleid)
  577. {
  578. new Float: vehiclesHealth;
  579. GetVehicleHealth(vehicleid, vehiclesHealth);
  580. return vehiclesHealth;
  581. }
  582.  
  583. stock Float: GetPlayersHealth(playerid)
  584. {
  585. new Float: playersHealth;
  586. GetPlayerHealth(playerid, playersHealth);
  587. return playersHealth;
  588. }
  589.  
  590. stock Float: GetPlayersArmour(playerid)
  591. {
  592. new Float: playersArmor;
  593. GetPlayerArmour(playerid, playersArmor);
  594. return playersArmor);
  595. }
  596.  
  597. stock EnableWhitelist(mode = WHITELIST_MODE_ALLOWPLAYER, ip[] = "")
  598. {
  599. if(mode == WHITELIST_MODE_NONE)
  600. {
  601. for(new i = 0; i < MAX_PLAYERS; i++)
  602. {
  603. svAddons_Whitelisted[i] = false;
  604. }
  605. }
  606. else if(mode == WHITELIST_MODE_SPECIFICIP)
  607. {
  608. format(svAddons_WhitelistIP, 17, ip);
  609. }
  610.  
  611. return svAddons_Whitelist = mode;
  612. }
  613.  
  614. stock GetWhitelistMode()
  615. {
  616. return svAddons_Whitelist;
  617. }
  618.  
  619. stock AddPlayerToWhitelist(playerid)
  620. {
  621. if(svAddons_Whitelist != WHITELIST_MODE_ALLOWPLAYER)
  622. {
  623. return printf("(svAddons) AddPlayerToWhitelist(playerid = %d) failed because whitelist mode is not WHITELIST_MODE_ALLOWPLAYER", playerid);
  624. }
  625.  
  626. return svAddons_Whitelisted[playerid] = true;
  627. }
  628.  
  629. stock IsPlayerWhitelisted(playerid)
  630. {
  631. return svAddons_Whitelisted[playerid];
  632. }
  633.  
  634. stock GetVehicleInterior(vehicleid)
  635. {
  636. return svAddons_VehicleInterior[vehicleid];
  637. }
  638.  
  639. stock IsPlayerBehindVehicle(playerid, vehicleid)
  640. {
  641. new Float: vehicleInfo[3];
  642. GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_WHEELSREAR, vehicleInfo[0], vehicleInfo[1], vehicleInfo[2]);
  643. return (IsPlayerInAnyVehicle(playerid)) ? 0 : IsPlayerInRangeOfPoint(playerid, 2.0, vehicleInfo[0], vehicleInfo[1], vehicleInfo[2];
  644. }
  645.  
  646. stock ReconnectPlayer(playerid)
  647. {
  648. new rconCMD[50];
  649. svAddons_Reconnecting[playerid] = true;
  650. GetPlayerIp(playerid, svAddons_ReconnectingIP[playerid], 17);
  651. format(rconCMD, sizeof(rconCMD), "banip %s", svAddons_RconnectingIP[playerid]);
  652. return SendRconCommand(rconCMD);
  653. }
  654.  
  655. stock GetVehicleTrailerCount(vehicleid)
  656. {
  657. return svAddons_VehicleTrailers[vehicleid];
  658. }
  659.  
  660. public svAddons_DeleteEffect(objectid)
  661. {
  662. return DestroyObject(objectid);
  663. }
  664.  
  665. stock ShakePlayerScreen(playerid, duration = 1250)
  666. {
  667. SetTimerEx("svAddons_StopShaking", duration, 0, "i", playerid);
  668. return SetPlayerDrunkLevel(playerid, 5000);
  669. }
  670.  
  671. public svAddons_StopShaking(playerid)
  672. {
  673. return SetPlayerDrunkLevel(playerid, 0);
  674. }
  675.  
  676. stock PlayAudioStreamForPlayerEx(playerid, url[], audioLen = -1, loop = -1)
  677. {
  678. if(audioLen > -1)
  679. {
  680. if(loop > -1)
  681. {
  682. svAddons_PlayerAudioLoops[playerid] = loop;
  683. svAddons_PlayerLoopTime[playerid] = audioLen;
  684. }
  685.  
  686. SetTimerEx("svAd_StopAudioStreamForPlayerEx", audioLen, 0, "i", playerid);
  687. }
  688.  
  689. return PlayAudioStreamForPlayer(playerid, url, 0.0, 0.0, 0.0, 0.0, 0);
  690. }
  691.  
  692. public svAd_StopAudioStreamForPlayerEx(playerid)
  693. {
  694. svAddons_PlayerAudioLoops[playerid]--;
  695.  
  696. if(!svAddons_PlayerAudioLoops[playerid])
  697. {
  698. svAddo_StopAudioStreamForPlayer(playerid);
  699. }
  700. else
  701. {
  702. PlayAudioStreamForPlayer(playerid, svAddons_oldURL[playerid]);
  703. SetTimerEx("svAd_StopAudioStreamForPlayerEx", svAddons_PlayerLoopTime[playerid], 0, "i", playerid);
  704. }
  705.  
  706. return 1;
  707. }
  708.  
  709. stock svAddo_PlayAudioStreamForPlayer(playerid, url[], Float: posX = 0.0, Float: posY = 0.0, Float: posZ = 0.0, Float: distance = 50.0, usepos = 0)
  710. {
  711. new string[256];
  712. format(svAddons_oldURL[playerid], 256, url);
  713. format(string, sizeof(string), "Audio stream: %s", url);
  714. //CallLocalFunction("OnPlayerStreamedAudioChange", "dds", playerid, 0, url);
  715. CallLocalFunction("OnReceiveClientMessage", "dds", playerid, 0x33AA33AA, string);
  716. return PlayAudioStreamForPlayer(playerid, url, posX, posY, posZ, distance, usepos);
  717. }
  718.  
  719. #if defined _ALS_PlayAudioStreamForPlayer
  720. #undef PlayAudioStreamForPlayer
  721. #else
  722. #define _ALS_PlayAudioStreamForPlayer
  723. #endif
  724. #define PlayAudioStreamForPlayer svAddo_PlayAudioStreamForPlayer
  725.  
  726. stock svAddo_StopAudioStreamForPlayer(playerid)
  727. {
  728. svAddons_PlayerAudioLoops[playerid] = 0;
  729. //CallLocalFunction("OnPlayerStreamedAudioChange", "dds", playerid, 1, svAddons_oldURL[playerid]);
  730. return StopAudioStreamForPlayer(playerid);
  731. }
  732.  
  733. #if defined _ALS_StopAudioStreamForPlayer
  734. #undef StopAudioStreamForPlayer
  735. #else
  736. #define _ALS_StopAudioStreamForPlayer
  737. #endif
  738. #define StopAudioStreamForPlayer svAddo_StopAudioStreamForPlayer
  739.  
  740. stock svAddon_SetPlayerSpecialAction(playerid, actionid)
  741. {
  742. if(actionid == SPECIAL_ACTION_USECELLPHONE)
  743. {
  744. SetPlayerAttachedObject(playerid, 9, 330, 6);
  745. }
  746. else if(actionid == SPECIAL_ACTION_STOPUSECELLPHONE)
  747. {
  748. RemovePlayerAttachedObject(playerid, 9);
  749. }
  750.  
  751. return SetPlayerSpecialAction(playerid, actionid);
  752. }
  753.  
  754. #if defined _ALS_SetPlayerSpecialAction
  755. #undef SetPlayerSpecialAction
  756. #else
  757. #define _ALS_SetPlayerSpecialAction
  758. #endif
  759. #define SetPlayerSpecialAction svAddon_SetPlayerSpecialAction
  760.  
  761. stock svAddons_CreateVehicle(vehicletype, Float: x, Float: y, Float: z, Float: rotation, color1, color2, respawn_delay)
  762. {
  763. new vehicleid = CreateVehicle(vehicletype, x, y, z, rotation, color1, color2, respawn_delay);
  764. CallLocalFunction("OnVehicleCreate", "d", vehicleid);
  765. svAddons_cVehiclePlate[vehicleid] = false;
  766. svAddons_VehicleInterior[vehicleid] = 0;
  767. svAddons_VehicleTrailers[vehicleid] = 0;
  768. return vehicleid;
  769. }
  770.  
  771. #if defined _ALS_CreateVehicle
  772. #undef CreateVehicle
  773. #else
  774. #define _ALS_CreateVehicle
  775. #endif
  776. #define CreateVehicle svAddons_CreateVehicle
  777.  
  778. stock svAddons_AddStaticVehicle(modelid, Float: spawn_x, Float: spawn_y, Float: spawn_z, Float: z_angle, color1, color2)
  779. {
  780. new vehicleid = AddStaticVehicle(modelid, spawn_x, spawn_y, spawn_z, z_angle, color1, color2);
  781. CallLocalFunction("OnVehicleCreate", "d", vehicleid);
  782. svAddons_cVehiclePlate[vehicleid] = false;
  783. svAddons_VehicleInterior[vehicleid] = 0;
  784. svAddons_VehicleTrailers[vehicleid] = 0;
  785. return vehicleid;
  786. }
  787.  
  788. #if defined _ALS_AddStaticVehicle
  789. #undef AddStaticVehicle
  790. #else
  791. #define _ALS_AddStaticVehicle
  792. #endif
  793. #define AddStaticVehicle svAddons_AddStaticVehicle
  794.  
  795. stock svAddons_AddStaticVehicleEx(modelid, Float: spawn_x, Float: spawn_y, Float: spawn_z, Float: z_angle, color1, color2, respawn_delay)
  796. {
  797. new vehicleid = AddStaticVehicleEx(modelid, spawn_x, spawn_y, spawn_z, z_angle, color1, color2, respawn_delay);
  798. CallLocalFunction("OnVehicleCreate", "d", vehicleid);
  799. svAddons_cVehiclePlate[vehicleid] = false;
  800. svAddons_VehicleInterior[vehicleid] = 0;
  801. svAddons_VehicleTrailers[vehicleid] = 0;
  802. return vehicleid;
  803. }
  804.  
  805. #if defined _ALS_AddStaticVehicleEx
  806. #undef AddStaticVehicleEx
  807. #else
  808. #define _ALS_AddStaticVehicleEx
  809. #endif
  810. #define AddStaticVehicleEx svAddons_AddStaticVehicleEx
  811.  
  812. stock svAddon_SetVehicleNumberPlate(vehicleid, numberplate[])
  813. {
  814. svAddons_cVehiclePlate[vehicleid] = true;
  815. format(svAddons_VehiclePlate[vehicleid], 20, numberplate);
  816. CallLocalFunction("OnLicensePlateChange", "ds", vehicleid, numberplate);
  817. return SetVehicleNumberPlate(vehicleid, numberplate);
  818. }
  819.  
  820. #if defined _ALS_SetVehicleNumberPlate
  821. #undef SetVehicleNumberPlate
  822. #else
  823. #define _ALS_SetVehicleNumberPlate
  824. #endif
  825. #define SetVehicleNumberPlate svAddon_SetVehicleNumberPlate
  826.  
  827. stock svAddons_EditObject(playerid, objectid)
  828. {
  829. svAddons_EditingObject[playerid] = objectid;
  830. svAddons_EditingObjectState[playerid] = OBJECT_EDITING_NORMAL;
  831. return EditObject(playerid, objectid);
  832. }
  833.  
  834. #if defined _ALS_EditObject
  835. #undef EditObject
  836. #else
  837. #define _ALS_EditObject
  838. #endif
  839. #define EditObject svAddons_EditObject
  840.  
  841. stock svAddons_EditPlayerObject(playerid, objectid)
  842. {
  843. svAddons_EditingObject[playerid] = objectid;
  844. svAddons_EditingObjectState[playerid] = OBJECT_EDITING_PLAYER;
  845. return EditPlayerObject(playerid, objectid);
  846. }
  847.  
  848. #if defined _ALS_EditPlayerObject
  849. #undef EditPlayerObject
  850. #else
  851. #define _ALS_EditPlayerObject
  852. #endif
  853. #define EditPlayerObject svAddons_EditPlayerObject
  854.  
  855. stock svAddons_EditAttachedObject(playerid, index)
  856. {
  857. svAddons_EditingObjectState[playerid] = OBJECT_EDITING_ATTACHED;
  858. svAddons_EditingObject[playerid] = index;
  859. return EditAttachedObject(playerid, index);
  860. }
  861.  
  862. #if defined _ALS_EditAttachedObject
  863. #undef EditAttachedObject
  864. #else
  865. #define _ALS_EditAttachedObject
  866. #endif
  867. #define EditAttachedObject svAddons_EditAttachedObject
  868.  
  869. stock svAddons_CancelEdit(playerid)
  870. {
  871. svAddons_EditingObjectState[playerid] = OBJECT_EDITING_NONE;
  872. return CancelEdit(playerid);
  873. }
  874.  
  875. #if defined _ALS_CancelEdit
  876. #undef CancelEdit
  877. #else
  878. #define _ALS_CancelEdit
  879. #endif
  880. #define CancelEdit svAddons_CancelEdit
  881.  
  882. stock svAddons_SendClientMessage(playerid, color, message[])
  883. {
  884. CallLocalFunction("OnReceiveClientMessage", "dds", playerid, color, message);
  885. return SendClientMessage(playerid, color, message);
  886. }
  887.  
  888. #if defined _ALS_SendClientMessage
  889. #undef SendClientMessage
  890. #else
  891. #define _ALS_SendClientMessage
  892. #endif
  893. #define SendClientMessage svAddons_SendClientMessage
  894.  
  895. stock svAddons_LinkVehicleToInterior(vehicleid, interiorid)
  896. {
  897. svAddons_VehicleInterior[vehicleid] = interiorid;
  898. return LinkVehicleToInterior(vehicleid, interiorid);
  899. }
  900.  
  901. #if defined _ALS_LinkVehicleToInterior
  902. #undef LinkVehicleToInterior
  903. #else
  904. #define _ALS_LinkVehicleToInterior
  905. #endif
  906. #define LinkVehicleToInterior
  907.  
  908. stock svAddons_AttachTrailerToVehicle(trailerid, vehicleid)
  909. {
  910. svAddons_VehicleTrailers[vehicleid]++;
  911. return AttachTrailerToVehicle(trailerid, vehicleid);
  912. }
  913.  
  914. #if defined _ALS_AttachTrailerToVehicle
  915. #undef AttachTrailerToVehicle
  916. #else
  917. #define _ALS_AttachTrailerToVehicle
  918. #endif
  919. #define AttachTrailerToVehicle svAddons_AttachTrailerToVehicle
  920.  
  921. stock svAdd_DetachTrailerFromVehicle(vehicleid)
  922. {
  923. svAddons_VehicleTrailers[vehicleid]--;
  924. return DetachTrailerFromVehicle(vehicleid);
  925. }
  926.  
  927. #if defined _ALS_DetachTrailerFromVehicle
  928. #undef DetachTrailerFromVehicle
  929. #else
  930. #define _ALS_DetachTrailerFromVehicle
  931. #endif
  932. #define DetachTrailerFromVehicle svAdd_DetachTrailerFromVehicle
  933.  
  934. forward svAddons_OnPlayerConnect(playerid);
  935. public OnPlayerConnect(playerid)
  936. {
  937. svAddons_PlayerAudioLoops[playerid] = 0;
  938. svAddons_EditingObjectState[playerid] = OBJECT_EDITING_NONE;
  939. svAddons_PlayerTabbedUpdates[playerid] = 0;
  940. svAddons_PlayerTabbed[playerid] = false;
  941. svAddons_BeingCrashed[playerid] = false;
  942. svAddons_Whitelisted[playerid] = false;
  943. svAddons_PlayerWeapon[playerid] = 0;
  944. svAddons_InWater[playerid] = false;
  945.  
  946. if(svAddons_DisabledSprunk == true)
  947. {
  948. RemoveBuildingForPlayer(playerid, 955, 0, 0, 0, 3000);
  949. RemoveBuildingForPlayer(playerid, 956, 0, 0, 0, 3000);
  950. RemoveBuildingForPlayer(playerid, 1209, 0, 0, 0, 3000);
  951. RemoveBuildingForPlayer(playerid, 1302, 0, 0, 0, 3000);
  952. RemoveBuildingForPlayer(playerid, 1775, 0, 0, 0, 3000);
  953. RemoveBuildingForPlayer(playerid, 1776, 0, 0, 0, 3000);
  954. }
  955.  
  956. return CallLocalFunction("svAddons_OnPlayerConnect", "d", playerid);
  957. }
  958.  
  959. #if defined _ALS_OnPlayerConnect
  960. #undef OnPlayerConnect
  961. #else
  962. #define _ALS_OnPlayerConnect
  963. #endif
  964. #define OnPlayerConnect svAddons_OnPlayerConnect
  965.  
  966. forward svAddons_OnPlayerDisconnect(playerid, reason);
  967. public OnPlayerDisconnect(playerid, reason)
  968. {
  969. if(svAddons_BeingCrashed[playerid] == true)
  970. {
  971. DestroyPlayerObject(playerid, svAddons_CrashObject[playerid]);
  972. }
  973.  
  974. if(svAddons_Reconnecting[playerid] == true)
  975. {
  976. new rconCMD[50];
  977. svAddons_Reconnecting[playerid] = false;
  978. format(rconCMD, sizeof(rconCMD), "unbanip %s", svAddons_ReconnectingIP[playerid]);
  979. SendRconCommand(rconCMD);
  980. }
  981.  
  982. return CallLocalFunction("svAddons_OnPlayerDisconnect", "dd", playerid, reason);
  983. }
  984.  
  985. #if defined _ALS_OnPlayerDisconnect
  986. #undef OnPlayerDisconnect
  987. #else
  988. #define _ALS_OnPlayerDisconnect
  989. #endif
  990. #define OnPlayerDisconnect svAddons_OnPlayerDisconnect
  991.  
  992. forward svAddons_OnPlayerUpdate(playerid);
  993. public OnPlayerUpdate(playerid)
  994. {
  995. svAddons_PlayerTabbedUpdates[playerid] = 0;
  996.  
  997. if(svAddons_PlayerTabbed[playerid] == true)
  998. {
  999. svAddons_PlayerTabbed[playerid] = false;
  1000. CallLocalFunction("OnPlayerPausedUpdate", "dd", playerid, svAddons_PlayerTabbed[playerid]);
  1001. }
  1002.  
  1003. new playersWeapon = GetPlayerWeapon(playerid);
  1004. if(playersWeapon != svAddons_PlayerWeapon[playerid])
  1005. {
  1006. CallLocalFunction("OnPlayerWeaponUpdate", "ddd", playerid, playersWeapon, svAddons_PlayerWeapon[playerid]);
  1007. svAddons_PlayerWeapon[playerid] = playersWeapon;
  1008. }
  1009.  
  1010. return CallLocalFunction("svAddons_OnPlayerUpdate", "d", playerid);
  1011. }
  1012.  
  1013. #if defined _ALS_OnPlayerUpdate
  1014. #undef OnPlayerUpdate
  1015. #else
  1016. #define _ALS_OnPlayerUpdate
  1017. #endif
  1018. #define OnPlayerUpdate svAddons_OnPlayerUpdate
  1019.  
  1020. forward svAddons_OnPlayerDeath(playerid, killerid, reason);
  1021. public OnPlayerDeath(playerid, killerid, reason)
  1022. {
  1023. switch(svAddons_DeathEffect[playerid])
  1024. {
  1025. case 1:
  1026. {
  1027. new objectid = CreateObject(18668, 0.0, 0.0, -10.0, 0.0, 0.0, 0.0);
  1028. AttachObjectToPlayer(objectid, playerid, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
  1029. SetTimerEx("svAddons_DeleteEffect", 2500, 0, "i", objectid);
  1030. }
  1031.  
  1032. case 2:
  1033. {
  1034. new objectid = CreateObject(18731, 0.0, 0.0, -10.0, 0.0, 0.0, 0.0);
  1035. AttachObjectToPlayer(objectid, playerid, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
  1036. SetTimerEx("svAddons_DeleteEffect", 2500, 0, "i", objectid);
  1037. }
  1038.  
  1039. case 3:
  1040. {
  1041. new Float: playersPos[3];
  1042. GetPlayerPos(playerid, playersPos[0], playersPos[1], playersPos[2]);
  1043. CreateExplosion(playersPos[0], playersPos[1], playersPos[2], 6, 10.0);
  1044. }
  1045.  
  1046. case 4:
  1047. {
  1048. new Float: playersPos[3];
  1049. GetPlayerPos(playerid, playersPos[0], playersPos[1], playersPos[2]);
  1050. CreateExplosion(playersPos[0], playersPos[1], playersPos[2] - 4.5, 6, 10.0);
  1051. }
  1052.  
  1053. case 5:
  1054. {
  1055. new objectid = CreateObject(18688, 0.0, 0.0, -10.0, 0.0, 0.0, 0.0);
  1056. AttachObjectToPlayer(objectid, playerid, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
  1057. SetTimerEx("svAddons_DeleteEffect", 2500, 0, "i", objectid);
  1058. }
  1059. }
  1060. return CallLocalFunction("svAddons_OnPlayerDeath", "ddd", playerid, killerid, reason);
  1061. }
  1062.  
  1063. #if defined _ALS_OnPlayerDeath
  1064. #undef OnPlayerDeath
  1065. #else
  1066. #define _ALS_OnPlayerDeath
  1067. #endif
  1068. #define OnPlayerDeath svAddons_OnPlayerDeath
  1069.  
  1070.  
  1071. forward svAddons_OnFilterScriptInit();
  1072. public OnFilterScriptInit()
  1073. {
  1074. SetTimer("svAddons_Detection", 2000, 1);
  1075. return CallLocalFunction("svAddons_OnFilterScriptInit", "");
  1076. }
  1077.  
  1078. #if defined _ALS_OnFilterScriptInit
  1079. #undef OnFilterScriptInit
  1080. #else
  1081. #define _ALS_OnFilterScriptInit
  1082. #endif
  1083. #define OnFilterScriptInit svAddons_OnFilterScriptInit
  1084.  
  1085. forward svAddons_OnGameModeInit();
  1086. public OnGameModeInit()
  1087. {
  1088. SetTimer("svAddons_Detection", 2000, 1);
  1089. return CallLocalFunction("svAddons_OnGameModeInit", "");
  1090. }
  1091.  
  1092. #if defined _ALS_OnGameModeInit
  1093. #undef OnGameModeInit
  1094. #else
  1095. #define _ALS_OnGameModeInit
  1096. #endif
  1097. #define OnGameModeInit svAddons_OnGameModeInit
  1098.  
  1099. forward svAddons_OnRconLoginAttempt(ip[], password[], success);
  1100. public OnRconLoginAttempt(ip[], password[], success)
  1101. {
  1102. if(svAddons_Whitelist != WHITELIST_MODE_NONE)
  1103. {
  1104. new playerid, playersIP[17];
  1105. for(new i = 0; i < MAX_PLAYERS; i++)
  1106. {
  1107. if(IsPlayerConnected(i))
  1108. {
  1109. GetPlayerIp(i, playersIP, 17);
  1110. if(!strcmp(playersIP, ip))
  1111. {
  1112. playerid = i;
  1113. break;
  1114. }
  1115. }
  1116. }
  1117.  
  1118. switch(svAddons_Whitelist)
  1119. {
  1120. case WHITELIST_MODE_ALLOWPLAYER:
  1121. {
  1122. if(svAddons_Whitelisted[playerid] == false)
  1123. {
  1124. CallLocalFunction("OnRconLoginBlocked", "dssd", playerid, ip, password, success);
  1125. }
  1126. }
  1127.  
  1128. case WHITELIST_MODE_SPECIFICIP:
  1129. {
  1130. if(strcmp(ip, svAddons_WhitelistIP))
  1131. {
  1132. CallLocalFunction("OnRconLoginBlocked", "dssd", playerid, ip, password, success);
  1133. }
  1134. }
  1135.  
  1136. case WHITELIST_MODE_IP_FIND:
  1137. {
  1138. if(strfind(ip, svAddons_WhitelistIP) == -1)
  1139. {
  1140. CallLocalFunction("OnRconLoginBlocked", "dssd", playerid, ip, password, success);
  1141. }
  1142. }
  1143. }
  1144. }
  1145.  
  1146. return CallLocalFunction("svAddons_OnRconLoginAttempt", "ssd", ip, password, success);
  1147. }
  1148.  
  1149. #if defined _ALS_OnRconLoginAttempt
  1150. #undef OnRconLoginAttempt
  1151. #else
  1152. #define _ALS_OnRconLoginAttempt
  1153. #endif
  1154. #define OnRconLoginAttempt svAddons_OnRconLoginAttempt
  1155.  
  1156. forward svAddons_OnVehicleSpawn(vehicleid);
  1157. public OnVehicleSpawn(vehicleid)
  1158. {
  1159. svAddons_VehicleInterior[vehicleid] = 0;
  1160. svAddons_VehicleTrailers[vehicleid] = 0;
  1161. return CallLocalFunction("svAddons_OnVehicleSpawn", "d", vehicleid);
  1162. }
  1163.  
  1164. #if defined _ALS_OnVehicleSpawn
  1165. #undef OnVehicleSpawn
  1166. #else
  1167. #define _ALS_OnVehicleSpawn
  1168. #endif
  1169. #define OnVehicleSpawn svAddons_OnVehicleSpawn
  1170.  
  1171. public svAddons_Detection()
  1172. {
  1173. new animationIndex;
  1174. for(new i = 0; i < MAX_PLAYERS; i++)
  1175. {
  1176. if(svAddons_PlayerTabbed[i] == false)
  1177. {
  1178. if(IsPlayerConnected(i))
  1179. {
  1180. #if defined SVCS_svCheats
  1181. if(svCheats_ReportedTabbed[i] == true)
  1182. {
  1183. svAddons_PlayerTabbed[i] = true;
  1184. CallLocalFunction("OnPlayerPausedUpdate", "dd", i, svAddons_PlayerTabbed[i]);
  1185. break;
  1186. }
  1187. #else
  1188. svAddons_PlayerTabbedUpdates[i]++;
  1189. if(svAddons_PlayerTabbedUpdates[i] > 1)
  1190. {
  1191. svAddons_PlayerTabbedUpdates[i] = 0;
  1192. svAddons_PlayerTabbed[i] = true;
  1193. CallLocalFunction("OnPlayerPausedUpdate", "dd", i, svAddons_PlayerTabbed[i]);
  1194. }
  1195. #endif
  1196. }
  1197. }
  1198.  
  1199. animationIndex = GetPlayerAnimationIndex(i);
  1200. if(svAddons_InWater[i] == false && animationIndex >= 1538 && animationIndex <= 1544 && animationIndex != 1542)
  1201. {
  1202. svAddons_InWater[i] = true;
  1203. CallLocalFunction("OnPlayerWaterStatusUpdate", "dd", i, svAddons_InWater[i]);
  1204. }
  1205. else if(svAddons_InWater[i] == true && animationIndex < 1538 || animationIndex > 1544 || animationIndex == 1542)
  1206. {
  1207. svAddons_InWater[i] = false;
  1208. CallLocalFunction("OnPlayerWaterStatusUpdate", "dd", i, svAddons_InWater[i]);
  1209. }
  1210. }
  1211. return 1;
  1212. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement