fork download
  1. /* ^eXe24^LV×SF×LS™
  2. ================================================================================
  3. Map By Gamer_Z & L4nCeR
  4. Copyright (c) 2009-2010 www.exe24.info
  5. All Rights Reserved.
  6. SAMP 0.3b
  7. ================================================================================
  8. CREDITS:
  9. - LUBY & SEBOS --- SOME FUNCTIONS
  10. Pomoc Przy Mapie: MKQ_ & MV400R
  11. ================================================================================
  12. */
  13. #pragma dynamic 50000000
  14.  
  15. #define forum "www.polski-gold.xaa.pl"
  16. #define wersja "8.31"
  17. #define build "3011"
  18. #define update "13-11-2010"
  19. #define mapname "^eXe24^LV×SF×LS™ "wersja" Build:"build""
  20. #define mapname2 "eXe24 LV+SF+LS DM 24/7"
  21.  
  22. #define ModeONE "^eXe24^LV×SF×LS™ "wersja""
  23. #define ModeTWO "!eXe24! DeathMatch Mode V"wersja""
  24. #define ModeTHREE "!eXe24! Mode v"wersja" build:"build""
  25. #define MapONE "Polskie Party 24/7"
  26. #define MapTWO "Zapraszamy!"
  27. #define MapTHREE "DeathMatch 24/7"
  28.  
  29. #define waga_pwn "2430"
  30. #define waga_amx "1931"
  31. #define ilosc_linijek "52175"
  32.  
  33. #define FLOAT_INFINITY (Float:0x7F800000)
  34. #define FLOAT_NEG_INFINITY (Float:0xFF800000)
  35. #define FLOAT_NAN (Float:0xFFFFFFFF)
  36.  
  37. #define isnull(%1) \
  38. ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
  39.  
  40. #define REGULAMIN 489
  41. #define LOGREGDLG 972
  42. #define MAX_LUDZI_W_MAFIA 10// a kiedys bylo 40...
  43. #define HidePlayerDialog(%1) ShowPlayerDialog(%1,-1,0,"","","","")
  44. #define SuperMenu 8943
  45. #define UZYJ_PEK
  46. #define WARWORLD 33
  47. //#define SD //Debuger
  48. /**************************** Obiekty/Eventy/WG... ****************************/
  49.  
  50. #define UZYJ_MIDO // Obiekty (streamer)
  51. #if defined UZYJ_MIDO
  52. new globalobjects;
  53. #define UZYJ_SIANKO // WG/Arena Siana
  54. #define UZYJ_LOTNISKO // Lotnisko Gamera Pod Mostem SF
  55. #define UZYJ_BOMBA // Bomba Mod
  56. #define UZYJ_OFFROAD // Tor Offroad'owy
  57. #define UZYJ_SPAR // Spar Arena
  58. #define UZYJ_AA // Atlanta City
  59. #define UZYJ_MT // Montgomery
  60. #define UZYJ_EXEBASE // Baza Adminów eXe24
  61. #define UZYJ_RING // Ring Bokserski
  62. #define UZYJ_ELPASSO // Miasto El Passo
  63. #define UZYJ_PARKOURTOR // Parkour Event
  64. #define UZYJ_PB1 // baza graczy1
  65. #define UZYJ_TG // tor gamera
  66. #define UZYJ_DRIFTING // tor drifitng
  67. #define UZYJ_LEPSZELV // ulepszone lv
  68. #define UZYJ_MA // monster arena
  69. #define UZYJ_ATLANTIS // podwodne miasto atlantis
  70. #define UZYJ_STUNT // StuntPark kolo LS by L4nCeR & mkq
  71. #define UZYJ_FIGHTERZ // Baza FighterZ :D
  72. #define UZYJ_AKMAFIA // mini Baza AK :D
  73. #define UZYJ_SA // Miasto San Antonio (liberty city) By L4nCeR 1k obiektów!
  74. #define UZYJ_WYSKOK // Nowy Wyskok by L4nCeR
  75. #define UZYJ_MW // Mega Wyskok by L4nCeR
  76. #define UZYJ_L4nCeRxd // napis L4nCeR w LV :P
  77. #define UZYJ_DH // oswietlone drift hill
  78. #define UZYJ_RPG // arena rpg w wojsku
  79. #define UZYJ_LANCERTOR // tor L4nCeRa
  80. #define UZYJ_WALKIULICZNE //Walki uliczne by MV
  81. #define UZYJ_OBIEKTYWG //Obiekty na WG by MV
  82. #define UZYJ_WOJNA_MORSKA //obiekty wojny morskiej
  83. #define UZYJ_LABIRYNT //Labirynt by PlayBoy_
  84. #define UZYJ_LABIRYNT_WALK //Labirynt by PoluS
  85. #define UZYJ_DWIEWIEZE //Walka l¹dowo - morska
  86. #define UZYJ_SANCHEZ // Tor sanchez'ów by Polus
  87.  
  88. /**************************** Inne Funkcje/Skrypty ****************************/
  89. #define UZYJ_AUTO_RESTART
  90. #define godzina_restartu 3
  91. #define minuta_restartu 0
  92. //restart serwera o godzine 3:00
  93.  
  94. #define UZYJ_NEWSSBASE// Baza mafii S-SKILLS - NIE DO KUPIENIA! JUZ DOSC KURWA TYCH BAZ
  95. #define UZYJ_SSWARLODZ//Tak samo baza SS!!! to samo co gorna...
  96. #define UZYJ_WWII // U¿yj WarWorld
  97. #define UZYJ_LOCK // Zamykanie pojazdów
  98. #define UZYJ_REGULAMIN // Regulamin w GUI
  99. #define UZYJ_NOWYLOGINSYSTEM // Nowy Login System
  100. #define UZYJ_HOSTBAN // Ban Na Hosta
  101. #define UZYJ_LOTTO // Lotto System
  102. #define UZYJ_KATANA // 5up3r k4t4n4 r4pik3 xD
  103. #define UZYJ_SPS // Antycheat!
  104. #define UZYJ_NANIM // Nowe Animacje
  105. #define UZYJ_VOTE // G³osowanie
  106. #define UZYJ_GPS // GPS (namierzanie graczy)
  107. #pragma unused InvisibleColors
  108. #define UZYJ_MAFIA // Mafia System by Luby
  109. #define UZYJ_BANCZASOWY // Ban czasowy
  110. #define UZYJ_FLASHLIGHTS //Migaj¹ce œwiat³a ;D
  111.  
  112. //#define UZYJ_HYDRABOMB // Bombki Hydry ;]
  113. //#define UZYJ_MAPSYSTEM // Map System
  114.  
  115. /****************************** Bazy Graczy/Mafii *****************************/
  116.  
  117. #define UZYJ_MILITARY
  118. #define UZYJ_EPSON
  119. #define UZYJ_SAMPO
  120. #define UZYJ_PODZIEMIE
  121. #define UZYJ_SAS
  122. #define UZYJ_XEROX
  123. #define UZYJ_MOTEL
  124. #define UZYJ_NAKATA
  125. #define UZYJ_TRIDENT
  126. #define UZYJ_GAS
  127. #define UZYJ_PAWN
  128. #define UZYJ_SWAT
  129. #define UZYJ_SAS2
  130. #define UZYJ_ACER
  131. #define UZYJ_FEAR
  132. #define UZYJ_PHOENIX
  133. #define UZYJ_GRAVIS
  134. #define UZYJ_MAXTOR
  135. #define UZYJ_DYSAN
  136. #define UZYJ_BIOSTAR
  137. #define UZYJ_TRACER
  138. #define UZYJ_DELTA
  139. #define UZYJ_WENTO
  140. #define UZYJ_AREA51BASE
  141. #define UZYJ_EROTIC
  142. #define UZYJ_Quad
  143. #define UZYJ_TYSKIE
  144. #define UZYJ_CRYSTAL
  145. #define UZYJ_CMENTARZ
  146. #define UZYJ_BAZAMEGASS
  147. #define UZYJ_EROTIC2
  148. #define UZYJ_TopGun
  149. #define UZYJ_MARIAN
  150.  
  151. #define FILE_BASEOWNERS "_baseowners.ini"
  152. #define UZYJ_PICKUPYBAZ // Pickupy Przed Bazami Graczy
  153.  
  154. /******************************************************************************/
  155. #endif
  156.  
  157. #define FILE_BLACKLIST "blacklist.ini"
  158. #define all_cmds_log "komendy"
  159. #define all_chat "chat"
  160. #define all_joins "joins"
  161. #define PMS "PrivateMessages"
  162. #define log_kills "Zabicia"
  163. #define adminloginlog "adminlogins"
  164. #define kickslog "kicks"
  165. #define banslog "bans"
  166. #define playercrashlog "left_crash"
  167. #define playerleftlog "left_normal"
  168. #define playerkickbanlog "left_kickban"
  169. #define banczasowylog "cbanslog"
  170. // WA¯NE NIE WYWALAÆ!
  171. #define SetCmdCost(%1) if(CheckCostAndCash(playerid,%1,cmd))return 1
  172. #define ToLog(%1,%2) \
  173. new intolog[256];\
  174. format(intolog, 256, %2);\
  175. SaveLog(%1, intolog)
  176.  
  177. #define ToLog2(%1,%2) \
  178. new intolog2[256];\
  179. format(intolog2, 256, %2);\
  180. SaveLog(%1, intolog2)
  181.  
  182. #define BazaNieDlaCiebieCheck(%1,%2,%3)\
  183. if(%3 == 1){\
  184. if(!IsPlayerInMafia(PlayerName(%1),%2) && !IsHead(%1))return SendClientMessage(%1, CWARN, "Nie mo¿esz u¿yæ tej komendy.");\
  185. }else{\
  186. if(strcmp(udb_encode(PlayerName(%1)),udb_encode(%2),false) && !IsHead(%1))return SendClientMessage(%1, CWARN, "Nie mo¿esz u¿yæ tej komendy.");\
  187. }
  188.  
  189. #define BazaNieDlaCiebieCheckd(%1,%2,%3,%4)\
  190. if(%3 == 1){\
  191. if(!IsPlayerInMafia(PlayerName(%1),%2) && !IsPlayerInMafia(PlayerName(%1),%4) && !IsHead(%1))return SendClientMessage(%1, CWARN, "Nie mo¿esz u¿yæ tej komendy.");\
  192. }else{\
  193. if(strcmp(udb_encode(PlayerName(%1)),udb_encode(%2),false) && strcmp(udb_encode(PlayerName(%1)),udb_encode(%4),false) && !IsHead(%1))return SendClientMessage(%1, CWARN, "Nie mo¿esz u¿yæ tej komendy.");\
  194. }
  195.  
  196. #define DRIFT_MINKAT 10.0
  197. #define DRIFT_MAXKAT 90.0
  198. #define DRIFT_SPEED 30.0
  199. #define randomcolor ColorsAlpha77[random(sizeof(ColorsAlpha77))]
  200.  
  201. #pragma tabsize 4
  202. #pragma rational Float
  203.  
  204. #define SPECIAL_ACTION_NONE 0
  205. #define SPECIAL_ACTION_DUCK 1
  206. #define SPECIAL_ACTION_USEJETPACK 2
  207. #define SPECIAL_ACTION_ENTER_VEHICLE 3
  208. #define SPECIAL_ACTION_EXIT_VEHICLE 4
  209. #define SPECIAL_ACTION_DANCE1 5
  210. #define SPECIAL_ACTION_DANCE2 6
  211. #define SPECIAL_ACTION_DANCE3 7
  212. #define SPECIAL_ACTION_DANCE4 8
  213. #define SPECIAL_ACTION_HANDSUP 10
  214. #define SPECIAL_ACTION_USECELLPHONE 11
  215. #define SPECIAL_ACTION_SITTING 12
  216. #define SPECIAL_ACTION_STOPUSECELLPHONE 13
  217. #define SPECIAL_ACTION_DRINK_BEER 20
  218. #define SPECIAL_ACTION_SMOKE_CIGGY 21
  219. #define SPECIAL_ACTION_DRINK_WINE 22
  220. #define SPECIAL_ACTION_DRINK_SPRUNK 23
  221. #define FIGHT_STYLE_NORMAL 4
  222. #define FIGHT_STYLE_BOXING 5
  223. #define FIGHT_STYLE_KUNGFU 6
  224. #define FIGHT_STYLE_KNEEHEAD 7
  225. #define FIGHT_STYLE_GRABKICK 15
  226. #define FIGHT_STYLE_ELBOW 16
  227. #define WEAPONSKILL_PISTOL 0
  228. #define WEAPONSKILL_PISTOL_SILENCED 1
  229. #define WEAPONSKILL_DESERT_EAGLE 2
  230. #define WEAPONSKILL_SHOTGUN 3
  231. #define WEAPONSKILL_SAWNOFF_SHOTGUN 4
  232. #define WEAPONSKILL_SPAS12_SHOTGUN 5
  233. #define WEAPONSKILL_MICRO_UZI 6
  234. #define WEAPONSKILL_MP5 7
  235. #define WEAPONSKILL_AK47 8
  236. #define WEAPONSKILL_M4 9
  237. #define WEAPONSKILL_SNIPERRIFLE 10
  238. #define MAX_CHATBUBBLE_LENGTH 144
  239. #define SPECTATE_MODE_NORMAL 1
  240. #define SPECTATE_MODE_FIXED 2
  241. #define SPECTATE_MODE_SIDE 3
  242. #define PLAYER_RECORDING_TYPE_NONE 0
  243. #define PLAYER_RECORDING_TYPE_DRIVER 1
  244. #define PLAYER_RECORDING_TYPE_ONFOOT 2
  245. #define CARMODTYPE_SPOILER 0
  246. #define CARMODTYPE_HOOD 1
  247. #define CARMODTYPE_ROOF 2
  248. #define CARMODTYPE_SIDESKIRT 3
  249. #define CARMODTYPE_LAMPS 4
  250. #define CARMODTYPE_NITRO 5
  251. #define CARMODTYPE_EXHAUST 6
  252. #define CARMODTYPE_WHEELS 7
  253. #define CARMODTYPE_STEREO 8
  254. #define CARMODTYPE_HYDRAULICS 9
  255. #define CARMODTYPE_FRONT_BUMPER 10
  256. #define CARMODTYPE_REAR_BUMPER 11
  257. #define CARMODTYPE_VENT_RIGHT 12
  258. #define CARMODTYPE_VENT_LEFT 13
  259. #define MAX_PLAYER_NAME (24)
  260. #define MAX_PLAYERS (81)
  261. #define MAX_VEHICLES (2000)
  262. #define INVALID_PLAYER_ID (0xFFFF)
  263. #define INVALID_VEHICLE_ID (0xFFFF)
  264. #define NO_TEAM (255)
  265. #define MAX_OBJECTS (400)
  266. #define INVALID_OBJECT_ID (0xFFFF)
  267. #define MAX_GANG_ZONES (1024)
  268. #define MAX_TEXT_DRAWS (2048)
  269. #define MAX_MENUS (128)
  270. #define MAX_3DTEXT_GLOBAL (1024)
  271. #define MAX_3DTEXT_PLAYER (1024)
  272. #define MAX_PICKUPS (2048)
  273. #define INVALID_MENU (0xFF)
  274. #define INVALID_TEXT_DRAW (0xFFFF)
  275. #define INVALID_GANG_ZONE (-1)
  276. #define INVALID_3DTEXT_ID (0xFFFF)
  277. #define DIALOG_STYLE_MSGBOX 0
  278. #define DIALOG_STYLE_INPUT 1
  279. #define DIALOG_STYLE_LIST 2
  280. #define PLAYER_STATE_NONE (0)
  281. #define PLAYER_STATE_ONFOOT (1)
  282. #define PLAYER_STATE_DRIVER (2)
  283. #define PLAYER_STATE_PASSENGER (3)
  284. #define PLAYER_STATE_EXIT_VEHICLE (4)
  285. #define PLAYER_STATE_ENTER_VEHICLE_DRIVER (5)
  286. #define PLAYER_STATE_ENTER_VEHICLE_PASSENGER (6)
  287. #define PLAYER_STATE_WASTED (7)
  288. #define PLAYER_STATE_SPAWNED (8)
  289. #define PLAYER_STATE_SPECTATING (9)
  290. #define PLAYER_MARKERS_MODE_OFF (0)
  291. #define PLAYER_MARKERS_MODE_GLOBAL (1)
  292. #define PLAYER_MARKERS_MODE_STREAMED (2)
  293. #define WEAPON_BRASSKNUCKLE (1)
  294. #define WEAPON_GOLFCLUB (2)
  295. #define WEAPON_NITESTICK (3)
  296. #define WEAPON_KNIFE (4)
  297. #define WEAPON_BAT (5)
  298. #define WEAPON_SHOVEL (6)
  299. #define WEAPON_POOLSTICK (7)
  300. #define WEAPON_KATANA (8)
  301. #define WEAPON_CHAINSAW (9)
  302. #define WEAPON_DILDO (10)
  303. #define WEAPON_DILDO2 (11)
  304. #define WEAPON_VIBRATOR (12)
  305. #define WEAPON_VIBRATOR2 (13)
  306. #define WEAPON_FLOWER (14)
  307. #define WEAPON_CANE (15)
  308. #define WEAPON_GRENADE (16)
  309. #define WEAPON_TEARGAS (17)
  310. #define WEAPON_MOLTOV (18)
  311. #define WEAPON_COLT45 (22)
  312. #define WEAPON_SILENCED (23)
  313. #define WEAPON_DEAGLE (24)
  314. #define WEAPON_SHOTGUN (25)
  315. #define WEAPON_SAWEDOFF (26)
  316. #define WEAPON_SHOTGSPA (27)
  317. #define WEAPON_UZI (28)
  318. #define WEAPON_MP5 (29)
  319. #define WEAPON_AK47 (30)
  320. #define WEAPON_M4 (31)
  321. #define WEAPON_TEC9 (32)
  322. #define WEAPON_RIFLE (33)
  323. #define WEAPON_SNIPER (34)
  324. #define WEAPON_ROCKETLAUNCHER (35)
  325. #define WEAPON_HEATSEEKER (36)
  326. #define WEAPON_FLAMETHROWER (37)
  327. #define WEAPON_MINIGUN (38)
  328. #define WEAPON_SATCHEL (39)
  329. #define WEAPON_BOMB (40)
  330. #define WEAPON_SPRAYCAN (41)
  331. #define WEAPON_FIREEXTINGUISHER (42)
  332. #define WEAPON_CAMERA (43)
  333. #define WEAPON_PARACHUTE (46)
  334. #define WEAPON_VEHICLE (49)
  335. #define WEAPON_DROWN (53)
  336. #define WEAPON_COLLISION (54)
  337. #define KEY_ACTION (1)
  338. #define KEY_CROUCH (2)
  339. #define KEY_FIRE (4)
  340. #define KEY_SPRINT (8)
  341. #define KEY_SECONDARY_ATTACK (16)
  342. #define KEY_JUMP (32)
  343. #define KEY_LOOK_RIGHT (64)
  344. #define KEY_HANDBRAKE (128)
  345. #define KEY_LOOK_LEFT (256)
  346. #define KEY_SUBMISSION (512)
  347. #define KEY_LOOK_BEHIND (512)
  348. #define KEY_WALK (1024)
  349. #define KEY_ANALOG_UP (2048)
  350. #define KEY_ANALOG_DOWN (4096)
  351. #define KEY_ANALOG_LEFT (8192)
  352. #define KEY_ANALOG_RIGHT (16384)
  353. #define KEY_UP (-128)
  354. #define KEY_DOWN (128)
  355. #define KEY_LEFT (-128)
  356. #define KEY_RIGHT (128)
  357. #define CLICK_SOURCE_SCOREBOARD 0
  358.  
  359. #define MP MAX_PLAYERS
  360.  
  361. #if defined UZYJ_WWII
  362.  
  363. #define COLOR_NAZI 0xFFF02455
  364. #define COLOR_SON 0x4BFF3355
  365. #define COLOR_ALLY 0xFF242455
  366. #define COLOR_ALLYAIR 0x33FFFF55
  367.  
  368. #define TEAM_NAZI 0
  369. #define TEAM_SON 1
  370. #define TEAM_ALLY 2
  371. #define TEAM_ALLYAIR 3
  372.  
  373. new PlayerWarTeam[MAX_PLAYERS] = {-1,...};
  374. new Float:BombX[4],Float:BombY[4],Float:unusedZ,NationBomber[4][3],BomberUsed[4],Float:BombTime[4],Float:StartBombing[4];
  375. #endif
  376.  
  377. new MinigunArea;
  378. #if defined UZYJ_SPAR
  379. new SparArena;
  380. #endif
  381. #if defined UZYJ_RPG
  382. new RpgArena;
  383. #endif
  384. #if defined UZYJ_WALKIULICZNE
  385. new WalkiUliczneArena;
  386. #endif
  387. #if defined UZYJ_DWIEWIEZE
  388. new DwieWiezeArena;
  389. #endif
  390.  
  391. enum floatround_method {
  392. floatround_round,
  393. floatround_floor,
  394. floatround_ceil,
  395. floatround_tozero,
  396. floatround_unbiased
  397. }
  398.  
  399. enum anglemode {
  400. radian,
  401. degrees,
  402. grades
  403. }
  404.  
  405. enum filemode
  406. {
  407. io_read,
  408. io_write,
  409. io_readwrite,
  410. io_append,
  411. }
  412.  
  413. enum seek_whence
  414. {
  415. seek_start,
  416. seek_current,
  417. seek_end,
  418. }
  419. // new include
  420. #define WEAPONSTATE_UNKNOWN -1
  421. #define WEAPONSTATE_NO_BULLETS 0
  422. #define WEAPONSTATE_LAST_BULLET 1
  423. #define WEAPONSTATE_MORE_BULLETS 2
  424. #define WEAPONSTATE_RELOADING 3
  425. native GetPlayerWeaponState(playerid);
  426. native SetPVarInt(playerid, varname[], int_value);
  427. native GetPVarInt(playerid, varname[]);
  428. native SetPVarString(playerid, varname[], string_value[]);
  429. native GetPVarString(playerid, varname[], string_return[], len);
  430. native SetPVarFloat(playerid, varname[], Float:float_value);
  431. native Float:GetPVarFloat(playerid, varname[]);
  432. native DeletePVar(playerid, varname[]);
  433. //
  434. // HTTP requests
  435. #define HTTP_GET 1
  436. #define HTTP_POST 2
  437. #define HTTP_HEAD 3
  438.  
  439. // HTTP error response codes
  440. // These codes compliment ordinary HTTP response codes returned in 'response_code'
  441. // (10x) (20x OK) (30x Moved) (40x Unauthorised) (50x Server Error)
  442. #define HTTP_ERROR_BAD_HOST 1
  443. #define HTTP_ERROR_NO_SOCKET 2
  444. #define HTTP_ERROR_CANT_CONNECT 3
  445. #define HTTP_ERROR_CANT_WRITE 4
  446. #define HTTP_ERROR_CONTENT_TOO_BIG 5
  447. #define HTTP_ERROR_MALFORMED_RESPONSE 6
  448.  
  449. native HTTP(index, type, url[], data[], callback[]);
  450.  
  451. // example HTTP callback: public MyHttpResponse(index, response_code, data[]) { ... }
  452. //
  453. // PVar enumeration
  454. #define PLAYER_VARTYPE_NONE 0
  455. #define PLAYER_VARTYPE_INT 1
  456. #define PLAYER_VARTYPE_STRING 2
  457. #define PLAYER_VARTYPE_FLOAT 3
  458.  
  459. native GetPVarsUpperIndex(playerid);
  460. native GetPVarNameAtIndex(playerid, index, ret_varname[], ret_len);
  461. native GetPVarType(playerid, varname[]);
  462. native GetPlayerCameraPos(playerid, &Float:x, &Float:y, &Float:z);
  463. native GetPlayerCameraFrontVector(playerid, &Float:x, &Float:y, &Float:z);
  464. //native GetPlayerCameraUpVector(playerid, &Float:x, &Float:y, &Float:z);
  465. native LimitPlayerMarkerRadius(Float:marker_radius);
  466. forward OnVehicleDamageStatusUpdate(vehicleid, playerid);
  467. native GetVehicleDamageStatus(vehicleid, &panels, &doors, &lights, &tires);
  468. native UpdateVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
  469. //native pwncurl_get(url[],buf[],buflen);
  470. stock pwncurl_get(url[],buf[],buflen)
  471. {
  472. #pragma unused url
  473. #pragma unused buf
  474. #pragma unused buflen
  475. }
  476. native heapspace();
  477. native funcidx(const name[]);
  478. native numargs();
  479. native getarg(arg, index=0);
  480. native setarg(arg, index=0, value);
  481. native tolower(c);
  482. native toupper(c);
  483. native swapchars(c);
  484. native random(max);
  485. native min(value1, value2);
  486. native max(value1, value2);
  487. native clamp(value, min=cellmin, max=cellmax);
  488. native getproperty(id=0, const name[]="", value=cellmin, string[]="");
  489. native setproperty(id=0, const name[]="", value=cellmin, const string[]="");
  490. native deleteproperty(id=0, const name[]="", value=cellmin);
  491. native existproperty(id=0, const name[]="", value=cellmin);
  492. native Float:float(value);
  493. native Float:floatstr(const string[]);
  494. native Float:floatmul(Float:oper1, Float:oper2);
  495. native Float:floatdiv(Float:dividend, Float:divisor);
  496. native Float:floatadd(Float:oper1, Float:oper2);
  497. native Float:floatsub(Float:oper1, Float:oper2);
  498. native Float:floatfract(Float:value);
  499. native floatround(Float:value, floatround_method:method=floatround_round);
  500. native floatcmp(Float:oper1, Float:oper2);
  501. native Float:floatsqroot(Float:value);
  502. native Float:floatpower(Float:value, Float:exponent);
  503. native Float:floatlog(Float:value, Float:base=10.0);
  504. native Float:floatsin(Float:value, anglemode:mode=radian);
  505. native Float:floatcos(Float:value, anglemode:mode=radian);
  506. native Float:floattan(Float:value, anglemode:mode=radian);
  507. native Float:floatabs(Float:value);
  508. native Float:operator*(Float:oper1, Float:oper2) = floatmul;
  509. native Float:operator/(Float:oper1, Float:oper2) = floatdiv;
  510. native Float:operator+(Float:oper1, Float:oper2) = floatadd;
  511. native Float:operator-(Float:oper1, Float:oper2) = floatsub;
  512. native Float:operator=(oper) = float;
  513. native strlen(const string[]);
  514. native strpack(dest[], const source[], maxlength=sizeof dest);
  515. native strunpack(dest[], const source[], maxlength=sizeof dest);
  516. native strcat(dest[], const source[], maxlength=sizeof dest);
  517. native strmid(dest[], const source[], start, end, maxlength=sizeof dest);
  518. native bool: strins(string[], const substr[], pos, maxlength=sizeof string);
  519. native bool: strdel(string[], start, end);
  520. native strcmp(const string1[], const string2[], bool:ignorecase=false, length=cellmax);
  521. native strfind(const string[], const sub[], bool:ignorecase=false, pos=0);
  522. native strval(const string[]);
  523. native valstr(dest[], value, bool:pack=false);
  524. native bool: ispacked(const string[]);
  525. native uudecode(dest[], const source[], maxlength=sizeof dest);
  526. native uuencode(dest[], const source[], numbytes, maxlength=sizeof dest);
  527. native memcpy(dest[], const source[], index=0, numbytes, maxlength=sizeof dest);
  528. native File:fopen(const name[], filemode: mode = io_readwrite);
  529. native bool:fclose(File: handle);
  530. native File:ftemp();
  531. native bool:fremove(const name[]);
  532. native fwrite(File: handle, const string[]);
  533. native fread(File: handle, string[], size = sizeof string, bool: pack = false);
  534. native bool:fputchar(File: handle, value, bool: utf8 = true);
  535. native fgetchar(File: handle, value, bool: utf8 = true);
  536. native fblockwrite(File: handle, const buffer[], size = sizeof buffer);
  537. native fblockread(File: handle, buffer[], size = sizeof buffer);
  538. native fseek(File: handle, position = 0, seek_whence: whence = seek_start);
  539. native flength(File: handle);
  540. native fexist(const pattern[]);
  541. native bool:fmatch(name[], const pattern[], index = 0, size = sizeof name);
  542. native gettime(&hour=0, &minute=0, &second=0);
  543. native getdate(&year=0, &month=0, &day=0);
  544. native tickcount(&granularity=0);
  545. native sendstring(const message[], const destination[]="");
  546. native sendpacket(const packet[], size, const destination[]="");
  547. native listenport(port);
  548. native SetSpawnInfo(playerid, team, skin, Float:x, Float:y, Float:z, Float:rotation, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo);
  549. native SpawnPlayer(playerid);
  550. native SetPlayerPos(playerid, Float:x, Float:y, Float:z);
  551. native SetPlayerPosFindZ(playerid, Float:x, Float:y, Float:z);
  552. native GetPlayerPos(playerid, &Float:x, &Float:y, &Float:z);
  553. native SetPlayerFacingAngle(playerid,Float:ang);
  554. native GetPlayerFacingAngle(playerid,&Float:ang);
  555. native IsPlayerInRangeOfPoint(playerid, Float:range, Float:x, Float:y, Float:z);
  556. native IsPlayerStreamedIn(playerid, forplayerid);
  557. native SetPlayerInterior(playerid,interiorid);
  558. native GetPlayerInterior(playerid);
  559. native SetPlayerHealth(playerid, Float:health);
  560. native GetPlayerHealth(playerid, &Float:health);
  561. native SetPlayerArmour(playerid, Float:armour);
  562. native GetPlayerArmour(playerid, &Float:armour);
  563. native SetPlayerAmmo(playerid, weaponslot, ammo);
  564. native GetPlayerAmmo(playerid);
  565. native SetPlayerTeam(playerid, teamid);
  566. native GetPlayerTeam(playerid);
  567. native SetPlayerScore(playerid,score);
  568. native GetPlayerScore(playerid);
  569. native GetPlayerDrunkLevel(playerid);
  570. native SetPlayerDrunkLevel(playerid, level);
  571. native SetPlayerColor(playerid,color);
  572. native GetPlayerColor(playerid);
  573. native SetPlayerSkin(playerid, skinid);
  574. native GetPlayerSkin(playerid);
  575. native GivePlayerWeapon(playerid, weaponid, ammo);
  576. native ResetPlayerWeapons(playerid);
  577. native SetPlayerArmedWeapon(playerid, weaponid);
  578. native GetPlayerWeaponData(playerid, slot, &weapons, &ammo);
  579. native GivePlayerMoney(playerid,money);
  580. native ResetPlayerMoney(playerid);
  581. native SetPlayerName(playerid, const name[]);
  582. native GetPlayerMoney(playerid);
  583. native GetPlayerState(playerid);
  584. native GetPlayerIp(playerid, name[], len);
  585. native GetPlayerPing(playerid);
  586. native GetPlayerWeapon(playerid);
  587. native GetPlayerKeys(playerid, &keys, &updown, &leftright);
  588. native GetPlayerName(playerid, const name[], len);
  589. native SetPlayerTime(playerid, hour, minute);
  590. native GetPlayerTime(playerid, &hour, &minute);
  591. native TogglePlayerClock(playerid, toggle);
  592. native SetPlayerWeather(playerid, weather);
  593. native ForceClassSelection(playerid);
  594. native SetPlayerWantedLevel(playerid, level);
  595. native GetPlayerWantedLevel(playerid);
  596. native SetPlayerFightingStyle(playerid, style);
  597. native GetPlayerFightingStyle(playerid);
  598. native SetPlayerVelocity(playerid, Float:X, Float:Y, Float:Z);
  599. native GetPlayerVelocity( playerid, &Float:X, &Float:Y, &Float:Z );
  600. native PlayCrimeReportForPlayer(playerid, suspectid, crime);
  601. native SetPlayerShopName(playerid, shopname[]);
  602. native SetPlayerSkillLevel(playerid, skill, level);
  603. native GetPlayerSurfingVehicleID(playerid);
  604. native SetPlayerHoldingObject(playerid, modelid, bone, Float:fOffsetX = 0.0, Float:fOffsetY = 0.0, Float:fOffsetZ = 0.0, Float:fRotX = 0.0, Float:fRotY = 0.0, Float:fRotZ = 0.0);
  605. native StopPlayerHoldingObject(playerid);
  606. native IsPlayerHoldingObject(playerid);
  607. native SetPlayerChatBubble(playerid, text[], color, Float:drawdistance, expiretime);
  608. native PutPlayerInVehicle(playerid, vehicleid, seatid);
  609. native GetPlayerVehicleID(playerid);
  610. native GetPlayerVehicleSeat(playerid);
  611. native RemovePlayerFromVehicle(playerid);
  612. native TogglePlayerControllable(playerid, toggle);
  613. native PlayerPlaySound(playerid, soundid, Float:x, Float:y, Float:z);
  614. native ApplyAnimation(playerid, animlib[], animname[], Float:fDelta, loop, lockx, locky, freeze, time, forcesync = 0);
  615. native ClearAnimations(playerid, forcesync = 0);
  616. native GetPlayerAnimationIndex(playerid); // return the index of any running applied animations (0 if none are running)
  617. native GetAnimationName(index, animlib[], len1, animname[], len2); // get the animation lib/name for the index
  618. native GetPlayerSpecialAction(playerid);
  619. native SetPlayerSpecialAction(playerid,actionid);
  620. native SetPlayerCheckpoint(playerid, Float:x, Float:y, Float:z, Float:size);
  621. native DisablePlayerCheckpoint(playerid);
  622. native SetPlayerRaceCheckpoint(playerid, type, Float:x, Float:y, Float:z, Float:nextx, Float:nexty, Float:nextz, Float:size);
  623. native DisablePlayerRaceCheckpoint(playerid);
  624. native SetPlayerWorldBounds(playerid,Float:x_max,Float:x_min,Float:y_max,Float:y_min);
  625. native SetPlayerMarkerForPlayer(playerid, showplayerid, color);
  626. native ShowPlayerNameTagForPlayer(playerid, showplayerid, show);
  627. native SetPlayerMapIcon(playerid, iconid, Float:x, Float:y, Float:z, markertype, color);
  628. native RemovePlayerMapIcon(playerid, iconid);
  629. native SetPlayerCameraPos(playerid,Float:x, Float:y, Float:z);
  630. native SetPlayerCameraLookAt(playerid, Float:x, Float:y, Float:z);
  631. native SetCameraBehindPlayer(playerid);
  632. native AllowPlayerTeleport(playerid, allow);
  633. native IsPlayerConnected(playerid);
  634. native IsPlayerInVehicle(playerid, vehicleid);
  635. native IsPlayerInAnyVehicle(playerid);
  636. native IsPlayerInCheckpoint(playerid);
  637. native IsPlayerInRaceCheckpoint(playerid);
  638. native SetPlayerVirtualWorld(playerid, worldid);
  639. native GetPlayerVirtualWorld(playerid);
  640. native EnableStuntBonusForPlayer(playerid, enable);
  641. native EnableStuntBonusForAll(enable);
  642. native TogglePlayerSpectating(playerid, toggle);
  643. native PlayerSpectatePlayer(playerid, targetplayerid, mode = SPECTATE_MODE_NORMAL);
  644. native PlayerSpectateVehicle(playerid, targetvehicleid, mode = SPECTATE_MODE_NORMAL);
  645. native StartRecordingPlayerData(playerid, recordtype, recordname[]);
  646. native StopRecordingPlayerData(playerid);
  647. native CreateVehicle(vehicletype, Float:x, Float:y, Float:z, Float:rotation, color1, color2, respawn_delay);
  648. native DestroyVehicle(vehicleid);
  649. native IsVehicleStreamedIn(vehicleid, forplayerid);
  650. native GetVehiclePos(vehicleid, &Float:x, &Float:y, &Float:z);
  651. native SetVehiclePos(vehicleid, Float:x, Float:y, Float:z);
  652. native GetVehicleZAngle(vehicleid, &Float:z_angle);
  653. native SetVehicleZAngle(vehicleid, Float:z_angle);
  654. native SetVehicleParamsForPlayer(vehicleid,playerid,objective,doorslocked);
  655. native SetVehicleToRespawn(vehicleid);
  656. native LinkVehicleToInterior(vehicleid, interiorid);
  657. native AddVehicleComponent(vehicleid, componentid);
  658. native RemoveVehicleComponent(vehicleid, componentid);
  659. native ChangeVehicleColor(vehicleid, color1, color2);
  660. native ChangeVehiclePaintjob(vehicleid, paintjobid);
  661. native SetVehicleHealth(vehicleid, Float:health);
  662. native GetVehicleHealth(vehicleid, &Float:health);
  663. native AttachTrailerToVehicle(trailerid, vehicleid);
  664. native DetachTrailerFromVehicle(vehicleid);
  665. native IsTrailerAttachedToVehicle(vehicleid);
  666. native GetVehicleTrailer(vehicleid);
  667. native SetVehicleNumberPlate(vehicleid, numberplate[]);
  668. native GetVehicleModel(vehicleid);
  669. native GetVehicleComponentInSlot(vehicleid, slot); // There is 1 slot for each CARMODTYPE_*
  670. native GetVehicleComponentType(component); // Find CARMODTYPE_* for component id
  671. native RepairVehicle(vehicleid); // Repairs the damage model and resets the health
  672. native GetVehicleRotationQuat(vehicleid, &Float:w, &Float:x, &Float:y, &Float:z);
  673. native SetVehicleAngularVelocity(vehicleid, Float:X, Float:Y, Float:Z);
  674. native GetVehicleVelocity(vehicleid, &Float:X, &Float:Y, &Float:Z);
  675. native SetVehicleVelocity(vehicleid, Float:X, Float:Y, Float:Z);
  676. native SetVehicleVirtualWorld(vehicleid, worldid);
  677. native GetVehicleVirtualWorld(vehicleid);
  678. native CreatePlayerObject(playerid, modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, Float:DrawDistance = 0.0);
  679. native SetPlayerObjectPos(playerid, objectid, Float:X, Float:Y, Float:Z);
  680. native GetPlayerObjectPos(playerid, objectid, &Float:X, &Float:Y, &Float:Z);
  681. native SetPlayerObjectRot(playerid, objectid, Float:RotX, Float:RotY, Float:RotZ);
  682. native GetPlayerObjectRot(playerid, objectid, &Float:RotX, &Float:RotY, &Float:RotZ);
  683. native IsValidPlayerObject(playerid, objectid);
  684. native DestroyPlayerObject(playerid, objectid);
  685. native MovePlayerObject(playerid, objectid, Float:X, Float:Y, Float:Z, Float:Speed);
  686. native StopPlayerObject(playerid, objectid);
  687. native AttachObjectToPlayer(objectid, playerid, Float:OffsetX, Float:OffsetY, Float:OffsetZ, Float:rX, Float:rY, Float:rZ);
  688. native AttachPlayerObjectToPlayer(objectplayer, objectid, attachplayer, Float:OffsetX, Float:OffsetY, Float:OffsetZ, Float:rX, Float:rY, Float:rZ);
  689. native DB:db_open(name[]);
  690. native db_close(DB:db);
  691. native DBResult:db_query(DB:db,query[]);
  692. native db_free_result(DBResult:dbresult);
  693. native db_num_rows(DBResult:dbresult);
  694. native db_next_row(DBResult:dbresult);
  695. native db_num_fields(DBResult:dbresult);
  696. native db_field_name(DBResult:dbresult, field, result[], maxlength);
  697. native db_get_field(DBResult:dbresult, field, result[], maxlength);
  698. native db_get_field_assoc(DBResult:dbresult, const field[], result[], maxlength);
  699. native print(const string[]);
  700. native printf(const format[], {Float,_}:...);
  701. native format(output[], len, const format[], {Float,_}:...);
  702. native SendClientMessage(playerid, color, const message[]);
  703. native SendClientMessageToAll(color, const message[]);
  704. native SendPlayerMessageToPlayer(playerid, senderid, const message[]);
  705. native SendPlayerMessageToAll(senderid, const message[]);
  706. native SendDeathMessage(killer,killee,weapon);
  707. native GameTextForAll(const string[],time,style);
  708. native GameTextForPlayer(playerid,const string[],time,style);
  709. native SetTimer(funcname[], interval, repeating);
  710. native SetTimerEx(funcname[], interval, repeating, const format[], {Float,_}:...);
  711. native KillTimer(timerid);
  712. native GetTickCount();
  713. native GetMaxPlayers();
  714. native LimitGlobalChatRadius(Float:chat_radius);
  715. native CallRemoteFunction(const function[], const format[], {Float,_}:...);
  716. native CallLocalFunction(const function[], const format[], {Float,_}:...);
  717. native Float:asin(Float:value);
  718. native Float:acos(Float:value);
  719. native Float:atan(Float:value);
  720. native Float:atan2(Float:x, Float:y);
  721. native SetGameModeText(const string[]);
  722. native SetTeamCount(count);
  723. native AddPlayerClass(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo);
  724. native AddPlayerClassEx(teamid, modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo);
  725. native AddStaticVehicle(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, color1, color2);
  726. native AddStaticVehicleEx(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, color1, color2, respawn_delay);
  727. native AddStaticPickup(model, type, Float:X, Float:Y, Float:Z, virtualworld = 0);
  728. native CreatePickup(model, type, Float:X, Float:Y, Float:Z, virtualworld = 0);
  729. native DestroyPickup(pickup);
  730. native ShowNameTags(show);
  731. native ShowPlayerMarkers(mode);
  732. native GameModeExit();
  733. native SetWorldTime(hour);
  734. native GetWeaponName(weaponid, const weapon[], len);
  735. native EnableTirePopping(enable);
  736. native AllowInteriorWeapons(allow);
  737. native SetWeather(weatherid);
  738. native SetGravity(Float:gravity);
  739. native AllowAdminTeleport(allow);
  740. native SetDeathDropAmount(amount);
  741. native CreateExplosion(Float:X, Float:Y, Float:Z, type, Float:Radius);
  742. native EnableZoneNames(enable);
  743. native UsePlayerPedAnims(); // Will cause the players to use CJ running/walking animations
  744. native DisableInteriorEnterExits(); // will disable all interior enter/exits in the game.
  745. native SetNameTagDrawDistance(Float:distance); // Distance at which nametags will start rendering on the client.
  746. native DisableNameTagLOS(); // Disables the nametag Line-Of-Sight checking
  747. native ConnectNPC(name[], script[]);
  748. native IsPlayerNPC(playerid);
  749. native IsPlayerAdmin(playerid);
  750. native Kick(playerid);
  751. native Ban(playerid);
  752. native BanEx(playerid, const reason[]);
  753. native SendRconCommand(command[]);
  754. native GetServerVarAsString(const varname[], buffer[], len);
  755. native GetServerVarAsInt(const varname[]);
  756. native GetServerVarAsBool(const varname[]);
  757. native Menu:CreateMenu(const title[], columns, Float:x, Float:y, Float:col1width, Float:col2width = 0.0);
  758. native DestroyMenu(Menu:menuid);
  759. native AddMenuItem(Menu:menuid, column, const menutext[]);
  760. native SetMenuColumnHeader(Menu:menuid, column, const columnheader[]);
  761. native ShowMenuForPlayer(Menu:menuid, playerid);
  762. native HideMenuForPlayer(Menu:menuid, playerid);
  763. native IsValidMenu(Menu:menuid);
  764. native DisableMenu(Menu:menuid);
  765. native DisableMenuRow(Menu:menuid, row);
  766. native Menu:GetPlayerMenu(playerid);
  767. native Text:TextDrawCreate(Float:x, Float:y, text[]);
  768. native TextDrawDestroy(Text:text);
  769. native TextDrawLetterSize(Text:text, Float:x, Float:y);
  770. native TextDrawTextSize(Text:text, Float:x, Float:y);
  771. native TextDrawAlignment(Text:text, alignment);
  772. native TextDrawColor(Text:text, color);
  773. native TextDrawUseBox(Text:text, use);
  774. native TextDrawBoxColor(Text:text, color);
  775. native TextDrawSetShadow(Text:text, size);
  776. native TextDrawSetOutline(Text:text, size);
  777. native TextDrawBackgroundColor(Text:text, color);
  778. native TextDrawFont(Text:text, font);
  779. native TextDrawSetProportional(Text:text, set);
  780. native TextDrawShowForPlayer(playerid, Text:text);
  781. native TextDrawHideForPlayer(playerid, Text:text);
  782. native TextDrawShowForAll(Text:text);
  783. native TextDrawHideForAll(Text:text);
  784. native TextDrawSetString(Text:text, string[]);
  785. native GangZoneCreate(Float:minx, Float:miny, Float:maxx, Float:maxy);
  786. native GangZoneDestroy(zone);
  787. native GangZoneShowForPlayer(playerid, zone, color);
  788. native GangZoneShowForAll(zone, color);
  789. native GangZoneHideForPlayer(playerid, zone);
  790. native GangZoneHideForAll(zone);
  791. native GangZoneFlashForPlayer(playerid, zone, flashcolor);
  792. native GangZoneFlashForAll(zone, flashcolor);
  793. native GangZoneStopFlashForPlayer(playerid, zone);
  794. native GangZoneStopFlashForAll(zone);
  795. native Text3D:Create3DTextLabel(text[], color, Float:X, Float:Y, Float:Z, Float:DrawDistance, virtualworld, testLOS=0);
  796. native Delete3DTextLabel(Text3D:id);
  797. native Attach3DTextLabelToPlayer(Text3D:id, playerid, Float:OffsetX, Float:OffsetY, Float:OffsetZ);
  798. native Attach3DTextLabelToVehicle(Text3D:id, vehicleid, Float:OffsetX, Float:OffsetY, Float:OffsetZ);
  799. native Update3DTextLabelText(Text3D:id, color, text[]);
  800. native PlayerText3D:CreatePlayer3DTextLabel(playerid, text[], color, Float:X, Float:Y, Float:Z, Float:DrawDistance, attachedplayer=INVALID_PLAYER_ID, attachedvehicle=INVALID_VEHICLE_ID, testLOS=0);
  801. native DeletePlayer3DTextLabel(playerid, PlayerText3D:id);
  802. native UpdatePlayer3DTextLabelText(playerid, PlayerText3D:id, color, text[]);
  803. native ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[]);
  804.  
  805. stock Float:operator++(Float:oper)return oper+1.0;
  806. stock Float:operator--(Float:oper)return oper-1.0;
  807. stock Float:operator-(Float:oper)return oper^Float:cellmin;
  808. stock Float:operator*(Float:oper1, oper2)return floatmul(oper1, float(oper2));
  809. stock Float:operator/(Float:oper1, oper2)return floatdiv(oper1, float(oper2));
  810. stock Float:operator/(oper1, Float:oper2)return floatdiv(float(oper1), oper2);
  811. stock Float:operator+(Float:oper1, oper2)return floatadd(oper1, float(oper2));
  812. stock Float:operator-(Float:oper1, oper2)return floatsub(oper1, float(oper2));
  813. stock Float:operator-(oper1, Float:oper2)return floatsub(float(oper1), oper2);
  814. stock bool:operator==(Float:oper1, Float:oper2)return floatcmp(oper1, oper2) == 0;
  815. stock bool:operator==(Float:oper1, oper2)return floatcmp(oper1, float(oper2)) == 0;
  816. stock bool:operator!=(Float:oper1, Float:oper2)return floatcmp(oper1, oper2) != 0;
  817. stock bool:operator!=(Float:oper1, oper2)return floatcmp(oper1, float(oper2)) != 0;
  818. stock bool:operator>(Float:oper1, Float:oper2)return floatcmp(oper1, oper2) > 0;
  819. stock bool:operator>(Float:oper1, oper2)return floatcmp(oper1, float(oper2)) > 0;
  820. stock bool:operator>(oper1, Float:oper2)return floatcmp(float(oper1), oper2) > 0;
  821. stock bool:operator>=(Float:oper1, Float:oper2)return floatcmp(oper1, oper2) >= 0;
  822. stock bool:operator>=(Float:oper1, oper2)return floatcmp(oper1, float(oper2)) >= 0;
  823. stock bool:operator>=(oper1, Float:oper2)return floatcmp(float(oper1), oper2) >= 0;
  824. stock bool:operator<(Float:oper1, Float:oper2)return floatcmp(oper1, oper2) < 0;
  825. stock bool:operator<(Float:oper1, oper2)return floatcmp(oper1, float(oper2)) < 0;
  826. stock bool:operator<(oper1, Float:oper2)return floatcmp(float(oper1), oper2) < 0;
  827. stock bool:operator<=(Float:oper1, Float:oper2)return floatcmp(oper1, oper2) <= 0;
  828. stock bool:operator<=(Float:oper1, oper2)return floatcmp(oper1, float(oper2)) <= 0;
  829. stock bool:operator<=(oper1, Float:oper2)return floatcmp(float(oper1), oper2) <= 0;
  830. stock bool:operator!(Float:oper)return (_:oper & cellmax) == 0;
  831.  
  832. forward operator%(Float:oper1, Float:oper2);
  833. forward operator%(Float:oper1, oper2);
  834. forward operator%(oper1, Float:oper2);
  835.  
  836. forward @receivestring(const message[], const source[]);
  837. forward @receivepacket(const packet[], size, const source[]);
  838. forward OnGameModeInit();
  839. forward OnGameModeExit();
  840. forward OnFilterScriptInit();
  841. forward OnFilterScriptExit();
  842. forward OnPlayerConnect(playerid);
  843. forward OnPlayerDisconnect(playerid, reason);
  844. forward OnPlayerSpawn(playerid);
  845. forward OnPlayerDeath(playerid, killerid, reason);
  846. forward OnVehicleSpawn(vehicleid);
  847. forward OnVehicleDeath(vehicleid, killerid);
  848. forward OnPlayerText(playerid, text[]);
  849. forward OnPlayerCommandText(playerid, cmdtext[]);
  850. forward OnPlayerRequestClass(playerid, classid);
  851. forward OnPlayerEnterVehicle(playerid, vehicleid, ispassenger);
  852. forward OnPlayerExitVehicle(playerid, vehicleid);
  853. forward OnPlayerStateChange(playerid, newstate, oldstate);
  854. forward OnPlayerEnterCheckpoint(playerid);
  855. forward OnPlayerLeaveCheckpoint(playerid);
  856. forward OnPlayerEnterRaceCheckpoint(playerid);
  857. forward OnPlayerLeaveRaceCheckpoint(playerid);
  858. forward OnRconCommand(cmd[]);
  859. forward OnPlayerRequestSpawn(playerid);
  860. forward OnObjectMoved(objectid);
  861. forward OnPlayerObjectMoved(playerid, objectid);
  862. forward OnPlayerPickUpPickup(playerid, pickupid);
  863. forward OnVehicleMod(playerid, vehicleid, componentid);
  864. forward OnEnterExitModShop(playerid, enterexit, interiorid);
  865. forward OnVehiclePaintjob(playerid, vehicleid, paintjobid);
  866. forward OnVehicleRespray(playerid, vehicleid, color1, color2);
  867. forward OnPlayerSelectedMenuRow(playerid, row);
  868. forward OnPlayerExitedMenu(playerid);
  869. forward OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid);
  870. forward OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
  871. forward OnRconLoginAttempt( ip[], password[], success );
  872. forward OnPlayerUpdate(playerid);
  873. forward OnPlayerStreamIn(playerid, forplayerid);
  874. forward OnPlayerStreamOut(playerid, forplayerid);
  875. forward OnVehicleStreamIn(vehicleid, forplayerid);
  876. forward OnVehicleStreamOut(vehicleid, forplayerid);
  877. forward OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
  878. forward OnPlayerClickPlayer(playerid, clickedplayerid, source);
  879.  
  880. const EOF = -1;
  881. stock isNumeric(const string99[]) {
  882. new length=strlen(string99);
  883. if (length==0) return false;
  884. for (new i = 0; i < length; i++) {
  885. if (
  886. (string99[i] > '9' || string99[i] < '0' && string99[i]!='-' && string99[i]!='+') // Not a number,'+' or '-'
  887. || (string99[i]=='-' && i!=0) // A '-' but not at first.
  888. || (string99[i]=='+' && i!=0) // A '+' but not at first.
  889. ) return false;
  890. }
  891. if (length==1 && (string99[0]=='-' || string99[0]=='+')) return false;
  892. return true;
  893. }
  894.  
  895.  
  896. // Originally created by mabako, tuned by DracoBlue
  897. stock mktime222(hour,minute,second,day,month,year) {
  898. new timestamp2;
  899.  
  900. timestamp2 = second + (minute * 60) + (hour * 3600);
  901.  
  902. new days_of_month[12];
  903.  
  904. if ( ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0) ) {
  905. days_of_month = {31,29,31,30,31,30,31,31,30,31,30,31}; // Schaltjahr
  906. } else {
  907. days_of_month = {31,28,31,30,31,30,31,31,30,31,30,31}; // keins
  908. }
  909. new days_this_year = 0;
  910. days_this_year = day;
  911. if(month > 1) { // No January Calculation, because its always the 0 past months
  912. for(new i=0; i<month-1;i++) {
  913. days_this_year += days_of_month[i];
  914. }
  915. }
  916. timestamp2 += days_this_year * 86400;
  917.  
  918. for(new j=1970;j<year;j++) {
  919. timestamp2 += 31536000;
  920. if ( ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0) ) timestamp2 += 86400; // Schaltjahr + 1 Tag
  921. }
  922.  
  923. return timestamp2;
  924. }
  925.  
  926. /**
  927.  * Return if a Email is valid or not
  928.  * @param value
  929.  */
  930. stock ValidEmail(email[]) {
  931. if(!strfind(email,"@",true))return false;
  932. if(!strfind(email,".",true))return false;
  933. return true;
  934. }
  935.  
  936. /**
  937.  * Return a timestamp
  938.  */
  939. stock Time() {
  940. new hour,minute,second;
  941. new year, month,day;
  942. gettime(hour, minute, second);
  943. getdate(year, month, day);
  944. return mktime222(hour,minute,second,day,month,year);
  945. }
  946.  
  947. /**
  948.  * Return a timestamp
  949.  */
  950. stock Now() {
  951. new hour,minute,second;
  952. new year, month,day;
  953. gettime(hour, minute, second);
  954. getdate(year, month, day);
  955. return mktime222(hour,minute,second,day,month,year);
  956. }
  957.  
  958. /**
  959.  * Return the value of an hex-string
  960.  * @param string
  961.  */
  962. stock HexToInt(string99[]) {
  963. if (string99[0]==0) return 0;
  964. new i;
  965. new cur=1;
  966. new res=0;
  967. for (i=strlen(string99);i>0;i--) {
  968. if (string99[i-1]<58) res=res+cur*(string99[i-1]-48); else res=res+cur*(string99[i-1]-65+10);
  969. cur=cur*16;
  970. }
  971. return res;
  972. }
  973.  
  974. /**
  975.  * Return the int as string
  976.  * @param number
  977.  */
  978. stock IntToHex(number)
  979. {
  980. new m=1;
  981. new depth=0;
  982. while (number>=m) {
  983. m = m*16;
  984. depth++;
  985. }
  986. depth--;
  987. new str[256];
  988. for (new i = depth; i >= 0; i--)
  989. {
  990. str[i] = ( number & 0x0F) + 0x30; // + (tmp > 9 ? 0x07 : 0x00)
  991. str[i] += (str[i] > '9') ? 0x07 : 0x00;
  992. number >>= 4;
  993. }
  994. str[8] = '\0';
  995. return str;
  996. }
  997.  
  998. /**
  999.  * Return the string as int
  1000.  * @param string
  1001.  */
  1002. stock StrToInt(string99[]) {
  1003. return strval(string99);
  1004. }
  1005.  
  1006. /**
  1007.  * Return the value as string
  1008.  * @param value
  1009.  */
  1010. stock IntToStr(value) {
  1011. new tmp[256];
  1012. valstr(tmp, value);
  1013. return tmp;
  1014. }
  1015.  
  1016. /**
  1017.  * Return the truncated value
  1018.  * @param Float:value
  1019.  */
  1020. stock trunc(Float:value) {
  1021. return floatround(value,floatround_floor);
  1022. }
  1023.  
  1024. /**
  1025.  * Sets money for player
  1026.  * @param playerid
  1027.  * howmuch
  1028.  */
  1029. stock SetPlayerMoney(playerid,howmuch) {
  1030. //PRIVATE_Last_Money[playerid]=howmuch;
  1031. GivePlayerMoney(playerid,howmuch-GetPlayerMoney(playerid));
  1032. }
  1033.  
  1034. /**
  1035.  * Copies a file (Source file won't be deleted!)
  1036.  * @param oldname
  1037.  * newname
  1038.  * @requires WINDOWS
  1039.  */
  1040. stock fcopy(oldname[],newname[]) {
  1041. new File:ohnd,File:nhnd;
  1042. if (!fexist(oldname)) return false;
  1043. ohnd=fopen(oldname,io_read);
  1044. nhnd=fopen(newname,io_write);
  1045. new buf2[1];
  1046. new i;
  1047. for (i=flength(ohnd);i>0;i--) {
  1048. fputchar(nhnd, fgetchar(ohnd, buf2[0],false),false);
  1049. }
  1050. fclose(ohnd);
  1051. fclose(nhnd);
  1052. return true;
  1053. }
  1054.  
  1055. /**
  1056.  * Copies a textfile (Source file won't be deleted!)
  1057.  * @param oldname
  1058.  * newname
  1059.  */
  1060. stock fcopytextfile(oldname[],newname[]) {
  1061. new File:ohnd,File:nhnd;
  1062. if (!fexist(oldname)) return false;
  1063. ohnd=fopen(oldname,io_read);
  1064. nhnd=fopen(newname,io_write);
  1065. new tmpres[256];
  1066. while (fread(ohnd,tmpres)) {
  1067. StripNewLine(tmpres);
  1068. format(tmpres,sizeof(tmpres),"%s\r\n",tmpres);
  1069. fwrite(nhnd,tmpres);
  1070. }
  1071. fclose(ohnd);
  1072. fclose(nhnd);
  1073. return true;
  1074. }
  1075.  
  1076. /**
  1077.  * Renames a file (Source file will be deleted!)
  1078.  * @param oldname
  1079.  * newname
  1080.  * @requires WINDOWS (because fcopy does)
  1081.  */
  1082. stock frename(oldname[],newname[]) {
  1083. if (!fexist(oldname)) return false;
  1084. fremove(newname);
  1085. if (!fcopy(oldname,newname)) return false;
  1086. fremove(oldname);
  1087. return true;
  1088. }
  1089.  
  1090. /**
  1091.  * Renames a file (Source file will be deleted!)
  1092.  * @param oldname
  1093.  * newname
  1094.  */
  1095. stock frenametextfile(oldname[],newname[]) {
  1096. if (!fexist(oldname)) return false;
  1097. fremove(newname);
  1098. if (!fcopytextfile(oldname,newname)) return false;
  1099. fremove(oldname);
  1100. return true;
  1101. }
  1102.  
  1103. /**
  1104.  * Strips Newline from the end of a string.
  1105.  * Idea: Y_Less, Bugfixing (when length=1) by DracoBlue
  1106.  * @param string
  1107.  */
  1108. stock StripNewLine(string99[])
  1109. {
  1110. new len = strlen(string99);
  1111. if (string99[0]==0) return ;
  1112. if ((string99[len - 1] == '\n') || (string99[len - 1] == '\r')) {
  1113. string99[len - 1] = 0;
  1114. if (string99[0]==0) return ;
  1115. if ((string99[len - 2] == '\n') || (string99[len - 2] == '\r')) string99[len - 2] = 0;
  1116. }
  1117. }
  1118.  
  1119. /**
  1120.  * Copies items from one array/string into return.
  1121.  * @param source
  1122.  * index (where to start, 0 is first)
  1123.  * numbytes (how much)
  1124.  */
  1125. ret_memcpy(source[],index=0,numbytes) {
  1126. new tmp[256];
  1127. new i=0;
  1128. tmp[0]=0;
  1129. if (index>=strlen(source)) return tmp;
  1130. if (numbytes+index>=strlen(source)) numbytes=strlen(source)-index;
  1131. if (numbytes<=0) return tmp;
  1132. for (i=index;i<numbytes+index;i++) {
  1133. tmp[i-index]=source[i];
  1134. if (source[i]==0) return tmp;
  1135. }
  1136. tmp[numbytes]=0;
  1137. return tmp;
  1138. }
  1139.  
  1140. /**
  1141.  * Copies items from one array/string into another.
  1142.  * @param dest
  1143.  * source
  1144.  * count
  1145.  */
  1146. stock copy(dest[],source[],count) {
  1147. dest[0]=0;
  1148. if (count<0) return false;
  1149. if (count>strlen(source)) count=strlen(source);
  1150. new i=0;
  1151. for (i=0;i<count;i++) {
  1152. dest[i]=source[i];
  1153. if (source[i]==0) return true;
  1154. }
  1155. dest[count]=0;
  1156. return true;
  1157. }
  1158.  
  1159. /**
  1160.  * Deletes the first 'count' items of a array/string
  1161.  * @param string[]
  1162.  * count
  1163.  */
  1164. stock delete(string99[],count) {
  1165. new tmp[256];
  1166. tmp[0]=0;
  1167. if (count<=0) {
  1168. format(tmp,sizeof(tmp),"%s",string99);
  1169. return tmp;
  1170. }
  1171. tmp=ret_memcpy(string99,count,strlen(string99));
  1172. return tmp;
  1173. }
  1174.  
  1175. /**
  1176.  * Sets a string's value to source.
  1177.  * @param dest
  1178.  * source
  1179.  * count
  1180.  */
  1181. stock set(dest[],source[]) {
  1182. new count = strlen(source);
  1183. new i=0;
  1184. for (i=0;i<count;i++) {
  1185. dest[i]=source[i];
  1186. }
  1187. dest[count]=0;
  1188. }
  1189.  
  1190. /**
  1191.  * Checks wether two strings are equal (case insensetive)
  1192.  * @param str1
  1193.  * str2
  1194.  */
  1195. stock equal(str1[],str2[],bool:ignorecase) {
  1196. if (strlen(str1)!=strlen(str2)) return false;
  1197. if (strcmp(str1,str2,ignorecase)==0) return true;
  1198. return false;
  1199. }
  1200.  
  1201. /**
  1202.  * Returns an element of a string splitted by ' ', default index is 0.
  1203.  * @param string
  1204.  * index
  1205.  */
  1206. stock strtok(const string99[], &index,seperator=' ')
  1207. {
  1208. new length = strlen(string99);
  1209. new offset = index;
  1210. new result[256];
  1211. while ((index < length) && (string99[index] != seperator) && ((index - offset) < (sizeof(result) - 1)))
  1212. {
  1213. result[index - offset] = string99[index];
  1214. index++;
  1215. }
  1216.  
  1217. result[index - offset] = EOS;
  1218. if ((index < length) && (string99[index] == seperator))
  1219. {
  1220. index++;
  1221. }
  1222. return result;
  1223. }
  1224.  
  1225. stock mod(up,down) {
  1226. return up-(floatround((up/down),floatround_floor))*down;
  1227. }
  1228.  
  1229. stock div(up,down) {
  1230. return (floatround((up/down),floatround_floor));
  1231. }
  1232.  
  1233. /**
  1234.  * Returns a hashed value in adler32 as int
  1235.  * @param buf
  1236.  */
  1237. stock num_hash(buf[])
  1238. {
  1239. new length=strlen(buf);
  1240. new s1 = 1;
  1241. new s2 = 0;
  1242. new n;
  1243. for (n=0; n<length; n++) {
  1244. s1 = (s1 + buf[n]) % 65521;
  1245. s2 = (s2 + s1) % 65521;
  1246. }
  1247. return (s2 << 16) + s1;
  1248. }
  1249.  
  1250. /**
  1251.  * Returns a hashed value in adler32 as string
  1252.  * @param buf
  1253.  */
  1254. stock hash(str2[]) {
  1255. new tmpdasdsa[256];
  1256. tmpdasdsa[0]=0;
  1257. valstr(tmpdasdsa,num_hash(str2));
  1258. return tmpdasdsa;
  1259. }
  1260.  
  1261. /**
  1262.  * Returns a string which has 'newstr' where 'trg' was before
  1263.  * @param trg
  1264.  * newstr
  1265.  * src
  1266.  */
  1267. stock strreplace(trg[],newstr[],src[]) {
  1268. new f=0;
  1269. new s1[256];
  1270. new tmp[256];
  1271. format(s1,sizeof(s1),"%s",src);
  1272. f = strfind(s1,trg);
  1273. tmp[0]=0;
  1274. while (f>=0) {
  1275. strcat(tmp,ret_memcpy(s1, 0, f));
  1276. strcat(tmp,newstr);
  1277. format(s1,sizeof(s1),"%s",ret_memcpy(s1, f+strlen(trg), strlen(s1)-f));
  1278. f = strfind(s1,trg);
  1279. }
  1280. strcat(tmp,s1);
  1281. return tmp;
  1282. }
  1283.  
  1284. stock reverse_strreplace(trg[],newstr[],src[]) {
  1285. new f=0;
  1286. new s1[256];
  1287. new tmp[256];
  1288. format(s1,sizeof(s1),"%s",src);
  1289. f = strfind(s1,newstr);
  1290. tmp[0]=0;
  1291. while (f>=0) {
  1292. strcat(tmp,ret_memcpy(s1, 0, f));
  1293. strcat(tmp,trg);
  1294. format(s1,sizeof(s1),"%s",ret_memcpy(s1, f+strlen(newstr), strlen(s1)-f));
  1295. f = strfind(s1,newstr);
  1296. }
  1297. strcat(tmp,s1);
  1298. return tmp;
  1299. }
  1300. /**
  1301.  * Returns the string with lowercase
  1302.  * @param txt
  1303.  */
  1304. stock strlower(txt[]) {
  1305. new tmp[256];
  1306. tmp[0]=0;
  1307. if (txt[0]==0) return tmp;
  1308. new i=0;
  1309. for (i=0;i<strlen(txt);i++) {
  1310. tmp[i]=tolower(txt[i]);
  1311. }
  1312. tmp[strlen(txt)]=0;
  1313. return tmp;
  1314. }
  1315.  
  1316. /**
  1317.  * Returns the string with uppercase
  1318.  * @param txt
  1319.  */
  1320. stock strupper(txt[]) {
  1321. new tmp[256];
  1322. tmp[0]=0;
  1323. if (txt[0]==0) return tmp;
  1324. new i=0;
  1325. for (i=0;i<strlen(txt);i++) {
  1326. tmp[i]=toupper(txt[i]);
  1327. }
  1328. tmp[strlen(txt)]=0;
  1329. return tmp;
  1330. }
  1331.  
  1332. /*
  1333.  * Dini 1.5.1
  1334.  * (c) Copyright 2006 by DracoBlue
  1335.  *
  1336.  * @author : DracoBlue (http://d...content-available-to-author-only...e.com)
  1337.  * @date : 13th May 2006
  1338.  * @update : 3rd June 2007
  1339.  * @require : DUtils 1.8
  1340.  *
  1341.  * This file is provided as is (no warranties).
  1342.  *
  1343.  * Feel free to use it, a little message in
  1344.  * about box is honouring thing, isn't it?
  1345.  *
  1346.  */
  1347.  
  1348. #if defined _dini_included
  1349. #endinput
  1350. #endif
  1351.  
  1352. #define _dini_included
  1353. #pragma library dutils
  1354.  
  1355. stock dini_Exists(filename[]) {
  1356. if (fexist(filename)) return true;
  1357. return false;
  1358. }
  1359.  
  1360. stock dini_Remove(filename[]) {
  1361. if (!fexist(filename)) return false;
  1362. fremove(filename);
  1363. return true;
  1364. }
  1365.  
  1366. stock dini_Create(filename[]) {
  1367. new File:fhnd;
  1368. if (fexist(filename)) return false;
  1369. fhnd=fopen(filename,io_write);
  1370. fclose(fhnd);
  1371. return true;
  1372. }
  1373.  
  1374. stock dini_PRIVATE_ExtractKey(line[]) {
  1375. new tmp[256];
  1376. tmp[0]=0;
  1377. if (strfind(line,"=",true)==-1) return tmp;
  1378. set(tmp,strlower(ret_memcpy(line,0,strfind(line,"=",true))));
  1379. return tmp;
  1380. }
  1381.  
  1382. stock dini_PRIVATE_ExtractValue(line[]) {
  1383. new tmp[256];
  1384. tmp[0]=0;
  1385. if (strfind(line,"=",true)==-1) {
  1386. return tmp;
  1387. }
  1388. set(tmp,ret_memcpy(line,strfind(line,"=",true)+1,strlen(line)));
  1389. return tmp;
  1390. }
  1391.  
  1392. stock dini_Set(filename[],key[],value[]) {
  1393. new File:fohnd, File:fwhnd;
  1394. new bool:wasset=false;
  1395. new tmpres[256];
  1396. if (key[0]==0) return false; /* If we have no sign in key, it can't be set*/
  1397. format(tmpres,sizeof(tmpres),"%s.part",filename);
  1398. fohnd=fopen(filename,io_read);
  1399. if (!fohnd) return false;
  1400. fremove(tmpres);
  1401. fwhnd=fopen(tmpres,io_write);
  1402. // if (!fwhnd) return false;
  1403. while (fread(fohnd,tmpres)) {
  1404. StripNewLine(tmpres);
  1405. if ((!wasset)&&(equal(dini_PRIVATE_ExtractKey(tmpres),key,true))) {
  1406. /* We've got what needs to be replaced! */
  1407. format(tmpres,sizeof(tmpres),"%s=%s",key,value);
  1408. wasset=true;
  1409. }
  1410. fwrite(fwhnd,tmpres);
  1411. fwrite(fwhnd,"\r\n");
  1412. }
  1413.  
  1414. if (!wasset) {
  1415. format(tmpres,sizeof(tmpres),"%s=%s",key,value);
  1416. fwrite(fwhnd,tmpres);
  1417. fwrite(fwhnd,"\r\n");
  1418. }
  1419.  
  1420. fclose(fohnd);
  1421. fclose(fwhnd);
  1422.  
  1423. format(tmpres,sizeof(tmpres),"%s.part",filename);
  1424. if (fcopytextfile(tmpres,filename)) {
  1425. return fremove(tmpres);
  1426. }
  1427. return false;
  1428. }
  1429.  
  1430.  
  1431. stock dini_IntSet(filename[],key[],value) {
  1432. new valuestring[256];
  1433. format(valuestring,sizeof(valuestring),"%d",value);
  1434. return dini_Set(filename,key,valuestring);
  1435. }
  1436.  
  1437. stock dini_Int(filename[],key[]) {
  1438. return strval(dini_Get(filename,key));
  1439. }
  1440.  
  1441. stock dini_FloatSet(filename[],key[],Float:value) {
  1442. new valuestring[256];
  1443. format(valuestring,sizeof(valuestring),"%f",value);
  1444. return dini_Set(filename,key,valuestring);
  1445. }
  1446.  
  1447. stock Float:dini_Float(filename[],key[]) {
  1448. return floatstr(dini_Get(filename,key));
  1449. }
  1450.  
  1451. stock dini_Bool(filename[],key[]) {
  1452. return strval(dini_Get(filename,key));
  1453. }
  1454.  
  1455. stock dini_BoolSet(filename[],key[],value) {
  1456. new valuestring[256];
  1457. format(valuestring,sizeof(valuestring),"%d",value);
  1458. return dini_Set(filename,key,valuestring);
  1459. }
  1460.  
  1461. stock dini_Unset(filename[],key[]) {
  1462. new File:fohnd, File:fwhnd;
  1463. new tmpres[256];
  1464. format(tmpres,sizeof(tmpres),"%s.part",filename);
  1465. fohnd=fopen(filename,io_read);
  1466. if (!fohnd) return false;
  1467. fremove(tmpres);
  1468. fwhnd=fopen(tmpres,io_write);
  1469. // if (!fwhnd) return false;
  1470. while (fread(fohnd,tmpres)) {
  1471. StripNewLine(tmpres);
  1472. if (equal(dini_PRIVATE_ExtractKey(tmpres),key,true)) {
  1473. /* We've got what needs to be removed! */
  1474. } else {
  1475. format(tmpres,sizeof(tmpres),"%s",tmpres);
  1476. fwrite(fwhnd,tmpres);
  1477. fwrite(fwhnd,"\r\n");
  1478. }
  1479. }
  1480.  
  1481. fclose(fohnd);
  1482. fclose(fwhnd);
  1483.  
  1484. format(tmpres,sizeof(tmpres),"%s.part",filename);
  1485. if (fcopytextfile(tmpres,filename)) {
  1486. return fremove(tmpres);
  1487. }
  1488. return false;
  1489. }
  1490.  
  1491. stock dini_Get(filename[],key[]) {
  1492. new File:fohnd;
  1493. new tmpres[256];
  1494. new tmpres2[256];
  1495. tmpres[0]=0;
  1496. fohnd=fopen(filename,io_read);
  1497. if (!fohnd) return tmpres;
  1498. while (fread(fohnd,tmpres)) {
  1499. StripNewLine(tmpres);
  1500. if (equal(dini_PRIVATE_ExtractKey(tmpres),key,true)) {
  1501. /* We've got what we need */
  1502. tmpres2[0]=0;
  1503. strcat(tmpres2,dini_PRIVATE_ExtractValue(tmpres));
  1504. fclose(fohnd);
  1505. return tmpres2;
  1506. }
  1507. }
  1508. fclose(fohnd);
  1509. return tmpres;
  1510. }
  1511.  
  1512. stock dini_Isset(filename[],key[]) {
  1513. new File:fohnd;
  1514. new tmpres[256];
  1515. fohnd=fopen(filename,io_read);
  1516. if (!fohnd) return false;
  1517. while (fread(fohnd,tmpres)) {
  1518. StripNewLine(tmpres);
  1519. if (equal(dini_PRIVATE_ExtractKey(tmpres),key,true)) {
  1520. /* We've got what we need */
  1521. fclose(fohnd);
  1522. return true;
  1523. }
  1524. }
  1525. fclose(fohnd);
  1526. return false;
  1527. }
  1528.  
  1529. #define dUser(%1).( udb_User(%1,
  1530. #define dUserINT(%1).( udb_UserInt(%1,
  1531. #define dUserSet(%1).( udb_UserSet(%1,
  1532. #define dUserSetINT(%1).( udb_UserSetInt(%1,
  1533. #define dUserSetFLOAT(%1).( udb_UserSetFloat(%1,
  1534. #define dUserFLOAT(%1).( udb_UserFloat(%1,
  1535.  
  1536. stock udb_hash(buf[]) {
  1537. new length=strlen(buf);
  1538. new s1 = 1;
  1539. new s2 = 0;
  1540. new n;
  1541. for (n=0; n<length; n++)
  1542. {
  1543. s1 = (s1 + buf[n]) % 65521;
  1544. s2 = (s2 + s1) % 65521;
  1545. }
  1546. return (s2 << 16) + s1;
  1547. }
  1548.  
  1549. stock udb_encode(nickname[]) {
  1550. new tmp[256];
  1551. set(tmp,nickname);
  1552. tmp=strreplace("_","_00",tmp);
  1553. tmp=strreplace(";","_01",tmp);
  1554. tmp=strreplace("!","_02",tmp);
  1555. tmp=strreplace("/","_03",tmp);
  1556. tmp=strreplace("\\","_04",tmp);
  1557. tmp=strreplace("[","_05",tmp);
  1558. tmp=strreplace("]","_06",tmp);
  1559. tmp=strreplace("?","_07",tmp);
  1560. tmp=strreplace(".","_08",tmp);
  1561. tmp=strreplace("*","_09",tmp);
  1562. tmp=strreplace("<","_10",tmp);
  1563. tmp=strreplace(">","_11",tmp);
  1564. tmp=strreplace("{","_12",tmp);
  1565. tmp=strreplace("}","_13",tmp);
  1566. tmp=strreplace(" ","_14",tmp);
  1567. tmp=strreplace("\"","_15",tmp);
  1568. tmp=strreplace(":","_16",tmp);
  1569. tmp=strreplace("|","_17",tmp);
  1570. tmp=strreplace("=","_18",tmp);
  1571. return tmp;
  1572. }
  1573.  
  1574. stock udb_decode(nickname[]) {
  1575. new tmp[256];
  1576. set(tmp,nickname);
  1577. tmp=strreplace("_01",";",tmp);
  1578. tmp=strreplace("_02","!",tmp);
  1579. tmp=strreplace("_03","/",tmp);
  1580. tmp=strreplace("_04","\\",tmp);
  1581. tmp=strreplace("_05","[",tmp);
  1582. tmp=strreplace("_06","]",tmp);
  1583. tmp=strreplace("_07","?",tmp);
  1584. tmp=strreplace("_08",".",tmp);
  1585. tmp=strreplace("_09","*",tmp);
  1586. tmp=strreplace("_10","<",tmp);
  1587. tmp=strreplace("_11",">",tmp);
  1588. tmp=strreplace("_12","{",tmp);
  1589. tmp=strreplace("_13","}",tmp);
  1590. tmp=strreplace("_14"," ",tmp);
  1591. tmp=strreplace("_15","\"",tmp);
  1592. tmp=strreplace("_16",":",tmp);
  1593. tmp=strreplace("_17","|",tmp);
  1594. tmp=strreplace("_18","=",tmp);
  1595. tmp=strreplace("_00","_",tmp);
  1596. return tmp;
  1597. }
  1598.  
  1599. stock udb_Exists(nickname[]) {
  1600. new tmp[256];
  1601. format(tmp,sizeof(tmp),"%s.dudb.sav",udb_encode(nickname));
  1602. return fexist(tmp);
  1603. }
  1604.  
  1605. stock udb_Remove(nickname[]) {
  1606. new tmp[256];
  1607. format(tmp,sizeof(tmp),"%s.dudb.sav",udb_encode(nickname));
  1608. return dini_Remove(tmp);
  1609. }
  1610.  
  1611. stock udb_UserSetInt(nickname[],key[],value) {
  1612. new fname[256];
  1613. format(fname,sizeof(fname),"%s.dudb.sav",udb_encode(nickname));
  1614. return dini_IntSet(fname,key,value);
  1615. }
  1616.  
  1617. stock udb_UserSetFloat(nickname[],key[],Float:value) {
  1618. new fname[256];
  1619. format(fname,sizeof(fname),"%s.dudb.sav",udb_encode(nickname));
  1620. return dini_FloatSet(fname,key,value);
  1621. }
  1622.  
  1623. stock udb_UserSet(nickname[],key[],value[]) {
  1624. new fname[256];
  1625. format(fname,sizeof(fname),"%s.dudb.sav",udb_encode(nickname));
  1626. return dini_Set(fname,key,value);
  1627. }
  1628.  
  1629. stock udb_User(nickname[],key[]) {
  1630. new fname[256];
  1631. format(fname,sizeof(fname),"%s.dudb.sav",udb_encode(nickname));
  1632. format(fname,sizeof(fname),dini_Get(fname,key));
  1633. return fname;
  1634. }
  1635.  
  1636. stock Float:udb_UserFloat(nickname[],key[]) {
  1637. new fname[256];
  1638. format(fname,sizeof(fname),"%s.dudb.sav",udb_encode(nickname));
  1639. return dini_Float(fname,key);
  1640. }
  1641.  
  1642. stock udb_UserInt(nickname[],key[]) {
  1643. new fname[256];
  1644. format(fname,sizeof(fname),"%s.dudb.sav",udb_encode(nickname));
  1645. return dini_Int(fname,key);
  1646. }
  1647.  
  1648. stock udb_CheckLogin(nickname[],pwd[]) {
  1649. new fname[256];
  1650. format(fname,sizeof(fname),"%s.dudb.sav",udb_encode(nickname));
  1651. if (udb_UserInt(nickname,"password_hash")==udb_hash(pwd)) return true;
  1652. return false;
  1653. }
  1654.  
  1655. stock udb_Create(nickname[],pwd[]) {
  1656. if (udb_Exists(nickname)) return false;
  1657. new fname[256];
  1658. format(fname,sizeof(fname),"%s.dudb.sav",udb_encode(nickname));
  1659. dini_Create(fname);
  1660. udb_UserSetInt(nickname,"password_hash",udb_hash(pwd));
  1661. return true;
  1662. }
  1663.  
  1664. stock udb_RenameUser(nickname[],newnick[]) {
  1665. new oldfname[256];
  1666. new newfname[256];
  1667. format(oldfname,sizeof(oldfname),"%s.dudb.sav",udb_encode(nickname));
  1668. format(newfname,sizeof(newfname),"%s.dudb.sav",udb_encode(newnick));
  1669. return frenametextfile(oldfname,newfname);
  1670. }
  1671.  
  1672. stock dini_IntGet(filename[],slot[]){
  1673. new tmp[256],value;
  1674. tmp = dini_Get(filename, slot);
  1675. if(!isnull(tmp)){
  1676. value = strval(tmp);
  1677. }else{
  1678. return 0;
  1679. }
  1680. return value;
  1681. }
  1682.  
  1683. /*
  1684.   SA-MP Streamer Plugin v2.5.2
  1685.   Copyright © 2010 Incognito
  1686.  
  1687.   This program is free software: you can redistribute it and/or modify
  1688.   it under the terms of the GNU General Public License as published by
  1689.   the Free Software Foundation, either version 3 of the License, or
  1690.   (at your option) any later version.
  1691.  
  1692.   This program is distributed in the hope that it will be useful,
  1693.   but WITHOUT ANY WARRANTY; without even the implied warranty of
  1694.   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  1695.   GNU General Public License for more details.
  1696.  
  1697.   You should have received a copy of the GNU General Public License
  1698.   along with this program. If not, see <http://w...content-available-to-author-only...u.org/licenses/>.
  1699. */
  1700.  
  1701. #if defined _streamer_included
  1702. #endinput
  1703. #endif
  1704. #define _streamer_included
  1705.  
  1706. // Definitions
  1707.  
  1708. #define STREAMER_TYPE_OBJECT (0)
  1709. #define STREAMER_TYPE_PICKUP (1)
  1710. #define STREAMER_TYPE_CP (2)
  1711. #define STREAMER_TYPE_RACE_CP (3)
  1712. #define STREAMER_TYPE_MAP_ICON (4)
  1713. #define STREAMER_TYPE_3D_TEXT_LABEL (5)
  1714. #define STREAMER_TYPE_AREA (6)
  1715.  
  1716. // Enumerator
  1717.  
  1718. enum
  1719. {
  1720. E_STREAMER_ATTACHED_PLAYER,
  1721. E_STREAMER_ATTACHED_VEHICLE,
  1722. E_STREAMER_COLOR,
  1723. E_STREAMER_DISTANCE,
  1724. E_STREAMER_DRAW_DISTANCE,
  1725. E_STREAMER_EXTRA_ID,
  1726. E_STREAMER_INTERIOR_ID,
  1727. E_STREAMER_MAX_X,
  1728. E_STREAMER_MAX_Y,
  1729. E_STREAMER_MAX_Z,
  1730. E_STREAMER_MIN_X,
  1731. E_STREAMER_MIN_Y,
  1732. E_STREAMER_MIN_Z,
  1733. E_STREAMER_MODEL_ID,
  1734. E_STREAMER_MOVE_SPEED,
  1735. E_STREAMER_MOVE_X,
  1736. E_STREAMER_MOVE_Y,
  1737. E_STREAMER_MOVE_Z,
  1738. E_STREAMER_NEXT_X,
  1739. E_STREAMER_NEXT_Y,
  1740. E_STREAMER_NEXT_Z,
  1741. E_STREAMER_PLAYER_ID,
  1742. E_STREAMER_R_X,
  1743. E_STREAMER_R_Y,
  1744. E_STREAMER_R_Z,
  1745. E_STREAMER_SIZE,
  1746. E_STREAMER_STYLE,
  1747. E_STREAMER_TEST_LOS,
  1748. E_STREAMER_TYPE,
  1749. E_STREAMER_WORLD_ID,
  1750. E_STREAMER_X,
  1751. E_STREAMER_Y,
  1752. E_STREAMER_Z
  1753. }
  1754.  
  1755. // Natives (Settings)
  1756.  
  1757. native Streamer_TickRate(rate);
  1758. native Streamer_MaxItems(type, items);
  1759. native Streamer_VisibleItems(type, items);
  1760. native Streamer_CellDistance(Float:distance);
  1761. native Streamer_CellSize(Float:size);
  1762.  
  1763. // Natives (Updates)
  1764.  
  1765. native Streamer_Update(playerid);
  1766. native Streamer_UpdateEx(playerid, Float:x, Float:y, Float:z);
  1767.  
  1768. // Natives (Data Manipulation)
  1769.  
  1770. native Streamer_GetFloatData(type, {Text3D,_}:id, data, &Float:result);
  1771. native Streamer_SetFloatData(type, {Text3D,_}:id, data, Float:value);
  1772. native Streamer_GetIntData(type, {Text3D,_}:id, data);
  1773. native Streamer_SetIntData(type, {Text3D,_}:id, data, value);
  1774. native Streamer_IsInArrayData(type, {Text3D,_}:id, data, value);
  1775. native Streamer_AppendArrayData(type, {Text3D,_}:id, data, value);
  1776. native Streamer_RemoveArrayData(type, {Text3D,_}:id, data, value);
  1777. native Streamer_GetUpperBound(type);
  1778.  
  1779. // Natives (Miscellaneous)
  1780.  
  1781. native Streamer_IsItemVisible(playerid, type, {Text3D,_}:id);
  1782. native Streamer_DestroyAllVisibleItems(playerid, type);
  1783. native Streamer_CountVisibleItems(playerid, type);
  1784.  
  1785. // Natives (Objects)
  1786.  
  1787. native CreateDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 200.0);
  1788. native DestroyDynamicObject(objectid);
  1789. native IsValidDynamicObject(objectid);
  1790. native SetDynamicObjectPos(objectid, Float:x, Float:y, Float:z);
  1791. native GetDynamicObjectPos(objectid, &Float:x, &Float:y, &Float:z);
  1792. native SetDynamicObjectRot(objectid, Float:rx, Float:ry, Float:rz);
  1793. native GetDynamicObjectRot(objectid, &Float:rx, &Float:ry, &Float:rz);
  1794. native MoveDynamicObject(objectid, Float:x, Float:y, Float:z, Float:speed);
  1795. native StopDynamicObject(objectid);
  1796. native DestroyAllDynamicObjects();
  1797. native CountDynamicObjects();
  1798.  
  1799. // Natives (Pickups)
  1800.  
  1801. native CreateDynamicPickup(modelid, type, Float:x, Float:y, Float:z, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 100.0);
  1802. native DestroyDynamicPickup(pickupid);
  1803. native IsValidDynamicPickup(pickupid);
  1804. native DestroyAllDynamicPickups();
  1805. native CountDynamicPickups();
  1806.  
  1807. // Natives (Checkpoints)
  1808.  
  1809. native CreateDynamicCP(Float:x, Float:y, Float:z, Float:size, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 100.0);
  1810. native DestroyDynamicCP(checkpointid);
  1811. native IsValidDynamicCP(checkpointid);
  1812. native TogglePlayerDynamicCP(playerid, checkpointid, toggle);
  1813. native TogglePlayerAllDynamicCPs(playerid, toggle);
  1814. native IsPlayerInDynamicCP(playerid, checkpointid);
  1815. native DestroyAllDynamicCPs();
  1816. native CountDynamicCPs();
  1817.  
  1818. // Natives (Race Checkpoints)
  1819.  
  1820. native CreateDynamicRaceCP(type, Float:x, Float:y, Float:z, Float:nextx, Float:nexty, Float:nextz, Float:size, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 100.0);
  1821. native DestroyDynamicRaceCP(checkpointid);
  1822. native IsValidDynamicRaceCP(checkpointid);
  1823. native TogglePlayerDynamicRaceCP(playerid, checkpointid, toggle);
  1824. native TogglePlayerAllDynamicRaceCPs(playerid, toggle);
  1825. native IsPlayerInDynamicRaceCP(playerid, checkpointid);
  1826. native DestroyAllDynamicRaceCPs();
  1827. native CountDynamicRaceCPs();
  1828.  
  1829. // Natives (Map Icons)
  1830.  
  1831. native CreateDynamicMapIcon(Float:x, Float:y, Float:z, type, color, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 100.0);
  1832. native DestroyDynamicMapIcon(iconid);
  1833. native IsValidDynamicMapIcon(iconid);
  1834. native DestroyAllDynamicMapIcons();
  1835. native CountDynamicMapIcons();
  1836.  
  1837. // Natives (3D Text Labels)
  1838.  
  1839. native Text3D:CreateDynamic3DTextLabel(const text[], color, Float:x, Float:y, Float:z, Float:drawdistance, attachedplayer = INVALID_PLAYER_ID, attachedvehicle = INVALID_VEHICLE_ID, testlos = 0, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 100.0);
  1840. native DestroyDynamic3DTextLabel(Text3D:id);
  1841. native IsValidDynamic3DTextLabel(Text3D:id);
  1842. native UpdateDynamic3DTextLabelText(Text3D:id, color, const text[]);
  1843. native DestroyAllDynamic3DTextLabels();
  1844. native CountDynamic3DTextLabels();
  1845.  
  1846. // Natives (Areas)
  1847.  
  1848. native CreateDynamicCircle(Float:x, Float:y, Float:size, worldid = -1, interiorid = -1, playerid = -1);
  1849. native CreateDynamicRectangle(Float:minx, Float:miny, Float:maxx, Float:maxy, worldid = -1, interiorid = -1, playerid = -1);
  1850. native CreateDynamicSphere(Float:x, Float:y, Float:z, Float:size, worldid = -1, interiorid = -1, playerid = -1);
  1851. native CreateDynamicCube(Float:minx, Float:miny, Float:minz, Float:maxx, Float:maxy, Float:maxz, worldid = -1, interiorid = -1, playerid = -1);
  1852. native DestroyDynamicArea(areaid);
  1853. native IsValidDynamicArea(areaid);
  1854. native TogglePlayerDynamicArea(playerid, areaid, toggle);
  1855. native TogglePlayerAllDynamicAreas(playerid, toggle);
  1856. native IsPlayerInDynamicArea(playerid, areaid);
  1857. native AttachDynamicAreaToPlayer(areaid, playerid);
  1858. native AttachDynamicAreaToVehicle(areaid, vehicleid);
  1859. native DestroyAllDynamicAreas();
  1860. native CountDynamicAreas();
  1861.  
  1862. // Natives (Internals)
  1863.  
  1864. native Streamer_AddPlayer(playerid);
  1865. native Streamer_RemovePlayer(playerid);
  1866. native Streamer_VerifyPickup(playerid, pickupid);
  1867. native Streamer_VerifyCheckpoint(playerid, type, status);
  1868. native Streamer_RegisterInterface();
  1869.  
  1870. // Callbacks
  1871.  
  1872. forward OnDynamicObjectMoved(objectid);
  1873. forward OnPlayerPickUpDynamicPickup(playerid, pickupid);
  1874. forward OnPlayerEnterDynamicCP(playerid, checkpointid);
  1875. forward OnPlayerLeaveDynamicCP(playerid, checkpointid);
  1876. forward OnPlayerEnterDynamicRaceCP(playerid, checkpointid);
  1877. forward OnPlayerLeaveDynamicRaceCP(playerid, checkpointid);
  1878. forward OnPlayerEnterDynamicArea(playerid, areaid);
  1879. forward OnPlayerLeaveDynamicArea(playerid, areaid);
  1880.  
  1881. // Callback Hook Section
  1882.  
  1883. static bool:Streamer_g_OPC = false;
  1884. static bool:Streamer_g_OPDC = false;
  1885. static bool:Streamer_g_OPPP = false;
  1886. static bool:Streamer_g_OPEC = false;
  1887. static bool:Streamer_g_OPLC = false;
  1888. static bool:Streamer_g_OPERC = false;
  1889. static bool:Streamer_g_OPLRC = false;
  1890. static bool:Streamer_g_RI = false;
  1891.  
  1892. public OnFilterScriptInit()
  1893. {
  1894. if (!Streamer_g_RI)
  1895. {
  1896. Streamer_g_OPC = funcidx("Streamer_OnPlayerConnect") != -1;
  1897. Streamer_g_OPDC = funcidx("Streamer_OnPlayerDisconnect") != -1;
  1898. Streamer_g_OPPP = funcidx("Streamer_OnPlayerPickUpPickup") != -1;
  1899. Streamer_g_OPEC = funcidx("Streamer_OnPlayerEnterCP") != -1;
  1900. Streamer_g_OPLC = funcidx("Streamer_OnPlayerLeaveCP") != -1;
  1901. Streamer_g_OPERC = funcidx("Streamer_OnPlayerEnterRaceCP") != -1;
  1902. Streamer_g_OPLRC = funcidx("Streamer_OnPlayerLeaveRaceCP") != -1;
  1903. Streamer_g_RI = true;
  1904. Streamer_RegisterInterface();
  1905. }
  1906. if (funcidx("Streamer_OnFilterScriptInit") != -1)
  1907. {
  1908. return CallLocalFunction("Streamer_OnFilterScriptInit", "");
  1909. }
  1910. return 1;
  1911. }
  1912.  
  1913. #if defined _ALS_OnFilterScriptInit
  1914. #undef OnFilterScriptInit
  1915. #else
  1916. #define _ALS_OnFilterScriptInit
  1917. #endif
  1918. #define OnFilterScriptInit Streamer_OnFilterScriptInit
  1919.  
  1920. forward Streamer_OnFilterScriptInit();
  1921.  
  1922. public OnGameModeInit()
  1923. {
  1924. if (!Streamer_g_RI)
  1925. {
  1926. Streamer_g_OPC = funcidx("Streamer_OnPlayerConnect") != -1;
  1927. Streamer_g_OPDC = funcidx("Streamer_OnPlayerDisconnect") != -1;
  1928. Streamer_g_OPPP = funcidx("Streamer_OnPlayerPickUpPickup") != -1;
  1929. Streamer_g_OPEC = funcidx("Streamer_OnPlayerEnterCP") != -1;
  1930. Streamer_g_OPLC = funcidx("Streamer_OnPlayerLeaveCP") != -1;
  1931. Streamer_g_OPERC = funcidx("Streamer_OnPlayerEnterRaceCP") != -1;
  1932. Streamer_g_OPLRC = funcidx("Streamer_OnPlayerLeaveRaceCP") != -1;
  1933. Streamer_g_RI = true;
  1934. Streamer_RegisterInterface();
  1935. }
  1936. if (funcidx("Streamer_OnGameModeInit") != -1)
  1937. {
  1938. return CallLocalFunction("Streamer_OnGameModeInit", "");
  1939. }
  1940. return 1;
  1941. }
  1942.  
  1943. #if defined _ALS_OnGameModeInit
  1944. #undef OnGameModeInit
  1945. #else
  1946. #define _ALS_OnGameModeInit
  1947. #endif
  1948. #define OnGameModeInit Streamer_OnGameModeInit
  1949.  
  1950. forward Streamer_OnGameModeInit();
  1951.  
  1952. public OnPlayerConnect(playerid)
  1953. {
  1954. if (!IsPlayerNPC(playerid))
  1955. {
  1956. Streamer_AddPlayer(playerid);
  1957. }
  1958. if (Streamer_g_OPC)
  1959. {
  1960. return CallLocalFunction("Streamer_OnPlayerConnect", "d", playerid);
  1961. }
  1962. return 1;
  1963. }
  1964.  
  1965. #if defined _ALS_
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty