#include #include // Functions /* native GetPlayersName(playerid) native SetPlayerPositionEx(playerid, Float:x, Float:y, Float:z, Float:angle, vworld, interior) native TeleportPlayerToPlayer(playerid, targetid) native TeleportCarToPlayer(vehicleid, playerid) native TeleportPlayerToCar(playerid, vehicleid) native GetPlayerIPAddress(playerid) native HealPlayer(playerid) native KillPlayer(playerid) native CrashPlayer(playerid) native GivePlayerHealth(playerid, Float:health) native TakePlayerHealth(playerid, Float:health) native GivePlayerArmour(playerid, Float:armour) native TakePlayerArmour(playerid, Float:armour) native GivePlayerScore(playerid, score) native TakePlayerScore(playerid, score) native GiveScoreFromPlayerToPlayer(playerid, targetid, score) native GiveCashFromPlayerToPlayer(playerid, targetid, amount) native BankruptPlayer(playerid) native SetPlayerCash(playerid) native SlapPlayer(playerid) native IsPlayerSwimming(playerid) native IsPlayerFalling(playerid) native IsPlayerInModdingShop(playerid) native GetVehicleType(modelid) stock GetPlayerVehicleSpeed(playerid) native ExplodePlayer(playerid) native IsPlayerAiming(playerid) native GetWeaponNameByID(weaponid) native GetWeaponIDByName(weaponname[]) native GetWeaponSlotByID(weaponid) native GetPlayerArmedWeaponAmmo(playerid) native GetVehicleNameByModel(model) native GetWeatherName(weatherid) native LoadObjectsFromFile(const filename[]) native LoadVehiclesFromFile(const filename[]) native CreateLogEntry(log[], text[]) native HealAll() native ArmourAll() native FreezeAll() native DisarmAll() native GiveWeaponToAll(weaponid, ammo) native GiveCashToAll(cash) native GiveScoreToAll(score) native UnfreezeAll() native GetOnlinePlayersCount() native GetValidVehiclesCount() */ native IsValidVehicle(vehicleid); #define TYPE_INVALID -1 #define TYPE_AIRPLANE 0 #define TYPE_HELICOPTER 1 #define TYPE_BIKE 2 #define TYPE_CONVERTIBLE 3 #define TYPE_INDUSTRIAL 4 #define TYPE_LOWRIDER 5 #define TYPE_OFFROAD 6 #define TYPE_PUBLIC 7 #define TYPE_SALOON 8 #define TYPE_SPORT 9 #define TYPE_STATION 10 #define TYPE_BOAT 11 #define TYPE_TRAILER 12 #define TYPE_UNIQUE 13 #define TYPE_RC 14 new VehicleNames[212][] = { {"Landstalker"}, {"Bravura"}, {"Buffalo"}, {"Linerunner"}, {"Perrenial"}, {"Sentinel"}, {"Dumper"}, {"Firetruck"}, {"Trashmaster"}, {"Stretch"}, {"Manana"}, {"Infernus"}, {"Voodoo"}, {"Pony"}, {"Mule"}, {"Cheetah"}, {"Ambulance"}, {"Leviathan"}, {"Moonbeam"}, {"Esperanto"}, {"Taxi"}, {"Washington"}, {"Bobcat"}, {"Mr Whoopee"}, {"BF Injection"}, {"Hunter"}, {"Premier"}, {"Enforcer"}, {"Securicar"}, {"Banshee"}, {"Predator"}, {"Bus"}, {"Rhino"}, {"Barracks"}, {"Hotknife"}, {"Trailer 1"}, {"Previon"}, {"Coach"}, {"Cabbie"}, {"Stallion"}, {"Rumpo"}, {"RC Bandit"}, {"Romero"}, {"Packer"}, {"Monster"}, {"Admiral"}, {"Squalo"}, {"Seasparrow"}, {"Pizzaboy"}, {"Tram"}, {"Trailer 2"}, {"Turismo"}, {"Speeder"}, {"Reefer"}, {"Tropic"}, {"Flatbed"}, {"Yankee"}, {"Caddy"}, {"Solair"}, {"Berkley's RC Van"}, {"Skimmer"}, {"PCJ-600"}, {"Faggio"}, {"Freeway"}, {"RC Baron"}, {"RC Raider"}, {"Glendale"}, {"Oceanic"}, {"Sanchez"}, {"Sparrow"}, {"Patriot"}, {"Quad"}, {"Coastguard"}, {"Dinghy"}, {"Hermes"}, {"Sabre"}, {"Rustler"}, {"ZR-350"}, {"Walton"}, {"Regina"}, {"Comet"}, {"BMX"}, {"Burrito"}, {"Camper"}, {"Marquis"}, {"Baggage"}, {"Dozer"}, {"Maverick"}, {"News Chopper"}, {"Rancher"}, {"FBI Rancher"}, {"Virgo"}, {"Greenwood"}, {"Jetmax"}, {"Hotring"}, {"Sandking"}, {"Blista Compact"}, {"Police Maverick"}, {"Boxville"}, {"Benson"}, {"Mesa"}, {"RC Goblin"}, {"Hotring Racer A"}, {"Hotring Racer B"}, {"Bloodring Banger"}, {"Rancher"}, {"Super GT"}, {"Elegant"}, {"Journey"}, {"Bike"}, {"Mountain Bike"}, {"Beagle"}, {"Cropdust"}, {"Stunt"}, {"Tanker"}, {"Roadtrain"}, {"Nebula"}, {"Majestic"}, {"Buccaneer"}, {"Shamal"}, {"Hydra"}, {"FCR-900"}, {"NRG-500"}, {"HPV1000"}, {"Cement Truck"}, {"Tow Truck"}, {"Fortune"}, {"Cadrona"}, {"FBI Truck"}, {"Willard"}, {"Forklift"}, {"Tractor"}, {"Combine"}, {"Feltzer"}, {"Remington"}, {"Slamvan"}, {"Blade"}, {"Freight"}, {"Streak"}, {"Vortex"}, {"Vincent"}, {"Bullet"}, {"Clover"}, {"Sadler"}, {"Firetruck LA"}, {"Hustler"}, {"Intruder"}, {"Primo"}, {"Cargobob"}, {"Tampa"}, {"Sunrise"}, {"Merit"}, {"Utility"}, {"Nevada"}, {"Yosemite"}, {"Windsor"}, {"Monster A"}, {"Monster B"}, {"Uranus"}, {"Jester"}, {"Sultan"}, {"Stratum"}, {"Elegy"}, {"Raindance"}, {"RC Tiger"}, {"Flash"}, {"Tahoma"}, {"Savanna"}, {"Bandito"}, {"Freight Flat"}, {"Streak Carriage"}, {"Kart"}, {"Mower"}, {"Duneride"}, {"Sweeper"}, {"Broadway"}, {"Tornado"}, {"AT-400"}, {"DFT-30"}, {"Huntley"}, {"Stafford"}, {"BF-400"}, {"Newsvan"}, {"Tug"}, {"Trailer 3"}, {"Emperor"}, {"Wayfarer"}, {"Euros"}, {"Hotdog"}, {"Club"}, {"Freight Carriage"}, {"Trailer 3"}, {"Andromada"}, {"Dodo"}, {"RC Cam"}, {"Launch"}, {"Police Car (LSPD)"}, {"Police Car (SFPD)"}, {"Police Car (LVPD)"}, {"Police Ranger"}, {"Picador"}, {"S.W.A.T. Van"}, {"Alpha"}, {"Phoenix"}, {"Glendale"}, {"Sadler"}, {"Luggage Trailer A"}, {"Luggage Trailer B"}, {"Stair Trailer"}, {"Boxville"}, {"Farm Plow"}, {"Utility Trailer"} }; stock GetPlayersName(playerid) { new name[MAX_PLAYER_NAME]; GetPlayerName(playerid, name, sizeof(name) ); return name; } stock SetPlayerPositionEx(playerid, Float:x, Float:y, Float:z, Float:angle, vworld, interior) { SetPlayerPos(playerid, x, y, z); SetPlayerFacingAngle(playerid, angle); SetPlayerVirtualWorld(playerid, vworld); SetPlayerInterior(playerid, interior); return 1; } stock TeleportPlayerToPlayer(playerid, targetid) { new Float:Pos[3]; if(playerid == INVALID_PLAYER_ID || targetid == INVALID_PLAYER_ID) return 0; else { new Float:Pos[3]; GetPlayerPos(targetid, Pos[0], Pos[1], Pos[2]); SetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]); SetPlayerInterior(playerid, GetPlayerInterior(targetid) ); SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(targetid) ); } return 1; } stock TeleportCarToPlayer(vehicleid, playerid) { if(vehicleid == INVALID_VEHICLE_ID || playerid == INVALID_PLAYER_ID) return 0; else { new Float:PlayerPos[3]; GetPlayerPos(playerid, PlayerPos[0], PlayerPos[1], PlayerPos[2]); SetVehiclePos(vehicleid, PlayerPos[0], PlayerPos[1], PlayerPos[2]); } return 1; } stock TeleportPlayerToCar(playerid, vehicleid) { if(vehicleid == INVALID_VEHICLE_ID || playerid == INVALID_PLAYER_ID) return 0; else { new Float:CarPos[3]; GetVehiclePos(vehicleid, CarPos[0], CarPos[1], CarPos[2]); SetVehiclePos(vehicleid, PlayerPos[0], PlayerPos[1], PlayerPos[2]); } return 1; } stock GetPlayerIPAddress(playerid) { new ip[20]; GetPlayerIp(playerid, ip, sizeof(ip) ); return ip; } stock HealPlayer(playerid) return SetPlayerHealth(playerid, 100); stock KillPlayer(playerid) return SetPlayerHealth(playerid, -5); stock GivePlayerHealth(playerid, Float:health) { new Float:hp; GetPlayerHealth(playerid, hp); new calc = floatadd(hp, health); SetPlayerHealth(playerid, calc); return 1; } stock TakePlayerHealth(playerid, Float:health) { new Float:hp; GetPlayerHealth(playerid, hp); new calc = floatsub(hp, health); SetPlayerHealth(playerid, calc); return 1; } stock GivePlayerArmour(playerid, Float:armour) { new Float:ap; GetPlayerArmour(playerid, hp); new calc = floatadd(ap, armour); SetPlayerArmour(playerid, calc); return 1; } stock TakePlayerArmour(playerid, Float:armour) { new Float:ap; GetPlayerArmour(playerid, ap); new calc = floatsub(ap, armour); SetPlayerArmour(playerid, calc); return 1; } stock BankruptPlayer(playerid) return ResetPlayerMoney(playerid) stock SetPlayerCash(playerid, cash) { ResetPlayerMoney(playerid); GivePlayerMoney(playerid, cash); } stock GivePlayerScore(playerid, score) { new pscore = GetPlayerScore(playerid); SetPlayerScore(playerid, pscore+score); return 1; } stock TakePlayerScore(playerid, score) { new pscore = GetPlayerScore(playerid); SetPlayerScore(playerid, pscore-score); return 1; } stock GiveScoreFromPlayerToPlayer(playerid, targetid, amount) { new score[2]; GetPlayerScore(playerid, score[0]); GetPlayerScore(targetid, score[1]); SetPlayerScore(playerid, score[0]-amount); SetPlayerScore(targetid, score+amount); return 1; } stock GiveCashFromPlayerToPlayer(playerid, targetid, amount) { new money[2]; GetPlayerMoney(playerid, money[0]); GetPlayerMoney(targetid, money[1]); GivePlayerMoney(playerid, money[0]-amount); GivePlayerMoney(targetid, money[1]+amount); return 1; } stock SlapPlayer(playerid) { new Float:Pos[3]; GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2] ); SetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]+10); return 1; } stock ExplodePlayer(playerid) { new Float:Pos[3]; GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2] ); CreateExplosion(Pos[0], Pos[1], Pos[2], 8, 5.0); return 1; } stock bool:IsPlayerAiming(playerid) { new anim = GetPlayerAnimationIndex(playerid); switch(anim) { case 1167, 1365, 1643, 1453, 220: return true; } return false; } stock bool:IsPlayerFalling(playerid) { new animlib[1], animname[32]; if(GetPlayerAnimationIndex(playerid)) { GetAnimationName(GetPlayerAnimationIndex(playerid),animlib,0,animname,32); if(!strcmp(animname, "FALL_FALL") || !strcmp(animname, "FALL_GLIDE")) return true; } return false; } stock bool:IsPlayerInModdingShop(playerid) { new mode = GetPlayerCameraMode(playerid); if(mode == 15) return true; return false; } stock bool:IsPlayerSwimming(playerid) { new animlib[1], animname[32]; if(GetPlayerAnimationIndex(playerid)) { GetAnimationName(GetPlayerAnimationIndex(playerid),animlib,0,animname,32); if(!strcmp(animname, "SWIM_CRAWL") || !strcmp(animname, "SWIM_BREAST") || !strcmp(animname, "SWIM_GLIDE") || !strcmp(animname, "SWIM_DIVE_UNDER") || !strcmp(animname, "SWIM_UNDER")) return true; } return false; } stock GetPlayerVehicleSpeed(playerid) { if(!IsPlayerInAnyVehicle(playerid) ) return 0; else { new Float:Speed[3], Float:final_speed, final_speed_int; new vehicleid = GetPlayerVehicleID(playerid); GetVehicleVelocity(vehicleid,Speed[0],Speed[1],Speed[2]); final_speed = floatsqroot(((Speed[0]*Speed[0])+(Speed[1]*Speed[1]))+(Speed[2]*Speed[2]))*250.666667; final_speed_int = floatround(final_speed,floatround_round); return final_speed_int; } } stock GetWeaponNameByID(weaponid) { new gunname[32]; switch (weaponid) { case 1..17,22..43,46: GetWeaponName(weaponid,gunname,sizeof(gunname)); case 0: format(gunname,32,"%s","Fist"); case 18: format(gunname,32,"%s","Molotov"); case 44: format(gunname,32,"%s","Night Goggles"); case 45: format(gunname,32,"%s","Thermal Goggles"); default: format(gunname,32,"%s","Unknown weapon"); } return gunname; } stock GetWeaponSlot(weaponid) { new slot; switch(weaponid) { case 0,1: slot = 0; case 2 .. 9: slot = 1; case 10 .. 15: slot = 10; case 16 .. 18, 39: slot = 8; case 22 .. 24: slot =2; case 25 .. 27: slot = 3; case 28, 29, 32: slot = 4; case 30, 31: slot = 5; case 33, 34: slot = 6; case 35 .. 38: slot = 7; case 40: slot = 12; case 41 .. 43: slot = 9; case 44 .. 46: slot = 11; } return slot; } stock GetPlayerAmmoEx(playerid) { new weapon[3]; weapon[0] = GetWeaponSlot(GetPlayerWeapon(playerid) ); GetPlayerWeaponData(playerid, weapon[0], weapon[1], weapon[2]); return weapon[2]; } stock GetVehicleNameByModel(model) { new string[32]; format(string,sizeof string,"%s",VehicleNames[model -400]); return string; } stock GetVehicleSpeed(vehicleid) { new Float:Speed[3]; GetVehicleVelocity(vehicleid, Speed[0], Speed[1], Speed[2]); new calculate1 = floatsqroot((Speed[0]*Speed[0]+Speed[1]*Speed[1])); return floatround(calculate1* 100.0 * 1.6); } stock GetVehicleType(model) { switch(model) { case 460, 476, 511, 512, 519, 520, 553, 577, 592, 593: return TYPE_AIRPLANE; case 417, 425, 447, 469 ,487, 488, 497, 548, 563: return TYPE_HELICOPTER; case 448, 461 .. 463, 468, 471, 481, 509, 510, 521 .. 523, 581, 586: return TYPE_BIKE; case 439, 480, 533, 555: return TYPE_CONVERTIBLE; case 403, 408, 413, 414, 422, 440, 443, 455, 456, 459, 478, 482, 498, 499, 514, 515, 524, 531, 543, 552, 554, 578, 582, 600, 605, 609: return TYPE_INDUSTRIAL; case 412, 534 .. 536, 566, 567, 575, 576: return TYPE_LOWRIDER; case 400, 424, 444, 470, 489, 495, 500, 505, 556, 557, 568, 573, 579: return TYPE_OFFROAD; case 407, 416, 420, 427, 431, 432, 433, 437, 438, 490, 528, 544, 596 .. 599, 601: return TYPE_PUBLIC; case 401, 405, 410, 419, 421, 426, 436, 445, 466, 491, 492, 504, 507, 516 ..518, 526, 527, 529, 542, 546, 547, 549, 550, 560, 551, 562, 580, 585, 604: return TYPE_SALOON; case 402, 411, 415, 429, 451, 475, 477, 494, 496, 541, 502, 503, 506, 558, 559, 565, 587, 589, 602, 603: return TYPE_SPORT; case 404, 418, 458, 479, 561: return TYPE_STATION; case 430, 446, 452, 453, 454, 472, 473, 484, 493, 595: return TYPE_BOAT; case 435, 450, 569, 570, 584, 590, 591, 606, 607, 608, 610, 611: return TYPE_TRAILER; case 406, 409, 423, 428, 434, 442, 449, 457, 483, 485, 486, 508, 525, 530, 532, 537 .. 539, 545, 571, 572, 574, 583, 588: return TYPE_UNIQUE; case 441, 464, 465, 501, 564, 594: return TYPE_RC; } return TYPE_INVALID; } stock GetWeatherName(weatherid) { new wName[80]; switch(weatherid) { case 0..7: wName = "Clear skies"; case 8: wName = "Stormy"; case 9: wName = "Cloudy"; case 10: wName = "Clear skies"; case 11: wName = "Heatwave"; case 12..15: wName = "Cloudy/Clear"; case 16: wName = "Cloudy/Rainy"; case 17, 18: wName = "Heatwave"; case 19: wName = "Sandstorm"; case 20: wName = "Foggy/Greenish"; case 21,22: wName = "Dark clouds"; case 23..26: wName = "Heatwave"; case 27..29: wName = "Clear skies"; case 30: wName = "Cloudy"; case default: wName = "Unknown"; } return wName; } stock WriteLogEntry(log[], string[]) { new lstring[180]; new File:Logger = fopen(log, io_append); if(!fexist(log)) printf("[LOGS] The log %s doesn't exist! 'WriteLogEntry' function not completed ", log); else { new date[3], time[3]; gettime(time[0], time[1], time[2]); getdate(date[0], date[1], date[2]); format(lstring, sizeof(lstring), "\r\n[%02d/%02d/%d] [%02d:%02d:%02d] %s ", date[0], date[1], date[2], time[0], time[1], time[2], string); fwrite(Logger, lstring); fclose(Logger); } return 1; } stock LoadObjectsFromFile(const filename[]) { new Objects_loaded; if(!fexist(filename)) return printf("[Objects] Couldn't load objects from %s [Reason : File doesn't exist]", filename); new File:Handler = fopen(filename, io_read); if(!Handler) return printf("[Objects] Couldn't load objects from %s [Reason : I/O Error]", filename); new Line[256], Index = -1, Model, Float:PosX, Float:PosY, Float:PosZ, Float:RotX, Float:RotY, Float:RotZ,Float:DrawDistance; Objects_loaded = 0; while(fread(Handler, Line)) { Index++; new EOL = strfind(Line, ";", false); if(EOL != -1) strdel(Line, EOL - 1, sizeof Line - 1); else { printf("[Objects] Error reading @LineIndex %i from %s (EOL not found)", Index, filename); continue; } if(!sscanf(Line[13], "p<,>iffffffF(100)", Model, PosX, PosY, PosZ, RotX, RotY, RotZ, DrawDistance)) { CreateObject(Model, PosX, PosY, PosZ, RotX, RotY, RotZ, DrawDistance); Objects_loaded++; } else printf("[Objects] Error reading @LineIndex %i from %s (Invalid format)", Index, filename); } fclose(Handler); printf("[Objects] Loaded %d objects from: %s", Objects_loaded, filename); return true; } stock LoadVehiclesFromFile(const filename[]) // Thanks to PLEO for doing most of it { new count; if(!fexist(filename)) return printf("[Vehicles] Couldn't load vehicles from %s [Reason : File doesn't exist] ", filename); new File:Handler = fopen(filename, io_read); if(!Handler) return printf("[Vehicles] Couldn't load vehicles from %s [Reason : I/O Error]", filename); new Line[256], Index = -1, Model, Float:Pos[3], Float:Angle, col1, col2, respawn_delay; while(fread(Handler, Line)) { Index++; new EOL = strfind(Line, ";", false); if(EOL != -1) { strdel(Line, EOL - 1, sizeof Line - 1); } else { printf("[Vehicles] Error reading @LineIndex %i from %s (EOL not found)", Index, filename); } if(!sscanf(Line[14], "p<,>iffffddd", Model, Pos[0], Pos[1], Pos[2], Angle, col1, col2, respawn_delay)) { CreateVehicle(Model, Pos[0], Pos[1], Pos[2], Angle, col1, col2, respawn_delay); count++; } else if(!sscanf(Line[17], "p<,>iffffdd", Model, Pos[0], Pos[1], Pos[2], Angle, col1, col2)) { AddStaticVehicle(Model, Pos[0], Pos[1], Pos[2], Angle, col1, col2); count++; } else if(!sscanf(Line, "p<,>iffffdd", Model, Pos[0], Pos[1], Pos[2], Angle, col1, col2)) { CreateVehicle(Model, Pos[0], Pos[1], Pos[2], Angle, col1, col2, respawn_delay); count++; } else printf("[Vehicles] Error reading @LineIndex %i from %s [Invalid format]", Index, filename); } fclose(Handler); printf("[Vehicles] Loaded %d vehicles from %s", count, filename); return true; } stock HealAll() { for(new i; i < MAX_PLAYERS; i++) SetPlayerHealth(i, 100); return 1; } stock ArmourAll() { for(new i; i < MAX_PLAYERS; i++) SetPlayerArmour(playerid, 100); return 1; } stock GetPlayerArmedWeaponAmmo(playerid) { new weapon[3]; weapon[0] = GetWeaponSlot(GetPlayerWeapon(playerid) ); GetPlayerWeaponData(playerid, weapon[0], weapon[1], weapon[2]); return weapon[2]; } stock DisarmAll() { for(new i; i < MAX_PLAYERS; i++) ResetPlayerWeapons(i); return 1; } stock GiveWeaponToAll(weaponid, ammo) { if(weaponid > 46) return 0; for(new i; i < MAX_PLAYERS; i++) GivePlayerWeapon(playerid, weaponid, ammo); return 1; } stock GiveCashToAll(cash) { for(new i; i < MAX_PLAYERS; i++) GivePlayerMoney(i, cash); return 1; } stock GiveScoreToAll(score) { for(new i; i < MAX_PLAYERS; i++) { new pscore = GetPlayerScore(i); SetPlayerScore(i, pscore+score); } return 1; } stock FreezeAll() { for(new i; i < MAX_PLAYERS; i++) TogglePlayerControllable(i, false); return 1; } stock UnfreezeAll() { for(new i; i < MAX_PLAYERS; i++) TogglePlayerControllable(i, true); return 1; } stock GetOnlinePlayersCount() { new count; for(new x=0; x< MAX_PLAYERS; x++) { if(IsPlayerConnected(x)) { count++; } } return count; } stock GetValidObjectsCount() { new count; for(new x = 0; x < MAX_OBJECTS; x++) { if(IsValidObject(x)) { count++; } } return count; } stock GetValidVehiclesCount() { new count; for(new x = 0; x < MAX_VEHICLES; x++) { if(IsValidVehicle(x)) { count++; } } return count; }