/* South Central Roleplay by Emmet Description: This script started development in February 2014 and finished exactly 3 months later. The script was released last year and it was full of bugs that were left unfixed. Instead of abandoning the script I decided to update it to the latest MySQL version and fixed a handful of bugs. SC:RP managed to get 70+ players with this script. It was a good run while it lasted. I've had many good memories coding and playing around with this script. I've moved on from SA-MP now so hopefully this script is stable enough for use. Things to consider: * "pHouse", "pBusiness" and "pEntrance" represent the SQL ID. Use "GetHouseByID", "GetBusinessByID" and "GetEntranceByID" to get the enum ID that can be used with "HouseData", "BusinessData" and "EntranceData". * "Inventory_Add" adds an item, "Inventory_Count" returns the quantity of the item and "Inventory_Remove" removes an item. Use "Inventory_HasItem" to check if a player has an item. Credits: * Emmet (original script) * Apple (scripter) * Risky (ran the server) Copyright(c) 2012-2015 Emmet Jones (All rights reserved). */ #pragma dynamic 500000 #include #undef MAX_PLAYERS #define MAX_PLAYERS (100) #include // R39 - download it here: http://forum.sa-mp.com/showthread.php?t=56564 #include #include #include #include #include #include #include #define SQL_HOSTNAME "127.0.0.1" #define SQL_USERNAME "root" #define SQL_DATABASE "scrp" #define SQL_PASSWORD "" #define SERVER_NAME "[0.3.7] South Central Roleplay - www.scroleplay.net" #define SERVER_URL "www.scroleplay.net" #define SERVER_REVISION "SC:RP v0.21" #define SERVER_CITY (1) // (1) Los Santos, (2) San Fierro, (3) Las Venturas #define COLOR_CLIENT (0xAAC4E5FF) #define COLOR_WHITE (0xFFFFFFFF) #define COLOR_RED (0xFF0000FF) #define COLOR_CYAN (0x33CCFFFF) #define COLOR_LIGHTRED (0xFF6347FF) #define COLOR_LIGHTGREEN (0x9ACD32FF) #define COLOR_YELLOW (0xFFFF00FF) #define COLOR_GREY (0xAFAFAFFF) #define COLOR_HOSPITAL (0xFF8282FF) #define COLOR_PURPLE (0xD0AEEBFF) #define COLOR_LIGHTYELLOW (0xF5DEB3FF) #define COLOR_DARKBLUE (0x1394BFFF) #define COLOR_ORANGE (0xFFA500FF) #define COLOR_LIME (0x00FF00FF) #define COLOR_GREEN (0x33CC33FF) #define COLOR_BLUE (0x2641FEFF) #define COLOR_FACTION (0xBDF38BFF) #define COLOR_RADIO (0x8D8DFFFF) #define COLOR_LIGHTBLUE (0x007FFFFF) #define COLOR_SERVER (0xFFFF90FF) // 6688FF #define COLOR_DEPARTMENT (0xF0CC00FF) #define COLOR_ADMINCHAT (0x33EE33FF) #define DEFAULT_COLOR (0xFFFFFFFF) #define THREAD_CREATE_CHAR (1) #define THREAD_CHECK_ACCOUNT (2) #define THREAD_LOGIN (3) #define THREAD_CHARACTERS (4) #define THREAD_LOAD_CHARACTER (5) #define THREAD_VERIFY_PASS (6) #define THREAD_FIND_USERNAME (7) #define THREAD_LOAD_INVENTORY (8) #define THREAD_BAN_LOOKUP (9) #define THREAD_LOAD_CONTACTS (10) #define THREAD_LOAD_LOCATIONS (11) #define THREAD_LOAD_TICKETS (12) #define THREAD_SHOW_CHARACTER (13) #define MODEL_SELECTION_GLASSES (1) #define MODEL_SELECTION_HATS (2) #define MODEL_SELECTION_BANDANAS (3) #define MODEL_SELECTION_SKIN (4) #define MODEL_SELECTION_INVENTORY (5) #define MODEL_SELECTION_CLOTHES (6) #define MODEL_SELECTION_DEALER (7) #define MODEL_SELECTION_DEALER_ADD (8) #define MODEL_SELECTION_BUY_CAR (9) #define MODEL_SELECTION_FURNITURE (10) #define MODEL_SELECTION_COLOR (11) #define MODEL_SELECTION_SKINS (12) #define MODEL_SELECTION_ADD_SKIN (13) #define MODEL_SELECTION_FACTION_SKIN (14) #define MODEL_SELECTION_WHEELS (15) #define MODEL_SELECTION_FRISK (16) #define FACTION_POLICE (1) #define FACTION_NEWS (2) #define FACTION_MEDIC (3) #define FACTION_GOV (4) #define FACTION_GANG (5) #define JOB_COURIER (1) #define JOB_MECHANIC (2) #define JOB_TAXI (3) #define JOB_UNLOADER (4) #define JOB_MINER (5) #define JOB_FOOD_VENDOR (6) #define JOB_GARBAGE (7) #define JOB_SORTER (8) #define JOB_WEAPON_SMUGGLER (9) #define SendServerMessage(%0,%1) \ SendClientMessageEx(%0, COLOR_SERVER, "[SERVER]:{FFFFFF} "%1) #define SendSyntaxMessage(%0,%1) \ SendClientMessageEx(%0, COLOR_GREY, "[SYNTAX]:{FFFFFF} "%1) // COLOR_YELLOW #define SendErrorMessage(%0,%1) \ SendClientMessageEx(%0, COLOR_LIGHTRED, "[ERROR]:{FFFFFF} "%1) #define SendAdminAction(%0,%1) \ SendClientMessageEx(%0, COLOR_CLIENT, "[ADMIN]:{FFFFFF} "%1) // COLOR_YELLOW #define MAX_BILLBOARDS (50) #define MAX_REPORTS (50) #define MAX_INVENTORY (120) #define MAX_HOUSES (500) #define MAX_HOUSE_STORAGE (10) #define MAX_BUSINESSES (500) #define MAX_DROPPED_ITEMS (5000) #define MAX_ENTRANCES (100) #define MAX_DEALERSHIP_CARS (40) #define MAX_DYNAMIC_CARS (1500) #define MAX_GAS_PUMPS (100) #define MAX_FURNITURE (2000) #define MAX_HOUSE_FURNITURE (30) #define MAX_DYNAMIC_JOBS (25) #define MAX_CONTACTS (20) #define MAX_GPS_LOCATIONS (20) #define MAX_CAR_STORAGE (5) #define MAX_CRATES (200) #define MAX_DRUG_PLANTS (200) #define MAX_FACTIONS (15) #define MAX_ARREST_POINTS (50) #define MAX_PLAYER_TICKETS (10) #define MAX_BARRICADES (25) #define MAX_BOOTHS (8) #define MAX_GATES (100) #define MAX_IMPOUND_LOTS (20) #define MAX_ATM_MACHINES (50) #define MAX_GARBAGE_BINS (50) #define MAX_VENDORS (50) #define MAX_WEAPON_RACKS (500) #define MAX_SPEED_CAMERAS (100) #define MAX_LISTED_ITEMS (10) #define MAX_GRAFFITI_POINTS (20) #define MAX_METAL_DETECTORS (20) #define MAX_OWNABLE_CARS (5) #define MAX_OWNABLE_HOUSES (3) #define MAX_OWNABLE_BUSINESSES (3) #define MAX_BACKPACKS (2000) #define MAX_BACKPACK_ITEMS (4000) #define MAX_BACKPACK_CAPACITY (10) #define PRISON_WORLD (10000) new TruckingCheck[MAX_PLAYERS]; new Text3D:vehicle3Dtext[MAX_VEHICLES]; new vehiclecallsign[MAX_VEHICLES]; enum playerData { pID, pAccount, pLogged, pIP[16], pLoginDate[36], PlayerText:pTextdraws[83], pUsername[MAX_PLAYER_NAME + 1], pLoginAttempts, pCreated, pGender, pBirthdate[24], pOrigin[32], pSkin, pEditType, pGlasses, pHat, pBandana, Float:pPos[4], Float:pHealth, pInterior, pWorld, pCharacter, pHospital, pHospitalInt, pHospitalTime, pRepairTime, pKilled, pMoney, pBankMoney, pOwnsBillboard, pSavings, pAdmin, pShowFooter, pFooterTimer, pReportTime, pHelpTime, pSpectator, pJailTime, pKicked, pMuted, pDisplayStats, pCharacterMenu, pToggleGlasses, pToggleHat, pToggleBandana, pToggleArmor, pLastShot, pShotTime, pInventoryItem, pStorageItem, pStorageSelect, pProductModify, pTester, pGuns[13], pAmmo[13], pTutorial, pTutorialTime, pTutorialStage, pTutorialObject, pHouse, pBusiness, pEntrance, pDealership, pContact, pGasPump, pGasStation, pEditPump, pEditFurniture, pEditGate, pEditRack, pSelectFurniture, pRefill, pRefillPrice, pDealerCar, pEditingItem[32 char], pHouseSeller, pHouseOffered, pHouseValue, pBusinessSeller, pBusinessOffered, pBusinessValue, pCarSeller, pCarOffered, pCarValue, pShakeOffer, pShakeType, pFriskOffer, pFoodSeller, pFoodType, pFoodPrice, pFactionOffer, pFactionOffered, pHouseLights, pPhone, pPhoneOff, pLottery, pLotteryB, pHunger, pThirst, pHungerTime, pThirstTime, pCooking, pCookingTime, pCookingHouse, pPlayingHours, pMinutes, Float:pArmorStatus, pArmorShown, pClothesType, pDrivingTest, pTestStage, pTestCar, pTestWarns, pFurnitureType, pJob, pTaxiFee, pTaxiTime, pTaxiPlayer, pTaxiDuty, pFirstAid, pAidTimer, pIncomingCall, pCallLine, pMining, pMineTime, pMineCount, pMinedRock, pCarryTrash, pCarryCrate, pCrateVehicle, pCrafting, pOpeningCrate, pHarvesting, pFaction, pFactionID, pFactionRank, pFactionEdit, pSelectedSlot, pOnDuty, pTazer, pBeanBag, pStunned, pCuffed, pDragged, pDraggedBy, pDragTimer, pWarrants, pMDCPlayer, pTrackTime, pCP, pPrisoned, pInjured, pBroadcast, pNewsGuest, pSpamCount, pCommandCount, pMuteTime, pTransfer, pWaypoint, pLocation[32], Float:pWaypointPos[3], pFuelCan, pDisableOOC, pDisablePM, pDisableFaction, pDisableTester, pDisableBC, pDisableSpeedo, pNameChange[32], pDrugUsed, pDrugTime, pFingerTime, pFingerItem, pHealthTime, pWeapon, pBackpackLoot, pGiveItem, pChannel, pEmergency, pPlaceAd, pAdTime, pRangeBooth, pTargets, pTargetLevel, pVendorTime, pLoopAnim, pExecute, pBoombox, pTakeItems, PlayerBar:pDrinkBar, pDrinking, pDrinkTime, pAdvertise[128 char], pTaxiCalled, pSpeedTime, pMarker, pBleeding, pBleedTime, pLoadType, pLoadCrate, pLoading, pUnloading, pUnloadVehicle, pShipment, pDeliverShipment, pHoldWeapon, pUsedMagazine, pTask, pBankTask, pStoreTask, pTestTask, pWarnings, pWarn1[32], pWarn2[32], pSorting, pSortCrate, pTesterDuty, pAdminDuty, pSeekHelp, pHUD, pMaskID, pMaskOn, pHideTags, pFactionMod, pCapacity, pPlayRadio, pLeaveTime, pLeaveIP[16], pGraffiti, pGraffitiTime, pGraffitiColor, pGraffitiText[64 char], pEditGraffiti, pAdminHide, pDetectorTime, pPicking, pPickCar, pPickTime, pJetpack, pFreeze, pFreezeTimer, Text3D:pNameTag, pSpawnPoint }; enum reportData { rExists, rType, rPlayer, rText[128 char] }; enum billboardData { bbID, bbExists, bbName[32], bbMessage[230], bbOwner, bbPrice, bbRange, Float:bbPos[4], Text3D:bbText3D }; new BillBoardData[MAX_BILLBOARDS][billboardData]; new BillboardCheckout[MAX_PLAYERS]; enum inventoryData { invExists, invID, invItem[32 char], invModel, invQuantity }; enum houseData { houseID, houseExists, houseOwner, housePrice, houseAddress[32], Float:housePos[4], Float:houseInt[4], houseInterior, houseExterior, houseExteriorVW, houseLocked, houseMoney, houseMapIcon, Text3D:houseText3D, housePickup, houseLights, houseWeapons[10], houseAmmo[10] }; enum houseStorage { hItemID, hItemExists, hItemName[32 char], hItemModel, hItemQuantity }; enum businessData { bizID, bizExists, bizName[32], bizMessage[128], bizOwner, bizType, bizPrice, Float:bizPos[4], Float:bizInt[4], Float:bizSpawn[4], Float:bizDeliver[3], bizInterior, bizExterior, bizExteriorVW, bizLocked, bizVault, bizProducts, bizPickup, bizShipment, bizPrices[20], Text3D:bizText3D, Text3D:bizDeliverText3D, bizDeliverPickup }; enum droppedItems { droppedID, droppedItem[32], droppedPlayer[24], droppedModel, droppedQuantity, Float:droppedPos[3], droppedWeapon, droppedAmmo, droppedInt, droppedWorld, droppedObject, Text3D:droppedText3D }; enum entranceData { entranceID, entranceExists, entranceName[32], entrancePass[32], entranceIcon, entranceLocked, Float:entrancePos[4], Float:entranceInt[4], entranceInterior, entranceExterior, entranceExteriorVW, entranceType, entranceCustom, entranceWorld, entranceForklift[7], entrancePickup, entranceMapIcon, Text3D:entranceText3D }; enum dealershipCars { vehID, vehModel, vehPrice }; enum carData { carID, carExists, carModel, carOwner, Float:carPos[4], carColor1, carColor2, carPaintjob, carLocked, carMods[14], carImpounded, carImpoundPrice, carFaction, carWeapons[5], carAmmo[5], carVehicle }; enum carStorage { cItemID, cItemExists, cItemName[32 char], cItemModel, cItemQuantity }; enum pumpData { pumpID, pumpExists, pumpBusiness, Float:pumpPos[4], pumpFuel, pumpObject, Text3D:pumpText3D }; enum furnitureData { furnitureID, furnitureHouse, furnitureExists, furnitureModel, furnitureName[32], Float:furniturePos[3], Float:furnitureRot[3], furnitureObject }; enum jobData { jobID, jobExists, jobType, Float:jobPos[3], Float:jobPoint[3], Float:jobDeliver[3], jobInterior, jobWorld, jobPointInt, jobPointWorld, jobPickups[3], Text3D:jobText3D[3] }; enum contactData { contactID, contactExists, contactName[32], contactNumber }; enum locationData { locationID, locationExists, locationName[32], Float:locationPos[3], }; enum crateData { crateID, crateExists, crateType, Float:cratePos[4], crateInterior, crateWorld, crateObject, crateVehicle, Text3D:crateText3D }; enum plantData { plantID, plantExists, plantType, plantDrugs, Float:plantPos[4], plantInterior, plantWorld, plantObject, Text3D:plantText3D }; enum factionData { factionID, factionExists, factionName[32], factionColor, factionType, factionRanks, Float:factionLockerPos[3], factionLockerInt, factionLockerWorld, factionSkins[8], factionWeapons[10], factionAmmo[10], Text3D:factionText3D, factionPickup, Float:SpawnX, Float:SpawnY, Float:SpawnZ, SpawnInterior, SpawnVW }; enum prisonData { prisonDoors[3], prisonCells[24], prisonDoorOpened[3], prisonCellOpened[24] }; enum arrestPoints { arrestID, arrestExists, Float:arrestPos[3], arrestInterior, arrestWorld, Text3D:arrestText3D, arrestPickup }; enum ticketData { ticketID, ticketExists, ticketFee, ticketDate[36], ticketReason[64] }; enum barricadeData { cadeExists, cadeType, Float:cadePos[3], cadeObject }; enum gateData { gateID, gateExists, gateOpened, gateModel, Float:gateSpeed, Float:gateRadius, gateTime, Float:gatePos[6], gateInterior, gateWorld, Float:gateMove[6], gateLinkID, gateFaction, gatePass[32], gateTimer, gateObject }; enum backpackData { backpackID, backpackExists, backpackPlayer, backpackHouse, backpackVehicle, Float:backpackPos[3], backpackInterior, backpackWorld, Text3D:backpackText3D, backpackObject }; enum backpackItems { bItemID, bItemBackpack, bItemExists, bItemName[32], bItemModel, bItemQuantity }; enum impoundData { impoundID, impoundExists, Float:impoundLot[3], Float:impoundRelease[4], Text3D:impoundText3D, impoundPickup }; enum atmData { atmID, atmExists, Float:atmPos[4], atmInterior, atmWorld, atmObject, Text3D:atmText3D }; enum garbageData { garbageID, garbageExists, garbageModel, garbageCapacity, Float:garbagePos[4], garbageInterior, garbageWorld, Text3D:garbageText3D, garbageObject }; enum vendorData { vendorID, vendorExists, vendorType, Float:vendorPos[4], vendorInterior, vendorWorld, Text3D:vendorText3D, vendorObject }; enum boomboxData { boomboxPlaced, Float:boomboxPos[3], boomboxInterior, boomboxWorld, boomboxObject, boomboxURL[128 char], Text3D:boomboxText3D }; enum rackData { rackID, rackExists, rackHouse, Float:rackPos[4], rackInterior, rackWorld, rackWeapons[4], rackAmmo[4], rackObjects[5], Text3D:rackText3D }; enum speedData { speedID, speedExists, Float:speedPos[4], Float:speedRange, Float:speedLimit, speedObject, Text3D:speedText3D }; enum graffitiData { graffitiID, graffitiExists, Float:graffitiPos[4], graffitiIcon, graffitiObject, graffitiColor, graffitiText[64] }; enum detectorData { detectorID, detectorExists, Float:detectorPos[4], detectorInterior, detectorWorld, detectorObject[2] }; new g_iHandle; new g_StatusOOC; new g_TaxVault; new g_ServerLocked; new Text:gServerTextdraws[4]; new g_ServerRestart; new g_RestartTime; new g_BoothUsed[MAX_BOOTHS]; new g_BoothObject[MAX_BOOTHS] = {-1, ...}; new g_aFireObjects[36] = {INVALID_OBJECT_ID, ...}; new g_aFireExtinguished[36]; new PrisonData[prisonData]; new Float:PrisonCells[24][3]; new GraffitiData[MAX_GRAFFITI_POINTS][graffitiData]; new MetalDetectors[MAX_METAL_DETECTORS][detectorData]; new BarricadeData[MAX_BARRICADES][barricadeData]; new VendorData[MAX_VENDORS][vendorData]; new SpeedData[MAX_SPEED_CAMERAS][speedData]; new BoomboxData[MAX_PLAYERS][boomboxData]; new RackData[MAX_WEAPON_RACKS][rackData]; new ATMData[MAX_ATM_MACHINES][atmData]; new GarbageData[MAX_GARBAGE_BINS][garbageData]; new BackpackData[MAX_BACKPACKS][backpackData]; new BackpackItems[MAX_BACKPACK_ITEMS][backpackItems]; new BackpackListed[MAX_PLAYERS][MAX_BACKPACK_CAPACITY]; new ImpoundData[MAX_IMPOUND_LOTS][impoundData]; new PlayerData[MAX_PLAYERS][playerData]; new Float:AccessoryData[MAX_PLAYERS][3][9]; new TicketData[MAX_PLAYERS][MAX_PLAYER_TICKETS][ticketData]; new ListedVehicles[MAX_PLAYERS][MAX_OWNABLE_CARS]; new InventoryData[MAX_PLAYERS][MAX_INVENTORY][inventoryData]; new ContactData[MAX_PLAYERS][MAX_CONTACTS][contactData]; new LocationData[MAX_PLAYERS][MAX_GPS_LOCATIONS][locationData]; new ListedFurniture[MAX_PLAYERS][MAX_HOUSE_FURNITURE]; new NearestItems[MAX_PLAYERS][MAX_LISTED_ITEMS]; new ListedContacts[MAX_PLAYERS][MAX_CONTACTS]; new ReportData[MAX_REPORTS][reportData]; new ArrestData[MAX_ARREST_POINTS][arrestPoints]; new BusinessData[MAX_BUSINESSES][businessData]; new PumpData[MAX_GAS_PUMPS][pumpData]; new DealershipCars[MAX_BUSINESSES][MAX_DEALERSHIP_CARS][dealershipCars]; new DroppedItems[MAX_DROPPED_ITEMS][droppedItems]; new EntranceData[MAX_ENTRANCES][entranceData]; new CarData[MAX_DYNAMIC_CARS][carData]; new CarStorage[MAX_DYNAMIC_CARS][MAX_CAR_STORAGE][carStorage]; new HouseData[MAX_HOUSES][houseData]; new HouseStorage[MAX_HOUSES][MAX_HOUSE_STORAGE][houseStorage]; new FurnitureData[MAX_FURNITURE][furnitureData]; new JobData[MAX_DYNAMIC_JOBS][jobData]; new CrateData[MAX_CRATES][crateData]; new PlantData[MAX_DRUG_PLANTS][plantData]; new FactionData[MAX_FACTIONS][factionData]; new FactionRanks[MAX_FACTIONS][15][32]; new GateData[MAX_GATES][gateData]; /* 0 to 10: Character textdraws 11 to 22: ID card 23 to 33: Character customization 34 to 38: Speedometer 39: Footer textdraw 40 to 49: Stats textdraw 50 to 57: Character textdraw 58 to 61: Tutorial textdraws 62: House light 63 to 64: Hunger and thirst (percent) 65 to 66: Hunger and thirst (model icons) 67 to 68: Armor 69: GPS */ new PlayerCharacters[MAX_PLAYERS][3][MAX_PLAYER_NAME + 1]; enum coreVehicles { vehFuel, vehWindowsDown, vehTemporary, vehLoads, vehLoadType, vehCrate, vehTrash, vehRepairing, vehSirenOn, vehSirenObject, vehRadio, vehURL[128 char], Float:vehLoadHealth, Float:vehLoadPos[3] }; new CoreVehicles[MAX_VEHICLES][coreVehicles]; stock const g_aWeatherRotations[] = { 14, 1, 7, 3, 5, 12, 9, 8, 15 }; enum e_InventoryItems { e_InventoryItem[32], e_InventoryModel }; new const g_aInventoryItems[][e_InventoryItems] = { {"Marijuana", 1578}, {"Cocaine", 1575}, {"Heroin", 1577}, {"Steroids", 1241}, {"Marijuana Seeds", 1578}, {"Cocaine Seeds", 1575}, {"Heroin Opium Seeds", 1577}, {"Golf Club", 333}, {"Knife", 335}, {"Shovel", 337}, {"Katana", 339}, {"Colt 45", 346}, {"Desert Eagle", 348}, {"Micro SMG", 352}, {"Tec-9", 372}, {"MP5", 353}, {"Shotgun", 349}, {"AK-47", 355}, {"Rifle", 357}, {"Sniper", 358}, {"Magazine", 2039}, {"Cooked Burger", 2703}, {"Cooked Pizza", 2702}, {"Driving License", 1581}, //{"Weapon License", 1581}, {"Cellphone", 330}, {"GPS System", 18875}, {"Spray Can", 365}, {"Water Bottle", 2958}, {"Soda", 1543}, {"Fuel Can", 1650}, {"Crowbar", 18634}, {"Boombox", 2226}, {"Mask", 19036}, {"First Aid", 1580}, {"Repair Kit", 920}, {"NOS Canister", 1010}, {"Frozen Pizza", 2814}, {"Frozen Burger", 2768}, {"Ammo Cartridge", 2358}, {"Armored Vest", 19142}, {"Empty Bottle", 1484}, {"Cardboard", 928}, {"Chicken", 2663}, {"Portable Radio", 18868} }; new const Float:arrHospitalDeliver[6][3] = { {-2692.6580, 635.4608, 14.4531}, {-334.9757, 1063.0171, 19.7392}, {1579.9666, 1767.1462, 10.8203}, {1177.8599, -1308.3982, 13.8301}, {2024.4246, -1404.1580, 17.2020}, {1243.9304, 331.4186, 19.5547} }; new const Float:arrHospitalSpawns[6][4] = { {-2655.1240, 638.6232, 14.4531, 180.0000}, {-318.8799, 1049.2433, 20.3403, 0.0000}, {1607.4869, 1816.0693, 10.8203, 0.0000}, {1172.8372, -1325.3186, 15.4000, 270.0000}, {2034.0670, -1402.6815, 17.2938, 180.0000}, {1241.6802, 326.4038, 19.7555, 335.0000} }; new const Float:g_arrWeaponDamage[] = { 1.32, 1.32, 4.62, 4.62, 2.64, 4.62, 4.62, 4.62, 2.64, 13.53, 4.62, 2.64, 4.62, 2.64, 4.62, 2.64, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 8.25, 13.2, 46.2, 49.5, 49.5, 39.6, 6.60, 8.25, 9.90, 9.90, 6.60, 24.75, 41.25, 0.00, 0.00, 0.00, 46.2, 0.00, 0.00, 2.64, 2.64, 0.00, 0.00, 0.00, 1.32 }; new const g_aWeaponSlots[] = { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 10, 10, 10, 10, 10, 10, 8, 8, 8, 0, 0, 0, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 4, 6, 6, 7, 7, 7, 7, 8, 12, 9, 9, 9, 11, 11, 11 }; /*new const g_aPreloadLibs[][] = { {"COLT45"}, {"SILENCED"}, {"PYTHON"}, {"BUDDY"}, {"RIFLE"}, {"TEC"}, {"GRENADE"}, {"CRACK"}, {"BASEBALL"}, {"BSKTBALL"}, {"DEALER"}, {"MISC"}, {"CARRY"}, {"CRACK"}, {"GRAFFITI"}, {"VENDING"}, {"SMOKING"} };*/ new const g_aPreloadLibs[][] = { "AIRPORT", "ATTRACTORS", "BAR", "BASEBALL", "BD_FIRE", "BEACH", "BENCHPRESS", "BF_INJECTION", "BIKE_DBZ", "BIKED", "BIKEH", "BIKELEAP", "BIKES", "BIKEV", "BLOWJOBZ", "BMX", "BOMBER", "BOX", "BSKTBALL", "BUDDY", "BUS", "CAMERA", "CAR", "CAR_CHAT", "CARRY", "CASINO", "CHAINSAW", "CHOPPA", "CLOTHES", "COACH", "COLT45", "COP_AMBIENT", "COP_DVBYZ", "CRACK", "CRIB", "DAM_JUMP", "DANCING", "DEALER", "DILDO", "DODGE", "DOZER", "DRIVEBYS", "FAT", "FIGHT_B", "FIGHT_C", "FIGHT_D", "FIGHT_E", "FINALE", "FINALE2", "FLAME", "FLOWERS", "FOOD", "FREEWEIGHTS", "GANGS", "GFUNK", "GHANDS", "GHETTO_DB", "GOGGLES", "GRAFFITI", "GRAVEYARD", "GRENADE", "GYMNASIUM", "HAIRCUTS", "HEIST9", "INT_HOUSE", "INT_OFFICE", "INT_SHOP", "JST_BUISNESS", "KART", "KISSING", "KNIFE", "LAPDAN1", "LAPDAN2", "LAPDAN3", "LOWRIDER", "MD_CHASE", "MD_END", "MEDIC", "MISC", "MTB", "MUSCULAR", "NEVADA", "ON_LOOKERS", "OTB", "PARACHUTE", "PARK", "PAULNMAC", "PED", "PLAYER_DVBYS", "PLAYIDLES", "POLICE", "POOL", "POOR", "PYTHON", "QUAD", "QUAD_DBZ", "RAPPING", "RIFLE", "RIOT", "ROB_BANK", "ROCKET", "RUNNINGMAN", "RUSTLER", "RYDER", "SCRATCHING", "SEX", "SHAMAL", "SHOP", "SHOTGUN", "SILENCED", "SKATE", "SMOKING", "SNIPER", "SNM", "SPRAYCAN", "STRIP", "SUNBATHE", "SWAT", "SWEET", "SWIM", "SWORD", "TANK", "TATTOOS", "TEC", "TRAIN", "TRUCK", "UZI", "VAN", "VENDING", "VORTEX", "WAYFARER", "WEAPONS", "WOP", "WUZI" }; enum houseInteriors { eHouseInterior, Float:eHouseX, Float:eHouseY, Float:eHouseZ, Float:eHouseAngle }; new const Float:arrHouseInteriors[20][houseInteriors] = { {10, 2269.8772, -1210.3240, 1047.5625, 90.0000}, {2, 2468.2576, -1698.2361, 1013.5078, 90.0000}, {3, 2495.8711, -1693.0996, 1014.7422, 180.0000}, {5, 2233.7888, -1114.2689, 1050.8828, 0.0000}, {9, 2317.8015, -1026.2113, 1050.2178, 0.0000}, {3, 235.2923, 1187.3684, 1080.2578, 0.0000}, {2, 226.2912, 1240.0554, 1082.1406, 90.0000}, {1, 223.1618, 1287.5175, 1082.1406, 0.0000}, {5, 226.9281, 1114.2813, 1080.9962, 270.0000}, {15, 295.1485, 1473.1080, 1080.2578, 0.0000}, {10, 23.9584, 1340.6075, 1084.3750, 0.0000}, {4, 222.0425, 1140.7565, 1082.6094, 0.0000}, {12, 2324.4209, -1148.9365, 1050.7101, 0.0000}, {4, -261.1430, 1456.6396, 1084.3672, 90.0000}, {5, 22.9676, 1403.8368, 1084.4297, 0.0000}, {5, 140.3088, 1366.8196, 1083.8594, 0.0000}, {6, 234.3149, 1064.2772, 1084.2114, 0.0000}, {7, 225.7000, 1022.0012, 1084.0161, 0.0000}, {5, 1298.9750, -796.4567, 1084.0078, 0.0000}, {15, -283.8687, 1471.1174, 1084.3750, 90.0000} }; new const Float:arrBoothPositions[MAX_BOOTHS][3] = { {300.5000, -138.5660, 1004.0625}, {300.5000, -137.0286, 1004.0625}, {300.5000, -135.5336, 1004.0625}, {300.5000, -134.0436, 1004.0625}, {300.5000, -132.5637, 1004.0625}, {300.5000, -131.0782, 1004.0625}, {300.5000, -129.5582, 1004.0625}, {300.5000, -128.0786, 1004.0625} }; new stock g_arrVehicleNames[][] = { "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel", "Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana", "Infernus", "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam", "Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection", "Hunter", "Premier", "Enforcer", "Securicar", "Banshee", "Predator", "Bus", "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach", "Cabbie", "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral", "Squalo", "Seasparrow", "Pizzaboy", "Tram", "Trailer", "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", "Cropduster", "Stunt", "Tanker", "Roadtrain", "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra", "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck", "Fortune", "Cadrona", "SWAT Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer", "Remington", "Slamvan", "Blade", "Streak", "Freight", "Vortex", "Vincent", "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder", "Primo", "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite", "Windsor", "Monster", "Monster", "Uranus", "Jester", "Sultan", "Stratum", "Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito", "Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper", "Broadway", "Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400", "News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club", "Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "LSPD Car", "SFPD Car", "LVPD Car", "Police Rancher", "Picador", "S.W.A.T", "Alpha", "Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs", "Boxville", "Tiller", "Utility Trailer" }; enum e_InteriorData { e_InteriorName[32], e_InteriorID, Float:e_InteriorX, Float:e_InteriorY, Float:e_InteriorZ }; new const g_arrInteriorData[][e_InteriorData] = { {"24/7 1", 17, -25.884498, -185.868988, 1003.546875}, {"24/7 2", 10, 6.091179, -29.271898, 1003.549438}, {"24/7 3", 18, -30.946699, -89.609596, 1003.546875}, {"24/7 4", 16, -25.132598, -139.066986, 1003.546875}, {"24/7 5", 4, -27.312299, -29.277599, 1003.557250}, {"24/7 6", 6, -26.691598, -55.714897, 1003.546875}, {"Airport Ticket", 14, -1827.147338, 7.207417, 1061.143554}, {"Airport Baggage", 14, -1861.936889, 54.908092, 1061.143554}, {"Shamal", 1, 1.808619, 32.384357, 1199.593750}, {"Andromada", 9, 315.745086, 984.969299, 1958.919067}, {"Ammunation 1", 1, 286.148986, -40.644397, 1001.515625}, {"Ammunation 2", 4, 286.800994, -82.547599, 1001.515625}, {"Ammunation 3", 6, 296.919982, -108.071998, 1001.515625}, {"Ammunation 4", 7, 314.820983, -141.431991, 999.601562}, {"Ammunation 5", 6, 316.524993, -167.706985, 999.593750}, {"Ammunation Booths", 7, 302.292877, -143.139099, 1004.062500}, {"Ammunation Range", 7, 298.507934, -141.647048, 1004.054748}, {"Blastin Fools Hallway", 3, 1038.531372, 0.111030, 1001.284484}, {"Budget Inn Motel Room", 12, 444.646911, 508.239044, 1001.419494}, {"Jefferson Motel", 15, 2215.454833, -1147.475585, 1025.796875}, {"Off Track Betting Shop", 3, 833.269775, 10.588416, 1004.179687}, {"Sex Shop", 3, -103.559165, -24.225606, 1000.718750}, {"Meat Factory", 1, 963.418762, 2108.292480, 1011.030273}, {"Zero's RC shop", 6, -2240.468505, 137.060440, 1035.414062}, {"Dillimore Gas", 0, 663.836242, -575.605407, 16.343263}, {"Catigula's Basement", 1, 2169.461181, 1618.798339, 999.976562}, {"FC Janitor Room", 10, 1889.953369, 1017.438293, 31.882812}, {"Woozie's Office", 1, -2159.122802, 641.517517, 1052.381713}, {"Binco", 15, 207.737991, -109.019996, 1005.132812}, {"Didier Sachs", 14, 204.332992, -166.694992, 1000.523437}, {"Prolaps", 3, 207.054992, -138.804992, 1003.507812}, {"Suburban", 1, 203.777999, -48.492397, 1001.804687}, {"Victim", 5, 226.293991, -7.431529, 1002.210937}, {"Zip", 18, 161.391006, -93.159156, 1001.804687}, {"Club", 17, 493.390991, -22.722799, 1000.679687}, {"Bar", 11, 501.980987, -69.150199, 998.757812}, {"Lil' Probe Inn", 18, -227.027999, 1401.229980, 27.765625}, {"Jay's Diner", 4, 457.304748, -88.428497, 999.554687}, {"Gant Bridge Diner", 5, 454.973937, -110.104995, 1000.077209}, {"Secret Valley Diner", 6, 435.271331, -80.958938, 999.554687}, {"World of Coq", 1, 452.489990, -18.179698, 1001.132812}, {"Welcome Pump", 1, 681.557861, -455.680053, -25.609874}, {"Burger Shot", 10, 375.962463, -65.816848, 1001.507812}, {"Cluckin' Bell", 9, 369.579528, -4.487294, 1001.858886}, {"Well Stacked Pizza", 5, 373.825653, -117.270904, 1001.499511}, {"Rusty Browns Donuts", 17, 381.169189, -188.803024, 1000.632812}, {"Denise's Room", 1, 244.411987, 305.032989, 999.148437}, {"Katie's Room", 2, 271.884979, 306.631988, 999.148437}, {"Helena's Room", 3, 291.282989, 310.031982, 999.148437}, {"Michelle's Room", 4, 302.180999, 300.722991, 999.148437}, {"Barbara's Room", 5, 322.197998, 302.497985, 999.148437}, {"Millie's Room", 6, 346.870025, 309.259033, 999.155700}, {"Sherman Dam", 17, -959.564392, 1848.576782, 9.000000}, {"Planning Dept", 3, 384.808624, 173.804992, 1008.382812}, {"Area 51", 0, 223.431976, 1872.400268, 13.734375}, {"LS Gym", 5, 772.111999, -3.898649, 1000.728820}, {"SF Gym", 6, 774.213989, -48.924297, 1000.585937}, {"LV Gym", 7, 773.579956, -77.096694, 1000.655029}, {"B-Dup's House", 3, 1527.229980, -11.574499, 1002.097106}, {"B-Dup's Crack Pad", 2, 1523.509887, -47.821197, 1002.130981}, {"CJ's House", 3, 2496.049804, -1695.238159, 1014.742187}, {"Madd Doggs Mansion", 5, 1267.663208, -781.323242, 1091.906250}, {"OG Loc's House", 3, 513.882507, -11.269994, 1001.565307}, {"Ryders House", 2, 2454.717041, -1700.871582, 1013.515197}, {"Sweet's House", 1, 2527.654052, -1679.388305, 1015.498596}, {"Crack Factory", 2, 2543.462646, -1308.379882, 1026.728393}, {"Big Spread Ranch", 3, 1212.019897, -28.663099, 1000.953125}, {"Fanny batters", 6, 761.412963, 1440.191650, 1102.703125}, {"Strip Club", 2, 1204.809936, -11.586799, 1000.921875}, {"Strip Club (Private Room)", 2, 1204.809936, 13.897239, 1000.921875}, {"Unnamed Brothel", 3, 942.171997, -16.542755, 1000.929687}, {"Tiger Skin Brothel", 3, 964.106994, -53.205497, 1001.124572}, {"Pleasure Domes", 3, -2640.762939, 1406.682006, 906.460937}, {"Liberty City Outside", 1, -729.276000, 503.086944, 1371.971801}, {"Liberty City Inside", 1, -794.806396, 497.738037, 1376.195312}, {"Gang House", 5, 2350.339843, -1181.649902, 1027.976562}, {"Colonel Furhberger's", 8, 2807.619873, -1171.899902, 1025.570312}, {"Crack Den", 5, 318.564971, 1118.209960, 1083.882812}, {"Warehouse 1", 1, 1412.639892, -1.787510, 1000.924377}, {"Warehouse 2", 18, 1302.519897, -1.787510, 1001.028259}, {"Sweet's Garage", 0, 2522.000000, -1673.383911, 14.866223}, {"Lil' Probe Inn Toilet", 18, -221.059051, 1408.984008, 27.773437}, {"Unused Safe House", 12, 2324.419921, -1145.568359, 1050.710083}, {"RC Battlefield", 10, -975.975708, 1060.983032, 1345.671875}, {"Barber 1", 2, 411.625976, -21.433298, 1001.804687}, {"Barber 2", 3, 418.652984, -82.639793, 1001.804687}, {"Barber 3", 12, 412.021972, -52.649898, 1001.898437}, {"Tatoo Parlor 1", 16, -204.439987, -26.453998, 1002.273437}, {"Tatoo Parlor 2", 17, -204.439987, -8.469599, 1002.273437}, {"Tatoo Parlor 3", 3, -204.439987, -43.652496, 1002.273437}, {"LS Police HQ", 6, 246.783996, 63.900199, 1003.640625}, {"SF Police HQ", 10, 246.375991, 109.245994, 1003.218750}, {"LV Police HQ", 3, 288.745971, 169.350997, 1007.171875}, {"Driving School", 3, -2029.798339, -106.675910, 1035.171875}, {"8-Track", 7, -1398.065307, -217.028900, 1051.115844}, {"Bloodbowl", 15, -1398.103515, 937.631164, 1036.479125}, {"Dirt Track", 4, -1444.645507, -664.526000, 1053.572998}, {"Kickstart", 14, -1465.268676, 1557.868286, 1052.531250}, {"Vice Stadium", 1, -1401.829956, 107.051300, 1032.273437}, {"SF Garage", 0, -1790.378295, 1436.949829, 7.187500}, {"LS Garage", 0, 1643.839843, -1514.819580, 13.566620}, {"SF Bomb Shop", 0, -1685.636474, 1035.476196, 45.210937}, {"Blueberry Warehouse", 0, 76.632553, -301.156829, 1.578125}, {"LV Warehouse 1", 0, 1059.895996, 2081.685791, 10.820312}, {"LV Warehouse 2 (hidden part)", 0, 1059.180175, 2148.938720, 10.820312}, {"Caligula's Hidden Room", 1, 2131.507812, 1600.818481, 1008.359375}, {"Bank", 0, 2315.952880, -1.618174, 26.742187}, {"Bank (Behind Desk)", 0, 2319.714843, -14.838361, 26.749565}, {"LS Atrium", 18, 1710.433715, -1669.379272, 20.225049} }; new const Float:g_arrDrivingCheckpoints[][] = { {-2064.9561, -67.7125, 34.8247}, {-2110.5261, -67.8857, 34.8247}, {-2154.2473, -67.6854, 34.8231}, {-2169.3850, -82.5202, 34.8302}, {-2169.8767, -114.5743, 34.8188}, {-2170.6482, -162.7804, 34.8249}, {-2215.5796, -187.5162, 34.8745}, {-2244.0376, -187.6771, 34.8235}, {-2259.1860, -202.9163, 34.9007}, {-2259.7864, -253.0544, 39.7875}, {-2260.3638, -300.5378, 48.1640}, {-2259.5361, -339.2552, 50.5190}, {-2258.4385, -371.1333, 50.5193}, {-2236.2454, -416.2657, 50.5155}, {-2195.2356, -459.0606, 49.3517}, {-2155.1711, -497.7458, 41.1217}, {-2117.1301, -536.1792, 34.2394}, {-2059.1565, -577.5410, 29.0998}, {-1984.6453, -582.2720, 25.5633}, {-1925.5862, -583.2345, 24.0926}, {-1885.5591, -583.6432, 24.0940}, {-1821.1207, -583.9514, 15.9855}, {-1816.3672, -559.6774, 15.8619}, {-1821.3180, -527.9517, 14.6263}, {-1819.6934, -462.3056, 14.6151}, {-1809.8923, -396.5690, 16.1884}, {-1798.9331, -317.3351, 24.3122}, {-1796.9186, -239.6917, 17.8804}, {-1797.0546, -168.9667, 9.4126}, {-1797.6467, -125.6053, 5.1712}, {-1811.8171, -114.1203, 5.1504}, {-1841.5179, -114.4944, 5.1483}, {-1882.5660, -106.9792, 14.5634}, {-1911.3077, -79.0253, 24.6949}, {-1938.0209, -62.3110, 25.2069}, {-1975.7996, -64.1764, 27.7167}, {-2014.0769, -67.5033, 34.8182}, {-2040.5736, -67.4500, 34.8250}, {-2046.2883, -84.8129, 34.8103}, {-2068.5259, -84.6942, 34.8201} }; new const Float:g_arrPrisonSpawns[][] = { {1217.8539,-1344.5790,796.7456,90.0000}, {1217.8678,-1341.3213,796.7456,90.0000}, {1217.2465,-1337.8044,796.7456,90.0000}, {1217.9287,-1334.7639,796.7456,90.0000}, {1217.8746,-1331.4298,796.7456,90.0000}, {1217.5286,-1328.4138,796.7456,90.0000}, {1202.8230,-1327.8770,796.7505,270.0000}, {1203.4220,-1331.0464,796.7505,270.0000}, {1203.0822,-1334.2010,796.7505,270.0000}, {1203.3068,-1337.5503,796.7505,270.0000}, {1203.2917,-1340.3719,796.7505,270.0000}, {1203.1689,-1343.8762,796.7505,270.0000}, {1203.0190,-1343.8212,800.2859,270.0000}, {1203.1254,-1340.6129,800.2859,270.0000}, {1203.5780,-1337.3750,800.2859,270.0000}, {1203.7159,-1334.1960,800.2859,270.0000}, {1203.6014,-1331.0227,800.2859,270.0000}, {1203.2318,-1327.8788,800.2859,270.0000}, {1217.8292,-1328.4882,800.2859,90.0000}, {1217.6486,-1331.5758,800.2859,90.0000}, {1217.9084,-1335.0168,800.2859,90.0000}, {1217.6915,-1338.0559,800.2859,90.0000}, {1217.5966,-1341.0157,800.2859,90.0000}, {1217.3633,-1344.3766,800.2859,90.0000} }; new const g_aLegalMods[][] = { {400, 1024, 1021, 1020, 1019, 1018, 1013, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {401, 1145, 1144, 1143, 1142, 1020, 1019, 1017, 1013, 1007, 1006, 1005, 1004, 1003, 1001, 0000, 0000, 0000, 0000}, {404, 1021, 1020, 1019, 1017, 1016, 1013, 1007, 1002, 1000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {405, 1023, 1021, 1020, 1019, 1018, 1014, 1001, 1000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {410, 1024, 1023, 1021, 1020, 1019, 1017, 1013, 1007, 1003, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {415, 1023, 1019, 1018, 1017, 1007, 1003, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {418, 1021, 1020, 1016, 1006, 1002, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {420, 1021, 1019, 1005, 1004, 1003, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {421, 1023, 1021, 1020, 1019, 1018, 1016, 1014, 1000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {422, 1021, 1020, 1019, 1017, 1013, 1007, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {426, 1021, 1019, 1006, 1005, 1004, 1003, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {436, 1022, 1021, 1020, 1019, 1017, 1013, 1007, 1006, 1003, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {439, 1145, 1144, 1143, 1142, 1023, 1017, 1013, 1007, 1003, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {477, 1021, 1020, 1019, 1018, 1017, 1007, 1006, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {478, 1024, 1022, 1021, 1020, 1013, 1012, 1005, 1004, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {489, 1024, 1020, 1019, 1018, 1016, 1013, 1006, 1005, 1004, 1002, 1000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {491, 1145, 1144, 1143, 1142, 1023, 1021, 1020, 1019, 1018, 1017, 1014, 1007, 1003, 0000, 0000, 0000, 0000, 0000}, {492, 1016, 1006, 1005, 1004, 1000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {496, 1143, 1142, 1023, 1020, 1019, 1017, 1011, 1007, 1006, 1003, 1002, 1001, 0000, 0000, 0000, 0000, 0000, 0000}, {500, 1024, 1021, 1020, 1019, 1013, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {516, 1021, 1020, 1019, 1018, 1017, 1016, 1015, 1007, 1004, 1002, 1000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {517, 1145, 1144, 1143, 1142, 1023, 1020, 1019, 1018, 1017, 1016, 1007, 1003, 1002, 0000, 0000, 0000, 0000, 0000}, {518, 1145, 1144, 1143, 1142, 1023, 1020, 1018, 1017, 1013, 1007, 1006, 1005, 1003, 1001, 0000, 0000, 0000, 0000}, {527, 1021, 1020, 1018, 1017, 1015, 1014, 1007, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {529, 1023, 1020, 1019, 1018, 1017, 1012, 1011, 1007, 1006, 1003, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {534, 1185, 1180, 1179, 1178, 1127, 1126, 1125, 1124, 1123, 1122, 1106, 1101, 1100, 0000, 0000, 0000, 0000, 0000}, {535, 1121, 1120, 1119, 1118, 1117, 1116, 1115, 1114, 1113, 1110, 1109, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {536, 1184, 1183, 1182, 1181, 1128, 1108, 1107, 1105, 1104, 1103, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {540, 1145, 1144, 1143, 1142, 1024, 1023, 1020, 1019, 1018, 1017, 1007, 1006, 1004, 1001, 0000, 0000, 0000, 0000}, {542, 1145, 1144, 1021, 1020, 1019, 1018, 1015, 1014, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {546, 1145, 1144, 1143, 1142, 1024, 1023, 1019, 1018, 1017, 1007, 1006, 1004, 1002, 1001, 0000, 0000, 0000, 0000}, {547, 1143, 1142, 1021, 1020, 1019, 1018, 1016, 1003, 1000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {549, 1145, 1144, 1143, 1142, 1023, 1020, 1019, 1018, 1017, 1012, 1011, 1007, 1003, 1001, 0000, 0000, 0000, 0000}, {550, 1145, 1144, 1143, 1142, 1023, 1020, 1019, 1018, 1006, 1005, 1004, 1003, 1001, 0000, 0000, 0000, 0000, 0000}, {551, 1023, 1021, 1020, 1019, 1018, 1016, 1006, 1005, 1003, 1002, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {558, 1168, 1167, 1166, 1165, 1164, 1163, 1095, 1094, 1093, 1092, 1091, 1090, 1089, 1088, 0000, 0000, 0000, 0000}, {559, 1173, 1162, 1161, 1160, 1159, 1158, 1072, 1071, 1070, 1069, 1068, 1067, 1066, 1065, 0000, 0000, 0000, 0000}, {560, 1170, 1169, 1141, 1140, 1139, 1138, 1033, 1032, 1031, 1030, 1029, 1028, 1027, 1026, 0000, 0000, 0000, 0000}, {561, 1157, 1156, 1155, 1154, 1064, 1063, 1062, 1061, 1060, 1059, 1058, 1057, 1056, 1055, 1031, 1030, 1027, 1026}, {562, 1172, 1171, 1149, 1148, 1147, 1146, 1041, 1040, 1039, 1038, 1037, 1036, 1035, 1034, 0000, 0000, 0000, 0000}, {565, 1153, 1152, 1151, 1150, 1054, 1053, 1052, 1051, 1050, 1049, 1048, 1047, 1046, 1045, 0000, 0000, 0000, 0000}, {567, 1189, 1188, 1187, 1186, 1133, 1132, 1131, 1130, 1129, 1102, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {575, 1177, 1176, 1175, 1174, 1099, 1044, 1043, 1042, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {576, 1193, 1192, 1191, 1190, 1137, 1136, 1135, 1134, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {580, 1023, 1020, 1018, 1017, 1007, 1006, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {589, 1145, 1144, 1024, 1020, 1018, 1017, 1016, 1013, 1007, 1006, 1005, 1004, 1000, 0000, 0000, 0000, 0000, 0000}, {600, 1022, 1020, 1018, 1017, 1013, 1007, 1006, 1005, 1004, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {603, 1145, 1144, 1143, 1142, 1024, 1023, 1020, 1019, 1018, 1017, 1007, 1006, 1001, 0000, 0000, 0000, 0000, 0000} }; new g_aMaleSkins[185] = { 1, 2, 3, 4, 5, 6, 7, 8, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 57, 58, 59, 60, 61, 62, 66, 68, 72, 73, 78, 79, 80, 81, 82, 83, 84, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 132, 133, 134, 135, 136, 137, 142, 143, 144, 146, 147, 153, 154, 155, 156, 158, 159, 160, 161, 162, 167, 168, 170, 171, 173, 174, 175, 176, 177, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 200, 202, 203, 204, 206, 208, 209, 210, 212, 213, 217, 220, 221, 222, 223, 228, 229, 230, 234, 235, 236, 239, 240, 241, 242, 247, 248, 249, 250, 253, 254, 255, 258, 259, 260, 261, 262, 268, 272, 273, 289, 290, 291, 292, 293, 294, 295, 296, 297, 299 }; new g_aFemaleSkins[77] = { 9, 10, 11, 12, 13, 31, 38, 39, 40, 41, 53, 54, 55, 56, 63, 64, 65, 69, 75, 76, 77, 85, 88, 89, 90, 91, 92, 93, 129, 130, 131, 138, 140, 141, 145, 148, 150, 151, 152, 157, 169, 178, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 201, 205, 207, 211, 214, 215, 216, 219, 224, 225, 226, 231, 232, 233, 237, 238, 243, 244, 245, 246, 251, 256, 257, 263, 298 }; enum e_FurnitureData { e_FurnitureType, e_FurnitureName[32], e_FurnitureModel }; new const g_aFurnitureTypes[][] = { {"Frames"}, {"Tables"}, {"Chairs"}, {"Beds"}, {"Cabinets"}, {"Television Sets"}, {"Kitchen Appliances"}, {"Bathroom Appliances"}, {"Misc Furniture"} }; new const g_aFurnitureData[][e_FurnitureData] = { {1, "Frame 1", 2289}, {1, "Frame 2", 2288}, {1, "Frame 3", 2287}, {1, "Frame 4", 2286}, {1, "Frame 5", 2285}, {1, "Frame 6", 2284}, {1, "Frame 7", 2283}, {1, "Frame 8", 2282}, {1, "Frame 9", 2281}, {1, "Frame 10", 2280}, {1, "Frame 11", 2279}, {1, "Frame 12", 2278}, {1, "Frame 13", 2277}, {1, "Frame 14", 2276}, {1, "Frame 15", 2275}, {1, "Frame 16", 2274}, {1, "Frame 17", 2273}, {1, "Frame 18", 2272}, {1, "Frame 19", 2271}, {1, "Frame 20", 2270}, {2, "Table 1", 1433}, {2, "Table 2", 1998}, {2, "Table 3", 2008}, {2, "Table 4", 2180}, {2, "Table 5", 2185}, {2, "Table 6", 2205}, {2, "Table 7", 2314}, {2, "Table 8", 2635}, {2, "Table 9", 2637}, {2, "Table 10", 2644}, {2, "Table 11", 2747}, {2, "Table 12", 2764}, {2, "Table 13", 2763}, {2, "Table 14", 2762}, {2, "Table 15", 936}, {2, "Table 16", 937}, {2, "Table 17", 941}, {2, "Table 18", 2115}, {2, "Table 19", 2116}, {2, "Table 20", 2112}, {2, "Table 21", 2111}, {2, "Table 22", 2110}, {2, "Table 23", 2109}, {2, "Table 24", 2085}, {2, "Table 25", 2032}, {2, "Table 26", 2031}, {2, "Table 27", 2030}, {2, "Table 28", 2029}, {3, "Chair 1", 1671}, {3, "Chair 2", 1704}, {3, "Chair 3", 1705}, {3, "Chair 4", 1708}, {3, "Chair 5", 1711}, {3, "Chair 6", 1715}, {3, "Chair 7", 1721}, {3, "Chair 8", 1724}, {3, "Chair 9", 1727}, {3, "Chair 10", 1729}, {3, "Chair 11", 1735}, {3, "Chair 12", 1739}, {3, "Chair 13", 1805}, {3, "Chair 14", 1806}, {3, "Chair 15", 1810}, {3, "Chair 16", 1811}, {3, "Chair 17", 2079}, {3, "Chair 18", 2120}, {3, "Chair 19", 2124}, {3, "Chair 20", 2356}, {3, "Chair 21", 1768}, {3, "Chair 22", 1766}, {3, "Chair 23", 1764}, {3, "Chair 24", 1763}, {3, "Chair 25", 1761}, {3, "Chair 26", 1760}, {3, "Chair 27", 1757}, {3, "Chair 28", 1756}, {3, "Chair 29", 1753}, {3, "Chair 30", 1713}, {3, "Chair 31", 1712}, {3, "Chair 32", 1706}, {3, "Chair 33", 1703}, {3, "Chair 34", 1702}, {3, "Chair 35", 1754}, {3, "Chair 36", 1755}, {3, "Chair 37", 1758}, {3, "Chair 38", 1759}, {3, "Chair 39", 1762}, {3, "Chair 40", 1765}, {3, "Chair 41", 1767}, {3, "Chair 42", 1769}, {4, "Bed 1", 1700}, {4, "Bed 2", 1701}, {4, "Bed 3", 1725}, {4, "Bed 4", 1745}, {4, "Bed 5", 1793}, {4, "Bed 6", 1794}, {4, "Bed 7", 1795}, {4, "Bed 8", 1796}, {4, "Bed 9", 1797}, {4, "Bed 10", 1771}, {4, "Bed 11", 1798}, {4, "Bed 12", 1799}, {4, "Bed 13", 1800}, {4, "Bed 14", 1801}, {4, "Bed 15", 1802}, {4, "Bed 16", 1812}, {4, "Bed 17", 2090}, {4, "Bed 18", 2299}, {5, "Cabinet 1", 1416}, {5, "Cabinet 2", 1417}, {5, "Cabinet 3", 1741}, {5, "Cabinet 4", 1742}, {5, "Cabinet 5", 1743}, {5, "Cabinet 6", 2025}, {5, "Cabinet 7", 2065}, {5, "Cabinet 8", 2066}, {5, "Cabinet 9", 2067}, {5, "Cabinet 10", 2087}, {5, "Cabinet 11", 2088}, {5, "Cabinet 12", 2094}, {5, "Cabinet 13", 2095}, {5, "Cabinet 14", 2306}, {5, "Cabinet 15", 2307}, {5, "Cabinet 16", 2323}, {5, "Cabinet 17", 2328}, {5, "Cabinet 18", 2329}, {5, "Cabinet 19", 2330}, {5, "Cabinet 20", 2708}, {6, "Television 1", 1518}, {6, "Television 2", 1717}, {6, "Television 3", 1747}, {6, "Television 4", 1748}, {6, "Television 5", 1749}, {6, "Television 6", 1750}, {6, "Television 7", 1752}, {6, "Television 8", 1781}, {6, "Television 9", 1791}, {6, "Television 10", 1792}, {6, "Television 11", 2312}, {6, "Television 12", 2316}, {6, "Television 13", 2317}, {6, "Television 14", 2318}, {6, "Television 15", 2320}, {6, "Television 16", 2595}, {6, "Television 17", 16377}, {7, "Kitchen 1", 2013}, {7, "Kitchen 2", 2017}, {7, "Kitchen 3", 2127}, {7, "Kitchen 4", 2130}, {7, "Kitchen 5", 2131}, {7, "Kitchen 6", 2132}, {7, "Kitchen 7", 2135}, {7, "Kitchen 8", 2136}, {7, "Kitchen 9", 2144}, {7, "Kitchen 10", 2147}, {7, "Kitchen 11", 2149}, {7, "Kitchen 12", 2150}, {7, "Kitchen 13", 2415}, {7, "Kitchen 14", 2417}, {7, "Kitchen 15", 2421}, {7, "Kitchen 16", 2426}, {7, "Kitchen 17", 2014}, {7, "Kitchen 18", 2015}, {7, "Kitchen 19", 2016}, {7, "Kitchen 20", 2018}, {7, "Kitchen 21", 2019}, {7, "Kitchen 22", 2022}, {7, "Kitchen 23", 2133}, {7, "Kitchen 24", 2134}, {7, "Kitchen 25", 2137}, {7, "Kitchen 26", 2138}, {7, "Kitchen 27", 2139}, {7, "Kitchen 28", 2140}, {7, "Kitchen 29", 2141}, {7, "Kitchen 30", 2142}, {7, "Kitchen 31", 2143}, {7, "Kitchen 32", 2145}, {7, "Kitchen 33", 2148}, {7, "Kitchen 34", 2151}, {7, "Kitchen 35", 2152}, {7, "Kitchen 36", 2153}, {7, "Kitchen 37", 2154}, {7, "Kitchen 38", 2155}, {7, "Kitchen 39", 2156}, {7, "Kitchen 40", 2157}, {7, "Kitchen 41", 2158}, {7, "Kitchen 42", 2159}, {7, "Kitchen 43", 2160}, {7, "Kitchen 44", 2134}, {7, "Kitchen 45", 2135}, {7, "Kitchen 46", 2338}, {7, "Kitchen 47", 2341}, {8, "Bathroom 1", 2514}, {8, "Bathroom 2", 2516}, {8, "Bathroom 3", 2517}, {8, "Bathroom 4", 2518}, {8, "Bathroom 5", 2520}, {8, "Bathroom 6", 2521}, {8, "Bathroom 7", 2522}, {8, "Bathroom 8", 2523}, {8, "Bathroom 9", 2524}, {8, "Bathroom 10", 2525}, {8, "Bathroom 11", 2526}, {8, "Bathroom 12", 2527}, {8, "Bathroom 13", 2528}, {8, "Bathroom 14", 2738}, {8, "Bathroom 15", 2739}, {9, "Washer", 1208}, {9, "Ceiling Fan", 1661}, {9, "Moose Head", 1736}, {9, "Radiator", 1738}, {9, "Mop and Pail", 1778}, {9, "Water Cooler", 1808}, {9, "Water Cooler 2", 2002}, {9, "Money Safe", 1829}, {9, "Printer", 2186}, {9, "Computer", 2190}, {9, "Treadmill", 2627}, {9, "Bench Press", 2629}, {9, "Exercise Bike", 2630}, {9, "Mat 1", 2631}, {9, "Mat 2", 2632}, {9, "Mat 3", 2817}, {9, "Mat 4", 2818}, {9, "Mat 5", 2833}, {9, "Mat 6", 2834}, {9, "Mat 7", 2835}, {9, "Mat 8", 2836}, {9, "Mat 9", 2841}, {9, "Mat 10", 2842}, {9, "Mat 11", 2847}, {9, "Book Pile 1", 2824}, {9, "Book Pile 2", 2826}, {9, "Book Pile 3", 2827}, {9, "Basketball", 2114}, {9, "Lamp 1", 2108}, {9, "Lamp 2", 2106}, {9, "Lamp 3", 2069}, {9, "Dresser 1", 2569}, {9, "Dresser 2", 2570}, {9, "Dresser 3", 2573}, {9, "Dresser 4", 2574}, {9, "Dresser 5", 2576}, {9, "Book", 2894} }; native IsValidVehicle(vehicleid); native WP_Hash(buffer[], len, const str[]); main() { print("South Central Roleplay"); } SQL_Connect() { g_iHandle = mysql_connect(SQL_HOSTNAME, SQL_USERNAME, SQL_DATABASE, SQL_PASSWORD); if (mysql_errno(g_iHandle) != 0) { printf("[SQL] Connection to \"%s\" failed! Please check the connection settings...\a", SQL_HOSTNAME); } else { printf("[SQL] Connection to \"%s\" passed!", SQL_HOSTNAME); } } SQL_CreateAccount(const username[], const password[]) { new query[512], buffer[129]; WP_Hash(buffer, sizeof(buffer), password); format(query, sizeof(query), "INSERT INTO `accounts` (`Username`, `Password`, `RegisterDate`, `LoginDate`) VALUES('%s', '%s', '%s', '%s')", username, buffer, ReturnDate(), ReturnDate()); mysql_tquery(g_iHandle, query); } SQL_CheckAccount(playerid) { new query[128]; format(query, sizeof(query), "SELECT `Username` FROM `characters` WHERE `Character` = '%s'", ReturnName(playerid)); mysql_tquery(g_iHandle, query, "OnQueryFinished", "dd", playerid, THREAD_FIND_USERNAME); } SQL_AttemptLogin(playerid, const password[]) { new query[300], buffer[129]; WP_Hash(buffer, sizeof(buffer), password); format(query, sizeof(query), "SELECT `ID` FROM `accounts` WHERE `Username` = '%s' AND `Password` = '%s'", PlayerData[playerid][pUsername], buffer); mysql_tquery(g_iHandle, query, "OnQueryFinished", "dd", playerid, THREAD_LOGIN); } stock SQL_IsLogged(playerid) { return (PlayerData[playerid][pLogged] && PlayerData[playerid][pCharacter] > 0); } stock Float:cache_get_field_float(row, const field_name[]) { new str[16]; cache_get_field_content(row, field_name, str, g_iHandle, sizeof(str)); return floatstr(str); } stock ViewBillboards(playerid) { new string[128]; format(string, sizeof(string), "SELECT * FROM `billboards` ORDER BY `bbID` DESC"); mysql_tquery(g_iHandle, string, "OnViewBillboards", "d", playerid); return 1; } stock ViewFactions(playerid) { new string[1040]; for (new i = 0; i != MAX_FACTIONS; i ++) if (FactionData[i][factionExists]) { format(string, sizeof(string), "%s{FFFFFF}Faction ({FFBF00}%i{FFFFFF}) | %s\n", string, i, FactionData[i][factionName]); } Dialog_Show(playerid, FactionsList, DIALOG_STYLE_MSGBOX, "Factions List", string, "Close", ""); return 1; } stock SQL_ReturnEscaped(const string[]) { new entry[256]; mysql_real_escape_string(string, entry, g_iHandle); return entry; } SQL_SaveCharacter(playerid) { if (!PlayerData[playerid][pLogged] && !PlayerData[playerid][pCharacter]) return 0; new query[2048]; if (GetPlayerState(playerid) != PLAYER_STATE_SPECTATING && !PlayerData[playerid][pDrivingTest]) { PlayerData[playerid][pInterior] = GetPlayerInterior(playerid); PlayerData[playerid][pWorld] = GetPlayerVirtualWorld(playerid); GetPlayerPos(playerid, PlayerData[playerid][pPos][0], PlayerData[playerid][pPos][1], PlayerData[playerid][pPos][2]); GetPlayerFacingAngle(playerid, PlayerData[playerid][pPos][3]); GetPlayerHealth(playerid, PlayerData[playerid][pHealth]); GetPlayerArmour(playerid, PlayerData[playerid][pArmorStatus]); if (!PlayerData[playerid][pKilled] && PlayerData[playerid][pHealth] == 0.0) { PlayerData[playerid][pHealth] = 100.0; } if (PlayerData[playerid][pRangeBooth] == -1) { UpdateWeapons(playerid); } } format(query, sizeof(query), "UPDATE `characters` SET `Created` = '%d', `Gender` = '%d', `Birthdate` = '%s', `Origin` = '%s', `Skin` = '%d', `PosX` = '%.4f', `PosY` = '%.4f', `PosZ` = '%.4f', `PosA` = '%.4f', `Health` = '%.4f', `Interior` = '%d', `World` = '%d', `Hospital` = '%d', `HospitalInt` = '%d', `Money` = '%d', `BankMoney` = '%d', `OwnsBillboard` = '%d', `Savings` = '%d', `Admin` = '%d', `JailTime` = '%d', `Muted` = '%d', `Tester` = '%d'", PlayerData[playerid][pCreated], PlayerData[playerid][pGender], PlayerData[playerid][pBirthdate], PlayerData[playerid][pOrigin], PlayerData[playerid][pSkin], PlayerData[playerid][pPos][0], PlayerData[playerid][pPos][1], PlayerData[playerid][pPos][2], PlayerData[playerid][pPos][3], PlayerData[playerid][pHealth], PlayerData[playerid][pInterior], PlayerData[playerid][pWorld], PlayerData[playerid][pHospital], PlayerData[playerid][pHospitalInt], PlayerData[playerid][pMoney], PlayerData[playerid][pBankMoney], PlayerData[playerid][pOwnsBillboard], PlayerData[playerid][pSavings], PlayerData[playerid][pAdmin], PlayerData[playerid][pJailTime], PlayerData[playerid][pMuted], PlayerData[playerid][pTester] ); for (new i = 0; i < 13; i ++) { format(query, sizeof(query), "%s, `Gun%d` = '%d', `Ammo%d` = '%d'", query, i + 1, PlayerData[playerid][pGuns][i], i + 1, PlayerData[playerid][pAmmo][i]); } format(query, sizeof(query), "%s, `House` = '%d', `Business` = '%d', `Entrance` = '%d', `Phone` = '%d', `Lottery` = '%d', `LotteryB` = '%d', `Hunger` = '%d', `Thirst` = '%d', `PlayingHours` = '%d', `Minutes` = '%d', `ArmorStatus` = '%.4f', `Job` = '%d', `Faction` = '%d', `FactionRank` = '%d', `Prisoned` = '%d', `Injured` = '%d', `Warrants` = '%d', `Channel` = '%d', `Bleeding` = '%d', `AdminHide` = '%d', `SpawnPoint` = '%d'", query, PlayerData[playerid][pHouse], PlayerData[playerid][pBusiness], PlayerData[playerid][pEntrance], PlayerData[playerid][pPhone], PlayerData[playerid][pLottery], PlayerData[playerid][pLotteryB], PlayerData[playerid][pHunger], PlayerData[playerid][pThirst], PlayerData[playerid][pPlayingHours], PlayerData[playerid][pMinutes], PlayerData[playerid][pArmorStatus], PlayerData[playerid][pJob], PlayerData[playerid][pFactionID], PlayerData[playerid][pFactionRank], PlayerData[playerid][pPrisoned], PlayerData[playerid][pInjured], PlayerData[playerid][pWarrants], PlayerData[playerid][pChannel], PlayerData[playerid][pBleeding], PlayerData[playerid][pAdminHide], PlayerData[playerid][pSpawnPoint] ); format(query, sizeof(query), "%s, `Warnings` = '%d', `Warn1` = '%s', `Warn2` = '%s', `MaskID` = '%d', `FactionMod` = '%d', `Capacity` = '%d' WHERE `ID` = '%d'", query, PlayerData[playerid][pWarnings], SQL_ReturnEscaped(PlayerData[playerid][pWarn1]), SQL_ReturnEscaped(PlayerData[playerid][pWarn2]), PlayerData[playerid][pMaskID], PlayerData[playerid][pFactionMod], PlayerData[playerid][pCapacity], PlayerData[playerid][pID] ); mysql_tquery(g_iHandle, query); SQL_SaveAccessories(playerid); return 1; } SQL_SaveAccessories(playerid) { if (!PlayerData[playerid][pLogged]) return 0; new query[768]; format(query, sizeof(query), "UPDATE `characters` SET `Glasses` = '%d', `Hat` = '%d', `Bandana` = '%d', `GlassesPos` = '%.4f|%.4f|%.4f|%.4f|%.4f|%.4f|%.4f|%.4f|%.4f'", PlayerData[playerid][pGlasses], PlayerData[playerid][pHat], PlayerData[playerid][pBandana], AccessoryData[playerid][0][0], AccessoryData[playerid][0][1], AccessoryData[playerid][0][2], AccessoryData[playerid][0][3], AccessoryData[playerid][0][4], AccessoryData[playerid][0][5], AccessoryData[playerid][0][6], AccessoryData[playerid][0][7], AccessoryData[playerid][0][8] ); format(query, sizeof(query), "%s, `HatPos` = '%.4f|%.4f|%.4f|%.4f|%.4f|%.4f|%.4f|%.4f|%.4f'", query, AccessoryData[playerid][1][0], AccessoryData[playerid][1][1], AccessoryData[playerid][1][2], AccessoryData[playerid][1][3], AccessoryData[playerid][1][4], AccessoryData[playerid][1][5], AccessoryData[playerid][1][6], AccessoryData[playerid][1][7], AccessoryData[playerid][1][8] ); format(query, sizeof(query), "%s, `BandanaPos` = '%.4f|%.4f|%.4f|%.4f|%.4f|%.4f|%.4f|%.4f|%.4f' WHERE `ID` = '%d'", query, AccessoryData[playerid][2][0], AccessoryData[playerid][2][1], AccessoryData[playerid][2][2], AccessoryData[playerid][2][3], AccessoryData[playerid][2][4], AccessoryData[playerid][2][5], AccessoryData[playerid][2][6], AccessoryData[playerid][2][7], AccessoryData[playerid][2][8], PlayerData[playerid][pID] ); mysql_tquery(g_iHandle, query); return 1; } stock GetBillboardByID(sqlid) { for (new i = 0; i != MAX_BILLBOARDS; i ++) if (BillBoardData[i][bbExists] && BillBoardData[i][bbID] == sqlid) return i; return -1; } stock GetInitials(const string[]) { new ret[32], index = 0; for (new i = 0, l = strlen(string); i != l; i ++) { if (('A' <= string[i] <= 'Z') && (i == 0 || string[i - 1] == ' ')) ret[index++] = string[i]; } return ret; } stock GetDistance(Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2) { return floatround(floatsqroot(((x1 - x2) * (x1 - x2)) + ((y1 - y2) * (y1 - y2)) + ((z1 - z2) * (z1 - z2)))); } stock Float:DistanceCameraTargetToLocation(Float:fCameraX, Float:fCameraY, Float:fCameraZ, Float:fObjectX, Float:fObjectY, Float:fObjectZ, Float:fVectorX, Float:fVectorY, Float:fVectorZ) { new Float:fX, Float:fY, Float:fZ, Float:fDistance; fDistance = GetDistance(fCameraX, fCameraY, fCameraZ, fObjectX, fObjectY, fObjectZ); fX = fVectorX * fDistance + fCameraX; fY = fVectorY * fDistance + fCameraY; fZ = fVectorZ * fDistance + fCameraZ; return floatsqroot((fX - fObjectX) * (fX - fObjectX) + (fY - fObjectY) * (fY - fObjectY) + (fZ - fObjectZ) * (fZ - fObjectZ)); } forward OnJailAccount(index); public OnJailAccount(index) { new string[128], name[24], rows, fields; cache_get_data(rows, fields, g_iHandle); GetPVarString(index, "OnJailAccount", name, 24); //GetPVarString(index, "OnJailAccountReason", reason, 64); if(cache_affected_rows(g_iHandle)) { format(string, sizeof(string), "You have successfully jailed %s's account.", name); SendClientMessageEx(index, COLOR_WHITE, string); } else { format(string, sizeof(string), "There was an issue with jailing %s's account.", name); SendClientMessageEx(index, COLOR_WHITE, string); } DeletePVar(index, "OnJailAccount"); return 1; } forward OnBillboardCreated(bizid); public OnBillboardCreated(bizid) { if (bizid == -1 || !BillBoardData[bizid][bbExists]) return 0; BillBoardData[bizid][bbID] = cache_insert_id(g_iHandle); Billboard_Save(bizid); return 1; } forward Billboard_Load(); public Billboard_Load() { new rows, fields; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) if (i < MAX_BILLBOARDS) { BillBoardData[i][bbExists] = true; BillBoardData[i][bbID] = cache_get_field_int(i, "bbID"); cache_get_field_content(i, "bbName", BillBoardData[i][bbName], g_iHandle, 32); cache_get_field_content(i, "bbMessage", BillBoardData[i][bbMessage], g_iHandle, 230); BillBoardData[i][bbOwner] = cache_get_field_int(i, "bbOwner"); BillBoardData[i][bbPrice] = cache_get_field_int(i, "bbPrice"); BillBoardData[i][bbRange] = cache_get_field_int(i, "bbRange"); BillBoardData[i][bbPos][0] = cache_get_field_float(i, "bbPosX"); BillBoardData[i][bbPos][1] = cache_get_field_float(i, "bbPosY"); BillBoardData[i][bbPos][2] = cache_get_field_float(i, "bbPosZ"); Billboard_Refresh(i); } return 1; } forward OnViewBillboards(extraid, name[]); public OnViewBillboards(extraid, name[]) { new string[1024], desc[128], rows, fields; cache_get_data(rows, fields, g_iHandle); if (!rows) return SendErrorMessage(extraid, "No billboards found!"); for (new i = 0; i < rows; i ++) { cache_get_field_content(i, "bbName", desc, g_iHandle, sizeof(desc)); //format(string, sizeof(string), "%s{FFFFFF}%s ({FFBF00}%i{FFFFFF})\n", string, desc, i); format(string, sizeof(string), "%s{FFFFFF}Billboard ({FFBF00}%i{FFFFFF}) | %s | $%d\n", string, i, desc, BillBoardData[i][bbPrice]); } format(desc, sizeof(desc), "Los Santos Billboards Agency", name); Dialog_Show(extraid, Billboards, DIALOG_STYLE_LIST, desc, string, "Close", ""); return 1; } forward StopChatting(playerid); public StopChatting(playerid) { ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 0, 0); } forward DestroyWater(objectid); public DestroyWater(objectid) { if (IsValidDynamicObject(objectid)) DestroyDynamicObject(objectid); return 0; } forward RandomFire(); public RandomFire() { for (new i = 0; i < sizeof(g_aFireObjects); i ++) { g_aFireExtinguished[i] = 0; if (IsValidDynamicObject(g_aFireObjects[i])) DestroyDynamicObject(g_aFireObjects[i]); } switch (random(5)) { case 0: { g_aFireObjects[0] = CreateDynamicObject(18691, 1930.4942, -1784.1799, 10.9368, 0.0, 0.0, 0.0); g_aFireObjects[1] = CreateDynamicObject(18691, 1930.5037, -1782.1473, 10.9368, 0.0, 0.0, 0.0); g_aFireObjects[2] = CreateDynamicObject(18691, 1930.5136, -1779.6364, 10.9368, 0.0, 0.0, 0.0); g_aFireObjects[3] = CreateDynamicObject(18691, 1930.5238, -1777.1058, 10.9368, 0.0, 0.0, 0.0); g_aFireObjects[4] = CreateDynamicObject(18691, 1930.5346, -1774.5141, 10.9368, 0.0, 0.0, 0.0); g_aFireObjects[5] = CreateDynamicObject(18691, 1930.5428, -1772.4306, 10.9368, 0.0, 0.0, 0.0); g_aFireObjects[6] = CreateDynamicObject(18691, 1930.5507, -1770.4219, 10.9368, 0.0, 0.0, 0.0); g_aFireObjects[7] = CreateDynamicObject(18691, 1930.5588, -1768.3559, 10.9368, 0.0, 0.0, 0.0); g_aFireObjects[8] = CreateDynamicObject(18691, 1929.1459, -1767.9173, 14.3093, 0.0, 0.0, 0.0); g_aFireObjects[9] = CreateDynamicObject(18691, 1928.8776, -1769.5853, 14.3093, 0.0, 0.0, 0.0); g_aFireObjects[10] = CreateDynamicObject(18691, 1928.8422, -1772.0158, 14.3093, 0.0, 0.0, 0.0); g_aFireObjects[11] = CreateDynamicObject(18691, 1928.8189, -1773.6047, 14.3093, 0.0, 0.0, 0.0); g_aFireObjects[12] = CreateDynamicObject(18691, 1928.8001, -1774.8883, 14.3093, 0.0, 0.0, 0.0); g_aFireObjects[13] = CreateDynamicObject(18691, 1928.7772, -1776.4462, 14.3093, 0.0, 0.0, 0.0); g_aFireObjects[14] = CreateDynamicObject(18691, 1928.7534, -1778.0637, 14.3093, 0.0, 0.0, 0.0); g_aFireObjects[15] = CreateDynamicObject(18691, 1928.7347, -1779.3225, 14.3093, 0.0, 0.0, 0.0); g_aFireObjects[16] = CreateDynamicObject(18691, 1928.7145, -1780.7152, 14.3093, 0.0, 0.0, 0.0); g_aFireObjects[17] = CreateDynamicObject(18691, 1928.6938, -1782.1208, 14.3093, 0.0, 0.0, 0.0); g_aFireObjects[18] = CreateDynamicObject(18691, 1928.6655, -1784.0491, 14.3093, 0.0, 0.0, 0.0); g_aFireObjects[19] = CreateDynamicObject(18691, 1935.3200, -1783.8045, 10.7728, 0.0, 0.0, 0.0); g_aFireObjects[20] = CreateDynamicObject(18691, 1935.2098, -1781.6428, 10.7728, 0.0, 0.0, 0.0); g_aFireObjects[21] = CreateDynamicObject(18691, 1935.0748, -1778.9934, 10.7728, 0.0, 0.0, 0.0); g_aFireObjects[22] = CreateDynamicObject(18691, 1934.9506, -1776.5572, 10.7728, 0.0, 0.0, 0.0); g_aFireObjects[23] = CreateDynamicObject(18691, 1934.8343, -1774.2791, 10.7728, 0.0, 0.0, 0.0); g_aFireObjects[24] = CreateDynamicObject(18691, 1934.7189, -1772.0156, 10.7728, 0.0, 0.0, 0.0); g_aFireObjects[25] = CreateDynamicObject(18691, 1934.6302, -1770.2773, 10.7728, 0.0, 0.0, 0.0); g_aFireObjects[26] = CreateDynamicObject(18691, 1934.5228, -1768.1666, 10.7728, 0.0, 0.0, 0.0); } case 1: { g_aFireObjects[0] = CreateDynamicObject(18691, 1238.8894, -1563.0980, 10.9999, 0.0, 0.0, 0.0); g_aFireObjects[1] = CreateDynamicObject(18691, 1241.6730, -1562.6481, 11.0068, 0.0, 0.0, 0.0); g_aFireObjects[2] = CreateDynamicObject(18691, 1243.2508, -1561.0845, 10.9444, 0.0, 0.0, 0.0); g_aFireObjects[3] = CreateDynamicObject(18691, 1245.5793, -1560.6265, 10.9450, 0.0, 0.0, 0.0); g_aFireObjects[4] = CreateDynamicObject(18691, 1247.4980, -1560.4841, 10.9455, 0.0, 0.0, 0.0); g_aFireObjects[5] = CreateDynamicObject(18691, 1249.9790, -1560.3701, 10.9539, 0.0, 0.0, 0.0); g_aFireObjects[6] = CreateDynamicObject(18691, 1249.5944, -1562.7432, 11.0053, 0.0, 0.0, 0.0); g_aFireObjects[7] = CreateDynamicObject(18691, 1247.4562, -1562.7996, 11.0045, 0.0, 0.0, 0.0); g_aFireObjects[8] = CreateDynamicObject(18691, 1245.7386, -1563.1572, 10.9990, 0.0, 0.0, 0.0); g_aFireObjects[9] = CreateDynamicObject(18691, 1243.7620, -1563.7636, 10.9896, 0.0, 0.0, 0.0); g_aFireObjects[10] = CreateDynamicObject(18691, 1242.2908, -1563.0959, 10.9999, 0.0, 0.0, 0.0); g_aFireObjects[11] = CreateDynamicObject(18691, 1242.3502, -1564.7818, 10.9740, 0.0, 0.0, 0.0); g_aFireObjects[12] = CreateDynamicObject(18691, 1244.8713, -1564.6507, 10.9760, 0.0, 0.0, 0.0); g_aFireObjects[13] = CreateDynamicObject(18691, 1246.8665, -1564.5694, 10.9772, 0.0, 0.0, 0.0); g_aFireObjects[14] = CreateDynamicObject(18691, 1249.1672, -1563.8638, 10.9881, 0.0, 0.0, 0.0); g_aFireObjects[15] = CreateDynamicObject(18691, 1250.8759, -1563.9959, 10.9861, 0.0, 0.0, 0.0); g_aFireObjects[16] = CreateDynamicObject(18691, 1252.2437, -1562.3538, 11.0113, 0.0, 0.0, 0.0); g_aFireObjects[17] = CreateDynamicObject(18691, 1252.4475, -1561.7529, 13.6369, 0.0, 0.0, 0.0); g_aFireObjects[18] = CreateDynamicObject(18691, 1250.9642, -1561.7822, 13.6519, 0.0, 0.0, 0.0); g_aFireObjects[19] = CreateDynamicObject(18691, 1248.5258, -1561.3541, 13.8278, 0.0, 0.0, 0.0); g_aFireObjects[20] = CreateDynamicObject(18691, 1245.9611, -1561.1191, 13.5507, 0.0, 0.0, 0.0); g_aFireObjects[21] = CreateDynamicObject(18691, 1242.7899, -1561.6608, 13.7519, 0.0, 0.0, 0.0); g_aFireObjects[22] = CreateDynamicObject(18691, 1250.3793, -1561.5445, 10.9462, 0.0, 0.0, 0.0); g_aFireObjects[23] = CreateDynamicObject(18691, 1252.8653, -1561.6358, 10.9468, 0.0, 0.0, 0.0); g_aFireObjects[24] = CreateDynamicObject(18691, 1252.9653, -1563.4675, 10.9942, 0.0, 0.0, 0.0); g_aFireObjects[25] = CreateDynamicObject(18691, 1252.5823, -1563.9747, 10.9864, 0.0, 0.0, 0.0); } case 2: { g_aFireObjects[0] = CreateDynamicObject(18691, 1786.4844, -1164.2786, 21.2181, 0.0, 0.0, 0.0); g_aFireObjects[1] = CreateDynamicObject(18691, 1787.8876, -1164.3374, 21.2181, 0.0, 0.0, 0.0); g_aFireObjects[2] = CreateDynamicObject(18691, 1790.0416, -1164.8181, 21.2181, 0.0, 0.0, 0.0); g_aFireObjects[3] = CreateDynamicObject(18691, 1791.7430, -1165.1977, 21.2181, 0.0, 0.0, 0.0); g_aFireObjects[4] = CreateDynamicObject(18691, 1793.3637, -1165.5594, 21.2181, 0.0, 0.0, 0.0); g_aFireObjects[5] = CreateDynamicObject(18691, 1794.8229, -1165.8847, 21.2181, 0.0, 0.0, 0.0); g_aFireObjects[6] = CreateDynamicObject(18691, 1796.5830, -1166.2770, 21.2181, 0.0, 0.0, 0.0); g_aFireObjects[7] = CreateDynamicObject(18691, 1798.3182, -1166.6638, 21.2181, 0.0, 0.0, 0.0); g_aFireObjects[8] = CreateDynamicObject(18691, 1798.2283, -1166.9202, 22.1465, 0.0, 0.0, 0.0); g_aFireObjects[9] = CreateDynamicObject(18691, 1797.1246, -1166.2222, 22.5881, 0.0, 0.0, 0.0); g_aFireObjects[10] = CreateDynamicObject(18691, 1796.1480, -1165.5697, 22.5401, 0.0, 0.0, 0.0); g_aFireObjects[11] = CreateDynamicObject(18691, 1795.4377, -1165.1295, 22.1495, 0.0, 0.0, 0.0); g_aFireObjects[12] = CreateDynamicObject(18691, 1794.7139, -1164.6824, 21.4488, 0.0, 0.0, 0.0); g_aFireObjects[13] = CreateDynamicObject(18691, 1789.6914, -1164.0892, 22.3047, 0.0, 0.0, 0.0); g_aFireObjects[14] = CreateDynamicObject(18691, 1788.5687, -1163.1995, 22.3698, 0.0, 0.0, 0.0); g_aFireObjects[15] = CreateDynamicObject(18691, 1788.0295, -1162.8452, 21.9937, 0.0, 0.0, 0.0); g_aFireObjects[16] = CreateDynamicObject(18691, 1786.2319, -1163.1064, 21.8608, 0.0, 0.0, 0.0); g_aFireObjects[17] = CreateDynamicObject(18691, 1785.3194, -1163.1263, 21.9294, 0.0, 0.0, 0.0); g_aFireObjects[18] = CreateDynamicObject(18691, 1791.5643, -1163.1118, 21.3996, 0.0, 0.0, 0.0); g_aFireObjects[19] = CreateDynamicObject(18691, 1791.8800, -1164.3983, 22.2759, 0.0, 0.0, 0.0); g_aFireObjects[20] = CreateDynamicObject(18691, 1791.8519, -1165.1618, 22.5094, 0.0, 0.0, 0.0); g_aFireObjects[21] = CreateDynamicObject(18691, 1788.8287, -1163.4260, 22.0600, 0.0, 0.0, 0.0); g_aFireObjects[22] = CreateDynamicObject(18691, 1790.2512, -1164.0129, 21.2942, 0.0, 0.0, 0.0); } case 3: { g_aFireObjects[0] = CreateDynamicObject(18691, 1315.0238, -1368.2282, 10.9438, 0.0, 0.0, 0.0); g_aFireObjects[1] = CreateDynamicObject(18691, 1314.0100, -1368.2265, 10.9438, 0.0, 0.0, 0.0); g_aFireObjects[2] = CreateDynamicObject(18691, 1312.6562, -1368.2235, 10.9399, 0.0, 0.0, 0.0); g_aFireObjects[3] = CreateDynamicObject(18691, 1311.8308, -1367.5294, 10.9296, 0.0, 0.0, 0.0); g_aFireObjects[4] = CreateDynamicObject(18691, 1310.9281, -1367.4926, 10.9273, 0.0, 0.0, 0.0); g_aFireObjects[5] = CreateDynamicObject(18691, 1309.7708, -1367.4902, 10.9252, 0.0, 0.0, 0.0); g_aFireObjects[6] = CreateDynamicObject(18691, 1308.6425, -1367.4877, 10.9232, 0.0, 0.0, 0.0); g_aFireObjects[7] = CreateDynamicObject(18691, 1307.3302, -1368.0213, 10.9332, 0.0, 0.0, 0.0); g_aFireObjects[8] = CreateDynamicObject(18691, 1306.0062, -1368.3232, 10.9355, 0.0, 0.0, 0.0); g_aFireObjects[9] = CreateDynamicObject(18691, 1304.3460, -1368.3197, 10.9354, 0.0, 0.0, 0.0); g_aFireObjects[10] = CreateDynamicObject(18691, 1304.4842, -1369.0036, 10.9451, 0.0, 0.0, 0.0); g_aFireObjects[11] = CreateDynamicObject(18691, 1305.8629, -1369.4384, 10.9513, 0.0, 0.0, 0.0); g_aFireObjects[12] = CreateDynamicObject(18691, 1307.2315, -1369.3804, 10.9512, 0.0, 0.0, 0.0); g_aFireObjects[13] = CreateDynamicObject(18691, 1309.0936, -1369.7593, 10.9550, 0.0, 0.0, 0.0); g_aFireObjects[14] = CreateDynamicObject(18691, 1310.8515, -1369.5230, 10.9544, 0.0, 0.0, 0.0); g_aFireObjects[15] = CreateDynamicObject(18691, 1312.0820, -1369.2214, 10.9522, 0.0, 0.0, 0.0); g_aFireObjects[16] = CreateDynamicObject(18691, 1309.4581, -1367.9462, 13.2241, 0.0, 0.0, 0.0); g_aFireObjects[17] = CreateDynamicObject(18691, 1307.8933, -1367.5498, 13.5101, 0.0, 0.0, 0.0); g_aFireObjects[18] = CreateDynamicObject(18691, 1307.3311, -1369.9162, 13.0364, 0.0, 0.0, 0.0); g_aFireObjects[19] = CreateDynamicObject(18691, 1306.5539, -1370.5288, 12.7001, 0.0, 0.0, 0.0); g_aFireObjects[20] = CreateDynamicObject(18691, 1310.9852, -1369.3835, 12.2585, 0.0, 0.0, 0.0); g_aFireObjects[21] = CreateDynamicObject(18691, 1310.3361, -1370.6992, 12.9585, 0.0, 0.0, 0.0); g_aFireObjects[22] = CreateDynamicObject(18691, 1313.2864, -1370.2733, 10.9708, 0.0, 0.0, 0.0); g_aFireObjects[23] = CreateDynamicObject(18691, 1313.3056, -1371.2634, 10.9838, 0.0, 0.0, 0.0); g_aFireObjects[24] = CreateDynamicObject(18691, 1311.6168, -1370.8870, 10.9735, 0.0, 0.0, 0.0); g_aFireObjects[25] = CreateDynamicObject(18691, 1308.9244, -1371.1181, 10.9726, 0.0, 0.0, 0.0); g_aFireObjects[26] = CreateDynamicObject(18691, 1306.5335, -1370.7678, 10.9712, 0.0, 0.0, 0.0); } case 4: { g_aFireObjects[0] = CreateDynamicObject(18691, 997.7821, -910.8650, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[1] = CreateDynamicObject(18691, 998.0914, -911.5863, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[2] = CreateDynamicObject(18691, 998.2116, -913.0366, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[3] = CreateDynamicObject(18691, 998.3492, -914.6963, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[4] = CreateDynamicObject(18691, 998.4992, -916.5079, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[5] = CreateDynamicObject(18691, 998.6508, -918.3324, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[6] = CreateDynamicObject(18691, 998.7961, -920.0861, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[7] = CreateDynamicObject(18691, 998.9600, -922.0629, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[8] = CreateDynamicObject(18691, 999.1196, -923.9867, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[9] = CreateDynamicObject(18691, 999.2616, -925.7003, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[10] = CreateDynamicObject(18691, 999.4187, -927.5945, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[11] = CreateDynamicObject(18691, 999.5601, -929.3013, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[12] = CreateDynamicObject(18691, 1000.5933, -931.6047, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[13] = CreateDynamicObject(18691, 1002.6428, -931.3463, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[14] = CreateDynamicObject(18691, 1004.6893, -931.3514, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[15] = CreateDynamicObject(18691, 1007.2104, -931.1424, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[16] = CreateDynamicObject(18691, 1009.8325, -930.9251, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[17] = CreateDynamicObject(18691, 1012.1341, -930.7343, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[18] = CreateDynamicObject(18691, 1014.4911, -930.5388, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[19] = CreateDynamicObject(18691, 1014.4734, -932.3157, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[20] = CreateDynamicObject(18691, 1013.0949, -932.3657, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[21] = CreateDynamicObject(18691, 1011.4746, -932.4245, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[22] = CreateDynamicObject(18691, 1009.7496, -932.4875, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[23] = CreateDynamicObject(18691, 1008.1029, -932.5473, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[24] = CreateDynamicObject(18691, 1006.0109, -932.6234, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[25] = CreateDynamicObject(18691, 1003.9039, -932.7000, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[26] = CreateDynamicObject(18691, 1002.0654, -932.7668, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[27] = CreateDynamicObject(18691, 1002.6585, -933.5130, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[28] = CreateDynamicObject(18691, 1004.5731, -933.4433, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[29] = CreateDynamicObject(18691, 1006.4688, -933.3743, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[30] = CreateDynamicObject(18691, 1008.4611, -933.3016, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[31] = CreateDynamicObject(18691, 1010.4176, -933.2304, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[32] = CreateDynamicObject(18691, 1012.0813, -933.1698, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[33] = CreateDynamicObject(18691, 1013.1374, -933.1314, 39.5696, 0.0, 0.0, 0.0); g_aFireObjects[34] = CreateDynamicObject(18691, 1015.3114, -933.0523, 39.5696, 0.0, 0.0, 0.0); } } new Float:fX, Float:fY, Float:fZ; GetDynamicObjectPos(g_aFireObjects[0], fX, fY, fZ); foreach (new i : Player) { if (GetFactionType(i) == FACTION_MEDIC) { Waypoint_Set(i, "Fire Scene", fX, fY, fZ); } } //CreateExplosion(fX, fY, fZ, 12, 5.0); SendFactionMessageEx(FACTION_MEDIC, COLOR_RADIO, "RADIO: A fire has been spotted at %s (marked on map).", GetLocation(fX, fY, fZ)); return 1; } forward BreakCuffs(playerid, userid); public BreakCuffs(playerid, userid) { if (PlayerData[playerid][pCuffed] || PlayerData[playerid][pInjured] || !IsPlayerSpawned(playerid) || !Inventory_HasItem(playerid, "Crowbar") || !IsPlayerNearPlayer(playerid, userid, 6.0) || !PlayerData[userid][pCuffed]) return 1; if (random(2)) { ShowPlayerFooter(playerid, "You have ~r~failed~w~ to pick the cuffs."); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has failed to pick the cuffs.", ReturnName(playerid, 0)); } else { PlayerData[userid][pCuffed] = 0; SetPlayerSpecialAction(userid, SPECIAL_ACTION_NONE); ShowPlayerFooter(playerid, "You have ~g~picked~w~ the cuffs."); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has picked the cuffs from %s's wrists.", ReturnName(playerid, 0), ReturnName(userid, 0)); } return 1; } forward SpawnTimer(playerid); public SpawnTimer(playerid) { if (SQL_IsLogged(playerid)) { TogglePlayerControllable(playerid, 1); } return 1; } forward RemoveAttachedObject(playerid, slot); public RemoveAttachedObject(playerid, slot) { if (IsPlayerConnected(playerid) && IsPlayerAttachedObjectSlotUsed(playerid, slot)) { RemovePlayerAttachedObject(playerid, slot); } return 1; } forward MineTime(playerid); public MineTime(playerid) { PlayerData[playerid][pMineTime] = 0; } forward DestroyBlood(objectid); public DestroyBlood(objectid) { DestroyDynamicObject(objectid); } forward ExpireMarker(playerid); public ExpireMarker(playerid) { if (!PlayerData[playerid][pMarker]) return 0; if (GetFactionType(playerid) == FACTION_GANG || (GetFactionType(playerid) != FACTION_GANG && PlayerData[playerid][pOnDuty])) SetFactionColor(playerid); else SetPlayerColor(playerid, DEFAULT_COLOR); return 1; } forward HidePlayerBox(playerid, PlayerText:boxid); public HidePlayerBox(playerid, PlayerText:boxid) { if (!IsPlayerConnected(playerid) || !SQL_IsLogged(playerid)) return 0; PlayerTextDrawHide(playerid, boxid); PlayerTextDrawDestroy(playerid, boxid); return 1; } forward Advertise(playerid); public Advertise(playerid) { if (!SQL_IsLogged(playerid) || !strlen(PlayerData[playerid][pAdvertise])) return 0; new text[128]; strunpack(text, PlayerData[playerid][pAdvertise]); foreach (new i : Player) if (!PlayerData[i][pDisableBC]) { SendClientMessageEx(i, 0x00AA00FF, "Newspaper: %s (contact: %d)", text, PlayerData[playerid][pPhone]); } PlayerData[playerid][pAdvertise][0] = 0; return 1; } forward KickHouse(playerid, id); public KickHouse(playerid, id) { if (GetFactionType(playerid) != FACTION_POLICE || House_Nearest(playerid) != id) return 0; switch (random(6)) { case 0..2: { ShowPlayerFooter(playerid, "You have ~r~failed~w~ to kick the door down."); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has failed to kick the door down.", ReturnName(playerid, 0)); } default: { HouseData[id][houseLocked] = 0; House_Save(id); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has successfully kicked the door down.", ReturnName(playerid, 0)); ShowPlayerFooter(playerid, "Press ~y~'F'~w~ to enter the house."); } } return 1; } forward KickBusiness(playerid, id); public KickBusiness(playerid, id) { if (GetFactionType(playerid) != FACTION_POLICE || Business_Nearest(playerid) != id) return 0; switch (random(6)) { case 0..2: { ShowPlayerFooter(playerid, "You have ~r~failed~w~ to kick the door down."); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has failed to kick the door down.", ReturnName(playerid, 0)); } default: { BusinessData[id][bizLocked] = 0; Business_Save(id); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has successfully kicked the door down.", ReturnName(playerid, 0)); ShowPlayerFooter(playerid, "Press ~y~'F'~w~ to enter the business."); } } return 1; } forward UpdateBooth(playerid, id); public UpdateBooth(playerid, id) { if (PlayerData[playerid][pRangeBooth] != id || !g_BoothUsed[id]) return 0; if (PlayerData[playerid][pTargets] == 10) { PlayerData[playerid][pTargets] = 0; switch (PlayerData[playerid][pTargetLevel]++) { case 0: { ResetPlayerWeapons(playerid); GivePlayerWeapon(playerid, 25, 15000); SendServerMessage(playerid, "You have advanced to the next level (1/5)."); } case 1: { ResetPlayerWeapons(playerid); GivePlayerWeapon(playerid, 28, 15000); SendServerMessage(playerid, "You have advanced to the next level (2/5)."); } case 2: { ResetPlayerWeapons(playerid); GivePlayerWeapon(playerid, 29, 15000); SendServerMessage(playerid, "You have advanced to the next level (3/5)."); } case 3: { ResetPlayerWeapons(playerid); GivePlayerWeapon(playerid, 30, 15000); SendServerMessage(playerid, "You have advanced to the next level (4/5)."); } case 4: { ResetPlayerWeapons(playerid); GivePlayerWeapon(playerid, 27, 15000); SendServerMessage(playerid, "You have advanced to the next level (5/5)."); } case 5: { Booth_Leave(playerid); SendServerMessage(playerid, "You have completed the shooting challenge!"); } } } Booth_Refresh(playerid); return 1; } stock PlayerHasTazer(playerid) { return (GetPlayerWeapon(playerid) == 23 && PlayerData[playerid][pTazer]); } stock PlayerHasBeanBag(playerid) { return (GetPlayerWeapon(playerid) == 25 && PlayerData[playerid][pBeanBag]); } stock SetPlayerToFacePlayer(playerid, targetid) { new Float:x[2], Float:y[2], Float:z[2], Float:angle; GetPlayerPos(targetid, x[0], y[0], z[0]); GetPlayerPos(playerid, x[1], y[1], z[1]); angle = (180.0 - atan2(x[1] - x[0], y[1] - y[0])); SetPlayerFacingAngle(playerid, angle + (5.0 * -1)); } stock DisableWaypoint(playerid) { if (PlayerData[playerid][pWaypoint]) { PlayerData[playerid][pWaypoint] = 0; DisablePlayerCheckpoint(playerid); PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][69]); } return 1; } stock TerminateConnection(playerid) { if (BoomboxData[playerid][boomboxPlaced]) Boombox_Destroy(playerid); if (PlayerData[playerid][pRangeBooth] != -1) Booth_Leave(playerid); if (PlayerData[playerid][pFirstAid]) KillTimer(PlayerData[playerid][pAidTimer]); if (PlayerData[playerid][pDrivingTest]) DestroyVehicle(PlayerData[playerid][pTestCar]); if (PlayerData[playerid][pShowFooter]) KillTimer(PlayerData[playerid][pFooterTimer]); if (PlayerData[playerid][pTaxiPlayer] != INVALID_PLAYER_ID) LeaveTaxi(playerid, PlayerData[playerid][pTaxiPlayer]); if (PlayerData[playerid][pDragged]) KillTimer(PlayerData[playerid][pDragTimer]); if (PlayerData[playerid][pFreeze]) KillTimer(PlayerData[playerid][pFreezeTimer]); foreach (new i : Player) { if (PlayerData[i][pLastShot] == playerid) { PlayerData[i][pLastShot] = INVALID_PLAYER_ID; } if (PlayerData[i][pHouseSeller] == playerid) { PlayerData[i][pHouseSeller] = INVALID_PLAYER_ID; PlayerData[i][pHouseOffered] = -1; } if (PlayerData[i][pBusinessSeller] == playerid) { PlayerData[i][pBusinessSeller] = INVALID_PLAYER_ID; PlayerData[i][pBusinessOffered] = -1; } if (PlayerData[i][pCarSeller] == playerid) { PlayerData[i][pCarSeller] = INVALID_PLAYER_ID; PlayerData[i][pCarOffered] = -1; } if (PlayerData[i][pShakeOffer] == playerid) { PlayerData[i][pShakeOffer] = INVALID_PLAYER_ID; PlayerData[i][pShakeType] = 0; } if (PlayerData[i][pFriskOffer] == playerid) { PlayerData[i][pFriskOffer] = INVALID_PLAYER_ID; } if (PlayerData[i][pFoodSeller] == playerid) { PlayerData[i][pFoodSeller] = INVALID_PLAYER_ID; PlayerData[i][pFoodType] = 0; } if (PlayerData[i][pFactionOffer] == playerid) { PlayerData[i][pFactionOffer] = INVALID_PLAYER_ID; PlayerData[i][pFactionOffered] = -1; } if (PlayerData[i][pDraggedBy] == playerid) { KillTimer(PlayerData[i][pDragTimer]); PlayerData[i][pDragged] = 0; PlayerData[i][pDraggedBy] = INVALID_PLAYER_ID; } if (PlayerData[i][pMDCPlayer] == playerid) { PlayerData[i][pMDCPlayer] = INVALID_PLAYER_ID; PlayerData[i][pTrackTime] = 0; } if (PlayerData[i][pNewsGuest] == playerid) { PlayerData[i][pNewsGuest] = INVALID_PLAYER_ID; } if (PlayerData[i][pGiveItem] == playerid) { PlayerData[i][pGiveItem] = INVALID_PLAYER_ID; } if (PlayerData[i][pTakeItems] == playerid) { PlayerData[i][pTakeItems] = INVALID_PLAYER_ID; } } SQL_SaveCharacter(playerid); ResetNameTag(playerid); Report_Clear(playerid); ResetStatistics(playerid); return 1; } stock IsTaskCompleted(playerid) { if ((PlayerData[playerid][pTask] > 0) && (PlayerData[playerid][pBankTask] > 0 && PlayerData[playerid][pStoreTask] > 0 && PlayerData[playerid][pTestTask] > 0)) return 1; return 0; } stock IsTaskActive(playerid) { if ((PlayerData[playerid][pTask] > 0) && (!PlayerData[playerid][pBankTask] || !PlayerData[playerid][pStoreTask] || !PlayerData[playerid][pTestTask])) return 1; return 0; } stock HoldWeapon(playerid, weaponid) { RemovePlayerAttachedObject(playerid, 4); PlayerData[playerid][pHoldWeapon] = weaponid; PlayerData[playerid][pUsedMagazine] = 0; if (weaponid != 0) { SetPlayerAttachedObject(playerid, 4, GetWeaponModel(weaponid), 6); SetPlayerArmedWeapon(playerid, 0); } return 1; } stock GetWeapon(playerid) { new weaponid = GetPlayerWeapon(playerid); if (1 <= weaponid <= 46 && PlayerData[playerid][pGuns][g_aWeaponSlots[weaponid]] == weaponid) return weaponid; return 0; } stock IsBleedableWeapon(weaponid) { switch (weaponid) { case 4, 8, 9, 22..38: return 1; } return 0; } stock CreateBlood(playerid) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); SetTimerEx("DestroyBlood", 1500, false, "d", CreateDynamicObject(18668, x, y, z - 1.5, 0.0, 0.0, 0.0)); return 1; } stock PlayerText:ShowPlayerBox(playerid, color) { new PlayerText:textid; textid = CreatePlayerTextDraw(playerid, 0.000000, 0.000000, "_"); PlayerTextDrawFont(playerid, textid, 1); PlayerTextDrawLetterSize(playerid, textid, 0.500000, 50.000000); PlayerTextDrawColor(playerid, textid, -1); PlayerTextDrawUseBox(playerid, textid, 1); PlayerTextDrawBoxColor(playerid, textid, color); PlayerTextDrawTextSize(playerid, textid, 640.000000, 30.000000); PlayerTextDrawShow(playerid, textid); return textid; } stock Graffiti_Refresh(id) { if (id != -1 && GraffitiData[id][graffitiExists]) { if (IsValidDynamicMapIcon(GraffitiData[id][graffitiIcon])) DestroyDynamicMapIcon(GraffitiData[id][graffitiIcon]); if (IsValidDynamicObject(GraffitiData[id][graffitiObject])) DestroyDynamicObject(GraffitiData[id][graffitiObject]); GraffitiData[id][graffitiIcon] = CreateDynamicMapIcon(GraffitiData[id][graffitiPos][0], GraffitiData[id][graffitiPos][1], GraffitiData[id][graffitiPos][2], 23, 0, -1, -1, -1, 100.0, MAPICON_GLOBAL); GraffitiData[id][graffitiObject] = CreateDynamicObject(19482, GraffitiData[id][graffitiPos][0], GraffitiData[id][graffitiPos][1], GraffitiData[id][graffitiPos][2], 0.0, 0.0, GraffitiData[id][graffitiPos][3]); SetDynamicObjectMaterial(GraffitiData[id][graffitiObject], 0, 0, "none", "none", 0); SetDynamicObjectMaterialText(GraffitiData[id][graffitiObject], 0, GraffitiData[id][graffitiText], OBJECT_MATERIAL_SIZE_256x128, "Arial", 24, 1, GraffitiData[id][graffitiColor], 0, 0); } return 1; } stock IsSprayingInProgress(id) { foreach (new i : Player) { if (PlayerData[i][pGraffiti] == id && IsPlayerInRangeOfPoint(i, 5.0, GraffitiData[id][graffitiPos][0], GraffitiData[id][graffitiPos][1], GraffitiData[id][graffitiPos][2])) return 1; } return 0; } stock Graffiti_Nearest(playerid) { for (new i = 0; i < MAX_GRAFFITI_POINTS; i ++) if (GraffitiData[i][graffitiExists] && IsPlayerInRangeOfPoint(playerid, 5.0, GraffitiData[i][graffitiPos][0], GraffitiData[i][graffitiPos][1], GraffitiData[i][graffitiPos][2])) return i; return -1; } stock Graffiti_Delete(id) { if (id != -1 && GraffitiData[id][graffitiExists]) { new string[64]; if (IsValidDynamicMapIcon(GraffitiData[id][graffitiIcon])) DestroyDynamicMapIcon(GraffitiData[id][graffitiIcon]); if (IsValidDynamicObject(GraffitiData[id][graffitiObject])) DestroyDynamicObject(GraffitiData[id][graffitiObject]); format(string, sizeof(string), "DELETE FROM `graffiti` WHERE `graffitiID` = '%d'", GraffitiData[id][graffitiID]); mysql_tquery(g_iHandle, string); GraffitiData[id][graffitiExists] = false; GraffitiData[id][graffitiText][0] = 0; GraffitiData[id][graffitiID] = 0; } return 1; } stock Graffiti_Save(id) { new query[384]; format(query, sizeof(query), "UPDATE `graffiti` SET `graffitiX` = '%.4f', `graffitiY` = '%.4f', `graffitiZ` = '%.4f', `graffitiAngle` = '%.4f', `graffitiColor` = '%d', `graffitiText` = '%s' WHERE `graffitiID` = '%d'", GraffitiData[id][graffitiPos][0], GraffitiData[id][graffitiPos][1], GraffitiData[id][graffitiPos][2], GraffitiData[id][graffitiPos][3], GraffitiData[id][graffitiColor], SQL_ReturnEscaped(GraffitiData[id][graffitiText]), GraffitiData[id][graffitiID] ); return mysql_tquery(g_iHandle, query); } stock Graffiti_Create(Float:x, Float:y, Float:z, Float:angle) { for (new i = 0; i < MAX_GRAFFITI_POINTS; i ++) { if (!GraffitiData[i][graffitiExists]) { GraffitiData[i][graffitiExists] = 1; GraffitiData[i][graffitiPos][0] = x; GraffitiData[i][graffitiPos][1] = y; GraffitiData[i][graffitiPos][2] = z; GraffitiData[i][graffitiPos][3] = angle - 90.0; GraffitiData[i][graffitiColor] = 0xFFFFFFFF; format(GraffitiData[i][graffitiText], 32, "Graffiti"); Graffiti_Refresh(i); mysql_tquery(g_iHandle, "INSERT INTO `graffiti` (`graffitiColor`) VALUES(0)", "OnGraffitiCreated", "d", i); return i; } } return -1; } stock Speed_Refresh(speedid) { if (speedid != -1 && SpeedData[speedid][speedExists]) { new string[64]; if (IsValidDynamicObject(SpeedData[speedid][speedObject])) DestroyDynamicObject(SpeedData[speedid][speedObject]); if (IsValidDynamic3DTextLabel(SpeedData[speedid][speedText3D])) DestroyDynamic3DTextLabel(SpeedData[speedid][speedText3D]); format(string, sizeof(string), "[Camera %d]\n{FFFFFF}Speed Limit: %.0f mph", speedid, SpeedData[speedid][speedLimit]); SpeedData[speedid][speedText3D] = CreateDynamic3DTextLabel(string, COLOR_DARKBLUE, SpeedData[speedid][speedPos][0], SpeedData[speedid][speedPos][1], SpeedData[speedid][speedPos][2] + 2.5, 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0); SpeedData[speedid][speedObject] = CreateDynamicObject(18880, SpeedData[speedid][speedPos][0], SpeedData[speedid][speedPos][1], SpeedData[speedid][speedPos][2], 0.0, 0.0, SpeedData[speedid][speedPos][3]); } return 1; } stock Speed_Save(speedid) { new query[255]; format(query, sizeof(query), "UPDATE `speedcameras` SET `speedRange` = '%.4f', `speedLimit` = '%.4f', `speedX` = '%.4f', `speedY` = '%.4f', `speedZ` = '%.4f', `speedAngle` = '%.4f' WHERE `speedID` = '%d'", SpeedData[speedid][speedRange], SpeedData[speedid][speedLimit], SpeedData[speedid][speedPos][0], SpeedData[speedid][speedPos][1], SpeedData[speedid][speedPos][2], SpeedData[speedid][speedPos][3], SpeedData[speedid][speedID] ); return mysql_tquery(g_iHandle, query); } stock Speed_Nearest(playerid) { for (new i = 0; i < MAX_SPEED_CAMERAS; i ++) if (SpeedData[i][speedExists] && IsPlayerInRangeOfPoint(playerid, SpeedData[i][speedRange], SpeedData[i][speedPos][0], SpeedData[i][speedPos][1], SpeedData[i][speedPos][2])) return i; return -1; } stock Speed_Delete(speedid) { if (speedid != -1 && SpeedData[speedid][speedExists]) { new string[64]; if (IsValidDynamicObject(SpeedData[speedid][speedObject])) DestroyDynamicObject(SpeedData[speedid][speedObject]); if (IsValidDynamic3DTextLabel(SpeedData[speedid][speedText3D])) DestroyDynamic3DTextLabel(SpeedData[speedid][speedText3D]); format(string, sizeof(string), "DELETE FROM `speedcameras` WHERE `speedID` = '%d'", SpeedData[speedid][speedID]); mysql_tquery(g_iHandle, string); SpeedData[speedid][speedExists] = false; SpeedData[speedid][speedLimit] = 0.0; SpeedData[speedid][speedRange] = 0.0; SpeedData[speedid][speedID] = 0; } return 1; } stock Speed_Create(playerid, Float:limit, Float:range) { new Float:x, Float:y, Float:z, Float:angle; GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, angle); for (new i = 0; i < MAX_SPEED_CAMERAS; i ++) if (!SpeedData[i][speedExists]) { SpeedData[i][speedExists] = true; SpeedData[i][speedRange] = range; SpeedData[i][speedLimit] = limit; SpeedData[i][speedPos][0] = x + (1.5 * floatsin(-angle, degrees)); SpeedData[i][speedPos][1] = y + (1.5 * floatcos(-angle, degrees)); SpeedData[i][speedPos][2] = z - 1.2; SpeedData[i][speedPos][3] = angle; Speed_Refresh(i); mysql_tquery(g_iHandle, "INSERT INTO `speedcameras` (`speedRange`) VALUES(0.0)", "OnSpeedCreated", "d", i); return i; } return -1; } stock IsPlayerOnPhone(playerid) { if (PlayerData[playerid][pEmergency] > 0 || PlayerData[playerid][pPlaceAd] > 0 || PlayerData[playerid][pCallLine] != INVALID_PLAYER_ID) return 1; return 0; } stock FlipVehicle(vehicleid) { new Float:fAngle; GetVehicleZAngle(vehicleid, fAngle); SetVehicleZAngle(vehicleid, fAngle); SetVehicleVelocity(vehicleid, 0.0, 0.0, 0.0); } stock StopVehicleRadio(vehicleid) { if ((IsValidVehicle(vehicleid) && IsEngineVehicle(vehicleid)) && CoreVehicles[vehicleid][vehRadio]) { CoreVehicles[vehicleid][vehRadio] = 0; foreach (new i : Player) { if (IsPlayerInVehicle(i, vehicleid)) { StopAudioStreamForPlayer(i); PlayerData[i][pPlayRadio] = 0; } } } return 1; } stock SetVehicleRadio(vehicleid, url[]) { if (IsValidVehicle(vehicleid) && IsEngineVehicle(vehicleid)) { CoreVehicles[vehicleid][vehRadio] = 1; strpack(CoreVehicles[vehicleid][vehURL], url, 128 char); foreach (new i : Player) { if (IsPlayerInVehicle(i, vehicleid)) { PlayerData[i][pPlayRadio] = 1; StopAudioStreamForPlayer(i); PlayAudioStreamForPlayer(i, url); } } } return 1; } stock ResetVehicle(vehicleid) { if (1 <= vehicleid <= MAX_VEHICLES) { if (CoreVehicles[vehicleid][vehSirenOn] && IsValidDynamicObject(CoreVehicles[vehicleid][vehSirenObject])) DestroyDynamicObject(CoreVehicles[vehicleid][vehSirenObject]); CoreVehicles[vehicleid][vehFuel] = 100; CoreVehicles[vehicleid][vehWindowsDown] = false; CoreVehicles[vehicleid][vehTemporary] = 0; CoreVehicles[vehicleid][vehLoads] = 0; CoreVehicles[vehicleid][vehLoadType] = 0; CoreVehicles[vehicleid][vehCrate] = INVALID_OBJECT_ID; CoreVehicles[vehicleid][vehTrash] = 0; CoreVehicles[vehicleid][vehRepairing] = 0; CoreVehicles[vehicleid][vehSirenOn] = 0; CoreVehicles[vehicleid][vehRadio] = 0; } return 1; } stock RespawnVehicle(vehicleid) { new id = Car_GetID(vehicleid); if (id != -1) Car_Spawn(id); else SetVehicleToRespawn(vehicleid); ResetVehicle(vehicleid); return 1; } stock GetWeaponCount(playerid) { new count, weapon, ammo; for (new i = 0; i < 12; i ++) { GetPlayerWeaponData(playerid, i, weapon, ammo); if (weapon > 0 && ammo > 0) count++; } return count; } stock Boombox_Place(playerid) { new Float:angle; GetPlayerFacingAngle(playerid, angle); strpack(BoomboxData[playerid][boomboxURL], "", 128 char); GetPlayerPos(playerid, BoomboxData[playerid][boomboxPos][0], BoomboxData[playerid][boomboxPos][1], BoomboxData[playerid][boomboxPos][2]); BoomboxData[playerid][boomboxPlaced] = true; BoomboxData[playerid][boomboxInterior] = GetPlayerInterior(playerid); BoomboxData[playerid][boomboxWorld] = GetPlayerVirtualWorld(playerid); BoomboxData[playerid][boomboxObject] = CreateDynamicObject(2226, BoomboxData[playerid][boomboxPos][0], BoomboxData[playerid][boomboxPos][1], BoomboxData[playerid][boomboxPos][2] - 0.9, 0.0, 0.0, angle, BoomboxData[playerid][boomboxWorld], BoomboxData[playerid][boomboxInterior]); BoomboxData[playerid][boomboxText3D] = CreateDynamic3DTextLabel("[Boombox]\n{FFFFFF}/boombox to use this boombox.", COLOR_DARKBLUE, BoomboxData[playerid][boomboxPos][0], BoomboxData[playerid][boomboxPos][1], BoomboxData[playerid][boomboxPos][2] - 0.7, 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, BoomboxData[playerid][boomboxWorld], BoomboxData[playerid][boomboxInterior]); return 1; } stock Boombox_Nearest(playerid) { foreach (new i : Player) if (BoomboxData[i][boomboxPlaced] && GetPlayerInterior(playerid) == BoomboxData[i][boomboxInterior] && GetPlayerVirtualWorld(playerid) == BoomboxData[i][boomboxWorld] && IsPlayerInRangeOfPoint(playerid, 30.0, BoomboxData[i][boomboxPos][0], BoomboxData[i][boomboxPos][1], BoomboxData[i][boomboxPos][2])) { return i; } return INVALID_PLAYER_ID; } stock Boombox_SetURL(playerid, url[]) { if (BoomboxData[playerid][boomboxPlaced]) { strpack(BoomboxData[playerid][boomboxURL], url, 128 char); foreach (new i : Player) if (PlayerData[i][pBoombox] == playerid) { StopAudioStreamForPlayer(i); PlayAudioStreamForPlayer(i, url, BoomboxData[playerid][boomboxPos][0], BoomboxData[playerid][boomboxPos][1], BoomboxData[playerid][boomboxPos][2], 30.0, 1); } } return 1; } stock Boombox_Destroy(playerid) { if (BoomboxData[playerid][boomboxPlaced]) { if (IsValidDynamicObject(BoomboxData[playerid][boomboxObject])) DestroyDynamicObject(BoomboxData[playerid][boomboxObject]); if (IsValidDynamic3DTextLabel(BoomboxData[playerid][boomboxText3D])) DestroyDynamic3DTextLabel(BoomboxData[playerid][boomboxText3D]); foreach (new i : Player) if (PlayerData[i][pBoombox] == playerid) { StopAudioStreamForPlayer(i); } BoomboxData[playerid][boomboxPlaced] = false; BoomboxData[playerid][boomboxInterior] = 0; BoomboxData[playerid][boomboxWorld] = 0; } return 1; } stock Taxi_ShowCalls(playerid) { static string[2048]; string[0] = 0; foreach (new i : Player) if (PlayerData[i][pTaxiCalled]) { format(string, sizeof(string), "%s%d: %s (%s)\n", string, i, ReturnName(i, 0), GetPlayerLocation(i)); } if (!strlen(string)) { SendErrorMessage(playerid, "There are no taxi calls to accept."); } else Dialog_Show(playerid, AcceptTaxi, DIALOG_STYLE_LIST, "Taxi Calls", string, "Accept", "Cancel"); return 1; } stock IsShipmentAccepted(businessid) { foreach (new i : Player) if (PlayerData[i][pJob] == JOB_COURIER && PlayerData[i][pShipment] == businessid) { return 1; } return 0; } stock CancelShipment(playerid) { PlayerData[playerid][pShipment] = -1; if (PlayerData[playerid][pDeliverShipment]) { PlayerData[playerid][pDeliverShipment] = 0; DisablePlayerCheckpoint(playerid); } return 1; } stock ShowShipments(playerid) { static string[2048], type[24]; string[0] = 0; for (new i = 0; i < MAX_BUSINESSES; i ++) if (BusinessData[i][bizExists] && BusinessData[i][bizShipment] && !IsShipmentAccepted(i)) { switch (BusinessData[i][bizType]) { case 1: type = "Retail Supplies"; case 2: type = "Ammunition"; case 3: type = "Clothing"; case 4: type = "Food Supplies"; case 6: type = "Gasoline/Retail"; case 7: type = "Furniture"; } format(string, sizeof(string), "%s%d: %s (%s)\n", string, i, BusinessData[i][bizName], type); } if (!strlen(string)) { SendErrorMessage(playerid, "There are no shipments to accept."); } else Dialog_Show(playerid, AcceptShipment, DIALOG_STYLE_LIST, "Shipments", string, "Accept", "Cancel"); return 1; } stock GetWheelName(componentid) { new name[12]; enum g_eWheelData { g_eWheelModel, g_eWheelName[12 char] }; new const g_aWheelData[][g_eWheelData] = { {1025, !"Offroad"}, {1073, !"Shadow"}, {1074, !"Mega"}, {1075, !"Rimshine"}, {1076, !"Wires"}, {1077, !"Classic"}, {1078, !"Twist"}, {1079, !"Cutter"}, {1080, !"Switch"}, {1081, !"Grove"}, {1082, !"Import"}, {1083, !"Dollar"}, {1084, !"Trance"}, {1085, !"Atomic"}, {1096, !"Ahab"}, {1097, !"Virtual"}, {1098, !"Access"} }; for (new i = 0; i < sizeof(g_aWheelData); i ++) if (g_aWheelData[i][g_eWheelModel] == componentid) { strunpack(name, g_aWheelData[i][g_eWheelName]); return name; } strunpack(name, !"Unknown"); return name; } stock SetVehicleColor(vehicleid, color1, color2) { new id = Car_GetID(vehicleid); if (id != -1) { CarData[id][carColor1] = color1; CarData[id][carColor2] = color2; Car_Save(id); } return ChangeVehicleColor(vehicleid, color1, color2); } stock SetVehiclePaintjob(vehicleid, paintjobid) { new id = Car_GetID(vehicleid); if (id != -1) { CarData[id][carPaintjob] = paintjobid; Car_Save(id); } return ChangeVehiclePaintjob(vehicleid, paintjobid); } stock RemoveComponent(vehicleid, componentid) { if (!IsValidVehicle(vehicleid) || (componentid < 1000 || componentid > 1193)) return 0; new id = Car_GetID(vehicleid); if (id != -1) { CarData[id][carMods][GetVehicleComponentType(componentid)] = 0; Car_Save(id); } return RemoveVehicleComponent(vehicleid, componentid); } stock AddComponent(vehicleid, componentid) { if (!IsValidVehicle(vehicleid) || (componentid < 1000 || componentid > 1193)) return 0; new id = Car_GetID(vehicleid); if (id != -1) { CarData[id][carMods][GetVehicleComponentType(componentid)] = componentid; Car_Save(id); } return AddVehicleComponent(vehicleid, componentid); } stock ApplyAnimationEx(playerid, animlib[], animname[], Float:fDelta, loop, lockx, locky, freeze, time, forcesync = 0) { ApplyAnimation(playerid, animlib, animname, fDelta, loop, lockx, locky, freeze, time, forcesync); PlayerData[playerid][pLoopAnim] = true; ShowPlayerFooter(playerid, "Press ~y~SPRINT~w~ to stop the animation."); return 1; } stock AnimationCheck(playerid) { return (GetPlayerState(playerid) == PLAYER_STATE_ONFOOT && !PlayerData[playerid][pKilled] && !PlayerData[playerid][pFreeze] && !PlayerData[playerid][pCuffed] && !PlayerData[playerid][pStunned] && !PlayerData[playerid][pFirstAid] && !PlayerData[playerid][pCrafting] && PlayerData[playerid][pGraffiti] == -1); } stock PreloadAnimations(playerid) { for (new i = 0; i < sizeof(g_aPreloadLibs); i ++) { ApplyAnimation(playerid, g_aPreloadLibs[i], "null", 4.0, 0, 0, 0, 0, 0, 1); } return 1; } stock Vendor_Create(playerid, type) { for (new i = 0; i != MAX_VENDORS; i ++) if (!VendorData[i][vendorExists]) { VendorData[i][vendorExists] = true; VendorData[i][vendorType] = type; GetPlayerPos(playerid, VendorData[i][vendorPos][0], VendorData[i][vendorPos][1], VendorData[i][vendorPos][2]); GetPlayerFacingAngle(playerid, VendorData[i][vendorPos][3]); VendorData[i][vendorPos][0] = VendorData[i][vendorPos][0] + (1.5 * floatsin(-VendorData[i][vendorPos][3], degrees)); VendorData[i][vendorPos][1] = VendorData[i][vendorPos][1] + (1.5 * floatcos(-VendorData[i][vendorPos][3], degrees)); VendorData[i][vendorInterior] = GetPlayerInterior(playerid); VendorData[i][vendorWorld] = GetPlayerVirtualWorld(playerid); Vendor_Refresh(i); mysql_tquery(g_iHandle, "INSERT INTO `vendors` (`vendorType`) VALUES(0)", "OnVendorCreated", "d", i); return i; } return -1; } stock Vendor_Delete(vendorid) { if (vendorid != -1 && VendorData[vendorid][vendorExists]) { new string[64]; format(string, sizeof(string), "DELETE FROM `vendors` WHERE `vendorID` = '%d'", VendorData[vendorid][vendorID]); mysql_tquery(g_iHandle, string); if (IsValidDynamic3DTextLabel(VendorData[vendorid][vendorText3D])) DestroyDynamic3DTextLabel(VendorData[vendorid][vendorText3D]); if (IsValidDynamicObject(VendorData[vendorid][vendorObject])) DestroyDynamicObject(VendorData[vendorid][vendorObject]); VendorData[vendorid][vendorExists] = false; VendorData[vendorid][vendorType] = 0; VendorData[vendorid][vendorID] = 0; } return 1; } Vendor_Nearest(playerid) { for (new i = 0; i != MAX_VENDORS; i ++) if (VendorData[i][vendorExists] && IsPlayerInRangeOfPoint(playerid, 2.0, VendorData[i][vendorPos][0], VendorData[i][vendorPos][1], VendorData[i][vendorPos][2])) { if (GetPlayerInterior(playerid) == VendorData[i][vendorInterior] && GetPlayerVirtualWorld(playerid) == VendorData[i][vendorWorld]) return i; } return -1; } stock Vendor_Refresh(vendorid) { if (vendorid != -1 && VendorData[vendorid][vendorExists]) { if (IsValidDynamic3DTextLabel(VendorData[vendorid][vendorText3D])) DestroyDynamic3DTextLabel(VendorData[vendorid][vendorText3D]); if (IsValidDynamicObject(VendorData[vendorid][vendorObject])) DestroyDynamicObject(VendorData[vendorid][vendorObject]); new string[64]; format(string, sizeof(string), "[Vendor %d]\n{FFFFFF}Press 'F' to use this vendor.", vendorid); VendorData[vendorid][vendorText3D] = CreateDynamic3DTextLabel(string, COLOR_DARKBLUE, VendorData[vendorid][vendorPos][0], VendorData[vendorid][vendorPos][1], VendorData[vendorid][vendorPos][2], 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, VendorData[vendorid][vendorWorld], VendorData[vendorid][vendorInterior]); switch (VendorData[vendorid][vendorType]) { case 1: VendorData[vendorid][vendorObject] = CreateDynamicObject(1340, VendorData[vendorid][vendorPos][0], VendorData[vendorid][vendorPos][1], VendorData[vendorid][vendorPos][2], 0.0, 0.0, VendorData[vendorid][vendorPos][3] - 90.0, VendorData[vendorid][vendorWorld], VendorData[vendorid][vendorInterior]); case 2: VendorData[vendorid][vendorObject] = CreateDynamicObject(1209, VendorData[vendorid][vendorPos][0], VendorData[vendorid][vendorPos][1], VendorData[vendorid][vendorPos][2] - 1.0, 0.0, 0.0, VendorData[vendorid][vendorPos][3], VendorData[vendorid][vendorWorld], VendorData[vendorid][vendorInterior]); } } return 1; } stock Vendor_Save(vendorid) { new query[300]; format(query, sizeof(query), "UPDATE `vendors` SET `vendorType` = '%d', `vendorX` = '%.4f', `vendorY` = '%.4f', `vendorZ` = '%.4f', `vendorA` = '%.4f', `vendorInterior` = '%d', `vendorWorld` = '%d' WHERE `vendorID` = '%d'", VendorData[vendorid][vendorType], VendorData[vendorid][vendorPos][0], VendorData[vendorid][vendorPos][1], VendorData[vendorid][vendorPos][2], VendorData[vendorid][vendorPos][3], VendorData[vendorid][vendorInterior], VendorData[vendorid][vendorWorld], VendorData[vendorid][vendorID] ); return mysql_tquery(g_iHandle, query); } stock Garbage_Create(playerid, type) { for (new i = 0; i != MAX_GARBAGE_BINS; i ++) if (!GarbageData[i][garbageExists]) { switch (type) { case 1: GarbageData[i][garbageModel] = 1236; case 2: GarbageData[i][garbageModel] = 1300; } GarbageData[i][garbageExists] = true; GarbageData[i][garbageCapacity] = 0; GetPlayerPos(playerid, GarbageData[i][garbagePos][0], GarbageData[i][garbagePos][1], GarbageData[i][garbagePos][2]); GetPlayerFacingAngle(playerid, GarbageData[i][garbagePos][3]); switch (type) { case 1: { GarbageData[i][garbagePos][0] = GarbageData[i][garbagePos][0] + (1.8 * floatsin(-GarbageData[i][garbagePos][3], degrees)); GarbageData[i][garbagePos][1] = GarbageData[i][garbagePos][1] + (1.8 * floatcos(-GarbageData[i][garbagePos][3], degrees)); } case 2: { GarbageData[i][garbagePos][0] = GarbageData[i][garbagePos][0] + (1.0 * floatsin(-GarbageData[i][garbagePos][3], degrees)); GarbageData[i][garbagePos][1] = GarbageData[i][garbagePos][1] + (1.0 * floatcos(-GarbageData[i][garbagePos][3], degrees)); } } GarbageData[i][garbageInterior] = GetPlayerInterior(playerid); GarbageData[i][garbageWorld] = GetPlayerVirtualWorld(playerid); Garbage_Refresh(i); mysql_tquery(g_iHandle, "INSERT INTO `garbage` (`garbageCapacity`) VALUES(0)", "OnGarbageCreated", "d", i); return i; } return -1; } stock Garbage_Delete(garbageid) { if (garbageid != -1 && GarbageData[garbageid][garbageExists]) { new string[64]; format(string, sizeof(string), "DELETE FROM `garbage` WHERE `garbageID` = '%d'", GarbageData[garbageid][garbageID]); mysql_tquery(g_iHandle, string); if (IsValidDynamic3DTextLabel(GarbageData[garbageid][garbageText3D])) DestroyDynamic3DTextLabel(GarbageData[garbageid][garbageText3D]); if (IsValidDynamicObject(GarbageData[garbageid][garbageObject])) DestroyDynamicObject(GarbageData[garbageid][garbageObject]); GarbageData[garbageid][garbageExists] = false; GarbageData[garbageid][garbageCapacity] = 0; GarbageData[garbageid][garbageID] = 0; } return 1; } Garbage_Nearest(playerid) { for (new i = 0; i != MAX_GARBAGE_BINS; i ++) if (GarbageData[i][garbageExists] && IsPlayerInRangeOfPoint(playerid, 3.0, GarbageData[i][garbagePos][0], GarbageData[i][garbagePos][1], GarbageData[i][garbagePos][2])) { if (GetPlayerInterior(playerid) == GarbageData[i][garbageInterior] && GetPlayerVirtualWorld(playerid) == GarbageData[i][garbageWorld]) return i; } return -1; } stock Garbage_Refresh(garbageid) { if (garbageid != -1 && GarbageData[garbageid][garbageExists]) { if (IsValidDynamic3DTextLabel(GarbageData[garbageid][garbageText3D])) DestroyDynamic3DTextLabel(GarbageData[garbageid][garbageText3D]); if (IsValidDynamicObject(GarbageData[garbageid][garbageObject])) DestroyDynamicObject(GarbageData[garbageid][garbageObject]); new string[64]; format(string, sizeof(string), "[Garbage %d]\n{FFFFFF}Trash Capacity: %d/20", garbageid, GarbageData[garbageid][garbageCapacity]); GarbageData[garbageid][garbageText3D] = CreateDynamic3DTextLabel(string, COLOR_DARKBLUE, GarbageData[garbageid][garbagePos][0], GarbageData[garbageid][garbagePos][1], GarbageData[garbageid][garbagePos][2], 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, GarbageData[garbageid][garbageWorld], GarbageData[garbageid][garbageInterior]); GarbageData[garbageid][garbageObject] = CreateDynamicObject(GarbageData[garbageid][garbageModel], GarbageData[garbageid][garbagePos][0], GarbageData[garbageid][garbagePos][1], (GarbageData[garbageid][garbageModel] == 1236) ? (GarbageData[garbageid][garbagePos][2] - 0.4) : (GarbageData[garbageid][garbagePos][2] - 0.6), 0.0, 0.0, GarbageData[garbageid][garbagePos][3], GarbageData[garbageid][garbageWorld], GarbageData[garbageid][garbageInterior]); } return 1; } stock Garbage_Save(garbageid) { new query[300]; format(query, sizeof(query), "UPDATE `garbage` SET `garbageModel` = '%d', `garbageCapacity` = '%d', `garbageX` = '%.4f', `garbageY` = '%.4f', `garbageZ` = '%.4f', `garbageA` = '%.4f', `garbageInterior` = '%d', `garbageWorld` = '%d' WHERE `garbageID` = '%d'", GarbageData[garbageid][garbageModel], GarbageData[garbageid][garbageCapacity], GarbageData[garbageid][garbagePos][0], GarbageData[garbageid][garbagePos][1], GarbageData[garbageid][garbagePos][2], GarbageData[garbageid][garbagePos][3], GarbageData[garbageid][garbageInterior], GarbageData[garbageid][garbageWorld], GarbageData[garbageid][garbageID] ); return mysql_tquery(g_iHandle, query); } stock Booth_GetPlayer(id) { foreach (new i : Player) if (PlayerData[i][pRangeBooth] == id) { return i; } return INVALID_PLAYER_ID; } stock Booth_Leave(playerid) { if (PlayerData[playerid][pRangeBooth] != -1) { if (IsValidObject(g_BoothObject[PlayerData[playerid][pRangeBooth]])) { DestroyObject(g_BoothObject[PlayerData[playerid][pRangeBooth]]); g_BoothObject[PlayerData[playerid][pRangeBooth]] = -1; } ResetPlayerWeapons(playerid); SetWeapons(playerid); g_BoothUsed[PlayerData[playerid][pRangeBooth]] = false; PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][81]); PlayerData[playerid][pRangeBooth] = -1; PlayerData[playerid][pTargets] = 0; PlayerData[playerid][pTargetLevel] = 0; } return 1; } stock Booth_Refresh(playerid) { new id = PlayerData[playerid][pRangeBooth]; if (id == -1) return 0; if (IsValidObject(g_BoothObject[id])) { DestroyObject(g_BoothObject[id]); } g_BoothObject[id] = CreateObject(1583, arrBoothPositions[id][0] - 15.0, arrBoothPositions[id][1] + 1.5, arrBoothPositions[id][2], 0.0, 0.0, 90.0); return MoveObject(g_BoothObject[id], arrBoothPositions[id][0] - 1.0, arrBoothPositions[id][1] + 1.5, arrBoothPositions[id][2], (!PlayerData[playerid][pTargetLevel]) ? (2.0) : (2.0 + (PlayerData[playerid][pTargetLevel] * 1.2))); } stock UpdateWeapons(playerid) { for (new i = 0; i < 13; i ++) if (PlayerData[playerid][pGuns][i]) { if ((i == 2 && PlayerData[playerid][pTazer]) || (i == 3 && PlayerData[playerid][pBeanBag])) continue; GetPlayerWeaponData(playerid, i, PlayerData[playerid][pGuns][i], PlayerData[playerid][pAmmo][i]); if (PlayerData[playerid][pGuns][i] != 0 && !PlayerData[playerid][pAmmo][i]) { PlayerData[playerid][pGuns][i] = 0; } } return 1; } stock ATM_Delete(atmid) { if (atmid != -1 && ATMData[atmid][atmExists]) { new string[64]; format(string, sizeof(string), "DELETE FROM `atm` WHERE `atmID` = '%d'", ATMData[atmid][atmID]); mysql_tquery(g_iHandle, string); if (IsValidDynamicObject(ATMData[atmid][atmObject])) DestroyDynamicObject(ATMData[atmid][atmObject]); if (IsValidDynamic3DTextLabel(ATMData[atmid][atmText3D])) DestroyDynamic3DTextLabel(ATMData[atmid][atmText3D]); ATMData[atmid][atmExists] = false; ATMData[atmid][atmID] = 0; } return 1; } ATM_Nearest(playerid) { for (new i = 0; i != MAX_ATM_MACHINES; i ++) if (ATMData[i][atmExists] && IsPlayerInRangeOfPoint(playerid, 2.5, ATMData[i][atmPos][0], ATMData[i][atmPos][1], ATMData[i][atmPos][2])) { if (GetPlayerInterior(playerid) == ATMData[i][atmInterior] && GetPlayerVirtualWorld(playerid) == ATMData[i][atmWorld]) return i; } return -1; } stock ATM_Create(playerid) { new Float:x, Float:y, Float:z, Float:angle; if (GetPlayerPos(playerid, x, y, z) && GetPlayerFacingAngle(playerid, angle)) { for (new i = 0; i < MAX_ATM_MACHINES; i ++) if (!ATMData[i][atmExists]) { ATMData[i][atmExists] = true; x += 1.0 * floatsin(-angle, degrees); y += 1.0 * floatcos(-angle, degrees); ATMData[i][atmPos][0] = x; ATMData[i][atmPos][1] = y; ATMData[i][atmPos][2] = z; ATMData[i][atmPos][3] = angle; ATMData[i][atmInterior] = GetPlayerInterior(playerid); ATMData[i][atmWorld] = GetPlayerVirtualWorld(playerid); ATM_Refresh(i); mysql_tquery(g_iHandle, "INSERT INTO `atm` (`atmInterior`) VALUES(0)", "OnATMCreated", "d", i); return i; } } return -1; } stock ATM_Refresh(atmid) { if (atmid != -1 && ATMData[atmid][atmExists]) { if (IsValidDynamicObject(ATMData[atmid][atmObject])) DestroyDynamicObject(ATMData[atmid][atmObject]); if (IsValidDynamic3DTextLabel(ATMData[atmid][atmText3D])) DestroyDynamic3DTextLabel(ATMData[atmid][atmText3D]); new string[64]; format(string, sizeof(string), "[ATM %d]\n{FFFFFF}/atm to use this machine.", atmid); ATMData[atmid][atmObject] = CreateDynamicObject(2942, ATMData[atmid][atmPos][0], ATMData[atmid][atmPos][1], ATMData[atmid][atmPos][2] - 0.4, 0.0, 0.0, ATMData[atmid][atmPos][3], ATMData[atmid][atmWorld], ATMData[atmid][atmInterior]); ATMData[atmid][atmText3D] = CreateDynamic3DTextLabel(string, COLOR_DARKBLUE, ATMData[atmid][atmPos][0], ATMData[atmid][atmPos][1], ATMData[atmid][atmPos][2], 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, ATMData[atmid][atmWorld], ATMData[atmid][atmInterior]); return 1; } return 0; } stock ATM_Save(atmid) { new query[200]; format(query, sizeof(query), "UPDATE `atm` SET `atmX` = '%.4f', `atmY` = '%.4f', `atmZ` = '%.4f', `atmA` = '%.4f', `atmInterior` = '%d', `atmWorld` = '%d' WHERE `atmID` = '%d'", ATMData[atmid][atmPos][0], ATMData[atmid][atmPos][1], ATMData[atmid][atmPos][2], ATMData[atmid][atmPos][3], ATMData[atmid][atmInterior], ATMData[atmid][atmWorld], ATMData[atmid][atmID] ); return mysql_tquery(g_iHandle, query); } stock IsVehicleImpounded(vehicleid) { new id = Car_GetID(vehicleid); if (id != -1 && CarData[id][carImpounded] != -1 && CarData[id][carImpoundPrice] > 0) return 1; return 0; } stock Impound_Delete(impoundid) { if (impoundid != -1 && ImpoundData[impoundid][impoundExists]) { new query[64]; format(query, sizeof(query), "DELETE FROM `impoundlots` WHERE `impoundID` = '%d'", ImpoundData[impoundid][impoundID]); mysql_tquery(g_iHandle, query); if (IsValidDynamic3DTextLabel(ImpoundData[impoundid][impoundText3D])) DestroyDynamic3DTextLabel(ImpoundData[impoundid][impoundText3D]); if (IsValidDynamicPickup(ImpoundData[impoundid][impoundPickup])) DestroyDynamicPickup(ImpoundData[impoundid][impoundPickup]); for (new i = 0; i < MAX_DYNAMIC_CARS; i ++) if (CarData[i][carExists] && CarData[i][carImpounded] == ImpoundData[impoundid][impoundID]) { CarData[i][carImpounded] = 0; CarData[i][carImpoundPrice] = 0; Car_Save(i); } ImpoundData[impoundid][impoundExists] = false; ImpoundData[impoundid][impoundID] = 0; } return 1; } stock GetImpoundByID(sqlid) { for (new i = 0; i < MAX_IMPOUND_LOTS; i ++) if (ImpoundData[i][impoundExists] && ImpoundData[i][impoundID] == sqlid) { return i; } return -1; } stock Impound_Nearest(playerid) { for (new i = 0; i < MAX_IMPOUND_LOTS; i ++) if (ImpoundData[i][impoundExists] && IsPlayerInRangeOfPoint(playerid, 20.0, ImpoundData[i][impoundLot][0], ImpoundData[i][impoundLot][1], ImpoundData[i][impoundLot][2])) { return i; } return -1; } stock Impound_Create(Float:x, Float:y, Float:z) { for (new i = 0; i != MAX_IMPOUND_LOTS; i ++) if (!ImpoundData[i][impoundExists]) { ImpoundData[i][impoundExists] = true; ImpoundData[i][impoundLot][0] = x; ImpoundData[i][impoundLot][1] = y; ImpoundData[i][impoundLot][2] = z; ImpoundData[i][impoundRelease][0] = 0.0; ImpoundData[i][impoundRelease][1] = 0.0; ImpoundData[i][impoundRelease][2] = 0.0; mysql_tquery(g_iHandle, "INSERT INTO `impoundlots` (`impoundLotX`) VALUES('0.0')", "OnImpoundCreated", "d", i); Impound_Refresh(i); return i; } return -1; } stock Impound_Refresh(impoundid) { if (impoundid != -1 && ImpoundData[impoundid][impoundExists]) { new string[64]; if (IsValidDynamic3DTextLabel(ImpoundData[impoundid][impoundText3D])) DestroyDynamic3DTextLabel(ImpoundData[impoundid][impoundText3D]); if (IsValidDynamicPickup(ImpoundData[impoundid][impoundPickup])) DestroyDynamicPickup(ImpoundData[impoundid][impoundPickup]); format(string, sizeof(string), "[Impound %d]\n{FFFFFF}/impound to impound a vehicle.", impoundid); ImpoundData[impoundid][impoundText3D] = CreateDynamic3DTextLabel(string, COLOR_DARKBLUE, ImpoundData[impoundid][impoundLot][0], ImpoundData[impoundid][impoundLot][1], ImpoundData[impoundid][impoundLot][2], 20.0); ImpoundData[impoundid][impoundPickup] = CreateDynamicPickup(1239, 23, ImpoundData[impoundid][impoundLot][0], ImpoundData[impoundid][impoundLot][1], ImpoundData[impoundid][impoundLot][2]); } return 1; } stock Impound_Save(impoundid) { new query[300]; format(query, sizeof(query), "UPDATE `impoundlots` SET `impoundLotX` = '%.4f', `impoundLotY` = '%.4f', `impoundLotZ` = '%.4f', `impoundReleaseX` = '%.4f', `impoundReleaseY` = '%.4f', `impoundReleaseZ` = '%.4f', `impoundReleaseA` = '%.4f' WHERE `impoundID` = '%d'", ImpoundData[impoundid][impoundLot][0], ImpoundData[impoundid][impoundLot][1], ImpoundData[impoundid][impoundLot][2], ImpoundData[impoundid][impoundRelease][0], ImpoundData[impoundid][impoundRelease][1], ImpoundData[impoundid][impoundRelease][2], ImpoundData[impoundid][impoundRelease][3], ImpoundData[impoundid][impoundID] ); return mysql_tquery(g_iHandle, query); } stock Backpack_Items(playerid, id) { if (id != -1 && BackpackData[id][backpackExists]) { new string[MAX_BACKPACK_CAPACITY * 32], count = 0; for (new i = 0; i < MAX_BACKPACK_ITEMS; i ++) if (BackpackItems[i][bItemExists] && BackpackItems[i][bItemBackpack] == id) { if (BackpackItems[i][bItemQuantity] == 1) format(string, sizeof(string), "%s%s\n", string, BackpackItems[i][bItemName]); else format(string, sizeof(string), "%s%s (%d)\n", string, BackpackItems[i][bItemName], BackpackItems[i][bItemQuantity]); BackpackListed[playerid][count++] = i; } strcat(string, "Take Backpack"); PlayerData[playerid][pBackpackLoot] = id; Dialog_Show(playerid, BackpackLoot, DIALOG_STYLE_LIST, "Backpack", string, "Select", "Cancel"); } return 1; } stock Backpack_Open(playerid) { new id = GetPlayerBackpack(playerid); if (id != -1) { new string[MAX_BACKPACK_CAPACITY * 32], count = 0; string = "Add Item\n"; for (new i = 0; i < MAX_BACKPACK_ITEMS; i ++) if (BackpackItems[i][bItemExists] && BackpackItems[i][bItemBackpack] == id) { if (BackpackItems[i][bItemQuantity] == 1) format(string, sizeof(string), "%s%s\n", string, BackpackItems[i][bItemName]); else format(string, sizeof(string), "%s%s (%d)\n", string, BackpackItems[i][bItemName], BackpackItems[i][bItemQuantity]); BackpackListed[playerid][count++] = i; } Dialog_Show(playerid, Backpack, DIALOG_STYLE_LIST, "My Backpack", string, "Select", "Cancel"); } return 1; } stock Backpack_GetItems(id) { new count; for (new i = 0; i != MAX_BACKPACK_ITEMS; i ++) if (BackpackItems[i][bItemExists] && BackpackItems[i][bItemBackpack] == id) { count++; } return count; } stock Backpack_GetFreeID() { for (new i = 0; i != MAX_BACKPACKS; i ++) if (!BackpackData[i][backpackExists]) { return i; } return -1; } stock Backpack_Refresh(id) { if (id != -1 && BackpackData[id][backpackExists]) { if (IsValidDynamicObject(BackpackData[id][backpackObject])) DestroyDynamicObject(BackpackData[id][backpackObject]); if (IsValidDynamic3DTextLabel(BackpackData[id][backpackText3D])) DestroyDynamic3DTextLabel(BackpackData[id][backpackText3D]); if (!BackpackData[id][backpackPlayer]) { BackpackData[id][backpackObject] = CreateDynamicObject(3026, BackpackData[id][backpackPos][0], BackpackData[id][backpackPos][1], BackpackData[id][backpackPos][2] - 0.8, -90.0, 0.0, 0.0, BackpackData[id][backpackWorld], BackpackData[id][backpackInterior]); BackpackData[id][backpackText3D] = CreateDynamic3DTextLabel("[Backpack]\n{FFFFFF}Press 'N' to view the items.", COLOR_DARKBLUE, BackpackData[id][backpackPos][0], BackpackData[id][backpackPos][1], BackpackData[id][backpackPos][2] - 0.8, 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, BackpackData[id][backpackWorld], BackpackData[id][backpackInterior]); } } return 1; } stock Backpack_GetItemID(id, name[]) { for (new i = 0; i != MAX_BACKPACK_ITEMS; i ++) if (BackpackItems[i][bItemExists] && BackpackItems[i][bItemBackpack] == id && !strcmp(BackpackItems[i][bItemName], name, true)) { return i; } return -1; } stock Backpack_GetFreeItem() { for (new i = 0; i != MAX_BACKPACK_ITEMS; i ++) if (!BackpackItems[i][bItemExists]) { return i; } return -1; } stock Backpack_HasItem(id, name[]) { if (id != -1 && BackpackData[id][backpackExists]) return Backpack_GetItemID(id, name) != -1; return 0; } stock Backpack_Count(id, name[]) { new itemid; if (id != -1 && BackpackData[id][backpackExists]) { itemid = Backpack_GetItemID(id, name); if (itemid != -1) return BackpackItems[itemid][bItemQuantity]; } return 0; } stock Backpack_Add(id, name[], model, quantity = 1) { new query[128]; if (id != -1 && BackpackData[id][backpackExists]) { new itemid = Backpack_GetItemID(id, name); if (itemid != -1) { format(query, sizeof(query), "UPDATE `backpackitems` SET `itemQuantity` = `itemQuantity` + %d WHERE `itemID` = '%d'", quantity, BackpackItems[itemid][bItemID]); mysql_tquery(g_iHandle, query); return BackpackItems[itemid][bItemQuantity] += quantity; } else if ((itemid = Backpack_GetFreeItem()) != -1) { format(BackpackItems[itemid][bItemName], 32, name); BackpackItems[itemid][bItemBackpack] = id; BackpackItems[itemid][bItemExists] = true; BackpackItems[itemid][bItemModel] = model; BackpackItems[itemid][bItemQuantity] = quantity; format(query, sizeof(query), "INSERT INTO `backpackitems` (`ID`, `itemName`, `itemModel`, `itemQuantity`) VALUES('%d', '%s', '%d', '%d')", BackpackData[id][backpackID], name, model, quantity); mysql_tquery(g_iHandle, query, "OnBackpackAdd", "dd", id, itemid); return 1; } } return 0; } stock Backpack_Remove(id, name[], quantity = 1) { new query[128]; if (id != -1 && BackpackData[id][backpackExists]) { new itemid = Backpack_GetItemID(id, name); if (itemid != -1) { if (BackpackItems[itemid][bItemQuantity] > 0) { BackpackItems[itemid][bItemQuantity] -= quantity; } if (BackpackItems[itemid][bItemQuantity] < 1) { format(query, sizeof(query), "DELETE FROM `backpackitems` WHERE `itemID` = '%d'", BackpackItems[itemid][bItemID]); mysql_tquery(g_iHandle, query); BackpackItems[itemid][bItemBackpack] = -1; BackpackItems[itemid][bItemExists] = false; BackpackItems[itemid][bItemModel] = 0; BackpackItems[itemid][bItemQuantity] = 0; } else { format(query, sizeof(query), "UPDATE `backpackitems` SET `itemQuantity` = `itemQuantity` - %d WHERE `itemID` = '%d'", quantity, BackpackItems[itemid][bItemID]); mysql_tquery(g_iHandle, query); } return 1; } } return 0; } stock GetHouseBackpack(houseid) { for (new i = 0; i != MAX_BACKPACKS; i ++) if (BackpackData[i][backpackExists] && BackpackData[i][backpackHouse] == HouseData[houseid][houseID]) { return i; } return -1; } stock GetVehicleBackpack(carid) { for (new i = 0; i != MAX_BACKPACKS; i ++) if (BackpackData[i][backpackExists] && BackpackData[i][backpackVehicle] == CarData[carid][carID]) { return i; } return -1; } stock GetPlayerBackpack(playerid) { for (new i = 0; i != MAX_BACKPACKS; i ++) if (BackpackData[i][backpackExists] && BackpackData[i][backpackPlayer] == PlayerData[playerid][pID]) { return i; } return -1; } stock Backpack_Create(playerid) { new id = Backpack_GetFreeID(); if (id != -1) { BackpackData[id][backpackExists] = true; BackpackData[id][backpackPlayer] = PlayerData[playerid][pID]; BackpackData[id][backpackHouse] = 0; BackpackData[id][backpackVehicle] = 0; BackpackData[id][backpackPos][0] = 0.0; BackpackData[id][backpackPos][1] = 0.0; BackpackData[id][backpackPos][2] = 0.0; mysql_tquery(g_iHandle, "INSERT INTO `backpacks` (`backpackInterior`) VALUES(0)", "OnBackpackCreated", "d", id); return id; } return -1; } stock Backpack_Delete(id) { if (id != -1 && BackpackData[id][backpackExists]) { new str[64]; format(str, sizeof(str), "DELETE FROM `backpacks` WHERE `backpackID` = '%d'", BackpackData[id][backpackID]); mysql_tquery(g_iHandle, str); if (IsValidDynamicObject(BackpackData[id][backpackObject])) DestroyDynamicObject(BackpackData[id][backpackObject]); if (IsValidDynamic3DTextLabel(BackpackData[id][backpackText3D])) DestroyDynamic3DTextLabel(BackpackData[id][backpackText3D]); BackpackData[id][backpackExists] = false; BackpackData[id][backpackID] = 0; BackpackData[id][backpackPlayer] = 0; BackpackData[id][backpackHouse] = 0; BackpackData[id][backpackVehicle] = 0; } return 1; } stock Backpack_Save(id) { new query[256]; format(query, sizeof(query), "UPDATE `backpacks` SET `backpackPlayer` = '%d', `backpackHouse` = '%d', `backpackVehicle` = '%d', `backpackX` = '%.4f', `backpackY` = '%.4f', `backpackZ` = '%.4f', `backpackInterior` = '%d', `backpackWorld` = '%d' WHERE `backpackID` = '%d'", BackpackData[id][backpackPlayer], BackpackData[id][backpackHouse], BackpackData[id][backpackVehicle], BackpackData[id][backpackPos][0], BackpackData[id][backpackPos][1], BackpackData[id][backpackPos][2], BackpackData[id][backpackInterior], BackpackData[id][backpackWorld], BackpackData[id][backpackID] ); return mysql_tquery(g_iHandle, query); } stock StartTutorial(playerid) { ShowHungerTextdraw(playerid, 0); TogglePlayerControllable(playerid, 0); PlayerData[playerid][pTutorial] = 1; PlayerData[playerid][pTutorialTime] = 10; #if SERVER_CITY == 1 SetPlayerPos(playerid, 1806.737, -2043.505, 44.733); SetPlayerCameraPos(playerid, 1806.737, -2043.505, 24.733); SetPlayerCameraLookAt(playerid, 1802.511, -2040.684, 22.996); #elseif SERVER_CITY == 2 SetPlayerPos(playerid, -2399.519287, 321.964355, 17.035743); SetPlayerCameraPos(playerid, -2399.519287, 321.964355, 37.035743); SetPlayerCameraLookAt(playerid, -2399.951416, 322.215942, 37.015625); #elseif SERVER_CITY == 3 SetPlayerPos(playerid, 1694.187622, 1448.494506, -7.181461); SetPlayerCameraPos(playerid, 1694.187622, 1448.494506, 12.818538); SetPlayerCameraLookAt(playerid, 1693.687744, 1448.484497, 12.763537); #endif for (new i = 58; i < 62; i ++) { PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][i]); } SetPlayerInterior(playerid, 0); SetPlayerVirtualWorld(playerid, 0); return 1; } stock IsValidObjectModel(modelid) { if (modelid < 0 || modelid > 20000) return 0; switch (modelid) { case 18632..18645, 18646..18658, 18659..18667, 18668..19299, 19301..19515, 18631, 331, 333..339, 318..321, 325, 326, 341..344, 346..353, 355..370, 372: return 1; } new const g_arrModelData[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -515899393, -134217729, -1, -1, 33554431, -1, -1, -1, -14337, -1, -33, 127, 0, 0, 0, 0, 0, -8388608, -1, -1, -1, -16385, -1, -1, -1, -1, -1, -1, -1, -33, -1, -771751937, -1, -9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33554431, -25, -1, -1, -1, -1, -1, -1, -1073676289, -2147483648, 34079999, 2113536, -4825600, -5, -1, -3145729, -1, -16777217, -63, -1, -1, -1, -1, -201326593, -1, -1, -1, -1, -1, -257, -1, 1073741823, -133122, -1, -1, -65, -1, -1, -1, -1, -1, -1, -2146435073, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1073741823, -64, -1, -1, -1, -1, -2635777, 134086663, 0, -64, -1, -1, -1, -1, -1, -1, -1, -536870927, -131069, -1, -1, -1, -1, -1, -1, -1, -1, -16384, -1, -33554433, -1, -1, -1, -1, -1, -1610612737, 524285, -128, -1, 2080309247, -1, -1, -1114113, -1, -1, -1, 66977343, -524288, -1, -1, -1, -1, -2031617, -1, 114687, -256, -1, -4097, -1, -4097, -1, -1, 1010827263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32768, -1, -1, -1, -1, -1, 2147483647, -33554434, -1, -1, -49153, -1148191169, 2147483647, -100781080, -262145, -57, 134217727, -8388608, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1048577, -1, -449, -1017, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1835009, -2049, -1, -1, -1, -1, -1, -1, -8193, -1, -536870913, -1, -1, -1, -1, -1, -87041, -1, -1, -1, -1, -1, -1, -209860, -1023, -8388609, -2096897, -1, -1048577, -1, -1, -1, -1, -1, -1, -897, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1610612737, -3073, -28673, -1, -1, -1, -1537, -1, -1, -13, -1, -1, -1, -1, -1985, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1056964609, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -236716037, -1, -1, -1, -1, -1, -1, -1, -536870913, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2097153, -2109441, -1, 201326591, -4194304, -1, -1, -241, -1, -1, -1, -1, -1, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32768, -1, -1, -1, -2, -671096835, -1, -8388609, -66323585, -13, -1793, -32257, -247809, -1, -1, -513, 16252911, 0, 0, 0, -131072, 33554383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8356095, 0, 0, 0, 0, 0, 0, -256, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -268435449, -1, -1, -2049, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 92274627, -65536, -2097153, -268435457, 591191935, 1, 0, -16777216, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127 }; return ((modelid >= 0) && ((modelid / 32) < sizeof(g_arrModelData)) && (g_arrModelData[modelid / 32] & (1 << (modelid % 32)))); } forward CloseGate(gateid, linkid, Float:fX, Float:fY, Float:fZ, Float:speed, Float:fRotX, Float:fRotY, Float:fRotZ); public CloseGate(gateid, linkid, Float:fX, Float:fY, Float:fZ, Float:speed, Float:fRotX, Float:fRotY, Float:fRotZ) { new id = -1; if (GateData[gateid][gateExists] && GateData[gateid][gateOpened]) { MoveDynamicObject(GateData[gateid][gateObject], fX, fY, fZ, speed, fRotX, fRotY, fRotZ); if ((id = GetGateByID(linkid)) != -1) MoveDynamicObject(GateData[id][gateObject], GateData[id][gatePos][0], GateData[id][gatePos][1], GateData[id][gatePos][2], speed, GateData[id][gatePos][3], GateData[id][gatePos][4], GateData[id][gatePos][5]); GateData[id][gateOpened] = 0; return 1; } return 0; } stock Gate_Operate(gateid) { if (gateid != -1 && GateData[gateid][gateExists]) { new id = -1; if (!GateData[gateid][gateOpened]) { GateData[gateid][gateOpened] = true; MoveDynamicObject(GateData[gateid][gateObject], GateData[gateid][gateMove][0], GateData[gateid][gateMove][1], GateData[gateid][gateMove][2], GateData[gateid][gateSpeed], GateData[gateid][gateMove][3], GateData[gateid][gateMove][4], GateData[gateid][gateMove][5]); if (GateData[gateid][gateTime] > 0) { GateData[gateid][gateTimer] = SetTimerEx("CloseGate", GateData[gateid][gateTime], false, "ddfffffff", gateid, GateData[gateid][gateLinkID], GateData[gateid][gatePos][0], GateData[gateid][gatePos][1], GateData[gateid][gatePos][2], GateData[gateid][gateSpeed], GateData[gateid][gatePos][3], GateData[gateid][gatePos][4], GateData[gateid][gatePos][5]); } if (GateData[gateid][gateLinkID] != -1 && (id = GetGateByID(GateData[gateid][gateLinkID])) != -1) { GateData[id][gateOpened] = true; MoveDynamicObject(GateData[id][gateObject], GateData[id][gateMove][0], GateData[id][gateMove][1], GateData[id][gateMove][2], GateData[id][gateSpeed], GateData[id][gateMove][3], GateData[id][gateMove][4], GateData[id][gateMove][5]); } } else if (GateData[gateid][gateOpened]) { GateData[gateid][gateOpened] = false; MoveDynamicObject(GateData[gateid][gateObject], GateData[gateid][gatePos][0], GateData[gateid][gatePos][1], GateData[gateid][gatePos][2], GateData[gateid][gateSpeed], GateData[gateid][gatePos][3], GateData[gateid][gatePos][4], GateData[gateid][gatePos][5]); if (GateData[gateid][gateTime] > 0) { KillTimer(GateData[gateid][gateTimer]); } if (GateData[gateid][gateLinkID] != -1 && (id = GetGateByID(GateData[gateid][gateLinkID])) != -1) { GateData[id][gateOpened] = false; MoveDynamicObject(GateData[id][gateObject], GateData[id][gatePos][0], GateData[id][gatePos][1], GateData[id][gatePos][2], GateData[id][gateSpeed], GateData[id][gatePos][3], GateData[id][gatePos][4], GateData[id][gatePos][5]); } } } return 1; } stock Gate_Create(playerid) { new Float:x, Float:y, Float:z, Float:angle; if (GetPlayerPos(playerid, x, y, z) && GetPlayerFacingAngle(playerid, angle)) { for (new i = 0; i < MAX_GATES; i ++) if (!GateData[i][gateExists]) { GateData[i][gateExists] = true; GateData[i][gateModel] = 980; GateData[i][gateSpeed] = 3.0; GateData[i][gateRadius] = 5.0; GateData[i][gateOpened] = 0; GateData[i][gateTime] = 0; GateData[i][gatePos][0] = x + (3.0 * floatsin(-angle, degrees)); GateData[i][gatePos][1] = y + (3.0 * floatcos(-angle, degrees)); GateData[i][gatePos][2] = z; GateData[i][gatePos][3] = 0.0; GateData[i][gatePos][4] = 0.0; GateData[i][gatePos][5] = angle; GateData[i][gateMove][0] = x + (3.0 * floatsin(-angle, degrees)); GateData[i][gateMove][1] = y + (3.0 * floatcos(-angle, degrees)); GateData[i][gateMove][2] = z - 10.0; GateData[i][gateMove][3] = -1000.0; GateData[i][gateMove][4] = -1000.0; GateData[i][gateMove][5] = -1000.0; GateData[i][gateInterior] = GetPlayerInterior(playerid); GateData[i][gateWorld] = GetPlayerVirtualWorld(playerid); GateData[i][gateLinkID] = -1; GateData[i][gateFaction] = -1; GateData[i][gatePass][0] = '\0'; GateData[i][gateObject] = CreateDynamicObject(GateData[i][gateModel], GateData[i][gatePos][0], GateData[i][gatePos][1], GateData[i][gatePos][2], GateData[i][gatePos][3], GateData[i][gatePos][4], GateData[i][gatePos][5], GateData[i][gateWorld], GateData[i][gateInterior]); mysql_tquery(g_iHandle, "INSERT INTO `gates` (`gateModel`) VALUES(980)", "OnGateCreated", "d", i); return i; } } return -1; } stock Gate_Delete(gateid) { if (gateid != -1 && GateData[gateid][gateExists]) { new query[64]; format(query, sizeof(query), "DELETE FROM `gates` WHERE `gateID` = '%d'", GateData[gateid][gateID]); mysql_tquery(g_iHandle, query); if (IsValidDynamicObject(GateData[gateid][gateObject])) DestroyDynamicObject(GateData[gateid][gateObject]); for (new i = 0; i != MAX_GATES; i ++) if (GateData[i][gateExists] && GateData[i][gateLinkID] == GateData[gateid][gateID]) { GateData[i][gateLinkID] = -1; Gate_Save(i); } if (GateData[gateid][gateOpened] && GateData[gateid][gateTime] > 0) { KillTimer(GateData[gateid][gateTimer]); } GateData[gateid][gateExists] = false; GateData[gateid][gateID] = 0; GateData[gateid][gateOpened] = 0; } return 1; } stock Gate_Save(gateid) { new query[768]; format(query, sizeof(query), "UPDATE `gates` SET `gateModel` = '%d', `gateSpeed` = '%.4f', `gateRadius` = '%.4f', `gateTime` = '%d', `gateX` = '%.4f', `gateY` = '%.4f', `gateZ` = '%.4f', `gateRX` = '%.4f', `gateRY` = '%.4f', `gateRZ` = '%.4f', `gateInterior` = '%d', `gateWorld` = '%d', `gateMoveX` = '%.4f', `gateMoveY` = '%.4f', `gateMoveZ` = '%.4f', `gateMoveRX` = '%.4f', `gateMoveRY` = '%.4f', `gateMoveRZ` = '%.4f', `gateLinkID` = '%d', `gateFaction` = '%d', `gatePass` = '%s' WHERE `gateID` = '%d'", GateData[gateid][gateModel], GateData[gateid][gateSpeed], GateData[gateid][gateRadius], GateData[gateid][gateTime], GateData[gateid][gatePos][0], GateData[gateid][gatePos][1], GateData[gateid][gatePos][2], GateData[gateid][gatePos][3], GateData[gateid][gatePos][4], GateData[gateid][gatePos][5], GateData[gateid][gateInterior], GateData[gateid][gateWorld], GateData[gateid][gateMove][0], GateData[gateid][gateMove][1], GateData[gateid][gateMove][2], GateData[gateid][gateMove][3], GateData[gateid][gateMove][4], GateData[gateid][gateMove][5], GateData[gateid][gateLinkID], GateData[gateid][gateFaction], SQL_ReturnEscaped(GateData[gateid][gatePass]), GateData[gateid][gateID] ); return mysql_tquery(g_iHandle, query); } stock ChangeName(playerid, name[], bool:logging = true) { new id = PlayerData[playerid][pCharacter] - 1, query[160], oldname[24]; GetPlayerName(playerid, oldname, sizeof(oldname)); if (logging) { format(query, sizeof(query), "INSERT INTO `namechanges` (`OldName`, `NewName`, `Date`) VALUES('%s', '%s', '%s')", oldname, name, ReturnDate()); mysql_tquery(g_iHandle, query); } format(PlayerCharacters[playerid][id], MAX_PLAYER_NAME + 1, name); SetPlayerName(playerid, name); format(query, sizeof(query), "UPDATE `characters` SET `Character` = '%s' WHERE `Character` = '%s'", name, oldname); mysql_tquery(g_iHandle, query); return 1; } stock Tax_Percent(price) { return floatround((float(price) / 100) * 85); } stock Tax_AddMoney(amount) { g_TaxVault = g_TaxVault + amount; Server_Save(); return 0; } stock Tax_AddPercent(price) { new money = (price - Tax_Percent(price)); g_TaxVault = g_TaxVault + money; Server_Save(); return 1; } stock file_parse_int(File:handle, const field[]) { new str[16]; return (file_parse(handle, field, str), strval(str)); } stock file_parse(File:handle, const field[], dest[], size = sizeof(dest)) { if (!handle) return 0; new str[128], pos = strlen(field); fseek(handle, 0, seek_start); while (fread(handle, str)) if (strfind(str, field, true) == 0 && (str[pos] == '=' || str[pos] == ' ')) { strmid(dest, str, (str[pos] == '=') ? (pos + 1) : (pos + 3), strlen(str), size); if ((pos = strfind(dest, "\r")) != -1) dest[pos] = '\0'; else if ((pos = strfind(dest, "\n")) != -1) dest[pos] = '\0'; return 1; } return 0; } cache_get_field_int(row, const field_name[]) { new str[12]; cache_get_field_content(row, field_name, str, g_iHandle, sizeof(str)); return strval(str); } Ticket_Add(suspectid, price, reason[]) { new string[160]; for (new i = 0; i != MAX_PLAYER_TICKETS; i ++) if (!TicketData[suspectid][i][ticketExists]) { TicketData[suspectid][i][ticketExists] = true; TicketData[suspectid][i][ticketFee] = price; format(TicketData[suspectid][i][ticketDate], 36, ReturnDate()); format(TicketData[suspectid][i][ticketReason], 64, reason); format(string, sizeof(string), "INSERT INTO `tickets` (`ID`, `ticketFee`, `ticketDate`, `ticketReason`) VALUES('%d', '%d', '%s', '%s')", PlayerData[suspectid][pID], price, TicketData[suspectid][i][ticketDate], SQL_ReturnEscaped(reason)); mysql_tquery(g_iHandle, string, "OnTicketCreated", "dd", suspectid, i); return i; } return -1; } Ticket_Remove(playerid, ticketid) { if (ticketid != -1 && TicketData[playerid][ticketid][ticketExists]) { new string[90]; format(string, sizeof(string), "DELETE FROM `tickets` WHERE `ID` = '%d' AND `ticketID` = '%d'", PlayerData[playerid][pID], TicketData[playerid][ticketid][ticketID]); mysql_tquery(g_iHandle, string); TicketData[playerid][ticketid][ticketExists] = false; TicketData[playerid][ticketid][ticketID] = 0; TicketData[playerid][ticketid][ticketFee] = 0; } return 1; } Waypoint_Set(playerid, name[], Float:x, Float:y, Float:z) { format(PlayerData[playerid][pLocation], 32, name); PlayerData[playerid][pWaypoint] = 1; PlayerData[playerid][pWaypointPos][0] = x; PlayerData[playerid][pWaypointPos][1] = y; PlayerData[playerid][pWaypointPos][2] = z; SetPlayerCheckpoint(playerid, x, y, z, 3.0); PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][69]); return 1; } Location_Add(playerid, name[], Float:x, Float:y, Float:z) { new query[192]; for (new i = 0; i != MAX_GPS_LOCATIONS; i ++) if (!LocationData[playerid][i][locationExists]) { LocationData[playerid][i][locationExists] = true; format(LocationData[playerid][i][locationName], 32, name); LocationData[playerid][i][locationPos][0] = x; LocationData[playerid][i][locationPos][1] = y; LocationData[playerid][i][locationPos][2] = z; format(query, sizeof(query), "INSERT INTO `gps` (`ID`, `locationName`, `locationX`, `locationY`, `locationZ`) VALUES('%d', '%s', '%.4f', '%.4f', '%.4f')", PlayerData[playerid][pID], SQL_ReturnEscaped(name), x, y, z); mysql_tquery(g_iHandle, query, "OnLocationCreated", "dd", playerid, i); return i; } return -1; } Location_GetID(playerid, name[]) { for (new i = 0; i != MAX_GPS_LOCATIONS; i ++) if (LocationData[playerid][i][locationExists] && !strcmp(LocationData[playerid][i][locationName], name, true)) { return i; } return -1; } Location_Delete(playerid, name[]) { new query[96]; for (new i = 0; i != MAX_GPS_LOCATIONS; i ++) if (LocationData[playerid][i][locationExists] && !strcmp(LocationData[playerid][i][locationName], name)) { LocationData[playerid][i][locationExists] = false; LocationData[playerid][i][locationPos][0] = 0.0; LocationData[playerid][i][locationPos][1] = 0.0; LocationData[playerid][i][locationPos][2] = 0.0; format(query, sizeof(query), "DELETE FROM `gps` WHERE `ID` = '%d' AND `locationID` = '%d'", PlayerData[playerid][pID], LocationData[playerid][i][locationID]); mysql_tquery(g_iHandle, query); return 1; } return 0; } stock SetPlayerPosEx(playerid, Float:x, Float:y, Float:z, time = 2000) { if (PlayerData[playerid][pFreeze]) { KillTimer(PlayerData[playerid][pFreezeTimer]); PlayerData[playerid][pFreeze] = 0; TogglePlayerControllable(playerid, 1); } SetPlayerPos(playerid, x, y, z + 0.5); TogglePlayerControllable(playerid, 0); PlayerData[playerid][pFreeze] = 1; PlayerData[playerid][pFreezeTimer] = SetTimerEx("SetPlayerToUnfreeze", time, false, "dfff", playerid, x, y, z); return 1; } forward SetPlayerToUnfreeze(playerid, Float:x, Float:y, Float:z); public SetPlayerToUnfreeze(playerid, Float:x, Float:y, Float:z) { if (!IsPlayerInRangeOfPoint(playerid, 15.0, x, y, z)) return 0; PlayerData[playerid][pFreeze] = 0; SetPlayerPos(playerid, x, y, z); TogglePlayerControllable(playerid, 1); return 1; } forward RefillUpdate(playerid, vehicleid); public RefillUpdate(playerid, vehicleid) { if (!PlayerData[playerid][pFuelCan] || GetNearestVehicle(playerid) != vehicleid) return 0; CoreVehicles[vehicleid][vehFuel] = (CoreVehicles[vehicleid][vehFuel] + 15 >= 100) ? (100) : (CoreVehicles[vehicleid][vehFuel] + 15); PlayerData[playerid][pFuelCan] = 0; SendServerMessage(playerid, "You have filled up your vehicle with a can of fuel."); return 1; } stock EquipWeapon(playerid, weapon[]) { if (PlayerData[playerid][pPlayingHours] < 2) return SendErrorMessage(playerid, "You must play at least 2 hours first."); if (IsPlayerInAnyVehicle(playerid)) return SendErrorMessage(playerid, "You must exit the vehicle first."); if (!strcmp(weapon, "Colt 45", true)) { if (!Inventory_HasItem(playerid, "Colt 45")) return SendErrorMessage(playerid, "You don't have this weapon."); if (PlayerHasWeapon(playerid, 22)) return SendErrorMessage(playerid, "You already have this weapon."); if (PlayerData[playerid][pHoldWeapon] > 0) return SendErrorMessage(playerid, "You're already holding a weapon (press 'N' to put it away)."); HoldWeapon(playerid, 22); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out an empty Colt 45 and holds it.", ReturnName(playerid, 0)); SendServerMessage(playerid, "Press 'N' to put the gun away. You must attach a magazine to use it."); } else if (!strcmp(weapon, "Desert Eagle", true)) { if (!Inventory_HasItem(playerid, "Desert Eagle")) return SendErrorMessage(playerid, "You don't have this weapon."); if (PlayerHasWeapon(playerid, 24)) return SendErrorMessage(playerid, "You already have this weapon."); if (PlayerHasWeapon(playerid, 24)) return SendErrorMessage(playerid, "You already have this weapon."); if (PlayerData[playerid][pHoldWeapon] > 0) return SendErrorMessage(playerid, "You're already holding a weapon (press 'N' to put it away)."); HoldWeapon(playerid, 24); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out an empty Desert Eagle and holds it.", ReturnName(playerid, 0)); SendServerMessage(playerid, "Press 'N' to put the gun away. You must attach a magazine to use it."); } else if (!strcmp(weapon, "Shotgun", true)) { if (!Inventory_HasItem(playerid, "Shotgun")) return SendErrorMessage(playerid, "You don't have this weapon."); if (PlayerHasWeapon(playerid, 25)) return SendErrorMessage(playerid, "You already have this weapon."); if (PlayerData[playerid][pHoldWeapon] > 0) return SendErrorMessage(playerid, "You're already holding a weapon (press 'N' to put it away)."); HoldWeapon(playerid, 25); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out an empty Shotgun and holds it.", ReturnName(playerid, 0)); SendServerMessage(playerid, "Press 'N' to put the gun away. You must attach a magazine to use it."); } else if (!strcmp(weapon, "Micro SMG", true)) { if (!Inventory_HasItem(playerid, "Micro SMG")) return SendErrorMessage(playerid, "You don't have this weapon."); if (PlayerHasWeapon(playerid, 28)) return SendErrorMessage(playerid, "You already have this weapon."); if (PlayerData[playerid][pHoldWeapon] > 0) return SendErrorMessage(playerid, "You're already holding a weapon (press 'N' to put it away)."); HoldWeapon(playerid, 28); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out an empty Micro SMG and holds it.", ReturnName(playerid, 0)); SendServerMessage(playerid, "Press 'N' to put the gun away. You must attach a magazine to use it."); } else if (!strcmp(weapon, "Tec-9", true)) { if (!Inventory_HasItem(playerid, "Tec-9")) return SendErrorMessage(playerid, "You don't have this weapon."); if (PlayerHasWeapon(playerid, 32)) return SendErrorMessage(playerid, "You already have this weapon."); if (PlayerData[playerid][pHoldWeapon] > 0) return SendErrorMessage(playerid, "You're already holding a weapon (press 'N' to put it away)."); HoldWeapon(playerid, 32); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out an empty Tec-9 and holds it.", ReturnName(playerid, 0)); SendServerMessage(playerid, "Press 'N' to put the gun away. You must attach a magazine to use it."); } else if (!strcmp(weapon, "MP5", true)) { if (!Inventory_HasItem(playerid, "MP5")) return SendErrorMessage(playerid, "You don't have this weapon."); if (PlayerHasWeapon(playerid, 29)) return SendErrorMessage(playerid, "You already have this weapon."); if (PlayerData[playerid][pHoldWeapon] > 0) return SendErrorMessage(playerid, "You're already holding a weapon (press 'N' to put it away)."); HoldWeapon(playerid, 29); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out an empty MP5 and holds it.", ReturnName(playerid, 0)); SendServerMessage(playerid, "Press 'N' to put the gun away. You must attach a magazine to use it."); } else if (!strcmp(weapon, "AK-47", true)) { if (!Inventory_HasItem(playerid, "AK-47")) return SendErrorMessage(playerid, "You don't have this weapon."); if (PlayerHasWeapon(playerid, 30)) return SendErrorMessage(playerid, "You already have this weapon."); if (PlayerData[playerid][pHoldWeapon] > 0) return SendErrorMessage(playerid, "You're already holding a weapon (press 'N' to put it away)."); HoldWeapon(playerid, 30); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out an empty AK-47 and holds it.", ReturnName(playerid, 0)); SendServerMessage(playerid, "Press 'N' to put the gun away. You must attach a magazine to use it."); } else if (!strcmp(weapon, "Rifle", true)) { if (!Inventory_HasItem(playerid, "Rifle")) return SendErrorMessage(playerid, "You don't have this weapon."); if (PlayerHasWeapon(playerid, 33)) return SendErrorMessage(playerid, "You already have this weapon."); if (PlayerData[playerid][pHoldWeapon] > 0) return SendErrorMessage(playerid, "You're already holding a weapon (press 'N' to put it away)."); HoldWeapon(playerid, 33); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out an empty Rifle and holds it.", ReturnName(playerid, 0)); SendServerMessage(playerid, "Press 'N' to put the gun away. You must attach a magazine to use it."); } else if (!strcmp(weapon, "Sniper", true)) { if (!Inventory_HasItem(playerid, "Sniper")) return SendErrorMessage(playerid, "You don't have this weapon."); if (PlayerHasWeapon(playerid, 34)) return SendErrorMessage(playerid, "You already have this weapon."); if (PlayerData[playerid][pHoldWeapon] > 0) return SendErrorMessage(playerid, "You're already holding a weapon (press 'N' to put it away)."); HoldWeapon(playerid, 34); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out an empty Sniper and holds it.", ReturnName(playerid, 0)); SendServerMessage(playerid, "Press 'N' to put the gun away. You must attach a magazine to use it."); } else if (!strcmp(weapon, "Golf Club", true)) { if (!Inventory_HasItem(playerid, "Golf Club")) return SendErrorMessage(playerid, "You don't have this weapon."); if (PlayerHasWeapon(playerid, 2)) return SendErrorMessage(playerid, "You already have this weapon."); GiveWeaponToPlayer(playerid, 2, 1); Inventory_Remove(playerid, "Golf Club"); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has equipped a Golf Club from their inventory.", ReturnName(playerid, 0)); } else if (!strcmp(weapon, "Knife", true)) { if (!Inventory_HasItem(playerid, "Knife")) return SendErrorMessage(playerid, "You don't have this weapon."); if (PlayerHasWeapon(playerid, 4)) return SendErrorMessage(playerid, "You already have this weapon."); GiveWeaponToPlayer(playerid, 4, 1); Inventory_Remove(playerid, "Knife"); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has equipped a Knife from their inventory.", ReturnName(playerid, 0)); } else if (!strcmp(weapon, "Shovel", true)) { if (!Inventory_HasItem(playerid, "Shovel")) return SendErrorMessage(playerid, "You don't have this weapon."); if (PlayerHasWeapon(playerid, 6)) return SendErrorMessage(playerid, "You already have this weapon."); GiveWeaponToPlayer(playerid, 6, 1); Inventory_Remove(playerid, "Shovel"); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has equipped a Shovel from their inventory.", ReturnName(playerid, 0)); } else if (!strcmp(weapon, "Katana", true)) { if (!Inventory_HasItem(playerid, "Katana")) return SendErrorMessage(playerid, "You don't have this weapon."); if (PlayerHasWeapon(playerid, 8)) return SendErrorMessage(playerid, "You already have this weapon."); GiveWeaponToPlayer(playerid, 8, 1); Inventory_Remove(playerid, "Katana"); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has equipped a Katana from their inventory.", ReturnName(playerid, 0)); } return 1; } stock SetPlayerInPrison(playerid) { new idx = random(sizeof(g_arrPrisonSpawns)); SetPlayerPosEx(playerid, g_arrPrisonSpawns[idx][0], g_arrPrisonSpawns[idx][1], g_arrPrisonSpawns[idx][2] + 0.3); SetPlayerFacingAngle(playerid, g_arrPrisonSpawns[idx][3]); SetPlayerInterior(playerid, 5); SetPlayerVirtualWorld(playerid, PRISON_WORLD); ShowHungerTextdraw(playerid, 0); SetCameraBehindPlayer(playerid); } stock ViewCharges(playerid, name[]) { new string[128]; format(string, sizeof(string), "SELECT * FROM `warrants` WHERE `Suspect` = '%s' ORDER BY `ID` DESC", SQL_ReturnEscaped(name)); mysql_tquery(g_iHandle, string, "OnViewCharges", "ds", playerid, name); return 1; } stock AddWarrant(targetid, playerid, const description[]) { new string[255]; format(string, sizeof(string), "INSERT INTO `warrants` (`Suspect`, `Username`, `Date`, `Description`) VALUES('%s', '%s', '%s', '%s')", ReturnName(targetid), ReturnName(playerid), ReturnDate(), SQL_ReturnEscaped(description)); mysql_tquery(g_iHandle, string); } stock GetPlayerLocationEx(playerid, &Float:fX, &Float:fY, &Float:fZ) { new id = -1; if ((id = House_Inside(playerid)) != -1) { fX = HouseData[id][housePos][0]; fY = HouseData[id][housePos][1]; fZ = HouseData[id][housePos][2]; } else if ((id = Business_Inside(playerid)) != -1) { fX = BusinessData[id][bizPos][0]; fY = BusinessData[id][bizPos][1]; fZ = BusinessData[id][bizPos][2]; } else if ((id = Entrance_Inside(playerid)) != -1) { fX = EntranceData[id][entrancePos][0]; fY = EntranceData[id][entrancePos][1]; fZ = EntranceData[id][entrancePos][2]; } else GetPlayerPos(playerid, fX, fY, fZ); return 1; } stock GetPlayerLocation(playerid) { new Float:fX, Float:fY, Float:fZ, string[32], id = -1; if ((id = House_Inside(playerid)) != -1) { fX = HouseData[id][housePos][0]; fY = HouseData[id][housePos][1]; fZ = HouseData[id][housePos][2]; } else if ((id = Business_Inside(playerid)) != -1) { fX = BusinessData[id][bizPos][0]; fY = BusinessData[id][bizPos][1]; fZ = BusinessData[id][bizPos][2]; } else if ((id = Entrance_Inside(playerid)) != -1) { fX = EntranceData[id][entrancePos][0]; fY = EntranceData[id][entrancePos][1]; fZ = EntranceData[id][entrancePos][2]; } else GetPlayerPos(playerid, fX, fY, fZ); format(string, 32, GetLocation(fX, fY, fZ)); return string; } stock GetLocation(Float:fX, Float:fY, Float:fZ) { enum e_ZoneData { e_ZoneName[32 char], Float:e_ZoneArea[6] }; new const g_arrZoneData[][e_ZoneData] = { {!"The Big Ear", {-410.00, 1403.30, -3.00, -137.90, 1681.20, 200.00}}, {!"Aldea Malvada", {-1372.10, 2498.50, 0.00, -1277.50, 2615.30, 200.00}}, {!"Angel Pine", {-2324.90, -2584.20, -6.10, -1964.20, -2212.10, 200.00}}, {!"Arco del Oeste", {-901.10, 2221.80, 0.00, -592.00, 2571.90, 200.00}}, {!"Avispa Country Club", {-2646.40, -355.40, 0.00, -2270.00, -222.50, 200.00}}, {!"Avispa Country Club", {-2831.80, -430.20, -6.10, -2646.40, -222.50, 200.00}}, {!"Avispa Country Club", {-2361.50, -417.10, 0.00, -2270.00, -355.40, 200.00}}, {!"Avispa Country Club", {-2667.80, -302.10, -28.80, -2646.40, -262.30, 71.10}}, {!"Avispa Country Club", {-2470.00, -355.40, 0.00, -2270.00, -318.40, 46.10}}, {!"Avispa Country Club", {-2550.00, -355.40, 0.00, -2470.00, -318.40, 39.70}}, {!"Back o Beyond", {-1166.90, -2641.10, 0.00, -321.70, -1856.00, 200.00}}, {!"Battery Point", {-2741.00, 1268.40, -4.50, -2533.00, 1490.40, 200.00}}, {!"Bayside", {-2741.00, 2175.10, 0.00, -2353.10, 2722.70, 200.00}}, {!"Bayside Marina", {-2353.10, 2275.70, 0.00, -2153.10, 2475.70, 200.00}}, {!"Beacon Hill", {-399.60, -1075.50, -1.40, -319.00, -977.50, 198.50}}, {!"Blackfield", {964.30, 1203.20, -89.00, 1197.30, 1403.20, 110.90}}, {!"Blackfield", {964.30, 1403.20, -89.00, 1197.30, 1726.20, 110.90}}, {!"Blackfield Chapel", {1375.60, 596.30, -89.00, 1558.00, 823.20, 110.90}}, {!"Blackfield Chapel", {1325.60, 596.30, -89.00, 1375.60, 795.00, 110.90}}, {!"Blackfield Intersection", {1197.30, 1044.60, -89.00, 1277.00, 1163.30, 110.90}}, {!"Blackfield Intersection", {1166.50, 795.00, -89.00, 1375.60, 1044.60, 110.90}}, {!"Blackfield Intersection", {1277.00, 1044.60, -89.00, 1315.30, 1087.60, 110.90}}, {!"Blackfield Intersection", {1375.60, 823.20, -89.00, 1457.30, 919.40, 110.90}}, {!"Blueberry", {104.50, -220.10, 2.30, 349.60, 152.20, 200.00}}, {!"Blueberry", {19.60, -404.10, 3.80, 349.60, -220.10, 200.00}}, {!"Blueberry Acres", {-319.60, -220.10, 0.00, 104.50, 293.30, 200.00}}, {!"Caligula's Palace", {2087.30, 1543.20, -89.00, 2437.30, 1703.20, 110.90}}, {!"Caligula's Palace", {2137.40, 1703.20, -89.00, 2437.30, 1783.20, 110.90}}, {!"Calton Heights", {-2274.10, 744.10, -6.10, -1982.30, 1358.90, 200.00}}, {!"Chinatown", {-2274.10, 578.30, -7.60, -2078.60, 744.10, 200.00}}, {!"City Hall", {-2867.80, 277.40, -9.10, -2593.40, 458.40, 200.00}}, {!"Come-A-Lot", {2087.30, 943.20, -89.00, 2623.10, 1203.20, 110.90}}, {!"Commerce", {1323.90, -1842.20, -89.00, 1701.90, -1722.20, 110.90}}, {!"Commerce", {1323.90, -1722.20, -89.00, 1440.90, -1577.50, 110.90}}, {!"Commerce", {1370.80, -1577.50, -89.00, 1463.90, -1384.90, 110.90}}, {!"Commerce", {1463.90, -1577.50, -89.00, 1667.90, -1430.80, 110.90}}, {!"Commerce", {1583.50, -1722.20, -89.00, 1758.90, -1577.50, 110.90}}, {!"Commerce", {1667.90, -1577.50, -89.00, 1812.60, -1430.80, 110.90}}, {!"Conference Center", {1046.10, -1804.20, -89.00, 1323.90, -1722.20, 110.90}}, {!"Conference Center", {1073.20, -1842.20, -89.00, 1323.90, -1804.20, 110.90}}, {!"Cranberry Station", {-2007.80, 56.30, 0.00, -1922.00, 224.70, 100.00}}, {!"Creek", {2749.90, 1937.20, -89.00, 2921.60, 2669.70, 110.90}}, {!"Dillimore", {580.70, -674.80, -9.50, 861.00, -404.70, 200.00}}, {!"Doherty", {-2270.00, -324.10, -0.00, -1794.90, -222.50, 200.00}}, {!"Doherty", {-2173.00, -222.50, -0.00, -1794.90, 265.20, 200.00}}, {!"Downtown", {-1982.30, 744.10, -6.10, -1871.70, 1274.20, 200.00}}, {!"Downtown", {-1871.70, 1176.40, -4.50, -1620.30, 1274.20, 200.00}}, {!"Downtown", {-1700.00, 744.20, -6.10, -1580.00, 1176.50, 200.00}}, {!"Downtown", {-1580.00, 744.20, -6.10, -1499.80, 1025.90, 200.00}}, {!"Downtown", {-2078.60, 578.30, -7.60, -1499.80, 744.20, 200.00}}, {!"Downtown", {-1993.20, 265.20, -9.10, -1794.90, 578.30, 200.00}}, {!"Downtown Los Santos", {1463.90, -1430.80, -89.00, 1724.70, -1290.80, 110.90}}, {!"Downtown Los Santos", {1724.70, -1430.80, -89.00, 1812.60, -1250.90, 110.90}}, {!"Downtown Los Santos", {1463.90, -1290.80, -89.00, 1724.70, -1150.80, 110.90}}, {!"Downtown Los Santos", {1370.80, -1384.90, -89.00, 1463.90, -1170.80, 110.90}}, {!"Downtown Los Santos", {1724.70, -1250.90, -89.00, 1812.60, -1150.80, 110.90}}, {!"Downtown Los Santos", {1370.80, -1170.80, -89.00, 1463.90, -1130.80, 110.90}}, {!"Downtown Los Santos", {1378.30, -1130.80, -89.00, 1463.90, -1026.30, 110.90}}, {!"Downtown Los Santos", {1391.00, -1026.30, -89.00, 1463.90, -926.90, 110.90}}, {!"Downtown Los Santos", {1507.50, -1385.20, 110.90, 1582.50, -1325.30, 335.90}}, {!"East Beach", {2632.80, -1852.80, -89.00, 2959.30, -1668.10, 110.90}}, {!"East Beach", {2632.80, -1668.10, -89.00, 2747.70, -1393.40, 110.90}}, {!"East Beach", {2747.70, -1668.10, -89.00, 2959.30, -1498.60, 110.90}}, {!"East Beach", {2747.70, -1498.60, -89.00, 2959.30, -1120.00, 110.90}}, {!"East Los Santos", {2421.00, -1628.50, -89.00, 2632.80, -1454.30, 110.90}}, {!"East Los Santos", {2222.50, -1628.50, -89.00, 2421.00, -1494.00, 110.90}}, {!"East Los Santos", {2266.20, -1494.00, -89.00, 2381.60, -1372.00, 110.90}}, {!"East Los Santos", {2381.60, -1494.00, -89.00, 2421.00, -1454.30, 110.90}}, {!"East Los Santos", {2281.40, -1372.00, -89.00, 2381.60, -1135.00, 110.90}}, {!"East Los Santos", {2381.60, -1454.30, -89.00, 2462.10, -1135.00, 110.90}}, {!"East Los Santos", {2462.10, -1454.30, -89.00, 2581.70, -1135.00, 110.90}}, {!"Easter Basin", {-1794.90, 249.90, -9.10, -1242.90, 578.30, 200.00}}, {!"Easter Basin", {-1794.90, -50.00, -0.00, -1499.80, 249.90, 200.00}}, {!"Easter Bay Airport", {-1499.80, -50.00, -0.00, -1242.90, 249.90, 200.00}}, {!"Easter Bay Airport", {-1794.90, -730.10, -3.00, -1213.90, -50.00, 200.00}}, {!"Easter Bay Airport", {-1213.90, -730.10, 0.00, -1132.80, -50.00, 200.00}}, {!"Easter Bay Airport", {-1242.90, -50.00, 0.00, -1213.90, 578.30, 200.00}}, {!"Easter Bay Airport", {-1213.90, -50.00, -4.50, -947.90, 578.30, 200.00}}, {!"Easter Bay Airport", {-1315.40, -405.30, 15.40, -1264.40, -209.50, 25.40}}, {!"Easter Bay Airport", {-1354.30, -287.30, 15.40, -1315.40, -209.50, 25.40}}, {!"Easter Bay Airport", {-1490.30, -209.50, 15.40, -1264.40, -148.30, 25.40}}, {!"Easter Bay Chemicals", {-1132.80, -768.00, 0.00, -956.40, -578.10, 200.00}}, {!"Easter Bay Chemicals", {-1132.80, -787.30, 0.00, -956.40, -768.00, 200.00}}, {!"El Castillo del Diablo", {-464.50, 2217.60, 0.00, -208.50, 2580.30, 200.00}}, {!"El Castillo del Diablo", {-208.50, 2123.00, -7.60, 114.00, 2337.10, 200.00}}, {!"El Castillo del Diablo", {-208.50, 2337.10, 0.00, 8.40, 2487.10, 200.00}}, {!"El Corona", {1812.60, -2179.20, -89.00, 1970.60, -1852.80, 110.90}}, {!"El Corona", {1692.60, -2179.20, -89.00, 1812.60, -1842.20, 110.90}}, {!"El Quebrados", {-1645.20, 2498.50, 0.00, -1372.10, 2777.80, 200.00}}, {!"Esplanade East", {-1620.30, 1176.50, -4.50, -1580.00, 1274.20, 200.00}}, {!"Esplanade East", {-1580.00, 1025.90, -6.10, -1499.80, 1274.20, 200.00}}, {!"Esplanade East", {-1499.80, 578.30, -79.60, -1339.80, 1274.20, 20.30}}, {!"Esplanade North", {-2533.00, 1358.90, -4.50, -1996.60, 1501.20, 200.00}}, {!"Esplanade North", {-1996.60, 1358.90, -4.50, -1524.20, 1592.50, 200.00}}, {!"Esplanade North", {-1982.30, 1274.20, -4.50, -1524.20, 1358.90, 200.00}}, {!"Fallen Tree", {-792.20, -698.50, -5.30, -452.40, -380.00, 200.00}}, {!"Fallow Bridge", {434.30, 366.50, 0.00, 603.00, 555.60, 200.00}}, {!"Fern Ridge", {508.10, -139.20, 0.00, 1306.60, 119.50, 200.00}}, {!"Financial", {-1871.70, 744.10, -6.10, -1701.30, 1176.40, 300.00}}, {!"Fisher's Lagoon", {1916.90, -233.30, -100.00, 2131.70, 13.80, 200.00}}, {!"Flint Intersection", {-187.70, -1596.70, -89.00, 17.00, -1276.60, 110.90}}, {!"Flint Range", {-594.10, -1648.50, 0.00, -187.70, -1276.60, 200.00}}, {!"Fort Carson", {-376.20, 826.30, -3.00, 123.70, 1220.40, 200.00}}, {!"Foster Valley", {-2270.00, -430.20, -0.00, -2178.60, -324.10, 200.00}}, {!"Foster Valley", {-2178.60, -599.80, -0.00, -1794.90, -324.10, 200.00}}, {!"Foster Valley", {-2178.60, -1115.50, 0.00, -1794.90, -599.80, 200.00}}, {!"Foster Valley", {-2178.60, -1250.90, 0.00, -1794.90, -1115.50, 200.00}}, {!"Frederick Bridge", {2759.20, 296.50, 0.00, 2774.20, 594.70, 200.00}}, {!"Gant Bridge", {-2741.40, 1659.60, -6.10, -2616.40, 2175.10, 200.00}}, {!"Gant Bridge", {-2741.00, 1490.40, -6.10, -2616.40, 1659.60, 200.00}}, {!"Ganton", {2222.50, -1852.80, -89.00, 2632.80, -1722.30, 110.90}}, {!"Ganton", {2222.50, -1722.30, -89.00, 2632.80, -1628.50, 110.90}}, {!"Garcia", {-2411.20, -222.50, -0.00, -2173.00, 265.20, 200.00}}, {!"Garcia", {-2395.10, -222.50, -5.30, -2354.00, -204.70, 200.00}}, {!"Garver Bridge", {-1339.80, 828.10, -89.00, -1213.90, 1057.00, 110.90}}, {!"Garver Bridge", {-1213.90, 950.00, -89.00, -1087.90, 1178.90, 110.90}}, {!"Garver Bridge", {-1499.80, 696.40, -179.60, -1339.80, 925.30, 20.30}}, {!"Glen Park", {1812.60, -1449.60, -89.00, 1996.90, -1350.70, 110.90}}, {!"Glen Park", {1812.60, -1100.80, -89.00, 1994.30, -973.30, 110.90}}, {!"Glen Park", {1812.60, -1350.70, -89.00, 2056.80, -1100.80, 110.90}}, {!"Green Palms", {176.50, 1305.40, -3.00, 338.60, 1520.70, 200.00}}, {!"Greenglass College", {964.30, 1044.60, -89.00, 1197.30, 1203.20, 110.90}}, {!"Greenglass College", {964.30, 930.80, -89.00, 1166.50, 1044.60, 110.90}}, {!"Hampton Barns", {603.00, 264.30, 0.00, 761.90, 366.50, 200.00}}, {!"Hankypanky Point", {2576.90, 62.10, 0.00, 2759.20, 385.50, 200.00}}, {!"Harry Gold Parkway", {1777.30, 863.20, -89.00, 1817.30, 2342.80, 110.90}}, {!"Hashbury", {-2593.40, -222.50, -0.00, -2411.20, 54.70, 200.00}}, {!"Hilltop Farm", {967.30, -450.30, -3.00, 1176.70, -217.90, 200.00}}, {!"Hunter Quarry", {337.20, 710.80, -115.20, 860.50, 1031.70, 203.70}}, {!"Idlewood", {1812.60, -1852.80, -89.00, 1971.60, -1742.30, 110.90}}, {!"Idlewood", {1812.60, -1742.30, -89.00, 1951.60, -1602.30, 110.90}}, {!"Idlewood", {1951.60, -1742.30, -89.00, 2124.60, -1602.30, 110.90}}, {!"Idlewood", {1812.60, -1602.30, -89.00, 2124.60, -1449.60, 110.90}}, {!"Idlewood", {2124.60, -1742.30, -89.00, 2222.50, -1494.00, 110.90}}, {!"Idlewood", {1971.60, -1852.80, -89.00, 2222.50, -1742.30, 110.90}}, {!"Jefferson", {1996.90, -1449.60, -89.00, 2056.80, -1350.70, 110.90}}, {!"Jefferson", {2124.60, -1494.00, -89.00, 2266.20, -1449.60, 110.90}}, {!"Jefferson", {2056.80, -1372.00, -89.00, 2281.40, -1210.70, 110.90}}, {!"Jefferson", {2056.80, -1210.70, -89.00, 2185.30, -1126.30, 110.90}}, {!"Jefferson", {2185.30, -1210.70, -89.00, 2281.40, -1154.50, 110.90}}, {!"Jefferson", {2056.80, -1449.60, -89.00, 2266.20, -1372.00, 110.90}}, {!"Julius Thruway East", {2623.10, 943.20, -89.00, 2749.90, 1055.90, 110.90}}, {!"Julius Thruway East", {2685.10, 1055.90, -89.00, 2749.90, 2626.50, 110.90}}, {!"Julius Thruway East", {2536.40, 2442.50, -89.00, 2685.10, 2542.50, 110.90}}, {!"Julius Thruway East", {2625.10, 2202.70, -89.00, 2685.10, 2442.50, 110.90}}, {!"Julius Thruway North", {2498.20, 2542.50, -89.00, 2685.10, 2626.50, 110.90}}, {!"Julius Thruway North", {2237.40, 2542.50, -89.00, 2498.20, 2663.10, 110.90}}, {!"Julius Thruway North", {2121.40, 2508.20, -89.00, 2237.40, 2663.10, 110.90}}, {!"Julius Thruway North", {1938.80, 2508.20, -89.00, 2121.40, 2624.20, 110.90}}, {!"Julius Thruway North", {1534.50, 2433.20, -89.00, 1848.40, 2583.20, 110.90}}, {!"Julius Thruway North", {1848.40, 2478.40, -89.00, 1938.80, 2553.40, 110.90}}, {!"Julius Thruway North", {1704.50, 2342.80, -89.00, 1848.40, 2433.20, 110.90}}, {!"Julius Thruway North", {1377.30, 2433.20, -89.00, 1534.50, 2507.20, 110.90}}, {!"Julius Thruway South", {1457.30, 823.20, -89.00, 2377.30, 863.20, 110.90}}, {!"Julius Thruway South", {2377.30, 788.80, -89.00, 2537.30, 897.90, 110.90}}, {!"Julius Thruway West", {1197.30, 1163.30, -89.00, 1236.60, 2243.20, 110.90}}, {!"Julius Thruway West", {1236.60, 2142.80, -89.00, 1297.40, 2243.20, 110.90}}, {!"Juniper Hill", {-2533.00, 578.30, -7.60, -2274.10, 968.30, 200.00}}, {!"Juniper Hollow", {-2533.00, 968.30, -6.10, -2274.10, 1358.90, 200.00}}, {!"K.A.C.C. Military Fuels", {2498.20, 2626.50, -89.00, 2749.90, 2861.50, 110.90}}, {!"Kincaid Bridge", {-1339.80, 599.20, -89.00, -1213.90, 828.10, 110.90}}, {!"Kincaid Bridge", {-1213.90, 721.10, -89.00, -1087.90, 950.00, 110.90}}, {!"Kincaid Bridge", {-1087.90, 855.30, -89.00, -961.90, 986.20, 110.90}}, {!"King's", {-2329.30, 458.40, -7.60, -1993.20, 578.30, 200.00}}, {!"King's", {-2411.20, 265.20, -9.10, -1993.20, 373.50, 200.00}}, {!"King's", {-2253.50, 373.50, -9.10, -1993.20, 458.40, 200.00}}, {!"LVA Freight Depot", {1457.30, 863.20, -89.00, 1777.40, 1143.20, 110.90}}, {!"LVA Freight Depot", {1375.60, 919.40, -89.00, 1457.30, 1203.20, 110.90}}, {!"LVA Freight Depot", {1277.00, 1087.60, -89.00, 1375.60, 1203.20, 110.90}}, {!"LVA Freight Depot", {1315.30, 1044.60, -89.00, 1375.60, 1087.60, 110.90}}, {!"LVA Freight Depot", {1236.60, 1163.40, -89.00, 1277.00, 1203.20, 110.90}}, {!"Las Barrancas", {-926.10, 1398.70, -3.00, -719.20, 1634.60, 200.00}}, {!"Las Brujas", {-365.10, 2123.00, -3.00, -208.50, 2217.60, 200.00}}, {!"Las Colinas", {1994.30, -1100.80, -89.00, 2056.80, -920.80, 110.90}}, {!"Las Colinas", {2056.80, -1126.30, -89.00, 2126.80, -920.80, 110.90}}, {!"Las Colinas", {2185.30, -1154.50, -89.00, 2281.40, -934.40, 110.90}}, {!"Las Colinas", {2126.80, -1126.30, -89.00, 2185.30, -934.40, 110.90}}, {!"Las Colinas", {2747.70, -1120.00, -89.00, 2959.30, -945.00, 110.90}}, {!"Las Colinas", {2632.70, -1135.00, -89.00, 2747.70, -945.00, 110.90}}, {!"Las Colinas", {2281.40, -1135.00, -89.00, 2632.70, -945.00, 110.90}}, {!"Las Payasadas", {-354.30, 2580.30, 2.00, -133.60, 2816.80, 200.00}}, {!"Las Venturas Airport", {1236.60, 1203.20, -89.00, 1457.30, 1883.10, 110.90}}, {!"Las Venturas Airport", {1457.30, 1203.20, -89.00, 1777.30, 1883.10, 110.90}}, {!"Las Venturas Airport", {1457.30, 1143.20, -89.00, 1777.40, 1203.20, 110.90}}, {!"Las Venturas Airport", {1515.80, 1586.40, -12.50, 1729.90, 1714.50, 87.50}}, {!"Last Dime Motel", {1823.00, 596.30, -89.00, 1997.20, 823.20, 110.90}}, {!"Leafy Hollow", {-1166.90, -1856.00, 0.00, -815.60, -1602.00, 200.00}}, {!"Liberty City", {-1000.00, 400.00, 1300.00, -700.00, 600.00, 1400.00}}, {!"Lil' Probe Inn", {-90.20, 1286.80, -3.00, 153.80, 1554.10, 200.00}}, {!"Linden Side", {2749.90, 943.20, -89.00, 2923.30, 1198.90, 110.90}}, {!"Linden Station", {2749.90, 1198.90, -89.00, 2923.30, 1548.90, 110.90}}, {!"Linden Station", {2811.20, 1229.50, -39.50, 2861.20, 1407.50, 60.40}}, {!"Little Mexico", {1701.90, -1842.20, -89.00, 1812.60, -1722.20, 110.90}}, {!"Little Mexico", {1758.90, -1722.20, -89.00, 1812.60, -1577.50, 110.90}}, {!"Los Flores", {2581.70, -1454.30, -89.00, 2632.80, -1393.40, 110.90}}, {!"Los Flores", {2581.70, -1393.40, -89.00, 2747.70, -1135.00, 110.90}}, {!"Los Santos International", {1249.60, -2394.30, -89.00, 1852.00, -2179.20, 110.90}}, {!"Los Santos International", {1852.00, -2394.30, -89.00, 2089.00, -2179.20, 110.90}}, {!"Los Santos International", {1382.70, -2730.80, -89.00, 2201.80, -2394.30, 110.90}}, {!"Los Santos International", {1974.60, -2394.30, -39.00, 2089.00, -2256.50, 60.90}}, {!"Los Santos International", {1400.90, -2669.20, -39.00, 2189.80, -2597.20, 60.90}}, {!"Los Santos International", {2051.60, -2597.20, -39.00, 2152.40, -2394.30, 60.90}}, {!"Marina", {647.70, -1804.20, -89.00, 851.40, -1577.50, 110.90}}, {!"Marina", {647.70, -1577.50, -89.00, 807.90, -1416.20, 110.90}}, {!"Marina", {807.90, -1577.50, -89.00, 926.90, -1416.20, 110.90}}, {!"Market", {787.40, -1416.20, -89.00, 1072.60, -1310.20, 110.90}}, {!"Market", {952.60, -1310.20, -89.00, 1072.60, -1130.80, 110.90}}, {!"Market", {1072.60, -1416.20, -89.00, 1370.80, -1130.80, 110.90}}, {!"Market", {926.90, -1577.50, -89.00, 1370.80, -1416.20, 110.90}}, {!"Market Station", {787.40, -1410.90, -34.10, 866.00, -1310.20, 65.80}}, {!"Martin Bridge", {-222.10, 293.30, 0.00, -122.10, 476.40, 200.00}}, {!"Missionary Hill", {-2994.40, -811.20, 0.00, -2178.60, -430.20, 200.00}}, {!"Montgomery", {1119.50, 119.50, -3.00, 1451.40, 493.30, 200.00}}, {!"Montgomery", {1451.40, 347.40, -6.10, 1582.40, 420.80, 200.00}}, {!"Montgomery Intersection", {1546.60, 208.10, 0.00, 1745.80, 347.40, 200.00}}, {!"Montgomery Intersection", {1582.40, 347.40, 0.00, 1664.60, 401.70, 200.00}}, {!"Mulholland", {1414.00, -768.00, -89.00, 1667.60, -452.40, 110.90}}, {!"Mulholland", {1281.10, -452.40, -89.00, 1641.10, -290.90, 110.90}}, {!"Mulholland", {1269.10, -768.00, -89.00, 1414.00, -452.40, 110.90}}, {!"Mulholland", {1357.00, -926.90, -89.00, 1463.90, -768.00, 110.90}}, {!"Mulholland", {1318.10, -910.10, -89.00, 1357.00, -768.00, 110.90}}, {!"Mulholland", {1169.10, -910.10, -89.00, 1318.10, -768.00, 110.90}}, {!"Mulholland", {768.60, -954.60, -89.00, 952.60, -860.60, 110.90}}, {!"Mulholland", {687.80, -860.60, -89.00, 911.80, -768.00, 110.90}}, {!"Mulholland", {737.50, -768.00, -89.00, 1142.20, -674.80, 110.90}}, {!"Mulholland", {1096.40, -910.10, -89.00, 1169.10, -768.00, 110.90}}, {!"Mulholland", {952.60, -937.10, -89.00, 1096.40, -860.60, 110.90}}, {!"Mulholland", {911.80, -860.60, -89.00, 1096.40, -768.00, 110.90}}, {!"Mulholland", {861.00, -674.80, -89.00, 1156.50, -600.80, 110.90}}, {!"Mulholland Intersection", {1463.90, -1150.80, -89.00, 1812.60, -768.00, 110.90}}, {!"North Rock", {2285.30, -768.00, 0.00, 2770.50, -269.70, 200.00}}, {!"Ocean Docks", {2373.70, -2697.00, -89.00, 2809.20, -2330.40, 110.90}}, {!"Ocean Docks", {2201.80, -2418.30, -89.00, 2324.00, -2095.00, 110.90}}, {!"Ocean Docks", {2324.00, -2302.30, -89.00, 2703.50, -2145.10, 110.90}}, {!"Ocean Docks", {2089.00, -2394.30, -89.00, 2201.80, -2235.80, 110.90}}, {!"Ocean Docks", {2201.80, -2730.80, -89.00, 2324.00, -2418.30, 110.90}}, {!"Ocean Docks", {2703.50, -2302.30, -89.00, 2959.30, -2126.90, 110.90}}, {!"Ocean Docks", {2324.00, -2145.10, -89.00, 2703.50, -2059.20, 110.90}}, {!"Ocean Flats", {-2994.40, 277.40, -9.10, -2867.80, 458.40, 200.00}}, {!"Ocean Flats", {-2994.40, -222.50, -0.00, -2593.40, 277.40, 200.00}}, {!"Ocean Flats", {-2994.40, -430.20, -0.00, -2831.80, -222.50, 200.00}}, {!"Octane Springs", {338.60, 1228.50, 0.00, 664.30, 1655.00, 200.00}}, {!"Old Venturas Strip", {2162.30, 2012.10, -89.00, 2685.10, 2202.70, 110.90}}, {!"Palisades", {-2994.40, 458.40, -6.10, -2741.00, 1339.60, 200.00}}, {!"Palomino Creek", {2160.20, -149.00, 0.00, 2576.90, 228.30, 200.00}}, {!"Paradiso", {-2741.00, 793.40, -6.10, -2533.00, 1268.40, 200.00}}, {!"Pershing Square", {1440.90, -1722.20, -89.00, 1583.50, -1577.50, 110.90}}, {!"Pilgrim", {2437.30, 1383.20, -89.00, 2624.40, 1783.20, 110.90}}, {!"Pilgrim", {2624.40, 1383.20, -89.00, 2685.10, 1783.20, 110.90}}, {!"Pilson Intersection", {1098.30, 2243.20, -89.00, 1377.30, 2507.20, 110.90}}, {!"Pirates in Men's Pants", {1817.30, 1469.20, -89.00, 2027.40, 1703.20, 110.90}}, {!"Playa del Seville", {2703.50, -2126.90, -89.00, 2959.30, -1852.80, 110.90}}, {!"Prickle Pine", {1534.50, 2583.20, -89.00, 1848.40, 2863.20, 110.90}}, {!"Prickle Pine", {1117.40, 2507.20, -89.00, 1534.50, 2723.20, 110.90}}, {!"Prickle Pine", {1848.40, 2553.40, -89.00, 1938.80, 2863.20, 110.90}}, {!"Prickle Pine", {1938.80, 2624.20, -89.00, 2121.40, 2861.50, 110.90}}, {!"Queens", {-2533.00, 458.40, 0.00, -2329.30, 578.30, 200.00}}, {!"Queens", {-2593.40, 54.70, 0.00, -2411.20, 458.40, 200.00}}, {!"Queens", {-2411.20, 373.50, 0.00, -2253.50, 458.40, 200.00}}, {!"Randolph Industrial Estate", {1558.00, 596.30, -89.00, 1823.00, 823.20, 110.90}}, {!"Redsands East", {1817.30, 2011.80, -89.00, 2106.70, 2202.70, 110.90}}, {!"Redsands East", {1817.30, 2202.70, -89.00, 2011.90, 2342.80, 110.90}}, {!"Redsands East", {1848.40, 2342.80, -89.00, 2011.90, 2478.40, 110.90}}, {!"Redsands West", {1236.60, 1883.10, -89.00, 1777.30, 2142.80, 110.90}}, {!"Redsands West", {1297.40, 2142.80, -89.00, 1777.30, 2243.20, 110.90}}, {!"Redsands West", {1377.30, 2243.20, -89.00, 1704.50, 2433.20, 110.90}}, {!"Redsands West", {1704.50, 2243.20, -89.00, 1777.30, 2342.80, 110.90}}, {!"Regular Tom", {-405.70, 1712.80, -3.00, -276.70, 1892.70, 200.00}}, {!"Richman", {647.50, -1118.20, -89.00, 787.40, -954.60, 110.90}}, {!"Richman", {647.50, -954.60, -89.00, 768.60, -860.60, 110.90}}, {!"Richman", {225.10, -1369.60, -89.00, 334.50, -1292.00, 110.90}}, {!"Richman", {225.10, -1292.00, -89.00, 466.20, -1235.00, 110.90}}, {!"Richman", {72.60, -1404.90, -89.00, 225.10, -1235.00, 110.90}}, {!"Richman", {72.60, -1235.00, -89.00, 321.30, -1008.10, 110.90}}, {!"Richman", {321.30, -1235.00, -89.00, 647.50, -1044.00, 110.90}}, {!"Richman", {321.30, -1044.00, -89.00, 647.50, -860.60, 110.90}}, {!"Richman", {321.30, -860.60, -89.00, 687.80, -768.00, 110.90}}, {!"Richman", {321.30, -768.00, -89.00, 700.70, -674.80, 110.90}}, {!"Robada Intersection", {-1119.00, 1178.90, -89.00, -862.00, 1351.40, 110.90}}, {!"Roca Escalante", {2237.40, 2202.70, -89.00, 2536.40, 2542.50, 110.90}}, {!"Roca Escalante", {2536.40, 2202.70, -89.00, 2625.10, 2442.50, 110.90}}, {!"Rockshore East", {2537.30, 676.50, -89.00, 2902.30, 943.20, 110.90}}, {!"Rockshore West", {1997.20, 596.30, -89.00, 2377.30, 823.20, 110.90}}, {!"Rockshore West", {2377.30, 596.30, -89.00, 2537.30, 788.80, 110.90}}, {!"Rodeo", {72.60, -1684.60, -89.00, 225.10, -1544.10, 110.90}}, {!"Rodeo", {72.60, -1544.10, -89.00, 225.10, -1404.90, 110.90}}, {!"Rodeo", {225.10, -1684.60, -89.00, 312.80, -1501.90, 110.90}}, {!"Rodeo", {225.10, -1501.90, -89.00, 334.50, -1369.60, 110.90}}, {!"Rodeo", {334.50, -1501.90, -89.00, 422.60, -1406.00, 110.90}}, {!"Rodeo", {312.80, -1684.60, -89.00, 422.60, -1501.90, 110.90}}, {!"Rodeo", {422.60, -1684.60, -89.00, 558.00, -1570.20, 110.90}}, {!"Rodeo", {558.00, -1684.60, -89.00, 647.50, -1384.90, 110.90}}, {!"Rodeo", {466.20, -1570.20, -89.00, 558.00, -1385.00, 110.90}}, {!"Rodeo", {422.60, -1570.20, -89.00, 466.20, -1406.00, 110.90}}, {!"Rodeo", {466.20, -1385.00, -89.00, 647.50, -1235.00, 110.90}}, {!"Rodeo", {334.50, -1406.00, -89.00, 466.20, -1292.00, 110.90}}, {!"Royal Casino", {2087.30, 1383.20, -89.00, 2437.30, 1543.20, 110.90}}, {!"San Andreas Sound", {2450.30, 385.50, -100.00, 2759.20, 562.30, 200.00}}, {!"Santa Flora", {-2741.00, 458.40, -7.60, -2533.00, 793.40, 200.00}}, {!"Santa Maria Beach", {342.60, -2173.20, -89.00, 647.70, -1684.60, 110.90}}, {!"Santa Maria Beach", {72.60, -2173.20, -89.00, 342.60, -1684.60, 110.90}}, {!"Shady Cabin", {-1632.80, -2263.40, -3.00, -1601.30, -2231.70, 200.00}}, {!"Shady Creeks", {-1820.60, -2643.60, -8.00, -1226.70, -1771.60, 200.00}}, {!"Shady Creeks", {-2030.10, -2174.80, -6.10, -1820.60, -1771.60, 200.00}}, {!"Sobell Rail Yards", {2749.90, 1548.90, -89.00, 2923.30, 1937.20, 110.90}}, {!"Spinybed", {2121.40, 2663.10, -89.00, 2498.20, 2861.50, 110.90}}, {!"Starfish Casino", {2437.30, 1783.20, -89.00, 2685.10, 2012.10, 110.90}}, {!"Starfish Casino", {2437.30, 1858.10, -39.00, 2495.00, 1970.80, 60.90}}, {!"Starfish Casino", {2162.30, 1883.20, -89.00, 2437.30, 2012.10, 110.90}}, {!"Temple", {1252.30, -1130.80, -89.00, 1378.30, -1026.30, 110.90}}, {!"Temple", {1252.30, -1026.30, -89.00, 1391.00, -926.90, 110.90}}, {!"Temple", {1252.30, -926.90, -89.00, 1357.00, -910.10, 110.90}}, {!"Temple", {952.60, -1130.80, -89.00, 1096.40, -937.10, 110.90}}, {!"Temple", {1096.40, -1130.80, -89.00, 1252.30, -1026.30, 110.90}}, {!"Temple", {1096.40, -1026.30, -89.00, 1252.30, -910.10, 110.90}}, {!"The Camel's Toe", {2087.30, 1203.20, -89.00, 2640.40, 1383.20, 110.90}}, {!"The Clown's Pocket", {2162.30, 1783.20, -89.00, 2437.30, 1883.20, 110.90}}, {!"The Emerald Isle", {2011.90, 2202.70, -89.00, 2237.40, 2508.20, 110.90}}, {!"The Farm", {-1209.60, -1317.10, 114.90, -908.10, -787.30, 251.90}}, {!"The Four Dragons Casino", {1817.30, 863.20, -89.00, 2027.30, 1083.20, 110.90}}, {!"The High Roller", {1817.30, 1283.20, -89.00, 2027.30, 1469.20, 110.90}}, {!"The Mako Span", {1664.60, 401.70, 0.00, 1785.10, 567.20, 200.00}}, {!"The Panopticon", {-947.90, -304.30, -1.10, -319.60, 327.00, 200.00}}, {!"The Pink Swan", {1817.30, 1083.20, -89.00, 2027.30, 1283.20, 110.90}}, {!"The Sherman Dam", {-968.70, 1929.40, -3.00, -481.10, 2155.20, 200.00}}, {!"The Strip", {2027.40, 863.20, -89.00, 2087.30, 1703.20, 110.90}}, {!"The Strip", {2106.70, 1863.20, -89.00, 2162.30, 2202.70, 110.90}}, {!"The Strip", {2027.40, 1783.20, -89.00, 2162.30, 1863.20, 110.90}}, {!"The Strip", {2027.40, 1703.20, -89.00, 2137.40, 1783.20, 110.90}}, {!"The Visage", {1817.30, 1863.20, -89.00, 2106.70, 2011.80, 110.90}}, {!"The Visage", {1817.30, 1703.20, -89.00, 2027.40, 1863.20, 110.90}}, {!"Unity Station", {1692.60, -1971.80, -20.40, 1812.60, -1932.80, 79.50}}, {!"Valle Ocultado", {-936.60, 2611.40, 2.00, -715.90, 2847.90, 200.00}}, {!"Verdant Bluffs", {930.20, -2488.40, -89.00, 1249.60, -2006.70, 110.90}}, {!"Verdant Bluffs", {1073.20, -2006.70, -89.00, 1249.60, -1842.20, 110.90}}, {!"Verdant Bluffs", {1249.60, -2179.20, -89.00, 1692.60, -1842.20, 110.90}}, {!"Verdant Meadows", {37.00, 2337.10, -3.00, 435.90, 2677.90, 200.00}}, {!"Verona Beach", {647.70, -2173.20, -89.00, 930.20, -1804.20, 110.90}}, {!"Verona Beach", {930.20, -2006.70, -89.00, 1073.20, -1804.20, 110.90}}, {!"Verona Beach", {851.40, -1804.20, -89.00, 1046.10, -1577.50, 110.90}}, {!"Verona Beach", {1161.50, -1722.20, -89.00, 1323.90, -1577.50, 110.90}}, {!"Verona Beach", {1046.10, -1722.20, -89.00, 1161.50, -1577.50, 110.90}}, {!"Vinewood", {787.40, -1310.20, -89.00, 952.60, -1130.80, 110.90}}, {!"Vinewood", {787.40, -1130.80, -89.00, 952.60, -954.60, 110.90}}, {!"Vinewood", {647.50, -1227.20, -89.00, 787.40, -1118.20, 110.90}}, {!"Vinewood", {647.70, -1416.20, -89.00, 787.40, -1227.20, 110.90}}, {!"Whitewood Estates", {883.30, 1726.20, -89.00, 1098.30, 2507.20, 110.90}}, {!"Whitewood Estates", {1098.30, 1726.20, -89.00, 1197.30, 2243.20, 110.90}}, {!"Willowfield", {1970.60, -2179.20, -89.00, 2089.00, -1852.80, 110.90}}, {!"Willowfield", {2089.00, -2235.80, -89.00, 2201.80, -1989.90, 110.90}}, {!"Willowfield", {2089.00, -1989.90, -89.00, 2324.00, -1852.80, 110.90}}, {!"Willowfield", {2201.80, -2095.00, -89.00, 2324.00, -1989.90, 110.90}}, {!"Willowfield", {2541.70, -1941.40, -89.00, 2703.50, -1852.80, 110.90}}, {!"Willowfield", {2324.00, -2059.20, -89.00, 2541.70, -1852.80, 110.90}}, {!"Willowfield", {2541.70, -2059.20, -89.00, 2703.50, -1941.40, 110.90}}, {!"Yellow Bell Station", {1377.40, 2600.40, -21.90, 1492.40, 2687.30, 78.00}}, {!"Los Santos", {44.60, -2892.90, -242.90, 2997.00, -768.00, 900.00}}, {!"Las Venturas", {869.40, 596.30, -242.90, 2997.00, 2993.80, 900.00}}, {!"Bone County", {-480.50, 596.30, -242.90, 869.40, 2993.80, 900.00}}, {!"Tierra Robada", {-2997.40, 1659.60, -242.90, -480.50, 2993.80, 900.00}}, {!"Tierra Robada", {-1213.90, 596.30, -242.90, -480.50, 1659.60, 900.00}}, {!"San Fierro", {-2997.40, -1115.50, -242.90, -1213.90, 1659.60, 900.00}}, {!"Red County", {-1213.90, -768.00, -242.90, 2997.00, 596.30, 900.00}}, {!"Flint County", {-1213.90, -2892.90, -242.90, 44.60, -768.00, 900.00}}, {!"Whetstone", {-2997.40, -2892.90, -242.90, -1213.90, -1115.50, 900.00}} }; new name[32] = "San Andreas"; for (new i = 0; i != sizeof(g_arrZoneData); i ++) if ((fX >= g_arrZoneData[i][e_ZoneArea][0] && fX <= g_arrZoneData[i][e_ZoneArea][3]) && (fY >= g_arrZoneData[i][e_ZoneArea][1] && fY <= g_arrZoneData[i][e_ZoneArea][4]) && (fZ >= g_arrZoneData[i][e_ZoneArea][2] && fZ <= g_arrZoneData[i][e_ZoneArea][5])) { strunpack(name, g_arrZoneData[i][e_ZoneName]); break; } return name; } stock Float:GetPlayerDistanceFromPlayer(playerid, targetid) { new Float:x, Float:y, Float:z; GetPlayerPos(targetid, x, y, z); return GetPlayerDistanceFromPoint(playerid, x, y, z); } /*CREATE TABLE `detectors` ( `detectorID` INT(12) AUTO_INCREMENT, `detectorX` FLOAT DEFAULT 0.0, `detectorY` FLOAT DEFAULT 0.0, `detectorZ` FLOAT DEFAULT 0.0, `detectorAngle` FLOAT DEFAULT 0.0, `detectorInterior` INT(12) DEFAULT 0, `detectorWorld` INT(12) DEFAULT 0, PRIMARY KEY(`detectorID`) );*/ stock Detector_Delete(id) { if (id != -1 && MetalDetectors[id][detectorExists]) { new query[64]; DestroyDynamicObject(MetalDetectors[id][detectorObject][0]); DestroyDynamicObject(MetalDetectors[id][detectorObject][1]); format(query, sizeof(query), "DELETE FROM `detectors` WHERE `detectorID` = '%d'", MetalDetectors[id][detectorID]); mysql_tquery(g_iHandle, query); MetalDetectors[id][detectorID] = 0; MetalDetectors[id][detectorExists] = 0; } return 1; } stock Detector_Refresh(id) { if (id != -1 && MetalDetectors[id][detectorExists]) { MetalDetectors[id][detectorObject][0] = CreateDynamicObject(2412, MetalDetectors[id][detectorPos][0], MetalDetectors[id][detectorPos][1], MetalDetectors[id][detectorPos][2] - 0.9, 0.0, 0.0, MetalDetectors[id][detectorPos][3], MetalDetectors[id][detectorWorld], MetalDetectors[id][detectorInterior]); MetalDetectors[id][detectorObject][1] = CreateDynamicObject(2412, MetalDetectors[id][detectorPos][0] + (1.0 * floatsin(-(MetalDetectors[id][detectorPos][3] - 90), degrees)), MetalDetectors[id][detectorPos][1] + (1.0 * floatcos(-(MetalDetectors[id][detectorPos][3] - 90), degrees)), MetalDetectors[id][detectorPos][2] - 0.9, 0.0, 0.0, MetalDetectors[id][detectorPos][3], MetalDetectors[id][detectorWorld], MetalDetectors[id][detectorInterior]); } return 1; } stock Detector_Nearest(playerid) { for (new i = 0; i < MAX_METAL_DETECTORS; i ++) if (MetalDetectors[i][detectorExists]) { if (IsPlayerInRangeOfPoint(playerid, 1.0, MetalDetectors[i][detectorPos][0], MetalDetectors[i][detectorPos][1], MetalDetectors[i][detectorPos][2]) && GetPlayerInterior(playerid) == MetalDetectors[i][detectorInterior] && GetPlayerVirtualWorld(playerid) == MetalDetectors[i][detectorWorld]) return i; } return -1; } stock IsPlayerArmed(playerid) { new weapon, ammo; for (new i = 0; i < 13; i ++) { GetPlayerWeaponData(playerid, i, weapon, ammo); if (ammo > 0) { switch (weapon) { case 1, 2, 4, 6, 8, 9, 15, 22..38: return 1; } } } return 0; } stock PlayerPlaySoundEx(playerid, sound) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); foreach (new i : Player) if (IsPlayerInRangeOfPoint(i, 20.0, x, y, z)) { PlayerPlaySound(i, sound, x, y, z); } return 1; } stock GetNearestPlayerInView(playerid, Float:distance = 2.0) { new Float:fAngle, Float:fPosX, Float:fPosY, Float:fPosZ; GetPlayerFacingAngle(playerid, fAngle); GetPlayerPos(playerid, fPosX, fPosY, fPosZ); fPosX += distance * floatsin(-fAngle, degrees); fPosY += distance * floatcos(-fAngle, degrees); foreach (new i : Player) if (IsPlayerInRangeOfPoint(i, 2.0, fPosX, fPosY, fPosZ)) { return i; } return INVALID_PLAYER_ID; } stock CancelCall(playerid) { if (PlayerData[playerid][pCallLine] != INVALID_PLAYER_ID) { PlayerData[PlayerData[playerid][pCallLine]][pCallLine] = INVALID_PLAYER_ID; PlayerData[PlayerData[playerid][pCallLine]][pIncomingCall] = 0; PlayerData[playerid][pCallLine] = INVALID_PLAYER_ID; PlayerData[playerid][pIncomingCall] = 0; } return 1; } stock PlayReloadAnimation(playerid, weaponid) { switch (weaponid) { case 22: ApplyAnimation(playerid, "COLT45", "colt45_reload", 4.0, 0, 0, 0, 0, 0); case 23: ApplyAnimation(playerid, "SILENCED", "Silence_reload", 4.0, 0, 0, 0, 0, 0); case 24: ApplyAnimation(playerid, "PYTHON", "python_reload", 4.0, 0, 0, 0, 0, 0); case 25, 27: ApplyAnimation(playerid, "BUDDY", "buddy_reload", 4.0, 0, 0, 0, 0, 0); case 26: ApplyAnimation(playerid, "COLT45", "sawnoff_reload", 4.0, 0, 0, 0, 0, 0); case 29..31, 33, 34: ApplyAnimation(playerid, "RIFLE", "rifle_load", 4.0, 0, 0, 0, 0, 0); case 28, 32: ApplyAnimation(playerid, "TEC", "tec_reload", 4.0, 0, 0, 0, 0, 0); } return 1; } stock LeaveTaxi(playerid, driverid) { if (driverid != INVALID_PLAYER_ID && IsPlayerConnected(driverid)) { GiveMoney(playerid, -PlayerData[playerid][pTaxiFee]); GiveMoney(driverid, PlayerData[playerid][pTaxiFee]); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid $%d to the taxi driver.", ReturnName(playerid, 0), PlayerData[playerid][pTaxiFee]); PlayerData[playerid][pTaxiFee] = 0; PlayerData[playerid][pTaxiTime] = 0; PlayerData[playerid][pTaxiPlayer] = INVALID_PLAYER_ID; } return 1; } stock IsFurnitureItem(item[]) { for (new i = 0; i < sizeof(g_aFurnitureData); i ++) if (!strcmp(g_aFurnitureData[i][e_FurnitureName], item)) { return 1; } return 0; } stock GetFurnitureNameByModel(model) { new name[32]; for (new i = 0; i < sizeof(g_aFurnitureData); i ++) if (g_aFurnitureData[i][e_FurnitureModel] == model) { strcat(name, g_aFurnitureData[i][e_FurnitureName]); break; } return name; } stock PlayerHasWeapon(playerid, weaponid) { new weapon, ammo; for (new i = 0; i < 13; i ++) if (PlayerData[playerid][pGuns][i] == weaponid) { GetPlayerWeaponData(playerid, i, weapon, ammo); if (weapon == weaponid && ammo > 0) return 1; } return 0; } stock IsPumpOccupied(pumpid) { foreach (new i : Player) if (PlayerData[i][pRefill] != INVALID_VEHICLE_ID) { if (PlayerData[i][pGasPump] == pumpid) return 1; } return 0; } stock IsWheelModel(modelid) { switch (modelid) { case 1025, 1073..1085, 1096..1098: return 1; } return 0; } stock IsNOSCompatible(modelid) { switch (modelid) { case 581, 523, 462, 521, 463, 522, 461, 448, 468, 586, 509, 481, 510, 472, 473, 493, 595, 484, 430, 453, 452, 446, 454, 590, 569, 537, 538, 570, 449: return 0; } return 1; } stock IsLegalComponent(modelid, componentid) { if (IsWheelModel(componentid) || (1086 <= componentid <= 1087) || (componentid >= 1008 && componentid <= 1010)) { if (!IsNOSCompatible(modelid)) return 1; } else { for (new i = 0; i < sizeof(g_aLegalMods); i ++) { if (g_aLegalMods[i][0] != modelid) continue; else for (new l = 1; l < 22; l ++) if (g_aLegalMods[i][l] == componentid) { return 1; } } } return 0; } ShowHungerTextdraw(playerid, enable) { if (!enable) { PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][65]); PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][66]); PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][63]); PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][64]); } else if (PlayerData[playerid][pHUD] && PlayerData[playerid][pJailTime] < 1) { PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][65]); PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][66]); PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][63]); PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][64]); } return 1; } SendPlayerToPlayer(playerid, targetid) { new Float:x, Float:y, Float:z; GetPlayerPos(targetid, x, y, z); if (IsPlayerInAnyVehicle(playerid)) { SetVehiclePos(GetPlayerVehicleID(playerid), x, y + 2, z); LinkVehicleToInterior(GetPlayerVehicleID(playerid), GetPlayerInterior(targetid)); } else SetPlayerPos(playerid, x + 1, y, z); SetPlayerInterior(playerid, GetPlayerInterior(targetid)); SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(targetid)); PlayerData[playerid][pHouse] = PlayerData[targetid][pHouse]; PlayerData[playerid][pBusiness] = PlayerData[targetid][pBusiness]; PlayerData[playerid][pEntrance] = PlayerData[targetid][pEntrance]; PlayerData[playerid][pHospitalInt] = PlayerData[targetid][pHospitalInt]; } StopRefilling(playerid) { PlayerData[playerid][pGasPump] = -1; PlayerData[playerid][pGasStation] = -1; PlayerData[playerid][pRefill] = INVALID_VEHICLE_ID; PlayerData[playerid][pRefillPrice] = 0; } SetWeapons(playerid) { ResetPlayerWeapons(playerid); for (new i = 0; i < 13; i ++) if (PlayerData[playerid][pGuns][i] > 0 && PlayerData[playerid][pAmmo][i] > 0) { GivePlayerWeapon(playerid, PlayerData[playerid][pGuns][i], PlayerData[playerid][pAmmo][i]); } return 1; } SetAccessories(playerid) { for (new i = 0; i != MAX_PLAYER_ATTACHED_OBJECTS; i ++) { RemovePlayerAttachedObject(playerid, i); } if (PlayerData[playerid][pToggleGlasses]) RemovePlayerAttachedObject(playerid, 0); else if (PlayerData[playerid][pGlasses] != 0) SetPlayerAttachedObject(playerid, 0, PlayerData[playerid][pGlasses], 2, AccessoryData[playerid][0][0], AccessoryData[playerid][0][1], AccessoryData[playerid][0][2], AccessoryData[playerid][0][3], AccessoryData[playerid][0][4], AccessoryData[playerid][0][5], AccessoryData[playerid][0][6], AccessoryData[playerid][0][7], AccessoryData[playerid][0][8]); if (PlayerData[playerid][pToggleHat]) RemovePlayerAttachedObject(playerid, 1); else if (PlayerData[playerid][pHat] != 0) SetPlayerAttachedObject(playerid, 1, PlayerData[playerid][pHat], 2, AccessoryData[playerid][1][0], AccessoryData[playerid][1][1], AccessoryData[playerid][1][2], AccessoryData[playerid][1][3], AccessoryData[playerid][1][4], AccessoryData[playerid][1][5], AccessoryData[playerid][1][6], AccessoryData[playerid][1][7], AccessoryData[playerid][1][8]); if (PlayerData[playerid][pToggleBandana]) RemovePlayerAttachedObject(playerid, 2); else if (PlayerData[playerid][pBandana] != 0) SetPlayerAttachedObject(playerid, 2, PlayerData[playerid][pBandana], 2, AccessoryData[playerid][2][0], AccessoryData[playerid][2][1], AccessoryData[playerid][2][2], AccessoryData[playerid][2][3], AccessoryData[playerid][2][4], AccessoryData[playerid][2][5], AccessoryData[playerid][2][6], AccessoryData[playerid][2][7], AccessoryData[playerid][2][8]); if (Inventory_HasItem(playerid, "Backpack")) SetPlayerAttachedObject(playerid, 5, 3026, 1, -0.134207, -0.093048, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 1.000000, 1.000000); else RemovePlayerAttachedObject(playerid, 5); } SQL_LoadCharacter(playerid, characterid) { if (characterid < 1 || characterid > 3) return 0; new query[160]; format(query, sizeof(query), "UPDATE `characters` SET `LastLogin` = '%d' WHERE `Username` = '%s' AND `Character` = '%s'", gettime(), PlayerData[playerid][pUsername], PlayerCharacters[playerid][characterid - 1]); mysql_tquery(g_iHandle, query); format(query, sizeof(query), "SELECT * FROM `characters` WHERE `Username` = '%s' AND `Character` = '%s'", PlayerData[playerid][pUsername], PlayerCharacters[playerid][characterid - 1]); mysql_tquery(g_iHandle, query, "OnQueryFinished", "dd", playerid, THREAD_LOAD_CHARACTER); return 1; } ShowCharacterMenu(playerid) { new str[32]; if (PlayerData[playerid][pCharacter] != 0) { PlayerData[playerid][pCharacter] = 0; for (new i = 0; i < 8; i ++) { PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][i]); } for (new i = 71; i < 81; i ++) { PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][i]); } } for (new i = 0; i < 8; i ++) { if (i < 3) { format(str, sizeof(str), "%s", (!PlayerCharacters[playerid][i][0]) ? ("Empty Slot") : (PlayerCharacters[playerid][i])); PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][i + 5], str); } PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][i]); PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][i]); } SelectTextDraw(playerid, -1); } GetClosestGarbage(playerid) { new Float:fDistance[2] = {99999.0, 0.0}, iIndex = -1 ; for (new i = 0; i < MAX_GARBAGE_BINS; i ++) if (GarbageData[i][garbageExists] && GarbageData[i][garbageCapacity] > 0 && GetPlayerInterior(playerid) == GarbageData[i][garbageInterior] && GetPlayerVirtualWorld(playerid) == GarbageData[i][garbageWorld]) { fDistance[1] = GetPlayerDistanceFromPoint(playerid, GarbageData[i][garbagePos][0], GarbageData[i][garbagePos][1], GarbageData[i][garbagePos][2]); if (fDistance[1] < fDistance[0]) { fDistance[0] = fDistance[1]; iIndex = i; } } return iIndex; } GetClosestBusiness(playerid, type) { new Float:fDistance[2] = {99999.0, 0.0}, iIndex = -1 ; for (new i = 0; i < MAX_BUSINESSES; i ++) if (BusinessData[i][bizExists] && BusinessData[i][bizType] == type && GetPlayerInterior(playerid) == BusinessData[i][bizExterior] && GetPlayerVirtualWorld(playerid) == BusinessData[i][bizExteriorVW]) { fDistance[1] = GetPlayerDistanceFromPoint(playerid, BusinessData[i][bizPos][0], BusinessData[i][bizPos][1], BusinessData[i][bizPos][2]); if (fDistance[1] < fDistance[0]) { fDistance[0] = fDistance[1]; iIndex = i; } } return iIndex; } GetClosestEntrance(playerid, type) { new Float:fDistance[2] = {99999.0, 0.0}, iIndex = -1 ; for (new i = 0; i < MAX_ENTRANCES; i ++) if (EntranceData[i][entranceExists] && EntranceData[i][entranceType] == type && GetPlayerInterior(playerid) == EntranceData[i][entranceExterior] && GetPlayerVirtualWorld(playerid) == EntranceData[i][entranceExteriorVW]) { fDistance[1] = GetPlayerDistanceFromPoint(playerid, EntranceData[i][entrancePos][0], EntranceData[i][entrancePos][1], EntranceData[i][entrancePos][2]); if (fDistance[1] < fDistance[0]) { fDistance[0] = fDistance[1]; iIndex = i; } } return iIndex; } GetClosestJobPoint(playerid, type) { new Float:fDistance[2] = {99999.0, 0.0}, iIndex = -1 ; for (new i = 0; i < MAX_DYNAMIC_JOBS; i ++) if (JobData[i][jobExists] && JobData[i][jobType] == type && GetPlayerInterior(playerid) == JobData[i][jobInterior] && GetPlayerVirtualWorld(playerid) == JobData[i][jobWorld]) { fDistance[1] = GetPlayerDistanceFromPoint(playerid, JobData[i][jobPoint][0], JobData[i][jobPoint][1], JobData[i][jobPoint][2]); if (fDistance[1] < fDistance[0]) { fDistance[0] = fDistance[1]; iIndex = i; } } return iIndex; } GetClosestJob(playerid, type) { new Float:fDistance[2] = {99999.0, 0.0}, iIndex = -1 ; for (new i = 0; i < MAX_DYNAMIC_JOBS; i ++) if (JobData[i][jobExists] && JobData[i][jobType] == type && GetPlayerInterior(playerid) == JobData[i][jobInterior] && GetPlayerVirtualWorld(playerid) == JobData[i][jobWorld]) { fDistance[1] = GetPlayerDistanceFromPoint(playerid, JobData[i][jobPos][0], JobData[i][jobPos][1], JobData[i][jobPos][2]); if (fDistance[1] < fDistance[0]) { fDistance[0] = fDistance[1]; iIndex = i; } } return iIndex; } GetClosestHospital(playerid) { new Float:fDistance[2] = {99999.0, 0.0}, iIndex = -1 ; for (new i = 0; i < sizeof(arrHospitalSpawns); i ++) { fDistance[1] = GetPlayerDistanceFromPoint(playerid, arrHospitalSpawns[i][0], arrHospitalSpawns[i][1], arrHospitalSpawns[i][2]); if (fDistance[1] < fDistance[0]) { fDistance[0] = fDistance[1]; iIndex = i; } } return iIndex; } IsWeaponModel(model) { new const g_aWeaponModels[] = { 0, 331, 333, 334, 335, 336, 337, 338, 339, 341, 321, 322, 323, 324, 325, 326, 342, 343, 344, 0, 0, 0, 346, 347, 348, 349, 350, 351, 352, 353, 355, 356, 372, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 368, 371 }; for (new i = 0; i < sizeof(g_aWeaponModels); i ++) if (g_aWeaponModels[i] == model) { return 1; } return 0; } GetWeaponModel(weaponid) { new const g_aWeaponModels[] = { 0, 331, 333, 334, 335, 336, 337, 338, 339, 341, 321, 322, 323, 324, 325, 326, 342, 343, 344, 0, 0, 0, 346, 347, 348, 349, 350, 351, 352, 353, 355, 356, 372, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 368, 371 }; if (1 <= weaponid <= 46) return g_aWeaponModels[weaponid]; return 0; } DropPlayerItem(playerid, itemid, quantity = 1) { if (itemid == -1 || !InventoryData[playerid][itemid][invExists]) return 0; new Float:x, Float:y, Float:z, Float:angle, string[32]; strunpack(string, InventoryData[playerid][itemid][invItem]); if (InventoryData[playerid][itemid][invQuantity] < 2) { if (!strcmp(string, "Colt 45") && PlayerData[playerid][pHoldWeapon] == 22) HoldWeapon(playerid, 0); else if (!strcmp(string, "Desert Eagle") && PlayerData[playerid][pHoldWeapon] == 24) HoldWeapon(playerid, 0); else if (!strcmp(string, "Shotgun") && PlayerData[playerid][pHoldWeapon] == 25) HoldWeapon(playerid, 0); else if (!strcmp(string, "Micro SMG") && PlayerData[playerid][pHoldWeapon] == 28) HoldWeapon(playerid, 0); else if (!strcmp(string, "MP5") && PlayerData[playerid][pHoldWeapon] == 29) HoldWeapon(playerid, 0); else if (!strcmp(string, "Tec-9") && PlayerData[playerid][pHoldWeapon] == 32) HoldWeapon(playerid, 0); else if (!strcmp(string, "AK-47") && PlayerData[playerid][pHoldWeapon] == 30) HoldWeapon(playerid, 0); else if (!strcmp(string, "Rifle") && PlayerData[playerid][pHoldWeapon] == 33) HoldWeapon(playerid, 0); else if (!strcmp(string, "Sniper") && PlayerData[playerid][pHoldWeapon] == 34) HoldWeapon(playerid, 0); } GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, angle); DropItem(string, ReturnName(playerid, 0), InventoryData[playerid][itemid][invModel], quantity, x, y, z - 0.9, GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid)); Inventory_Remove(playerid, string, quantity); ApplyAnimation(playerid, "GRENADE", "WEAPON_throwu", 4.1, 0, 0, 0, 0, 0, 1); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has dropped a \"%s\".", ReturnName(playerid, 0), string); return 1; } DropItem(item[], player[], model, quantity, Float:x, Float:y, Float:z, interior, world, weaponid = 0, ammo = 0) { new query[300]; for (new i = 0; i != MAX_DROPPED_ITEMS; i ++) if (!DroppedItems[i][droppedModel]) { format(DroppedItems[i][droppedItem], 32, item); format(DroppedItems[i][droppedPlayer], 24, player); DroppedItems[i][droppedModel] = model; DroppedItems[i][droppedQuantity] = quantity; DroppedItems[i][droppedWeapon] = weaponid; DroppedItems[i][droppedAmmo] = ammo; DroppedItems[i][droppedPos][0] = x; DroppedItems[i][droppedPos][1] = y; DroppedItems[i][droppedPos][2] = z; DroppedItems[i][droppedInt] = interior; DroppedItems[i][droppedWorld] = world; if (IsWeaponModel(model)) { DroppedItems[i][droppedObject] = CreateDynamicObject(model, x, y, z, 93.7, 120.0, 120.0, world, interior); } else { DroppedItems[i][droppedObject] = CreateDynamicObject(model, x, y, z, 0.0, 0.0, 0.0, world, interior); } DroppedItems[i][droppedText3D] = CreateDynamic3DTextLabel(item, COLOR_CYAN, x, y, z, 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, world, interior); if (strcmp(item, "Demo Soda") != 0) { format(query, sizeof(query), "INSERT INTO `dropped` (`itemName`, `itemPlayer`, `itemModel`, `itemQuantity`, `itemWeapon`, `itemAmmo`, `itemX`, `itemY`, `itemZ`, `itemInt`, `itemWorld`) VALUES('%s', '%s', '%d', '%d', '%d', '%d', '%.4f', '%.4f', '%.4f', '%d', '%d')", item, player, model, quantity, weaponid, ammo, x, y, z, interior, world); mysql_tquery(g_iHandle, query, "OnDroppedItem", "d", i); } return i; } return -1; } Item_Nearest(playerid) { for (new i = 0; i != MAX_DROPPED_ITEMS; i ++) if (DroppedItems[i][droppedModel] && IsPlayerInRangeOfPoint(playerid, 1.5, DroppedItems[i][droppedPos][0], DroppedItems[i][droppedPos][1], DroppedItems[i][droppedPos][2])) { if (GetPlayerInterior(playerid) == DroppedItems[i][droppedInt] && GetPlayerVirtualWorld(playerid) == DroppedItems[i][droppedWorld]) return i; } return -1; } Item_SetQuantity(itemid, amount) { new string[64]; if (itemid != -1 && DroppedItems[itemid][droppedModel]) { DroppedItems[itemid][droppedQuantity] = amount; format(string, sizeof(string), "UPDATE `dropped` SET `itemQuantity` = %d WHERE `ID` = '%d'", amount, DroppedItems[itemid][droppedID]); mysql_tquery(g_iHandle, string); } return 1; } Item_Delete(itemid) { static query[64]; if (itemid != -1 && DroppedItems[itemid][droppedModel]) { DroppedItems[itemid][droppedModel] = 0; DroppedItems[itemid][droppedQuantity] = 0; DroppedItems[itemid][droppedPos][0] = 0.0; DroppedItems[itemid][droppedPos][1] = 0.0; DroppedItems[itemid][droppedPos][2] = 0.0; DroppedItems[itemid][droppedInt] = 0; DroppedItems[itemid][droppedWorld] = 0; DestroyDynamicObject(DroppedItems[itemid][droppedObject]); DestroyDynamic3DTextLabel(DroppedItems[itemid][droppedText3D]); format(query, sizeof(query), "DELETE FROM `dropped` WHERE `ID` = '%d'", DroppedItems[itemid][droppedID]); mysql_tquery(g_iHandle, query); } return 1; } PickupItem(playerid, itemid) { if (itemid != -1 && DroppedItems[itemid][droppedModel]) { new id = Inventory_Add(playerid, DroppedItems[itemid][droppedItem], DroppedItems[itemid][droppedModel], DroppedItems[itemid][droppedQuantity]); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); Item_Delete(itemid); } return 1; } SetFactionMarker(playerid, type, color) { foreach (new i : Player) if (GetFactionType(i) == type) { SetPlayerMarkerForPlayer(i, playerid, color); } PlayerData[playerid][pMarker] = 1; SetTimerEx("ExpireMarker", 300000, false, "d", playerid); return 1; } Faction_GetName(playerid) { new factionid = PlayerData[playerid][pFaction], name[32] = "None"; if (factionid == -1) return name; format(name, 32, FactionData[factionid][factionName]); return name; } Faction_GetRank(playerid) { new factionid = PlayerData[playerid][pFaction], rank[32] = "None"; if (factionid == -1) return rank; format(rank, 32, FactionRanks[factionid][PlayerData[playerid][pFactionRank] - 1]); return rank; } Arrest_Delete(arrestid) { if (arrestid != -1 && ArrestData[arrestid][arrestExists]) { static string[64]; if (IsValidDynamicPickup(ArrestData[arrestid][arrestPickup])) DestroyDynamicPickup(ArrestData[arrestid][arrestPickup]); if (IsValidDynamic3DTextLabel(ArrestData[arrestid][arrestText3D])) DestroyDynamic3DTextLabel(ArrestData[arrestid][arrestText3D]); format(string, sizeof(string), "DELETE FROM `arrestpoints` WHERE `arrestID` = '%d'", ArrestData[arrestid][arrestID]); mysql_tquery(g_iHandle, string); ArrestData[arrestid][arrestExists] = false; ArrestData[arrestid][arrestID] = 0; } return 1; } Arrest_Create(Float:x, Float:y, Float:z, interior, world) { for (new i = 0; i < MAX_ARREST_POINTS; i ++) if (!ArrestData[i][arrestExists]) { ArrestData[i][arrestExists] = true; ArrestData[i][arrestPos][0] = x; ArrestData[i][arrestPos][1] = y; ArrestData[i][arrestPos][2] = z; ArrestData[i][arrestInterior] = interior; ArrestData[i][arrestWorld] = world; mysql_tquery(g_iHandle, "INSERT INTO `arrestpoints` (`arrestInterior`) VALUES(0)", "OnArrestCreated", "d", i); Arrest_Refresh(i); return i; } return -1; } Arrest_Save(arrestid) { static query[220]; format(query, sizeof(query), "UPDATE `arrestpoints` SET `arrestX` = '%.4f', `arrestY` = '%.4f', `arrestZ` = '%.4f', `arrestInterior` = '%d', `arrestWorld` = '%d' WHERE `arrestID` = '%d'", ArrestData[arrestid][arrestPos][0], ArrestData[arrestid][arrestPos][1], ArrestData[arrestid][arrestPos][2], ArrestData[arrestid][arrestInterior], ArrestData[arrestid][arrestWorld], ArrestData[arrestid][arrestID] ); return mysql_tquery(g_iHandle, query); } Arrest_Refresh(arrestid) { if (arrestid != -1 && ArrestData[arrestid][arrestExists]) { static string[64]; if (IsValidDynamicPickup(ArrestData[arrestid][arrestPickup])) DestroyDynamicPickup(ArrestData[arrestid][arrestPickup]); if (IsValidDynamic3DTextLabel(ArrestData[arrestid][arrestText3D])) DestroyDynamic3DTextLabel(ArrestData[arrestid][arrestText3D]); format(string, sizeof(string), "[Arrest %d]\n{FFFFFF}/arrest to arrest the suspect.", arrestid); ArrestData[arrestid][arrestPickup] = CreateDynamicPickup(1247, 23, ArrestData[arrestid][arrestPos][0], ArrestData[arrestid][arrestPos][1], ArrestData[arrestid][arrestPos][2], ArrestData[arrestid][arrestWorld], ArrestData[arrestid][arrestInterior]); ArrestData[arrestid][arrestText3D] = CreateDynamic3DTextLabel(string, COLOR_DARKBLUE, ArrestData[arrestid][arrestPos][0], ArrestData[arrestid][arrestPos][1], ArrestData[arrestid][arrestPos][2], 10.0, INVALID_VEHICLE_ID, INVALID_PLAYER_ID, 0, ArrestData[arrestid][arrestWorld], ArrestData[arrestid][arrestInterior]); } return 1; } Rack_Save(rackid) { static query[512]; format(query, sizeof(query), "UPDATE `gunracks` SET `rackHouse` = '%d', `rackX` = '%.4f', `rackY` = '%.4f', `rackZ` = '%.4f', `rackA` = '%.4f', `rackInterior` = '%d', `rackWorld` = '%d', `rackWeapon1` = '%d', `rackWeapon2` = '%d', `rackWeapon3` = '%d', `rackWeapon4` = '%d', `rackAmmo1` = '%d', `rackAmmo2` = '%d', `rackAmmo3` = '%d', `rackAmmo4` = '%d' WHERE `rackID` = '%d'", RackData[rackid][rackHouse], RackData[rackid][rackPos][0], RackData[rackid][rackPos][1], RackData[rackid][rackPos][2], RackData[rackid][rackPos][3], RackData[rackid][rackInterior], RackData[rackid][rackWorld], RackData[rackid][rackWeapons][0], RackData[rackid][rackWeapons][1], RackData[rackid][rackWeapons][2], RackData[rackid][rackWeapons][3], RackData[rackid][rackAmmo][0], RackData[rackid][rackAmmo][1], RackData[rackid][rackAmmo][2], RackData[rackid][rackAmmo][3], RackData[rackid][rackID] ); return mysql_tquery(g_iHandle, query); } Rack_Nearest(playerid) { for (new i = 0; i != MAX_WEAPON_RACKS; i ++) if (RackData[i][rackExists] && IsPlayerInRangeOfPoint(playerid, 3.0, RackData[i][rackPos][0], RackData[i][rackPos][1], RackData[i][rackPos][2])) { if (GetPlayerInterior(playerid) == RackData[i][rackInterior] && GetPlayerVirtualWorld(playerid) == RackData[i][rackWorld]) return i; } return -1; } Rack_Count(houseid) { new count; for (new i = 0; i != MAX_WEAPON_RACKS; i ++) if (RackData[i][rackExists] && RackData[i][rackHouse] == HouseData[houseid][houseID]) { count++; } return count; } Rack_ShowGuns(playerid, rackid) { if (rackid != -1 && RackData[rackid][rackExists]) { new string[128]; for (new i = 0; i < 4; i ++) { if (!RackData[rackid][rackWeapons][i]) format(string, sizeof(string), "%s%d: Empty Slot\n", string, i + 1); else format(string, sizeof(string), "%s%d: %s - %d bullets\n", string, i + 1, ReturnWeaponName(RackData[rackid][rackWeapons][i]), RackData[rackid][rackAmmo][i]); } Dialog_Show(playerid, RackWeapons, DIALOG_STYLE_LIST, "Weapon Rack", string, "Select", "Cancel"); } return 1; } Rack_Delete(rackid) { if (rackid != -1 && RackData[rackid][rackExists]) { static string[64]; format(string, sizeof(string), "DELETE FROM `gunracks` WHERE `rackID` = '%d'", RackData[rackid][rackID]); mysql_tquery(g_iHandle, string); for (new i = 0; i < 5; i ++) if (IsValidDynamicObject(RackData[rackid][rackObjects][i])) { DestroyDynamicObject(RackData[rackid][rackObjects][i]); } if (IsValidDynamic3DTextLabel(RackData[rackid][rackText3D])) { DestroyDynamic3DTextLabel(RackData[rackid][rackText3D]); } RackData[rackid][rackExists] = false; RackData[rackid][rackID] = 0; RackData[rackid][rackHouse] = 0; } return 1; } Rack_Create(playerid, houseid) { static Float:x, Float:y, Float:z, Float:angle; if (GetPlayerPos(playerid, x, y, z) && GetPlayerFacingAngle(playerid, angle)) { for (new i = 0; i != MAX_WEAPON_RACKS; i ++) if (!RackData[i][rackExists]) { x += 1.5 * floatsin(-angle, degrees); y += 1.5 * floatcos(-angle, degrees); RackData[i][rackExists] = true; RackData[i][rackHouse] = (houseid == -1) ? (-1) : (HouseData[houseid][houseID]); RackData[i][rackPos][0] = x; RackData[i][rackPos][1] = y; RackData[i][rackPos][2] = z; RackData[i][rackPos][3] = angle; RackData[i][rackInterior] = GetPlayerInterior(playerid); RackData[i][rackWorld] = GetPlayerVirtualWorld(playerid); Rack_Refresh(i); mysql_tquery(g_iHandle, "INSERT INTO `gunracks` (`rackHouse`) VALUES(0)", "OnRackCreated", "d", i); return i; } } return -1; } Rack_RefreshGuns(rackid) { if (rackid != -1 && RackData[rackid][rackExists]) { new Float:x, Float:y, Float:z; z = RackData[rackid][rackPos][2] + 2.19; for (new i = 0; i < 4; i ++) if (IsValidDynamicObject(RackData[rackid][rackObjects][i])) { DestroyDynamicObject(RackData[rackid][rackObjects][i]); RackData[rackid][rackObjects][i] = INVALID_OBJECT_ID; } for (new i = 0; i < 4; i ++) { if (RackData[rackid][rackWeapons][i]) { x = RackData[rackid][rackPos][0] - (0.2 * floatsin(-RackData[rackid][rackPos][3], degrees) + (0.45 * floatsin(-RackData[rackid][rackPos][3] - 90, degrees))); y = RackData[rackid][rackPos][1] - (0.2 * floatcos(-RackData[rackid][rackPos][3], degrees) + (0.45 * floatcos(-RackData[rackid][rackPos][3] - 90, degrees))); RackData[rackid][rackObjects][i] = CreateDynamicObject(GetWeaponModel(RackData[rackid][rackWeapons][i]), x, y, z, 94.7, 93.7, (22 <= RackData[rackid][rackWeapons][i] <= 38) ? (RackData[rackid][rackPos][3] + 90.0) : (RackData[rackid][rackPos][3]), RackData[rackid][rackWorld], RackData[rackid][rackInterior]); } else { RackData[rackid][rackObjects][i] = INVALID_OBJECT_ID; } z = z - 0.69; } } return 1; } Rack_Refresh(rackid) { if (rackid != -1 && RackData[rackid][rackExists]) { static str[64]; if (IsValidDynamicObject(RackData[rackid][rackObjects][4])) { DestroyDynamicObject(RackData[rackid][rackObjects][4]); } if (IsValidDynamic3DTextLabel(RackData[rackid][rackText3D])) { DestroyDynamic3DTextLabel(RackData[rackid][rackText3D]); } format(str, sizeof(str), "[Rack %d]\n{FFFFFF}/gunrack to use this rack.", rackid); RackData[rackid][rackText3D] = CreateDynamic3DTextLabel(str, COLOR_DARKBLUE, RackData[rackid][rackPos][0], RackData[rackid][rackPos][1], RackData[rackid][rackPos][2] + 1.2, 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, RackData[rackid][rackWorld], RackData[rackid][rackInterior]); Rack_RefreshGuns(rackid); RackData[rackid][rackObjects][4] = CreateDynamicObject(2475, RackData[rackid][rackPos][0], RackData[rackid][rackPos][1], RackData[rackid][rackPos][2], 0.0, 0.0, RackData[rackid][rackPos][3], RackData[rackid][rackWorld], RackData[rackid][rackInterior]); } return 1; } forward Detector_Load(); public Detector_Load() { static rows, fields; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) if (i < MAX_METAL_DETECTORS) { MetalDetectors[i][detectorExists] = 1; MetalDetectors[i][detectorID] = cache_get_field_int(i, "detectorID"); MetalDetectors[i][detectorPos][0] = cache_get_field_float(i, "detectorX"); MetalDetectors[i][detectorPos][1] = cache_get_field_float(i, "detectorY"); MetalDetectors[i][detectorPos][2] = cache_get_field_float(i, "detectorZ"); MetalDetectors[i][detectorPos][3] = cache_get_field_float(i, "detectorAngle"); MetalDetectors[i][detectorInterior] = cache_get_field_int(i, "detectorInterior"); MetalDetectors[i][detectorWorld] = cache_get_field_int(i, "detectorWorld"); Detector_Refresh(i); } return 1; } forward Graffiti_Load(); public Graffiti_Load() { static rows, fields; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) if (i < MAX_GRAFFITI_POINTS) { cache_get_field_content(i, "graffitiText", GraffitiData[i][graffitiText], g_iHandle, 64); GraffitiData[i][graffitiExists] = 1; GraffitiData[i][graffitiID] = cache_get_field_int(i, "graffitiID"); GraffitiData[i][graffitiPos][0] = cache_get_field_float(i, "graffitiX"); GraffitiData[i][graffitiPos][1] = cache_get_field_float(i, "graffitiY"); GraffitiData[i][graffitiPos][2] = cache_get_field_float(i, "graffitiZ"); GraffitiData[i][graffitiPos][3] = cache_get_field_float(i, "graffitiAngle"); GraffitiData[i][graffitiColor] = cache_get_field_int(i, "graffitiColor"); Graffiti_Refresh(i); } return 1; } forward Speed_Load(); public Speed_Load() { static rows, fields; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) if (i < MAX_SPEED_CAMERAS) { SpeedData[i][speedExists] = true; SpeedData[i][speedID] = cache_get_field_int(i, "speedID"); SpeedData[i][speedRange] = cache_get_field_float(i, "speedRange"); SpeedData[i][speedLimit] = cache_get_field_float(i, "speedLimit"); SpeedData[i][speedPos][0] = cache_get_field_float(i, "speedX"); SpeedData[i][speedPos][1] = cache_get_field_float(i, "speedY"); SpeedData[i][speedPos][2] = cache_get_field_float(i, "speedZ"); SpeedData[i][speedPos][3] = cache_get_field_float(i, "speedAngle"); Speed_Refresh(i); } return 1; } forward Rack_Load(); public Rack_Load() { static rows, fields, str[24]; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) if (i < MAX_WEAPON_RACKS) { RackData[i][rackExists] = true; RackData[i][rackID] = cache_get_field_int(i, "rackID"); RackData[i][rackHouse] = cache_get_field_int(i, "rackHouse"); RackData[i][rackPos][0] = cache_get_field_float(i, "rackX"); RackData[i][rackPos][1] = cache_get_field_float(i, "rackY"); RackData[i][rackPos][2] = cache_get_field_float(i, "rackZ"); RackData[i][rackPos][3] = cache_get_field_float(i, "rackA"); RackData[i][rackInterior] = cache_get_field_int(i, "rackInterior"); RackData[i][rackWorld] = cache_get_field_int(i, "rackWorld"); for (new j = 0; j < 4; j ++) { format(str, 24, "rackWeapon%d", j + 1); RackData[i][rackWeapons][j] = cache_get_field_int(i, str); format(str, 24, "rackAmmo%d", j + 1); RackData[i][rackAmmo][j] = cache_get_field_int(i, str); } Rack_Refresh(i); } return 1; } forward Vendor_Load(); public Vendor_Load() { static rows, fields; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) if (i < MAX_VENDORS) { VendorData[i][vendorExists] = true; VendorData[i][vendorID] = cache_get_field_int(i, "vendorID"); VendorData[i][vendorType] = cache_get_field_int(i, "vendorType"); VendorData[i][vendorPos][0] = cache_get_field_float(i, "vendorX"); VendorData[i][vendorPos][1] = cache_get_field_float(i, "vendorY"); VendorData[i][vendorPos][2] = cache_get_field_float(i, "vendorZ"); VendorData[i][vendorPos][3] = cache_get_field_float(i, "vendorA"); VendorData[i][vendorInterior] = cache_get_field_int(i, "vendorInterior"); VendorData[i][vendorWorld] = cache_get_field_int(i, "vendorWorld"); Vendor_Refresh(i); } return 1; } forward Garbage_Load(); public Garbage_Load() { static rows, fields; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) if (i < MAX_GARBAGE_BINS) { GarbageData[i][garbageExists] = true; GarbageData[i][garbageID] = cache_get_field_int(i, "garbageID"); GarbageData[i][garbageModel] = cache_get_field_int(i, "garbageModel"); GarbageData[i][garbageCapacity] = cache_get_field_int(i, "garbageCapacity"); GarbageData[i][garbagePos][0] = cache_get_field_float(i, "garbageX"); GarbageData[i][garbagePos][1] = cache_get_field_float(i, "garbageY"); GarbageData[i][garbagePos][2] = cache_get_field_float(i, "garbageZ"); GarbageData[i][garbagePos][3] = cache_get_field_float(i, "garbageA"); GarbageData[i][garbageInterior] = cache_get_field_int(i, "garbageInterior"); GarbageData[i][garbageWorld] = cache_get_field_int(i, "garbageWorld"); Garbage_Refresh(i); } return 1; } forward ATM_Load(); public ATM_Load() { static rows, fields; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) if (i < MAX_ATM_MACHINES) { ATMData[i][atmExists] = true; ATMData[i][atmID] = cache_get_field_int(i, "atmID"); ATMData[i][atmPos][0] = cache_get_field_float(i, "atmX"); ATMData[i][atmPos][1] = cache_get_field_float(i, "atmY"); ATMData[i][atmPos][2] = cache_get_field_float(i, "atmZ"); ATMData[i][atmPos][3] = cache_get_field_float(i, "atmA"); ATMData[i][atmInterior] = cache_get_field_int(i, "atmInterior"); ATMData[i][atmWorld] = cache_get_field_int(i, "atmWorld"); ATM_Refresh(i); } return 1; } forward Impound_Load(); public Impound_Load() { static rows, fields; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) if (i < MAX_IMPOUND_LOTS) { ImpoundData[i][impoundExists] = true; ImpoundData[i][impoundID] = cache_get_field_int(i, "impoundID"); ImpoundData[i][impoundLot][0] = cache_get_field_float(i, "impoundLotX"); ImpoundData[i][impoundLot][1] = cache_get_field_float(i, "impoundLotY"); ImpoundData[i][impoundLot][2] = cache_get_field_float(i, "impoundLotZ"); ImpoundData[i][impoundRelease][0] = cache_get_field_float(i, "impoundReleaseX"); ImpoundData[i][impoundRelease][1] = cache_get_field_float(i, "impoundReleaseY"); ImpoundData[i][impoundRelease][2] = cache_get_field_float(i, "impoundReleaseZ"); ImpoundData[i][impoundRelease][3] = cache_get_field_float(i, "impoundReleaseA"); Impound_Refresh(i); } return 1; } forward Backpack_Load(); public Backpack_Load() { static rows, fields, str[64]; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) if (i < MAX_BACKPACKS) { BackpackData[i][backpackExists] = true; BackpackData[i][backpackID] = cache_get_field_int(i, "backpackID"); BackpackData[i][backpackPlayer] = cache_get_field_int(i, "backpackPlayer"); BackpackData[i][backpackHouse] = cache_get_field_int(i, "backpackHouse"); BackpackData[i][backpackVehicle] = cache_get_field_int(i, "backpackVehicle"); BackpackData[i][backpackPos][0] = cache_get_field_float(i, "backpackX"); BackpackData[i][backpackPos][1] = cache_get_field_float(i, "backpackY"); BackpackData[i][backpackPos][2] = cache_get_field_float(i, "backpackZ"); BackpackData[i][backpackInterior] = cache_get_field_int(i, "backpackInterior"); BackpackData[i][backpackWorld] = cache_get_field_int(i, "backpackWorld"); if (!BackpackData[i][backpackPlayer]) { Backpack_Refresh(i); } } for (new i = 0; i < MAX_BACKPACKS; i ++) if (BackpackData[i][backpackExists]) { format(str, sizeof(str), "SELECT * FROM `backpackitems` WHERE `ID` = '%d'", BackpackData[i][backpackID]); mysql_tquery(g_iHandle, str, "OnLoadBackpack", "d", i); } return 1; } forward Gate_Load(); public Gate_Load() { static rows, fields; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) if (i < MAX_GATES) { GateData[i][gateExists] = true; GateData[i][gateOpened] = false; GateData[i][gateID] = cache_get_field_int(i, "gateID"); GateData[i][gateModel] = cache_get_field_int(i, "gateModel"); GateData[i][gateSpeed] = cache_get_field_float(i, "gateSpeed"); GateData[i][gateRadius] = cache_get_field_float(i, "gateRadius"); GateData[i][gateTime] = cache_get_field_int(i, "gateTime"); GateData[i][gateInterior] = cache_get_field_int(i, "gateInterior"); GateData[i][gateWorld] = cache_get_field_int(i, "gateWorld"); GateData[i][gatePos][0] = cache_get_field_float(i, "gateX"); GateData[i][gatePos][1] = cache_get_field_float(i, "gateY"); GateData[i][gatePos][2] = cache_get_field_float(i, "gateZ"); GateData[i][gatePos][3] = cache_get_field_float(i, "gateRX"); GateData[i][gatePos][4] = cache_get_field_float(i, "gateRY"); GateData[i][gatePos][5] = cache_get_field_float(i, "gateRZ"); GateData[i][gateMove][0] = cache_get_field_float(i, "gateMoveX"); GateData[i][gateMove][1] = cache_get_field_float(i, "gateMoveY"); GateData[i][gateMove][2] = cache_get_field_float(i, "gateMoveZ"); GateData[i][gateMove][3] = cache_get_field_float(i, "gateMoveRX"); GateData[i][gateMove][4] = cache_get_field_float(i, "gateMoveRY"); GateData[i][gateMove][5] = cache_get_field_float(i, "gateMoveRZ"); GateData[i][gateLinkID] = cache_get_field_int(i, "gateLinkID"); GateData[i][gateFaction] = cache_get_field_int(i, "gateFaction"); cache_get_field_content(i, "gatePass", GateData[i][gatePass], g_iHandle, 32); GateData[i][gateObject] = CreateDynamicObject(GateData[i][gateModel], GateData[i][gatePos][0], GateData[i][gatePos][1], GateData[i][gatePos][2], GateData[i][gatePos][3], GateData[i][gatePos][4], GateData[i][gatePos][5], GateData[i][gateWorld], GateData[i][gateInterior]); } return 1; } forward Arrest_Load(); public Arrest_Load() { static rows, fields; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) if (i < MAX_ARREST_POINTS) { ArrestData[i][arrestExists] = true; ArrestData[i][arrestID] = cache_get_field_int(i, "arrestID"); ArrestData[i][arrestPos][0] = cache_get_field_float(i, "arrestX"); ArrestData[i][arrestPos][1] = cache_get_field_float(i, "arrestY"); ArrestData[i][arrestPos][2] = cache_get_field_float(i, "arrestZ"); ArrestData[i][arrestInterior] = cache_get_field_int(i, "arrestInterior"); ArrestData[i][arrestWorld] = cache_get_field_int(i, "arrestWorld"); Arrest_Refresh(i); } return 1; } forward Faction_Load(); public Faction_Load() { static rows, fields, str[32]; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) if (i < MAX_FACTIONS) { FactionData[i][factionExists] = true; FactionData[i][factionID] = cache_get_field_int(i, "factionID"); cache_get_field_content(i, "factionName", FactionData[i][factionName], g_iHandle, 32); FactionData[i][factionColor] = cache_get_field_int(i, "factionColor"); FactionData[i][factionType] = cache_get_field_int(i, "factionType"); FactionData[i][factionRanks] = cache_get_field_int(i, "factionRanks"); FactionData[i][factionLockerPos][0] = cache_get_field_float(i, "factionLockerX"); FactionData[i][factionLockerPos][1] = cache_get_field_float(i, "factionLockerY"); FactionData[i][factionLockerPos][2] = cache_get_field_float(i, "factionLockerZ"); FactionData[i][factionLockerInt] = cache_get_field_int(i, "factionLockerInt"); FactionData[i][factionLockerWorld] = cache_get_field_int(i, "factionLockerWorld"); //Spawning FactionData[i][SpawnX] = cache_get_field_float(i, "SpawnX"); FactionData[i][SpawnY] = cache_get_field_float(i, "SpawnY"); FactionData[i][SpawnZ] = cache_get_field_float(i, "SpawnZ"); FactionData[i][SpawnInterior] = cache_get_field_int(i, "SpawnInterior"); FactionData[i][SpawnVW] = cache_get_field_int(i, "SpawnVW"); for (new j = 0; j < 8; j ++) { format(str, sizeof(str), "factionSkin%d", j + 1); FactionData[i][factionSkins][j] = cache_get_field_int(i, str); } for (new j = 0; j < 10; j ++) { format(str, sizeof(str), "factionWeapon%d", j + 1); FactionData[i][factionWeapons][j] = cache_get_field_int(i, str); format(str, sizeof(str), "factionAmmo%d", j + 1); FactionData[i][factionAmmo][j] = cache_get_field_int(i, str); } for (new j = 0; j < 15; j ++) { format(str, sizeof(str), "factionRank%d", j + 1); cache_get_field_content(i, str, FactionRanks[i][j], g_iHandle, 32); } Faction_Refresh(i); } return 1; } forward Plant_Load(); public Plant_Load() { static rows, fields; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) if (i < MAX_DRUG_PLANTS) { PlantData[i][plantExists] = true; PlantData[i][plantID] = cache_get_field_int(i, "plantID"); PlantData[i][plantType] = cache_get_field_int(i, "plantType"); PlantData[i][plantDrugs] = cache_get_field_int(i, "plantDrugs"); PlantData[i][plantPos][0] = cache_get_field_float(i, "plantX"); PlantData[i][plantPos][1] = cache_get_field_float(i, "plantY"); PlantData[i][plantPos][2] = cache_get_field_float(i, "plantZ"); PlantData[i][plantPos][3] = cache_get_field_float(i, "plantA"); PlantData[i][plantInterior] = cache_get_field_int(i, "plantInterior"); PlantData[i][plantWorld] = cache_get_field_int(i, "plantWorld"); Plant_Refresh(i); } return 1; } forward Crate_Load(); public Crate_Load() { static rows, fields; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) if (i < MAX_CRATES) { CrateData[i][crateExists] = true; CrateData[i][crateID] = cache_get_field_int(i, "crateID"); CrateData[i][crateType] = cache_get_field_int(i, "crateType"); CrateData[i][cratePos][0] = cache_get_field_float(i, "crateX"); CrateData[i][cratePos][1] = cache_get_field_float(i, "crateY"); CrateData[i][cratePos][2] = cache_get_field_float(i, "crateZ"); CrateData[i][cratePos][3] = cache_get_field_float(i, "crateA"); CrateData[i][crateInterior] = cache_get_field_int(i, "crateInterior"); CrateData[i][crateWorld] = cache_get_field_int(i, "crateWorld"); CrateData[i][crateVehicle] = INVALID_VEHICLE_ID; Crate_Refresh(i); } return 1; } forward Job_Load(); public Job_Load() { static rows, fields; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) if (i < MAX_DYNAMIC_JOBS) { JobData[i][jobExists] = true; JobData[i][jobID] = cache_get_field_int(i, "jobID"); JobData[i][jobType] = cache_get_field_int(i, "jobType"); JobData[i][jobPos][0] = cache_get_field_float(i, "jobPosX"); JobData[i][jobPos][1] = cache_get_field_float(i, "jobPosY"); JobData[i][jobPos][2] = cache_get_field_float(i, "jobPosZ"); JobData[i][jobInterior] = cache_get_field_int(i, "jobInterior"); JobData[i][jobWorld] = cache_get_field_int(i, "jobWorld"); JobData[i][jobPoint][0] = cache_get_field_float(i, "jobPointX"); JobData[i][jobPoint][1] = cache_get_field_float(i, "jobPointY"); JobData[i][jobPoint][2] = cache_get_field_float(i, "jobPointZ"); JobData[i][jobDeliver][0] = cache_get_field_float(i, "jobDeliverX"); JobData[i][jobDeliver][1] = cache_get_field_float(i, "jobDeliverY"); JobData[i][jobDeliver][2] = cache_get_field_float(i, "jobDeliverZ"); JobData[i][jobPointInt] = cache_get_field_int(i, "jobPointInt"); JobData[i][jobPointWorld] = cache_get_field_int(i, "jobPointWorld"); Job_Refresh(i); } return 1; } forward Entrance_Load(); public Entrance_Load() { static rows, fields; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) if (i < MAX_ENTRANCES) { EntranceData[i][entranceExists] = true; EntranceData[i][entranceID] = cache_get_field_int(i, "entranceID"); cache_get_field_content(i, "entranceName", EntranceData[i][entranceName], g_iHandle, 32); cache_get_field_content(i, "entrancePass", EntranceData[i][entrancePass], g_iHandle, 32); EntranceData[i][entranceIcon] = cache_get_field_int(i, "entranceIcon"); EntranceData[i][entranceLocked] = cache_get_field_int(i, "entranceLocked"); EntranceData[i][entrancePos][0] = cache_get_field_float(i, "entrancePosX"); EntranceData[i][entrancePos][1] = cache_get_field_float(i, "entrancePosY"); EntranceData[i][entrancePos][2] = cache_get_field_float(i, "entrancePosZ"); EntranceData[i][entrancePos][3] = cache_get_field_float(i, "entrancePosA"); EntranceData[i][entranceInt][0] = cache_get_field_float(i, "entranceIntX"); EntranceData[i][entranceInt][1] = cache_get_field_float(i, "entranceIntY"); EntranceData[i][entranceInt][2] = cache_get_field_float(i, "entranceIntZ"); EntranceData[i][entranceInt][3] = cache_get_field_float(i, "entranceIntA"); EntranceData[i][entranceInterior] = cache_get_field_int(i, "entranceInterior"); EntranceData[i][entranceExterior] = cache_get_field_int(i, "entranceExterior"); EntranceData[i][entranceExteriorVW] = cache_get_field_int(i, "entranceExteriorVW"); EntranceData[i][entranceType] = cache_get_field_int(i, "entranceType"); EntranceData[i][entranceCustom] = cache_get_field_int(i, "entranceCustom"); EntranceData[i][entranceWorld] = cache_get_field_int(i, "entranceWorld"); if (EntranceData[i][entranceType] == 3) CreateForklifts(i); Entrance_Refresh(i); } return 1; } forward Dropped_Load(); public Dropped_Load() { static rows, fields; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) if (i < MAX_DROPPED_ITEMS) { DroppedItems[i][droppedID] = cache_get_field_int(i, "ID"); cache_get_field_content(i, "itemName", DroppedItems[i][droppedItem], g_iHandle, 32); cache_get_field_content(i, "itemPlayer", DroppedItems[i][droppedPlayer], g_iHandle, 24); DroppedItems[i][droppedModel] = cache_get_field_int(i, "itemModel"); DroppedItems[i][droppedQuantity] = cache_get_field_int(i, "itemQuantity"); DroppedItems[i][droppedWeapon] = cache_get_field_int(i, "itemWeapon"); DroppedItems[i][droppedAmmo] = cache_get_field_int(i, "itemAmmo"); DroppedItems[i][droppedPos][0] = cache_get_field_float(i, "itemX"); DroppedItems[i][droppedPos][1] = cache_get_field_float(i, "itemY"); DroppedItems[i][droppedPos][2] = cache_get_field_float(i, "itemZ"); DroppedItems[i][droppedInt] = cache_get_field_int(i, "itemInt"); DroppedItems[i][droppedWorld] = cache_get_field_int(i, "itemWorld"); if (IsWeaponModel(DroppedItems[i][droppedModel])) { DroppedItems[i][droppedObject] = CreateDynamicObject(DroppedItems[i][droppedModel], DroppedItems[i][droppedPos][0], DroppedItems[i][droppedPos][1], DroppedItems[i][droppedPos][2], 93.7, 120.0, 120.0, DroppedItems[i][droppedWorld], DroppedItems[i][droppedInt]); } else { DroppedItems[i][droppedObject] = CreateDynamicObject(DroppedItems[i][droppedModel], DroppedItems[i][droppedPos][0], DroppedItems[i][droppedPos][1], DroppedItems[i][droppedPos][2], 0.0, 0.0, 0.0, DroppedItems[i][droppedWorld], DroppedItems[i][droppedInt]); } DroppedItems[i][droppedText3D] = CreateDynamic3DTextLabel(DroppedItems[i][droppedItem], COLOR_CYAN, DroppedItems[i][droppedPos][0], DroppedItems[i][droppedPos][1], DroppedItems[i][droppedPos][2], 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, DroppedItems[i][droppedWorld], DroppedItems[i][droppedInt]); } return 1; } forward Business_Load(); public Business_Load() { static rows, fields, str[64]; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) if (i < MAX_BUSINESSES) { BusinessData[i][bizExists] = true; BusinessData[i][bizID] = cache_get_field_int(i, "bizID"); cache_get_field_content(i, "bizName", BusinessData[i][bizName], g_iHandle, 32); cache_get_field_content(i, "bizMessage", BusinessData[i][bizMessage], g_iHandle, 128); BusinessData[i][bizOwner] = cache_get_field_int(i, "bizOwner"); BusinessData[i][bizType] = cache_get_field_int(i, "bizType"); BusinessData[i][bizPrice] = cache_get_field_int(i, "bizPrice"); BusinessData[i][bizPos][0] = cache_get_field_float(i, "bizPosX"); BusinessData[i][bizPos][1] = cache_get_field_float(i, "bizPosY"); BusinessData[i][bizPos][2] = cache_get_field_float(i, "bizPosZ"); BusinessData[i][bizPos][3] = cache_get_field_float(i, "bizPosA"); BusinessData[i][bizInt][0] = cache_get_field_float(i, "bizIntX"); BusinessData[i][bizInt][1] = cache_get_field_float(i, "bizIntY"); BusinessData[i][bizInt][2] = cache_get_field_float(i, "bizIntZ"); BusinessData[i][bizInt][3] = cache_get_field_float(i, "bizIntA"); BusinessData[i][bizSpawn][0] = cache_get_field_float(i, "bizSpawnX"); BusinessData[i][bizSpawn][1] = cache_get_field_float(i, "bizSpawnY"); BusinessData[i][bizSpawn][2] = cache_get_field_float(i, "bizSpawnZ"); BusinessData[i][bizSpawn][3] = cache_get_field_float(i, "bizSpawnA"); BusinessData[i][bizDeliver][0] = cache_get_field_float(i, "bizDeliverX"); BusinessData[i][bizDeliver][1] = cache_get_field_float(i, "bizDeliverY"); BusinessData[i][bizDeliver][2] = cache_get_field_float(i, "bizDeliverZ"); BusinessData[i][bizShipment] = cache_get_field_int(i, "bizShipment"); BusinessData[i][bizInterior] = cache_get_field_int(i, "bizInterior"); BusinessData[i][bizExterior] = cache_get_field_int(i, "bizExterior"); BusinessData[i][bizExteriorVW] = cache_get_field_int(i, "bizExteriorVW"); BusinessData[i][bizLocked] = cache_get_field_int(i, "bizLocked"); BusinessData[i][bizVault] = cache_get_field_int(i, "bizVault"); BusinessData[i][bizProducts] = cache_get_field_int(i, "bizProducts"); for (new j = 0; j < 20; j ++) { format(str, 32, "bizPrice%d", j + 1); BusinessData[i][bizPrices][j] = cache_get_field_int(i, str); } Business_Refresh(i); } for (new i = 0; i < MAX_BUSINESSES; i ++) if (BusinessData[i][bizExists]) { if (BusinessData[i][bizType] == 5) { format(str, sizeof(str), "SELECT * FROM `dealervehicles` WHERE `ID` = '%d'", BusinessData[i][bizID]); mysql_tquery(g_iHandle, str, "Business_LoadCars", "d", i); } else if (BusinessData[i][bizType] == 6) { format(str, sizeof(str), "SELECT * FROM `pumps` WHERE `ID` = '%d'", BusinessData[i][bizID]); mysql_tquery(g_iHandle, str, "Pump_Load", "d", i); } } return 1; } forward House_Load(); public House_Load() { static rows, fields, str[128]; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) if (i < MAX_HOUSES) { HouseData[i][houseExists] = true; HouseData[i][houseLights] = false; HouseData[i][houseID] = cache_get_field_int(i, "houseID"); HouseData[i][houseOwner] = cache_get_field_int(i, "houseOwner"); HouseData[i][housePrice] = cache_get_field_int(i, "housePrice"); cache_get_field_content(i, "houseAddress", HouseData[i][houseAddress], g_iHandle, 32); HouseData[i][housePos][0] = cache_get_field_float(i, "housePosX"); HouseData[i][housePos][1] = cache_get_field_float(i, "housePosY"); HouseData[i][housePos][2] = cache_get_field_float(i, "housePosZ"); HouseData[i][housePos][3] = cache_get_field_float(i, "housePosA"); HouseData[i][houseInt][0] = cache_get_field_float(i, "houseIntX"); HouseData[i][houseInt][1] = cache_get_field_float(i, "houseIntY"); HouseData[i][houseInt][2] = cache_get_field_float(i, "houseIntZ"); HouseData[i][houseInt][3] = cache_get_field_float(i, "houseIntA"); HouseData[i][houseInterior] = cache_get_field_int(i, "houseInterior"); HouseData[i][houseExterior] = cache_get_field_int(i, "houseExterior"); HouseData[i][houseExteriorVW] = cache_get_field_int(i, "houseExteriorVW"); HouseData[i][houseLocked] = cache_get_field_int(i, "houseLocked"); HouseData[i][houseMoney] = cache_get_field_int(i, "houseMoney"); for (new j = 0; j < 10; j ++) { format(str, 24, "houseWeapon%d", j + 1); HouseData[i][houseWeapons][j] = cache_get_field_int(i, str); format(str, 24, "houseAmmo%d", j + 1); HouseData[i][houseAmmo][j] = cache_get_field_int(i, str); } House_Refresh(i); } for (new i = 0; i < MAX_HOUSES; i ++) if (HouseData[i][houseExists]) { format(str, sizeof(str), "SELECT * FROM `housestorage` WHERE `ID` = '%d'", HouseData[i][houseID]); mysql_tquery(g_iHandle, str, "OnLoadStorage", "d", i); format(str, sizeof(str), "SELECT * FROM `furniture` WHERE `ID` = '%d'", HouseData[i][houseID]); mysql_tquery(g_iHandle, str, "OnLoadFurniture", "d", i); } return 1; } stock Car_GetRealID(carid) { if (carid == -1 || !CarData[carid][carExists] || CarData[carid][carVehicle] == INVALID_VEHICLE_ID) return INVALID_VEHICLE_ID; return CarData[carid][carVehicle]; } stock Car_GetID(vehicleid) { for (new i = 0; i != MAX_DYNAMIC_CARS; i ++) if (CarData[i][carExists] && CarData[i][carVehicle] == vehicleid) { return i; } return -1; } stock Car_Spawn(carid) { if (carid != -1 && CarData[carid][carExists]) { if (IsValidVehicle(CarData[carid][carVehicle])) DestroyVehicle(CarData[carid][carVehicle]); if (CarData[carid][carColor1] == -1) CarData[carid][carColor1] = random(127); if (CarData[carid][carColor2] == -1) CarData[carid][carColor2] = random(127); CarData[carid][carVehicle] = CreateVehicle(CarData[carid][carModel], CarData[carid][carPos][0], CarData[carid][carPos][1], CarData[carid][carPos][2], CarData[carid][carPos][3], CarData[carid][carColor1], CarData[carid][carColor2], (CarData[carid][carOwner] != 0) ? (-1) : (1200000)); if (CarData[carid][carVehicle] != INVALID_VEHICLE_ID) { if (CarData[carid][carPaintjob] != -1) { ChangeVehiclePaintjob(CarData[carid][carVehicle], CarData[carid][carPaintjob]); } if (CarData[carid][carLocked]) { new engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(CarData[carid][carVehicle], engine, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(CarData[carid][carVehicle], engine, lights, alarm, 1, bonnet, boot, objective); } for (new i = 0; i < 14; i ++) { if (CarData[carid][carMods][i]) AddVehicleComponent(CarData[carid][carVehicle], CarData[carid][carMods][i]); } ResetVehicle(CarData[carid][carVehicle]); return 1; } } return 0; } forward Car_Load(); public Car_Load() { static rows, fields, str[128]; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) if (i < MAX_DYNAMIC_CARS) { CarData[i][carExists] = true; CarData[i][carID] = cache_get_field_int(i, "carID"); CarData[i][carModel] = cache_get_field_int(i, "carModel"); CarData[i][carOwner] = cache_get_field_int(i, "carOwner"); CarData[i][carPos][0] = cache_get_field_float(i, "carPosX"); CarData[i][carPos][1] = cache_get_field_float(i, "carPosY"); CarData[i][carPos][2] = cache_get_field_float(i, "carPosZ"); CarData[i][carPos][3] = cache_get_field_float(i, "carPosR"); CarData[i][carColor1] = cache_get_field_int(i, "carColor1"); CarData[i][carColor2] = cache_get_field_int(i, "carColor2"); CarData[i][carPaintjob] = cache_get_field_int(i, "carPaintjob"); CarData[i][carLocked] = cache_get_field_int(i, "carLocked"); CarData[i][carImpounded] = cache_get_field_int(i, "carImpounded"); CarData[i][carImpoundPrice] = cache_get_field_int(i, "carImpoundPrice"); CarData[i][carFaction] = cache_get_field_int(i, "carFaction"); for (new j = 0; j < 14; j ++) { if (j < 5) { format(str, sizeof(str), "carWeapon%d", j + 1); CarData[i][carWeapons][j] = cache_get_field_int(i, str); format(str, sizeof(str), "carAmmo%d", j + 1); CarData[i][carAmmo][j] = cache_get_field_int(i, str); } format(str, sizeof(str), "carMod%d", j + 1); CarData[i][carMods][j] = cache_get_field_int(i, str); } Car_Spawn(i); } for (new i = 0; i < MAX_DYNAMIC_CARS; i ++) if (CarData[i][carExists]) { format(str, sizeof(str), "SELECT * FROM `carstorage` WHERE `ID` = '%d'", CarData[i][carID]); mysql_tquery(g_iHandle, str, "OnLoadCarStorage", "d", i); } return 1; } stock IsVehicleSeatUsed(vehicleid, seat) { foreach (new i : Player) if (IsPlayerInVehicle(i, vehicleid) && GetPlayerVehicleSeat(i) == seat) { return 1; } return 0; } stock RemoveFromVehicle(playerid) { if (IsPlayerInAnyVehicle(playerid)) { static Float:fX, Float:fY, Float:fZ; GetPlayerPos(playerid, fX, fY, fZ); SetPlayerPos(playerid, fX, fY, fZ + 1.5); } return 1; } stock GetAvailableSeat(vehicleid, start = 1) { new seats = GetVehicleMaxSeats(vehicleid); for (new i = start; i < seats; i ++) if (!IsVehicleSeatUsed(vehicleid, i)) { return i; } return -1; } stock GetVehicleFromBehind(vehicleid) { static Float:fCoords[7]; GetVehiclePos(vehicleid, fCoords[0], fCoords[1], fCoords[2]); GetVehicleZAngle(vehicleid, fCoords[3]); for (new i = 1; i != MAX_VEHICLES; i ++) if (i != vehicleid && GetVehiclePos(i, fCoords[4], fCoords[5], fCoords[6])) { if (floatabs(fCoords[0] - fCoords[4]) < 6 && floatabs(fCoords[1] - fCoords[5]) < 6 && floatabs(fCoords[2] - fCoords[6]) < 6) return i; } return INVALID_VEHICLE_ID; } stock GetVehicleBoot(vehicleid, &Float:x, &Float:y, &Float:z) { if (!GetVehicleModel(vehicleid) || vehicleid == INVALID_VEHICLE_ID) return (x = 0.0, y = 0.0, z = 0.0), 0; static Float:pos[7] ; GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_SIZE, pos[0], pos[1], pos[2]); GetVehiclePos(vehicleid, pos[3], pos[4], pos[5]); GetVehicleZAngle(vehicleid, pos[6]); x = pos[3] - (floatsqroot(pos[1] + pos[1]) * floatsin(-pos[6], degrees)); y = pos[4] - (floatsqroot(pos[1] + pos[1]) * floatcos(-pos[6], degrees)); z = pos[5]; return 1; } stock GetVehicleHood(vehicleid, &Float:x, &Float:y, &Float:z) { if (!GetVehicleModel(vehicleid) || vehicleid == INVALID_VEHICLE_ID) return (x = 0.0, y = 0.0, z = 0.0), 0; static Float:pos[7] ; GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_SIZE, pos[0], pos[1], pos[2]); GetVehiclePos(vehicleid, pos[3], pos[4], pos[5]); GetVehicleZAngle(vehicleid, pos[6]); x = pos[3] + (floatsqroot(pos[1] + pos[1]) * floatsin(-pos[6], degrees)); y = pos[4] + (floatsqroot(pos[1] + pos[1]) * floatcos(-pos[6], degrees)); z = pos[5]; return 1; } forward HarvestPlant(playerid, plantid); public HarvestPlant(playerid, plantid) { PlayerData[playerid][pHarvesting] = 0; if (Plant_Nearest(playerid) != plantid || GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK || !PlantData[plantid][plantExists]) return 0; switch (PlantData[plantid][plantType]) { case 1: { new id = Inventory_Add(playerid, "Marijuana", 1578, PlantData[plantid][plantDrugs]); if (id == -1) return SendErrorMessage(playerid, "You don't have any room in your inventory."); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has harvested %d grams of marijuana.", ReturnName(playerid, 0), PlantData[plantid][plantDrugs]); } case 2: { new id = Inventory_Add(playerid, "Cocaine", 1575, PlantData[plantid][plantDrugs]); if (id == -1) return SendErrorMessage(playerid, "You don't have any room in your inventory."); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has harvested %d grams of cocaine.", ReturnName(playerid, 0), PlantData[plantid][plantDrugs]); } case 3: { new id = Inventory_Add(playerid, "Heroin", 1577, PlantData[plantid][plantDrugs]); if (id == -1) return SendErrorMessage(playerid, "You don't have any room in your inventory."); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has harvested %d grams of heroin.", ReturnName(playerid, 0), PlantData[plantid][plantDrugs]); } } Plant_Delete(plantid); return 1; } forward OpenCrate(playerid, crateid); public OpenCrate(playerid, crateid) { if (Crate_Nearest(playerid) != crateid || !CrateData[crateid][crateExists] || !IsPlayerSpawned(playerid) || !PlayerData[playerid][pOpeningCrate]) return 0; PlayerData[playerid][pOpeningCrate] = 0; ClearAnimations(playerid); TogglePlayerControllable(playerid, 1); if (Inventory_Items(playerid) >= MAX_INVENTORY - 4) return SendErrorMessage(playerid, "You don't have any room in your inventory for 4 drug packages."); Inventory_Add(playerid, "Cocaine Seeds", 1575, 20); Inventory_Add(playerid, "Marijuana Seeds", 1578, 20); Inventory_Add(playerid, "Heroin Opium Seeds", 1577, 10); Inventory_Add(playerid, "Steroids", 1241, 5); Crate_Delete(crateid); SendServerMessage(playerid, "You have found an assortment of steroids and drug seeds (added to inventory)."); return 1; } forward CraftParts(playerid, crateid); public CraftParts(playerid, crateid) { if (PlayerData[playerid][pCarryCrate] != crateid || !CrateData[crateid][crateExists] || !IsPlayerSpawned(playerid) || !PlayerData[playerid][pCrafting]) return 0; PlayerData[playerid][pCrafting] = 0; PlayerData[playerid][pCarryCrate] = -1; TogglePlayerControllable(playerid, 1); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE); RemovePlayerAttachedObject(playerid, 4); Log_Write("logs/craft_log.txt", "[%s] %s has crafted a %s crate.", ReturnDate(), ReturnName(playerid, 0), Crate_GetType(CrateData[crateid][crateType])); switch (CrateData[crateid][crateType]) { case 1: { if (Inventory_Items(playerid) >= MAX_INVENTORY - 4) return SendErrorMessage(playerid, "You don't have any room in your inventory for 4 melee parts."); Inventory_Add(playerid, "Golf Club", 333); Inventory_Add(playerid, "Knife", 335); Inventory_Add(playerid, "Shovel", 337); Inventory_Add(playerid, "Katana", 339); Crate_Delete(crateid); SendServerMessage(playerid, "You have crafted 4 melee weapons (added to inventory)."); } case 2: { if (Inventory_Items(playerid) >= MAX_INVENTORY - 2) return SendErrorMessage(playerid, "You don't have any room in your inventory for 2 pistols."); Inventory_Add(playerid, "Colt 45", 346); Inventory_Add(playerid, "Desert Eagle", 348); Crate_Delete(crateid); SendServerMessage(playerid, "You have crafted 2 pistols from pistol parts (added to inventory)."); } case 3: { if (Inventory_Items(playerid) >= MAX_INVENTORY - 3) return SendErrorMessage(playerid, "You don't have any room in your inventory for 3 SMG's."); Inventory_Add(playerid, "Micro SMG", 352); Inventory_Add(playerid, "Tec-9", 372); Inventory_Add(playerid, "MP5", 353); Crate_Delete(crateid); SendServerMessage(playerid, "You have crafted 3 SMG's from SMG parts (added to inventory)."); } case 4: { if (Inventory_Items(playerid) >= MAX_INVENTORY - 2) return SendErrorMessage(playerid, "You don't have any room in your inventory for 2 shotguns."); Inventory_Add(playerid, "Shotgun", 349); Crate_Delete(crateid); SendServerMessage(playerid, "You have crafted a shotgun from Shotgun parts (added to inventory)."); } case 5: { if (Inventory_Items(playerid) >= MAX_INVENTORY - 3) return SendErrorMessage(playerid, "You don't have any room in your inventory for 3 Rifles."); Inventory_Add(playerid, "AK-47", 355); Inventory_Add(playerid, "Rifle", 357); Inventory_Add(playerid, "Sniper", 358); Crate_Delete(crateid); SendServerMessage(playerid, "You have crafted 3 rifles from Rifle parts (added to inventory)."); } } return 1; } forward FirstAidUpdate(playerid); public FirstAidUpdate(playerid) { static Float:health; GetPlayerHealth(playerid, health); if (!IsPlayerInAnyVehicle(playerid) && GetPlayerAnimationIndex(playerid) != 1508) ApplyAnimation(playerid, "SWAT", "gnstwall_injurd", 4.0, 1, 0, 0, 0, 0); if (health >= 95.0) { SetPlayerHealth(playerid, 100.0); SendServerMessage(playerid, "Your first aid kit has been used up."); if (!IsPlayerInAnyVehicle(playerid)) { PlayerData[playerid][pLoopAnim] = true; ShowPlayerFooter(playerid, "Press ~y~SPRINT~w~ to stop the animation."); } PlayerData[playerid][pBleeding] = 0; PlayerData[playerid][pBleedTime] = 0; PlayerData[playerid][pFirstAid] = false; KillTimer(PlayerData[playerid][pAidTimer]); } else { SetPlayerHealth(playerid, floatadd(health, 4.0)); } return 1; } forward RepairCar(playerid, vehicleid); public RepairCar(playerid, vehicleid) { if (PlayerData[playerid][pJob] != JOB_MECHANIC || !IsPlayerNearHood(playerid, vehicleid)) { return 0; } SetVehicleHealth(vehicleid, 1000.0); GameTextForPlayer(playerid, " ", 1, 3); PlayerData[playerid][pRepairTime] = gettime() + 60; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has successfully repaired the vehicle.", ReturnName(playerid, 0)); return 1; } forward Business_LoadCars(bizid); public Business_LoadCars(bizid) { static rows, fields; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i != rows; i ++) { DealershipCars[bizid][i][vehID] = cache_get_field_int(i, "vehID"); DealershipCars[bizid][i][vehModel] = cache_get_field_int(i, "vehModel"); DealershipCars[bizid][i][vehPrice] = cache_get_field_int(i, "vehPrice"); } return 1; } forward OnLoadFurniture(houseid); public OnLoadFurniture(houseid) { static rows, fields, id = -1; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i != rows; i ++) if ((id = Furniture_GetFreeID()) != -1) { FurnitureData[id][furnitureExists] = true; FurnitureData[id][furnitureHouse] = houseid; cache_get_field_content(i, "furnitureName", FurnitureData[id][furnitureName], g_iHandle, 32); FurnitureData[id][furnitureID] = cache_get_field_int(i, "furnitureID"); FurnitureData[id][furnitureModel] = cache_get_field_int(i, "furnitureModel"); FurnitureData[id][furniturePos][0] = cache_get_field_float(i, "furnitureX"); FurnitureData[id][furniturePos][1] = cache_get_field_float(i, "furnitureY"); FurnitureData[id][furniturePos][2] = cache_get_field_float(i, "furnitureZ"); FurnitureData[id][furnitureRot][0] = cache_get_field_float(i, "furnitureRX"); FurnitureData[id][furnitureRot][1] = cache_get_field_float(i, "furnitureRY"); FurnitureData[id][furnitureRot][2] = cache_get_field_float(i, "furnitureRZ"); Furniture_Refresh(id); } return 1; } Furniture_GetCount(houseid) { new count; for (new i = 0; i < MAX_FURNITURE; i ++) if (FurnitureData[i][furnitureExists] && FurnitureData[i][furnitureHouse] == houseid) { count++; } return count; } Furniture_GetFreeID() { for (new i = 0; i != MAX_FURNITURE; i ++) if (!FurnitureData[i][furnitureExists]) { return i; } return -1; } Furniture_Refresh(furnitureid) { if (furnitureid != -1 && FurnitureData[furnitureid][furnitureExists]) { if (IsValidDynamicObject(FurnitureData[furnitureid][furnitureObject])) DestroyDynamicObject(FurnitureData[furnitureid][furnitureObject]); FurnitureData[furnitureid][furnitureObject] = CreateDynamicObject( FurnitureData[furnitureid][furnitureModel], FurnitureData[furnitureid][furniturePos][0], FurnitureData[furnitureid][furniturePos][1], FurnitureData[furnitureid][furniturePos][2], FurnitureData[furnitureid][furnitureRot][0], FurnitureData[furnitureid][furnitureRot][1], FurnitureData[furnitureid][furnitureRot][2], HouseData[FurnitureData[furnitureid][furnitureHouse]][houseID] + 5000, HouseData[FurnitureData[furnitureid][furnitureHouse]][houseInterior] ); } return 1; } Furniture_Save(furnitureid) { static string[300]; format(string, sizeof(string), "UPDATE `furniture` SET `furnitureModel` = '%d', `furnitureName` = '%s', `furnitureX` = '%.4f', `furnitureY` = '%.4f', `furnitureZ` = '%.4f', `furnitureRX` = '%.4f', `furnitureRY` = '%.4f', `furnitureRZ` = '%.4f' WHERE `ID` = '%d' AND `furnitureID` = '%d'", FurnitureData[furnitureid][furnitureModel], FurnitureData[furnitureid][furnitureName], FurnitureData[furnitureid][furniturePos][0], FurnitureData[furnitureid][furniturePos][1], FurnitureData[furnitureid][furniturePos][2], FurnitureData[furnitureid][furnitureRot][0], FurnitureData[furnitureid][furnitureRot][1], FurnitureData[furnitureid][furnitureRot][2], HouseData[FurnitureData[furnitureid][furnitureHouse]][houseID], FurnitureData[furnitureid][furnitureID] ); return mysql_tquery(g_iHandle, string); } Furniture_Add(houseid, name[], modelid, Float:x, Float:y, Float:z, Float:rx = 0.0, Float:ry = 0.0, Float:rz = 0.0) { static string[64], id = -1; if (houseid == -1 || !HouseData[houseid][houseExists]) return 0; if ((id = Furniture_GetFreeID()) != -1) { FurnitureData[id][furnitureExists] = true; format(FurnitureData[id][furnitureName], 32, name); FurnitureData[id][furnitureHouse] = houseid; FurnitureData[id][furnitureModel] = modelid; FurnitureData[id][furniturePos][0] = x; FurnitureData[id][furniturePos][1] = y; FurnitureData[id][furniturePos][2] = z; FurnitureData[id][furnitureRot][0] = rx; FurnitureData[id][furnitureRot][1] = ry; FurnitureData[id][furnitureRot][2] = rz; Furniture_Refresh(id); format(string, sizeof(string), "INSERT INTO `furniture` (`ID`) VALUES(%d)", HouseData[houseid][houseID]); mysql_tquery(g_iHandle, string, "OnFurnitureCreated", "d", id); return id; } return -1; } Furniture_Delete(furnitureid) { static string[72]; if (furnitureid != -1 && FurnitureData[furnitureid][furnitureExists]) { format(string, sizeof(string), "DELETE FROM `furniture` WHERE `ID` = '%d' AND `furnitureID` = '%d'", HouseData[FurnitureData[furnitureid][furnitureHouse]][houseID], FurnitureData[furnitureid][furnitureID]); mysql_tquery(g_iHandle, string); FurnitureData[furnitureid][furnitureExists] = false; FurnitureData[furnitureid][furnitureModel] = 0; DestroyDynamicObject(FurnitureData[furnitureid][furnitureObject]); } return 1; } forward OnLoadCarStorage(carid); public OnLoadCarStorage(carid) { static rows, fields, str[32]; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i != rows; i ++) { CarStorage[carid][i][cItemExists] = true; CarStorage[carid][i][cItemID] = cache_get_field_int(i, "itemID"); CarStorage[carid][i][cItemModel] = cache_get_field_int(i, "itemModel"); CarStorage[carid][i][cItemQuantity] = cache_get_field_int(i, "itemQuantity"); cache_get_field_content(i, "itemName", str, g_iHandle, sizeof(str)); strpack(CarStorage[carid][i][cItemName], str, 32 char); } return 1; } forward OnLoadStorage(houseid); public OnLoadStorage(houseid) { static rows, fields, str[32]; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i != rows; i ++) { HouseStorage[houseid][i][hItemExists] = true; HouseStorage[houseid][i][hItemID] = cache_get_field_int(i, "itemID"); HouseStorage[houseid][i][hItemModel] = cache_get_field_int(i, "itemModel"); HouseStorage[houseid][i][hItemQuantity] = cache_get_field_int(i, "itemQuantity"); cache_get_field_content(i, "itemName", str, g_iHandle, sizeof(str)); strpack(HouseStorage[houseid][i][hItemName], str, 32 char); } return 1; } forward OnLoadBackpack(id); public OnLoadBackpack(id) { static rows, fields, itemid = -1; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i != rows; i ++) if ((itemid = Backpack_GetFreeItem()) != -1) { BackpackItems[itemid][bItemExists] = true; BackpackItems[itemid][bItemBackpack] = id; BackpackItems[itemid][bItemID] = cache_get_field_int(i, "itemID"); BackpackItems[itemid][bItemModel] = cache_get_field_int(i, "itemModel"); BackpackItems[itemid][bItemQuantity] = cache_get_field_int(i, "itemQuantity"); cache_get_field_content(i, "itemName", BackpackItems[itemid][bItemName], g_iHandle, 32); } return 1; } House_Save(houseid) { static query[1536]; format(query, sizeof(query), "UPDATE `houses` SET `houseOwner` = '%d', `housePrice` = '%d', `houseAddress` = '%s', `housePosX` = '%.4f', `housePosY` = '%.4f', `housePosZ` = '%.4f', `housePosA` = '%.4f', `houseIntX` = '%.4f', `houseIntY` = '%.4f', `houseIntZ` = '%.4f', `houseIntA` = '%.4f', `houseInterior` = '%d', `houseExterior` = '%d', `houseExteriorVW` = '%d'", HouseData[houseid][houseOwner], HouseData[houseid][housePrice], SQL_ReturnEscaped(HouseData[houseid][houseAddress]), HouseData[houseid][housePos][0], HouseData[houseid][housePos][1], HouseData[houseid][housePos][2], HouseData[houseid][housePos][3], HouseData[houseid][houseInt][0], HouseData[houseid][houseInt][1], HouseData[houseid][houseInt][2], HouseData[houseid][houseInt][3], HouseData[houseid][houseInterior], HouseData[houseid][houseExterior], HouseData[houseid][houseExteriorVW] ); for (new i = 0; i < 10; i ++) { format(query, sizeof(query), "%s, `houseWeapon%d` = '%d', `houseAmmo%d` = '%d'", query, i + 1, HouseData[houseid][houseWeapons][i], i + 1, HouseData[houseid][houseAmmo][i]); } format(query, sizeof(query), "%s, `houseLocked` = '%d', `houseMoney` = '%d' WHERE `houseID` = '%d'", query, HouseData[houseid][houseLocked], HouseData[houseid][houseMoney], HouseData[houseid][houseID] ); return mysql_tquery(g_iHandle, query); } /*House_GetCount(playerid) { new count = 0; for (new i = 0; i != MAX_HOUSES; i ++) if (HouseData[i][houseExists] && House_IsOwner(playerid, i)) { count++; } return count; }*/ House_Inside(playerid) { if (PlayerData[playerid][pHouse] != -1) { for (new i = 0; i != MAX_HOUSES; i ++) if (HouseData[i][houseExists] && HouseData[i][houseID] == PlayerData[playerid][pHouse] && GetPlayerInterior(playerid) == HouseData[i][houseInterior] && GetPlayerVirtualWorld(playerid) > 0) { return i; } } return -1; } Gate_Nearest(playerid) { for (new i = 0; i != MAX_GATES; i ++) if (GateData[i][gateExists] && IsPlayerInRangeOfPoint(playerid, GateData[i][gateRadius], GateData[i][gatePos][0], GateData[i][gatePos][1], GateData[i][gatePos][2])) { if (GetPlayerInterior(playerid) == GateData[i][gateInterior] && GetPlayerVirtualWorld(playerid) == GateData[i][gateWorld]) return i; } return -1; } Arrest_Nearest(playerid) { for (new i = 0; i != MAX_ARREST_POINTS; i ++) if (ArrestData[i][arrestExists] && IsPlayerInRangeOfPoint(playerid, 4.0, ArrestData[i][arrestPos][0], ArrestData[i][arrestPos][1], ArrestData[i][arrestPos][2])) { if (GetPlayerInterior(playerid) == ArrestData[i][arrestInterior] && GetPlayerVirtualWorld(playerid) == ArrestData[i][arrestWorld]) return i; } return -1; } Pump_Nearest(playerid) { for (new i = 0; i != MAX_GAS_PUMPS; i ++) if (PumpData[i][pumpExists] && IsPlayerInRangeOfPoint(playerid, 4.0, PumpData[i][pumpPos][0], PumpData[i][pumpPos][1], PumpData[i][pumpPos][2]) && PumpData[i][pumpExists]) { return i; } return -1; } Plant_Nearest(playerid) { for (new i = 0; i != MAX_DRUG_PLANTS; i ++) if (PlantData[i][plantExists] && IsPlayerInRangeOfPoint(playerid, 4.0, PlantData[i][plantPos][0], PlantData[i][plantPos][1], PlantData[i][plantPos][2])) { if (GetPlayerInterior(playerid) == PlantData[i][plantInterior] && GetPlayerVirtualWorld(playerid) == PlantData[i][plantWorld]) return i; } return -1; } Crate_Highest(crateid) { new Float:height = -1.0, id = -1; for (new i = 0; i != MAX_CRATES; i ++) if (i != id && CrateData[i][crateExists] && CrateData[i][crateVehicle] == INVALID_VEHICLE_ID && CrateData[i][cratePos][0] == CrateData[crateid][cratePos][0] && CrateData[i][cratePos][1] == CrateData[crateid][cratePos][1] && CrateData[i][cratePos][2] > CrateData[crateid][cratePos][2] && !IsCrateInUse(crateid)) { if (CrateData[i][cratePos][2] > height) { height = CrateData[i][cratePos][2]; id = i; } } return id; } Crate_Nearest(playerid, Float:radius = 2.5) { if (PlayerData[playerid][pCarryCrate] != -1 && CrateData[PlayerData[playerid][pCarryCrate]][crateExists]) return PlayerData[playerid][pCarryCrate]; for (new i = 0; i != MAX_CRATES; i ++) if (CrateData[i][crateExists] && IsPlayerInRangeOfPoint(playerid, radius, CrateData[i][cratePos][0], CrateData[i][cratePos][1], CrateData[i][cratePos][2])) { if (GetPlayerInterior(playerid) == CrateData[i][crateInterior] && GetPlayerVirtualWorld(playerid) == CrateData[i][crateWorld]) return i; } return -1; } House_Nearest(playerid) { for (new i = 0; i != MAX_HOUSES; i ++) if (HouseData[i][houseExists] && IsPlayerInRangeOfPoint(playerid, 2.5, HouseData[i][housePos][0], HouseData[i][housePos][1], HouseData[i][housePos][2])) { if (GetPlayerInterior(playerid) == HouseData[i][houseExterior] && GetPlayerVirtualWorld(playerid) == HouseData[i][houseExteriorVW]) return i; } return -1; } House_Refresh(houseid) { if (houseid != -1 && HouseData[houseid][houseExists]) { if (IsValidDynamic3DTextLabel(HouseData[houseid][houseText3D])) DestroyDynamic3DTextLabel(HouseData[houseid][houseText3D]); if (IsValidDynamicPickup(HouseData[houseid][housePickup])) DestroyDynamicPickup(HouseData[houseid][housePickup]); if (IsValidDynamicMapIcon(HouseData[houseid][houseMapIcon])) DestroyDynamicMapIcon(HouseData[houseid][houseMapIcon]); static string[128]; if (!HouseData[houseid][houseOwner]) { format(string, sizeof(string), "[%s]\n%s", FormatNumber(HouseData[houseid][housePrice]), HouseData[houseid][houseAddress]); HouseData[houseid][houseText3D] = CreateDynamic3DTextLabel(string, 0x33AA33FF, HouseData[houseid][housePos][0], HouseData[houseid][housePos][1], HouseData[houseid][housePos][2], 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, HouseData[houseid][houseExteriorVW], HouseData[houseid][houseExterior]); } else { format(string, sizeof(string), "%s", HouseData[houseid][houseAddress]); HouseData[houseid][houseText3D] = CreateDynamic3DTextLabel(string, COLOR_WHITE, HouseData[houseid][housePos][0], HouseData[houseid][housePos][1], HouseData[houseid][housePos][2], 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, HouseData[houseid][houseExteriorVW], HouseData[houseid][houseExterior]); } HouseData[houseid][housePickup] = CreateDynamicPickup(1273, 23, HouseData[houseid][housePos][0], HouseData[houseid][housePos][1], HouseData[houseid][housePos][2], HouseData[houseid][houseExteriorVW], HouseData[houseid][houseExterior]); HouseData[houseid][houseMapIcon] = CreateDynamicMapIcon(HouseData[houseid][housePos][0], HouseData[houseid][housePos][1], HouseData[houseid][housePos][2], (HouseData[houseid][houseOwner] != 0) ? (32) : (31), 0, HouseData[houseid][houseExteriorVW], HouseData[houseid][houseExterior]); } return 1; } Car_GetCount(playerid) { new count = 0; for (new i = 0; i != MAX_DYNAMIC_CARS; i ++) { if (CarData[i][carExists] && CarData[i][carOwner] == PlayerData[playerid][pID]) { count++; } } return count; } House_GetCount(playerid) { new count = 0; for (new i = 0; i != MAX_HOUSES; i ++) { if (HouseData[i][houseExists] && House_IsOwner(playerid, i)) { count++; } } return count; } Business_GetCount(playerid) { new count = 0; for (new i = 0; i != MAX_BUSINESSES; i ++) { if (BusinessData[i][bizExists] && Business_IsOwner(playerid, i)) { count++; } } return count; } Car_IsOwner(playerid, carid) { if (!PlayerData[playerid][pLogged] || PlayerData[playerid][pID] == -1) return 0; if ((CarData[carid][carExists] && CarData[carid][carOwner] != 0) && CarData[carid][carOwner] == PlayerData[playerid][pID]) return 1; return 0; } Car_WeaponStorage(playerid, carid) { if (!CarData[carid][carExists] || CarData[carid][carLocked]) return 0; static string[164]; string[0] = 0; for (new i = 0; i < 5; i ++) { if (22 <= CarData[carid][carWeapons][i] <= 38) format(string, sizeof(string), "%s%s - Ammo: %d\n", string, ReturnWeaponName(CarData[carid][carWeapons][i]), CarData[carid][carAmmo][i]); else format(string, sizeof(string), "%s%s\n", string, (CarData[carid][carWeapons][i]) ? (ReturnWeaponName(CarData[carid][carWeapons][i])) : ("Empty Slot")); } Dialog_Show(playerid, Trunk, DIALOG_STYLE_LIST, "Car Trunk", string, "Select", "Cancel"); return 1; } Car_ShowTrunk(playerid, carid) { static string[MAX_CAR_STORAGE * 32], name[32]; string[0] = 0; for (new i = 0; i != MAX_CAR_STORAGE; i ++) { if (!CarStorage[carid][i][cItemExists]) format(string, sizeof(string), "%sEmpty Slot\n", string); else { strunpack(name, CarStorage[carid][i][cItemName]); if (CarStorage[carid][i][cItemQuantity] == 1) { format(string, sizeof(string), "%s%s\n", string, name); } else format(string, sizeof(string), "%s%s (%d)\n", string, name, CarStorage[carid][i][cItemQuantity]); } } strcat(string, "Weapon Storage"); PlayerData[playerid][pStorageSelect] = 0; Dialog_Show(playerid, CarStorage, DIALOG_STYLE_LIST, "Car Storage", string, "Select", "Cancel"); return 1; } stock IsNearFactionLocker(playerid) { new factionid = PlayerData[playerid][pFaction]; if (factionid == -1) return 0; if (IsPlayerInRangeOfPoint(playerid, 3.0, FactionData[factionid][factionLockerPos][0], FactionData[factionid][factionLockerPos][1], FactionData[factionid][factionLockerPos][2]) && GetPlayerInterior(playerid) == FactionData[factionid][factionLockerInt] && GetPlayerVirtualWorld(playerid) == FactionData[factionid][factionLockerWorld]) return 1; return 0; } stock GetFactionByID(sqlid) { for (new i = 0; i != MAX_FACTIONS; i ++) if (FactionData[i][factionExists] && FactionData[i][factionID] == sqlid) return i; return -1; } SetFaction(playerid, id) { if (id != -1 && FactionData[id][factionExists]) { PlayerData[playerid][pFaction] = id; PlayerData[playerid][pFactionID] = FactionData[id][factionID]; } return 1; } SetFactionColor(playerid) { new factionid = PlayerData[playerid][pFaction]; if (factionid != -1) return SetPlayerColor(playerid, RemoveAlpha(FactionData[factionid][factionColor])); return 0; } Faction_Update(factionid) { if (factionid != -1 || FactionData[factionid][factionExists]) { foreach (new i : Player) if (PlayerData[i][pFaction] == factionid) { if (GetFactionType(i) == FACTION_GANG || (GetFactionType(i) != FACTION_GANG && PlayerData[i][pOnDuty])) SetFactionColor(i); } } return 1; } Faction_Refresh(factionid) { if (factionid != -1 && FactionData[factionid][factionExists]) { if (FactionData[factionid][factionLockerPos][0] != 0.0 && FactionData[factionid][factionLockerPos][1] != 0.0 && FactionData[factionid][factionLockerPos][2] != 0.0) { static string[128]; if (IsValidDynamicPickup(FactionData[factionid][factionPickup])) DestroyDynamicPickup(FactionData[factionid][factionPickup]); if (IsValidDynamic3DTextLabel(FactionData[factionid][factionText3D])) DestroyDynamic3DTextLabel(FactionData[factionid][factionText3D]); FactionData[factionid][factionPickup] = CreateDynamicPickup(1239, 23, FactionData[factionid][factionLockerPos][0], FactionData[factionid][factionLockerPos][1], FactionData[factionid][factionLockerPos][2], FactionData[factionid][factionLockerWorld], FactionData[factionid][factionLockerInt]); format(string, sizeof(string), "[Locker %d]\n{FFFFFF}/flocker to access the locker.", factionid); FactionData[factionid][factionText3D] = CreateDynamic3DTextLabel(string, COLOR_DARKBLUE, FactionData[factionid][factionLockerPos][0], FactionData[factionid][factionLockerPos][1], FactionData[factionid][factionLockerPos][2], 15.0, INVALID_VEHICLE_ID, INVALID_PLAYER_ID, 0, FactionData[factionid][factionLockerWorld], FactionData[factionid][factionLockerInt]); } } return 1; } Faction_Save(factionid) { static query[2048]; format(query, sizeof(query), "UPDATE `factions` SET `factionName` = '%s', `factionColor` = '%d', `factionType` = '%d', `factionRanks` = '%d', `factionLockerX` = '%.4f', `factionLockerY` = '%.4f', `factionLockerZ` = '%.4f', `factionLockerInt` = '%d', `factionLockerWorld` = '%d', `SpawnX` = '%f', `SpawnY` = '%f', `SpawnZ` = '%f', `SpawnInterior` = '%d', `SpawnVW` = '%d'", SQL_ReturnEscaped(FactionData[factionid][factionName]), FactionData[factionid][factionColor], FactionData[factionid][factionType], FactionData[factionid][factionRanks], FactionData[factionid][factionLockerPos][0], FactionData[factionid][factionLockerPos][1], FactionData[factionid][factionLockerPos][2], FactionData[factionid][factionLockerInt], FactionData[factionid][factionLockerWorld], FactionData[factionid][SpawnX], FactionData[factionid][SpawnY], FactionData[factionid][SpawnZ], FactionData[factionid][SpawnInterior], FactionData[factionid][SpawnVW] ); for (new i = 0; i < 10; i ++) { if (i < 8) format(query, sizeof(query), "%s, `factionSkin%d` = '%d', `factionWeapon%d` = '%d', `factionAmmo%d` = '%d'", query, i + 1, FactionData[factionid][factionSkins][i], i + 1, FactionData[factionid][factionWeapons][i], i + 1, FactionData[factionid][factionAmmo][i]); else format(query, sizeof(query), "%s, `factionWeapon%d` = '%d', `factionAmmo%d` = '%d'", query, i + 1, FactionData[factionid][factionWeapons][i], i + 1, FactionData[factionid][factionAmmo][i]); } format(query, sizeof(query), "%s WHERE `factionID` = '%d'", query, FactionData[factionid][factionID] ); return mysql_tquery(g_iHandle, query); } stock Faction_SaveRanks(factionid) { static query[768]; format(query, sizeof(query), "UPDATE `factions` SET `factionRank1` = '%s', `factionRank2` = '%s', `factionRank3` = '%s', `factionRank4` = '%s', `factionRank5` = '%s', `factionRank6` = '%s', `factionRank7` = '%s', `factionRank8` = '%s', `factionRank9` = '%s', `factionRank10` = '%s', `factionRank11` = '%s', `factionRank12` = '%s', `factionRank13` = '%s', `factionRank14` = '%s', `factionRank15` = '%s' WHERE `factionID` = '%d'", FactionRanks[factionid][0], FactionRanks[factionid][1], FactionRanks[factionid][2], FactionRanks[factionid][3], FactionRanks[factionid][4], FactionRanks[factionid][5], FactionRanks[factionid][6], FactionRanks[factionid][7], FactionRanks[factionid][8], FactionRanks[factionid][9], FactionRanks[factionid][10], FactionRanks[factionid][11], FactionRanks[factionid][12], FactionRanks[factionid][13], FactionRanks[factionid][14], FactionData[factionid][factionID] ); return mysql_tquery(g_iHandle, query); } Faction_Delete(factionid) { if (factionid != -1 && FactionData[factionid][factionExists]) { new string[64]; format(string, sizeof(string), "DELETE FROM `factions` WHERE `factionID` = '%d'", FactionData[factionid][factionID]); mysql_tquery(g_iHandle, string); format(string, sizeof(string), "UPDATE `characters` SET `Faction` = '-1' WHERE `Faction` = '%d'", FactionData[factionid][factionID]); mysql_tquery(g_iHandle, string); foreach (new i : Player) { if (PlayerData[i][pFaction] == factionid) { PlayerData[i][pFaction] = -1; PlayerData[i][pFactionID] = -1; PlayerData[i][pFactionRank] = -1; } if (PlayerData[i][pFactionEdit] == factionid) { PlayerData[i][pFactionEdit] = -1; } } if (IsValidDynamicPickup(FactionData[factionid][factionPickup])) DestroyDynamicPickup(FactionData[factionid][factionPickup]); if (IsValidDynamic3DTextLabel(FactionData[factionid][factionText3D])) DestroyDynamic3DTextLabel(FactionData[factionid][factionText3D]); FactionData[factionid][factionExists] = false; FactionData[factionid][factionType] = 0; FactionData[factionid][factionID] = 0; } return 1; } stock GetFactionType(playerid) { if (PlayerData[playerid][pFaction] == -1) return 0; return (FactionData[PlayerData[playerid][pFaction]][factionType]); } Faction_ShowRanks(playerid, factionid) { if (factionid != -1 && FactionData[factionid][factionExists]) { static string[640]; string[0] = 0; for (new i = 0; i < FactionData[factionid][factionRanks]; i ++) format(string, sizeof(string), "%sRank %d: %s\n", string, i + 1, FactionRanks[factionid][i]); PlayerData[playerid][pFactionEdit] = factionid; Dialog_Show(playerid, EditRanks, DIALOG_STYLE_LIST, FactionData[factionid][factionName], string, "Change", "Cancel"); } return 1; } Faction_Create(name[], type) { for (new i = 0; i != MAX_FACTIONS; i ++) if (!FactionData[i][factionExists]) { format(FactionData[i][factionName], 32, name); FactionData[i][factionExists] = true; FactionData[i][factionColor] = 0xFFFFFF00; FactionData[i][factionType] = type; FactionData[i][factionRanks] = 5; FactionData[i][factionLockerPos][0] = 0.0; FactionData[i][factionLockerPos][1] = 0.0; FactionData[i][factionLockerPos][2] = 0.0; FactionData[i][factionLockerInt] = 0; FactionData[i][factionLockerWorld] = 0; for (new j = 0; j < 8; j ++) { FactionData[i][factionSkins][j] = 0; } for (new j = 0; j < 10; j ++) { FactionData[i][factionWeapons][j] = 0; FactionData[i][factionAmmo][j] = 0; } for (new j = 0; j < 15; j ++) { format(FactionRanks[i][j], 32, "Rank %d", j + 1); } mysql_tquery(g_iHandle, "INSERT INTO `factions` (`factionType`) VALUES(0)", "OnFactionCreated", "d", i); return i; } return -1; } Plant_Delete(plantid) { if (plantid != -1 && PlantData[plantid][plantExists]) { new string[64]; format(string, sizeof(string), "DELETE FROM `plants` WHERE `plantID` = '%d'", PlantData[plantid][plantID]); mysql_tquery(g_iHandle, string); if (IsValidDynamic3DTextLabel(PlantData[plantid][plantText3D])) DestroyDynamic3DTextLabel(PlantData[plantid][plantText3D]); if (IsValidDynamicObject(PlantData[plantid][plantObject])) DestroyDynamicObject(PlantData[plantid][plantObject]); PlantData[plantid][plantExists] = false; PlantData[plantid][plantID] = 0; PlantData[plantid][plantDrugs] = 0; } return 1; } Plant_Create(playerid, type) { static Float:x, Float:y, Float:z, Float:angle; if (GetPlayerPos(playerid, x, y, z) && GetPlayerFacingAngle(playerid, angle)) { for (new i = 0; i != MAX_DRUG_PLANTS; i ++) if (!PlantData[i][plantExists]) { PlantData[i][plantExists] = true; PlantData[i][plantType] = type; PlantData[i][plantDrugs] = 0; PlantData[i][plantPos][0] = x; PlantData[i][plantPos][1] = y; PlantData[i][plantPos][2] = z; PlantData[i][plantPos][3] = angle; PlantData[i][plantInterior] = GetPlayerInterior(playerid); PlantData[i][plantWorld] = GetPlayerVirtualWorld(playerid); mysql_tquery(g_iHandle, "INSERT INTO `plants` (`plantType`) VALUES(0)", "OnPlantCreated", "d", i); Plant_Refresh(i); return i; } } return -1; } Plant_MaxGrams(type) { new grams; switch (type) { case 1: grams = 40; // Marijuana plant case 2: grams = 30; // Cocaine plant case 3: grams = 25; // Heroin plant default: grams = 0; } return grams; } Plant_Save(plantid) { static query[256]; format(query, sizeof(query), "UPDATE `plants` SET `plantType` = '%d', `plantDrugs` = '%d', `plantX` = '%.4f', `plantY` = '%.4f', `plantZ` = '%.4f', `plantA` = '%.4f', `plantInterior` = '%d', `plantWorld` = '%d' WHERE `plantID` = '%d'", PlantData[plantid][plantType], PlantData[plantid][plantDrugs], PlantData[plantid][plantPos][0], PlantData[plantid][plantPos][1], PlantData[plantid][plantPos][2], PlantData[plantid][plantPos][3], PlantData[plantid][plantInterior], PlantData[plantid][plantWorld], PlantData[plantid][plantID] ); return mysql_tquery(g_iHandle, query); } Plant_GetType(type) { static str[16]; switch (type) { case 1: str = "Marijuana"; case 2: str = "Cocaine"; case 3: str = "Heroin"; } return str; } Plant_Refresh(plantid) { if (plantid != -1 && PlantData[plantid][plantExists]) { static string[128]; if (IsValidDynamicObject(PlantData[plantid][plantObject])) DestroyDynamicObject(PlantData[plantid][plantObject]); if (IsValidDynamic3DTextLabel(PlantData[plantid][plantText3D])) DestroyDynamic3DTextLabel(PlantData[plantid][plantText3D]); PlantData[plantid][plantObject] = CreateDynamicObject(3409, PlantData[plantid][plantPos][0], PlantData[plantid][plantPos][1], PlantData[plantid][plantPos][2] - 1.80, 0.0, 0.0, PlantData[plantid][plantPos][3], PlantData[plantid][plantWorld], PlantData[plantid][plantInterior]); format(string, sizeof(string), "[Plant %d]\n{FFFFFF}%s - %d/%d Grams", plantid, Plant_GetType(PlantData[plantid][plantType]), PlantData[plantid][plantDrugs], Plant_MaxGrams(PlantData[plantid][plantType])); PlantData[plantid][plantText3D] = CreateDynamic3DTextLabel(string, COLOR_DARKBLUE, PlantData[plantid][plantPos][0], PlantData[plantid][plantPos][1], PlantData[plantid][plantPos][2], 10.0, INVALID_VEHICLE_ID, INVALID_PLAYER_ID, 0, PlantData[plantid][plantWorld], PlantData[plantid][plantInterior]); } return 1; } Crate_Refresh(crateid) { if (crateid != -1 && CrateData[crateid][crateExists]) { static string[128]; if (IsValidDynamicObject(CrateData[crateid][crateObject])) DestroyDynamicObject(CrateData[crateid][crateObject]); if (IsValidDynamic3DTextLabel(CrateData[crateid][crateText3D])) DestroyDynamic3DTextLabel(CrateData[crateid][crateText3D]); CrateData[crateid][crateObject] = CreateDynamicObject(964, CrateData[crateid][cratePos][0], CrateData[crateid][cratePos][1], CrateData[crateid][cratePos][2], 0.0, 0.0, CrateData[crateid][cratePos][3], CrateData[crateid][crateWorld], CrateData[crateid][crateInterior]); if (CrateData[crateid][crateType] != 6) { format(string, sizeof(string), "[Crate %d]\n{FFFFFF}%s Parts (press 'F' to pickup)", crateid, Crate_GetType(CrateData[crateid][crateType])); } else { format(string, sizeof(string), "[Crate %d]\n{FFFFFF}Drug Seeds (press 'F' to pickup)", crateid); } CrateData[crateid][crateText3D] = CreateDynamic3DTextLabel(string, COLOR_DARKBLUE, CrateData[crateid][cratePos][0], CrateData[crateid][cratePos][1], CrateData[crateid][cratePos][2] + 0.5, 10.0, INVALID_VEHICLE_ID, INVALID_PLAYER_ID, 0, CrateData[crateid][crateWorld], CrateData[crateid][crateInterior]); } return 1; } Crate_Delete(crateid) { if (crateid != -1 && CrateData[crateid][crateExists]) { new string[64]; format(string, sizeof(string), "DELETE FROM `crates` WHERE `crateID` = '%d'", CrateData[crateid][crateID]); mysql_tquery(g_iHandle, string); if (IsValidDynamic3DTextLabel(CrateData[crateid][crateText3D])) DestroyDynamic3DTextLabel(CrateData[crateid][crateText3D]); if (IsValidDynamicObject(CrateData[crateid][crateObject])) DestroyDynamicObject(CrateData[crateid][crateObject]); foreach (new i : Player) if (PlayerData[i][pCarryCrate] == crateid) { PlayerData[i][pCarryCrate] = -1; RemovePlayerAttachedObject(i, 4); SetPlayerSpecialAction(i, SPECIAL_ACTION_NONE); } CrateData[crateid][crateExists] = false; CrateData[crateid][crateID] = 0; CrateData[crateid][crateVehicle] = INVALID_VEHICLE_ID; } return 1; } Crate_Drop(playerid, Float:radius = 0.0) { static Float:x, Float:y, Float:z, Float:angle, id = -1; if ((id = PlayerData[playerid][pCarryCrate]) != -1 && CrateData[id][crateExists]) { GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, angle); if (radius != 0.0) { x += radius * floatsin(-angle, degrees); y += radius * floatcos(-angle, degrees); } CrateData[id][cratePos][0] = x; CrateData[id][cratePos][1] = y; CrateData[id][cratePos][2] = z - 0.9; CrateData[id][cratePos][3] = angle; CrateData[id][crateInterior] = GetPlayerInterior(playerid); CrateData[id][crateWorld] = GetPlayerVirtualWorld(playerid); Crate_Refresh(id); Crate_Save(id); } PlayerData[playerid][pCarryCrate] = -1; RemovePlayerAttachedObject(playerid, 4); return 1; } Crate_Save(crateid) { static query[255]; format(query, sizeof(query), "UPDATE `crates` SET `crateType` = '%d', `crateX` = '%.4f', `crateY` = '%.4f', `crateZ` = '%.4f', `crateA` = '%.4f', `crateInterior` = '%d', `crateWorld` = '%d' WHERE `crateID` = '%d'", CrateData[crateid][crateType], CrateData[crateid][cratePos][0], CrateData[crateid][cratePos][1], CrateData[crateid][cratePos][2], CrateData[crateid][cratePos][3], CrateData[crateid][crateInterior], CrateData[crateid][crateWorld], CrateData[crateid][crateID] ); return mysql_tquery(g_iHandle, query); } Crate_GetType(type) { static str[24]; switch (type) { case 1: str = "Melee"; case 2: str = "Pistol"; case 3: str = "SMG"; case 4: str = "Shotgun"; case 5: str = "Rifle"; case 6: str = "Drug Seeds"; default: str = "None"; } return str; } Crate_Create(playerid, type) { static Float:x, Float:y, Float:z, Float:angle; if (GetPlayerPos(playerid, x, y, z) && GetPlayerFacingAngle(playerid, angle)) { for (new i = 0; i != MAX_CRATES; i ++) if (!CrateData[i][crateExists]) { if (Crate_Nearest(playerid, 2.5) != -1) { z = floatsub(z, 0.1); } CrateData[i][crateExists] = true; CrateData[i][crateVehicle] = INVALID_VEHICLE_ID; CrateData[i][crateType] = type; CrateData[i][cratePos][0] = x; CrateData[i][cratePos][1] = y; CrateData[i][cratePos][2] = z - 0.9; CrateData[i][cratePos][3] = angle; CrateData[i][crateInterior] = GetPlayerInterior(playerid); CrateData[i][crateWorld] = GetPlayerVirtualWorld(playerid); mysql_tquery(g_iHandle, "INSERT INTO `crates` (`crateInterior`) VALUES(0)", "OnCrateCreated", "d", i); Crate_Refresh(i); return i; } } return -1; } Job_Save(jobid) { static query[512]; format(query, sizeof(query), "UPDATE `jobs` SET `jobType` = '%d', `jobPosX` = '%.4f', `jobPosY` = '%.4f', `jobPosZ` = '%.4f', `jobInterior` = '%d', `jobWorld` = '%d', `jobPointX` = '%.4f', `jobPointY` = '%.4f', `jobPointZ` = '%.4f', `jobDeliverX` = '%.4f', `jobDeliverY` = '%.4f', `jobDeliverZ` = '%.4f', `jobPointInt` = '%d', `jobPointWorld` = '%d' WHERE `jobID` = '%d'", JobData[jobid][jobType], JobData[jobid][jobPos][0], JobData[jobid][jobPos][1], JobData[jobid][jobPos][2], JobData[jobid][jobInterior], JobData[jobid][jobWorld], JobData[jobid][jobPoint][0], JobData[jobid][jobPoint][1], JobData[jobid][jobPoint][2], JobData[jobid][jobDeliver][0], JobData[jobid][jobDeliver][1], JobData[jobid][jobDeliver][2], JobData[jobid][jobPointInt], JobData[jobid][jobPointWorld], JobData[jobid][jobID] ); return mysql_tquery(g_iHandle, query); } Job_GetName(type) { static str[24]; switch (type) { case 1: str = "Courier"; case 2: str = "Mechanic"; case 3: str = "Taxi Driver"; case 4: str = "Cargo Unloader"; case 5: str = "Miner"; case 6: str = "Food Vendor"; case 7: str = "Garbage Man"; case 8: str = "Package Sorter"; case 9: str = "Weapon Smuggler"; default: str = "None"; } return str; } Billboard_Save(bbid) { static query[2048]; format(query, sizeof(query), "UPDATE `billboards` SET `bbName` = '%s', `bbMessage` = '%s', `bbOwner` = '%d', `bbPrice` = '%d', `bbRange` = '%d', `bbPosX` = '%.4f', `bbPosY` = '%.4f', `bbPosZ` = '%.4f' WHERE `bbID` = '%d'", SQL_ReturnEscaped(BillBoardData[bbid][bbName]), SQL_ReturnEscaped(BillBoardData[bbid][bbMessage]), BillBoardData[bbid][bbOwner], BillBoardData[bbid][bbPrice], BillBoardData[bbid][bbRange], BillBoardData[bbid][bbPos][0], BillBoardData[bbid][bbPos][1], BillBoardData[bbid][bbPos][2], BillBoardData[bbid][bbID] ); return mysql_tquery(g_iHandle, query); } Billboard_Refresh(bizid) { if (bizid != -1 && BillBoardData[bizid][bbExists]) { if (IsValidDynamic3DTextLabel(BillBoardData[bizid][bbText3D])) DestroyDynamic3DTextLabel(BillBoardData[bizid][bbText3D]); static string[128]; if (!BillBoardData[bizid][bbOwner]) { format(string, sizeof(string), "[%i] - [%s]\n%s", bizid, FormatNumber(BillBoardData[bizid][bbPrice]), BillBoardData[bizid][bbName]); BillBoardData[bizid][bbText3D] = CreateDynamic3DTextLabel(string, 0x33AA33FF, BillBoardData[bizid][bbPos][0], BillBoardData[bizid][bbPos][1], BillBoardData[bizid][bbPos][2], BillBoardData[bizid][bbRange], INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0); } else if (BillBoardData[bizid][bbOwner]) { format(string, sizeof(string), "[%i]\n%s\n%s", bizid, BillBoardData[bizid][bbName], BillBoardData[bizid][bbMessage]); BillBoardData[bizid][bbText3D] = CreateDynamic3DTextLabel(string, 0x33AA33FF, BillBoardData[bizid][bbPos][0], BillBoardData[bizid][bbPos][1], BillBoardData[bizid][bbPos][2], BillBoardData[bizid][bbRange], INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0); } } return 1; } Billboard_Create(playerid, price) { static Float:x, Float:y, Float:z; if (GetPlayerPos(playerid, x, y, z)) { for (new i = 0; i != MAX_BILLBOARDS; i ++) { if (!BillBoardData[i][bbExists]) { BillBoardData[i][bbExists] = true; BillBoardData[i][bbOwner] = 0; BillBoardData[i][bbPrice] = price; BillBoardData[i][bbRange] = 10; format(BillBoardData[i][bbName], 32, "Unnamed Billboard"); BillBoardData[i][bbPos][0] = x; BillBoardData[i][bbPos][1] = y; BillBoardData[i][bbPos][2] = z; Billboard_Refresh(i); mysql_tquery(g_iHandle, "INSERT INTO `billboards` (`bbOwner`) VALUES(0)", "OnBillboardCreated", "d", i); return i; } } } return -1; } Billboard_Delete(bizid) { if (bizid != -1 && BillBoardData[bizid][bbExists]) { new string[82]; format(string, sizeof(string), "DELETE FROM `billboards` WHERE `bbID` = '%d'", BillBoardData[bizid][bbID]); mysql_tquery(g_iHandle, string); if (IsValidDynamic3DTextLabel(BillBoardData[bizid][bbText3D])) DestroyDynamic3DTextLabel(BillBoardData[bizid][bbText3D]); BillBoardData[bizid][bbExists] = false; BillBoardData[bizid][bbOwner] = 0; BillBoardData[bizid][bbID] = 0; } return 1; } Job_Refresh(jobid) { if (jobid != -1 && JobData[jobid][jobExists]) { for (new i = 0; i < 3; i ++) { if (IsValidDynamic3DTextLabel(JobData[jobid][jobText3D][i])) DestroyDynamic3DTextLabel(JobData[jobid][jobText3D][i]); if (IsValidDynamicPickup(JobData[jobid][jobPickups][i])) DestroyDynamicPickup(JobData[jobid][jobPickups][i]); } static string[90]; format(string, sizeof(string), "[%s]\n{FFFFFF}Type /takejob to acquire this job!", Job_GetName(JobData[jobid][jobType])); if (JobData[jobid][jobType] == 1) { JobData[jobid][jobText3D][1] = CreateDynamic3DTextLabel("[Courier]\n{FFFFFF}Type /startdelivery to start a delivery.", COLOR_DARKBLUE, JobData[jobid][jobPoint][0], JobData[jobid][jobPoint][1], JobData[jobid][jobPoint][2], 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, JobData[jobid][jobPointWorld], JobData[jobid][jobPointInt]); JobData[jobid][jobPickups][1] = CreateDynamicPickup(1239, 23, JobData[jobid][jobPoint][0], JobData[jobid][jobPoint][1], JobData[jobid][jobPoint][2], JobData[jobid][jobPointWorld], JobData[jobid][jobPointInt]); } else if (JobData[jobid][jobType] == 5) { JobData[jobid][jobText3D][1] = CreateDynamic3DTextLabel("[Mining]\n{FFFFFF}Type /mine to begin mining.", COLOR_DARKBLUE, JobData[jobid][jobPoint][0], JobData[jobid][jobPoint][1], JobData[jobid][jobPoint][2], 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, JobData[jobid][jobPointWorld], JobData[jobid][jobPointInt]); JobData[jobid][jobPickups][1] = CreateDynamicPickup(1239, 23, JobData[jobid][jobPoint][0], JobData[jobid][jobPoint][1], JobData[jobid][jobPoint][2], JobData[jobid][jobPointWorld], JobData[jobid][jobPointInt]); JobData[jobid][jobText3D][2] = CreateDynamic3DTextLabel("[Mining]\n{FFFFFF}Deliver your mining rocks at this spot.", COLOR_DARKBLUE, JobData[jobid][jobDeliver][0], JobData[jobid][jobDeliver][1], JobData[jobid][jobDeliver][2], 15.0); JobData[jobid][jobPickups][2] = CreateDynamicPickup(1239, 23, JobData[jobid][jobDeliver][0], JobData[jobid][jobDeliver][1], JobData[jobid][jobDeliver][2]); } else if (JobData[jobid][jobType] == 7) { JobData[jobid][jobText3D][1] = CreateDynamic3DTextLabel("[Garbage Dump]\n{FFFFFF}Type /dumpgarbage to dump your trash.", COLOR_DARKBLUE, JobData[jobid][jobPoint][0], JobData[jobid][jobPoint][1], JobData[jobid][jobPoint][2], 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, JobData[jobid][jobPointWorld], JobData[jobid][jobPointInt]); JobData[jobid][jobPickups][1] = CreateDynamicPickup(1264, 23, JobData[jobid][jobPoint][0], JobData[jobid][jobPoint][1], JobData[jobid][jobPoint][2], JobData[jobid][jobPointWorld], JobData[jobid][jobPointInt]); } else if (JobData[jobid][jobType] == 8) { JobData[jobid][jobText3D][1] = CreateDynamic3DTextLabel("[Package Sorting]\n{FFFFFF}Type /sorting to begin sorting packages.", COLOR_DARKBLUE, JobData[jobid][jobPoint][0], JobData[jobid][jobPoint][1], JobData[jobid][jobPoint][2], 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, JobData[jobid][jobPointWorld], JobData[jobid][jobPointInt]); JobData[jobid][jobPickups][1] = CreateDynamicPickup(1239, 23, JobData[jobid][jobPoint][0], JobData[jobid][jobPoint][1], JobData[jobid][jobPoint][2], JobData[jobid][jobPointWorld], JobData[jobid][jobPointInt]); JobData[jobid][jobText3D][2] = CreateDynamic3DTextLabel("[Package Sorting]\n{FFFFFF}Deliver your packages here for sorting.", COLOR_DARKBLUE, JobData[jobid][jobDeliver][0], JobData[jobid][jobDeliver][1], JobData[jobid][jobDeliver][2], 15.0); JobData[jobid][jobPickups][2] = CreateDynamicPickup(1239, 23, JobData[jobid][jobDeliver][0], JobData[jobid][jobDeliver][1], JobData[jobid][jobDeliver][2]); } else if (JobData[jobid][jobType] == 9) { JobData[jobid][jobText3D][1] = CreateDynamic3DTextLabel("[Weapon Parts]\n{FFFFFF}Type /craftparts to craft a weapon crate.", COLOR_DARKBLUE, JobData[jobid][jobPoint][0], JobData[jobid][jobPoint][1], JobData[jobid][jobPoint][2], 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, JobData[jobid][jobPointWorld], JobData[jobid][jobPointInt]); JobData[jobid][jobPickups][1] = CreateDynamicPickup(1239, 23, JobData[jobid][jobPoint][0], JobData[jobid][jobPoint][1], JobData[jobid][jobPoint][2], JobData[jobid][jobPointWorld], JobData[jobid][jobPointInt]); } JobData[jobid][jobText3D][0] = CreateDynamic3DTextLabel(string, COLOR_DARKBLUE, JobData[jobid][jobPos][0], JobData[jobid][jobPos][1], JobData[jobid][jobPos][2], 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, JobData[jobid][jobWorld], JobData[jobid][jobInterior]); JobData[jobid][jobPickups][0] = CreateDynamicPickup(1239, 23, JobData[jobid][jobPos][0], JobData[jobid][jobPos][1], JobData[jobid][jobPos][2], JobData[jobid][jobWorld], JobData[jobid][jobInterior]); } return 1; } Job_Delete(jobid) { if (jobid != -1 && JobData[jobid][jobExists]) { new string[64]; format(string, sizeof(string), "DELETE FROM `jobs` WHERE `jobID` = '%d'", JobData[jobid][jobID]); mysql_tquery(g_iHandle, string); for (new i = 0; i < 3; i ++) { if (IsValidDynamic3DTextLabel(JobData[jobid][jobText3D][i])) DestroyDynamic3DTextLabel(JobData[jobid][jobText3D][i]); if (IsValidDynamicPickup(JobData[jobid][jobPickups][i])) DestroyDynamicPickup(JobData[jobid][jobPickups][i]); } JobData[jobid][jobExists] = false; JobData[jobid][jobType] = 0; JobData[jobid][jobID] = 0; } return 1; } Job_Create(playerid, type) { static Float:x, Float:y, Float:z; if (GetPlayerPos(playerid, x, y, z)) { for (new i = 0; i != MAX_DYNAMIC_JOBS; i ++) { if (!JobData[i][jobExists]) { JobData[i][jobExists] = true; JobData[i][jobType] = type; JobData[i][jobPos][0] = x; JobData[i][jobPos][1] = y; JobData[i][jobPos][2] = z; JobData[i][jobPoint][0] = 0.0; JobData[i][jobPoint][1] = 0.0; JobData[i][jobPoint][2] = 0.0; JobData[i][jobDeliver][0] = 0.0; JobData[i][jobDeliver][1] = 0.0; JobData[i][jobDeliver][2] = 0.0; JobData[i][jobInterior] = GetPlayerInterior(playerid); JobData[i][jobWorld] = GetPlayerVirtualWorld(playerid); JobData[i][jobPointInt] = 0; JobData[i][jobPointWorld] = 0; Job_Refresh(i); mysql_tquery(g_iHandle, "INSERT INTO `jobs` (`jobInterior`) VALUES(0)", "OnJobCreated", "d", i); return i; } } } return -1; } Car_Create(ownerid, modelid, Float:x, Float:y, Float:z, Float:angle, color1, color2, type = 0) { for (new i = 0; i != MAX_DYNAMIC_CARS; i ++) { if (!CarData[i][carExists]) { if (color1 == -1) color1 = random(127); if (color2 == -1) color2 = random(127); CarData[i][carExists] = true; CarData[i][carModel] = modelid; CarData[i][carOwner] = ownerid; CarData[i][carPos][0] = x; CarData[i][carPos][1] = y; CarData[i][carPos][2] = z; CarData[i][carPos][3] = angle; CarData[i][carColor1] = color1; CarData[i][carColor2] = color2; CarData[i][carPaintjob] = -1; CarData[i][carLocked] = false; CarData[i][carImpounded] = -1; CarData[i][carImpoundPrice] = 0; CarData[i][carFaction] = type; for (new j = 0; j < 14; j ++) { if (j < 5) { CarData[i][carWeapons][j] = 0; CarData[i][carAmmo][j] = 0; } CarData[i][carMods][j] = 0; } CarData[i][carVehicle] = CreateVehicle(modelid, x, y, z, angle, color1, color2, -1); if (CarData[i][carVehicle] != INVALID_VEHICLE_ID) { ResetVehicle(CarData[i][carVehicle]); } mysql_tquery(g_iHandle, "INSERT INTO `cars` (`carModel`) VALUES(0)", "OnCarCreated", "d", i); return i; } } return -1; } Car_Delete(carid) { if (carid != -1 && CarData[carid][carExists]) { new string[64]; format(string, sizeof(string), "DELETE FROM `cars` WHERE `carID` = '%d'", CarData[carid][carID]); mysql_tquery(g_iHandle, string); if (IsValidVehicle(CarData[carid][carVehicle])) DestroyVehicle(CarData[carid][carVehicle]); for (new i = 0; i < MAX_BACKPACKS; i ++) if (BackpackData[i][backpackExists] && BackpackData[i][backpackVehicle] == CarData[carid][carID]) { Backpack_Delete(i); } Car_RemoveAllItems(carid); CarData[carid][carExists] = false; CarData[carid][carID] = 0; CarData[carid][carOwner] = 0; CarData[carid][carVehicle] = 0; } return 1; } Car_Save(carid) { static query[900]; if (CarData[carid][carVehicle] != INVALID_VEHICLE_ID) { for (new i = 0; i < 14; i ++) { CarData[carid][carMods][i] = GetVehicleComponentInSlot(CarData[carid][carVehicle], i); } } format(query, sizeof(query), "UPDATE `cars` SET `carModel` = '%d', `carOwner` = '%d', `carPosX` = '%.4f', `carPosY` = '%.4f', `carPosZ` = '%.4f', `carPosR` = '%.4f', `carColor1` = '%d', `carColor2` = '%d', `carPaintjob` = '%d', `carLocked` = '%d'", CarData[carid][carModel], CarData[carid][carOwner], CarData[carid][carPos][0], CarData[carid][carPos][1], CarData[carid][carPos][2], CarData[carid][carPos][3], CarData[carid][carColor1], CarData[carid][carColor2], CarData[carid][carPaintjob], CarData[carid][carLocked] ); format(query, sizeof(query), "%s, `carMod1` = '%d', `carMod2` = '%d', `carMod3` = '%d', `carMod4` = '%d', `carMod5` = '%d', `carMod6` = '%d', `carMod7` = '%d', `carMod8` = '%d', `carMod9` = '%d', `carMod10` = '%d', `carMod11` = '%d', `carMod12` = '%d', `carMod13` = '%d', `carMod14` = '%d'", query, CarData[carid][carMods][0], CarData[carid][carMods][1], CarData[carid][carMods][2], CarData[carid][carMods][3], CarData[carid][carMods][4], CarData[carid][carMods][5], CarData[carid][carMods][6], CarData[carid][carMods][7], CarData[carid][carMods][8], CarData[carid][carMods][9], CarData[carid][carMods][10], CarData[carid][carMods][11], CarData[carid][carMods][12], CarData[carid][carMods][13] ); format(query, sizeof(query), "%s, `carImpounded` = '%d', `carImpoundPrice` = '%d', `carFaction` = '%d', `carWeapon1` = '%d', `carWeapon2` = '%d', `carWeapon3` = '%d', `carWeapon4` = '%d', `carWeapon5` = '%d', `carAmmo1` = '%d', `carAmmo2` = '%d', `carAmmo3` = '%d', `carAmmo4` = '%d', `carAmmo5` = '%d' WHERE `carID` = '%d'", query, CarData[carid][carImpounded], CarData[carid][carImpoundPrice], CarData[carid][carFaction], CarData[carid][carWeapons][0], CarData[carid][carWeapons][1], CarData[carid][carWeapons][2], CarData[carid][carWeapons][3], CarData[carid][carWeapons][4], CarData[carid][carAmmo][0], CarData[carid][carAmmo][1], CarData[carid][carAmmo][2], CarData[carid][carAmmo][3], CarData[carid][carAmmo][4], CarData[carid][carID] ); return mysql_tquery(g_iHandle, query); } Entrance_Delete(entranceid) { if (entranceid != -1 && EntranceData[entranceid][entranceExists]) { new string[64]; format(string, sizeof(string), "DELETE FROM `entrances` WHERE `entranceID` = '%d'", EntranceData[entranceid][entranceID]); mysql_tquery(g_iHandle, string); if (IsValidDynamic3DTextLabel(EntranceData[entranceid][entranceText3D])) DestroyDynamic3DTextLabel(EntranceData[entranceid][entranceText3D]); if (IsValidDynamicPickup(EntranceData[entranceid][entrancePickup])) DestroyDynamicPickup(EntranceData[entranceid][entrancePickup]); if (IsValidDynamicMapIcon(EntranceData[entranceid][entranceMapIcon])) DestroyDynamicMapIcon(EntranceData[entranceid][entranceMapIcon]); if (EntranceData[entranceid][entranceType] == 3) DestroyForklifts(entranceid); EntranceData[entranceid][entranceExists] = false; EntranceData[entranceid][entranceID] = 0; } return 1; } Entrance_Save(entranceid) { static query[1024]; format(query, sizeof(query), "UPDATE `entrances` SET `entranceName` = '%s', `entrancePass` = '%s', `entranceIcon` = '%d', `entranceLocked` = '%d', `entrancePosX` = '%.4f', `entrancePosY` = '%.4f', `entrancePosZ` = '%.4f', `entrancePosA` = '%.4f', `entranceIntX` = '%.4f', `entranceIntY` = '%.4f', `entranceIntZ` = '%.4f', `entranceIntA` = '%.4f', `entranceInterior` = '%d', `entranceExterior` = '%d', `entranceExteriorVW` = '%d', `entranceType` = '%d'", SQL_ReturnEscaped(EntranceData[entranceid][entranceName]), SQL_ReturnEscaped(EntranceData[entranceid][entrancePass]), EntranceData[entranceid][entranceIcon], EntranceData[entranceid][entranceLocked], EntranceData[entranceid][entrancePos][0], EntranceData[entranceid][entrancePos][1], EntranceData[entranceid][entrancePos][2], EntranceData[entranceid][entrancePos][3], EntranceData[entranceid][entranceInt][0], EntranceData[entranceid][entranceInt][1], EntranceData[entranceid][entranceInt][2], EntranceData[entranceid][entranceInt][3], EntranceData[entranceid][entranceInterior], EntranceData[entranceid][entranceExterior], EntranceData[entranceid][entranceExteriorVW], EntranceData[entranceid][entranceType] ); format(query, sizeof(query), "%s, `entranceCustom` = '%d', `entranceWorld` = '%d' WHERE `entranceID` = '%d'", query, EntranceData[entranceid][entranceCustom], EntranceData[entranceid][entranceWorld], EntranceData[entranceid][entranceID] ); return mysql_tquery(g_iHandle, query); } IsPlayerNearMine(playerid) { new id = -1; if ((id = Job_NearestPoint(playerid, 10.0)) != -1 && JobData[id][jobType] == 5) return 1; return 0; } IsPlayerNearArrest(playerid) { new id = Arrest_Nearest(playerid); return (id != -1); } IsPlayerInCityHall(playerid) { new id = -1; if ((id = Entrance_Inside(playerid)) != -1 && EntranceData[id][entranceType] == 4) return 1; return 0; } IsPlayerInWarehouse(playerid) { new id = -1; if ((id = Entrance_Inside(playerid)) != -1 && EntranceData[id][entranceType] == 3) return 1; return 0; } IsPlayerInBank(playerid) { new id = -1; if ((id = Entrance_Inside(playerid)) != -1 && EntranceData[id][entranceType] == 2) return 1; return 0; } Entrance_Inside(playerid) { if (PlayerData[playerid][pEntrance] != -1) { for (new i = 0; i != MAX_ENTRANCES; i ++) if (EntranceData[i][entranceExists] && EntranceData[i][entranceID] == PlayerData[playerid][pEntrance] && GetPlayerInterior(playerid) == EntranceData[i][entranceInterior] && GetPlayerVirtualWorld(playerid) == EntranceData[i][entranceWorld]) return i; } return -1; } Entrance_GetLink(playerid) { if (GetPlayerVirtualWorld(playerid) > 0) { for (new i = 0; i != MAX_ENTRANCES; i ++) if (EntranceData[i][entranceExists] && EntranceData[i][entranceID] == GetPlayerVirtualWorld(playerid) - 7000) return EntranceData[i][entranceID]; } return -1; } Entrance_Nearest(playerid) { for (new i = 0; i != MAX_ENTRANCES; i ++) if (EntranceData[i][entranceExists] && IsPlayerInRangeOfPoint(playerid, 2.5, EntranceData[i][entrancePos][0], EntranceData[i][entrancePos][1], EntranceData[i][entrancePos][2])) { if (GetPlayerInterior(playerid) == EntranceData[i][entranceExterior] && GetPlayerVirtualWorld(playerid) == EntranceData[i][entranceExteriorVW]) return i; } return -1; } Job_NearestPoint(playerid, Float:radius = 4.0) { for (new i = 0; i != MAX_DYNAMIC_JOBS; i ++) if (JobData[i][jobExists] && IsPlayerInRangeOfPoint(playerid, radius, JobData[i][jobPoint][0], JobData[i][jobPoint][1], JobData[i][jobPoint][2])) { return i; } return -1; } Job_Nearest(playerid) { for (new i = 0; i != MAX_DYNAMIC_JOBS; i ++) if (JobData[i][jobExists] && IsPlayerInRangeOfPoint(playerid, 2.5, JobData[i][jobPos][0], JobData[i][jobPos][1], JobData[i][jobPos][2])) { if (GetPlayerInterior(playerid) == JobData[i][jobInterior] && GetPlayerVirtualWorld(playerid) == JobData[i][jobWorld]) return i; } return -1; } Entrance_Refresh(entranceid) { if (entranceid != -1 && EntranceData[entranceid][entranceExists]) { if (IsValidDynamic3DTextLabel(EntranceData[entranceid][entranceText3D])) DestroyDynamic3DTextLabel(EntranceData[entranceid][entranceText3D]); if (IsValidDynamicPickup(EntranceData[entranceid][entrancePickup])) DestroyDynamicPickup(EntranceData[entranceid][entrancePickup]); if (IsValidDynamicMapIcon(EntranceData[entranceid][entranceMapIcon])) DestroyDynamicMapIcon(EntranceData[entranceid][entranceMapIcon]); EntranceData[entranceid][entranceText3D] = CreateDynamic3DTextLabel(EntranceData[entranceid][entranceName], COLOR_DARKBLUE, EntranceData[entranceid][entrancePos][0], EntranceData[entranceid][entrancePos][1], EntranceData[entranceid][entrancePos][2], 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, EntranceData[entranceid][entranceExteriorVW], EntranceData[entranceid][entranceExterior]); EntranceData[entranceid][entrancePickup] = CreateDynamicPickup(1559, 23, EntranceData[entranceid][entrancePos][0], EntranceData[entranceid][entrancePos][1], EntranceData[entranceid][entrancePos][2] + 0.7, EntranceData[entranceid][entranceExteriorVW], EntranceData[entranceid][entranceExterior]); if (EntranceData[entranceid][entranceIcon] != 0) EntranceData[entranceid][entranceMapIcon] = CreateDynamicMapIcon(EntranceData[entranceid][entrancePos][0], EntranceData[entranceid][entrancePos][1], EntranceData[entranceid][entrancePos][2], EntranceData[entranceid][entranceIcon], 0, EntranceData[entranceid][entranceExteriorVW], EntranceData[entranceid][entranceExterior]); } return 1; } DestroyForklifts(entranceid) { if (entranceid != -1 && EntranceData[entranceid][entranceExists]) { for (new i = 0; i < 7; i ++) if (IsValidVehicle(EntranceData[entranceid][entranceForklift][i])) { DestroyVehicle(EntranceData[entranceid][entranceForklift][i]); EntranceData[entranceid][entranceForklift][i] = INVALID_VEHICLE_ID; } return 1; } return 0; } CreateForklifts(entranceid) { if (entranceid != -1 && EntranceData[entranceid][entranceExists]) { EntranceData[entranceid][entranceForklift][0] = CreateVehicle(530,1300.6760,5.8440,1000.7919,180.2377,114,1,-1); // forklift 1 EntranceData[entranceid][entranceForklift][1] = CreateVehicle(530,1303.4263,5.8919,1000.7883,181.4835,119,1,-1); // forklift 2 EntranceData[entranceid][entranceForklift][2] = CreateVehicle(530,1305.7365,5.7953,1000.7904,179.7971,122,1,-1); // forklift 3 EntranceData[entranceid][entranceForklift][3] = CreateVehicle(530,1308.2925,-8.6468,1000.7963,89.4510,4,1,-1); // forklift 4 EntranceData[entranceid][entranceForklift][4] = CreateVehicle(530,1308.2974,-10.9627,1000.7974,91.8611,13,1,-1); // forklift 5 EntranceData[entranceid][entranceForklift][5] = CreateVehicle(530,1308.3057,-13.6396,1000.7997,90.6285,110,1,-1); // forklift 6 EntranceData[entranceid][entranceForklift][6] = CreateVehicle(530,1308.2751,-16.5108,1000.7980,90.2175,111,1,-1); // forklift 7 for (new i = 0; i < 7; i ++) if (IsValidVehicle(EntranceData[entranceid][entranceForklift][i])) { SetVehicleVirtualWorld(EntranceData[entranceid][entranceForklift][i], EntranceData[entranceid][entranceWorld]); LinkVehicleToInterior(EntranceData[entranceid][entranceForklift][i], 18); CoreVehicles[EntranceData[entranceid][entranceForklift][i]][vehFuel] = 100; CoreVehicles[EntranceData[entranceid][entranceForklift][i]][vehLoadType] = 0; } } return 1; } Entrance_Create(playerid, name[]) { static Float:x, Float:y, Float:z, Float:angle; if (GetPlayerPos(playerid, x, y, z) && GetPlayerFacingAngle(playerid, angle)) { for (new i = 0; i != MAX_HOUSES; i ++) { if (!EntranceData[i][entranceExists]) { EntranceData[i][entranceExists] = true; EntranceData[i][entranceIcon] = 0; EntranceData[i][entranceType] = 0; EntranceData[i][entranceCustom] = 0; EntranceData[i][entranceLocked] = 0; format(EntranceData[i][entranceName], 32, name); EntranceData[i][entrancePass][0] = 0; EntranceData[i][entrancePos][0] = x; EntranceData[i][entrancePos][1] = y; EntranceData[i][entrancePos][2] = z; EntranceData[i][entrancePos][3] = angle; EntranceData[i][entranceInt][0] = x; EntranceData[i][entranceInt][1] = y; EntranceData[i][entranceInt][2] = z + 10000; EntranceData[i][entranceInt][3] = 0.0000; EntranceData[i][entranceInterior] = 0; EntranceData[i][entranceExterior] = GetPlayerInterior(playerid); EntranceData[i][entranceExteriorVW] = GetPlayerVirtualWorld(playerid); Entrance_Refresh(i); mysql_tquery(g_iHandle, "INSERT INTO `entrances` (`entranceType`) VALUES(0)", "OnEntranceCreated", "d", i); return i; } } } return -1; } Business_RemoveVehicle(bizid, modelid) { static query[128]; for (new i = 0; i != MAX_DEALERSHIP_CARS; i ++) if (DealershipCars[bizid][i][vehModel] == modelid) { DealershipCars[bizid][i][vehModel] = 0; DealershipCars[bizid][i][vehPrice] = 0; format(query, sizeof(query), "DELETE FROM `dealervehicles` WHERE `ID` = '%d' AND `vehID` = '%d'", BusinessData[bizid][bizID], DealershipCars[bizid][i][vehID]); mysql_tquery(g_iHandle, query); return 1; } return 0; } Business_AddVehicle(bizid, modelid, price) { static query[128]; for (new i = 0; i != MAX_DEALERSHIP_CARS; i ++) if (!DealershipCars[bizid][i][vehModel]) { DealershipCars[bizid][i][vehModel] = modelid; DealershipCars[bizid][i][vehPrice] = price; format(query, sizeof(query), "INSERT INTO `dealervehicles` (`ID`, `vehModel`, `vehPrice`) VALUES('%d', '%d', '%d')", BusinessData[bizid][bizID], modelid, price); mysql_tquery(g_iHandle, query, "OnDealerCarCreated", "dd", bizid, i); return 1; } return 0; } Business_CarMenu(playerid, bizid) { static cars[MAX_DEALERSHIP_CARS]; for (new i = 0; i != MAX_DEALERSHIP_CARS; i ++) { if (!DealershipCars[bizid][i][vehModel]) cars[i] = 19300; else cars[i] = DealershipCars[bizid][i][vehModel]; } ShowModelSelectionMenu(playerid, "Purchase Car", MODEL_SELECTION_BUY_CAR, cars, sizeof(cars), -16.0, 0.0, -55.0, 0.9, 1); return 1; } Business_EditCars(playerid, bizid) { static cars[MAX_DEALERSHIP_CARS]; for (new i = 0; i != MAX_DEALERSHIP_CARS; i ++) { if (!DealershipCars[bizid][i][vehModel]) cars[i] = 19300; else cars[i] = DealershipCars[bizid][i][vehModel]; } ShowModelSelectionMenu(playerid, "Dealership Cars", MODEL_SELECTION_DEALER, cars, sizeof(cars), -16.0, 0.0, -55.0, 0.9, 1); return 1; } forward Pump_Load(bizid); public Pump_Load(bizid) { static rows, fields, id = -1; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) if ((id = Pump_GetFreeID()) != -1) { PumpData[id][pumpExists] = true; PumpData[id][pumpBusiness] = bizid; PumpData[id][pumpID] = cache_get_field_int(i, "pumpID"); PumpData[id][pumpPos][0] = cache_get_field_float(i, "pumpPosX"); PumpData[id][pumpPos][1] = cache_get_field_float(i, "pumpPosY"); PumpData[id][pumpPos][2] = cache_get_field_float(i, "pumpPosZ"); PumpData[id][pumpPos][3] = cache_get_field_float(i, "pumpPosA"); PumpData[id][pumpFuel] = cache_get_field_int(i, "pumpFuel"); PumpData[id][pumpObject] = CreateDynamicObject(1676, PumpData[id][pumpPos][0], PumpData[id][pumpPos][1], PumpData[id][pumpPos][2], 0.0, 0.0, PumpData[id][pumpPos][3]); Pump_Refresh(id); } return 1; } Pump_GetFreeID() { for (new i = 0; i < MAX_GAS_PUMPS; i ++) if (!PumpData[i][pumpExists]) { return i; } return -1; } Pump_Delete(pumpid) { if (pumpid != -1 && PumpData[pumpid][pumpExists]) { new string[90]; format(string, sizeof(string), "DELETE FROM `pumps` WHERE `ID` = '%d' AND `pumpID` = '%d'", BusinessData[PumpData[pumpid][pumpBusiness]][bizID], PumpData[pumpid][pumpID]); mysql_tquery(g_iHandle, string); if (IsValidDynamic3DTextLabel(PumpData[pumpid][pumpText3D])) DestroyDynamic3DTextLabel(PumpData[pumpid][pumpText3D]); if (IsValidDynamicObject(PumpData[pumpid][pumpObject])) DestroyDynamicObject(PumpData[pumpid][pumpObject]); foreach (new i : Player) if (PlayerData[i][pGasPump] == pumpid) { StopRefilling(i); } PumpData[pumpid][pumpExists] = false; PumpData[pumpid][pumpFuel] = 0; } return 1; } Pump_Create(playerid, bizid) { static Float:x, Float:y, Float:z, Float:angle, string[64], id = -1; if (GetPlayerPos(playerid, x, y, z) && GetPlayerFacingAngle(playerid, angle)) { if ((id = Pump_GetFreeID()) != -1) { x += 5.0 * floatsin(-angle, degrees); y += 5.0 * floatcos(-angle, degrees); PumpData[id][pumpExists] = true; PumpData[id][pumpBusiness] = bizid; PumpData[id][pumpPos][0] = x; PumpData[id][pumpPos][1] = y; PumpData[id][pumpPos][2] = z; PumpData[id][pumpPos][3] = angle; PumpData[id][pumpFuel] = 2000; PumpData[id][pumpObject] = CreateDynamicObject(1676, x, y, z, 0.0, 0.0, angle); format(string, sizeof(string), "INSERT INTO `pumps` (`ID`) VALUES(%d)", BusinessData[bizid][bizID]); mysql_tquery(g_iHandle, string, "OnPumpCreated", "d", id); return id; } } return -1; } Pump_Refresh(pumpid) { if (pumpid != -1 && PumpData[pumpid][pumpExists]) { static string[128]; format(string, sizeof(string), "[Gas Pump: %d]\n{FFFFFF}Fuel Left: %d liters", pumpid, PumpData[pumpid][pumpFuel]); if (IsValidDynamic3DTextLabel(PumpData[pumpid][pumpText3D])) DestroyDynamic3DTextLabel(PumpData[pumpid][pumpText3D]); if (IsValidDynamicObject(PumpData[pumpid][pumpObject])) DestroyDynamicObject(PumpData[pumpid][pumpObject]); PumpData[pumpid][pumpText3D] = CreateDynamic3DTextLabel(string, COLOR_DARKBLUE, PumpData[pumpid][pumpPos][0], PumpData[pumpid][pumpPos][1], PumpData[pumpid][pumpPos][2], 15.0); PumpData[pumpid][pumpObject] = CreateDynamicObject(1676, PumpData[pumpid][pumpPos][0], PumpData[pumpid][pumpPos][1], PumpData[pumpid][pumpPos][2], 0.0, 0.0, PumpData[pumpid][pumpPos][3]); } return 1; } Pump_Save(pumpid) { static query[256]; format(query, sizeof(query), "UPDATE `pumps` SET `pumpPosX` = '%.4f', `pumpPosY` = '%.4f', `pumpPosZ` = '%.4f', `pumpPosA` = '%.4f', `pumpFuel` = '%d' WHERE `ID` = '%d' AND `pumpID` = '%d'", PumpData[pumpid][pumpPos][0], PumpData[pumpid][pumpPos][1], PumpData[pumpid][pumpPos][2], PumpData[pumpid][pumpPos][3], PumpData[pumpid][pumpFuel], BusinessData[PumpData[pumpid][pumpBusiness]][bizID], PumpData[pumpid][pumpID] ); return mysql_tquery(g_iHandle, query); } House_Create(playerid, address[], price) { static Float:x, Float:y, Float:z, Float:angle; if (GetPlayerPos(playerid, x, y, z) && GetPlayerFacingAngle(playerid, angle)) { for (new i = 0; i != MAX_HOUSES; i ++) { if (!HouseData[i][houseExists]) { HouseData[i][houseExists] = true; HouseData[i][houseOwner] = 0; HouseData[i][housePrice] = price; HouseData[i][houseMoney] = 0; format(HouseData[i][houseAddress], 32, address); HouseData[i][housePos][0] = x; HouseData[i][housePos][1] = y; HouseData[i][housePos][2] = z; HouseData[i][housePos][3] = angle; HouseData[i][houseInt][0] = 2269.8772; HouseData[i][houseInt][1] = -1210.3240; HouseData[i][houseInt][2] = 1047.5625; HouseData[i][houseInt][3] = 90.0000; HouseData[i][houseInterior] = 10; HouseData[i][houseExterior] = GetPlayerInterior(playerid); HouseData[i][houseExteriorVW] = GetPlayerVirtualWorld(playerid); HouseData[i][houseLights] = false; HouseData[i][houseLocked] = false; House_Refresh(i); mysql_tquery(g_iHandle, "INSERT INTO `houses` (`houseOwner`) VALUES(0)", "OnHouseCreated", "d", i); return i; } } } return -1; } House_RemoveFurniture(houseid) { if (HouseData[houseid][houseExists]) { static string[64]; for (new i = 0; i != MAX_FURNITURE; i ++) if (FurnitureData[i][furnitureExists] && FurnitureData[i][furnitureHouse] == houseid) { FurnitureData[i][furnitureExists] = false; FurnitureData[i][furnitureModel] = 0; FurnitureData[i][furnitureHouse] = -1; DestroyDynamicObject(FurnitureData[i][furnitureObject]); } format(string, sizeof(string), "DELETE FROM `furniture` WHERE `ID` = '%d'", HouseData[houseid][houseID]); mysql_tquery(g_iHandle, string); } return 1; } House_Delete(houseid) { if (houseid != -1 && HouseData[houseid][houseExists]) { new string[64]; format(string, sizeof(string), "DELETE FROM `houses` WHERE `houseID` = '%d'", HouseData[houseid][houseID]); mysql_tquery(g_iHandle, string); if (IsValidDynamic3DTextLabel(HouseData[houseid][houseText3D])) DestroyDynamic3DTextLabel(HouseData[houseid][houseText3D]); if (IsValidDynamicPickup(HouseData[houseid][housePickup])) DestroyDynamicPickup(HouseData[houseid][housePickup]); if (IsValidDynamicMapIcon(HouseData[houseid][houseMapIcon])) DestroyDynamicMapIcon(HouseData[houseid][houseMapIcon]); for (new i = 0; i < MAX_BACKPACKS; i ++) if (BackpackData[i][backpackExists] && BackpackData[i][backpackHouse] == HouseData[houseid][houseID]) { Backpack_Delete(i); } House_RemoveFurniture(houseid); House_RemoveAllItems(houseid); HouseData[houseid][houseExists] = false; HouseData[houseid][houseOwner] = 0; HouseData[houseid][houseID] = 0; } return 1; } House_IsOwner(playerid, houseid) { if (!PlayerData[playerid][pLogged] || PlayerData[playerid][pID] == -1) return 0; if ((HouseData[houseid][houseExists] && HouseData[houseid][houseOwner] != 0) && HouseData[houseid][houseOwner] == PlayerData[playerid][pID]) return 1; return 0; } Business_ProductMenu(playerid, bizid) { if (bizid == -1 || !BusinessData[bizid][bizExists]) return 0; static string[512]; switch (BusinessData[bizid][bizType]) { case 1, 6: { format(string, sizeof(string), "Mobile Phone - %s\nGPS System - %s\nSpray Paint - %s\nBackpack - %s\nWater Bottle - %s\nSoda Bottle - %s\nLottery Ticket - %s\nPortable Radio - %s\nCan of Fuel - %s\nCrowbar - %s\nBoombox - %s\nMask - %s\nFirst Aid Kit - %s\nRepair Kit - %s\nNOS Canister - %s\nBaseball Bat - %s\nFrozen Pizza - %s\nFrozen Burger - %s", FormatNumber(BusinessData[bizid][bizPrices][0]), FormatNumber(BusinessData[bizid][bizPrices][1]), FormatNumber(BusinessData[bizid][bizPrices][2]), FormatNumber(BusinessData[bizid][bizPrices][3]), FormatNumber(BusinessData[bizid][bizPrices][4]), FormatNumber(BusinessData[bizid][bizPrices][5]), FormatNumber(BusinessData[bizid][bizPrices][6]), FormatNumber(BusinessData[bizid][bizPrices][7]), FormatNumber(BusinessData[bizid][bizPrices][8]), FormatNumber(BusinessData[bizid][bizPrices][9]), FormatNumber(BusinessData[bizid][bizPrices][10]), FormatNumber(BusinessData[bizid][bizPrices][11]), FormatNumber(BusinessData[bizid][bizPrices][12]), FormatNumber(BusinessData[bizid][bizPrices][13]), FormatNumber(BusinessData[bizid][bizPrices][14]), FormatNumber(BusinessData[bizid][bizPrices][15]), FormatNumber(BusinessData[bizid][bizPrices][16]), FormatNumber(BusinessData[bizid][bizPrices][17]) ); Dialog_Show(playerid, EditProduct, DIALOG_STYLE_LIST, "Business: Modify Item", string, "Modify", "Cancel"); } case 2: { format(string, sizeof(string), "Magazine - %s\nAmmo Cartridge - %s\nArmored Vest - %s\nDesert Eagle - %s\nRemington 870 - %s\nM14 Rifle - %s", FormatNumber(BusinessData[bizid][bizPrices][0]), FormatNumber(BusinessData[bizid][bizPrices][1]), FormatNumber(BusinessData[bizid][bizPrices][2]), FormatNumber(BusinessData[bizid][bizPrices][3]), FormatNumber(BusinessData[bizid][bizPrices][4]), FormatNumber(BusinessData[bizid][bizPrices][5]) ); Dialog_Show(playerid, EditProduct, DIALOG_STYLE_LIST, "Business: Modify Item", string, "Modify", "Cancel"); } case 3: { format(string, sizeof(string), "Clothes - %s\nGlasses - %s\nHats - %s\nBandana - %s", FormatNumber(BusinessData[bizid][bizPrices][0]), FormatNumber(BusinessData[bizid][bizPrices][1]), FormatNumber(BusinessData[bizid][bizPrices][2]), FormatNumber(BusinessData[bizid][bizPrices][3]) ); Dialog_Show(playerid, EditProduct, DIALOG_STYLE_LIST, "Business: Modify Item", string, "Modify", "Cancel"); } case 4: { format(string, sizeof(string), "Water - %s\nSoda - %s\nFrench Fries - %s\nCheeseburger - %s\nChicken Burger - %s\nChicken Nuggets - %s\nSalad - %s", FormatNumber(BusinessData[bizid][bizPrices][0]), FormatNumber(BusinessData[bizid][bizPrices][1]), FormatNumber(BusinessData[bizid][bizPrices][2]), FormatNumber(BusinessData[bizid][bizPrices][3]), FormatNumber(BusinessData[bizid][bizPrices][4]), FormatNumber(BusinessData[bizid][bizPrices][5]), FormatNumber(BusinessData[bizid][bizPrices][6]) ); Dialog_Show(playerid, EditProduct, DIALOG_STYLE_LIST, "Business: Modify Item", string, "Modify", "Cancel"); } case 7: { string[0] = 0; for (new i = 0; i < sizeof(g_aFurnitureTypes); i ++) { format(string, sizeof(string), "%s%s - %s\n", string, g_aFurnitureTypes[i], FormatNumber(BusinessData[bizid][bizPrices][i])); } Dialog_Show(playerid, EditProduct, DIALOG_STYLE_LIST, "Business: Modify Item", string, "Modify", "Cancel"); } } return 1; } Business_PurchaseMenu(playerid, bizid) { if (bizid == -1 || !BusinessData[bizid][bizExists]) return 0; static string[512]; switch (BusinessData[bizid][bizType]) { case 1, 6: { format(string, sizeof(string), "Mobile Phone - %s\nGPS System - %s\nSpray Paint - %s\nBackpack - %s\nWater Bottle - %s\nSoda Bottle - %s\nLottery Ticket - %s\nPortable Radio - %s\nCan of Fuel - %s\nCrowbar - %s\nBoombox - %s\nMask - %s\nFirst Aid Kit - %s\nRepair Kit - %s\nNOS Canister - %s\nBaseball Bat - %s\nFrozen Pizza - %s\nFrozen Burger - %s", FormatNumber(BusinessData[bizid][bizPrices][0]), FormatNumber(BusinessData[bizid][bizPrices][1]), FormatNumber(BusinessData[bizid][bizPrices][2]), FormatNumber(BusinessData[bizid][bizPrices][3]), FormatNumber(BusinessData[bizid][bizPrices][4]), FormatNumber(BusinessData[bizid][bizPrices][5]), FormatNumber(BusinessData[bizid][bizPrices][6]), FormatNumber(BusinessData[bizid][bizPrices][7]), FormatNumber(BusinessData[bizid][bizPrices][8]), FormatNumber(BusinessData[bizid][bizPrices][9]), FormatNumber(BusinessData[bizid][bizPrices][10]), FormatNumber(BusinessData[bizid][bizPrices][11]), FormatNumber(BusinessData[bizid][bizPrices][12]), FormatNumber(BusinessData[bizid][bizPrices][13]), FormatNumber(BusinessData[bizid][bizPrices][14]), FormatNumber(BusinessData[bizid][bizPrices][15]), FormatNumber(BusinessData[bizid][bizPrices][16]), FormatNumber(BusinessData[bizid][bizPrices][17]) ); Dialog_Show(playerid, BusinessBuy, DIALOG_STYLE_LIST, BusinessData[bizid][bizName], string, "Purchase", "Cancel"); } case 2: { format(string, sizeof(string), "Magazine - %s\nAmmo Cartridge - %s\nArmored Vest - %s\nDesert Eagle - %s\nRemington 870 - %s\nM14 Rifle - %s", FormatNumber(BusinessData[bizid][bizPrices][0]), FormatNumber(BusinessData[bizid][bizPrices][1]), FormatNumber(BusinessData[bizid][bizPrices][2]), FormatNumber(BusinessData[bizid][bizPrices][3]), FormatNumber(BusinessData[bizid][bizPrices][4]), FormatNumber(BusinessData[bizid][bizPrices][5]) ); Dialog_Show(playerid, BusinessBuy, DIALOG_STYLE_LIST, BusinessData[bizid][bizName], string, "Purchase", "Cancel"); } case 3: { format(string, sizeof(string), "Clothes - %s\nGlasses - %s\nHats - %s\nBandana - %s", FormatNumber(BusinessData[bizid][bizPrices][0]), FormatNumber(BusinessData[bizid][bizPrices][1]), FormatNumber(BusinessData[bizid][bizPrices][2]), FormatNumber(BusinessData[bizid][bizPrices][3]) ); Dialog_Show(playerid, BusinessBuy, DIALOG_STYLE_LIST, BusinessData[bizid][bizName], string, "Purchase", "Cancel"); } case 4: { format(string, sizeof(string), "Water - %s\nSoda - %s\nFrench Fries - %s\nCheeseburger - %s\nChicken Burger - %s\nChicken Nuggets - %s\nSalad - %s", FormatNumber(BusinessData[bizid][bizPrices][0]), FormatNumber(BusinessData[bizid][bizPrices][1]), FormatNumber(BusinessData[bizid][bizPrices][2]), FormatNumber(BusinessData[bizid][bizPrices][3]), FormatNumber(BusinessData[bizid][bizPrices][4]), FormatNumber(BusinessData[bizid][bizPrices][5]), FormatNumber(BusinessData[bizid][bizPrices][6]) ); Dialog_Show(playerid, BusinessBuy, DIALOG_STYLE_LIST, BusinessData[bizid][bizName], string, "Purchase", "Cancel"); } case 7: { string[0] = 0; for (new i = 0; i < sizeof(g_aFurnitureTypes); i ++) { format(string, sizeof(string), "%s%s - %s\n", string, g_aFurnitureTypes[i], FormatNumber(BusinessData[bizid][bizPrices][i])); } Dialog_Show(playerid, BusinessBuy, DIALOG_STYLE_LIST, BusinessData[bizid][bizName], string, "Purchase", "Cancel"); } } return 1; } Business_Save(bizid) { static query[2048]; format(query, sizeof(query), "UPDATE `businesses` SET `bizName` = '%s', `bizMessage` = '%s', `bizOwner` = '%d', `bizType` = '%d', `bizPrice` = '%d', `bizPosX` = '%.4f', `bizPosY` = '%.4f', `bizPosZ` = '%.4f', `bizPosA` = '%.4f', `bizIntX` = '%.4f', `bizIntY` = '%.4f', `bizIntZ` = '%.4f', `bizIntA` = '%.4f', `bizInterior` = '%d', `bizExterior` = '%d', `bizExteriorVW` = '%d', `bizLocked` = '%d', `bizVault` = '%d', `bizProducts` = '%d'", SQL_ReturnEscaped(BusinessData[bizid][bizName]), SQL_ReturnEscaped(BusinessData[bizid][bizMessage]), BusinessData[bizid][bizOwner], BusinessData[bizid][bizType], BusinessData[bizid][bizPrice], BusinessData[bizid][bizPos][0], BusinessData[bizid][bizPos][1], BusinessData[bizid][bizPos][2], BusinessData[bizid][bizPos][3], BusinessData[bizid][bizInt][0], BusinessData[bizid][bizInt][1], BusinessData[bizid][bizInt][2], BusinessData[bizid][bizInt][3], BusinessData[bizid][bizInterior], BusinessData[bizid][bizExterior], BusinessData[bizid][bizExteriorVW], BusinessData[bizid][bizLocked], BusinessData[bizid][bizVault], BusinessData[bizid][bizProducts] ); for (new i = 0; i < 20; i ++) { format(query, sizeof(query), "%s, `bizPrice%d` = '%d'", query, i + 1, BusinessData[bizid][bizPrices][i]); } format(query, sizeof(query), "%s, `bizSpawnX` = '%.4f', `bizSpawnY` = '%.4f', `bizSpawnZ` = '%.4f', `bizSpawnA` = '%.4f', `bizDeliverX` = '%.4f', `bizDeliverY` = '%.4f', `bizDeliverZ` = '%.4f', `bizShipment` = '%d' WHERE `bizID` = '%d'", query, BusinessData[bizid][bizSpawn][0], BusinessData[bizid][bizSpawn][1], BusinessData[bizid][bizSpawn][2], BusinessData[bizid][bizSpawn][3], BusinessData[bizid][bizDeliver][0], BusinessData[bizid][bizDeliver][1], BusinessData[bizid][bizDeliver][2], BusinessData[bizid][bizShipment], BusinessData[bizid][bizID] ); return mysql_tquery(g_iHandle, query); } Business_Inside(playerid) { if (PlayerData[playerid][pBusiness] != -1) { for (new i = 0; i != MAX_BUSINESSES; i ++) if (BusinessData[i][bizExists] && BusinessData[i][bizID] == PlayerData[playerid][pBusiness] && GetPlayerInterior(playerid) == BusinessData[i][bizInterior] && GetPlayerVirtualWorld(playerid) > 0) { return i; } } return -1; } Car_Inside(playerid) { new carid; if (IsPlayerInAnyVehicle(playerid) && (carid = Car_GetID(GetPlayerVehicleID(playerid))) != -1) return carid; return -1; } Car_Nearest(playerid) { static Float:fX, Float:fY, Float:fZ; for (new i = 0; i != MAX_DYNAMIC_CARS; i ++) if (CarData[i][carExists]) { GetVehiclePos(CarData[i][carVehicle], fX, fY, fZ); if (IsPlayerInRangeOfPoint(playerid, 3.0, fX, fY, fZ)) { return i; } } return -1; } Business_NearestDeliver(playerid) { for (new i = 0; i != MAX_BUSINESSES; i ++) if (BusinessData[i][bizExists] && IsPlayerInRangeOfPoint(playerid, 5.0, BusinessData[i][bizDeliver][0], BusinessData[i][bizDeliver][1], BusinessData[i][bizDeliver][2])) { return i; } return -1; } Business_Nearest(playerid, Float:radius = 2.5) { for (new i = 0; i != MAX_BUSINESSES; i ++) if (BusinessData[i][bizExists] && IsPlayerInRangeOfPoint(playerid, radius, BusinessData[i][bizPos][0], BusinessData[i][bizPos][1], BusinessData[i][bizPos][2])) { if (GetPlayerInterior(playerid) == BusinessData[i][bizExterior] && GetPlayerVirtualWorld(playerid) == BusinessData[i][bizExteriorVW]) return i; } return -1; } Business_Refresh(bizid) { if (bizid != -1 && BusinessData[bizid][bizExists]) { if (IsValidDynamic3DTextLabel(BusinessData[bizid][bizText3D])) DestroyDynamic3DTextLabel(BusinessData[bizid][bizText3D]); if (IsValidDynamic3DTextLabel(BusinessData[bizid][bizDeliverText3D])) DestroyDynamic3DTextLabel(BusinessData[bizid][bizDeliverText3D]); if (IsValidDynamicPickup(BusinessData[bizid][bizPickup])) DestroyDynamicPickup(BusinessData[bizid][bizPickup]); if (IsValidDynamicPickup(BusinessData[bizid][bizDeliverPickup])) DestroyDynamicPickup(BusinessData[bizid][bizDeliverPickup]); static string[128], pickup; if (!BusinessData[bizid][bizOwner]) { format(string, sizeof(string), "[%s]\n%s", FormatNumber(BusinessData[bizid][bizPrice]), BusinessData[bizid][bizName]); BusinessData[bizid][bizText3D] = CreateDynamic3DTextLabel(string, 0x33AA33FF, BusinessData[bizid][bizPos][0], BusinessData[bizid][bizPos][1], BusinessData[bizid][bizPos][2], 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, BusinessData[bizid][bizExteriorVW], BusinessData[bizid][bizExterior]); } else { if (BusinessData[bizid][bizLocked]) { format(string, sizeof(string), "%s (closed)", BusinessData[bizid][bizName]); } else { format(string, sizeof(string), "%s", BusinessData[bizid][bizName]); } BusinessData[bizid][bizText3D] = CreateDynamic3DTextLabel(string, (BusinessData[bizid][bizLocked]) ? (COLOR_LIGHTRED) : (COLOR_WHITE), BusinessData[bizid][bizPos][0], BusinessData[bizid][bizPos][1], BusinessData[bizid][bizPos][2], 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, BusinessData[bizid][bizExteriorVW], BusinessData[bizid][bizExterior]); } switch (BusinessData[bizid][bizType]) { case 1: pickup = 1272; case 2: pickup = 348; case 3: pickup = 1275; case 4: pickup = 19094; case 5: pickup = 1274; case 6: pickup = 1650; case 7: pickup = 2096; } if (BusinessData[bizid][bizType] == 6) { BusinessData[bizid][bizPickup] = CreateDynamicPickup(pickup, 23, BusinessData[bizid][bizPos][0], BusinessData[bizid][bizPos][1], BusinessData[bizid][bizPos][2] + 0.3, BusinessData[bizid][bizExteriorVW], BusinessData[bizid][bizExterior]); } else if (BusinessData[bizid][bizType] == 7) { BusinessData[bizid][bizPickup] = CreateDynamicPickup(pickup, 23, BusinessData[bizid][bizPos][0], BusinessData[bizid][bizPos][1], BusinessData[bizid][bizPos][2] - 0.6, BusinessData[bizid][bizExteriorVW], BusinessData[bizid][bizExterior]); } else { BusinessData[bizid][bizPickup] = CreateDynamicPickup(pickup, 23, BusinessData[bizid][bizPos][0], BusinessData[bizid][bizPos][1], BusinessData[bizid][bizPos][2], BusinessData[bizid][bizExteriorVW], BusinessData[bizid][bizExterior]); } if (BusinessData[bizid][bizDeliver][0] != 0.0 && BusinessData[bizid][bizDeliver][0] != 0.0 && BusinessData[bizid][bizDeliver][0] != 0.0) { format(string, sizeof(string), "%s\n\nDelivery Point", BusinessData[bizid][bizName]); BusinessData[bizid][bizPickup] = CreateDynamicPickup(1239, 23, BusinessData[bizid][bizDeliver][0], BusinessData[bizid][bizDeliver][1], BusinessData[bizid][bizDeliver][2]); BusinessData[bizid][bizDeliverText3D] = CreateDynamic3DTextLabel(string, COLOR_CLIENT, BusinessData[bizid][bizDeliver][0], BusinessData[bizid][bizDeliver][1], BusinessData[bizid][bizDeliver][2], 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0); } } return 1; } Business_Create(playerid, type, price) { static Float:x, Float:y, Float:z, Float:angle; if (GetPlayerPos(playerid, x, y, z) && GetPlayerFacingAngle(playerid, angle)) { for (new i = 0; i != MAX_HOUSES; i ++) { if (!BusinessData[i][bizExists]) { BusinessData[i][bizExists] = true; BusinessData[i][bizOwner] = 0; BusinessData[i][bizPrice] = price; BusinessData[i][bizType] = type; format(BusinessData[i][bizName], 32, "Unnamed Business"); BusinessData[i][bizPos][0] = x; BusinessData[i][bizPos][1] = y; BusinessData[i][bizPos][2] = z; BusinessData[i][bizPos][3] = angle; BusinessData[i][bizSpawn][0] = x; BusinessData[i][bizSpawn][1] = y; BusinessData[i][bizSpawn][2] = z; BusinessData[i][bizSpawn][3] = angle; BusinessData[i][bizDeliver][0] = 0.0; BusinessData[i][bizDeliver][1] = 0.0; BusinessData[i][bizDeliver][2] = 0.0; if (type == 1) { BusinessData[i][bizInt][0] = -27.3074; BusinessData[i][bizInt][1] = -30.8741; BusinessData[i][bizInt][2] = 1003.5573; BusinessData[i][bizInt][3] = 0.0000; BusinessData[i][bizInterior] = 4; BusinessData[i][bizPrices][0] = 75; BusinessData[i][bizPrices][1] = 125; BusinessData[i][bizPrices][2] = 15; BusinessData[i][bizPrices][3] = 100; BusinessData[i][bizPrices][4] = 3; BusinessData[i][bizPrices][5] = 2; BusinessData[i][bizPrices][6] = 10; BusinessData[i][bizPrices][7] = 100; BusinessData[i][bizPrices][8] = 20; BusinessData[i][bizPrices][9] = 10; BusinessData[i][bizPrices][10] = 150; BusinessData[i][bizPrices][11] = 200; BusinessData[i][bizPrices][12] = 160; BusinessData[i][bizPrices][13] = 60; BusinessData[i][bizPrices][14] = 50; BusinessData[i][bizPrices][15] = 5; BusinessData[i][bizPrices][16] = 10; BusinessData[i][bizPrices][17] = 5; } else if (type == 2) { BusinessData[i][bizInt][0] = 316.3963; BusinessData[i][bizInt][1] = -169.8375; BusinessData[i][bizInt][2] = 999.6010; BusinessData[i][bizInt][3] = 0.0000; BusinessData[i][bizInterior] = 6; BusinessData[i][bizPrices][0] = 50; BusinessData[i][bizPrices][1] = 100; BusinessData[i][bizPrices][2] = 200; BusinessData[i][bizPrices][3] = 400; BusinessData[i][bizPrices][4] = 600; BusinessData[i][bizPrices][5] = 800; } else if (type == 3) { BusinessData[i][bizInt][0] = 161.4801; BusinessData[i][bizInt][1] = -96.5368; BusinessData[i][bizInt][2] = 1001.8047; BusinessData[i][bizInt][3] = 0.0000; BusinessData[i][bizInterior] = 18; BusinessData[i][bizPrices][0] = 25; BusinessData[i][bizPrices][1] = 15; BusinessData[i][bizPrices][2] = 10; BusinessData[i][bizPrices][3] = 10; } else if (type == 4) { BusinessData[i][bizInt][0] = 363.3402; BusinessData[i][bizInt][1] = -74.6679; BusinessData[i][bizInt][2] = 1001.5078; BusinessData[i][bizInt][3] = 315.0000; BusinessData[i][bizInterior] = 10; BusinessData[i][bizPrices][0] = 2; BusinessData[i][bizPrices][1] = 5; BusinessData[i][bizPrices][2] = 5; BusinessData[i][bizPrices][3] = 10; BusinessData[i][bizPrices][4] = 10; BusinessData[i][bizPrices][5] = 15; BusinessData[i][bizPrices][6] = 10; } else if (type == 5) { BusinessData[i][bizInt][0] = 1494.5612; BusinessData[i][bizInt][1] = 1304.2061; BusinessData[i][bizInt][2] = 1093.2891; BusinessData[i][bizInt][3] = 0.0000; BusinessData[i][bizInterior] = 3; } else if (type == 6) { BusinessData[i][bizInt][0] = -27.3383; BusinessData[i][bizInt][1] = -57.6909; BusinessData[i][bizInt][2] = 1003.5469; BusinessData[i][bizInt][3] = 0.0000; BusinessData[i][bizInterior] = 6; BusinessData[i][bizPrices][0] = 75; BusinessData[i][bizPrices][1] = 115; BusinessData[i][bizPrices][2] = 15; BusinessData[i][bizPrices][3] = 90; BusinessData[i][bizPrices][4] = 3; BusinessData[i][bizPrices][5] = 2; BusinessData[i][bizPrices][6] = 10; BusinessData[i][bizPrices][7] = 90; BusinessData[i][bizPrices][8] = 20; BusinessData[i][bizPrices][9] = 10; BusinessData[i][bizPrices][10] = 140; BusinessData[i][bizPrices][11] = 150; BusinessData[i][bizPrices][12] = 50; BusinessData[i][bizPrices][13] = 40; BusinessData[i][bizPrices][14] = 5; BusinessData[i][bizPrices][15] = 10; BusinessData[i][bizPrices][16] = 5; } else if (type == 7) { BusinessData[i][bizInt][0] = -2240.4954; BusinessData[i][bizInt][1] = 128.3774; BusinessData[i][bizInt][2] = 1035.4210; BusinessData[i][bizInt][3] = 270.0000; BusinessData[i][bizInterior] = 6; BusinessData[i][bizPrices][0] = 75; BusinessData[i][bizPrices][1] = 115; BusinessData[i][bizPrices][2] = 15; BusinessData[i][bizPrices][3] = 95; BusinessData[i][bizPrices][4] = 3; BusinessData[i][bizPrices][5] = 2; BusinessData[i][bizPrices][6] = 10; BusinessData[i][bizPrices][7] = 100; BusinessData[i][bizPrices][8] = 20; BusinessData[i][bizPrices][9] = 10; BusinessData[i][bizPrices][10] = 140; BusinessData[i][bizPrices][11] = 190; BusinessData[i][bizPrices][12] = 150; BusinessData[i][bizPrices][13] = 60; BusinessData[i][bizPrices][14] = 50; BusinessData[i][bizPrices][15] = 5; BusinessData[i][bizPrices][16] = 10; BusinessData[i][bizPrices][17] = 5; } BusinessData[i][bizExterior] = GetPlayerInterior(playerid); BusinessData[i][bizExteriorVW] = GetPlayerVirtualWorld(playerid); BusinessData[i][bizLocked] = true; BusinessData[i][bizVault] = 0; BusinessData[i][bizProducts] = 100; BusinessData[i][bizShipment] = 0; Business_Refresh(i); mysql_tquery(g_iHandle, "INSERT INTO `businesses` (`bizOwner`) VALUES(0)", "OnBusinessCreated", "d", i); return i; } } } return -1; } stock Business_RemoveCars(bizid) { if (BusinessData[bizid][bizExists] && BusinessData[bizid][bizType] == 5) { static string[32]; for (new i = 0; i != MAX_DEALERSHIP_CARS; i ++) { DealershipCars[bizid][i][vehModel] = 0; DealershipCars[bizid][i][vehPrice] = 0; } format(string, sizeof(string), "DELETE FROM `dealervehicles` WHERE `ID` = '%d'", BusinessData[bizid][bizID]); mysql_tquery(g_iHandle, string); } return 1; } stock Business_RemovePumps(bizid) { if (BusinessData[bizid][bizExists] && BusinessData[bizid][bizType] == 6) { static string[32]; foreach (new i : Player) if (PlayerData[i][pRefill] != INVALID_VEHICLE_ID && PlayerData[i][pGasStation] == bizid) { StopRefilling(i); } for (new i = 0; i != MAX_GAS_PUMPS; i ++) if (PumpData[i][pumpExists] && PumpData[i][pumpBusiness] == bizid) { DestroyDynamicObject(PumpData[i][pumpObject]); DestroyDynamic3DTextLabel(PumpData[i][pumpText3D]); PumpData[i][pumpExists] = 0; PumpData[i][pumpFuel] = 0; } format(string, sizeof(string), "DELETE FROM `pumps` WHERE `ID` = '%d'", BusinessData[bizid][bizID]); mysql_tquery(g_iHandle, string); } return 1; } Business_Delete(bizid) { if (bizid != -1 && BusinessData[bizid][bizExists]) { new string[82]; format(string, sizeof(string), "DELETE FROM `businesses` WHERE `bizID` = '%d'", BusinessData[bizid][bizID]); mysql_tquery(g_iHandle, string); foreach (new i : Player) if (PlayerData[i][pShipment] == bizid) { PlayerData[i][pShipment] = -1; PlayerData[i][pDeliverShipment] = 0; DisablePlayerCheckpoint(i); } if (IsValidDynamic3DTextLabel(BusinessData[bizid][bizText3D])) DestroyDynamic3DTextLabel(BusinessData[bizid][bizText3D]); if (IsValidDynamicPickup(BusinessData[bizid][bizPickup])) DestroyDynamicPickup(BusinessData[bizid][bizPickup]); Business_RemovePumps(bizid); Business_RemoveCars(bizid); BusinessData[bizid][bizExists] = false; BusinessData[bizid][bizOwner] = 0; BusinessData[bizid][bizID] = 0; } return 1; } Business_IsOwner(playerid, bizid) { if (!PlayerData[playerid][pLogged] || PlayerData[playerid][pID] == -1) return 0; if (BusinessData[bizid][bizExists] && BusinessData[bizid][bizOwner] == 99999999 && PlayerData[playerid][pAdmin] > 0) return 1; if ((BusinessData[bizid][bizExists] && BusinessData[bizid][bizOwner] != 0) && BusinessData[bizid][bizOwner] == PlayerData[playerid][pID]) return 1; return 0; } forward OpenInventory(playerid); public OpenInventory(playerid) { if (!IsPlayerConnected(playerid) || !PlayerData[playerid][pCharacter]) return 0; static items[MAX_INVENTORY], amounts[MAX_INVENTORY]; for (new i = 0; i < PlayerData[playerid][pCapacity]; i ++) { if (InventoryData[playerid][i][invExists]) { items[i] = InventoryData[playerid][i][invModel]; amounts[i] = InventoryData[playerid][i][invQuantity]; } else { items[i] = -1; amounts[i] = -1; } } PlayerData[playerid][pStorageSelect] = 0; return ShowModelSelectionMenu(playerid, "Inventory", MODEL_SELECTION_INVENTORY, items, sizeof(items), 0.0, 0.0, 0.0, 1.0, -1, true, amounts); } forward SelectTD(playerid); public SelectTD(playerid) { if (!IsPlayerConnected(playerid)) return 0; return SelectTextDraw(playerid, -1); } ReturnDate() { static date[36]; getdate(date[2], date[1], date[0]); gettime(date[3], date[4], date[5]); format(date, sizeof(date), "%02d/%02d/%d, %02d:%02d", date[0], date[1], date[2], date[3], date[4]); return date; } ReturnVehicleHealth(vehicleid) { if (!IsValidVehicle(vehicleid)) return 0; static Float:amount; GetVehicleHealth(vehicleid, amount); return floatround(amount, floatround_round); } ReturnArmour(playerid) { static Float:amount; GetPlayerArmour(playerid, amount); return floatround(amount, floatround_round); } ReturnHealth(playerid) { static Float:amount; GetPlayerHealth(playerid, amount); return floatround(amount, floatround_round); } ReturnName(playerid, underscore=1) { static name[MAX_PLAYER_NAME + 1]; GetPlayerName(playerid, name, sizeof(name)); if (!underscore) { for (new i = 0, len = strlen(name); i < len; i ++) { if (name[i] == '_') name[i] = ' '; } } if (PlayerData[playerid][pMaskOn]) format(name, sizeof(name), "Mask_#%d", PlayerData[playerid][pMaskID]); return name; } ReturnIP(playerid) { static ip[16]; GetPlayerIp(playerid, ip, sizeof(ip)); return ip; } ShowStatsForPlayer(playerid, targetid) { new account[24], origin[32], string[128], count; for (new i = 0; i < MAX_INVENTORY; i ++) if (InventoryData[playerid][i][invExists]) { count++; } if (PlayerData[targetid][pAdmin] > 0) account = "Admin"; else if (PlayerData[targetid][pTester] > 0) account = "Tester"; else account = "Player"; format(origin, 32, "%.16s", PlayerData[targetid][pOrigin]); if (strlen(PlayerData[targetid][pOrigin]) > 16) strcat(origin, "..."); format(string, sizeof(string), "~g~Sex:~w~ %s~n~~g~Birthdate:~w~ %s~n~~g~Origin:~w~ %s", (PlayerData[targetid][pGender] == 2) ? ("Female") : ("Male"), PlayerData[targetid][pBirthdate], origin); PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][42], string); format(string, sizeof(string), "%s (ID: %d)", ReturnName(targetid), targetid); PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][43], string); //format(string, sizeof(string), "~g~Ping:~w~ %d~n~~g~Packetloss:~w~ %.1f%%~n~~g~Time Online:~w~ %02d:%02d:%02d", GetPlayerPing(targetid), NetStats_PacketLossPercent(targetid), hours, minutes, seconds); format(string, sizeof(string), "~g~Hours:~w~ %d~n~~g~Job:~w~ %s~n~~g~Inventory:~w~ %d/%d", PlayerData[targetid][pPlayingHours], Job_GetName(PlayerData[targetid][pJob]), count, MAX_INVENTORY); PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][46], string); format(string, sizeof(string), "~g~Money:~w~ %s~n~~g~Bank:~w~ %s~n~~g~Savings:~w~ %s", FormatNumber(PlayerData[targetid][pMoney]), FormatNumber(PlayerData[targetid][pBankMoney]), FormatNumber(PlayerData[targetid][pSavings])); PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][44], string); format(string, sizeof(string), "~g~Account:~w~ %s~n~~g~Tester:~w~ %s~n~~g~Admin:~w~ %s", account, (PlayerData[targetid][pTester]) ? ("Yes") : ("No"), (PlayerData[targetid][pAdmin]) ? ("Yes") : ("No")); PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][45], string); if (!PlayerData[playerid][pDisplayStats]) { if (targetid != playerid) { for (new i = 40; i < 50; i ++) if (i != 47 && i != 48) { PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][i]); } } else for (new i = 40; i < 50; i ++) { PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][i]); } SelectTextDraw(playerid, -1); PlayerData[playerid][pDisplayStats] = true; } else { if (PlayerData[playerid][pDisplayStats] == 2) { for (new i = 50; i < 58; i ++) PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][i]); } else for (new i = 40; i < 50; i ++) { PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][i]); } CancelSelectTextDraw(playerid); PlayerData[playerid][pDisplayStats] = false; } return 1; } Blacklist_Add(ip[], username[], banner[], reason[]) { static string[256]; format(string, sizeof(string), "INSERT INTO `blacklist` (`IP`, `Username`, `BannedBy`, `Reason`, `Date`) VALUES('%s', '%s', '%s', '%s', '%s')", SQL_ReturnEscaped(ip), SQL_ReturnEscaped(username), SQL_ReturnEscaped(banner), SQL_ReturnEscaped(reason), ReturnDate() ); mysql_tquery(g_iHandle, string); } Blacklist_Remove(username[]) { static string[128]; format(string, sizeof(string), "DELETE FROM `blacklist` WHERE `Username` = '%s'", SQL_ReturnEscaped(username)); mysql_tquery(g_iHandle, string); } Blacklist_RemoveIP(ip[]) { static string[128]; format(string, sizeof(string), "DELETE FROM `blacklist` WHERE `IP` = '%s'", SQL_ReturnEscaped(ip)); mysql_tquery(g_iHandle, string); } stock Inventory_Clear(playerid) { static string[64]; for (new i = 0; i < MAX_INVENTORY; i ++) { if (InventoryData[playerid][i][invExists]) { InventoryData[playerid][i][invExists] = 0; InventoryData[playerid][i][invModel] = 0; InventoryData[playerid][i][invQuantity] = 0; } } format(string, sizeof(string), "DELETE FROM `inventory` WHERE `ID` = '%d'", PlayerData[playerid][pID]); return mysql_tquery(g_iHandle, string); } stock Inventory_Set(playerid, item[], model, amount) { new itemid = Inventory_GetItemID(playerid, item); if (itemid == -1 && amount > 0) Inventory_Add(playerid, item, model, amount); else if (amount > 0 && itemid != -1) Inventory_SetQuantity(playerid, item, amount); else if (amount < 1 && itemid != -1) Inventory_Remove(playerid, item, -1); return 1; } stock Inventory_GetItemID(playerid, item[]) { for (new i = 0; i < MAX_INVENTORY; i ++) { if (!InventoryData[playerid][i][invExists]) continue; if (!strcmp(InventoryData[playerid][i][invItem], item)) return i; } return -1; } stock Inventory_GetFreeID(playerid) { if (Inventory_Items(playerid) >= PlayerData[playerid][pCapacity]) return -1; for (new i = 0; i < MAX_INVENTORY; i ++) { if (!InventoryData[playerid][i][invExists]) return i; } return -1; } stock Inventory_Items(playerid) { new count; for (new i = 0; i != MAX_INVENTORY; i ++) if (InventoryData[playerid][i][invExists]) { count++; } return count; } stock Inventory_Count(playerid, item[]) { new itemid = Inventory_GetItemID(playerid, item); if (itemid != -1) return InventoryData[playerid][itemid][invQuantity]; return 0; } stock Inventory_HasItem(playerid, item[]) { return (Inventory_GetItemID(playerid, item) != -1); } stock Inventory_SetQuantity(playerid, item[], quantity) { new itemid = Inventory_GetItemID(playerid, item), string[128]; if (itemid != -1) { format(string, sizeof(string), "UPDATE `inventory` SET `invQuantity` = %d WHERE `ID` = '%d' AND `invID` = '%d'", quantity, PlayerData[playerid][pID], InventoryData[playerid][itemid][invID]); mysql_tquery(g_iHandle, string); InventoryData[playerid][itemid][invQuantity] = quantity; } return 1; } stock Inventory_Add(playerid, item[], model, quantity = 1) { new itemid = Inventory_GetItemID(playerid, item), string[128]; if (itemid == -1) { itemid = Inventory_GetFreeID(playerid); if (itemid != -1) { InventoryData[playerid][itemid][invExists] = true; InventoryData[playerid][itemid][invModel] = model; InventoryData[playerid][itemid][invQuantity] = quantity; strpack(InventoryData[playerid][itemid][invItem], item, 32 char); if (strcmp(item, "Demo Soda") != 0) { format(string, sizeof(string), "INSERT INTO `inventory` (`ID`, `invItem`, `invModel`, `invQuantity`) VALUES('%d', '%s', '%d', '%d')", PlayerData[playerid][pID], item, model, quantity); mysql_tquery(g_iHandle, string, "OnInventoryAdd", "dd", playerid, itemid); } return itemid; } return -1; } else { format(string, sizeof(string), "UPDATE `inventory` SET `invQuantity` = `invQuantity` + %d WHERE `ID` = '%d' AND `invID` = '%d'", quantity, PlayerData[playerid][pID], InventoryData[playerid][itemid][invID]); mysql_tquery(g_iHandle, string); InventoryData[playerid][itemid][invQuantity] += quantity; } return itemid; } stock Inventory_Remove(playerid, item[], quantity = 1) { new itemid = Inventory_GetItemID(playerid, item), string[128]; if (itemid != -1) { if (InventoryData[playerid][itemid][invQuantity] > 0) { InventoryData[playerid][itemid][invQuantity] -= quantity; } if (quantity == -1 || InventoryData[playerid][itemid][invQuantity] < 1) { InventoryData[playerid][itemid][invExists] = false; InventoryData[playerid][itemid][invModel] = 0; InventoryData[playerid][itemid][invQuantity] = 0; format(string, sizeof(string), "DELETE FROM `inventory` WHERE `ID` = '%d' AND `invID` = '%d'", PlayerData[playerid][pID], InventoryData[playerid][itemid][invID]); mysql_tquery(g_iHandle, string); } else if (quantity != -1 && InventoryData[playerid][itemid][invQuantity] > 0) { format(string, sizeof(string), "UPDATE `inventory` SET `invQuantity` = `invQuantity` - %d WHERE `ID` = '%d' AND `invID` = '%d'", quantity, PlayerData[playerid][pID], InventoryData[playerid][itemid][invID]); mysql_tquery(g_iHandle, string); } return 1; } return 0; } stock RemoveAlpha(color) { return (color & ~0xFF); } stock CancelDrivingTest(playerid) { if (PlayerData[playerid][pDrivingTest]) { SetPlayerPos(playerid, PlayerData[playerid][pPos][0], PlayerData[playerid][pPos][1], PlayerData[playerid][pPos][2]); SetPlayerFacingAngle(playerid, PlayerData[playerid][pPos][3]); SetPlayerInterior(playerid, PlayerData[playerid][pInterior]); SetPlayerVirtualWorld(playerid, PlayerData[playerid][pWorld]); DisablePlayerCheckpoint(playerid); SetCameraBehindPlayer(playerid); DestroyVehicle(PlayerData[playerid][pTestCar]); PlayerData[playerid][pDrivingTest] = false; } return 1; } stock House_WeaponStorage(playerid, houseid) { if (houseid == -1 || !HouseData[houseid][houseExists]) return 0; static string[320]; string[0] = 0; for (new i = 0; i < 10; i ++) { if (!HouseData[houseid][houseWeapons][i]) format(string, sizeof(string), "%sEmpty Slot\n", string); else format(string, sizeof(string), "%s%s (Ammo: %d)\n", string, ReturnWeaponName(HouseData[houseid][houseWeapons][i]), HouseData[houseid][houseAmmo][i]); } Dialog_Show(playerid, HouseWeapons, DIALOG_STYLE_LIST, "Weapon Storage", string, "Select", "Cancel"); return 1; } stock House_ShowItems(playerid, houseid) { if (houseid == -1 || !HouseData[houseid][houseExists]) return 0; static string[MAX_HOUSE_STORAGE * 32], name[32]; string[0] = 0; for (new i = 0; i != MAX_HOUSE_STORAGE; i ++) { if (!HouseStorage[houseid][i][hItemExists]) format(string, sizeof(string), "%sEmpty Slot\n", string); else { strunpack(name, HouseStorage[houseid][i][hItemName]); if (HouseStorage[houseid][i][hItemQuantity] == 1) { format(string, sizeof(string), "%s%s\n", string, name); } else format(string, sizeof(string), "%s%s (%d)\n", string, name, HouseStorage[houseid][i][hItemQuantity]); } } Dialog_Show(playerid, HouseItems, DIALOG_STYLE_LIST, "Item Storage", string, "Select", "Cancel"); return 1; } stock House_OpenStorage(playerid, houseid) { if (houseid == -1 || !HouseData[houseid][houseExists]) return 0; new items[2], string[MAX_HOUSE_STORAGE * 32]; for (new i = 0; i < MAX_HOUSE_STORAGE; i ++) if (HouseStorage[houseid][i][hItemExists]) { items[0]++; } for (new i = 0; i < 10; i ++) if (HouseData[houseid][houseWeapons][i]) { items[1]++; } if (!House_IsOwner(playerid, houseid)) format(string, sizeof(string), "Item Storage (%d/%d)\nWeapon Storage (%d/10)", items[0], MAX_HOUSE_STORAGE, items[1]); else format(string, sizeof(string), "Item Storage (%d/%d)\nWeapon Storage (%d/10)\nMoney Safe (%s)", items[0], MAX_HOUSE_STORAGE, items[1], FormatNumber(HouseData[houseid][houseMoney])); Dialog_Show(playerid, HouseStorage, DIALOG_STYLE_LIST, "House Storage", string, "Select", "Cancel"); return 1; } stock House_GetItemID(houseid, item[]) { if (houseid == -1 || !HouseData[houseid][houseExists]) return 0; for (new i = 0; i < MAX_HOUSE_STORAGE; i ++) { if (!HouseStorage[houseid][i][hItemExists]) continue; if (!strcmp(HouseStorage[houseid][i][hItemName], item)) return i; } return -1; } stock House_GetFreeID(houseid) { if (houseid == -1 || !HouseData[houseid][houseExists]) return 0; for (new i = 0; i < MAX_HOUSE_STORAGE; i ++) { if (!HouseStorage[houseid][i][hItemExists]) return i; } return -1; } stock House_AddItem(houseid, item[], model, quantity = 1, slotid = -1) { if (houseid == -1 || !HouseData[houseid][houseExists]) return 0; new itemid = House_GetItemID(houseid, item), string[128]; if (itemid == -1) { itemid = House_GetFreeID(houseid); if (itemid != -1) { if (slotid != -1) itemid = slotid; HouseStorage[houseid][itemid][hItemExists] = true; HouseStorage[houseid][itemid][hItemModel] = model; HouseStorage[houseid][itemid][hItemQuantity] = quantity; strpack(HouseStorage[houseid][itemid][hItemName], item, 32 char); format(string, sizeof(string), "INSERT INTO `housestorage` (`ID`, `itemName`, `itemModel`, `itemQuantity`) VALUES('%d', '%s', '%d', '%d')", HouseData[houseid][houseID], item, model, quantity); mysql_tquery(g_iHandle, string, "OnStorageAdd", "dd", houseid, itemid); return itemid; } return -1; } else { format(string, sizeof(string), "UPDATE `housestorage` SET `itemQuantity` = `itemQuantity` + %d WHERE `ID` = '%d' AND `itemID` = '%d'", quantity, HouseData[houseid][houseID], HouseStorage[houseid][itemid][hItemID]); mysql_tquery(g_iHandle, string); HouseStorage[houseid][itemid][hItemQuantity] += quantity; } return itemid; } stock House_RemoveItem(houseid, item[], quantity = 1) { if (houseid == -1 || !HouseData[houseid][houseExists]) return 0; new itemid = House_GetItemID(houseid, item), string[128]; if (itemid != -1) { if (HouseStorage[houseid][itemid][hItemQuantity] > 0) { HouseStorage[houseid][itemid][hItemQuantity] -= quantity; } if (quantity == -1 || HouseStorage[houseid][itemid][hItemQuantity] < 1) { HouseStorage[houseid][itemid][hItemExists] = false; HouseStorage[houseid][itemid][hItemModel] = 0; HouseStorage[houseid][itemid][hItemQuantity] = 0; format(string, sizeof(string), "DELETE FROM `housestorage` WHERE `ID` = '%d' AND `itemID` = '%d'", HouseData[houseid][houseID], HouseStorage[houseid][itemid][hItemID]); mysql_tquery(g_iHandle, string); } else if (quantity != -1 && HouseStorage[houseid][itemid][hItemQuantity] > 0) { format(string, sizeof(string), "UPDATE `housestorage` SET `itemQuantity` = `itemQuantity` - %d WHERE `ID` = '%d' AND `itemID` = '%d'", quantity, HouseData[houseid][houseID], HouseStorage[houseid][itemid][hItemID]); mysql_tquery(g_iHandle, string); } return 1; } return 0; } House_RemoveAllItems(houseid) { static query[64]; for (new i = 0; i != MAX_HOUSE_STORAGE; i ++) { HouseStorage[houseid][i][hItemExists] = false; HouseStorage[houseid][i][hItemModel] = 0; HouseStorage[houseid][i][hItemQuantity] = 0; } format(query, 64, "DELETE FROM `housestorage` WHERE `ID` = '%d'", HouseData[houseid][houseID]); mysql_tquery(g_iHandle, query); for (new i = 0; i < 10; i ++) { HouseData[houseid][houseWeapons][i] = 0; HouseData[houseid][houseAmmo][i] = 0; } return 1; } stock Car_GetItemID(carid, item[]) { if (carid == -1 || !CarData[carid][carExists]) return 0; for (new i = 0; i < MAX_CAR_STORAGE; i ++) { if (!CarStorage[carid][i][cItemExists]) continue; if (!strcmp(CarStorage[carid][i][cItemName], item)) return i; } return -1; } stock Car_GetFreeID(carid) { if (carid == -1 || !CarData[carid][carExists]) return 0; for (new i = 0; i < MAX_CAR_STORAGE; i ++) { if (!CarStorage[carid][i][cItemExists]) return i; } return -1; } stock Car_AddItem(carid, item[], model, quantity = 1, slotid = -1) { if (carid == -1 || !CarData[carid][carExists]) return 0; new itemid = Car_GetItemID(carid, item), string[128]; if (itemid == -1) { itemid = Car_GetFreeID(carid); if (itemid != -1) { if (slotid != -1) itemid = slotid; CarStorage[carid][itemid][cItemExists] = true; CarStorage[carid][itemid][cItemModel] = model; CarStorage[carid][itemid][cItemQuantity] = quantity; strpack(CarStorage[carid][itemid][cItemName], item, 32 char); format(string, sizeof(string), "INSERT INTO `carstorage` (`ID`, `itemName`, `itemModel`, `itemQuantity`) VALUES('%d', '%s', '%d', '%d')", CarData[carid][carID], item, model, quantity); mysql_tquery(g_iHandle, string, "OnCarStorageAdd", "dd", carid, itemid); return itemid; } return -1; } else { format(string, sizeof(string), "UPDATE `carstorage` SET `itemQuantity` = `itemQuantity` + %d WHERE `ID` = '%d' AND `itemID` = '%d'", quantity, CarData[carid][carID], CarStorage[carid][itemid][cItemID]); mysql_tquery(g_iHandle, string); CarStorage[carid][itemid][cItemQuantity] += quantity; } return itemid; } stock Car_RemoveItem(carid, item[], quantity = 1) { if (carid == -1 || !CarData[carid][carExists]) return 0; new itemid = Car_GetItemID(carid, item), string[128]; if (itemid != -1) { if (CarStorage[carid][itemid][cItemQuantity] > 0) { CarStorage[carid][itemid][cItemQuantity] -= quantity; } if (quantity == -1 || CarStorage[carid][itemid][cItemQuantity] < 1) { CarStorage[carid][itemid][cItemExists] = false; CarStorage[carid][itemid][cItemModel] = 0; CarStorage[carid][itemid][cItemQuantity] = 0; format(string, sizeof(string), "DELETE FROM `carstorage` WHERE `ID` = '%d' AND `itemID` = '%d'", CarData[carid][carID], CarStorage[carid][itemid][cItemID]); mysql_tquery(g_iHandle, string); } else if (quantity != -1 && CarStorage[carid][itemid][cItemQuantity] > 0) { format(string, sizeof(string), "UPDATE `carstorage` SET `itemQuantity` = `itemQuantity` - %d WHERE `ID` = '%d' AND `itemID` = '%d'", quantity, CarData[carid][carID], CarStorage[carid][itemid][cItemID]); mysql_tquery(g_iHandle, string); } return 1; } return 0; } Car_RemoveAllItems(carid) { static query[64]; for (new i = 0; i != MAX_CAR_STORAGE; i ++) { CarStorage[carid][i][cItemExists] = false; CarStorage[carid][i][cItemModel] = 0; CarStorage[carid][i][cItemQuantity] = 0; } format(query, 64, "DELETE FROM `carstorage` WHERE `ID` = '%d'", CarData[carid][carID]); mysql_tquery(g_iHandle, query); for (new i = 0; i < 5; i ++) { CarData[carid][carWeapons][i] = 0; CarData[carid][carAmmo][i] = 0; } return 1; } FormatNumber(number, prefix[] = "$") { static value[32], length; format(value, sizeof(value), "%d", (number < 0) ? (-number) : (number)); if ((length = strlen(value)) > 3) { for (new i = length, l = 0; --i >= 0; l ++) { if ((l > 0) && (l % 3 == 0)) strins(value, ",", i + 1); } } if (prefix[0] != 0) strins(value, prefix, 0); if (number < 0) strins(value, "-", 0); return value; } ResetFaction(playerid) { PlayerData[playerid][pFaction] = -1; PlayerData[playerid][pFactionID] = -1; PlayerData[playerid][pFactionRank] = 0; } forward DragUpdate(playerid, targetid); public DragUpdate(playerid, targetid) { if (PlayerData[targetid][pDragged] && PlayerData[targetid][pDraggedBy] == playerid) { static Float:fX, Float:fY, Float:fZ, Float:fAngle; GetPlayerPos(playerid, fX, fY, fZ); GetPlayerFacingAngle(playerid, fAngle); fX -= 3.0 * floatsin(-fAngle, degrees); fY -= 3.0 * floatcos(-fAngle, degrees); SetPlayerPos(targetid, fX, fY, fZ); SetPlayerInterior(targetid, GetPlayerInterior(playerid)); SetPlayerVirtualWorld(targetid, GetPlayerVirtualWorld(playerid)); } return 1; } StopDragging(playerid) { if (PlayerData[playerid][pDragged]) { PlayerData[playerid][pDragged] = 0; PlayerData[playerid][pDraggedBy] = INVALID_PLAYER_ID; KillTimer(PlayerData[playerid][pDragTimer]); } return 1; } ResetEditing(playerid) { if (PlayerData[playerid][pEditFurniture] != -1) Furniture_Refresh(PlayerData[playerid][pEditFurniture]); if (PlayerData[playerid][pEditPump] != -1) { Pump_Refresh(PlayerData[playerid][pEditPump]); PlayerData[playerid][pGasStation] = -1; } PlayerData[playerid][pEditType] = 0; PlayerData[playerid][pEditGate] = -1; PlayerData[playerid][pEditRack] = -1; PlayerData[playerid][pEditPump] = -1; PlayerData[playerid][pEditFurniture] = -1; return 1; } ResetPlayer(playerid) { if (PlayerData[playerid][pDrinking]) DestroyPlayerProgressBar(playerid, PlayerData[playerid][pDrinkBar]); if (PlayerData[playerid][pFirstAid]) KillTimer(PlayerData[playerid][pAidTimer]); if (PlayerData[playerid][pDrivingTest]) DestroyVehicle(PlayerData[playerid][pTestCar]); if (PlayerData[playerid][pWaypoint]) { PlayerData[playerid][pWaypoint] = 0; PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][69]); } foreach (new i : Player) if (PlayerData[i][pDraggedBy] == playerid) { StopDragging(i); } if (PlayerData[playerid][pDragged]) { StopDragging(playerid); } PlayerData[playerid][pHospital] = -1; PlayerData[playerid][pCooking] = 0; PlayerData[playerid][pCookingTime] = 0; PlayerData[playerid][pCookingHouse] = -1; PlayerData[playerid][pGasPump] = -1; PlayerData[playerid][pCarryTrash] = 0; PlayerData[playerid][pGasStation] = -1; PlayerData[playerid][pCrafting] = 0; PlayerData[playerid][pOpeningCrate] = 0; PlayerData[playerid][pHarvesting] = 0; PlayerData[playerid][pDrivingTest] = 0; PlayerData[playerid][pFuelCan] = 0; PlayerData[playerid][pFingerTime] = 0; PlayerData[playerid][pFingerItem] = -1; PlayerData[playerid][pFirstAid] = 0; PlayerData[playerid][pDrinking] = 0; PlayerData[playerid][pDrinkTime] = 0; PlayerData[playerid][pEmergency] = 0; PlayerData[playerid][pPlaceAd] = 0; PlayerData[playerid][pAdTime] = 0; PlayerData[playerid][pTaxiCalled] = 0; PlayerData[playerid][pMining] = 0; PlayerData[playerid][pMinedRock] = 0; PlayerData[playerid][pMineTime] = 0; PlayerData[playerid][pBleeding] = 0; PlayerData[playerid][pBleedTime] = 0; PlayerData[playerid][pLoadType] = 0; PlayerData[playerid][pLoadCrate] = 0; PlayerData[playerid][pLoading] = 0; PlayerData[playerid][pUnloading] = -1; PlayerData[playerid][pUnloadVehicle] = INVALID_VEHICLE_ID; PlayerData[playerid][pUsedMagazine] = 0; PlayerData[playerid][pSorting] = -1; PlayerData[playerid][pSortCrate] = 0; PlayerData[playerid][pCP] = 0; PlayerData[playerid][pMaskOn] = 0; PlayerData[playerid][pHideTags] = 0; PlayerData[playerid][pCuffed] = 0; PlayerData[playerid][pGraffiti] = -1; PlayerData[playerid][pGraffitiTime] = 0; PlayerData[playerid][pPicking] = 0; PlayerData[playerid][pPickCar] = -1; PlayerData[playerid][pPickTime] = 0; if (Inventory_HasItem(playerid, "Mask")) { Inventory_Remove(playerid, "Mask"); } ResetNameTag(playerid); RemovePlayerAttachedObject(playerid, 4); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE); DisablePlayerCheckpoint(playerid); GameTextForPlayer(playerid, " ", 1, 3); HidePlayerFooter(playerid); HoldWeapon(playerid, 0); } ResetWeapons(playerid) { ResetPlayerWeapons(playerid); for (new i = 0; i < 13; i ++) { PlayerData[playerid][pGuns][i] = 0; PlayerData[playerid][pAmmo][i] = 0; } return 1; } ResetWeapon(playerid, weaponid) { ResetPlayerWeapons(playerid); for (new i = 0; i < 13; i ++) { if (PlayerData[playerid][pGuns][i] != weaponid) { GivePlayerWeapon(playerid, PlayerData[playerid][pGuns][i], PlayerData[playerid][pAmmo][i]); } else { PlayerData[playerid][pGuns][i] = 0; PlayerData[playerid][pAmmo][i] = 0; } } return 1; } GiveWeaponToPlayer(playerid, weaponid, ammo) { if (weaponid < 0 || weaponid > 46) return 0; PlayerData[playerid][pGuns][g_aWeaponSlots[weaponid]] = weaponid; PlayerData[playerid][pAmmo][g_aWeaponSlots[weaponid]] += ammo; return GivePlayerWeapon(playerid, weaponid, ammo); } GiveMoney(playerid, amount) { PlayerData[playerid][pMoney] += amount; GivePlayerMoney(playerid, amount); return 1; } GetPlayerSQLID(playerid) { return (PlayerData[playerid][pID]); } GetMoney(playerid) { return (PlayerData[playerid][pMoney]); } IsValidPlayerName(const str[]) { if (!str[0] || str[0] == '\1') return 0; for (new i = 0, l = strlen(str); i != l; i ++) { if ((str[i] >= '0' && str[i] <= '9') || (str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z')) continue; if (str[i] == '_' || str[i] == '$' || str[i] == '@' || str[i] == '[' || str[i] == ']') continue; else return 0; } return 1; } IsAnIP(str[]) { if (!str[0] || str[0] == '\1') return 0; for (new i = 0, l = strlen(str); i != l; i ++) { if ((str[i] < '0' || str[i] > '9') && str[i] != '.') return 0; if (0 < ((i == 0) ? (strval(str)) : (strval(str[i + 1]))) > 255) return 0; } return 1; } Report_GetCount(playerid) { new count; for (new i = 0; i != MAX_REPORTS; i ++) { if (ReportData[i][rExists] && ReportData[i][rPlayer] == playerid) { count++; } } return count; } Report_Clear(playerid) { for (new i = 0; i != MAX_REPORTS; i ++) { if (ReportData[i][rExists] && ReportData[i][rPlayer] == playerid) { Report_Remove(i); } } return 1; } Report_Add(playerid, const text[], type = 1) { for (new i = 0; i != MAX_REPORTS; i ++) { if (!ReportData[i][rExists]) { ReportData[i][rExists] = true; ReportData[i][rType] = type; ReportData[i][rPlayer] = playerid; strpack(ReportData[i][rText], text, 128 char); return i; } } return -1; } Report_Remove(reportid) { if (reportid != -1 && ReportData[reportid][rExists]) { ReportData[reportid][rExists] = false; ReportData[reportid][rPlayer] = INVALID_PLAYER_ID; } return 1; } KickEx(playerid) { if (PlayerData[playerid][pKicked]) return 0; PlayerData[playerid][pKicked] = 1; SetTimerEx("KickTimer", 200, false, "d", playerid); return 1; } forward KickTimer(playerid); public KickTimer(playerid) { if (PlayerData[playerid][pKicked]) { return Kick(playerid); } return 0; } stock SetDefaultSpawn(playerid) { SetPlayerInterior(playerid, 0); SetPlayerVirtualWorld(playerid, 0); if(PlayerData[playerid][pSpawnPoint] == 0) // Airport { SetPlayerPos(playerid, 1642.1957, -2334.4849, 13.5469); SetPlayerFacingAngle(playerid, 0.0); } if(PlayerData[playerid][pSpawnPoint] == 1) // Faction { new faction = PlayerData[playerid][pFactionID]; if(PlayerData[playerid][pFactionID] == -1) { SendErrorMessage(playerid, "You've been set to civilian spawn."); SetPlayerPos(playerid, 1642.1957, -2334.4849, 13.5469); SetPlayerFacingAngle(playerid, 0.0); } SetPlayerPos(playerid,FactionData[faction][SpawnX],FactionData[faction][SpawnY],FactionData[faction][SpawnZ]); SetPlayerInterior(playerid,FactionData[faction][SpawnInterior]); SetPlayerVirtualWorld(playerid, FactionData[faction][SpawnVW]); } if(PlayerData[playerid][pSpawnPoint] == 2) { SetPlayerPos(playerid, PlayerData[playerid][pPos][0], PlayerData[playerid][pPos][1], PlayerData[playerid][pPos][2]); SetPlayerFacingAngle(playerid, PlayerData[playerid][pPos][3]); SetPlayerInterior(playerid, PlayerData[playerid][pInterior]); SetPlayerVirtualWorld(playerid, PlayerData[playerid][pWorld]); } /*#if SERVER_CITY == 1 SetPlayerPos(playerid, 1642.1957, -2334.4849, 13.5469); SetPlayerFacingAngle(playerid, 0.0); #elseif SERVER_CITY == 2 SetPlayerPos(playerid, -2425.5615, 337.5465, 37.0018); SetPlayerFacingAngle(playerid, 238.0); #elseif SERVER_CITY == 3 SetPlayerPos(playerid, 1675.7245, 1447.8938, 10.7866); SetPlayerFacingAngle(playerid, 270.0); #endif*/ SetCameraBehindPlayer(playerid); TogglePlayerControllable(playerid, 1); return 1; } stock RespawnPlayer(playerid) { if (IsPlayerInAnyVehicle(playerid)) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); SetPlayerPos(playerid, x, y, z + 1); } SpawnPlayer(playerid); SetDefaultSpawn(playerid); return 1; } stock IsPlayerIdle(playerid) { new index = GetPlayerAnimationIndex(playerid); return ((index == 1275) || (1181 <= index <= 1192)); } stock IsPlayerNearDynamicObject(playerid, objectid, Float:range = 5.0) { static Float:fX, Float:fY, Float:fZ; GetDynamicObjectPos(objectid, fX, fY, fZ); return (IsPlayerInRangeOfPoint(playerid, range, fX, fY, fZ)); } stock IsPlayerSpawned(playerid) { if (playerid < 0 || playerid >= MAX_PLAYERS) return 0; return (!PlayerData[playerid][pKilled]) && (GetPlayerState(playerid) != PLAYER_STATE_SPECTATING && GetPlayerState(playerid) != PLAYER_STATE_NONE && GetPlayerState(playerid) != PLAYER_STATE_WASTED); } stock GetVehicleMaxSeats(vehicleid) { static const g_arrMaxSeats[] = { 4, 2, 2, 2, 4, 4, 1, 2, 2, 4, 2, 2, 2, 4, 2, 2, 4, 2, 4, 2, 4, 4, 2, 2, 2, 1, 4, 4, 4, 2, 1, 7, 1, 2, 2, 0, 2, 7, 4, 2, 4, 1, 2, 2, 2, 4, 1, 2, 1, 0, 0, 2, 1, 1, 1, 2, 2, 2, 4, 4, 2, 2, 2, 2, 1, 1, 4, 4, 2, 2, 4, 2, 1, 1, 2, 2, 1, 2, 2, 4, 2, 1, 4, 3, 1, 1, 1, 4, 2, 2, 4, 2, 4, 1, 2, 2, 2, 4, 4, 2, 2, 1, 2, 2, 2, 2, 2, 4, 2, 1, 1, 2, 1, 1, 2, 2, 4, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 1, 1, 1, 2, 2, 2, 2, 7, 7, 1, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 4, 4, 2, 1, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 1, 2, 4, 4, 1, 0, 0, 1, 1, 2, 1, 2, 2, 1, 2, 4, 4, 2, 4, 1, 0, 4, 2, 2, 2, 2, 0, 0, 7, 2, 2, 1, 4, 4, 4, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 4, 0, 0 }; new model = GetVehicleModel(vehicleid); if (400 <= model <= 611) return g_arrMaxSeats[model - 400]; return 0; } stock GetNearestVehicle(playerid) { static Float:fX, Float:fY, Float:fZ; for (new i = 1; i != MAX_VEHICLES; i ++) if (IsValidVehicle(i) && GetVehiclePos(i, fX, fY, fZ)) { if (IsPlayerInRangeOfPoint(playerid, 3.5, fX, fY, fZ)) return i; } return INVALID_VEHICLE_ID; } stock IsPlayerNearPlayer(playerid, targetid, Float:radius) { static Float:fX, Float:fY, Float:fZ; GetPlayerPos(targetid, fX, fY, fZ); return (GetPlayerInterior(playerid) == GetPlayerInterior(targetid) && GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(targetid)) && IsPlayerInRangeOfPoint(playerid, radius, fX, fY, fZ); } stock IsPlayerNearBoot(playerid, vehicleid) { static Float:fX, Float:fY, Float:fZ; GetVehicleBoot(vehicleid, fX, fY, fZ); return (GetPlayerVirtualWorld(playerid) == GetVehicleVirtualWorld(vehicleid)) && IsPlayerInRangeOfPoint(playerid, 3.5, fX, fY, fZ); } stock IsPlayerNearHood(playerid, vehicleid) { static Float:fX, Float:fY, Float:fZ; GetVehicleHood(vehicleid, fX, fY, fZ); return (GetPlayerVirtualWorld(playerid) == GetVehicleVirtualWorld(vehicleid)) && IsPlayerInRangeOfPoint(playerid, 3.0, fX, fY, fZ); } stock SendNearbyMessage(playerid, Float:radius, color, const str[], {Float,_}:...) { static args, start, end, string[144] ; #emit LOAD.S.pri 8 #emit STOR.pri args if (args > 16) { #emit ADDR.pri str #emit STOR.pri start for (end = start + (args - 16); end > start; end -= 4) { #emit LREF.pri end #emit PUSH.pri } #emit PUSH.S str #emit PUSH.C 144 #emit PUSH.C string #emit LOAD.S.pri 8 #emit CONST.alt 4 #emit SUB #emit PUSH.pri #emit SYSREQ.C format #emit LCTRL 5 #emit SCTRL 4 foreach (new i : Player) { if (IsPlayerNearPlayer(i, playerid, radius)) { SendClientMessage(i, color, string); } } return 1; } foreach (new i : Player) { if (IsPlayerNearPlayer(i, playerid, radius)) { SendClientMessage(i, color, str); } } return 1; } stock SendAdminAlert(color, const str[], {Float,_}:...) { static args, start, end, string[144] ; #emit LOAD.S.pri 8 #emit STOR.pri args if (args > 8) { #emit ADDR.pri str #emit STOR.pri start for (end = start + (args - 8); end > start; end -= 4) { #emit LREF.pri end #emit PUSH.pri } #emit PUSH.S str #emit PUSH.C 144 #emit PUSH.C string #emit LOAD.S.pri 8 #emit ADD.C 4 #emit PUSH.pri #emit SYSREQ.C format #emit LCTRL 5 #emit SCTRL 4 foreach (new i : Player) { if (PlayerData[i][pAdmin] >= 1) { SendClientMessage(i, color, string); } } return 1; } foreach (new i : Player) { if (PlayerData[i][pAdmin] >= 1) { SendClientMessage(i, color, str); } } return 1; } stock SendFactionAlert(color, const str[], {Float,_}:...) { static args, start, end, string[144] ; #emit LOAD.S.pri 8 #emit STOR.pri args if (args > 8) { #emit ADDR.pri str #emit STOR.pri start for (end = start + (args - 8); end > start; end -= 4) { #emit LREF.pri end #emit PUSH.pri } #emit PUSH.S str #emit PUSH.C 144 #emit PUSH.C string #emit LOAD.S.pri 8 #emit ADD.C 4 #emit PUSH.pri #emit SYSREQ.C format #emit LCTRL 5 #emit SCTRL 4 foreach (new i : Player) { if (PlayerData[i][pAdmin] >= 1 || PlayerData[i][pFactionMod] > 0) { SendClientMessage(i, color, string); } } return 1; } foreach (new i : Player) { if (PlayerData[i][pAdmin] >= 1 || PlayerData[i][pFactionMod] > 0) { SendClientMessage(i, color, str); } } return 1; } stock SendTesterMessage(color, const str[], {Float,_}:...) { static args, start, end, string[144] ; #emit LOAD.S.pri 8 #emit STOR.pri args if (args > 8) { #emit ADDR.pri str #emit STOR.pri start for (end = start + (args - 8); end > start; end -= 4) { #emit LREF.pri end #emit PUSH.pri } #emit PUSH.S str #emit PUSH.C 144 #emit PUSH.C string #emit LOAD.S.pri 8 #emit ADD.C 4 #emit PUSH.pri #emit SYSREQ.C format #emit LCTRL 5 #emit SCTRL 4 foreach (new i : Player) { if ((!PlayerData[i][pDisableTester]) && (PlayerData[i][pTester] >= 1 || PlayerData[i][pAdmin] > 0)) { SendClientMessage(i, color, string); } } return 1; } foreach (new i : Player) { if ((!PlayerData[i][pDisableTester]) && (PlayerData[i][pTester] >= 1 || PlayerData[i][pAdmin] > 0)) { SendClientMessage(i, color, str); } } return 1; } stock SendFactionMessageEx(type, color, const str[], {Float,_}:...) { static args, start, end, string[144] ; #emit LOAD.S.pri 8 #emit STOR.pri args if (args > 12) { #emit ADDR.pri str #emit STOR.pri start for (end = start + (args - 12); end > start; end -= 4) { #emit LREF.pri end #emit PUSH.pri } #emit PUSH.S str #emit PUSH.C 144 #emit PUSH.C string #emit PUSH.C args #emit SYSREQ.C format #emit LCTRL 5 #emit SCTRL 4 foreach (new i : Player) if (PlayerData[i][pFaction] != -1 && GetFactionType(i) == type && !PlayerData[i][pDisableFaction]) { SendClientMessage(i, color, string); } return 1; } foreach (new i : Player) if (PlayerData[i][pFaction] != -1 && GetFactionType(i) == type && !PlayerData[i][pDisableFaction]) { SendClientMessage(i, color, str); } return 1; } stock SendFactionMessage(factionid, color, const str[], {Float,_}:...) { static args, start, end, string[144] ; #emit LOAD.S.pri 8 #emit STOR.pri args if (args > 12) { #emit ADDR.pri str #emit STOR.pri start for (end = start + (args - 12); end > start; end -= 4) { #emit LREF.pri end #emit PUSH.pri } #emit PUSH.S str #emit PUSH.C 144 #emit PUSH.C string #emit PUSH.C args #emit SYSREQ.C format #emit LCTRL 5 #emit SCTRL 4 foreach (new i : Player) if (PlayerData[i][pFaction] == factionid && !PlayerData[i][pDisableFaction]) { SendClientMessage(i, color, string); } return 1; } foreach (new i : Player) if (PlayerData[i][pFaction] == factionid && !PlayerData[i][pDisableFaction]) { SendClientMessage(i, color, str); } return 1; } stock SendJobMessage(jobid, color, const str[], {Float,_}:...) { static args, start, end, string[144] ; #emit LOAD.S.pri 8 #emit STOR.pri args if (args > 12) { #emit ADDR.pri str #emit STOR.pri start for (end = start + (args - 12); end > start; end -= 4) { #emit LREF.pri end #emit PUSH.pri } #emit PUSH.S str #emit PUSH.C 144 #emit PUSH.C string #emit PUSH.C args #emit SYSREQ.C format #emit LCTRL 5 #emit SCTRL 4 foreach (new i : Player) if (PlayerData[i][pJob] == jobid) { SendClientMessage(i, color, string); } return 1; } foreach (new i : Player) if (PlayerData[i][pJob] == jobid) { SendClientMessage(i, color, str); } return 1; } stock SendVehicleMessage(vehicleid, color, const str[], {Float,_}:...) { static args, start, end, string[144] ; #emit LOAD.S.pri 8 #emit STOR.pri args if (args > 12) { #emit ADDR.pri str #emit STOR.pri start for (end = start + (args - 12); end > start; end -= 4) { #emit LREF.pri end #emit PUSH.pri } #emit PUSH.S str #emit PUSH.C 144 #emit PUSH.C string #emit PUSH.C args #emit SYSREQ.C format #emit LCTRL 5 #emit SCTRL 4 foreach (new i : Player) if (GetPlayerVehicleID(i) == vehicleid) { SendClientMessage(i, color, string); } return 1; } foreach (new i : Player) if (GetPlayerVehicleID(i) == vehicleid) { SendClientMessage(i, color, string); } return 1; } stock SendRadioMessage(frequency, color, const str[], {Float,_}:...) { static args, start, end, string[144] ; #emit LOAD.S.pri 8 #emit STOR.pri args if (args > 12) { #emit ADDR.pri str #emit STOR.pri start for (end = start + (args - 12); end > start; end -= 4) { #emit LREF.pri end #emit PUSH.pri } #emit PUSH.S str #emit PUSH.C 144 #emit PUSH.C string #emit PUSH.C args #emit SYSREQ.C format #emit LCTRL 5 #emit SCTRL 4 foreach (new i : Player) if (Inventory_HasItem(i, "Portable Radio") && PlayerData[i][pChannel] == frequency) { SendClientMessage(i, color, string); } return 1; } foreach (new i : Player) if (Inventory_HasItem(i, "Portable Radio") && PlayerData[i][pChannel] == frequency) { SendClientMessage(i, color, str); } return 1; } stock SendClientMessageEx(playerid, color, const text[], {Float, _}:...) { static args, str[144]; /* * Custom function that uses #emit to format variables into a string. * This code is very fragile; touching any code here will cause crashing! */ if ((args = numargs()) == 3) { SendClientMessage(playerid, color, text); } else { while (--args >= 3) { #emit LCTRL 5 #emit LOAD.alt args #emit SHL.C.alt 2 #emit ADD.C 12 #emit ADD #emit LOAD.I #emit PUSH.pri } #emit PUSH.S text #emit PUSH.C 144 #emit PUSH.C str #emit PUSH.S 8 #emit SYSREQ.C format #emit LCTRL 5 #emit SCTRL 4 SendClientMessage(playerid, color, str); #emit RETN } return 1; } stock SendClientMessageToAllEx(color, const text[], {Float, _}:...) { static args, str[144]; /* * Custom function that uses #emit to format variables into a string. * This code is very fragile; touching any code here will cause crashing! */ if ((args = numargs()) == 2) { SendClientMessageToAll(color, text); } else { while (--args >= 2) { #emit LCTRL 5 #emit LOAD.alt args #emit SHL.C.alt 2 #emit ADD.C 12 #emit ADD #emit LOAD.I #emit PUSH.pri } #emit PUSH.S text #emit PUSH.C 144 #emit PUSH.C str #emit LOAD.S.pri 8 #emit ADD.C 4 #emit PUSH.pri #emit SYSREQ.C format #emit LCTRL 5 #emit SCTRL 4 SendClientMessageToAll(color, str); #emit RETN } return 1; } stock Log_Write(const path[], const str[], {Float,_}:...) { static args, start, end, File:file, string[1024] ; if ((start = strfind(path, "/")) != -1) { strmid(string, path, 0, start + 1); if (!fexist(string)) return printf("** Warning: Directory \"%s\" doesn't exist.", string); } #emit LOAD.S.pri 8 #emit STOR.pri args file = fopen(path, io_append); if (!file) return 0; if (args > 8) { #emit ADDR.pri str #emit STOR.pri start for (end = start + (args - 8); end > start; end -= 4) { #emit LREF.pri end #emit PUSH.pri } #emit PUSH.S str #emit PUSH.C 1024 #emit PUSH.C string #emit PUSH.C args #emit SYSREQ.C format fwrite(file, string); fwrite(file, "\r\n"); fclose(file); #emit LCTRL 5 #emit SCTRL 4 #emit RETN } fwrite(file, str); fwrite(file, "\r\n"); fclose(file); return 1; } IsValidRoleplayName(const name[]) { if (!name[0] || strfind(name, "_") == -1) return 0; else for (new i = 0, len = strlen(name); i != len; i ++) { if ((i == 0) && (name[i] < 'A' || name[i] > 'Z')) return 0; else if ((i != 0 && i < len && name[i] == '_') && (name[i + 1] < 'A' || name[i + 1] > 'Z')) return 0; else if ((name[i] < 'A' || name[i] > 'Z') && (name[i] < 'a' || name[i] > 'z') && name[i] != '_' && name[i] != '.') return 0; } return 1; } CreateTextDraws(playerid) { /*PlayerData[playerid][pTextdraws][0] = CreatePlayerTextDraw(playerid, 240.000000, 161.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][0], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][0], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][0], 0.409999, 9.699998); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][0], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][0], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][0], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][0], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][0], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][0], 0x00000088); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][0], 411.000000, 40.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][0], 0); PlayerData[playerid][pTextdraws][1] = CreatePlayerTextDraw(playerid, 259.000000, 161.000000, "Characters"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][1], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][1], 2); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][1], 0.480000, 1.400000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][1], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][1], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][1], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][1], 0); PlayerData[playerid][pTextdraws][2] = CreatePlayerTextDraw(playerid, 260.000000, 186.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][2], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][2], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][2], 0.400000, 1.500000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][2], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][2], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][2], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][2], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][2], -205); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][2], 390.000000, 20.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][2], 1); PlayerData[playerid][pTextdraws][3] = CreatePlayerTextDraw(playerid, 260.000000, 203.500000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][3], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][3], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][3], 0.400000, 1.500000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][3], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][3], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][3], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][3], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][3], -205); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][3], 390.000000, 20.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][3], 1); PlayerData[playerid][pTextdraws][4] = CreatePlayerTextDraw(playerid, 260.000000, 221.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][4], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][4], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][4], 0.400000, 1.500000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][4], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][4], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][4], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][4], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][4], -205); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][4], 390.000000, 20.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][4], 1); PlayerData[playerid][pTextdraws][5] = CreatePlayerTextDraw(playerid, 323.000000, 188.000000, "Empty Slot"); PlayerTextDrawAlignment(playerid, PlayerData[playerid][pTextdraws][5], 2); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][5], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][5], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][5], 0.310000, 0.899999); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][5], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][5], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][5], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][5], 0); PlayerData[playerid][pTextdraws][6] = CreatePlayerTextDraw(playerid, 323.000000, 206.000000, "Empty Slot"); PlayerTextDrawAlignment(playerid, PlayerData[playerid][pTextdraws][6], 2); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][6], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][6], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][6], 0.310000, 0.899999); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][6], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][6], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][6], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][6], 0); PlayerData[playerid][pTextdraws][7] = CreatePlayerTextDraw(playerid, 323.000000, 223.000000, "Empty Slot"); PlayerTextDrawAlignment(playerid, PlayerData[playerid][pTextdraws][7], 2); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][7], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][7], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][7], 0.310000, 0.899999); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][7], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][7], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][7], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][7], 0);*/ PlayerData[playerid][pTextdraws][0] = CreatePlayerTextDraw(playerid, 239.000000, 156.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][0], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][0], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][0], 0.519999, 11.100000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][0], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][0], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][0], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][0], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][0], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][0], 102); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][0], 416.000000, 40.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][0], 0); PlayerData[playerid][pTextdraws][1] = CreatePlayerTextDraw(playerid, 326.000000, 158.000000, "My Characters"); PlayerTextDrawAlignment(playerid, PlayerData[playerid][pTextdraws][1], 2); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][1], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][1], 2); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][1], 0.330000, 1.199998); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][1], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][1], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][1], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][1], 0); PlayerData[playerid][pTextdraws][2] = CreatePlayerTextDraw(playerid, 263.000000, 181.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][2], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][2], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][2], 0.489998, 1.299998); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][2], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][2], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][2], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][2], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][2], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][2], -205); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][2], 393.000000, 12.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][2], 1); PlayerData[playerid][pTextdraws][3] = CreatePlayerTextDraw(playerid, 263.000000, 204.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][3], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][3], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][3], 0.490000, 1.299998); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][3], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][3], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][3], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][3], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][3], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][3], -205); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][3], 393.000000, 12.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][3], 1); PlayerData[playerid][pTextdraws][4] = CreatePlayerTextDraw(playerid, 263.000000, 227.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][4], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][4], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][4], 0.490000, 1.299996); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][4], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][4], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][4], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][4], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][4], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][4], -205); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][4], 393.000000, 12.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][4], 1); PlayerData[playerid][pTextdraws][5] = CreatePlayerTextDraw(playerid, 324.000000, 182.000000, "Empty Slot"); PlayerTextDrawAlignment(playerid, PlayerData[playerid][pTextdraws][5], 2); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][5], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][5], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][5], 0.309998, 0.999998); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][5], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][5], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][5], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][5], 0); PlayerData[playerid][pTextdraws][6] = CreatePlayerTextDraw(playerid, 324.000000, 205.000000, "Empty Slot"); PlayerTextDrawAlignment(playerid, PlayerData[playerid][pTextdraws][6], 2); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][6], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][6], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][6], 0.309998, 0.999998); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][6], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][6], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][6], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][6], 0); PlayerData[playerid][pTextdraws][7] = CreatePlayerTextDraw(playerid, 324.000000, 228.000000, "Empty Slot"); PlayerTextDrawAlignment(playerid, PlayerData[playerid][pTextdraws][7], 2); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][7], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][7], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][7], 0.309998, 0.999998); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][7], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][7], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][7], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][7], 0); PlayerData[playerid][pTextdraws][8] = CreatePlayerTextDraw(playerid, 0.000000, 0.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][8], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][8], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][8], 0.000000, 480.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][8], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][8], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][8], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][8], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][8], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][8], 1482184789); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][8], 640.000000, 42.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][8], 0); /*PlayerData[playerid][pTextdraws][8] = CreatePlayerTextDraw(playerid, 320.000000, 164.000000, "Load Character"); PlayerTextDrawAlignment(playerid, PlayerData[playerid][pTextdraws][8], 2); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][8], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][8], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][8], 0.350000, 0.999999); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][8], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][8], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][8], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][8], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][8], 0); PlayerData[playerid][pTextdraws][9] = CreatePlayerTextDraw(playerid, 320.000000, 194.000000, "Delete Character"); PlayerTextDrawAlignment(playerid, PlayerData[playerid][pTextdraws][9], 2); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][9], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][9], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][9], 0.350000, 0.999999); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][9], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][9], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][9], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][9], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][9], 0); PlayerData[playerid][pTextdraws][10] = CreatePlayerTextDraw(playerid, 320.000000, 225.000000, "Go Back"); PlayerTextDrawAlignment(playerid, PlayerData[playerid][pTextdraws][10], 2); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][10], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][10], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][10], 0.350000, 0.999999); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][10], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][10], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][10], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][10], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][10], 0);*/ PlayerData[playerid][pTextdraws][11] = CreatePlayerTextDraw(playerid, 432.000000, 140.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][11], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][11], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][11], 0.800000, 8.299997); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][11], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][11], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][11], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][11], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][11], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][11], 136); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][11], 199.000000, 64.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][11], 0); PlayerData[playerid][pTextdraws][12] = CreatePlayerTextDraw(playerid, 235.000000, 140.000000, "Personal Identification"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][12], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][12], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][12], 0.409999, 1.499999); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][12], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][12], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][12], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][12], 0); PlayerData[playerid][pTextdraws][13] = CreatePlayerTextDraw(playerid, 209.000000, 159.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][13], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][13], 5); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][13], 0.240000, -0.299999); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][13], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][13], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][13], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][13], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][13], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][13], 0); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][13], 52.000000, 51.000000); PlayerTextDrawSetPreviewModel(playerid, PlayerData[playerid][pTextdraws][13], 98); PlayerData[playerid][pTextdraws][14] = CreatePlayerTextDraw(playerid, 271.000000, 159.000000, "~r~Name:~w~ Character Name"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][14], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][14], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][14], 0.270000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][14], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][14], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][14], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][14], 0); PlayerData[playerid][pTextdraws][15] = CreatePlayerTextDraw(playerid, 271.000000, 179.000000, "~r~Date of Birth:~w~ Please specify..."); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][15], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][15], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][15], 0.240000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][15], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][15], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][15], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][15], 0); PlayerData[playerid][pTextdraws][16] = CreatePlayerTextDraw(playerid, 271.000000, 169.000000, "~r~Gender:~w~ Male"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][16], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][16], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][16], 0.240000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][16], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][16], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][16], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][16], 0); PlayerData[playerid][pTextdraws][17] = CreatePlayerTextDraw(playerid, 271.000000, 189.000000, "~r~Origin:~w~ Please specify..."); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][17], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][17], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][17], 0.240000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][17], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][17], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][17], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][17], 0); PlayerData[playerid][pTextdraws][18] = CreatePlayerTextDraw(playerid, 368.000000, 202.000000, "Continue"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][18], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][18], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][18], 0.380000, 1.200000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][18], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][18], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][18], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][18], 0); PlayerData[playerid][pTextdraws][19] = CreatePlayerTextDraw(playerid, 272.000000, 171.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][19], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][19], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][19], 0.290000, 0.599999); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][19], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][19], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][19], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][19], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][19], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][19], 0); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][19], 369.000000, 28.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][19], 1); PlayerData[playerid][pTextdraws][20] = CreatePlayerTextDraw(playerid, 272.000000, 182.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][20], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][20], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][20], 0.290000, 0.599999); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][20], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][20], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][20], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][20], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][20], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][20], 0); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][20], 369.000000, 28.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][20], 1); PlayerData[playerid][pTextdraws][21] = CreatePlayerTextDraw(playerid, 272.000000, 192.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][21], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][21], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][21], 0.290000, 0.599999); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][21], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][21], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][21], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][21], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][21], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][21], 0); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][21], 369.000000, 28.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][21], 1); PlayerData[playerid][pTextdraws][22] = CreatePlayerTextDraw(playerid, 367.000000, 205.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][22], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][22], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][22], 0.289999, 0.699999); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][22], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][22], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][22], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][22], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][22], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][22], 0); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][22], 424.000000, 15.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][22], 1); PlayerData[playerid][pTextdraws][23] = CreatePlayerTextDraw(playerid, 433.000000, 150.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][23], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][23], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][23], 0.800000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][23], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][23], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][23], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][23], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][23], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][23], 136); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][23], 211.000000, 0.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][23], 0); PlayerData[playerid][pTextdraws][24] = CreatePlayerTextDraw(playerid, 246.000000, 149.000000, "Character Customization"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][24], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][24], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][24], 0.370000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][24], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][24], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][24], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][24], 0); PlayerData[playerid][pTextdraws][25] = CreatePlayerTextDraw(playerid, 433.000000, 162.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][25], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][25], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][25], 0.800000, 10.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][25], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][25], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][25], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][25], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][25], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][25], 119); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][25], 211.000000, 0.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][25], 0); PlayerData[playerid][pTextdraws][26] = CreatePlayerTextDraw(playerid, 291.000000, 172.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][26], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][26], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][26], 0.840000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][26], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][26], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][26], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][26], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][26], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][26], 136); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][26], 351.000000, 9.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][26], 1); PlayerData[playerid][pTextdraws][27] = CreatePlayerTextDraw(playerid, 303.000000, 171.500000, "Glasses"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][27], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][27], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][27], 0.290000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][27], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][27], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][27], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][27], 0); PlayerData[playerid][pTextdraws][28] = CreatePlayerTextDraw(playerid, 291.000000, 196.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][28], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][28], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][28], 0.840000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][28], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][28], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][28], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][28], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][28], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][28], 136); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][28], 351.000000, 9.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][28], 1); PlayerData[playerid][pTextdraws][29] = CreatePlayerTextDraw(playerid, 310.000000, 195.500000, "Hats"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][29], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][29], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][29], 0.290000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][29], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][29], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][29], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][29], 0); PlayerData[playerid][pTextdraws][30] = CreatePlayerTextDraw(playerid, 291.000000, 220.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][30], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][30], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][30], 0.840000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][30], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][30], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][30], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][30], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][30], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][30], 136); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][30], 351.000000, 9.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][30], 1); PlayerData[playerid][pTextdraws][31] = CreatePlayerTextDraw(playerid, 301.000000, 219.500000, "Bandana"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][31], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][31], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][31], 0.290000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][31], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][31], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][31], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][31], 0); PlayerData[playerid][pTextdraws][32] = CreatePlayerTextDraw(playerid, 357.000000, 237.000000, "Continue"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][32], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][32], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][32], 0.439999, 1.400000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][32], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][32], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][32], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][32], 0); PlayerData[playerid][pTextdraws][33] = CreatePlayerTextDraw(playerid, 356.000000, 240.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][33], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][33], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][33], 0.840000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][33], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][33], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][33], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][33], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][33], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][33], 0); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][33], 424.000000, 9.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][33], 1); PlayerData[playerid][pTextdraws][34] = CreatePlayerTextDraw(playerid, 623.000000, 396.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][34], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][34], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][34], 0.760000, 4.299999); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][34], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][34], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][34], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][34], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][34], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][34], 85); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][34], 512.000000, 28.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][34], 0); PlayerData[playerid][pTextdraws][35] = CreatePlayerTextDraw(playerid, 518.000000, 397.000000, "~r~Fuel:~w~ 0%"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][35], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][35], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][35], 0.280000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][35], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][35], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][35], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][35], 0); PlayerData[playerid][pTextdraws][36] = CreatePlayerTextDraw(playerid, 518.000000, 406.200012, "~r~Speed:~w~ 0 mph"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][36], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][36], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][36], 0.280000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][36], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][36], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][36], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][36], 0); PlayerData[playerid][pTextdraws][37] = CreatePlayerTextDraw(playerid, 518.000000, 415.500000, "~r~Damage:~w~ 0/100%"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][37], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][37], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][37], 0.280000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][37], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][37], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][37], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][37], 0); PlayerData[playerid][pTextdraws][38] = CreatePlayerTextDraw(playerid, 518.000000, 425.000000, "~r~Windows:~w~ Up"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][38], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][38], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][38], 0.280000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][38], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][38], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][38], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][38], 0); PlayerData[playerid][pTextdraws][39] = CreatePlayerTextDraw(playerid, 327.000000, 424.000000, "~r~Footer text."); PlayerTextDrawAlignment(playerid, PlayerData[playerid][pTextdraws][39], 2); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][39], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][39], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][39], 0.460000, 1.400000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][39], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][39], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][39], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][39], 0); PlayerData[playerid][pTextdraws][40] = CreatePlayerTextDraw(playerid, 470.000000, 160.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][40], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][40], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][40], 0.570000, 12.200000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][40], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][40], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][40], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][40], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][40], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][40], 102); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][40], 190.000000, 1.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][40], 0); PlayerData[playerid][pTextdraws][41] = CreatePlayerTextDraw(playerid, 470.000000, 160.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][41], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][41], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][41], 0.910000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][41], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][41], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][41], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][41], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][41], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][41], -188); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][41], 190.000000, -9.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][41], 0); PlayerData[playerid][pTextdraws][42] = CreatePlayerTextDraw(playerid, 199.000000, 174.000000, "~g~Sex:~w~ Male~n~~g~Birthdate:~w~ 17/02/1993~n~~g~Origin:~w~ United States"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][42], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][42], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][42], 0.310000, 1.100000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][42], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][42], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][42], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][42], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][42], 0); PlayerData[playerid][pTextdraws][43] = CreatePlayerTextDraw(playerid, 195.000000, 159.500000, "Emmet Jones (ID: 4)"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][43], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][43], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][43], 0.310000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][43], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][43], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][43], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][43], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][43], 0); PlayerData[playerid][pTextdraws][44] = CreatePlayerTextDraw(playerid, 199.000000, 212.000000, "~g~Money:~w~ $0~n~~g~Bank:~w~ $0~n~~g~Savings:~w~ $0"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][44], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][44], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][44], 0.310000, 1.100000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][44], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][44], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][44], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][44], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][44], 0); PlayerData[playerid][pTextdraws][45] = CreatePlayerTextDraw(playerid, 339.000000, 174.000000, "~g~Account:~w~ Player~n~~g~Tester:~w~ No~n~~g~Admin:~w~ No"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][45], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][45], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][45], 0.310000, 1.100000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][45], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][45], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][45], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][45], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][45], 0); PlayerData[playerid][pTextdraws][46] = CreatePlayerTextDraw(playerid, 340.000000, 212.000000, "~g~Ping:~w~ 0~n~~g~Packetloss:~w~ 0.0%~n~~g~Time Online:~w~ 00:00:00"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][46], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][46], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][46], 0.310000, 1.100000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][46], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][46], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][46], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][46], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][46], 0); PlayerData[playerid][pTextdraws][47] = CreatePlayerTextDraw(playerid, 200.000000, 254.000000, "My Characters"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][47], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][47], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][47], 0.329999, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][47], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][47], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][47], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][47], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][47], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][47], -222); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][47], 278.000000, 27.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][47], 1); PlayerData[playerid][pTextdraws][48] = CreatePlayerTextDraw(playerid, 296.000000, 254.000000, "My Inventory"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][48], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][48], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][48], 0.329999, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][48], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][48], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][48], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][48], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][48], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][48], -222); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][48], 372.000000, 27.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][48], 1); PlayerData[playerid][pTextdraws][49] = CreatePlayerTextDraw(playerid, 389.000000, 254.000000, "Close Menu"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][49], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][49], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][49], 0.329999, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][49], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][49], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][49], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][49], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][49], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][49], -222); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][49], 453.000000, 27.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][49], 1); PlayerData[playerid][pTextdraws][50] = CreatePlayerTextDraw(playerid, 470.000000, 160.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][50], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][50], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][50], 0.569998, 8.999999); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][50], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][50], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][50], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][50], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][50], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][50], 102); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][50], 190.000000, 1.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][50], 0); PlayerData[playerid][pTextdraws][51] = CreatePlayerTextDraw(playerid, 470.000000, 160.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][51], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][51], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][51], 0.910000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][51], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][51], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][51], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][51], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][51], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][51], -188); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][51], 190.000000, -9.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][51], 0); PlayerData[playerid][pTextdraws][52] = CreatePlayerTextDraw(playerid, 198.000000, 177.000000, "~g~Name:~w~ Emmet Jackson~n~~g~Account:~w~ Player~n~~g~Created:~w~ 23 days ago~n~~g~Last Login:~w~ 22 days ago"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][52], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][52], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][52], 0.310000, 1.100000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][52], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][52], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][52], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][52], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][52], 0); PlayerData[playerid][pTextdraws][53] = CreatePlayerTextDraw(playerid, 195.000000, 159.500000, "#1: Emmet Jones"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][53], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][53], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][53], 0.310000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][53], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][53], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][53], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][53], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][53], 0); PlayerData[playerid][pTextdraws][54] = CreatePlayerTextDraw(playerid, 397.000000, 174.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][54], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][54], 5); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][54], 0.579999, 4.699997); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][54], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][54], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][54], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][54], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][54], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][54], 0); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][54], 53.000000, 48.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][54], 1); PlayerData[playerid][pTextdraws][55] = CreatePlayerTextDraw(playerid, 389.000000, 227.000000, "Close Menu"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][55], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][55], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][55], 0.329997, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][55], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][55], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][55], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][55], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][55], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][55], -222); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][55], 453.000000, 27.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][55], 1); PlayerData[playerid][pTextdraws][56] = CreatePlayerTextDraw(playerid, 200.000000, 227.000000, "<< Go Back"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][56], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][56], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][56], 0.329998, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][56], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][56], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][56], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][56], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][56], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][56], -222); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][56], 278.000000, 27.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][56], 1); PlayerData[playerid][pTextdraws][57] = CreatePlayerTextDraw(playerid, 290.000000, 227.000000, "Delete Character"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][57], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][57], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][57], 0.309998, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][57], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][57], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][57], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][57], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][57], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][57], -222); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][57], 375.000000, 27.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][57], 1); PlayerData[playerid][pTextdraws][58] = CreatePlayerTextDraw(playerid, 424.000000, 151.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][58], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][58], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][58], 0.600000, 8.699998); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][58], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][58], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][58], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][58], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][58], 119); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][58], 202.000000, 11.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][58], 0); PlayerData[playerid][pTextdraws][59] = CreatePlayerTextDraw(playerid, 206.000000, 151.000000, "Tutorial: Spawn Point"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][59], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][59], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][59], 0.319999, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][59], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][59], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][59], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][59], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][59], -205); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][59], 420.000000, 0.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][59], 0); PlayerData[playerid][pTextdraws][60] = CreatePlayerTextDraw(playerid, 208.000000, 164.000000, "This is where you will spawn after the tutorial~n~ends. It is recommended that you request help~n~after spawning."); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][60], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][60], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][60], 0.270000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][60], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][60], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][60], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][60], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][60], 0); PlayerData[playerid][pTextdraws][61] = CreatePlayerTextDraw(playerid, 208.000000, 197.000000, "To request help, type ~g~~h~/seekhelp~w~. A tester~n~will fulfill your request if there are any on~n~duty."); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][61], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][61], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][61], 0.270000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][61], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][61], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][61], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][61], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][61], 0); PlayerData[playerid][pTextdraws][62] = CreatePlayerTextDraw(playerid, 644.000000, 1.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][62], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][62], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][62], 0.530000, 51.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][62], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][62], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][62], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][62], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][62], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][62], 119); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][62], -6.000000, 30.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][62], 0); PlayerData[playerid][pTextdraws][63] = CreatePlayerTextDraw(playerid, 579.000000, 122.000000, "100%"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][63], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][63], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][63], 0.290000, 0.899999); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][63], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][63], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][63], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][63], 0); PlayerData[playerid][pTextdraws][64] = CreatePlayerTextDraw(playerid, 579.000000, 155.000000, "100%"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][64], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][64], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][64], 0.290000, 0.899999); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][64], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][64], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][64], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][64], 0); PlayerData[playerid][pTextdraws][65] = CreatePlayerTextDraw(playerid, 536.000000, 108.000000, "hunger"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][65], 0); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][65], 5); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][65], 0.539999, 1.400000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][65], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][65], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][65], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][65], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][65], 0); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][65], 51.000000, 37.000000); PlayerTextDrawSetPreviewModel(playerid, PlayerData[playerid][pTextdraws][65], 2702); PlayerTextDrawSetPreviewRot(playerid, PlayerData[playerid][pTextdraws][65], 0.0000, 90.0000, 90.0000); PlayerData[playerid][pTextdraws][66] = CreatePlayerTextDraw(playerid, 537.000000, 140.000000, "thirst"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][66], 0); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][66], 5); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][66], 0.539999, 1.400000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][66], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][66], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][66], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][66], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][66], 0); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][66], 51.000000, 37.000000); PlayerTextDrawSetPreviewModel(playerid, PlayerData[playerid][pTextdraws][66], 1543); PlayerTextDrawSetPreviewRot(playerid, PlayerData[playerid][pTextdraws][66], 0.0000, 0.0000, 0.0000); PlayerData[playerid][pTextdraws][67] = CreatePlayerTextDraw(playerid, 535.000000, 172.000000, "armor"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][67], 0); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][67], 5); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][67], 0.539999, 1.399999); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][67], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][67], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][67], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][67], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][67], 0); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][67], 52.000000, 39.000000); PlayerTextDrawSetPreviewModel(playerid, PlayerData[playerid][pTextdraws][67], 19142); PlayerTextDrawSetPreviewRot(playerid, PlayerData[playerid][pTextdraws][67], -20.0, -90.0, 0.0); PlayerData[playerid][pTextdraws][68] = CreatePlayerTextDraw(playerid, 577.000000, 186.000000, "100%"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][68], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][68], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][68], 0.289999, 0.899999); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][68], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][68], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][68], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][68], 0); PlayerData[playerid][pTextdraws][69] = CreatePlayerTextDraw(playerid, 13.000000, 431.000000, "~b~Waypoint:~w~ Calculating..."); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][69], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][69], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][69], 0.270000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][69], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][69], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][69], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][69], 0); PlayerData[playerid][pTextdraws][70] = CreatePlayerTextDraw(playerid, 499.000000, 101.000000, "~g~Prison Time:~w~ 00:00:00"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][70], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][70], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][70], 0.270000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][70], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][70], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][70], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][70], 0); PlayerData[playerid][pTextdraws][71] = CreatePlayerTextDraw(playerid, 240.000000, 161.000000, "_"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][71], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][71], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][71], 0.519999, 9.099995); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][71], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][71], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][71], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][71], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][71], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][71], 102); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][71], 421.000000, 40.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][71], 0); PlayerData[playerid][pTextdraws][72] = CreatePlayerTextDraw(playerid, 326.000000, 161.000000, "Richard Jackson"); PlayerTextDrawAlignment(playerid, PlayerData[playerid][pTextdraws][72], 2); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][72], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][72], 2); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][72], 0.330000, 1.199999); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][72], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][72], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][72], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][72], 0); PlayerData[playerid][pTextdraws][73] = CreatePlayerTextDraw(playerid, 233.000000, 173.000000, "skin"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][73], 0); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][73], 5); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][73], 0.619999, 1.400000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][73], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][73], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][73], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][73], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][73], 0); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][73], 59.000000, 59.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][73], 0); PlayerData[playerid][pTextdraws][74] = CreatePlayerTextDraw(playerid, 280.000000, 179.000000, "~b~DOB:~w~ 17/02/1998"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][74], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][74], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][74], 0.300000, 1.100000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][74], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][74], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][74], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][74], 0); PlayerData[playerid][pTextdraws][75] = CreatePlayerTextDraw(playerid, 280.000000, 189.500000, "~b~Origin:~w~ Texas, USA"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][75], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][75], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][75], 0.300000, 1.100000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][75], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][75], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][75], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][75], 0); PlayerData[playerid][pTextdraws][76] = CreatePlayerTextDraw(playerid, 280.000000, 200.000000, "~b~Creation:~w~ 2 months ago"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][76], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][76], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][76], 0.300000, 1.100000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][76], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][76], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][76], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][76], 0); PlayerData[playerid][pTextdraws][77] = CreatePlayerTextDraw(playerid, 281.000000, 210.000000, "~b~Played:~w~ 3 months ago"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][77], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][77], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][77], 0.300000, 1.100000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][77], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][77], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][77], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][77], 0); PlayerData[playerid][pTextdraws][78] = CreatePlayerTextDraw(playerid, 301.000000, 231.000000, "Spawn"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][78], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][78], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][78], 0.360000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][78], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][78], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][78], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][78], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][78], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][78], -205); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][78], 340.000000, 20.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][78], 1); PlayerData[playerid][pTextdraws][79] = CreatePlayerTextDraw(playerid, 345.000000, 231.000000, "Delete"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][79], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][79], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][79], 0.360000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][79], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][79], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][79], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][79], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][79], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][79], -205); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][79], 382.000000, 20.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][79], 1); PlayerData[playerid][pTextdraws][80] = CreatePlayerTextDraw(playerid, 387.000000, 231.000000, "Back"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][80], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][80], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][80], 0.360000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][80], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][80], 0); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][80], 1); PlayerTextDrawSetShadow(playerid, PlayerData[playerid][pTextdraws][80], 1); PlayerTextDrawUseBox(playerid, PlayerData[playerid][pTextdraws][80], 1); PlayerTextDrawBoxColor(playerid, PlayerData[playerid][pTextdraws][80], -205); PlayerTextDrawTextSize(playerid, PlayerData[playerid][pTextdraws][80], 415.000000, 20.000000); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][80], 1); PlayerData[playerid][pTextdraws][81] = CreatePlayerTextDraw(playerid, 553.000000, 99.000000, "~b~~h~Targets:~w~ 0/10"); PlayerTextDrawAlignment(playerid, PlayerData[playerid][pTextdraws][81], 2); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][81], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][81], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][81], 0.390000, 1.200000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][81], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][81], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][81], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][81], 0); PlayerData[playerid][pTextdraws][82] = CreatePlayerTextDraw(playerid, 37.000000, 315.000000, "~b~Loaded:~w~ Retail Supplies~n~~b~Loaded Crates:~w~ 6/6"); PlayerTextDrawBackgroundColor(playerid, PlayerData[playerid][pTextdraws][82], 255); PlayerTextDrawFont(playerid, PlayerData[playerid][pTextdraws][82], 1); PlayerTextDrawLetterSize(playerid, PlayerData[playerid][pTextdraws][82], 0.280000, 1.000000); PlayerTextDrawColor(playerid, PlayerData[playerid][pTextdraws][82], -1); PlayerTextDrawSetOutline(playerid, PlayerData[playerid][pTextdraws][82], 1); PlayerTextDrawSetProportional(playerid, PlayerData[playerid][pTextdraws][82], 1); PlayerTextDrawSetSelectable(playerid, PlayerData[playerid][pTextdraws][82], 0); } stock ShowPlayerFooter(playerid, string[], time = 5000) { if (PlayerData[playerid][pShowFooter]) { PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][39]); KillTimer(PlayerData[playerid][pFooterTimer]); } PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][39], string); PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][39]); PlayerData[playerid][pShowFooter] = true; PlayerData[playerid][pFooterTimer] = SetTimerEx("HidePlayerFooter", time, false, "d", playerid); } forward HidePlayerFooter(playerid); public HidePlayerFooter(playerid) { if (!PlayerData[playerid][pShowFooter]) return 0; PlayerData[playerid][pShowFooter] = false; return PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][39]); } ResetStatistics(playerid) { for (new i = 0; i < 3; i ++) { PlayerCharacters[playerid][i][0] = 0; for (new j = 0; j < 9; j ++) { AccessoryData[playerid][i][j] = 0.0; } } for (new i = 0; i != MAX_INVENTORY; i ++) { InventoryData[playerid][i][invExists] = false; InventoryData[playerid][i][invModel] = 0; InventoryData[playerid][i][invQuantity] = 0; } for (new i = 0; i < 12; i ++) { PlayerData[playerid][pGuns][i] = 0; PlayerData[playerid][pAmmo][i] = 0; } for (new i = 0; i != MAX_HOUSE_FURNITURE; i ++) { ListedFurniture[playerid][i] = -1; } for (new i = 0; i < MAX_LISTED_ITEMS; i ++) { NearestItems[playerid][i] = -1; } for (new i = 0; i != MAX_CONTACTS; i ++) { ContactData[playerid][i][contactExists] = false; ContactData[playerid][i][contactID] = 0; ContactData[playerid][i][contactNumber] = 0; ListedContacts[playerid][i] = -1; } for (new i = 0; i != MAX_GPS_LOCATIONS; i ++) { LocationData[playerid][i][locationExists] = false; LocationData[playerid][i][locationID] = 0; } for (new i = 0; i != MAX_PLAYER_TICKETS; i ++) { TicketData[playerid][i][ticketID] = 0; TicketData[playerid][i][ticketExists] = false; TicketData[playerid][i][ticketFee] = 0; } BoomboxData[playerid][boomboxPlaced] = 0; BoomboxData[playerid][boomboxPos][0] = 0.0; BoomboxData[playerid][boomboxPos][1] = 0.0; BoomboxData[playerid][boomboxPos][2] = 0.0; PlayerData[playerid][pID] = -1; PlayerData[playerid][pAccount] = 0; PlayerData[playerid][pLogged] = 0; PlayerData[playerid][pLoginAttempts] = 0; PlayerData[playerid][pCreated] = 0; PlayerData[playerid][pGender] = 1; PlayerData[playerid][pBirthdate][0] = 0; PlayerData[playerid][pOrigin][0] = 0; PlayerData[playerid][pSkin] = 98; PlayerData[playerid][pEditType] = 0; PlayerData[playerid][pGlasses] = 0; PlayerData[playerid][pHat] = 0; PlayerData[playerid][pBandana] = 0; PlayerData[playerid][pPos] = 0.0; PlayerData[playerid][pInterior] = 0; PlayerData[playerid][pWorld] = 0; PlayerData[playerid][pCharacter] = 0; PlayerData[playerid][pKilled] = 0; PlayerData[playerid][pHospital] = -1; PlayerData[playerid][pHospitalInt] = -1; PlayerData[playerid][pHospitalTime] = 0; PlayerData[playerid][pRepairTime] = 0; PlayerData[playerid][pMoney] = 250; PlayerData[playerid][pBankMoney] = 250; PlayerData[playerid][pSpawnPoint] = 0; PlayerData[playerid][pSavings] = 0; PlayerData[playerid][pAdmin] = 0; PlayerData[playerid][pShowFooter] = 0; PlayerData[playerid][pReportTime] = 0; PlayerData[playerid][pHelpTime] = 0; PlayerData[playerid][pSpectator] = INVALID_PLAYER_ID; PlayerData[playerid][pJailTime] = 0; PlayerData[playerid][pKicked] = 0; PlayerData[playerid][pMuted] = 0; PlayerData[playerid][pSpamCount] = 0; PlayerData[playerid][pCommandCount] = 0; PlayerData[playerid][pDisplayStats] = 0; PlayerData[playerid][pToggleGlasses] = 0; PlayerData[playerid][pToggleHat] = 0; PlayerData[playerid][pToggleBandana] = 0; PlayerData[playerid][pToggleArmor] = 0; PlayerData[playerid][pLastShot] = INVALID_PLAYER_ID; PlayerData[playerid][pShotTime] = 0; PlayerData[playerid][pInventoryItem] = 0; PlayerData[playerid][pStorageItem] = 0; PlayerData[playerid][pStorageSelect] = 0; PlayerData[playerid][pProductModify] = 0; PlayerData[playerid][pTester] = 0; PlayerData[playerid][pTutorial] = 0; PlayerData[playerid][pTutorialTime] = 0; PlayerData[playerid][pTutorialStage] = 0; PlayerData[playerid][pHouse] = -1; PlayerData[playerid][pBusiness] = -1; PlayerData[playerid][pEntrance] = -1; PlayerData[playerid][pGasPump] = -1; PlayerData[playerid][pGasStation] = -1; PlayerData[playerid][pLoading] = 0; PlayerData[playerid][pEditPump] = -1; PlayerData[playerid][pEditFurniture] = -1; PlayerData[playerid][pEditGate] = -1; PlayerData[playerid][pEditRack] = -1; PlayerData[playerid][pSelectFurniture] = 0; PlayerData[playerid][pRefill] = INVALID_VEHICLE_ID; PlayerData[playerid][pRefillPrice] = 0; PlayerData[playerid][pHouseSeller] = INVALID_PLAYER_ID; PlayerData[playerid][pHouseOffered] = -1; PlayerData[playerid][pHouseValue] = 0; PlayerData[playerid][pBusinessSeller] = INVALID_PLAYER_ID; PlayerData[playerid][pBusinessOffered] = -1; PlayerData[playerid][pBusinessValue] = 0; PlayerData[playerid][pCarSeller] = INVALID_PLAYER_ID; PlayerData[playerid][pCarOffered] = -1; PlayerData[playerid][pCarValue] = 0; PlayerData[playerid][pShakeOffer] = INVALID_PLAYER_ID; PlayerData[playerid][pShakeType] = 0; PlayerData[playerid][pFriskOffer] = INVALID_PLAYER_ID; PlayerData[playerid][pFoodSeller] = INVALID_PLAYER_ID; PlayerData[playerid][pFoodType] = 0; PlayerData[playerid][pFoodPrice] = 0; PlayerData[playerid][pFactionOffer] = INVALID_PLAYER_ID; PlayerData[playerid][pFactionOffered] = -1; PlayerData[playerid][pPhone] = 0; PlayerData[playerid][pPhoneOff] = 0; PlayerData[playerid][pLottery] = 0; PlayerData[playerid][pLotteryB] = 0; PlayerData[playerid][pHunger] = 100; PlayerData[playerid][pThirst] = 100; PlayerData[playerid][pHungerTime] = 0; PlayerData[playerid][pThirstTime] = 0; PlayerData[playerid][pCooking] = 0; PlayerData[playerid][pCookingTime] = 0; PlayerData[playerid][pPlayingHours] = 0; PlayerData[playerid][pMinutes] = 0; PlayerData[playerid][pArmorStatus] = 0; PlayerData[playerid][pArmorShown] = 0; PlayerData[playerid][pClothesType] = 0; PlayerData[playerid][pDrivingTest] = 0; PlayerData[playerid][pTestStage] = 0; PlayerData[playerid][pTestWarns] = 0; PlayerData[playerid][pFurnitureType] = 0; PlayerData[playerid][pJob] = 0; PlayerData[playerid][pTaxiFee] = 0; PlayerData[playerid][pTaxiTime] = 0; PlayerData[playerid][pTaxiPlayer] = INVALID_PLAYER_ID; PlayerData[playerid][pTaxiDuty] = 0; PlayerData[playerid][pFirstAid] = 0; PlayerData[playerid][pIncomingCall] = 0; PlayerData[playerid][pCallLine] = INVALID_PLAYER_ID; PlayerData[playerid][pMining] = 0; PlayerData[playerid][pMineTime] = 0; PlayerData[playerid][pMineCount] = 0; PlayerData[playerid][pMinedRock] = 0; PlayerData[playerid][pCarryTrash] = 0; PlayerData[playerid][pCarryCrate] = -1; PlayerData[playerid][pCrafting] = 0; PlayerData[playerid][pOpeningCrate] = 0; PlayerData[playerid][pHarvesting] = 0; PlayerData[playerid][pFaction] = -1; PlayerData[playerid][pFactionID] = -1; PlayerData[playerid][pFactionRank] = 0; PlayerData[playerid][pFactionEdit] = -1; PlayerData[playerid][pSelectedSlot] = -1; PlayerData[playerid][pOnDuty] = 0; PlayerData[playerid][pTazer] = 0; PlayerData[playerid][pBeanBag] = 0; PlayerData[playerid][pStunned] = 0; PlayerData[playerid][pCuffed] = 0; PlayerData[playerid][pDragged] = 0; PlayerData[playerid][pDraggedBy] = INVALID_PLAYER_ID; PlayerData[playerid][pPrisoned] = 0; PlayerData[playerid][pInjured] = 0; PlayerData[playerid][pWarrants] = 0; PlayerData[playerid][pMDCPlayer] = INVALID_PLAYER_ID; PlayerData[playerid][pTrackTime] = 0; PlayerData[playerid][pCP] = 0; PlayerData[playerid][pBroadcast] = 0; PlayerData[playerid][pNewsGuest] = INVALID_PLAYER_ID; PlayerData[playerid][pMuteTime] = 0; PlayerData[playerid][pTransfer] = INVALID_PLAYER_ID; PlayerData[playerid][pWaypoint] = 0; PlayerData[playerid][pWaypointPos][0] = 0.0; PlayerData[playerid][pWaypointPos][1] = 0.0; PlayerData[playerid][pWaypointPos][2] = 0.0; PlayerData[playerid][pFuelCan] = 0; PlayerData[playerid][pDisableOOC] = 0; PlayerData[playerid][pDisablePM] = 0; PlayerData[playerid][pDisableFaction] = 0; PlayerData[playerid][pDisableTester] = 0; PlayerData[playerid][pDisableBC] = 0; PlayerData[playerid][pNameChange][0] = 0; PlayerData[playerid][pDrugTime] = 0; PlayerData[playerid][pDrugUsed] = 0; PlayerData[playerid][pFingerTime] = 0; PlayerData[playerid][pFingerItem] = 0; PlayerData[playerid][pWeapon] = 0; PlayerData[playerid][pBackpackLoot] = -1; PlayerData[playerid][pChannel] = 0; PlayerData[playerid][pEmergency] = 0; PlayerData[playerid][pPlaceAd] = 0; PlayerData[playerid][pRangeBooth] = -1; PlayerData[playerid][pTargets] = 0; PlayerData[playerid][pTargetLevel] = 0; PlayerData[playerid][pVendorTime] = 0; PlayerData[playerid][pLoopAnim] = 0; PlayerData[playerid][pExecute] = 0; PlayerData[playerid][pBoombox] = INVALID_PLAYER_ID; PlayerData[playerid][pTakeItems] = INVALID_PLAYER_ID; PlayerData[playerid][pDrinkBar] = INVALID_PLAYER_BAR_ID; PlayerData[playerid][pDrinking] = 0; PlayerData[playerid][pDrinkTime] = 0; PlayerData[playerid][pTaxiCalled] = 0; PlayerData[playerid][pSpeedTime] = 0; PlayerData[playerid][pMarker] = 0; PlayerData[playerid][pBleeding] = 0; PlayerData[playerid][pBleedTime] = 0; PlayerData[playerid][pLoadType] = 0; PlayerData[playerid][pLoadCrate] = 0; PlayerData[playerid][pLoading] = 0; PlayerData[playerid][pUnloading] = -1; PlayerData[playerid][pUnloadVehicle] = INVALID_VEHICLE_ID; PlayerData[playerid][pShipment] = -1; PlayerData[playerid][pDeliverShipment] = 0; PlayerData[playerid][pHoldWeapon] = 0; PlayerData[playerid][pUsedMagazine] = 0; PlayerData[playerid][pAdvertise][0] = 0; PlayerData[playerid][pFreeze] = 0; PlayerData[playerid][pTask] = 0; PlayerData[playerid][pBankTask] = 0; PlayerData[playerid][pStoreTask] = 0; PlayerData[playerid][pTestTask] = 0; PlayerData[playerid][pSorting] = -1; PlayerData[playerid][pSortCrate] = 0; PlayerData[playerid][pHUD] = 1; PlayerData[playerid][pTesterDuty] = 0; PlayerData[playerid][pAdminDuty] = 0; PlayerData[playerid][pSeekHelp] = 0; PlayerData[playerid][pMaskID] = random(90000) + 10000; PlayerData[playerid][pMaskOn] = 0; PlayerData[playerid][pFactionMod] = 0; PlayerData[playerid][pCapacity] = 35; PlayerData[playerid][pPlayRadio] = 0; PlayerData[playerid][pGraffiti] = -1; PlayerData[playerid][pGraffitiTime] = 0; PlayerData[playerid][pGraffitiColor] = 0; PlayerData[playerid][pEditGraffiti] = -1; PlayerData[playerid][pAdminHide] = 0; PlayerData[playerid][pDetectorTime] = 0; PlayerData[playerid][pPicking] = 0; PlayerData[playerid][pPickCar] = -1; PlayerData[playerid][pPickTime] = 0; PlayerData[playerid][pNameTag] = Text3D:INVALID_3DTEXT_ID; ResetWarnings(playerid); } ResetNameTag(playerid) { foreach (new i : Player) { ShowPlayerNameTagForPlayer(i, playerid, 1); } if (IsValidDynamic3DTextLabel(PlayerData[playerid][pNameTag])) DestroyDynamic3DTextLabel(PlayerData[playerid][pNameTag]); PlayerData[playerid][pNameTag] = Text3D:INVALID_3DTEXT_ID; return 1; } ResetWarnings(playerid) { PlayerData[playerid][pWarnings] = 0; PlayerData[playerid][pWarn1][0] = 0; PlayerData[playerid][pWarn2][0] = 0; } GetNumberOwner(number) { foreach (new i : Player) if (PlayerData[i][pPhone] == number && Inventory_HasItem(i, "Cellphone")) { return i; } return INVALID_PLAYER_ID; } IsPlayerInsideTaxi(playerid) { new vehicleid = GetPlayerVehicleID(playerid); if (GetVehicleModel(vehicleid) == 420 || GetVehicleModel(vehicleid) == 438) { foreach (new i : Player) { if ((i != playerid) && (PlayerData[i][pJob] == JOB_TAXI && PlayerData[i][pTaxiDuty] && GetPlayerState(i) == PLAYER_STATE_DRIVER) && GetPlayerVehicleID(i) == vehicleid) return 1; } } return 0; } SelectCharacter(playerid, id) { PlayerData[playerid][pCharacter] = id; if (!PlayerCharacters[playerid][id - 1][0]) return Dialog_Show(playerid, CreateChar, DIALOG_STYLE_INPUT, "Create Character", "Please enter the name of your new character below:\n\nWarning: Your name must be in the Firstname_Lastname format and not exceed 20 characters.", "Create", "Cancel"); static query[200]; PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][72], PlayerCharacters[playerid][id - 1]); format(query, sizeof(query), "SELECT `Skin`, `Birthdate`, `Origin`, `CreateDate`, `LastLogin` FROM `characters` WHERE `Character` = '%s'", PlayerCharacters[playerid][id - 1]); mysql_tquery(g_iHandle, query, "OnQueryFinished", "dd", playerid, THREAD_SHOW_CHARACTER); return 1; } IsNumeric(const str[]) { for (new i = 0, l = strlen(str); i != l; i ++) { if (i == 0 && str[0] == '-') continue; else if (str[i] < '0' || str[i] > '9') return 0; } return 1; } ReturnWeaponName(weaponid) { static name[32]; GetWeaponName(weaponid, name, sizeof(name)); if (!weaponid) name = "None"; else if (weaponid == 18) name = "Molotov Cocktail"; else if (weaponid == 44) name = "Nightvision"; else if (weaponid == 45) name = "Infrared"; return name; } ReturnVehicleModelName(model) { new name[32] = "None"; if (model < 400 || model > 611) return name; format(name, sizeof(name), g_arrVehicleNames[model - 400]); return name; } stock ReturnVehicleName(vehicleid) { new model = GetVehicleModel(vehicleid), name[32] = "None"; if (model < 400 || model > 611) return name; format(name, sizeof(name), g_arrVehicleNames[model - 400]); return name; } GetVehicleModelByName(const name[]) { if (IsNumeric(name) && (strval(name) >= 400 && strval(name) <= 611)) return strval(name); for (new i = 0; i < sizeof(g_arrVehicleNames); i ++) { if (strfind(g_arrVehicleNames[i], name, true) != -1) { return i + 400; } } return 0; } GetVehicleDriver(vehicleid) { foreach (new i : Player) { if (GetPlayerState(i) == PLAYER_STATE_DRIVER && GetPlayerVehicleID(i) == vehicleid) return i; } return INVALID_PLAYER_ID; } stock IsWindowedVehicle(vehicleid) { static const g_aWindowStatus[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0 }; new modelid = GetVehicleModel(vehicleid); if (modelid < 400 || modelid > 611) return 0; return (g_aWindowStatus[modelid - 400]); } stock IsNewsVehicle(vehicleid) { switch (GetVehicleModel(vehicleid)) { case 488, 582: return 1; } return 0; } stock IsACruiser(vehicleid) { switch (GetVehicleModel(vehicleid)) { case 523, 427, 490, 528, 596..599, 601: return 1; } return 0; } stock IsDoorVehicle(vehicleid) { switch (GetVehicleModel(vehicleid)) { case 400..424, 426..429, 431..440, 442..445, 451, 455, 456, 458, 459, 466, 467, 470, 474, 475: return 1; case 477..480, 482, 483, 486, 489, 490..492, 494..496, 498..500, 502..508, 514..518, 524..529, 533..536: return 1; case 540..547, 549..552, 554..562, 565..568, 573, 575, 576, 578..580, 582, 585, 587..589, 596..605, 609: return 1; } return 0; } stock IsSpeedoVehicle(vehicleid) { if (GetVehicleModel(vehicleid) == 509 || GetVehicleModel(vehicleid) == 510 || GetVehicleModel(vehicleid) == 481 || !IsEngineVehicle(vehicleid)) { return 0; } return 1; } stock IsLoadableVehicle(vehicleid) { new modelid = GetVehicleModel(vehicleid); if (GetVehicleTrailer(vehicleid)) modelid = GetVehicleModel(GetVehicleTrailer(vehicleid)); switch (modelid) { case 609, 403, 414, 456, 498, 499, 514, 515, 435, 591: return 1; } return 0; } stock GetMaxCrates(vehicleid) { new crates; switch (GetVehicleModel(vehicleid)) { case 498, 609: crates = 10; case 414: crates = 8; case 456, 499: crates = 6; case 435, 591: crates = 15; } return crates; } stock IsCrateInUse(crateid) { if (CrateData[crateid][crateVehicle] != INVALID_VEHICLE_ID && IsValidVehicle(CrateData[crateid][crateVehicle])) { return 1; } foreach (new i : Player) if (PlayerData[i][pCarryCrate] == crateid && GetPlayerSpecialAction(i) == SPECIAL_ACTION_CARRY) { return 1; } return 0; } stock GetVehicleCrates(vehicleid) { if (!IsValidVehicle(vehicleid) || !IsLoadableVehicle(vehicleid)) return 0; new crates; for (new i = 0; i != MAX_CRATES; i ++) if (CrateData[i][crateExists] && CrateData[i][crateVehicle] == vehicleid) { crates++; } return crates; } stock IsABoat(vehicleid) { switch (GetVehicleModel(vehicleid)) { case 430, 446, 452, 453, 454, 472, 473, 484, 493, 595: return 1; } return 0; } stock IsABike(vehicleid) { switch (GetVehicleModel(vehicleid)) { case 448, 461..463, 468, 521..523, 581, 586, 481, 509, 510: return 1; } return 0; } stock IsAPlane(vehicleid) { switch (GetVehicleModel(vehicleid)) { case 460, 464, 476, 511, 512, 513, 519, 520, 553, 577, 592, 593: return 1; } return 0; } stock IsAHelicopter(vehicleid) { switch (GetVehicleModel(vehicleid)) { case 417, 425, 447, 465, 469, 487, 488, 497, 501, 548, 563: return 1; } return 0; } stock IsEngineVehicle(vehicleid) { static const g_aEngineStatus[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0 }; new modelid = GetVehicleModel(vehicleid); if (modelid < 400 || modelid > 611) return 0; return (g_aEngineStatus[modelid - 400]); } stock Float:GetPlayerSpeed(playerid) { static Float:velocity[3]; if (IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid), velocity[0], velocity[1], velocity[2]); else GetPlayerVelocity(GetPlayerVehicleID(playerid), velocity[0], velocity[1], velocity[2]); return floatsqroot((velocity[0] * velocity[0]) + (velocity[1] * velocity[1]) + (velocity[2] * velocity[2])) * 100.0; } stock GetGateByID(sqlid) { for (new i = 0; i != MAX_GATES; i ++) if (GateData[i][gateExists] && GateData[i][gateID] == sqlid) return i; return -1; } stock GetHouseByID(sqlid) { for (new i = 0; i != MAX_HOUSES; i ++) if (HouseData[i][houseExists] && HouseData[i][houseID] == sqlid) return i; return -1; } stock GetBusinessByID(sqlid) { for (new i = 0; i != MAX_BUSINESSES; i ++) if (BusinessData[i][bizExists] && BusinessData[i][bizID] == sqlid) return i; return -1; } stock GetEntranceByID(sqlid) { for (new i = 0; i != MAX_ENTRANCES; i ++) if (EntranceData[i][entranceExists] && EntranceData[i][entranceID] == sqlid) return i; return -1; } stock GetElapsedTime(time, &hours, &minutes, &seconds) { hours = 0; minutes = 0; seconds = 0; if (time >= 3600) { hours = (time / 3600); time -= (hours * 3600); } while (time >= 60) { minutes++; time -= 60; } return (seconds = time); } stock GetDuration(time) { new str[32]; if (time < 0 || time == gettime()) { format(str, sizeof(str), "Never"); return str; } else if (time < 60) format(str, sizeof(str), "%d seconds", time); else if (time >= 0 && time < 60) format(str, sizeof(str), "%d seconds", time); else if (time >= 60 && time < 3600) format(str, sizeof(str), (time >= 120) ? ("%d minutes") : ("%d minute"), time / 60); else if (time >= 3600 && time < 86400) format(str, sizeof(str), (time >= 7200) ? ("%d hours") : ("%d hour"), time / 3600); else if (time >= 86400 && time < 2592000) format(str, sizeof(str), (time >= 172800) ? ("%d days") : ("%d day"), time / 86400); else if (time >= 2592000 && time < 31536000) format(str, sizeof(str), (time >= 5184000) ? ("%d months") : ("%d month"), time / 2592000); else if (time >= 31536000) format(str, sizeof(str), (time >= 63072000) ? ("%d years") : ("%d year"), time / 31536000); strcat(str, " ago"); return str; } stock GetEngineStatus(vehicleid) { static engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective); if (engine != 1) return 0; return 1; } stock GetHoodStatus(vehicleid) { static engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective); if (bonnet != 1) return 0; return 1; } stock GetTrunkStatus(vehicleid) { static engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective); if (boot != 1) return 0; return 1; } stock GetLightStatus(vehicleid) { static engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective); if (lights != 1) return 0; return 1; } stock SetEngineStatus(vehicleid, status) { static engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective); return SetVehicleParamsEx(vehicleid, status, lights, alarm, doors, bonnet, boot, objective); } stock SetLightStatus(vehicleid, status) { static engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective); return SetVehicleParamsEx(vehicleid, engine, status, alarm, doors, bonnet, boot, objective); } stock SetTrunkStatus(vehicleid, status) { static engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective); return SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, status, objective); } stock SetHoodStatus(vehicleid, status) { static engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective); return SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, status, boot, objective); } public OnObjectMoved(objectid) { for (new i = 0; i < MAX_BOOTHS; i ++) if (g_BoothUsed[i] && g_BoothObject[i] == objectid) { DestroyObject(g_BoothObject[i]); return SetTimerEx("UpdateBooth", 3000, false, "dd", Booth_GetPlayer(i), i); } return 1; } forward OnQueryExecute(playerid, query[]); public OnQueryExecute(playerid, query[]) { static rows, fields; cache_get_data(rows, fields, g_iHandle); if (strfind(query, "SELECT", true) != -1) Dialog_Show(playerid, ExecuteQuery, DIALOG_STYLE_INPUT, "Execute Query", "Success: MySQL returned %d rows from your query.\n\nPlease specify the MySQL query to execute below:", "Execute", "Back", rows); else Dialog_Show(playerid, ExecuteQuery, DIALOG_STYLE_INPUT, "Execute Query", "Success: Query executed successfully (affected rows: %d).\n\nPlease specify the MySQL query to execute below:", "Execute", "Back", cache_affected_rows()); PlayerData[playerid][pExecute] = 0; return 1; } public OnQueryError(errorid, error[], callback[], query[], connectionHandle) { foreach (new i : Player) { if (PlayerData[i][pAdmin] >= 6 && PlayerData[i][pExecute]) { PlayerData[i][pExecute] = 0; Dialog_Show(i, ExecuteQuery, DIALOG_STYLE_INPUT, "Execute Query", "Error: \"%s\"\n\nPlease specify the MySQL query to execute below:", "Execute", "Back", error); } } printf("** [MySQL]: %s", error); Log_Write("logs/mysql_log.txt", "[%s] %s: %s", ReturnDate(), (callback[0]) ? (callback) : ("n/a"), error); return 1; } forward OnQueryFinished(extraid, threadid); public OnQueryFinished(extraid, threadid) { if (!IsPlayerConnected(extraid)) return 0; static rows, fields ; switch (threadid) { case THREAD_CREATE_CHAR: { PlayerData[extraid][pID] = cache_insert_id(g_iHandle); PlayerData[extraid][pLogged] = 1; SQL_SaveCharacter(extraid); PlayerData[extraid][pID] = -1; PlayerData[extraid][pLogged] = 0; } case THREAD_CHECK_ACCOUNT: { cache_get_data(rows, fields, g_iHandle); if (rows) { static loginDate[36]; cache_get_row(0, 0, loginDate, g_iHandle); format(PlayerData[extraid][pLoginDate], 36, loginDate); Dialog_Show(extraid, LoginScreen, DIALOG_STYLE_PASSWORD, "Account Login", "Welcome back to South Central Roleplay!\n\nYour account was last seen on: %s.\n\nPlease enter your password below to login to your account:", "Login", "Cancel", PlayerData[extraid][pLoginDate]); } else { Dialog_Show(extraid, RegisterScreen, DIALOG_STYLE_PASSWORD, "Account Registration", "Welcome to South Central Roleplay, %s.\n\nNotice: Your account is not registered yet. Please enter your desired password:", "Register", "Cancel", ReturnName(extraid)); } } case THREAD_LOGIN: { cache_get_data(rows, fields, g_iHandle); if (!rows) { PlayerData[extraid][pLoginAttempts]++; if (PlayerData[extraid][pLoginAttempts] >= 3) { SendClientMessage(extraid, COLOR_LIGHTRED, "Notice: You have been kicked for using up your login attempts."); KickEx(extraid); } else { Dialog_Show(extraid, LoginScreen, DIALOG_STYLE_PASSWORD, "Account Login", "Welcome back to South Central Roleplay!\n\nYour account was last seen on: %s.\n\nPlease enter your password below to login to your account:", "Login", "Cancel", PlayerData[extraid][pLoginDate]); SendClientMessageEx(extraid, COLOR_LIGHTRED, "Notice: Incorrect password specified (%d/3 attempts).", PlayerData[extraid][pLoginAttempts]); } } else { static query[128]; // Update the last login date. format(query, sizeof(query), "UPDATE `accounts` SET `IP` = '%s', `LoginDate` = '%s' WHERE `Username` = '%s'", PlayerData[extraid][pIP], ReturnDate(), PlayerData[extraid][pUsername]); mysql_tquery(g_iHandle, query); // Load the character data. format(query, sizeof(query), "SELECT * FROM `characters` WHERE `Username` = '%s' LIMIT 3", PlayerData[extraid][pUsername]); mysql_tquery(g_iHandle, query, "OnQueryFinished", "dd", extraid, THREAD_CHARACTERS); } } case THREAD_CHARACTERS: { cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows; i ++) { cache_get_field_content(i, "Character", PlayerCharacters[extraid][i], g_iHandle, MAX_PLAYER_NAME); } SendServerMessage(extraid, "You have authenticated into your account successfully."); ShowCharacterMenu(extraid); } case THREAD_LOAD_CHARACTER: { static string[128]; cache_get_data(rows, fields, g_iHandle); foreach (new i : Player) { if (PlayerData[i][pCharacter] == PlayerData[extraid][pCharacter] && !strcmp(ReturnName(i), PlayerCharacters[extraid][PlayerData[extraid][pCharacter] - 1]) && i != extraid) { ShowCharacterMenu(extraid); SendErrorMessage(extraid, "This character is already logged in."); } } switch (SetPlayerName(extraid, PlayerCharacters[extraid][PlayerData[extraid][pCharacter] - 1])) { case -1: { SendClientMessageEx(extraid, COLOR_LIGHTRED, "Notice: Your character's name seems to be in use already."); } default: { if (!rows) { return 0; } static query[128] ; PlayerData[extraid][pID] = cache_get_field_int(0, "ID"); PlayerData[extraid][pCreated] = cache_get_field_int(0, "Created"); PlayerData[extraid][pGender] = cache_get_field_int(0, "Gender"); cache_get_field_content(0, "Birthdate", PlayerData[extraid][pBirthdate], g_iHandle, 24); cache_get_field_content(0, "Origin", PlayerData[extraid][pOrigin], g_iHandle, 32); PlayerData[extraid][pSkin] = cache_get_field_int(0, "Skin"); PlayerData[extraid][pPos][0] = cache_get_field_float(0, "PosX"); PlayerData[extraid][pPos][1] = cache_get_field_float(0, "PosY"); PlayerData[extraid][pPos][2] = cache_get_field_float(0, "PosZ"); PlayerData[extraid][pPos][3] = cache_get_field_float(0, "PosA"); PlayerData[extraid][pHealth] = cache_get_field_float(0, "Health"); PlayerData[extraid][pInterior] = cache_get_field_int(0, "Interior"); PlayerData[extraid][pWorld] = cache_get_field_int(0, "World"); PlayerData[extraid][pHospital] = cache_get_field_int(0, "Hospital"); PlayerData[extraid][pHospitalInt] = cache_get_field_int(0, "HospitalInt"); PlayerData[extraid][pMoney] = cache_get_field_int(0, "Money"); PlayerData[extraid][pBankMoney] = cache_get_field_int(0, "BankMoney"); PlayerData[extraid][pOwnsBillboard] = cache_get_field_int(0, "OwnsBillboard"); PlayerData[extraid][pSavings] = cache_get_field_int(0, "Savings"); PlayerData[extraid][pAdmin] = cache_get_field_int(0, "Admin"); PlayerData[extraid][pJailTime] = cache_get_field_int(0, "JailTime"); PlayerData[extraid][pMuted] = cache_get_field_int(0, "Muted"); PlayerData[extraid][pTester] = cache_get_field_int(0, "Tester"); PlayerData[extraid][pHouse] = cache_get_field_int(0, "House"); PlayerData[extraid][pBusiness] = cache_get_field_int(0, "Business"); PlayerData[extraid][pEntrance] = cache_get_field_int(0, "Entrance"); PlayerData[extraid][pPhone] = cache_get_field_int(0, "Phone"); PlayerData[extraid][pLottery] = cache_get_field_int(0, "Lottery"); PlayerData[extraid][pLottery] = cache_get_field_int(0, "LotteryB"); PlayerData[extraid][pHunger] = cache_get_field_int(0, "Hunger"); PlayerData[extraid][pThirst] = cache_get_field_int(0, "Thirst"); PlayerData[extraid][pPlayingHours] = cache_get_field_int(0, "PlayingHours"); PlayerData[extraid][pMinutes] = cache_get_field_int(0, "Minutes"); PlayerData[extraid][pArmorStatus] = cache_get_field_float(0, "ArmorStatus"); PlayerData[extraid][pJob] = cache_get_field_int(0, "Job"); PlayerData[extraid][pFactionID] = cache_get_field_int(0, "Faction"); PlayerData[extraid][pFactionRank] = cache_get_field_int(0, "FactionRank"); PlayerData[extraid][pPrisoned] = cache_get_field_int(0, "Prisoned"); PlayerData[extraid][pInjured] = cache_get_field_int(0, "Injured"); PlayerData[extraid][pWarrants] = cache_get_field_int(0, "Warrants"); PlayerData[extraid][pChannel] = cache_get_field_int(0, "Channel"); PlayerData[extraid][pBleeding] = cache_get_field_int(0, "Bleeding"); PlayerData[extraid][pAdminHide] = cache_get_field_int(0, "AdminHide"); PlayerData[extraid][pWarnings] = cache_get_field_int(0, "Warnings"); PlayerData[extraid][pMaskID] = cache_get_field_int(0, "MaskID"); PlayerData[extraid][pFactionMod] = cache_get_field_int(0, "FactionMod"); PlayerData[extraid][pCapacity] = cache_get_field_int(0, "Capacity"); PlayerData[extraid][pSpawnPoint] = cache_get_field_int(0, "SpawnPoint"); cache_get_field_content(0, "Warn1", PlayerData[extraid][pWarn1], g_iHandle, 32); cache_get_field_content(0, "Warn2", PlayerData[extraid][pWarn2], g_iHandle, 32); for (new i = 0; i < 13; i ++) { format(query, sizeof(query), "Gun%d", i + 1); PlayerData[extraid][pGuns][i] = cache_get_field_int(0, query); format(query, sizeof(query), "Ammo%d", i + 1); PlayerData[extraid][pAmmo][i] = cache_get_field_int(0, query); } PlayerData[extraid][pGlasses] = cache_get_field_int(0, "Glasses"); PlayerData[extraid][pHat] = cache_get_field_int(0, "Hat"); PlayerData[extraid][pBandana] = cache_get_field_int(0, "Bandana"); cache_get_field_content(0, "GlassesPos", string, g_iHandle); sscanf(string, "p<|>fffffffff", AccessoryData[extraid][0][0], AccessoryData[extraid][0][1], AccessoryData[extraid][0][2], AccessoryData[extraid][0][3], AccessoryData[extraid][0][4], AccessoryData[extraid][0][5], AccessoryData[extraid][0][6], AccessoryData[extraid][0][7], AccessoryData[extraid][0][8]); cache_get_field_content(0, "HatPos", string, g_iHandle); sscanf(string, "p<|>fffffffff", AccessoryData[extraid][1][0], AccessoryData[extraid][1][1], AccessoryData[extraid][1][2], AccessoryData[extraid][1][3], AccessoryData[extraid][1][4], AccessoryData[extraid][1][5], AccessoryData[extraid][1][6], AccessoryData[extraid][1][7], AccessoryData[extraid][1][8]); cache_get_field_content(0, "BandanaPos", string, g_iHandle); sscanf(string, "p<|>fffffffff", AccessoryData[extraid][2][0], AccessoryData[extraid][2][1], AccessoryData[extraid][2][2], AccessoryData[extraid][2][3], AccessoryData[extraid][2][4], AccessoryData[extraid][2][5], AccessoryData[extraid][2][6], AccessoryData[extraid][2][7], AccessoryData[extraid][2][8]); if (!PlayerData[extraid][pMaskID]) PlayerData[extraid][pMaskID] = random(90000) + 10000; if (!PlayerData[extraid][pCapacity]) PlayerData[extraid][pCapacity] = 35; for (new i = 0; i < 81; i ++) { if (i < 8 || (i >= 71 && i <= 80)) PlayerTextDrawHide(extraid, PlayerData[extraid][pTextdraws][i]); } if (PlayerData[extraid][pTester] > 0) { SendClientMessage(extraid, COLOR_CYAN, "[SERVER]:{FFFFFF} You have logged in as a tester."); } if (PlayerData[extraid][pAdmin] > 0) { SendAdminAction(extraid, "You have logged in a level %d admin.", PlayerData[extraid][pAdmin]); } PlayerData[extraid][pLogged] = 1; format(query, sizeof(query), "SELECT * FROM `inventory` WHERE `ID` = '%d'", PlayerData[extraid][pID]); mysql_tquery(g_iHandle, query, "OnQueryFinished", "dd", extraid, THREAD_LOAD_INVENTORY); format(query, sizeof(query), "SELECT * FROM `contacts` WHERE `ID` = '%d'", PlayerData[extraid][pID]); mysql_tquery(g_iHandle, query, "OnQueryFinished", "dd", extraid, THREAD_LOAD_CONTACTS); format(query, sizeof(query), "SELECT * FROM `tickets` WHERE `ID` = '%d'", PlayerData[extraid][pID]); mysql_tquery(g_iHandle, query, "OnQueryFinished", "dd", extraid, THREAD_LOAD_TICKETS); format(query, sizeof(query), "SELECT * FROM `gps` WHERE `ID` = '%d'", PlayerData[extraid][pID]); mysql_tquery(g_iHandle, query, "OnQueryFinished", "dd", extraid, THREAD_LOAD_LOCATIONS); if(PlayerData[extraid][pOwnsBillboard] == 0) { PlayerData[extraid][pOwnsBillboard] = -1; } if (PlayerData[extraid][pFactionID] != -1) { PlayerData[extraid][pFaction] = GetFactionByID(PlayerData[extraid][pFactionID]); if (PlayerData[extraid][pFaction] == -1) { ResetFaction(extraid); } } if (!PlayerData[extraid][pCreated]) { new str[48]; format(str, sizeof(str), "~r~Name:~w~ %s", ReturnName(extraid)); PlayerTextDrawSetString(extraid, PlayerData[extraid][pTextdraws][14], str); for (new i = 11; i < 23; i ++) { PlayerTextDrawShow(extraid, PlayerData[extraid][pTextdraws][i]); } PlayerData[extraid][pSkin] = 98; PlayerData[extraid][pOrigin][0] = '\0'; PlayerData[extraid][pBirthdate][0] = '\0'; SendServerMessage(extraid, "You are now required to fill in your ID card."); SetPlayerInterior(extraid, 3); SetPlayerPos(extraid, 364.958312, 173.570709, 990.610534); SetPlayerCameraPos(extraid, 364.958312, 173.570709, 1010.610534); SetPlayerCameraLookAt(extraid, 364.458343, 173.576049, 1010.389343); } else { SetSpawnInfo(extraid, 0, PlayerData[extraid][pSkin], PlayerData[extraid][pPos][0], PlayerData[extraid][pPos][1], PlayerData[extraid][pPos][2], 0.0, 0, 0, 0, 0, 0, 0); TogglePlayerSpectating(extraid, 0); TogglePlayerControllable(extraid, 0); CancelSelectTextDraw(extraid); SetTimerEx("SpawnTimer", 1000, false, "d", extraid); } } } } case THREAD_VERIFY_PASS: { cache_get_data(rows, fields, g_iHandle); if (rows) Dialog_Show(extraid, NewPass, DIALOG_STYLE_PASSWORD, "Enter New Password", "Please enter your new password below.\n\nNote: Please use a strong and safe password for additional security.", "Change", "Cancel"); else SendErrorMessage(extraid, "You have entered an incorrect password."); } case THREAD_FIND_USERNAME: { static query[128]; cache_get_data(rows, fields, g_iHandle); if (rows) { new name[MAX_PLAYER_NAME + 1]; cache_get_row(0, 0, name, g_iHandle); if (strcmp(name, PlayerData[extraid][pUsername], false) != 0) { format(PlayerData[extraid][pUsername], sizeof(name), name); SetPlayerName(extraid, name); } } format(query, sizeof(query), "SELECT `LoginDate` FROM `accounts` WHERE `Username` = '%s'", PlayerData[extraid][pUsername]); mysql_tquery(g_iHandle, query, "OnQueryFinished", "dd", extraid, THREAD_CHECK_ACCOUNT); } case THREAD_LOAD_INVENTORY: { static name[32]; cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows && i < MAX_INVENTORY; i ++) { InventoryData[extraid][i][invExists] = true; InventoryData[extraid][i][invID] = cache_get_field_int(i, "invID"); InventoryData[extraid][i][invModel] = cache_get_field_int(i, "invModel"); InventoryData[extraid][i][invQuantity] = cache_get_field_int(i, "invQuantity"); cache_get_field_content(i, "invItem", name, g_iHandle, sizeof(name)); strpack(InventoryData[extraid][i][invItem], name, 32 char); } } case THREAD_LOAD_CONTACTS: { cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows && i < MAX_CONTACTS; i ++) { cache_get_field_content(i, "contactName", ContactData[extraid][i][contactName], g_iHandle, 32); ContactData[extraid][i][contactExists] = true; ContactData[extraid][i][contactID] = cache_get_field_int(i, "contactID"); ContactData[extraid][i][contactNumber] = cache_get_field_int(i, "contactNumber"); } } case THREAD_LOAD_LOCATIONS: { cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows && i < MAX_GPS_LOCATIONS; i ++) { cache_get_field_content(i, "locationName", LocationData[extraid][i][locationName], g_iHandle, 32); LocationData[extraid][i][locationExists] = true; LocationData[extraid][i][locationID] = cache_get_field_int(i, "locationID"); LocationData[extraid][i][locationPos][0] = cache_get_field_float(i, "locationX"); LocationData[extraid][i][locationPos][1] = cache_get_field_float(i, "locationY"); LocationData[extraid][i][locationPos][2] = cache_get_field_float(i, "locationZ"); } } case THREAD_LOAD_TICKETS: { cache_get_data(rows, fields, g_iHandle); for (new i = 0; i < rows && i < MAX_PLAYER_TICKETS; i ++) { cache_get_field_content(i, "ticketReason", TicketData[extraid][i][ticketReason], g_iHandle, 64); cache_get_field_content(i, "ticketDate", TicketData[extraid][i][ticketDate], g_iHandle, 36); TicketData[extraid][i][ticketExists] = true; TicketData[extraid][i][ticketID] = cache_get_field_int(i, "ticketID"); TicketData[extraid][i][ticketFee] = cache_get_field_int(i, "ticketFee"); } } case THREAD_BAN_LOOKUP: { new reason[128], date[36], username[24]; cache_get_data(rows, fields, g_iHandle); if (rows) { cache_get_field_content(0, "Username", username, g_iHandle); cache_get_field_content(0, "Date", date, g_iHandle); cache_get_field_content(0, "Reason", reason, g_iHandle); if (!strcmp(username, "null", true) || !username[0]) { Dialog_Show(extraid, ShowOnly, DIALOG_STYLE_MSGBOX, "Ban Notice", "Your IP is banned from this server.\n\nIP: %s\nDate: %s\nReason: %s\n\nTo request a ban appeal, please visit our website and submit a ban appeal.", "Close", "", PlayerData[extraid][pIP], date, reason); KickEx(extraid); } else { Dialog_Show(extraid, ShowOnly, DIALOG_STYLE_MSGBOX, "Ban Notice", "You are banned from this server.\n\nUsername: %s\nDate: %s\nReason: %s\n\nTo request a ban appeal, please visit our website and submit a ban appeal.", "Close", "", PlayerData[extraid][pUsername], date, reason); KickEx(extraid); } } } case THREAD_SHOW_CHARACTER: { cache_get_data(rows, fields, g_iHandle); if (rows) { static skin, birthdate[16], origin[32], string[128]; skin = cache_get_field_int(0, "Skin"); cache_get_field_content(0, "Birthdate", birthdate, g_iHandle); cache_get_field_content(0, "Origin", origin, g_iHandle); PlayerTextDrawSetPreviewModel(extraid, PlayerData[extraid][pTextdraws][73], skin); if (!strlen(birthdate)) { birthdate = "Not Specified"; } if (!strlen(origin)) { origin = "Not Specified"; } format(string, sizeof(string), "~b~DOB:~w~ %s", birthdate); PlayerTextDrawSetString(extraid, PlayerData[extraid][pTextdraws][74], string); format(string, sizeof(string), "~b~Origin:~w~ %s", origin); PlayerTextDrawSetString(extraid, PlayerData[extraid][pTextdraws][75], string); format(string, sizeof(string), "~b~Creation:~w~ %s", GetDuration(gettime() - cache_get_field_int(0, "CreateDate"))); PlayerTextDrawSetString(extraid, PlayerData[extraid][pTextdraws][76], string); format(string, sizeof(string), "~b~Played:~w~ %s", GetDuration(gettime() - cache_get_field_int(0, "LastLogin"))); PlayerTextDrawSetString(extraid, PlayerData[extraid][pTextdraws][77], string); for (new i = 0; i < 8; i ++) { PlayerTextDrawHide(extraid, PlayerData[extraid][pTextdraws][i]); } for (new i = 71; i < 81; i ++) { PlayerTextDrawShow(extraid, PlayerData[extraid][pTextdraws][i]); } } } } return 1; } forward OnViewCharges(extraid, name[]); public OnViewCharges(extraid, name[]) { if (GetFactionType(extraid) != FACTION_POLICE) return 0; static rows, fields; cache_get_data(rows, fields, g_iHandle); if (!rows) return SendErrorMessage(extraid, "No results found for charges on \"%s\".", name); static string[1024], desc[128], date[36]; string[0] = 0; for (new i = 0; i < rows; i ++) { cache_get_field_content(i, "Description", desc, g_iHandle); cache_get_field_content(i, "Date", date, g_iHandle); format(string, sizeof(string), "%s%s (%s)\n", string, desc, date); } format(desc, sizeof(desc), "Charges: %s", name); Dialog_Show(extraid, ChargeList, DIALOG_STYLE_LIST, desc, string, "Close", ""); return 1; } stock SetCameraData(playerid) { #if SERVER_CITY == 1 SetPlayerPos(playerid, 2096.8398,-1879.4764,15.000); SetPlayerCameraPos(playerid, 2096.8398,-1879.4764,30); SetPlayerCameraLookAt(playerid, 2080.5161,-1759.1907,13.5656); #elseif SERVER_CITY == 2 SetPlayerPos(playerid, -1553.776367, 844.732299, 32.268722); SetPlayerCameraPos(playerid, -1553.776367, 844.732299, 52.268722); SetPlayerCameraLookAt(playerid, -1554.276245, 844.740234, 52.250732); #elseif SERVER_CITY == 3 SetPlayerPos(playerid, 2069.442138, 977.235412, 6.572320); SetPlayerCameraPos(playerid, 2069.442138, 977.235412, 26.572320); SetPlayerCameraLookAt(playerid, 2069.452148, 977.702697, 26.557329); #endif return 1; } forward AccountCheck(playerid); public AccountCheck(playerid) { //SetPlayerPos(playerid, -1988.752075, -72.294998, 38.647026); //SetPlayerCameraPos(playerid, -1988.752075, -72.294998, 58.647026); //SetPlayerCameraLookAt(playerid, -2006.489868, -72.107597, 55.977474); SetCameraData(playerid); SQL_CheckAccount(playerid); return 1; } forward OnResolveUsername(extraid, character[]); public OnResolveUsername(extraid, character[]) { new rows, fields, name[24]; cache_get_data(rows, fields, g_iHandle); if (!rows) return SendErrorMessage(extraid, "There is no account linked with the specified name."); cache_get_row(0, 0, name, g_iHandle); SendServerMessage(extraid, "%s's account username is: %s.", character, name); return 1; } forward OnLoginDate(extraid, username[]); public OnLoginDate(extraid, username[]) { if (!IsPlayerConnected(extraid)) return 0; static rows, fields, date[36]; cache_get_data(rows, fields, g_iHandle); if (rows) { cache_get_row(0, 0, date, g_iHandle); SendServerMessage(extraid, "%s's last login was on: %s.", username, date); } else { SendErrorMessage(extraid, "Invalid username specified."); } return 1; } forward OnCarStorageAdd(carid, itemid); public OnCarStorageAdd(carid, itemid) { CarStorage[carid][itemid][cItemID] = cache_insert_id(g_iHandle); return 1; } forward OnStorageAdd(houseid, itemid); public OnStorageAdd(houseid, itemid) { HouseStorage[houseid][itemid][hItemID] = cache_insert_id(g_iHandle); return 1; } forward OnDealerCarCreated(bizid, slotid); public OnDealerCarCreated(bizid, slotid) { DealershipCars[bizid][slotid][vehID] = cache_insert_id(g_iHandle); return 1; } forward OnFurnitureCreated(furnitureid); public OnFurnitureCreated(furnitureid) { FurnitureData[furnitureid][furnitureID] = cache_insert_id(g_iHandle); Furniture_Save(furnitureid); return 1; } forward OnContactAdd(playerid, id); public OnContactAdd(playerid, id) { ContactData[playerid][id][contactID] = cache_insert_id(g_iHandle); return 1; } forward OnInventoryAdd(playerid, itemid); public OnInventoryAdd(playerid, itemid) { InventoryData[playerid][itemid][invID] = cache_insert_id(g_iHandle); return 1; } forward OnBanLookup(playerid, username[]); public OnBanLookup(playerid, username[]) { if (!IsPlayerConnected(playerid)) return 0; static rows, fields, reason[128], date[36]; cache_get_data(rows, fields, g_iHandle); if (rows) { cache_get_field_content(0, "Reason", reason, g_iHandle); cache_get_field_content(0, "Date", date, g_iHandle); SendServerMessage(playerid, "%s was banned on %s, reason: %s", username, date, reason); } else { SendErrorMessage(playerid, "%s is not banned from this server.", username); } return 1; } forward OnVerifyNameChange(playerid, newname[]); public OnVerifyNameChange(playerid, newname[]) { static rows, fields; cache_get_data(rows, fields, g_iHandle); if (rows) return SendErrorMessage(playerid, "The specified name \"%s\" is already in use.", newname); foreach (new i : Player) if (!strcmp(ReturnName(i), newname, true)) { return SendErrorMessage(playerid, "The specified name \"%s\" is already in use.", newname); } format(PlayerData[playerid][pNameChange], 24, newname); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s is requesting a name change to %s (use \"/acceptname\" or \"/declinename\").", ReturnName(playerid, 0), newname); SendServerMessage(playerid, "Your name change request was sent to the admins."); return 1; } forward OnDeleteCharacter(playerid, name[]); public OnDeleteCharacter(playerid, name[]) { static rows, fields, query[128], id = -1; cache_get_data(rows, fields, g_iHandle); if (!rows) return SendErrorMessage(playerid, "The character \"%s\" is not linked under any accounts.", name); if (cache_get_field_int(0, "Admin") > PlayerData[playerid][pAdmin]) return SendErrorMessage(playerid, "You are not authorized to delete a higher admin's character."); id = cache_get_field_int(0, "ID"); if (id) { format(query, sizeof(query), "DELETE FROM `contacts` WHERE `ID` = '%d'", id); mysql_tquery(g_iHandle, query); format(query, sizeof(query), "DELETE FROM `gps` WHERE `ID` = '%d'", id); mysql_tquery(g_iHandle, query); format(query, sizeof(query), "DELETE FROM `inventory` WHERE `ID` = '%d'", id); mysql_tquery(g_iHandle, query); format(query, sizeof(query), "DELETE FROM `tickets` WHERE `ID` = '%d'", id); mysql_tquery(g_iHandle, query); format(query, sizeof(query), "DELETE FROM `characters` WHERE `ID` = '%d'", id); mysql_tquery(g_iHandle, query); SendServerMessage(playerid, "You have deleted \"%s\" successfully.", name); } return 1; } forward OnDeleteAccount(playerid, name[]); public OnDeleteAccount(playerid, name[]) { static rows, fields, id = -1; cache_get_data(rows, fields, g_iHandle); if (!rows) return SendErrorMessage(playerid, "The username \"%s\" doesn't exist.", name); static query[128]; for (new i = 0; i < rows; i ++) { if ((id = cache_get_field_int(i, "ID"))) { format(query, sizeof(query), "DELETE FROM `contacts` WHERE `ID` = '%d'", id); mysql_tquery(g_iHandle, query); format(query, sizeof(query), "DELETE FROM `gps` WHERE `ID` = '%d'", id); mysql_tquery(g_iHandle, query); format(query, sizeof(query), "DELETE FROM `inventory` WHERE `ID` = '%d'", id); mysql_tquery(g_iHandle, query); format(query, sizeof(query), "DELETE FROM `tickets` WHERE `ID` = '%d'", id); mysql_tquery(g_iHandle, query); } } format(query, sizeof(query), "DELETE FROM `accounts` WHERE `Username` = '%s'", name); mysql_tquery(g_iHandle, query); format(query, sizeof(query), "DELETE FROM `characters` WHERE `Username` = '%s'", name); mysql_tquery(g_iHandle, query); SendServerMessage(playerid, "You have deleted \"%s\" from the database.", name); return 1; } forward OnNameChange(playerid, userid, newname[]); public OnNameChange(playerid, userid, newname[]) { if (!IsPlayerConnected(playerid) || !IsPlayerConnected(userid)) return 0; static rows, fields; cache_get_data(rows, fields, g_iHandle); if (rows) return SendErrorMessage(playerid, "The specified name \"%s\" is in use.", newname); new oldname[MAX_PLAYER_NAME]; GetPlayerName(userid, oldname, sizeof(oldname)); ChangeName(userid, newname); for (new i = 0, l = strlen(oldname); i != l; i ++) { if (oldname[i] == '_') oldname[i] = ' '; } for (new i = 0, l = strlen(newname); i != l; i ++) { if (newname[i] == '_') newname[i] = ' '; } SendServerMessage(playerid, "You have changed %s's name to %s.", oldname, newname); SendServerMessage(userid, "%s has changed your name to %s.", ReturnName(playerid, 0), newname); Log_Write("logs/name_log.txt", "[%s] %s has changed %s's name to %s.", ReturnDate(), ReturnName(playerid), oldname, newname); return 1; } forward OnTicketCreated(playerid, ticketid); public OnTicketCreated(playerid, ticketid) { TicketData[playerid][ticketid][ticketID] = cache_insert_id(g_iHandle); return 1; } forward OnRackCreated(rackid); public OnRackCreated(rackid) { if (rackid == -1 || !RackData[rackid][rackExists]) return 0; RackData[rackid][rackID] = cache_insert_id(g_iHandle); Rack_Save(rackid); return 1; } forward OnGateCreated(gateid); public OnGateCreated(gateid) { if (gateid == -1 || !GateData[gateid][gateExists]) return 0; GateData[gateid][gateID] = cache_insert_id(g_iHandle); Gate_Save(gateid); return 1; } forward OnBusinessCreated(bizid); public OnBusinessCreated(bizid) { if (bizid == -1 || !BusinessData[bizid][bizExists]) return 0; BusinessData[bizid][bizID] = cache_insert_id(g_iHandle); Business_Save(bizid); return 1; } forward OnEntranceCreated(entranceid); public OnEntranceCreated(entranceid) { if (entranceid == -1 || !EntranceData[entranceid][entranceExists]) return 0; EntranceData[entranceid][entranceID] = cache_insert_id(g_iHandle); EntranceData[entranceid][entranceWorld] = EntranceData[entranceid][entranceID] + 7000; Entrance_Save(entranceid); return 1; } forward OnCarCreated(carid); public OnCarCreated(carid) { if (carid == -1 || !CarData[carid][carExists]) return 0; CarData[carid][carID] = cache_insert_id(g_iHandle); Car_Save(carid); return 1; } forward OnPumpCreated(pumpid); public OnPumpCreated(pumpid) { PumpData[pumpid][pumpID] = cache_insert_id(g_iHandle); Pump_Save(pumpid); return 1; } forward OnArrestCreated(arrestid); public OnArrestCreated(arrestid) { if (arrestid == -1 || !ArrestData[arrestid][arrestExists]) return 0; ArrestData[arrestid][arrestID] = cache_insert_id(g_iHandle); Arrest_Save(arrestid); return 1; } forward OnPlantCreated(plantid); public OnPlantCreated(plantid) { if (plantid == -1 || !PlantData[plantid][plantExists]) return 0; PlantData[plantid][plantID] = cache_insert_id(g_iHandle); Plant_Save(plantid); return 1; } forward OnCrateCreated(crateid); public OnCrateCreated(crateid) { if (crateid == -1 || !CrateData[crateid][crateExists]) return 0; CrateData[crateid][crateID] = cache_insert_id(g_iHandle); Crate_Save(crateid); return 1; } forward OnFactionCreated(factionid); public OnFactionCreated(factionid) { if (factionid == -1 || !FactionData[factionid][factionExists]) return 0; FactionData[factionid][factionID] = cache_insert_id(g_iHandle); Faction_Save(factionid); Faction_SaveRanks(factionid); return 1; } forward OnBackpackCreated(id); public OnBackpackCreated(id) { if (id == -1 || !BackpackData[id][backpackExists]) return 0; BackpackData[id][backpackID] = cache_insert_id(g_iHandle); Backpack_Save(id); return 1; } forward OnATMCreated(atmid); public OnATMCreated(atmid) { if (atmid == -1 || !ATMData[atmid][atmExists]) return 0; ATMData[atmid][atmID] = cache_insert_id(g_iHandle); ATM_Save(atmid); return 1; } forward OnImpoundCreated(impoundid); public OnImpoundCreated(impoundid) { if (impoundid == -1 || !ImpoundData[impoundid][impoundExists]) return 0; ImpoundData[impoundid][impoundID] = cache_insert_id(g_iHandle); Impound_Save(impoundid); return 1; } forward OnGraffitiCreated(id); public OnGraffitiCreated(id) { GraffitiData[id][graffitiID] = cache_insert_id(g_iHandle); Graffiti_Save(id); return 1; } forward OnDetectorCreated(id); public OnDetectorCreated(id) { MetalDetectors[id][detectorID] = cache_insert_id(g_iHandle); return 1; } forward OnGarbageCreated(garbageid); public OnGarbageCreated(garbageid) { if (garbageid == -1 || !GarbageData[garbageid][garbageExists]) return 0; GarbageData[garbageid][garbageID] = cache_insert_id(g_iHandle); Garbage_Save(garbageid); return 1; } forward OnVendorCreated(vendorid); public OnVendorCreated(vendorid) { if (vendorid == -1 || !VendorData[vendorid][vendorExists]) return 0; VendorData[vendorid][vendorID] = cache_insert_id(g_iHandle); Vendor_Save(vendorid); return 1; } forward OnSpeedCreated(speedid); public OnSpeedCreated(speedid) { if (speedid == -1 || !SpeedData[speedid][speedExists]) return 0; SpeedData[speedid][speedID] = cache_insert_id(g_iHandle); Speed_Save(speedid); return 1; } forward OnHouseCreated(houseid); public OnHouseCreated(houseid) { if (houseid == -1 || !HouseData[houseid][houseExists]) return 0; HouseData[houseid][houseID] = cache_insert_id(g_iHandle); House_Save(houseid); return 1; } forward OnDroppedItem(itemid); public OnDroppedItem(itemid) { if (itemid == -1 || !DroppedItems[itemid][droppedModel]) return 0; DroppedItems[itemid][droppedID] = cache_insert_id(g_iHandle); return 1; } forward OnJobCreated(jobid); public OnJobCreated(jobid) { if (jobid == -1 || !JobData[jobid][jobExists]) return 0; JobData[jobid][jobID] = cache_insert_id(g_iHandle); Job_Save(jobid); return 1; } forward OnCharacterLookup(extraid, id, character[]); public OnCharacterLookup(extraid, id, character[]) { if (!IsPlayerConnected(extraid)) return 0; static rows, fields, string[128]; cache_get_data(rows, fields, g_iHandle); if (rows) { static admin, skin, createDate, lastLogin; admin = cache_get_field_int(0, "Admin"); skin = cache_get_field_int(0, "Skin"); createDate = cache_get_field_int(0, "CreateDate"); lastLogin = cache_get_field_int(0, "LastLogin"); format(string, sizeof(string), "~g~Name:~w~ %s~n~~g~Account:~w~ %s~n~~g~Created:~w~ %s~n~~g~Last Login:~w~ %s", character, (admin > 0) ? ("Admin") : ("Player"), GetDuration(gettime() - createDate), GetDuration(gettime() - lastLogin)); PlayerTextDrawSetString(extraid, PlayerData[extraid][pTextdraws][52], string); format(string, sizeof(string), "#%d: %s", id, character); PlayerTextDrawSetString(extraid, PlayerData[extraid][pTextdraws][53], string); PlayerTextDrawSetPreviewModel(extraid, PlayerData[extraid][pTextdraws][54], skin); for (new i = 40; i < 58; i ++) { if (i >= 50) PlayerTextDrawShow(extraid, PlayerData[extraid][pTextdraws][i]); else if (i < 50) PlayerTextDrawHide(extraid, PlayerData[extraid][pTextdraws][i]); } SelectTextDraw(extraid, -1); PlayerData[extraid][pDisplayStats] = 2; PlayerData[extraid][pCharacterMenu] = id; } return 1; } forward OnCharacterCheck(extraid, character[]); public OnCharacterCheck(extraid, character[]) { if (!IsPlayerConnected(extraid)) return 0; static rows, fields, query[150]; cache_get_data(rows, fields, g_iHandle); if (rows) { Dialog_Show(extraid, CreateChar, DIALOG_STYLE_INPUT, "Create Character", "Error: The specified name \"%s\" is in use!\n\nPlease enter the name of your new character below:\n\nWarning: Your name must be in the Firstname_Lastname format and not exceed 24 characters.", "Create", "Cancel", character); } else { format(query, sizeof(query), "INSERT INTO `characters` (`Username`, `Character`, `CreateDate`) VALUES('%s', '%s', '%d')", PlayerData[extraid][pUsername], character, gettime()); mysql_tquery(g_iHandle, query, "OnQueryFinished", "dd", extraid, THREAD_CREATE_CHAR); format(PlayerCharacters[extraid][PlayerData[extraid][pCharacter] - 1], MAX_PLAYER_NAME + 1, character); SendServerMessage(extraid, "You have successfully created character \"%s\".", character); ShowCharacterMenu(extraid); PlayerData[extraid][pLogged] = 0; } return 1; } stock FlashTextDraw(playerid, PlayerText:textid, delay = 500) { PlayerTextDrawHide(playerid, textid); SetTimerEx("FlashShowTextDraw", delay, false, "dd", playerid, _:textid); return 1; } stock FlashTextDrawEx(playerid, PlayerText:textid, amount = 1) { PlayerTextDrawHide(playerid, textid); SetTimerEx("FlashShowTextDrawEx", 500, false, "ddd", playerid, _:textid, amount); return 1; } forward FlashShowTextDrawEx(playerid, PlayerText:textid, amount); public FlashShowTextDrawEx(playerid, PlayerText:textid, amount) { if ((IsPlayerConnected(playerid) && PlayerData[playerid][pLogged] && PlayerData[playerid][pCharacter] != 0 && PlayerData[playerid][pHospital] == -1) && IsPlayerSpawned(playerid)) { PlayerTextDrawShow(playerid, textid); if (amount > 0) return SetTimerEx("HideTextDrawEx", 500, false, "ddd", playerid, _:textid, amount); } return 1; } forward HideTextDrawEx(playerid, PlayerText:textid, amount); public HideTextDrawEx(playerid, PlayerText:textid, amount) { if ((IsPlayerConnected(playerid) && PlayerData[playerid][pLogged] && PlayerData[playerid][pCharacter] != 0 && PlayerData[playerid][pHospital] == -1) && IsPlayerSpawned(playerid)) { PlayerTextDrawHide(playerid, textid); if (amount > 0) return SetTimerEx("FlashShowTextDrawEx", 500, false, "ddd", playerid, _:textid, --amount); } return 1; } forward FlashShowTextDraw(playerid, PlayerText:textid); public FlashShowTextDraw(playerid, PlayerText:textid) { if ((IsPlayerConnected(playerid) && PlayerData[playerid][pLogged] && PlayerData[playerid][pCharacter] != 0 && PlayerData[playerid][pHospital] == -1) && IsPlayerSpawned(playerid)) { PlayerTextDrawShow(playerid, textid); } return 1; } stock RestartCheck() { static time[3], string[32]; if (g_ServerRestart == 1 && !g_RestartTime) { foreach (new i : Player) { SQL_SaveCharacter(i); SetPlayerName(i, PlayerData[i][pUsername]); } SendRconCommand("gmx"); } else if (g_ServerRestart == 1) { GetElapsedTime(g_RestartTime--, time[0], time[1], time[2]); format(string, 32, "~r~Server Restart:~w~ %02d:%02d", time[1], time[2]); TextDrawSetString(gServerTextdraws[3], string); } return 1; } stock TotalledCheck() { static Float:fHealth; for (new i = 1; i != MAX_VEHICLES; i ++) if (IsValidVehicle(i) && GetVehicleHealth(i, fHealth) && fHealth < 300.0) { SetVehicleHealth(i, 300.0); SetEngineStatus(i, false); } return 1; } forward MinuteCheck(); public MinuteCheck() { static Float:hp; foreach (new i : Player) { if (!PlayerData[i][pLogged] && !PlayerData[i][pCharacter]) continue; PlayerData[i][pMinutes]++; if (PlayerData[i][pMinutes] >= 60) { new paycheck = random(100) + 100; PlayerData[i][pMinutes] = 0; PlayerData[i][pPlayingHours]++; PlayerData[i][pBankMoney] += paycheck; if(PlayerData[i][pOwnsBillboard] >= 0) { if(PlayerData[i][pBankMoney] >= BillBoardData[PlayerData[i][pOwnsBillboard]][bbPrice]) { SendClientMessage(i, COLOR_GREY, "-----------------------------------------------------------"); SendClientMessageEx(i, COLOR_WHITE, "Your {33CC33}%s{FFFFFF} paycheck was added to your bank account.", FormatNumber(paycheck)); SendClientMessageEx(i, COLOR_WHITE, "{33CC33}%s{FFFFFF} has been deducted from your bank account for billboard fees", FormatNumber(BillBoardData[PlayerData[i][pOwnsBillboard]][bbPrice])); SendClientMessage(i, COLOR_GREY, "-----------------------------------------------------------"); PlayerData[i][pBankMoney] -= BillBoardData[PlayerData[i][pOwnsBillboard]][bbPrice]; Tax_AddMoney(BillBoardData[PlayerData[i][pOwnsBillboard]][bbPrice]); return 1; } if(PlayerData[i][pBankMoney] < BillBoardData[PlayerData[i][pOwnsBillboard]][bbPrice]) { SendClientMessage(i, COLOR_GREY, "-----------------------------------------------------------"); SendClientMessageEx(i, COLOR_WHITE, "Your {33CC33}%s{FFFFFF} paycheck was added to your bank account.", FormatNumber(paycheck)); SendClientMessageEx(i, COLOR_LIGHTRED, "You cannot afford to pay for your billboard anymore, therefor it has been unrented"); SendClientMessage(i, COLOR_GREY, "-----------------------------------------------------------"); BillBoardData[PlayerData[i][pOwnsBillboard]][bbOwner] = 0; Billboard_Save(PlayerData[i][pOwnsBillboard]); Billboard_Refresh(PlayerData[i][pOwnsBillboard]); PlayerData[i][pOwnsBillboard] = -1; } return 1; } SendClientMessage(i, COLOR_GREY, "-----------------------------------------------------------"); SendClientMessageEx(i, COLOR_WHITE, "Your {33CC33}%s{FFFFFF} paycheck was added to your bank account.", FormatNumber(paycheck)); SendClientMessage(i, COLOR_GREY, "-----------------------------------------------------------"); } if (PlayerData[i][pInjured]) { GetPlayerHealth(i, hp); SetPlayerHealth(i, hp - 10.0); } } for (new i = 0; i != MAX_DRUG_PLANTS; i ++) if (PlantData[i][plantExists] && PlantData[i][plantDrugs] < Plant_MaxGrams(PlantData[i][plantType])) { PlantData[i][plantDrugs]++; Plant_Refresh(i); Plant_Save(i); } return 1; } forward PlayerCheck(); public PlayerCheck() { static str[128], Float:health, id = -1; TotalledCheck(); RestartCheck(); foreach (new i : Player) { if (!PlayerData[i][pLogged] && !PlayerData[i][pCharacter]) continue; if (PlayerData[i][pTutorial] > 0) { PlayerData[i][pTutorialTime]--; if (PlayerData[i][pTutorialTime] < 1) { switch (PlayerData[i][pTutorial]) { case 1: { PlayerData[i][pTutorial] = 2; PlayerData[i][pTutorialTime] = 10; PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][59], "Tutorial: Driving School"); PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][60], "This is the ~g~~h~Driving School~w~. You can take your~n~driving test here. To pass the test, you must~n~avoid the obstacles."); PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][61], "A driving license is required to legally drive in~n~this state. Driving recklessly or without a~n~license will alert the police!"); #if SERVER_CITY == 1 SetPlayerPos(i, 1967.677978, -1991.190795, -3.260505); InterpolateCameraPos(i, 1642.303344, -2327.007568, 15.672925, 1967.677978, -1991.190795, 16.739494, 2000); InterpolateCameraLookAt(i, 1642.292968, -2327.523193, 15.546875, 1968.177246, -1991.205078, 16.651542, 2000); #elseif SERVER_CITY == 2 SetPlayerPos(i, -2026.765991, -84.237663, 21.766628); InterpolateCameraPos(i, -2399.519287, 321.964355, 37.035743, -2026.765991, -84.237663, 41.766628, 2000); InterpolateCameraLookAt(i, -2399.951416, 322.215942, 37.015625, -2026.787597, -84.917533, 41.520622, 2000); #elseif SERVER_CITY == 3 SetPlayerPos(i, 1168.088500, 1381.582641, -3.185750); InterpolateCameraPos(i, 1711.642089, 1448.227294, 13.340233, 1168.088500, 1381.582641, 16.814249, 2000); InterpolateCameraLookAt(i, 1711.144897, 1448.224365, 13.289665, 1168.084472, 1381.082641, 16.674325, 2000); #endif } case 2: { PlayerData[i][pTutorial] = 3; PlayerData[i][pTutorialTime] = 10; PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][59], "Tutorial: Dealership"); PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][60], "This is the ~g~~h~Dealership~w~. You can purchase any~n~private owned vehicle for yourself, for a~n~certain price."); PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][61], "Please remember to ~b~~h~/park~w~ your vehicle! Your~n~vehicle will be impounded if it's not parked~n~correctly."); #if SERVER_CITY == 1 SetPlayerPos(i, 546.784729, -1256.438354, 15.406070); InterpolateCameraPos(i, 1967.677978, -1991.190795, 16.739494, 546.784729, -1256.438354, 35.406070, 2000); InterpolateCameraLookAt(i, 1968.177246, -1991.205078, 16.651542, 546.749816, -1256.937133, 35.216030, 2000); #elseif SERVER_CITY == 2 SetPlayerPos(i, -2006.275146, 287.903869, 28.095851); InterpolateCameraPos(i, -2026.765991, -84.237663, 41.766628, -2006.275146, 287.903869, 48.095851, 2000); InterpolateCameraLookAt(i, -2026.787597, -84.917533, 41.520622, -2005.739257, 287.892669, 47.936939, 2000); #elseif SERVER_CITY == 3 SetPlayerPos(i, 1635.780761, 1828.321289, 5.649860); InterpolateCameraPos(i, 1168.088500, 1381.582641, 16.814249, 1635.780761, 1828.321289, 25.649860, 2000); InterpolateCameraLookAt(i, 1168.084472, 1381.082641, 16.674325, 1636.280517, 1828.325683, 25.5048842, 2000); #endif } case 3: { PlayerData[i][pTutorial] = 4; PlayerData[i][pTutorialTime] = 10; PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][59], "Tutorial: Jobs"); PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][60], "There are a wide variety of jobs around the~n~city to choose from, this one being the~n~~r~~h~Courier~w~ job."); PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][61], "There are many more jobs that will bring in~n~the income. Use ~g~~h~/joblist~w~ to find your preferred~n~job!"); #if SERVER_CITY == 1 SetPlayerPos(i, 2420.203857, -2089.423095, -1.058326); InterpolateCameraPos(i, 556.450866, -1260.044677, 20.433259, 2420.203857, -2089.423095, 18.941673, 2000); InterpolateCameraLookAt(i, 556.276916, -1260.619628, 20.427263, 2420.703613, -2089.426269, 18.879707, 2000); #elseif SERVER_CITY == 2 SetPlayerPos(i, -1683.220336, -7.236631, -4.830643); InterpolateCameraPos(i, -2006.275146, 287.903869, 48.095851, -1683.220336, -7.236631, 15.169356, 2000); InterpolateCameraLookAt(i, -2005.739257, 287.892669, 47.936939, -1682.866577, -6.893327, 15.087323, 2000); #elseif SERVER_CITY == 3 SetPlayerPos(i, 1012.894348, 2137.586425, -4.546604); InterpolateCameraPos(i, 1635.780761, 1828.321289, 25.649860, 1012.894348, 2137.586425, 15.453395, 2000); InterpolateCameraLookAt(i, 1636.280517, 1828.325683, 25.504884, 1013.393859, 2137.540283, 15.364944, 2000); #endif } case 4: { PlayerData[i][pTutorial] = 5; PlayerData[i][pTutorialTime] = 10; PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][59], "Tutorial: Real Estate"); PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][60], "There are many real estate opportunities in~n~San Andreas. To purchase a house, type ~g~~h~/buy~n~~w~near the house icon."); PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][61], "You can also purchase furniture and store your~n~goods inside your house. Type ~g~~h~/help~w~ for a list~n~of house commands."); #if SERVER_CITY == 1 SetPlayerPos(i, 1149.126586, -744.422912, 84.984420); InterpolateCameraPos(i, 2420.203857, -2089.423095, 18.941673, 1149.126586, -744.422912, 104.984420, 2000); InterpolateCameraLookAt(i, 2420.703613, -2089.426269, 18.879707, 1148.626708, -744.411132, 104.823509, 2000); #elseif SERVER_CITY == 2 SetPlayerPos(i, -2507.954101, 1125.971801, 44.563232); InterpolateCameraPos(i, 1683.220336, -7.236631, 15.169356, -2507.954101, 1125.971801, 64.563232, 2000); InterpolateCameraLookAt(i, -1682.866577, -6.893327, 15.087323, -2507.928710, 1126.796386, 64.145462, 2000); #elseif SERVER_CITY == 3 SetPlayerPos(i, 1380.143676, 2532.807373, -2.440540); InterpolateCameraPos(i, 1012.894348, 2137.586425, 15.453395, 1380.143676, 2532.807373, 17.559459, 2000); InterpolateCameraLookAt(i, 1013.393859, 2137.540283, 15.364944, 1380.643676, 2532.810302, 17.450519, 2000); #endif } case 5: { PlayerData[i][pTutorial] = 6; PlayerData[i][pTutorialTime] = 10; PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][59], "Tutorial: Businesses"); PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][60], "Businesses are also a way to bring in income.~n~You can adjust your business assets, including~n~the prices and a custom message.");//and even~n~hire employees to work for you!"); PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][61], "This business is a ~p~~h~Retail Store~w~. You can buy~n~items using the ~g~~h~/buy~w~ command. Type ~g~~h~/help~n~~w~for more commands."); #if SERVER_CITY == 1 SetPlayerPos(i, 1315.212036, -916.465942, 24.322559); InterpolateCameraPos(i, 1149.126586, -744.422912, 104.984420, 1315.212036, -916.465942, 44.322559, 2000); InterpolateCameraLookAt(i, 1148.626708, -744.411132, 104.82350, 1315.211059, -915.965942, 44.212619, 2000); #elseif SERVER_CITY == 2 SetPlayerPos(i, -2442.177734, 726.758605, 21.054706); InterpolateCameraPos(i, -2507.954101, 1125.971801, 64.563232, -2442.177734, 726.758605, 41.054706, 2000); InterpolateCameraLookAt(i, -2507.928710, 1126.796386, 64.145462, -2442.179931, 727.221496, 40.933773, 2000); #elseif SERVER_CITY == 3 SetPlayerPos(i, 2160.811035, 1992.461425, -1.797470); InterpolateCameraPos(i, 1380.143676, 2532.807373, 17.559459, 2160.811035, 1992.461425, 18.202529, 2000); InterpolateCameraLookAt(i, 1380.643676, 2532.810302, 17.450519, 2161.310546, 1992.449707, 18.108432, 2000); #endif } case 6: { PlayerData[i][pTutorial] = 7; PlayerData[i][pTutorialTime] = 10; PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][59], "Tutorial: Hunger and Thirst"); PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][60], "Your hunger and thirst meter is shown on~n~the right side of the screen. After a while~n~your character will get hungry."); PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][61], "This is a ~y~Fast Food~w~ business. You can purchase~n~food here. Also, you can purchase food and~n~drinks at a ~y~Retail Store."); SetPlayerInterior(i, 10); SetPlayerPos(i, 365.013977, -73.615165, 983.073730); SetPlayerCameraPos(i, 365.013977, -73.615165, 1003.073730); SetPlayerCameraLookAt(i, 365.426818, -73.318977, 1003.007812); } case 7: { PlayerData[i][pTutorial] = 8; PlayerData[i][pTutorialTime] = 10; SetPlayerInterior(i, 0); PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][59], "Tutorial: Conclusion"); PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][60], "This tutorial is now finished. Remember, if you~n~need any assistance, use the ~g~~h~/seekhelp~n~~w~command and wait patiently."); PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][61], "South Central ~r~Roleplay~w~ wishes to thank you for~n~playing at our server! You will spawn in a~n~moment."); #if SERVER_CITY == 1 SetPlayerPos(i, 1226.481567, -1144.220336, 31.174240); InterpolateCameraPos(i, 1202.077392, -929.400634, 47.784023, 1226.481567, -1144.220336, 51.174240, 2000); InterpolateCameraLookAt(i, 1202.008300, -928.905456, 47.673583, 1225.981567, -1144.216186, 51.160247, 2000); #elseif SERVER_CITY == 2 SetPlayerPos(i, -2016.094970, -306.215942, 55.449806); InterpolateCameraPos(i, -2336.783935, -187.118865, 44.045051, -2016.094970, -306.215942, 75.449806, 2000); InterpolateCameraLookAt(i, -2336.785400, -186.618865, 43.885139, -2016.088867, -305.735107, 75.390838, 2000); #elseif SERVER_CITY == 3 SetPlayerPos(i, 2115.572753, 2113.175292, 6.203048); InterpolateCameraPos(i, 1871.407104, 2052.714599, 20.308364, 2115.572753, 2113.175292, 26.203048, 2000); InterpolateCameraLookAt(i, 1871.404663, 2053.214599, 20.169441, 2115.072753, 2113.184326, 26.153575, 2000); #endif } case 8: { for (new j = 58; j < 62; j ++) { PlayerTextDrawHide(i, PlayerData[i][pTextdraws][j]); } SetDefaultSpawn(i); ShowHungerTextdraw(i, 1); PlayerData[i][pCreated] = 1; PlayerData[i][pTask] = 1; PlayerData[i][pTutorial] = 0; PlayerData[i][pTutorialTime] = 0; SendServerMessage(i, "Type /tasks to view your current tasks to complete."); } } } } if (GetPlayerSpecialAction(i) == SPECIAL_ACTION_USEJETPACK && !PlayerData[i][pJetpack]) { SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has spawned a jetpack using hacks.", ReturnName(i, 0)); Log_Write("logs/cheat_log.txt", "[%s] %s has spawned a jetpack using hacks.", ReturnDate(), ReturnName(i, 0)); } if (GetPlayerSpeed(i) > 210 && PlayerData[i][pAdmin] < 1) { if (!IsAPlane(GetPlayerVehicleID(i)) && GetPlayerState(i) != PLAYER_STATE_PASSENGER) { SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has possibly used speed hacks (%.0f mph).", ReturnName(i, 0), GetPlayerSpeed(i)); Log_Write("logs/cheat_log.txt", "[%s] %s has possibly used speed hacks (%.0f mph).", ReturnDate(), ReturnName(i, 0), GetPlayerSpeed(i)); } } if(PlayerData[i][pChannel] == 911 && GetFactionType(i) != FACTION_POLICE) { PlayerData[i][pChannel] = 0; } if (PlayerData[i][pPicking]) { if ((id = PlayerData[i][pPickCar]) != -1) { if (Car_Nearest(i) != id) { PlayerData[i][pPicking] = 0; PlayerData[i][pPickCar] = -1; PlayerData[i][pPickTime] = 0; } else { PlayerData[i][pPickTime]++; format(str, sizeof(str), "~n~~n~~n~~n~~n~~n~~n~~n~~n~~w~Picking... %d", 60 - PlayerData[i][pPickTime]); GameTextForPlayer(i, str, 1000, 3); if (PlayerData[i][pPickTime] >= 60) { static engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(CarData[id][carVehicle], engine, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(CarData[id][carVehicle], engine, lights, alarm, 0, bonnet, boot, objective); PlayerData[i][pPicking] = 0; PlayerData[i][pPickCar] = -1; PlayerData[i][pPickTime] = 0; CarData[id][carLocked] = 0; Car_Save(id); SendNearbyMessage(i, 30.0, COLOR_PURPLE, "** %s has picked the lock of the vehicle.", ReturnName(i, 0)); ShowPlayerFooter(i, "You have ~g~unlocked~w~ the vehicle!"); } } } } if (!PlayerData[i][pKilled] && PlayerData[i][pHospital] != -1) { PlayerData[i][pHospitalTime]++; format(str, sizeof(str), "~n~~n~~n~~n~~n~~n~~n~~n~~n~~w~Recovering... %d", 15 - PlayerData[i][pHospitalTime]); GameTextForPlayer(i, str, 1000, 3); ApplyAnimation(i, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0); if (PlayerData[i][pHospitalTime] >= 15) { SetPlayerPos(i, -204.5867, -1740.7955, 675.7687); SetPlayerFacingAngle(i, 0.0000); TogglePlayerControllable(i, 1); SetCameraBehindPlayer(i); SetPlayerVirtualWorld(i, PlayerData[i][pHospital] + 5000); SendServerMessage(i, "You have recovered at the nearest hospital."); GameTextForPlayer(i, " ", 1, 3); ShowHungerTextdraw(i, 1); PlayerData[i][pHospitalInt] = PlayerData[i][pHospital]; PlayerData[i][pHospital] = -1; PlayerData[i][pHospitalTime] = 0; } } else if (PlayerData[i][pMuted] && PlayerData[i][pMuteTime] > 0) { PlayerData[i][pMuteTime]--; if (!PlayerData[i][pMuteTime]) { PlayerData[i][pMuted] = 0; PlayerData[i][pMuteTime] = 0; } } else if (PlayerData[i][pGraffiti] != -1 && PlayerData[i][pGraffitiTime] > 0) { if (Graffiti_Nearest(i) != PlayerData[i][pGraffiti]) { PlayerData[i][pGraffiti] = -1; PlayerData[i][pGraffitiTime] = 0; } else { PlayerData[i][pGraffitiTime]--; if (PlayerData[i][pGraffitiTime] < 1) { strunpack(str, PlayerData[i][pGraffitiText]); format(GraffitiData[PlayerData[i][pGraffiti]][graffitiText], 64, str); GraffitiData[PlayerData[i][pGraffiti]][graffitiColor] = PlayerData[i][pGraffitiColor]; Graffiti_Refresh(PlayerData[i][pGraffiti]); Graffiti_Save(PlayerData[i][pGraffiti]); ClearAnimations(i, 1); SendNearbyMessage(i, 30.0, COLOR_PURPLE, "** %s puts their can of spray paint away.", ReturnName(i, 0)); PlayerData[i][pGraffiti] = -1; PlayerData[i][pGraffitiTime] = 0; } } } else if (PlayerData[i][pSpamCount] > 0) { PlayerData[i][pSpamCount]--; } else if (PlayerData[i][pCommandCount] > 0) { PlayerData[i][pCommandCount]--; } else if (PlayerData[i][pVendorTime] > 0) { PlayerData[i][pVendorTime]--; } else if (PlayerData[i][pDrinkTime] > 0) { PlayerData[i][pDrinkTime]--; } else if (PlayerData[i][pAdTime] > 0) { PlayerData[i][pAdTime]--; } else if (PlayerData[i][pSpeedTime] > 0) { PlayerData[i][pSpeedTime]--; } else if (PlayerData[i][pBleeding] && PlayerData[i][pBleedTime] > 0) { if (--PlayerData[i][pBleedTime] == 0) { SetPlayerHealth(i, ReturnHealth(i) - 3.0); PlayerData[i][pBleedTime] = 10; CreateBlood(i); SetTimerEx("HidePlayerBox", 500, false, "dd", i, _:ShowPlayerBox(i, 0xFF000066)); } } else if (PlayerData[i][pFingerTime] > 0) { PlayerData[i][pFingerTime]--; if (!PlayerData[i][pFingerTime] && DroppedItems[PlayerData[i][pFingerItem]][droppedModel] && IsPlayerInRangeOfPoint(i, 1.5, DroppedItems[PlayerData[i][pFingerItem]][droppedPos][0], DroppedItems[PlayerData[i][pFingerItem]][droppedPos][1], DroppedItems[PlayerData[i][pFingerItem]][droppedPos][2])) { SendServerMessage(i, "The fingerprint scanner has detected a match: %s.", DroppedItems[PlayerData[i][pFingerItem]][droppedPlayer]); PlayerData[i][pFingerItem] = -1; } } else if (PlayerData[i][pDrugUsed] != 0 && PlayerData[i][pDrugTime] > 0) { if (--PlayerData[i][pDrugTime] && 1 <= PlayerData[i][pDrugUsed] <= 3 && GetPlayerDrunkLevel(i) < 5000) { SetPlayerDrunkLevel(i, 10000); PlayerTextDrawShow(i, PlayerData[i][pTextdraws][8]); if (PlayerData[i][pDrugUsed] == 3) { SetPlayerWeather(i, -67); SetPlayerTime(i, 12, 12); // Set the time (the drug weather is buggy at night) } } if (1 <= PlayerData[i][pDrugUsed] <= 3 && ReturnHealth(i) <= 95) { SetPlayerHealth(i, ReturnHealth(i) + 5); } if (!PlayerData[i][pDrugTime]) { new time[3]; gettime(time[0], time[1], time[2]); SetPlayerTime(i, time[0], time[1]); SetPlayerDrunkLevel(i, 500); PlayerTextDrawHide(i, PlayerData[i][pTextdraws][8]); PlayerData[i][pDrugUsed] = 0; SendServerMessage(i, "The effects from the drugs have subsided."); } } else if (PlayerData[i][pStunned] > 0) { PlayerData[i][pStunned]--; if (GetPlayerAnimationIndex(i) != 388) ApplyAnimation(i, "CRACK", "crckdeth4", 4.0, 0, 0, 0, 1, 0, 1); if (!PlayerData[i][pStunned]) { TogglePlayerControllable(i, 1); ShowPlayerFooter(i, "You are no longer ~r~stunned."); } } else if (PlayerData[i][pJailTime] > 0) { static hours, minutes, seconds; PlayerData[i][pJailTime]--; GetElapsedTime(PlayerData[i][pJailTime], hours, minutes, seconds); format(str, sizeof(str), "~g~Prison Time:~w~ %02d:%02d:%02d", hours, minutes, seconds); PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][70], str); if (!PlayerData[i][pJailTime]) { PlayerData[i][pPrisoned] = 0; SetDefaultSpawn(i); ShowHungerTextdraw(i, 1); SendServerMessage(i, "You have been released from jail."); PlayerTextDrawHide(i, PlayerData[i][pTextdraws][70]); } } else if (PlayerData[i][pTrackTime] > 0 && IsPlayerConnected(PlayerData[i][pMDCPlayer]) && GetFactionType(i) == FACTION_POLICE) { PlayerData[i][pTrackTime]--; if (!PlayerData[i][pTrackTime]) { if ((id = House_Inside(PlayerData[i][pMDCPlayer])) != -1) { PlayerData[i][pCP] = 1; SetPlayerCheckpoint(i, HouseData[id][housePos][0], HouseData[id][housePos][1], HouseData[id][housePos][2], 3.0); SendServerMessage(i, "%s's last reported location was at \"%s\" (marked on radar).", ReturnName(PlayerData[i][pMDCPlayer], 0), HouseData[id][houseAddress]); } else if ((id = Business_Inside(PlayerData[i][pMDCPlayer])) != -1) { PlayerData[i][pCP] = 1; SetPlayerCheckpoint(i, BusinessData[id][bizPos][0], BusinessData[id][bizPos][1], BusinessData[id][bizPos][2], 3.0); SendServerMessage(i, "%s's last reported location was at \"%s\" (marked on radar).", ReturnName(PlayerData[i][pMDCPlayer], 0), BusinessData[id][bizName]); } else if (GetPlayerInterior(PlayerData[i][pMDCPlayer]) == 0) { static Float:fX, Float:fY, Float:fZ; GetPlayerPos(PlayerData[i][pMDCPlayer], fX, fY, fZ); PlayerData[i][pCP] = 1; SetPlayerCheckpoint(i, fX, fY, fZ, 3.0); SendServerMessage(i, "%s's last reported location was at \"%s\" (marked on radar).", ReturnName(PlayerData[i][pMDCPlayer], 0), GetLocation(fX, fY, fZ)); } else { SendServerMessage(i, "Unable to locate %s; the target is out of range (inside an interior).", ReturnName(PlayerData[i][pMDCPlayer], 0)); } } } else if (PlayerData[i][pCooking] && IsPlayerSpawned(i)) { PlayerData[i][pCookingTime]--; if (House_Inside(i) == PlayerData[i][pCookingHouse]) { format(str, sizeof(str), "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~b~~h~Cooking...~w~ %d seconds", PlayerData[i][pCookingTime]); GameTextForPlayer(i, str, 1200, 3); } if (PlayerData[i][pCookingTime] < 1) { if (House_Inside(i) != PlayerData[i][pCookingHouse]) { SendServerMessage(i, "You have left your food unattended and burned it."); } else { switch (PlayerData[i][pCooking]) { case 1: { id = Inventory_Add(i, "Cooked Burger", 2703, 1); if (id == -1) return SendErrorMessage(i, "You don't have any inventory slots left."); SendNearbyMessage(i, 30.0, COLOR_PURPLE, "** The microwave beeps, you can smell a burger! (( %s ))", ReturnName(i, 0)); SendServerMessage(i, "The cooked burger was added to your inventory."); } case 2: { id = Inventory_Add(i, "Cooked Pizza", 2702, 6); if (id == -1) return SendErrorMessage(i, "You don't have any inventory slots left."); SendNearbyMessage(i, 30.0, COLOR_PURPLE, "** The oven beeps, you can smell pizza! (( %s ))", ReturnName(i, 0)); SendServerMessage(i, "The cooked pizza was added to your inventory."); } } } PlayerData[i][pCooking] = 0; PlayerData[i][pCookingTime] = 0; PlayerData[i][pCookingHouse] = -1; } } else if (PlayerData[i][pDrivingTest] && IsPlayerInVehicle(i, PlayerData[i][pTestCar])) { if (!IsPlayerInRangeOfPoint(i, 100.0, g_arrDrivingCheckpoints[PlayerData[i][pTestStage]][0], g_arrDrivingCheckpoints[PlayerData[i][pTestStage]][1], g_arrDrivingCheckpoints[PlayerData[i][pTestStage]][2])) { CancelDrivingTest(i); SendClientMessage(i, COLOR_LIGHTRED, "[WARNING]:{FFFFFF} You have failed the test due to leaving the test area."); } else if (GetPlayerSpeed(i) >= 55.0) { if (++PlayerData[i][pTestWarns] < 3) { SendClientMessageEx(i, COLOR_LIGHTRED, "[WARNING]:{FFFFFF} You are going too fast, slow down! (%d/3)", PlayerData[i][pTestWarns]); } else { CancelDrivingTest(i); SendClientMessage(i, COLOR_LIGHTRED, "[WARNING]:{FFFFFF} You have failed the test due to excessive speeding!"); } } } else if (IsPlayerInsideTaxi(i)) { PlayerData[i][pTaxiTime]++; if (PlayerData[i][pTaxiTime] == 15) { PlayerData[i][pTaxiTime] = 0; PlayerData[i][pTaxiFee] += 10; } format(str, sizeof(str), "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~g~$%d...~w~ %d seconds", PlayerData[i][pTaxiFee], PlayerData[i][pTaxiTime]); GameTextForPlayer(i, str, 1100, 3); GameTextForPlayer(GetVehicleDriver(GetPlayerVehicleID(i)), str, 1100, 3); } if (PlayerData[i][pCreated] && !PlayerData[i][pTutorial] && !PlayerData[i][pJailTime] && !PlayerData[i][pInjured] && PlayerData[i][pHospital] == -1 && PlayerData[i][pCreated] && IsPlayerSpawned(i)) { GetPlayerHealth(i, health); if (++ PlayerData[i][pHungerTime] >= 300) { if (PlayerData[i][pHunger] > 0) { PlayerData[i][pHunger]--; } else if (PlayerData[i][pHunger] <= 0) { SetPlayerHealth(i, health - 10); FlashTextDraw(i, PlayerData[i][pTextdraws][65]); } PlayerData[i][pHungerTime] = 0; } if (++ PlayerData[i][pThirstTime] >= 280) { if (PlayerData[i][pThirst] > 0) { PlayerData[i][pThirst]--; } else if (PlayerData[i][pThirst] <= 0) { SetPlayerHealth(i, health - 5); FlashTextDraw(i, PlayerData[i][pTextdraws][66]); } PlayerData[i][pThirstTime] = 0; } } if ((id = Boombox_Nearest(i)) != INVALID_PLAYER_ID && PlayerData[i][pBoombox] != id && strlen(BoomboxData[id][boomboxURL]) && !IsPlayerInAnyVehicle(i)) { strunpack(str, BoomboxData[id][boomboxURL]); PlayerData[i][pBoombox] = id; StopAudioStreamForPlayer(i); PlayAudioStreamForPlayer(i, str, BoomboxData[id][boomboxPos][0], BoomboxData[id][boomboxPos][1], BoomboxData[id][boomboxPos][2], 30.0, 1); } else if (PlayerData[i][pBoombox] != INVALID_PLAYER_ID && !IsPlayerInRangeOfPoint(i, 30.0, BoomboxData[PlayerData[i][pBoombox]][boomboxPos][0], BoomboxData[PlayerData[i][pBoombox]][boomboxPos][1], BoomboxData[PlayerData[i][pBoombox]][boomboxPos][2])) { PlayerData[i][pBoombox] = INVALID_PLAYER_ID; StopAudioStreamForPlayer(i); } if (PlayerData[i][pInjured] == 1 && GetPlayerAnimationIndex(i) != 388) { ApplyAnimation(i, "CRACK", "crckdeth4", 4.0, 0, 0, 0, 1, 0, 1); } if (PlayerData[i][pHealthTime] > 0) { PlayerData[i][pHealthTime]--; } if (PlayerData[i][pRangeBooth] != -1 && !IsPlayerInRangeOfPoint(i, 3.0, arrBoothPositions[PlayerData[i][pRangeBooth]][0], arrBoothPositions[PlayerData[i][pRangeBooth]][1], arrBoothPositions[PlayerData[i][pRangeBooth]][2])) { Booth_Leave(i); } format(str, sizeof(str), "%d%c", PlayerData[i][pHunger], '%'); PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][63], str); format(str, sizeof(str), "%d%c", PlayerData[i][pThirst], '%'); PlayerTextDrawSetString(i, PlayerData[i][pTextdraws][64], str); } return 1; } forward UpdateTime(); public UpdateTime() { static time[3], string[32]; gettime(time[0], time[1], time[2]); if (time[0] >= 12) format(string, 32, "%02d:%02d PM", (time[0] == 12) ? (12) : (time[0] - 12), time[1]); else if (time[0] < 12) format(string, 32, "%02d:%02d AM", (time[0] == 0) ? (12) : (time[0]), time[1]); TextDrawSetString(gServerTextdraws[0], string); foreach (new i : Player) if (PlayerData[i][pDrugUsed] != 3) { SetPlayerTime(i, time[0], time[1]); } SetTimer("UpdateTime", 30000, false); } forward RefuelCheck(); public RefuelCheck() { new string[128]; foreach (new i : Player) { if (!PlayerData[i][pLogged] || PlayerData[i][pRefill] == INVALID_VEHICLE_ID) continue; if (PlayerData[i][pRefill] != INVALID_VEHICLE_ID && PlayerData[i][pGasPump] != -1) { PlayerData[i][pRefillPrice]++; CoreVehicles[PlayerData[i][pRefill]][vehFuel] ++; PumpData[PlayerData[i][pGasPump]][pumpFuel] --; if (PumpData[PlayerData[i][pGasPump]][pumpExists]) { format(string, sizeof(string), "[Gas Pump: %d]\n{FFFFFF}Fuel Left: %d liters", PlayerData[i][pGasPump], PumpData[PlayerData[i][pGasPump]][pumpFuel]); UpdateDynamic3DTextLabelText(PumpData[PlayerData[i][pGasPump]][pumpText3D], COLOR_DARKBLUE, string); } if (CoreVehicles[PlayerData[i][pRefill]][vehFuel] >= 100 || GetEngineStatus(PlayerData[i][pRefill]) || !PumpData[PlayerData[i][pGasPump]][pumpExists] || PumpData[PlayerData[i][pGasPump]][pumpFuel] < 0) { CoreVehicles[PlayerData[i][pRefill]][vehFuel] = 100; GiveMoney(i, -PlayerData[i][pRefillPrice]); SendServerMessage(i, "You have refilled your vehicle for $%d.", PlayerData[i][pRefillPrice]); if (PumpData[PlayerData[i][pGasPump]][pumpExists]) { if (PumpData[PlayerData[i][pGasPump]][pumpFuel] < 0) PumpData[PlayerData[i][pGasPump]][pumpFuel] = 0; BusinessData[PlayerData[i][pGasStation]][bizVault] += PlayerData[i][pRefillPrice]; Business_Save(PlayerData[i][pGasStation]); Pump_Save(PlayerData[i][pGasPump]); } StopRefilling(i); } } } return 1; } forward FuelUpdate(); public FuelUpdate() { for (new i = 1; i != MAX_VEHICLES; i ++) if (IsEngineVehicle(i) && GetEngineStatus(i)) { if (CoreVehicles[i][vehFuel] > 0) { CoreVehicles[i][vehFuel]--; if (CoreVehicles[i][vehFuel] >= 1 && CoreVehicles[i][vehFuel] <= 5) { SendClientMessage(GetVehicleDriver(i), COLOR_LIGHTRED, "[WARNING]:{FFFFFF} This vehicle is low on fuel. You must visit a fuel station!"); } } if (CoreVehicles[i][vehFuel] <= 0) { CoreVehicles[i][vehFuel] = 0; SetEngineStatus(i, false); } } } public OnVehicleDeath(vehicleid) { if (CoreVehicles[vehicleid][vehTemporary]) { CoreVehicles[vehicleid][vehTemporary] = false; DestroyVehicle(vehicleid); } for (new i = 0; i != MAX_CRATES; i ++) if (CrateData[i][crateExists] && CrateData[i][crateVehicle] == vehicleid) { Crate_Delete(i); } return 1; } public OnVehicleRespray(playerid, vehicleid, color1, color2) { SetVehicleColor(vehicleid, color1, color2); return 1; } public OnVehiclePaintjob(playerid, vehicleid, paintjobid) { SetVehiclePaintjob(vehicleid, paintjobid); return 1; } public OnVehicleMod(playerid, vehicleid, componentid) { new id = Car_GetID(vehicleid), slot = GetVehicleComponentType(componentid); if (id != -1) { CarData[id][carMods][slot] = componentid; Car_Save(id); } return 1; } public OnVehicleSpawn(vehicleid) { vehiclecallsign[vehicleid] = 0; if (CoreVehicles[vehicleid][vehTemporary]) { CoreVehicles[vehicleid][vehTemporary] = false; DestroyVehicle(vehicleid); } for (new i = 0; i != MAX_CRATES; i ++) if (CrateData[i][crateExists] && CrateData[i][crateVehicle] == vehicleid) { Crate_Delete(i); } if (IsValidObject(CoreVehicles[vehicleid][vehCrate]) && GetVehicleModel(vehicleid) == 530) DestroyObject(CoreVehicles[vehicleid][vehCrate]); ResetVehicle(vehicleid); return 1; } public OnRconLoginAttempt(ip[], password[], success) { if (!success) { foreach (new i : Player) if (!strcmp(PlayerData[i][pIP], ip, true) && PlayerData[i][pAdmin] < 6) { Kick(i); } SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: RCON login attempt failed from \"%s\".", ip); Log_Write("logs/rcon_log.txt", "[%s] RCON login attempt failed from \"%s\".", ReturnDate(), ip); } else { foreach (new i : Player) if (!strcmp(PlayerData[i][pIP], ip, true) && PlayerData[i][pAdmin] < 6) { Blacklist_Add(ip, PlayerData[i][pUsername], "Server", "Unauthorized RCON"); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s was banned for logging into RCON without authorization.", ReturnName(i, 0)); Log_Write("logs/rcon_log.txt", "[%s] %s (%s) was banned for an unauthorized RCON login.", ReturnDate(), ReturnName(i, 0), ip); break; } } return 1; } public OnPlayerStreamIn(playerid, forplayerid) { if (PlayerData[playerid][pMaskOn]) ShowPlayerNameTagForPlayer(forplayerid, playerid, 0); else ShowPlayerNameTagForPlayer(forplayerid, playerid, 1); return 1; } forward OnPlayerUseItem(playerid, itemid, name[]); public OnPlayerUseItem(playerid, itemid, name[]) { if (IsFurnitureItem(name)) { new id = House_Inside(playerid); if (id == -1) return SendErrorMessage(playerid, "You must be inside a house to place furniture."); if (!House_IsOwner(playerid, id)) return SendErrorMessage(playerid, "You can only place furniture in your own house."); static Float:x, Float:y, Float:z, Float:angle; GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, angle); x += 5.0 * floatsin(-angle, degrees); y += 5.0 * floatcos(-angle, degrees); if (Furniture_GetCount(id) > MAX_HOUSE_FURNITURE) return SendErrorMessage(playerid, "You can only have %d furniture items in your house.", MAX_HOUSE_FURNITURE); new furniture = Furniture_Add(id, name, InventoryData[playerid][itemid][invModel], x, y, z, 0.0, 0.0, angle); if (furniture == -1) return SendErrorMessage(playerid, "The server has reached the furniture limit."); Inventory_Remove(playerid, name); PlayerData[playerid][pEditFurniture] = furniture; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has deployed their \"%s\".", ReturnName(playerid, 0), name); EditDynamicObject(playerid, FurnitureData[furniture][furnitureObject]); } else if (!strcmp(name, "Magazine", true)) { cmd_usemag(playerid, "\1"); } else if (!strcmp(name, "Boombox", true)) { cmd_boombox(playerid, "place"); } else if (!strcmp(name, "Backpack", true)) { cmd_backpack(playerid, "\1"); } else if (!strcmp(name, "First Aid", true)) { cmd_usekit(playerid, "\1"); } else if (!strcmp(name, "Cellphone", true)) { cmd_phone(playerid, "\1"); } else if (!strcmp(name, "Portable Radio", true)) { SendSyntaxMessage(playerid, "Use \"/pr [text]\" to chat with your radio."); } else if (!strcmp(name, "Fuel Can", true)) { cmd_fill(playerid, "\1"); } else if (!strcmp(name, "Repair Kit", true)) { cmd_repair(playerid, "\1"); } else if (!strcmp(name, "NOS Canister", true)) { cmd_nitrous(playerid, "\1"); } else if (!strcmp(name, "Spray Can", true)) { cmd_paint(playerid, "\1"); } else if (!strcmp(name, "GPS System", true)) { cmd_gps(playerid, "\1"); } else if (!strcmp(name, "Marijuana", true)) { cmd_usedrug(playerid, "marijuana"); } else if (!strcmp(name, "Cocaine", true)) { cmd_usedrug(playerid, "cocaine"); } else if (!strcmp(name, "Heroin", true)) { cmd_usedrug(playerid, "heroin"); } else if (!strcmp(name, "Steroids", true)) { cmd_usedrug(playerid, "steroids"); } else if (!strcmp(name, "Soda", true)) { cmd_drink(playerid, "soda"); } else if (!strcmp(name, "Water Bottle", true)) { cmd_drink(playerid, "water"); } else if (!strcmp(name, "Frozen Pizza", true)) { cmd_cook(playerid, "pizza"); } else if (!strcmp(name, "Frozen Burger", true)) { cmd_cook(playerid, "burger"); } else if (!strcmp(name, "Armored Vest", true)) { cmd_vest(playerid, "\1"); } else if (!strcmp(name, "Ammo Cartridge", true)) { cmd_ammo(playerid, "\1"); } else if (!strcmp(name, "Colt 45", true)) { EquipWeapon(playerid, "Colt 45"); } else if (!strcmp(name, "Desert Eagle", true)) { EquipWeapon(playerid, "Desert Eagle"); } else if (!strcmp(name, "Shotgun", true)) { EquipWeapon(playerid, "Shotgun"); } else if (!strcmp(name, "Micro SMG", true)) { EquipWeapon(playerid, "Micro SMG"); } else if (!strcmp(name, "Tec-9", true)) { EquipWeapon(playerid, "Tec-9"); } else if (!strcmp(name, "MP5", true)) { EquipWeapon(playerid, "MP5"); } else if (!strcmp(name, "AK-47", true)) { EquipWeapon(playerid, "AK-47"); } else if (!strcmp(name, "Rifle", true)) { EquipWeapon(playerid, "Rifle"); } else if (!strcmp(name, "Sniper", true)) { EquipWeapon(playerid, "Sniper"); } else if (!strcmp(name, "Golf Club", true)) { EquipWeapon(playerid, "Golf Club"); } else if (!strcmp(name, "Knife", true)) { EquipWeapon(playerid, "Knife"); } else if (!strcmp(name, "Shovel", true)) { EquipWeapon(playerid, "Shovel"); } else if (!strcmp(name, "Katana", true)) { EquipWeapon(playerid, "Katana"); } else if (!strcmp(name, "Marijuana Seeds", true)) { cmd_plant(playerid, "Weed"); } else if (!strcmp(name, "Cocaine Seeds", true)) { cmd_plant(playerid, "Cocaine"); } else if (!strcmp(name, "Heroin Opium Seeds", true)) { cmd_plant(playerid, "Heroin"); } else if (!strcmp(name, "Cooked Pizza", true)) { if (PlayerData[playerid][pHunger] > 90) return SendErrorMessage(playerid, "You are not hungry right now."); if (!IsPlayerAttachedObjectSlotUsed(playerid, 4)) { SetPlayerAttachedObject(playerid, 4, 2702, 6, 0.173041, 0.049197, 0.056789, 0.000000, 274.166107, 299.057983, 1.000000, 1.000000, 1.000000); SetTimerEx("RemoveAttachedObject", 3000, false, "dd", playerid, 4); } PlayerData[playerid][pHunger] = (PlayerData[playerid][pHunger] + 15 > 100) ? (100) : (PlayerData[playerid][pHunger] + 15); Inventory_Remove(playerid, "Cooked Pizza"); ApplyAnimation(playerid, "FOOD", "EAT_Burger", 4.1, 0, 0, 0, 0, 0, 1); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes a slice of pizza and eats it.", ReturnName(playerid, 0)); } else if (!strcmp(name, "Cooked Burger", true)) { if (PlayerData[playerid][pHunger] > 90) return SendErrorMessage(playerid, "You are not hungry right now."); if (!IsPlayerAttachedObjectSlotUsed(playerid, 4)) { SetPlayerAttachedObject(playerid, 4, 2703, 6, 0.078287, 0.019677, -0.001004, 0.000000, 0.000000, 0.000000, 1.000000, 1.000000, 1.000000); SetTimerEx("RemoveAttachedObject", 3000, false, "dd", playerid, 4); } PlayerData[playerid][pHunger] = (PlayerData[playerid][pHunger] + 20 > 100) ? (100) : (PlayerData[playerid][pHunger] + 20); Inventory_Remove(playerid, "Cooked Burger"); ApplyAnimation(playerid, "FOOD", "EAT_Burger", 4.1, 0, 0, 0, 0, 0, 1); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes a cooked burger and eats it.", ReturnName(playerid, 0)); } else if (!strcmp(name, "Chicken", true)) { if (PlayerData[playerid][pHunger] > 90) return SendErrorMessage(playerid, "You are not hungry right now."); PlayerData[playerid][pHunger] = (PlayerData[playerid][pHunger] + 25 > 100) ? (100) : (PlayerData[playerid][pHunger] + 25); Inventory_Remove(playerid, "Chicken"); ApplyAnimation(playerid, "VENDING", "VEND_Eat_P", 4.1, 0, 0, 0, 0, 0, 1); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes a piece of chicken and eats it.", ReturnName(playerid, 0)); } return 1; } public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ) { if ((weaponid >= 22 && weaponid <= 38) && hittype == BULLET_HIT_TYPE_OBJECT && PlayerData[playerid][pRangeBooth] != -1 && hitid == g_BoothObject[PlayerData[playerid][pRangeBooth]]) { static string[128]; PlayerPlaySound(playerid, 6401, 0.0, 0.0, 0.0); PlayerData[playerid][pTargets]++; DestroyObject(g_BoothObject[PlayerData[playerid][pRangeBooth]]); format(string, sizeof(string), "~b~Targets:~w~ %d/10", PlayerData[playerid][pTargets]); PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][81], string); SetTimerEx("UpdateBooth", 3000, false, "dd", playerid, PlayerData[playerid][pRangeBooth]); } if (weaponid == 23 && PlayerData[playerid][pTazer] && GetFactionType(playerid) == FACTION_POLICE) { PlayerPlaySoundEx(playerid, 6003); } if ((weaponid >= 22 && weaponid <= 38) && hittype == BULLET_HIT_TYPE_PLAYER && hitid != INVALID_PLAYER_ID) { if (PlayerData[hitid][pRangeBooth] != -1 || PlayerData[hitid][pHospital] != -1) return 0; if (PlayerData[hitid][pDrugUsed] == 2) { new Float:damage = floatdiv(g_arrWeaponDamage[weaponid], 2), Float:health; GetPlayerHealth(hitid, health); SetPlayerHealth(hitid, floatsub(health, damage)); return 0; } } if ((22 <= weaponid <= 38) && (GetPlayerWeaponState(playerid) == WEAPONSTATE_LAST_BULLET && GetPlayerAmmo(playerid) == 1) && !IsPlayerAttachedObjectSlotUsed(playerid, 4)) { switch (weaponid) { case 22: Inventory_Add(playerid, "Colt 45", 346); case 24: Inventory_Add(playerid, "Desert Eagle", 348); case 25: Inventory_Add(playerid, "Shotgun", 349); case 28: Inventory_Add(playerid, "Micro SMG", 352); case 29: Inventory_Add(playerid, "MP5", 353); case 30: Inventory_Add(playerid, "AK-47", 355); case 32: Inventory_Add(playerid, "Tec-9", 372); case 33: Inventory_Add(playerid, "Rifle", 357); case 34: Inventory_Add(playerid, "Sniper", 358); } ResetWeapon(playerid, weaponid); HoldWeapon(playerid, weaponid); SendServerMessage(playerid, "You must attach a magazine to this weapon (press 'N' to put away)."); } return 1; } public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid) { if (PlayerData[playerid][pFirstAid]) { SendClientMessage(playerid, COLOR_LIGHTRED, "[WARNING]:{FFFFFF} Your first aid kit is no longer in effect as you took damage."); PlayerData[playerid][pFirstAid] = 0; KillTimer(PlayerData[playerid][pAidTimer]); } return 1; } public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid) { if (damagedid != INVALID_PLAYER_ID) { PlayerData[damagedid][pLastShot] = playerid; PlayerData[damagedid][pShotTime] = gettime(); if (IsBleedableWeapon(weaponid) && !PlayerData[damagedid][pBleeding] && ReturnArmour(damagedid) < 1 && PlayerData[playerid][pRangeBooth] == -1 && PlayerData[damagedid][pHospital] == -1) { if (!PlayerHasTazer(playerid) && !PlayerHasBeanBag(playerid)) { PlayerData[damagedid][pBleeding] = 1; PlayerData[damagedid][pBleedTime] = 10; CreateBlood(damagedid); SetTimerEx("HidePlayerBox", 500, false, "dd", damagedid, _:ShowPlayerBox(damagedid, 0xFF000066)); } } if (PlayerData[playerid][pDrugUsed] == 4 && (weaponid >= 0 && weaponid <= 15)) { SetPlayerHealth(damagedid, ReturnHealth(damagedid) - 6); } if (GetFactionType(playerid) == FACTION_POLICE && PlayerData[playerid][pTazer] && PlayerData[damagedid][pStunned] < 1 && weaponid == 23) { if (GetPlayerState(damagedid) != PLAYER_STATE_ONFOOT) return SendErrorMessage(playerid, "The player must be onfoot to be stunned."); if (GetPlayerDistanceFromPlayer(playerid, damagedid) > 10.0) return SendErrorMessage(playerid, "You must be closer to stun the player."); new string[64]; format(string, sizeof(string), "You've been ~r~stunned~w~ by %s.", ReturnName(playerid, 0)); PlayerData[damagedid][pStunned] = 10; TogglePlayerControllable(damagedid, 0); ApplyAnimation(damagedid, "CRACK", "crckdeth4", 4.0, 0, 0, 0, 1, 0, 1); ShowPlayerFooter(damagedid, string); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has stunned %s with their tazer.", ReturnName(playerid, 0), ReturnName(damagedid, 0)); } if (GetFactionType(playerid) == FACTION_POLICE && PlayerData[playerid][pBeanBag] && PlayerData[damagedid][pStunned] < 1 && weaponid == 25) { if (GetPlayerState(damagedid) != PLAYER_STATE_ONFOOT) return SendErrorMessage(playerid, "The player must be onfoot to be stunned."); if (GetPlayerDistanceFromPlayer(playerid, damagedid) > 10.0) return SendErrorMessage(playerid, "You must be closer to shoot the player."); new string[64]; format(string, sizeof(string), "You've been ~r~stunned~w~ by %s.", ReturnName(playerid, 0)); PlayerData[damagedid][pStunned] = 10; TogglePlayerControllable(damagedid, 0); ApplyAnimation(damagedid, "CRACK", "crckdeth4", 4.0, 0, 0, 0, 1, 0, 1); ShowPlayerFooter(damagedid, string); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has stunned %s with their beanbag shotgun.", ReturnName(playerid, 0), ReturnName(damagedid, 0)); } } return 1; } public OnPlayerDeath(playerid, killerid, reason) { if (killerid != INVALID_PLAYER_ID) { if (1 <= reason <= 46) Log_Write("logs/kill_log.txt", "[%s] %s has killed %s (%s).", ReturnDate(), ReturnName(killerid), ReturnName(playerid), ReturnWeaponName(reason)); else Log_Write("logs/kill_log.txt", "[%s] %s has killed %s (reason %d).", ReturnDate(), ReturnName(killerid), ReturnName(playerid), reason); if (reason == 50 && killerid != INVALID_PLAYER_ID) SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has killed %s by heli-blading.", ReturnName(killerid, 0), ReturnName(playerid, 0)); if (reason == 29 && killerid != INVALID_PLAYER_ID && GetPlayerState(killerid) == PLAYER_STATE_DRIVER) SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has killed %s by driver shooting.", ReturnName(killerid, 0), ReturnName(playerid, 0)); } return 1; } public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { if (PlayerData[playerid][pTutorial] || PlayerData[playerid][pHospital] != -1 || !IsPlayerSpawned(playerid) || PlayerData[playerid][pCuffed] || PlayerData[playerid][pInjured]) return 0; if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_CUFFED && newkeys & KEY_JUMP && !(oldkeys & KEY_JUMP)) ApplyAnimation(playerid, "GYMNASIUM", "gym_jog_falloff", 4.0, 0, 1, 1, 0, 0, 1); if (newkeys & KEY_CROUCH && IsPlayerInAnyVehicle(playerid)) { cmd_open(playerid, "\1"); } if (newkeys & KEY_CROUCH && IsPlayerInRangeOfPoint(playerid, 1.5, -226.4219, 1408.4594, 26.7734) && PlayerData[playerid][pTutorialStage] == 1) { DisablePlayerCheckpoint(playerid); PlayerData[playerid][pTutorialStage] = 2; SendClientMessage(playerid, COLOR_SERVER, "Press 'N' to pickup any nearby item whilst crouched."); } if (newkeys & KEY_YES && IsPlayerSpawned(playerid)) { if (PlayerData[playerid][pJailTime] > 0) return SendErrorMessage(playerid, "You can't open your inventory whilst jailed."); if (PlayerData[playerid][pCuffed] > 0 || GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_CARRY) return SendErrorMessage(playerid, "You can't open your inventory at the moment."); OpenInventory(playerid); } if (newkeys & KEY_SPRINT && IsPlayerSpawned(playerid) && PlayerData[playerid][pLoopAnim]) { ClearAnimations(playerid); HidePlayerFooter(playerid); PlayerData[playerid][pLoopAnim] = false; } if (newkeys & KEY_FIRE && PlayerData[playerid][pDrinking]) { if (GetPlayerAnimationIndex(playerid) != 15 && GetPlayerAnimationIndex(playerid) != 16 && !PlayerData[playerid][pDrinkTime]) { if (GetPlayerProgressBarValue(playerid, PlayerData[playerid][pDrinkBar]) <= 0.0) { SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE); DestroyPlayerProgressBar(playerid, PlayerData[playerid][pDrinkBar]); PlayerData[playerid][pDrinking] = 0; SendServerMessage(playerid, "You have finished drinking from the bottle."); } else { PlayerData[playerid][pDrinkTime] = 2; switch (PlayerData[playerid][pDrinking]) { case 1: PlayerData[playerid][pThirst] = (PlayerData[playerid][pThirst] + 5 >= 100) ? (100) : (PlayerData[playerid][pThirst] + 5); case 2: PlayerData[playerid][pThirst] = (PlayerData[playerid][pThirst] + 5 >= 100) ? (100) : (PlayerData[playerid][pThirst] + 5); } SetPlayerProgressBarValue(playerid, PlayerData[playerid][pDrinkBar], GetPlayerProgressBarValue(playerid, PlayerData[playerid][pDrinkBar]) - 10.0); } } } if (newkeys & KEY_FIRE && PlayerData[playerid][pMining] && IsPlayerNearMine(playerid)) { if (PlayerData[playerid][pMineTime] > 0 || PlayerData[playerid][pMinedRock]) return 1; new id = Job_NearestPoint(playerid); if (id != -1) { PlayerData[playerid][pMineTime] = 1; SetTimerEx("MineTime", 400, false, "d", playerid); if (PlayerData[playerid][pMineCount] < 5) { PlayerData[playerid][pMineCount]++; ApplyAnimation(playerid, "BASEBALL", "null", 4.0, 0, 1, 1, 0, 0, 1); ApplyAnimation(playerid, "BASEBALL", "BAT_4", 4.0, 0, 1, 1, 0, 0, 1); } else { PlayerData[playerid][pMinedRock] = 1; PlayerData[playerid][pMineCount] = 0; RemovePlayerAttachedObject(playerid, 4); ApplyAnimation(playerid, "BSKTBALL", "null", 4.0, 0, 1, 1, 0, 0, 1); ApplyAnimation(playerid, "BSKTBALL", "BBALL_pickup", 4.0, 0, 1, 1, 0, 0, 1); SetPlayerAttachedObject(playerid, 4, 2936, 5, 0.044377, 0.029049, 0.161334, 265.922912, 9.904896, 21.765972, 0.500000, 0.500000, 0.500000); SendServerMessage(playerid, "You have digged up a rock. Deliver it to the marker."); SetPlayerCheckpoint(playerid, JobData[id][jobDeliver][0], JobData[id][jobDeliver][1], JobData[id][jobDeliver][2], 2.5); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CARRY); } } } else if (newkeys & KEY_CTRL_BACK) { if (PlayerData[playerid][pUsedMagazine]) { new weaponid = PlayerData[playerid][pHoldWeapon]; switch (weaponid) { case 22: { HoldWeapon(playerid, 0); PlayerPlaySoundEx(playerid, 36401); Inventory_Remove(playerid, "Colt 45"); PlayReloadAnimation(playerid, weaponid); GiveWeaponToPlayer(playerid, weaponid, 17); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s holds onto the weapon and cocks it.", ReturnName(playerid, 0)); } case 24: { HoldWeapon(playerid, 0); PlayerPlaySoundEx(playerid, 36401); Inventory_Remove(playerid, "Desert Eagle"); PlayReloadAnimation(playerid, weaponid); GiveWeaponToPlayer(playerid, weaponid, 7); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s holds onto the weapon and cocks it.", ReturnName(playerid, 0)); } case 25: { HoldWeapon(playerid, 0); PlayerPlaySoundEx(playerid, 36401); Inventory_Remove(playerid, "Shotgun"); PlayReloadAnimation(playerid, weaponid); GiveWeaponToPlayer(playerid, weaponid, 8); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s holds onto the weapon and pumps it.", ReturnName(playerid, 0)); } case 28: { HoldWeapon(playerid, 0); PlayerPlaySoundEx(playerid, 36401); Inventory_Remove(playerid, "Micro SMG"); PlayReloadAnimation(playerid, weaponid); GiveWeaponToPlayer(playerid, weaponid, 50); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s holds onto the weapon and cocks it.", ReturnName(playerid, 0)); } case 29: { HoldWeapon(playerid, 0); PlayerPlaySoundEx(playerid, 36401); Inventory_Remove(playerid, "MP5"); PlayReloadAnimation(playerid, weaponid); GiveWeaponToPlayer(playerid, weaponid, 30); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s holds onto the weapon and cocks it.", ReturnName(playerid, 0)); } case 32: { HoldWeapon(playerid, 0); PlayerPlaySoundEx(playerid, 36401); Inventory_Remove(playerid, "Tec-9"); PlayReloadAnimation(playerid, weaponid); GiveWeaponToPlayer(playerid, weaponid, 50); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s holds onto the weapon and cocks it.", ReturnName(playerid, 0)); } case 30: { HoldWeapon(playerid, 0); PlayerPlaySoundEx(playerid, 36401); Inventory_Remove(playerid, "AK-47"); PlayReloadAnimation(playerid, weaponid); GiveWeaponToPlayer(playerid, weaponid, 30); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s holds onto the weapon and cocks it.", ReturnName(playerid, 0)); } case 33: { HoldWeapon(playerid, 0); PlayerPlaySoundEx(playerid, 36401); Inventory_Remove(playerid, "Rifle"); PlayReloadAnimation(playerid, weaponid); GiveWeaponToPlayer(playerid, weaponid, 5); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s holds onto the weapon and cocks it.", ReturnName(playerid, 0)); } case 34: { HoldWeapon(playerid, 0); PlayerPlaySoundEx(playerid, 36401); Inventory_Remove(playerid, "Sniper"); PlayReloadAnimation(playerid, weaponid); GiveWeaponToPlayer(playerid, weaponid, 5); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s holds onto the weapon and cocks it.", ReturnName(playerid, 0)); } } return 1; } } else if (newkeys & KEY_NO && GetPlayerState(playerid) == PLAYER_STATE_ONFOOT) { static string[320]; if (PlayerData[playerid][pTutorialStage] == 2 && IsPlayerInRangeOfPoint(playerid, 1.5, -226.4219, 1408.4594, 26.7734) && GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_DUCK) { Inventory_Add(playerid, "Demo Soda", 1543); DestroyPlayerObject(playerid, PlayerData[playerid][pTutorialObject]); PlayerData[playerid][pTutorialStage] = 3; SendClientMessage(playerid, COLOR_SERVER, "Press 'Y' to open your inventory and select the soda bottle."); return 1; } if (PlayerData[playerid][pHoldWeapon] > 0) { if (PlayerData[playerid][pUsedMagazine]) Inventory_Add(playerid, "Magazine", 2039); HoldWeapon(playerid, 0); return SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s puts away their empty weapon.", ReturnName(playerid, 0)); } if (PlayerData[playerid][pLoadCrate]) { for (new i = 1; i != MAX_VEHICLES; i ++) if (IsPlayerNearBoot(playerid, i)) { if (!IsLoadableVehicle(i)) return SendErrorMessage(playerid, "You can't load crates into this vehicle."); if (CoreVehicles[i][vehLoadType] != 0 && CoreVehicles[i][vehLoadType] != PlayerData[playerid][pLoadType]) return SendErrorMessage(playerid, "This vehicle is already loaded with something else."); if (CoreVehicles[i][vehLoads] >= 6) return SendErrorMessage(playerid, "This vehicle can only hold up to 6 crates."); CoreVehicles[i][vehLoads]++; CoreVehicles[i][vehLoadType] = PlayerData[playerid][pLoadType]; ApplyAnimation(playerid, "CARRY", "putdwn", 4.0, 0, 0, 0, 0, 0); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s drops a crate into the back of the %s.", ReturnName(playerid, 0), ReturnVehicleName(i)); if (CoreVehicles[i][vehLoads] == 6) { DisablePlayerCheckpoint(playerid); if (PlayerData[playerid][pShipment] != -1) { PlayerData[playerid][pDeliverShipment] = 1; SendServerMessage(playerid, "You have loaded all the crates. Type /unload at the marker."); SetPlayerCheckpoint(playerid, BusinessData[PlayerData[playerid][pShipment]][bizDeliver][0], BusinessData[PlayerData[playerid][pShipment]][bizDeliver][1], BusinessData[PlayerData[playerid][pShipment]][bizDeliver][2], 3.0); } else switch (PlayerData[playerid][pLoadType]) { case 1: SendServerMessage(playerid, "You have loaded all the crates. Type /unload at any retail store."); case 2: SendServerMessage(playerid, "You have loaded all the crates. Type /unload at any weapon store."); case 3: SendServerMessage(playerid, "You have loaded all the crates. Type /unload at any clothing store."); case 4: SendServerMessage(playerid, "You have loaded all the crates. Type /unload at any fast food store."); case 5: SendServerMessage(playerid, "You have loaded all the crates. Type /unload at any gas station."); case 6: SendServerMessage(playerid, "You have loaded all the crates. Type /unload at any furniture store."); } PlayerData[playerid][pLoading] = 0; PlayerData[playerid][pLoadType] = 0; } PlayerData[playerid][pLoadCrate] = 0; RemovePlayerAttachedObject(playerid, 4); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE); return 1; } } for (new i = 0; i != MAX_BACKPACKS; i ++) if (BackpackData[i][backpackExists] && !BackpackData[i][backpackPlayer] && IsPlayerInRangeOfPoint(playerid, 2.0, BackpackData[i][backpackPos][0], BackpackData[i][backpackPos][1], BackpackData[i][backpackPos][2])) { return Backpack_Items(playerid, i); } if (PlayerData[playerid][pCarryTrash]) { for (new i = 1; i != MAX_VEHICLES; i ++) if (GetVehicleModel(i) == 408 && IsPlayerNearBoot(playerid, i)) { if (CoreVehicles[i][vehTrash] >= 10) return SendErrorMessage(playerid, "This vehicle cannot hold anymore trash (limit: 10)."); CoreVehicles[i][vehTrash]++; RemovePlayerAttachedObject(playerid, 4); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has loaded a trash bag into the Trashmaster.", ReturnName(playerid, 0)); PlayerData[playerid][pCarryTrash] = 0; break; } } if (PlayerData[playerid][pCarryCrate] != -1) { for (new i = 1; i != MAX_VEHICLES; i ++) if (IsLoadableVehicle(i) && IsPlayerNearBoot(playerid, i)) { if (GetVehicleCrates(i) >= GetMaxCrates(i)) return SendErrorMessage(playerid, "This vehicle cannot hold anymore crates (limit: %d).", GetMaxCrates(i)); CrateData[PlayerData[playerid][pCarryCrate]][crateVehicle] = i; SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE); RemovePlayerAttachedObject(playerid, 4); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has loaded a crate into the %s.", ReturnName(playerid, 0), ReturnVehicleName(i)); PlayerData[playerid][pCarryCrate] = -1; ApplyAnimation(playerid, "CARRY", "putdwn", 4.0, 0, 0, 0, 0, 0); break; } } else if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_DUCK) { new count = 0, id = Item_Nearest(playerid); if (id != -1) { string = ""; for (new i = 0; i < MAX_DROPPED_ITEMS; i ++) if (count < MAX_LISTED_ITEMS && DroppedItems[i][droppedModel] && IsPlayerInRangeOfPoint(playerid, 1.5, DroppedItems[i][droppedPos][0], DroppedItems[i][droppedPos][1], DroppedItems[i][droppedPos][2]) && GetPlayerInterior(playerid) == DroppedItems[i][droppedInt] && GetPlayerVirtualWorld(playerid) == DroppedItems[i][droppedWorld]) { NearestItems[playerid][count++] = i; strcat(string, DroppedItems[i][droppedItem]); strcat(string, "\n"); } if (count == 1) { if (DroppedItems[id][droppedWeapon] != 0) { if (PlayerData[playerid][pPlayingHours] < 2) return SendErrorMessage(playerid, "You must have at least 2 playing hours."); GiveWeaponToPlayer(playerid, DroppedItems[id][droppedWeapon], DroppedItems[id][droppedAmmo]); Item_Delete(id); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has picked up a %s.", ReturnName(playerid, 0), ReturnWeaponName(DroppedItems[id][droppedWeapon])); Log_Write("logs/droppick.txt", "[%s] %s picked up a %s.", ReturnDate(), ReturnName(playerid, 0), ReturnWeaponName(DroppedItems[id][droppedWeapon])); } else if (PickupItem(playerid, id)) { format(string, sizeof(string), "~g~%s~w~ added to inventory!", DroppedItems[id][droppedItem]); ShowPlayerFooter(playerid, string); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has picked up a \"%s\".", ReturnName(playerid, 0), DroppedItems[id][droppedItem]); Log_Write("logs/droppick.txt", "[%s] %s has picked up a \"%s\".", ReturnDate(), ReturnName(playerid, 0), DroppedItems[id][droppedItem]); } else SendErrorMessage(playerid, "You don't have any room in your inventory."); } else Dialog_Show(playerid, PickupItems, DIALOG_STYLE_LIST, "Pickup Items", string, "Pickup", "Cancel"); } } } else if (newkeys & KEY_SECONDARY_ATTACK) { static id = -1; if ((id = Vendor_Nearest(playerid)) != -1) { switch (VendorData[id][vendorType]) { case 1: { if (GetMoney(playerid) < 3) return SendErrorMessage(playerid, "You must have at least 3 dollars."); if (PlayerData[playerid][pVendorTime] > 0) return SendErrorMessage(playerid, "Please wait before purchasing from a vendor again."); if (Inventory_Count(playerid, "Cooked Burger") >= 5) return SendErrorMessage(playerid, "You have too many burgers in your inventory already."); id = Inventory_Add(playerid, "Cooked Burger", 2703); if (id != -1) { PlayerData[playerid][pVendorTime] = 3; GiveMoney(playerid, -3); ApplyAnimation(playerid, "DEALER", "shop_pay", 4.0, 0, 0, 0, 0, 0); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has purchased a burger from the vendor for $3.", ReturnName(playerid, 0)); ShowPlayerFooter(playerid, "Your ~p~burger~w~ was added to your inventory."); } } case 2: { if (GetMoney(playerid) < 2) return SendErrorMessage(playerid, "You must have at least 2 dollars."); if (PlayerData[playerid][pVendorTime] > 0) return SendErrorMessage(playerid, "Please wait before purchasing from a vendor again."); if (Inventory_Count(playerid, "Soda") >= 10) return SendErrorMessage(playerid, "You have too many soda bottles in your inventory already."); id = Inventory_Add(playerid, "Soda", 1543); if (id != -1) { PlayerData[playerid][pVendorTime] = 3; GiveMoney(playerid, -2); ApplyAnimation(playerid, "VENDING", "VEND_USE", 4.0, 0, 0, 0, 0, 0); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has purchased a soda from the vendor for $2.", ReturnName(playerid, 0)); ShowPlayerFooter(playerid, "Your ~p~soda~w~ was added to your inventory."); } } } } if (PlayerData[playerid][pRangeBooth] != -1) { Booth_Leave(playerid); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has left the shooting booth.", ReturnName(playerid, 0)); } else for (new i = 0; i < MAX_BOOTHS; i ++) if (!g_BoothUsed[i] && IsPlayerInRangeOfPoint(playerid, 1.5, arrBoothPositions[i][0], arrBoothPositions[i][1], arrBoothPositions[i][2])) { g_BoothUsed[i] = true; PlayerData[playerid][pRangeBooth] = i; UpdateWeapons(playerid); ResetPlayerWeapons(playerid); GivePlayerWeapon(playerid, 24, 15000); Booth_Refresh(playerid); PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][81], "~b~Targets:~w~ 0/10"); PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][81]); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has entered the shooting booth.", ReturnName(playerid, 0)); return 1; } if (PlayerData[playerid][pTutorialStage] == 5 && IsPlayerInRangeOfPoint(playerid, 1.5, -228.8403, 1401.1831, 27.7656)) { for (new i = 0; i < 100; i ++) { SendClientMessage(playerid, -1, ""); } SetDefaultSpawn(playerid); Dialog_Show(playerid, TutorialConfirm, DIALOG_STYLE_MSGBOX, "Tutorial", "Would you like to view the server's main tutorial?", "Yes", "No"); } if (IsPlayerInRangeOfPoint(playerid, 2.5, -204.5334, -1735.3131, 675.7687) && PlayerData[playerid][pHospitalInt] != -1) { SetPlayerPos(playerid, arrHospitalSpawns[PlayerData[playerid][pHospitalInt]][0], arrHospitalSpawns[PlayerData[playerid][pHospitalInt]][1], arrHospitalSpawns[PlayerData[playerid][pHospitalInt]][2]); SetPlayerFacingAngle(playerid, arrHospitalSpawns[PlayerData[playerid][pHospitalInt]][3]); SetPlayerInterior(playerid, 0); SetPlayerVirtualWorld(playerid, 0); SetCameraBehindPlayer(playerid); PlayerData[playerid][pHospitalInt] = -1; } else if (IsPlayerInRangeOfPoint(playerid, 2.5, 272.2939, 1388.8876, 11.1342)) { SetPlayerPosEx(playerid, 1206.8619, -1314.3546, 797.0880); SetPlayerFacingAngle(playerid, 270.0000); SetPlayerInterior(playerid, 5); SetPlayerVirtualWorld(playerid, PRISON_WORLD); SetCameraBehindPlayer(playerid); } else if (IsPlayerInRangeOfPoint(playerid, 2.5, 1206.8619, -1314.3546, 796.7880) && GetPlayerVirtualWorld(playerid) == PRISON_WORLD && !PlayerData[playerid][pJailTime]) { if (PlayerData[playerid][pFreeze]) { TogglePlayerControllable(playerid, 1); KillTimer(PlayerData[playerid][pFreezeTimer]); } SetPlayerPos(playerid, 272.2939, 1388.8876, 11.1342); SetPlayerFacingAngle(playerid, 270.0000); SetPlayerInterior(playerid, 0); SetPlayerVirtualWorld(playerid, 0); SetCameraBehindPlayer(playerid); } else if (IsPlayerInRangeOfPoint(playerid, 2.5, 1211.1923, -1354.3439, 796.7456) && GetPlayerVirtualWorld(playerid) == PRISON_WORLD) { if (PlayerData[playerid][pFreeze]) { TogglePlayerControllable(playerid, 1); KillTimer(PlayerData[playerid][pFreezeTimer]); } SetPlayerPos(playerid, 201.8927, 1437.1788, 10.5950); SetPlayerFacingAngle(playerid, 180.0000); SetPlayerInterior(playerid, 0); SetPlayerVirtualWorld(playerid, 0); SetCameraBehindPlayer(playerid); } else if (IsPlayerInRangeOfPoint(playerid, 2.5, 201.8927, 1437.1788, 10.5950)) { SetPlayerPosEx(playerid, 1211.1923, -1354.3439, 797.0456); SetPlayerFacingAngle(playerid, 0.0000); SetPlayerInterior(playerid, 5); SetPlayerVirtualWorld(playerid, PRISON_WORLD); SetCameraBehindPlayer(playerid); } for (new i = 0; i < sizeof(arrHospitalSpawns); i ++) if (IsPlayerInRangeOfPoint(playerid, 3.0, arrHospitalSpawns[i][0], arrHospitalSpawns[i][1], arrHospitalSpawns[i][2])) { SetPlayerPos(playerid, -204.5648, -1736.1201, 675.7687); SetPlayerFacingAngle(playerid, 180.0000); SetPlayerInterior(playerid, 3); SetPlayerVirtualWorld(playerid, i + 5000); SetCameraBehindPlayer(playerid); PlayerData[playerid][pHospitalInt] = i; return 1; } if ((id = Gate_Nearest(playerid)) != -1) { cmd_open(playerid, "\1"); } if ((id = House_Nearest(playerid)) != -1) { if (HouseData[id][houseLocked]) return SendErrorMessage(playerid, "You cannot enter a locked house."); SetPlayerPos(playerid, HouseData[id][houseInt][0], HouseData[id][houseInt][1], HouseData[id][houseInt][2]); SetPlayerFacingAngle(playerid, HouseData[id][houseInt][3]); SetPlayerInterior(playerid, HouseData[id][houseInterior]); SetPlayerVirtualWorld(playerid, HouseData[id][houseID] + 5000); SetCameraBehindPlayer(playerid); PlayerData[playerid][pHouse] = HouseData[id][houseID]; return 1; } if ((id = House_Inside(playerid)) != -1 && IsPlayerInRangeOfPoint(playerid, 2.5, HouseData[id][houseInt][0], HouseData[id][houseInt][1], HouseData[id][houseInt][2])) { SetPlayerPos(playerid, HouseData[id][housePos][0], HouseData[id][housePos][1], HouseData[id][housePos][2]); SetPlayerFacingAngle(playerid, HouseData[id][housePos][3] - 180.0); SetPlayerInterior(playerid, HouseData[id][houseExterior]); SetPlayerVirtualWorld(playerid, HouseData[id][houseExteriorVW]); SetCameraBehindPlayer(playerid); PlayerData[playerid][pHouse] = -1; return 1; } if ((id = Business_Nearest(playerid)) != -1) { if (BusinessData[id][bizLocked]) return SendErrorMessage(playerid, "This business is closed by the owner."); if (PlayerData[playerid][pTask] && !PlayerData[playerid][pStoreTask]) { PlayerData[playerid][pStoreTask] = 1; Dialog_Show(playerid, ShowOnly, DIALOG_STYLE_MSGBOX, "Retail Store", "This business is a Retail Store. You can purchase many items here using the /buy command.\nThere are many useful things that you can purchase here, which are added to your inventory.\n\nThe most useful item is the GPS System, as this device allows you to find what you need.\nYou can leave this business at any time by pressing the 'F' key at the door.", "Close", ""); if (IsTaskCompleted(playerid)) { PlayerData[playerid][pTask] = 0; ShowPlayerFooter(playerid, "You have ~g~completed~w~ all your tasks!"); } } SetPlayerPos(playerid, BusinessData[id][bizInt][0], BusinessData[id][bizInt][1], BusinessData[id][bizInt][2]); SetPlayerFacingAngle(playerid, BusinessData[id][bizInt][3]); SetPlayerInterior(playerid, BusinessData[id][bizInterior]); SetPlayerVirtualWorld(playerid, BusinessData[id][bizID] + 6000); SetCameraBehindPlayer(playerid); PlayerData[playerid][pBusiness] = BusinessData[id][bizID]; if (strlen(BusinessData[id][bizMessage]) && strcmp(BusinessData[id][bizMessage], "NULL", true)) { SendClientMessage(playerid, COLOR_DARKBLUE, BusinessData[id][bizMessage]); } return 1; } if ((id = Business_Inside(playerid)) != -1 && IsPlayerInRangeOfPoint(playerid, 2.5, BusinessData[id][bizInt][0], BusinessData[id][bizInt][1], BusinessData[id][bizInt][2])) { SetPlayerPos(playerid, BusinessData[id][bizPos][0], BusinessData[id][bizPos][1], BusinessData[id][bizPos][2]); SetPlayerFacingAngle(playerid, BusinessData[id][bizPos][3] - 180.0); SetPlayerInterior(playerid, BusinessData[id][bizExterior]); SetPlayerVirtualWorld(playerid, BusinessData[id][bizExteriorVW]); SetCameraBehindPlayer(playerid); PlayerData[playerid][pBusiness] = -1; return 1; } if ((id = Entrance_Nearest(playerid)) != -1) { if (EntranceData[id][entranceLocked]) return SendErrorMessage(playerid, "This entrance is locked at the moment."); if (PlayerData[playerid][pTask]) { if (EntranceData[id][entranceType] == 2 && !PlayerData[playerid][pBankTask]) { PlayerData[playerid][pBankTask] = 1; Dialog_Show(playerid, ShowOnly, DIALOG_STYLE_MSGBOX, "Banking", "This is one of the banks of San Andreas. You can manage your bank accounts here.\nEach player has a standard bank account and a savings account for extra funds.\n\nYou can type /bank inside this building to manage either of your bank accounts.\nIf you are near any ATM machine, you can use the /atm command for your banking needs.", "Close", ""); if (IsTaskCompleted(playerid)) { PlayerData[playerid][pTask] = 0; ShowPlayerFooter(playerid, "You have ~g~completed~w~ all your tasks!"); } } else if (EntranceData[id][entranceType] == 1 && !PlayerData[playerid][pTestTask]) { PlayerData[playerid][pTestTask] = 1; Dialog_Show(playerid, ShowOnly, DIALOG_STYLE_MSGBOX, "DMV", "The DMV is where a player can attempt the driving test to obtain their license.\nYou must avoid hitting obstacles, damaging the vehicle or speeding during the test.\n\nIt is legally required to possess a driving license to drive in San Andreas.\nDriving without a license can result in several consequences by law enforcement.", "Close", ""); if (IsTaskCompleted(playerid)) { PlayerData[playerid][pTask] = 0; ShowPlayerFooter(playerid, "You have ~g~completed~w~ all your tasks!"); } } } if (EntranceData[id][entranceCustom]) SetPlayerPosEx(playerid, EntranceData[id][entranceInt][0], EntranceData[id][entranceInt][1], EntranceData[id][entranceInt][2]); else SetPlayerPos(playerid, EntranceData[id][entranceInt][0], EntranceData[id][entranceInt][1], EntranceData[id][entranceInt][2]); SetPlayerFacingAngle(playerid, EntranceData[id][entranceInt][3]); SetPlayerInterior(playerid, EntranceData[id][entranceInterior]); SetPlayerVirtualWorld(playerid, EntranceData[id][entranceWorld]); SetCameraBehindPlayer(playerid); PlayerData[playerid][pEntrance] = EntranceData[id][entranceID]; return 1; } if ((id = Entrance_Inside(playerid)) != -1 && IsPlayerInRangeOfPoint(playerid, 2.5, EntranceData[id][entranceInt][0], EntranceData[id][entranceInt][1], EntranceData[id][entranceInt][2])) { if (EntranceData[id][entranceCustom]) SetPlayerPosEx(playerid, EntranceData[id][entrancePos][0], EntranceData[id][entrancePos][1], EntranceData[id][entrancePos][2]); else SetPlayerPosEx(playerid, EntranceData[id][entrancePos][0], EntranceData[id][entrancePos][1], EntranceData[id][entrancePos][2]); SetPlayerFacingAngle(playerid, EntranceData[id][entrancePos][3] - 180.0); SetPlayerInterior(playerid, EntranceData[id][entranceExterior]); SetPlayerVirtualWorld(playerid, EntranceData[id][entranceExteriorVW]); SetCameraBehindPlayer(playerid); PlayerData[playerid][pEntrance] = Entrance_GetLink(playerid); return 1; } if ((id = Crate_Nearest(playerid)) != -1 && PlayerData[playerid][pCarryCrate] == -1 && !IsCrateInUse(id)) { // If the crate is within a stack, this function below // will get the highest crate on the stack. if ((id = Crate_Highest(id)) == -1) id = Crate_Nearest(playerid); ApplyAnimation(playerid, "CARRY", "liftup", 4.1, 0, 0, 0, 0, 0, 1); PlayerData[playerid][pCarryCrate] = id; SetPlayerAttachedObject(playerid, 4, 964, 1, -0.157020, 0.413313, 0.000000, 0.000000, 88.000000, 180.000000, 0.500000, 0.500000, 0.500000); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s reaches down and picks up a crate.", ReturnName(playerid, 0)); SendServerMessage(playerid, "You have picked up a crate. Load it in a vehicle using 'N'."); DestroyDynamicObject(CrateData[id][crateObject]); DestroyDynamic3DTextLabel(CrateData[id][crateText3D]); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CARRY); CrateData[id][crateObject] = INVALID_OBJECT_ID; return 1; } if (PlayerData[playerid][pCarryCrate] != -1 && GetPlayerState(playerid) == PLAYER_STATE_ONFOOT && GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_CARRY && !PlayerData[playerid][pCrafting]) { ApplyAnimation(playerid, "CARRY", "null", 4.0, 0, 0, 0, 0, 0); ApplyAnimation(playerid, "CARRY", "putdwn", 4.0, 0, 0, 0, 0, 0); Crate_Drop(playerid, 1.5); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has dropped the crate.", ReturnName(playerid, 0)); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE); return 1; } } return 1; } forward PutInsideVehicle(playerid, vehicleid); public PutInsideVehicle(playerid, vehicleid) { if (!PlayerData[playerid][pDrivingTest]) return 0; RemoveFromVehicle(vehicleid); PutPlayerInVehicle(playerid, vehicleid, 0); return 1; } public OnPlayerExitVehicle(playerid, vehicleid) { if (IsPlayerNPC(playerid)) return 1; if (PlayerData[playerid][pTaxiDuty]) { foreach (new i : Player) if (PlayerData[i][pTaxiPlayer] == playerid && IsPlayerInVehicle(i, GetPlayerVehicleID(playerid))) { LeaveTaxi(i, playerid); } SetPlayerColor(playerid, DEFAULT_COLOR); PlayerData[playerid][pTaxiDuty] = false; SendServerMessage(playerid, "You are no longer on taxi duty!"); } if (PlayerData[playerid][pDrivingTest]) { SetTimerEx("PutInsideVehicle", 500, false, "dd", playerid, vehicleid); Dialog_Show(playerid, LeaveTest, DIALOG_STYLE_MSGBOX, "Confirm Test Leave", "Warning: Are you sure you want to exit the driving test?", "Yes", "No"); } if (PlayerData[playerid][pJob] == JOB_UNLOADER && GetVehicleModel(vehicleid) == 530) { CoreVehicles[vehicleid][vehLoadType] = 0; DestroyObject(CoreVehicles[vehicleid][vehCrate]); CoreVehicles[vehicleid][vehCrate] = INVALID_OBJECT_ID; DisablePlayerCheckpoint(playerid); } return 1; } public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { if (IsPlayerNPC(playerid)) return 1; if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_CUFFED || GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_CARRY || PlayerData[playerid][pInjured] || PlayerData[playerid][pFirstAid]) { ClearAnimations(playerid); return 0; } new id = Car_GetID(vehicleid); if (!ispassenger && id != -1 && CarData[id][carFaction] > 0 && GetFactionType(playerid) != CarData[id][carFaction]) { ClearAnimations(playerid); return SendErrorMessage(playerid, "You don't have the keys to this vehicle."); } return 1; } public OnPlayerEnterCheckpoint(playerid) { if (PlayerData[playerid][pTutorialStage]) { DisablePlayerCheckpoint(playerid); return 1; } if(TruckingCheck[playerid] >= 1 && PlayerData[playerid][pUnloading] == -1) { if (!IsPlayerInAnyVehicle(playerid)) { SendErrorMessage(playerid, "You're not in a vehicle"); return 1; } new vehicleid = GetPlayerVehicleID(playerid); if (!IsLoadableVehicle(vehicleid)) { SendErrorMessage(playerid, "You're not in a delivery vehicle."); } new string[180]; format(string, sizeof(string), "You have earned $%d from the courier mission!", TruckingCheck[playerid]); GiveMoney(playerid, TruckingCheck[playerid]); TruckingCheck[playerid] = 0; SendClientMessageEx(playerid, COLOR_LIGHTYELLOW, string); DisablePlayerCheckpoint(playerid); RespawnVehicle(vehicleid); } if (PlayerData[playerid][pCP]) { DisablePlayerCheckpoint(playerid); PlayerData[playerid][pCP] = 0; } if (PlayerData[playerid][pTask]) { new id = -1; if ((id = Entrance_Nearest(playerid)) != -1 && EntranceData[id][entranceType] == 2 && !PlayerData[playerid][pBankTask]) ShowPlayerFooter(playerid, "Press ~y~'F'~w~ to enter this bank."); if ((id = Business_Nearest(playerid)) != -1 && BusinessData[id][bizType] == 1 && !PlayerData[playerid][pStoreTask]) ShowPlayerFooter(playerid, "Press ~y~'F'~w~ to enter this retail store."); if ((id = Entrance_Nearest(playerid)) != -1 && EntranceData[id][entranceType] == 1 && !PlayerData[playerid][pTestTask]) ShowPlayerFooter(playerid, "Press ~y~'F'~w~ to enter this DMV."); DisablePlayerCheckpoint(playerid); } if (PlayerData[playerid][pDrivingTest]) { PlayerData[playerid][pTestStage]++; if (PlayerData[playerid][pTestStage] < sizeof(g_arrDrivingCheckpoints)) { SetPlayerCheckpoint(playerid, g_arrDrivingCheckpoints[PlayerData[playerid][pTestStage]][0], g_arrDrivingCheckpoints[PlayerData[playerid][pTestStage]][1], g_arrDrivingCheckpoints[PlayerData[playerid][pTestStage]][2], 3.0); } else { static Float:health; GetVehicleHealth(GetPlayerVehicleID(playerid), health); if (health < 950.0) SendErrorMessage(playerid, "You have failed the driving test - the vehicle was damaged!"); else { GiveMoney(playerid, -50); ShowPlayerFooter(playerid, "You've been charged ~r~$50~w~ for the test."); Inventory_Add(playerid, "Driving License", 1581); SendServerMessage(playerid, "You have passed the driving test and received your license."); } CancelDrivingTest(playerid); } } else { new vehicleid = GetPlayerVehicleID(playerid), Float:health; if (PlayerData[playerid][pWaypoint]) { PlayerData[playerid][pWaypoint] = 0; DisablePlayerCheckpoint(playerid); PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][69]); } else if (PlayerData[playerid][pJob] == JOB_COURIER && !IsPlayerInAnyVehicle(playerid)) { if (PlayerData[playerid][pLoading] && !PlayerData[playerid][pLoadCrate] && Job_NearestPoint(playerid) != -1) { PlayerData[playerid][pLoadCrate] = 1; SetPlayerAttachedObject(playerid, 4, 3014, 1, 0.038192, 0.371544, 0.055191, 0.000000, 90.000000, 357.668670, 1.000000, 1.000000, 1.000000); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CARRY); ApplyAnimation(playerid, "CARRY", "liftup", 4.1, 0, 0, 0, 0, 0, 1); ShowPlayerFooter(playerid, "Press ~y~'N'~w~ near a truck to load the crate."); } else if (PlayerData[playerid][pUnloading] != -1) { if (!PlayerData[playerid][pLoadCrate]) { PlayerData[playerid][pLoadCrate] = 1; ApplyAnimation(playerid, "CARRY", "liftup", 4.1, 0, 0, 0, 0, 0, 1); SetPlayerAttachedObject(playerid, 4, 3014, 1, 0.038192, 0.371544, 0.055191, 0.000000, 90.000000, 357.668670, 1.000000, 1.000000, 1.000000); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CARRY); SetPlayerCheckpoint(playerid, BusinessData[PlayerData[playerid][pUnloading]][bizPos][0], BusinessData[PlayerData[playerid][pUnloading]][bizPos][1], BusinessData[PlayerData[playerid][pUnloading]][bizPos][2], 1.0); ShowPlayerFooter(playerid, "Deliver the crate to the ~r~checkpoint."); CoreVehicles[PlayerData[playerid][pUnloadVehicle]][vehLoads]--; } else { static Float:fX, Float:fY, Float:fZ, string[64]; PlayerData[playerid][pLoadCrate] = 0; ApplyAnimation(playerid, "CARRY", "putdwn", 4.1, 0, 0, 0, 0, 0, 1); RemovePlayerAttachedObject(playerid, 4); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE); switch (CoreVehicles[PlayerData[playerid][pUnloadVehicle]][vehLoadType]) { case 1: { TruckingCheck[playerid] += 35; //GiveMoney(playerid, 35); ShowPlayerFooter(playerid, "~g~$35~w~ has been added to your check."); } case 2: { TruckingCheck[playerid] += 40; //GiveMoney(playerid, 40); ShowPlayerFooter(playerid, "~g~$40~w~ has been added to your check."); } case 3: { TruckingCheck[playerid] += 30; //GiveMoney(playerid, 30); ShowPlayerFooter(playerid, "~g~$30~w~ has been added to your check."); } case 4: { TruckingCheck[playerid] += 35; //GiveMoney(playerid, 35); ShowPlayerFooter(playerid, "~g~$35~w~ has been added to your check."); } case 5: { TruckingCheck[playerid] += 40; //GiveMoney(playerid, 40); ShowPlayerFooter(playerid, "~g~$40~w~ has been added to your check."); } case 6: { TruckingCheck[playerid] += 35; //GiveMoney(playerid, 35); ShowPlayerFooter(playerid, "~g~$35~w~ has been added to your check."); } } if (CoreVehicles[PlayerData[playerid][pUnloadVehicle]][vehLoadType] == 5) { for (new i = 0; i < MAX_GAS_PUMPS; i ++) if (PumpData[i][pumpExists] && PumpData[i][pumpBusiness] == PlayerData[playerid][pUnloading]) { PumpData[i][pumpFuel] += 100; format(string, sizeof(string), "[Gas Pump: %d]\n{FFFFFF}Fuel Left: %d liters", i, PumpData[i][pumpFuel]); UpdateDynamic3DTextLabelText(PumpData[i][pumpText3D], COLOR_DARKBLUE, string); Pump_Save(i); } } else { BusinessData[PlayerData[playerid][pUnloading]][bizProducts] += 20; Business_Save(PlayerData[playerid][pUnloading]); } if (CoreVehicles[PlayerData[playerid][pUnloadVehicle]][vehLoads] > 0) { GetVehicleBoot(PlayerData[playerid][pUnloadVehicle], fX, fY, fZ); SetPlayerCheckpoint(playerid, fX, fY, fZ, 1.0); } else { CoreVehicles[PlayerData[playerid][pUnloadVehicle]][vehLoads] = 0; CoreVehicles[PlayerData[playerid][pUnloadVehicle]][vehLoadType] = 0; PlayerData[playerid][pUnloading] = -1; PlayerData[playerid][pUnloadVehicle] = INVALID_VEHICLE_ID; DisablePlayerCheckpoint(playerid); SendServerMessage(playerid, "You have delivered all the crates from the vehicle."); SendServerMessage(playerid, "Deliver your truck to the checkpoint to get paid."); SetPlayerCheckpoint(playerid, 2521.0376, -2090.3279, 13.4125, 5.0); if (PlayerData[playerid][pShipment] != -1) { foreach (new i : Player) if (Business_IsOwner(i, PlayerData[playerid][pShipment])) { SendServerMessage(playerid, "%s has delivered your shipment to %s.", ReturnName(playerid, 0), BusinessData[PlayerData[playerid][pShipment]][bizName]); } BusinessData[PlayerData[playerid][pShipment]][bizShipment] = 0; Business_Save(PlayerData[playerid][pShipment]); PlayerData[playerid][pShipment] = -1; PlayerData[playerid][pDeliverShipment] = 0; } } } } } else if (PlayerData[playerid][pJob] == JOB_MINER && PlayerData[playerid][pMinedRock] && GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_CARRY) { new money = random(20) + 5; SendServerMessage(playerid, "You have earned $%d for the rock.", money); GiveMoney(playerid, money); PlayerData[playerid][pMinedRock] = 0; PlayerData[playerid][pMineCount] = 0; DisablePlayerCheckpoint(playerid); RemovePlayerAttachedObject(playerid, 4); SetPlayerAttachedObject(playerid, 4, 18634, 6, 0.156547, 0.039423, 0.026570, 198.109115, 6.364907, 262.997558, 1.000000, 1.000000, 1.000000); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE); } else if (PlayerData[playerid][pJob] == JOB_UNLOADER && IsPlayerInWarehouse(playerid) && GetVehicleModel(vehicleid) == 530 && CoreVehicles[vehicleid][vehLoadType] == 7) { GetVehicleHealth(vehicleid, health); CoreVehicles[vehicleid][vehLoadType] = 0; DestroyObject(CoreVehicles[vehicleid][vehCrate]); CoreVehicles[vehicleid][vehCrate] = INVALID_OBJECT_ID; DisablePlayerCheckpoint(playerid); if (health < CoreVehicles[vehicleid][vehLoadHealth]) { SendErrorMessage(playerid, "You have damaged the crate during the process."); } else { SendServerMessage(playerid, "You have unloaded a crate for $20."); GiveMoney(playerid, 20); } } else if (PlayerData[playerid][pJob] == JOB_SORTER && PlayerData[playerid][pSorting] != -1) { if (PlayerData[playerid][pSortCrate]) { PlayerData[playerid][pSortCrate] = 0; RemovePlayerAttachedObject(playerid, 4); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE); ApplyAnimation(playerid, "CARRY", "putdwn", 4.1, 0, 0, 0, 0, 0, 1); SetPlayerCheckpoint(playerid, JobData[PlayerData[playerid][pSorting]][jobPoint][0], JobData[PlayerData[playerid][pSorting]][jobPoint][1], JobData[PlayerData[playerid][pSorting]][jobPoint][2], 1.0); GiveMoney(playerid, 10); ShowPlayerFooter(playerid, "You have earned ~g~$10~w~ for the package."); } else { SetPlayerAttachedObject(playerid, 4, 1220, 5, 0.137832, 0.176979, 0.151424, 96.305931, 185.363006, 20.328088, 0.699999, 0.800000, 0.699999); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CARRY); ApplyAnimation(playerid, "CARRY", "liftup", 4.1, 0, 0, 0, 0, 0, 1); SetPlayerCheckpoint(playerid, JobData[PlayerData[playerid][pSorting]][jobDeliver][0], JobData[PlayerData[playerid][pSorting]][jobDeliver][1], JobData[PlayerData[playerid][pSorting]][jobDeliver][2], 1.0); PlayerData[playerid][pSortCrate] = 1; ShowPlayerFooter(playerid, "Deliver the package to the ~r~marker."); } } } return 1; } public OnPlayerStateChange(playerid, newstate, oldstate) { if (IsPlayerNPC(playerid)) return 1; new vehicleid = GetPlayerVehicleID(playerid); if (newstate == PLAYER_STATE_WASTED && PlayerData[playerid][pJailTime] < 1) { for (new i = 34; i < 39; i ++) { PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][i]); } PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][82]); ShowHungerTextdraw(playerid, 0); PlayerData[playerid][pHealth] = 100.0; ResetWeapons(playerid); ResetPlayer(playerid); PlayerData[playerid][pKilled] = 1; if (!PlayerData[playerid][pInjured]) { PlayerData[playerid][pInjured] = 1; PlayerData[playerid][pInterior] = GetPlayerInterior(playerid); PlayerData[playerid][pWorld] = GetPlayerVirtualWorld(playerid); GetPlayerPos(playerid, PlayerData[playerid][pPos][0], PlayerData[playerid][pPos][1], PlayerData[playerid][pPos][2]); GetPlayerFacingAngle(playerid, PlayerData[playerid][pPos][3]); } else { TextDrawHideForPlayer(playerid, gServerTextdraws[2]); PlayerData[playerid][pInjured] = 0; PlayerData[playerid][pHospital] = GetClosestHospital(playerid); } if (PlayerData[playerid][pCallLine] != INVALID_PLAYER_ID) { SendClientMessage(PlayerData[playerid][pCallLine], COLOR_YELLOW, "[PHONE]:{FFFFFF} The line went dead..."); CancelCall(playerid); } if (PlayerData[playerid][pCarryCrate] != -1) { Crate_Drop(playerid); } } else if (oldstate == PLAYER_STATE_DRIVER) { if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_CARRY || GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_CUFFED) return RemoveFromVehicle(playerid); for (new i = 34; i < 39; i ++) PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][i]); PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][82]); } else if (newstate == PLAYER_STATE_DRIVER) { new id = Car_GetID(vehicleid); if (id != -1 && CarData[id][carFaction] > 0 && GetFactionType(playerid) != CarData[id][carFaction]) { RemovePlayerFromVehicle(playerid); return SendErrorMessage(playerid, "You don't have the keys to this vehicle."); } if (PlayerData[playerid][pJob] == JOB_GARBAGE && GetVehicleModel(vehicleid) == 408 && CoreVehicles[vehicleid][vehTrash] > 0) { new pointid = -1; if ((pointid = GetClosestJobPoint(playerid, 7)) != -1) { PlayerData[playerid][pCP] = 1; SetPlayerCheckpoint(playerid, JobData[pointid][jobPoint][0], JobData[pointid][jobPoint][1], JobData[pointid][jobPoint][2], 2.5); SendServerMessage(playerid, "This vehicle is loaded with %d trash bags (marker set to dump).", CoreVehicles[vehicleid][vehTrash]); } } if (PlayerData[playerid][pJob] == JOB_COURIER && IsLoadableVehicle(vehicleid) && CoreVehicles[vehicleid][vehLoads] > 0) { if (PlayerData[playerid][pLoading]) { DisablePlayerCheckpoint(playerid); PlayerData[playerid][pLoading] = 0; } static string[64]; switch (CoreVehicles[vehicleid][vehLoadType]) { case 1: format(string, sizeof(string), "~b~Loaded:~w~ Retail Supplies~n~~b~Loaded Crates:~w~ %d/6", CoreVehicles[vehicleid][vehLoads]); case 2: format(string, sizeof(string), "~b~Loaded:~w~ Ammunition~n~~b~Loaded Crates:~w~ %d/6", CoreVehicles[vehicleid][vehLoads]); case 3: format(string, sizeof(string), "~b~Loaded:~w~ Clothing~n~~b~Loaded Crates:~w~ %d/6", CoreVehicles[vehicleid][vehLoads]); case 4: format(string, sizeof(string), "~b~Loaded:~w~ Food Supplies~n~~b~Loaded Crates:~w~ %d/6", CoreVehicles[vehicleid][vehLoads]); case 5: format(string, sizeof(string), "~b~Loaded:~w~ Gasoline~n~~b~Loaded Crates:~w~ %d/6", CoreVehicles[vehicleid][vehLoads]); case 6: format(string, sizeof(string), "~b~Loaded:~w~ Furniture~n~~b~Loaded Crates:~w~ %d/6", CoreVehicles[vehicleid][vehLoads]); } PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][82]); PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][82], string); } if (IsVehicleImpounded(vehicleid)) { RemovePlayerFromVehicle(playerid); SendErrorMessage(playerid, "This vehicle is impounded and you can't use it."); } else if (!IsEngineVehicle(vehicleid)) { SetEngineStatus(vehicleid, true); } else { if (!GetEngineStatus(vehicleid)) { if (CoreVehicles[vehicleid][vehFuel] < 1) ShowPlayerFooter(playerid, "There is no ~r~fuel~w~ in this vehicle."); else if (ReturnVehicleHealth(vehicleid) <= 300) ShowPlayerFooter(playerid, "This vehicle is ~r~totalled~w~ and needs repairing."); else ShowPlayerFooter(playerid, "Type ~r~/engine~w~ to start the engine."); } if (IsDoorVehicle(vehicleid) && !Inventory_HasItem(playerid, "Driving License") && !PlayerData[playerid][pDrivingTest]) { SendClientMessage(playerid, COLOR_LIGHTRED, "[WARNING]:{FFFFFF} You are operating a vehicle without a driving license."); } } if (IsSpeedoVehicle(vehicleid) && !PlayerData[playerid][pDisableSpeedo]) for (new i = 34; i < 39; i ++) { PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][i]); } SetPlayerArmedWeapon(playerid, 0); } if ((oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER) && PlayerData[playerid][pPlayRadio]) { PlayerData[playerid][pPlayRadio] = 0; StopAudioStreamForPlayer(playerid); } if (newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER) { if (PlayerData[playerid][pBoombox] != INVALID_PLAYER_ID) { PlayerData[playerid][pBoombox] = INVALID_PLAYER_ID; StopAudioStreamForPlayer(playerid); } if (IsEngineVehicle(vehicleid) && CoreVehicles[vehicleid][vehRadio]) { static url[128]; strunpack(url, CoreVehicles[vehicleid][vehURL]); StopAudioStreamForPlayer(playerid); PlayAudioStreamForPlayer(playerid, url); PlayerData[playerid][pPlayRadio] = 1; } foreach (new i : Player) if (PlayerData[i][pSpectator] == playerid) { PlayerSpectateVehicle(i, GetPlayerVehicleID(playerid)); } if (PlayerData[playerid][pInjured] == 1) { RemoveFromVehicle(playerid); } } if (newstate == PLAYER_STATE_PASSENGER) { switch (GetPlayerWeapon(playerid)) { case 22, 25, 28..33: SetPlayerArmedWeapon(playerid, GetPlayerWeapon(playerid)); default: SetPlayerArmedWeapon(playerid, 0); } } else if (oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER) { foreach (new i : Player) if (PlayerData[i][pSpectator] == playerid) { PlayerSpectatePlayer(i, playerid); } } if (newstate == PLAYER_STATE_PASSENGER && IsPlayerInsideTaxi(playerid)) { new driverid = GetVehicleDriver(GetPlayerVehicleID(playerid)); PlayerData[playerid][pTaxiFee] = 5; PlayerData[playerid][pTaxiTime] = 0; PlayerData[playerid][pTaxiPlayer] = driverid; SendServerMessage(driverid, "%s has entered your taxi as a passenger.", ReturnName(playerid, 0)); SendServerMessage(playerid, "You have entered %s's taxi.", ReturnName(driverid, 0)); } if (oldstate == PLAYER_STATE_PASSENGER && PlayerData[playerid][pTaxiTime] != 0 && PlayerData[playerid][pTaxiPlayer] != INVALID_PLAYER_ID) { LeaveTaxi(playerid, PlayerData[playerid][pTaxiPlayer]); } return 1; } public OnPlayerUpdate(playerid) { static str[64], id = -1, keys[3], vehicleid; if (PlayerData[playerid][pKicked]) return 0; if (GetPlayerWeapon(playerid) > 1 && (PlayerData[playerid][pHoldWeapon] > 0 || PlayerData[playerid][pMining] > 0)) SetPlayerArmedWeapon(playerid, 0); if (IsPlayerInAnyVehicle(playerid)) vehicleid = GetPlayerVehicleID(playerid); else vehicleid = INVALID_VEHICLE_ID; GetPlayerKeys(playerid, keys[0], keys[1], keys[2]); if (GetPlayerWeapon(playerid) != PlayerData[playerid][pWeapon]) { PlayerData[playerid][pWeapon] = GetPlayerWeapon(playerid); if (PlayerData[playerid][pWeapon] >= 1 && PlayerData[playerid][pWeapon] <= 45 && PlayerData[playerid][pWeapon] != 40 && PlayerData[playerid][pWeapon] != 2 && PlayerData[playerid][pGuns][g_aWeaponSlots[PlayerData[playerid][pWeapon]]] != GetPlayerWeapon(playerid) && !PlayerHasTazer(playerid) && !PlayerHasBeanBag(playerid) && PlayerData[playerid][pRangeBooth] == -1 && PlayerData[playerid][pCharacter] > 0) { SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has been banned for weapon hacks (%s).", ReturnName(playerid, 0), ReturnWeaponName(PlayerData[playerid][pWeapon])); Log_Write("logs/cheat_log.txt", "[%s] %s was banned for weapon hacks (%s).", ReturnDate(), ReturnName(playerid), ReturnWeaponName(PlayerData[playerid][pWeapon])); Blacklist_Add(PlayerData[playerid][pIP], PlayerData[playerid][pUsername], "Anticheat", "Weapon Hacks"); Kick(playerid); return 0; } } if (GetPlayerMoney(playerid) != PlayerData[playerid][pMoney]) { ResetPlayerMoney(playerid); GivePlayerMoney(playerid, PlayerData[playerid][pMoney]); } if (GetPlayerScore(playerid) != PlayerData[playerid][pPlayingHours]) { SetPlayerScore(playerid, PlayerData[playerid][pPlayingHours]); } if (PlayerData[playerid][pWaypoint]) { format(str, sizeof(str), "~b~Waypoint:~w~ %s (%.2f meters)", PlayerData[playerid][pLocation], GetPlayerDistanceFromPoint(playerid, PlayerData[playerid][pWaypointPos][0], PlayerData[playerid][pWaypointPos][1], PlayerData[playerid][pWaypointPos][2])); PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][69], str); } if (PlayerData[playerid][pMaskOn]) { if (!PlayerData[playerid][pHideTags]) { foreach (new i : Player) { ShowPlayerNameTagForPlayer(i, playerid, 0); } format(str, sizeof(str), "Mask_#%d", PlayerData[playerid][pMaskID]); PlayerData[playerid][pHideTags] = 1; PlayerData[playerid][pNameTag] = CreateDynamic3DTextLabel(str, COLOR_WHITE, 0.0, 0.0, 0.2, 8.0, playerid, INVALID_VEHICLE_ID, 0, -1, -1); } } if (!PlayerData[playerid][pMaskOn] && PlayerData[playerid][pHideTags]) { foreach (new i : Player) { ShowPlayerNameTagForPlayer(i, playerid, 1); } ResetNameTag(playerid); } if (IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { if (IsSpeedoVehicle(vehicleid) && !PlayerData[playerid][pDisableSpeedo]) { static Float:fDamage, Float:fSpeed, Float:fVelocity[3]; GetVehicleHealth(vehicleid, fDamage); GetVehicleVelocity(vehicleid, fVelocity[0], fVelocity[1], fVelocity[2]); fDamage = floatdiv(1000 - fDamage, 10) * 1.42999; // 1.33334; fSpeed = floatmul(floatsqroot((fVelocity[0] * fVelocity[0]) + (fVelocity[1] * fVelocity[1]) + (fVelocity[2] * fVelocity[2])), 100.0); if (fDamage < 0.0) fDamage = 0.0; else if (fDamage > 100.0) fDamage = 100.0; format(str, sizeof(str), "~r~Fuel:~w~ %d%c", CoreVehicles[vehicleid][vehFuel], '%'); PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][35], str); format(str, sizeof(str), "~r~Speed:~w~ %.0f mph", fSpeed); PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][36], str); format(str, sizeof(str), "~r~Damage:~w~ %.0f/100%%", (fDamage > 100.0) ? (100.0) : (fDamage)); PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][37], str); format(str, sizeof(str), "~r~Windows:~w~ %s", (CoreVehicles[vehicleid][vehWindowsDown]) ? ("Down") : ("Up")); PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][38], str); } for (new i = 0; i != MAX_BARRICADES; i ++) if (BarricadeData[i][cadeExists] && BarricadeData[i][cadeType] == 1 && IsPlayerInRangeOfPoint(playerid, 3.0, BarricadeData[i][cadePos][0], BarricadeData[i][cadePos][1], BarricadeData[i][cadePos][2])) { static tires[4]; GetVehicleDamageStatus(vehicleid, tires[0], tires[1], tires[2], tires[3]); if (tires[3] != 1111) { UpdateVehicleDamageStatus(vehicleid, tires[0], tires[1], tires[2], 1111); } break; } } switch (PlayerData[playerid][pHouseLights]) { case 0: { if ((id = House_Inside(playerid)) != -1 && !HouseData[id][houseLights]) { PlayerData[playerid][pHouseLights] = true; PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][62]); } else PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][62]); } case 1: { if ((id = House_Inside(playerid)) == -1 || (id != -1 && HouseData[id][houseLights])) { PlayerData[playerid][pHouseLights] = false; PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][62]); } } } if (PlayerData[playerid][pDrinking] && GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DRINK_SPRUNK && !IsPlayerInAnyVehicle(playerid)) { DestroyPlayerProgressBar(playerid, PlayerData[playerid][pDrinkBar]); PlayerData[playerid][pDrinking] = 0; } if ((id = Speed_Nearest(playerid)) != -1 && GetPlayerSpeed(playerid) > SpeedData[id][speedLimit] && GetPlayerState(playerid) == PLAYER_STATE_DRIVER && IsEngineVehicle(vehicleid) && !PlayerData[playerid][pSpeedTime]) { if (!IsACruiser(vehicleid) && !IsABoat(vehicleid) && !IsAPlane(vehicleid) && !IsAHelicopter(vehicleid)) { new price = 100 + floatround(GetPlayerSpeed(playerid) - SpeedData[id][speedLimit]); format(str, sizeof(str), "Speeding (%.0f/%.0f mph)", GetPlayerSpeed(playerid), SpeedData[id][speedLimit]); SetTimerEx("HidePlayerBox", 500, false, "dd", playerid, _:ShowPlayerBox(playerid, 0xFFFFFF66)); if (Ticket_Add(playerid, price, str) != -1) { format(str, sizeof(str), "You have received a ~r~%s~w~ speeding ticket.", FormatNumber(price)); ShowPlayerFooter(playerid, str); } PlayerData[playerid][pSpeedTime] = 5; } } if (Detector_Nearest(playerid) != -1) { if (IsPlayerArmed(playerid) && gettime() > PlayerData[playerid][pDetectorTime]) { PlayerData[playerid][pDetectorTime] = gettime() + 5; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** The metal detector sounds off. (( %s ))", ReturnName(playerid, 0)); PlayerPlaySoundEx(playerid, 43000); } } if ((keys[0] & KEY_FIRE) && GetPlayerWeapon(playerid) == 42) { static Float:fX, Float:fY, Float:fZ; for (new i = 0; i < sizeof(g_aFireObjects); i ++) { GetDynamicObjectPos(g_aFireObjects[i], fX, fY, fZ); if ((IsValidDynamicObject(g_aFireObjects[i]) && IsPlayerInRangeOfPoint(playerid, 4.0, fX, fY, fZ)) && ++ g_aFireExtinguished[i] == 32) { SetTimerEx("DestroyWater", 2000, false, "d", CreateDynamicObject(18744, fX, fY, fZ - 0.2, 0.0, 0.0, 0.0)); DestroyDynamicObject(g_aFireObjects[i]); g_aFireExtinguished[i] = 0; } } } if ((keys[0] & KEY_FIRE) && (GetVehicleModel(GetPlayerVehicleID(playerid)) == 407 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 544)) { static Float:fX, Float:fY, Float:fZ, Float:fVector[3], Float:fCamera[3]; GetPlayerCameraFrontVector(playerid, fVector[0], fVector[1], fVector[2]); GetPlayerCameraPos(playerid, fCamera[0], fCamera[1], fCamera[2]); for (new i = 0; i < sizeof(g_aFireObjects); i ++) { GetDynamicObjectPos(g_aFireObjects[i], fX, fY, fZ); if (IsValidDynamicObject(g_aFireObjects[i]) && IsPlayerInRangeOfPoint(playerid, 3050, fX, fY, fZ)) { if (++g_aFireExtinguished[i] == 64 && DistanceCameraTargetToLocation(fCamera[0], fCamera[1], fCamera[2], fX, fY, fZ + 2.5, fVector[0], fVector[1], fVector[2]) < 12.0) { SetTimerEx("DestroyWater", 2000, false, "d", CreateDynamicObject(18744, fX, fY, fZ - 0.2, 0.0, 0.0, 0.0)); DestroyDynamicObject(g_aFireObjects[i]); g_aFireExtinguished[i] = 0; } } } } return 1; } public OnPlayerConnect(playerid) { if (IsPlayerNPC(playerid)) return 1; if ((GetTickCount() - PlayerData[playerid][pLeaveTime]) < 2000 && !strcmp(ReturnIP(playerid), PlayerData[playerid][pLeaveIP])) { SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s (%s) was kicked for possible rejoin hacks.", ReturnName(playerid), ReturnIP(playerid)); Kick(playerid); return 1; } new str[128]; ResetPlayerWeapons(playerid); SetPlayerArmedWeapon(playerid, 0); PreloadAnimations(playerid); if (g_ServerRestart) { TextDrawShowForPlayer(playerid, gServerTextdraws[3]); } for (new i = 0; i != MAX_PLAYER_ATTACHED_OBJECTS; i ++) { RemovePlayerAttachedObject(playerid, i); } // Gas pumps RemoveBuildingForPlayer(playerid, 1676, 1941.6563, -1767.2891, 14.1406, 6000.00); RemoveBuildingForPlayer(playerid, 3465, 2120.8203, 914.7188, 11.2578, 6000.00); RemoveBuildingForPlayer(playerid, 1686, -1610.6172, -2721.0000, 47.9297, 6000.00); // LS mall RemoveBuildingForPlayer(playerid, 6130, 1117.5859, -1490.0078, 32.7188, 10.0); RemoveBuildingForPlayer(playerid, 6255, 1117.5859, -1490.0078, 32.7188, 10.0); RemoveBuildingForPlayer(playerid, 762, 1175.3594, -1420.1875, 19.8828, 0.25); RemoveBuildingForPlayer(playerid, 615, 1166.3516, -1417.6953, 13.9531, 0.25); // Sprunk machines RemoveBuildingForPlayer(playerid, 1302, 0.0, 0.0, 0.0, 6000.0); RemoveBuildingForPlayer(playerid, 1209, 0.0, 0.0, 0.0, 6000.0); RemoveBuildingForPlayer(playerid, 955, 0.0, 0.0, 0.0, 6000.0); RemoveBuildingForPlayer(playerid, 956, 0.0, 0.0, 0.0, 6000.0); RemoveBuildingForPlayer(playerid, 1775, 0.0, 0.0, 0.0, 6000.0); RemoveBuildingForPlayer(playerid, 1776, 0.0, 0.0, 0.0, 6000.0); RemoveBuildingForPlayer(playerid, 1977, 0.0, 0.0, 0.0, 6000.0); // Fire station RemoveBuildingForPlayer(playerid, 717, 1703.9922, -1150.1484, 23.0938, 0.25); RemoveBuildingForPlayer(playerid, 717, 1721.2344, -1150.1484, 23.0938, 0.25); RemoveBuildingForPlayer(playerid, 1300, 1715.4922, -1037.9766, 23.2656, 0.25); RemoveBuildingForPlayer(playerid, 1294, 1734.9531, -1156.9922, 27.3516, 0.25); RemoveBuildingForPlayer(playerid, 717, 1738.7813, -1150.1484, 23.0938, 0.25); RemoveBuildingForPlayer(playerid, 1227, 1789.7734, -1116.0625, 23.8906, 0.25); RemoveBuildingForPlayer(playerid, 1227, 1789.9063, -1112.6406, 23.8906, 0.25); RemoveBuildingForPlayer(playerid, 717, 1726.0000, -1064.8828, 23.1563, 0.25); RemoveBuildingForPlayer(playerid, 4640, 1728.7891, -1065.0938, 24.5000, 0.25); RemoveBuildingForPlayer(playerid, 1300, 1730.6328, -1033.6719, 23.2656, 0.25); RemoveBuildingForPlayer(playerid, 4598, 1737.2031, -1052.8203, 23.3359, 0.25); RemoveBuildingForPlayer(playerid, 4599, 1738.1875, -1044.9922, 22.9844, 0.25); RemoveBuildingForPlayer(playerid, 1300, 1747.8594, -1063.2969, 23.2656, 0.25); RemoveBuildingForPlayer(playerid, 717, 1758.3828, -1066.3594, 23.1797, 0.25); RemoveBuildingForPlayer(playerid, 1300, 1758.0781, -1064.5547, 23.2656, 0.25); RemoveBuildingForPlayer(playerid, 717, 1765.1563, -1042.5234, 23.1797, 0.25); RemoveBuildingForPlayer(playerid, 1300, 1764.8594, -1040.7188, 23.2656, 0.25); RemoveBuildingForPlayer(playerid, 4641, 1788.5391, -1026.3516, 24.5000, 0.25); // Prison exterior RemoveBuildingForPlayer(playerid, 3682, 247.9297, 1461.8594, 33.4141, 0.25); RemoveBuildingForPlayer(playerid, 3682, 192.2734, 1456.1250, 33.4141, 0.25); RemoveBuildingForPlayer(playerid, 3682, 199.7578, 1397.8828, 33.4141, 0.25); RemoveBuildingForPlayer(playerid, 3683, 133.7422, 1356.9922, 17.0938, 0.25); RemoveBuildingForPlayer(playerid, 3683, 166.7891, 1356.9922, 17.0938, 0.25); RemoveBuildingForPlayer(playerid, 3683, 166.7891, 1392.1563, 17.0938, 0.25); RemoveBuildingForPlayer(playerid, 3683, 133.7422, 1392.1563, 17.0938, 0.25); RemoveBuildingForPlayer(playerid, 3683, 166.7891, 1426.9141, 17.0938, 0.25); RemoveBuildingForPlayer(playerid, 3683, 133.7422, 1426.9141, 17.0938, 0.25); RemoveBuildingForPlayer(playerid, 3288, 221.5703, 1374.9688, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3289, 212.0781, 1426.0313, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3290, 218.2578, 1467.5391, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3291, 246.5625, 1435.1953, 9.6875, 0.25); RemoveBuildingForPlayer(playerid, 3291, 246.5625, 1410.5391, 9.6875, 0.25); RemoveBuildingForPlayer(playerid, 3291, 246.5625, 1385.8906, 9.6875, 0.25); RemoveBuildingForPlayer(playerid, 3291, 246.5625, 1361.2422, 9.6875, 0.25); RemoveBuildingForPlayer(playerid, 3290, 190.9141, 1371.7734, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3289, 183.7422, 1444.8672, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3289, 222.5078, 1444.6953, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3289, 221.1797, 1390.2969, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3288, 223.1797, 1421.1875, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3683, 133.7422, 1459.6406, 17.0938, 0.25); RemoveBuildingForPlayer(playerid, 3289, 207.5391, 1371.2422, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3424, 220.6484, 1355.1875, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3424, 221.7031, 1404.5078, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3424, 210.4141, 1444.8438, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3424, 262.5078, 1465.2031, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3259, 220.6484, 1355.1875, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3636, 133.7422, 1356.9922, 17.0938, 0.25); RemoveBuildingForPlayer(playerid, 3636, 166.7891, 1356.9922, 17.0938, 0.25); RemoveBuildingForPlayer(playerid, 3256, 190.9141, 1371.7734, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3636, 166.7891, 1392.1563, 17.0938, 0.25); RemoveBuildingForPlayer(playerid, 3636, 133.7422, 1392.1563, 17.0938, 0.25); RemoveBuildingForPlayer(playerid, 3258, 207.5391, 1371.2422, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3675, 205.6484, 1394.1328, 10.1172, 0.25); RemoveBuildingForPlayer(playerid, 3675, 205.6484, 1392.1563, 16.2969, 0.25); RemoveBuildingForPlayer(playerid, 3675, 205.6484, 1394.1328, 23.7813, 0.25); RemoveBuildingForPlayer(playerid, 3675, 207.3594, 1390.5703, 19.1484, 0.25); RemoveBuildingForPlayer(playerid, 3675, 206.5078, 1387.8516, 27.4922, 0.25); RemoveBuildingForPlayer(playerid, 3673, 199.7578, 1397.8828, 33.4141, 0.25); RemoveBuildingForPlayer(playerid, 3257, 221.5703, 1374.9688, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3258, 221.1797, 1390.2969, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3675, 203.9531, 1409.9141, 16.2969, 0.25); RemoveBuildingForPlayer(playerid, 3674, 199.3828, 1407.1172, 35.8984, 0.25); RemoveBuildingForPlayer(playerid, 3675, 204.6406, 1409.8516, 11.4063, 0.25); RemoveBuildingForPlayer(playerid, 3675, 206.5078, 1404.2344, 18.2969, 0.25); RemoveBuildingForPlayer(playerid, 3675, 206.5078, 1400.6563, 22.4688, 0.25); RemoveBuildingForPlayer(playerid, 3259, 221.7031, 1404.5078, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3675, 207.3594, 1409.0000, 19.7578, 0.25); RemoveBuildingForPlayer(playerid, 3257, 223.1797, 1421.1875, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3258, 212.0781, 1426.0313, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3636, 166.7891, 1426.9141, 17.0938, 0.25); RemoveBuildingForPlayer(playerid, 3636, 133.7422, 1426.9141, 17.0938, 0.25); RemoveBuildingForPlayer(playerid, 3255, 246.5625, 1361.2422, 9.6875, 0.25); RemoveBuildingForPlayer(playerid, 3255, 246.5625, 1385.8906, 9.6875, 0.25); RemoveBuildingForPlayer(playerid, 3255, 246.5625, 1410.5391, 9.6875, 0.25); RemoveBuildingForPlayer(playerid, 3258, 183.7422, 1444.8672, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3259, 210.4141, 1444.8438, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3258, 222.5078, 1444.6953, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 16086, 232.2891, 1434.4844, 13.5000, 0.25); RemoveBuildingForPlayer(playerid, 3673, 192.2734, 1456.1250, 33.4141, 0.25); RemoveBuildingForPlayer(playerid, 3674, 183.0391, 1455.7500, 35.8984, 0.25); RemoveBuildingForPlayer(playerid, 3636, 133.7422, 1459.6406, 17.0938, 0.25); RemoveBuildingForPlayer(playerid, 3675, 196.0234, 1462.0156, 10.1172, 0.25); RemoveBuildingForPlayer(playerid, 3675, 198.0000, 1462.0156, 16.2969, 0.25); RemoveBuildingForPlayer(playerid, 3675, 196.0234, 1462.0156, 23.7813, 0.25); RemoveBuildingForPlayer(playerid, 3675, 180.2422, 1460.3203, 16.2969, 0.25); RemoveBuildingForPlayer(playerid, 3675, 180.3047, 1461.0078, 11.4063, 0.25); RemoveBuildingForPlayer(playerid, 3256, 218.2578, 1467.5391, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3675, 199.5859, 1463.7266, 19.1484, 0.25); RemoveBuildingForPlayer(playerid, 3675, 181.1563, 1463.7266, 19.7578, 0.25); RemoveBuildingForPlayer(playerid, 3675, 185.9219, 1462.8750, 18.2969, 0.25); RemoveBuildingForPlayer(playerid, 3675, 202.3047, 1462.8750, 27.4922, 0.25); RemoveBuildingForPlayer(playerid, 3675, 189.5000, 1462.8750, 22.4688, 0.25); RemoveBuildingForPlayer(playerid, 3255, 246.5625, 1435.1953, 9.6875, 0.25); RemoveBuildingForPlayer(playerid, 3675, 254.6797, 1451.8281, 27.4922, 0.25); RemoveBuildingForPlayer(playerid, 3675, 253.8203, 1458.1094, 23.7813, 0.25); RemoveBuildingForPlayer(playerid, 3675, 255.5313, 1454.5469, 19.1484, 0.25); RemoveBuildingForPlayer(playerid, 3675, 253.8203, 1456.1328, 16.2969, 0.25); RemoveBuildingForPlayer(playerid, 3675, 253.8203, 1458.1094, 10.1172, 0.25); RemoveBuildingForPlayer(playerid, 3259, 262.5078, 1465.2031, 9.5859, 0.25); RemoveBuildingForPlayer(playerid, 3675, 254.6797, 1468.2109, 18.2969, 0.25); RemoveBuildingForPlayer(playerid, 3673, 247.9297, 1461.8594, 33.4141, 0.25); RemoveBuildingForPlayer(playerid, 3675, 254.6797, 1464.6328, 22.4688, 0.25); RemoveBuildingForPlayer(playerid, 3674, 247.5547, 1471.0938, 35.8984, 0.25); RemoveBuildingForPlayer(playerid, 3675, 255.5313, 1472.9766, 19.7578, 0.25); RemoveBuildingForPlayer(playerid, 3675, 252.8125, 1473.8281, 11.4063, 0.25); RemoveBuildingForPlayer(playerid, 3675, 252.1250, 1473.8906, 16.2969, 0.25); RemoveBuildingForPlayer(playerid, 16089, 342.1250, 1431.0938, 5.2734, 0.25); RemoveBuildingForPlayer(playerid, 16090, 315.7734, 1431.0938, 5.2734, 0.25); RemoveBuildingForPlayer(playerid, 16091, 289.7422, 1431.0938, 5.2734, 0.25); RemoveBuildingForPlayer(playerid, 16087, 358.6797, 1430.4531, 11.6172, 0.25); RemoveBuildingForPlayer(playerid, 16088, 368.4297, 1431.0938, 5.2734, 0.25); RemoveBuildingForPlayer(playerid, 16092, 394.1563, 1431.0938, 5.2734, 0.25); CancelSelectTextDraw(playerid); GetPlayerIp(playerid, PlayerData[playerid][pIP], 16); GetPlayerName(playerid, PlayerData[playerid][pUsername], MAX_PLAYER_NAME + 1); ResetStatistics(playerid); CreateTextDraws(playerid); format(str, sizeof(str), "SELECT * FROM `blacklist` WHERE `Username` = '%s' OR `IP` = '%s'", ReturnName(playerid), PlayerData[playerid][pIP]); mysql_tquery(g_iHandle, str, "OnQueryFinished", "dd", playerid, THREAD_BAN_LOOKUP); return 1; } public OnPlayerDisconnect(playerid, reason) { PlayerData[playerid][pLeaveTime] = GetTickCount(); format(PlayerData[playerid][pLeaveIP], 16, PlayerData[playerid][pIP]); TerminateConnection(playerid); return 1; } Server_Save() { new File:file = fopen("server.ini", io_write), str[128]; format(str, sizeof(str), "TaxMoney = %d\n", g_TaxVault); return (fwrite(file, str), fclose(file)); } Server_Load() { new File:file = fopen("server.ini", io_read); if (file) { g_TaxVault = file_parse_int(file, "TaxMoney"); fclose(file); } return 1; } public OnGameModeInit() { static arrVirtualWorlds[2000], id = -1; WeatherRotator(); SQL_Connect(); ManualVehicleEngineAndLights(); new rcon[80]; format(rcon, sizeof(rcon), "hostname %s", SERVER_NAME); SendRconCommand(rcon); format(rcon, sizeof(rcon), "weburl %s", SERVER_URL); SendRconCommand(rcon); SetGameModeText(SERVER_REVISION); if (mysql_errno(g_iHandle) != 0) return 0; Server_Load(); mysql_tquery(g_iHandle, "SELECT * FROM `billboards`", "Billboard_Load", ""); mysql_tquery(g_iHandle, "SELECT * FROM `houses`", "House_Load", ""); mysql_tquery(g_iHandle, "SELECT * FROM `businesses`", "Business_Load", ""); mysql_tquery(g_iHandle, "SELECT * FROM `dropped`", "Dropped_Load", ""); mysql_tquery(g_iHandle, "SELECT * FROM `entrances`", "Entrance_Load", ""); mysql_tquery(g_iHandle, "SELECT * FROM `cars`", "Car_Load", ""); mysql_tquery(g_iHandle, "SELECT * FROM `jobs`", "Job_Load", ""); mysql_tquery(g_iHandle, "SELECT * FROM `crates`", "Crate_Load", ""); mysql_tquery(g_iHandle, "SELECT * FROM `plants`", "Plant_Load", ""); mysql_tquery(g_iHandle, "SELECT * FROM `factions`", "Faction_Load", ""); mysql_tquery(g_iHandle, "SELECT * FROM `arrestpoints`", "Arrest_Load", ""); mysql_tquery(g_iHandle, "SELECT * FROM `gates`", "Gate_Load", ""); mysql_tquery(g_iHandle, "SELECT * FROM `backpacks`", "Backpack_Load", ""); mysql_tquery(g_iHandle, "SELECT * FROM `impoundlots`", "Impound_Load", ""); mysql_tquery(g_iHandle, "SELECT * FROM `atm`", "ATM_Load", ""); mysql_tquery(g_iHandle, "SELECT * FROM `garbage`", "Garbage_Load", ""); mysql_tquery(g_iHandle, "SELECT * FROM `vendors`", "Vendor_Load", ""); mysql_tquery(g_iHandle, "SELECT * FROM `gunracks`", "Rack_Load", ""); mysql_tquery(g_iHandle, "SELECT * FROM `speedcameras`", "Speed_Load", ""); mysql_tquery(g_iHandle, "SELECT * FROM `graffiti`", "Graffiti_Load", ""); mysql_tquery(g_iHandle, "SELECT * FROM `detectors`", "Detector_Load", ""); SetModelPreviewRotation(18875, 90.0, 180.0, 0.0); SetModelPreviewRotation(2703, -105.0, 0.0, -15.0); SetModelPreviewRotation(2702, 90.0, 90.0, 0.0); SetModelPreviewRotation(2814, -90.0, 0.0, -90.0); SetModelPreviewRotation(2768, -15.0, 0.0, -160.0); SetModelPreviewRotation(19142, -20.0, -90.0, 0.0); SetModelPreviewRotation(1581, 0.0, 0.0, 180.0); SetModelPreviewRotation(2958, -10.0, -15.0, 0.0); SetModelPreviewRotation(1575, 0.0, 0.0, 180.0); SetModelPreviewRotation(1577, 0.0, 0.0, 180.0); SetModelPreviewRotation(1578, 0.0, 0.0, 180.0); SetModelPreviewRotation(18634, 90.0, 90.0, 0.0); SetModelPreviewRotation(2043, 0.0, 0.0, 90.0); SetModelPreviewRotation(1484, -15.0, 30.0, 0.0); SetModelPreviewRotation(2226, 0.0, 0.0, 180.0); for (new i = 0; i < sizeof(arrVirtualWorlds); i ++) { arrVirtualWorlds[i] = i + 7000; } CreateDynamicPickup(1581, 23, -2033.0439, -117.4885, 1035.1719); CreateDynamic3DTextLabel("[Driving Test]\n{FFFFFF}Type /drivingtest to start the test.", COLOR_DARKBLUE, -2033.0439, -117.4885, 1035.1719, 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1); CreateDynamicPickup(1239, 23, 1260.3976, -20.0215, 1001.0234); CreateDynamic3DTextLabel("[Cargo Unloading]\n{FFFFFF}Type /loadcrate to begin loading cargo.", COLOR_YELLOW, 1260.3976, -20.0215, 1001.0234, 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1); CreateDynamicPickupEx(1239, 23, 361.2687, 171.5613, 1008.3828, 100.0, arrVirtualWorlds); CreateDynamic3DTextLabel("[Tickets]\n{FFFFFF}Type /tickets to pay your tickets.", COLOR_DARKBLUE, 361.2687, 171.5613, 1008.3828, 10.0); CreateDynamicPickupEx(1239, 23, 361.8299, 173.5183, 1008.3828, 100.0, arrVirtualWorlds); CreateDynamic3DTextLabel("[Name Change]\n{FFFFFF}Type /changename to change your name.", COLOR_DARKBLUE, 361.8299, 173.5183, 1008.3828, 10.0); CreateDynamicPickupEx(1239, 23, 361.1653, 175.8127, 1008.3828, 100.0, arrVirtualWorlds); CreateDynamic3DTextLabel("[Car Release]\n{FFFFFF}Type /releasecar to release a vehicle.", COLOR_DARKBLUE, 361.1653, 175.8127, 1008.3828, 10.0); CreateDynamicPickup(1559, 23, 272.2939, 1388.8876, 11.8342); CreateDynamic3DTextLabel("San Andreas Prison", COLOR_DARKBLUE, 272.2939, 1388.8876, 11.1342, 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1); CreateDynamicPickup(1559, 23, 1211.1923, -1354.3439, 797.4456); CreateDynamic3DTextLabel("Prison Yard", COLOR_DARKBLUE, 1211.1923, -1354.3439, 796.7456, 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, PRISON_WORLD, 5); for (new i = 0; i < sizeof(arrBoothPositions); i ++) { CreateDynamic3DTextLabel("[Shooting Range]\n{FFFFFF}Press 'F' to use this booth.", COLOR_DARKBLUE, arrBoothPositions[i][0], arrBoothPositions[i][1], arrBoothPositions[i][2], 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, 7); } for (new i = 0; i < sizeof(arrHospitalSpawns); i ++) { CreateDynamicMapIcon(arrHospitalSpawns[i][0], arrHospitalSpawns[i][1], arrHospitalSpawns[i][2], 22, 0); CreatePickup(1559, 23, arrHospitalSpawns[i][0], arrHospitalSpawns[i][1], arrHospitalSpawns[i][2] + 0.7); Create3DTextLabel("General Hospital", COLOR_DARKBLUE, arrHospitalSpawns[i][0], arrHospitalSpawns[i][1], arrHospitalSpawns[i][2], 15.0, 0); CreatePickup(1240, 23, arrHospitalDeliver[i][0], arrHospitalDeliver[i][1], arrHospitalDeliver[i][2]); Create3DTextLabel("[Hospital Deliver]\n{FFFFFF}/dropinjured to deliver a patient.", COLOR_DARKBLUE, arrHospitalDeliver[i][0], arrHospitalDeliver[i][1], arrHospitalDeliver[i][2], 15.0, 0); } // Textdraws gServerTextdraws[0] = TextDrawCreate(547.000000, 23.000000, "12:00 PM"); TextDrawBackgroundColor(gServerTextdraws[0], 255); TextDrawFont(gServerTextdraws[0], 1); TextDrawLetterSize(gServerTextdraws[0], 0.360000, 1.499999); TextDrawColor(gServerTextdraws[0], -1); TextDrawSetOutline(gServerTextdraws[0], 1); TextDrawSetProportional(gServerTextdraws[0], 1); TextDrawSetSelectable(gServerTextdraws[0], 0); gServerTextdraws[1] = TextDrawCreate(500.000000, 6.000000, "South Central ~r~Roleplay"); TextDrawBackgroundColor(gServerTextdraws[1], 255); TextDrawFont(gServerTextdraws[1], 1); TextDrawLetterSize(gServerTextdraws[1], 0.260000, 1.200000); TextDrawColor(gServerTextdraws[1], -1); TextDrawSetOutline(gServerTextdraws[1], 1); TextDrawSetProportional(gServerTextdraws[1], 1); TextDrawSetSelectable(gServerTextdraws[1], 0); gServerTextdraws[2] = TextDrawCreate(11.000000, 430.000000, "~r~You are injured!~w~ /call 911 or /giveup."); TextDrawBackgroundColor(gServerTextdraws[2], 255); TextDrawFont(gServerTextdraws[2], 1); TextDrawLetterSize(gServerTextdraws[2], 0.300000, 1.100000); TextDrawColor(gServerTextdraws[2], -1); TextDrawSetOutline(gServerTextdraws[2], 1); TextDrawSetProportional(gServerTextdraws[2], 1); TextDrawSetSelectable(gServerTextdraws[2], 0); gServerTextdraws[3] = TextDrawCreate(237.000000, 409.000000, "~r~Server Restart:~w~ 00:00"); TextDrawBackgroundColor(gServerTextdraws[3], 255); TextDrawFont(gServerTextdraws[3], 1); TextDrawLetterSize(gServerTextdraws[3], 0.480000, 1.300000); TextDrawColor(gServerTextdraws[3], -1); TextDrawSetOutline(gServerTextdraws[3], 1); TextDrawSetProportional(gServerTextdraws[3], 1); TextDrawSetSelectable(gServerTextdraws[3], 0); // School CreateDynamicObject(19379, 1297.65, 156.01, 1071.40, 0.00, 90.00, 0.00); CreateDynamicObject(19379, 1287.15, 156.02, 1071.40, 0.00, 90.00, 0.00); CreateDynamicObject(19379, 1276.66, 156.02, 1071.40, 0.00, 90.00, 0.00); CreateDynamicObject(19379, 1266.16, 156.00, 1071.40, 0.00, 90.00, 0.00); CreateDynamicObject(19379, 1266.17, 146.38, 1071.40, 0.00, 90.00, 0.00); CreateDynamicObject(19379, 1276.69, 146.40, 1071.40, 0.00, 90.00, 0.00); CreateDynamicObject(19379, 1287.17, 146.40, 1071.40, 0.00, 90.00, 0.00); CreateDynamicObject(14411, 1294.47, 147.92, 1071.79, 0.00, 0.00, -180.06); CreateDynamicObject(19445, 1292.36, 146.35, 1073.22, 0.00, 0.00, 0.00); CreateDynamicObject(19445, 1277.92, 141.69, 1073.22, 0.00, 0.00, 89.70); CreateDynamicObject(19445, 1268.32, 141.73, 1073.22, 0.00, 0.00, 89.70); CreateDynamicObject(19379, 1255.67, 146.42, 1071.40, 0.00, 90.00, 0.00); CreateDynamicObject(19445, 1258.70, 141.77, 1073.22, 0.00, 0.00, 89.70); CreateDynamicObject(19379, 1255.66, 156.07, 1071.40, 0.00, 90.00, 0.00); CreateDynamicObject(19445, 1301.23, 151.19, 1073.22, 0.00, 0.00, 89.70); CreateDynamicObject(19445, 1296.49, 146.42, 1073.22, 0.00, 0.00, 0.00); CreateDynamicObject(19445, 1298.08, 160.75, 1073.22, 0.00, 0.00, 89.70); CreateDynamicObject(19445, 1302.79, 155.89, 1073.22, 0.00, 0.00, 0.00); CreateDynamicObject(19445, 1253.92, 146.50, 1073.22, 0.00, 0.00, 0.00); CreateDynamicObject(19445, 1253.90, 156.06, 1073.22, 0.00, 0.00, 0.00); CreateDynamicObject(19445, 1288.66, 160.74, 1073.22, 0.00, 0.00, 90.36); CreateDynamicObject(19445, 1269.52, 160.62, 1073.22, 0.00, 0.00, 90.36); CreateDynamicObject(19445, 1259.96, 160.54, 1073.22, 0.00, 0.00, 90.36); CreateDynamicObject(19445, 1250.35, 160.49, 1073.22, 0.00, 0.00, 90.36); CreateDynamicObject(19445, 1279.52, 146.28, 1073.22, 0.00, 0.00, 0.00); CreateDynamicObject(19445, 1287.58, 151.04, 1073.22, 0.00, 0.00, 90.36); CreateDynamicObject(19383, 1281.20, 151.01, 1073.22, 0.00, 0.00, 89.88); CreateDynamicObject(1491, 1280.42, 151.02, 1071.48, 0.00, 0.00, 0.00); CreateDynamicObject(18070, 1289.57, 157.02, 1072.00, 0.00, 0.00, 89.88); CreateDynamicObject(1569, 1302.70, 158.17, 1071.49, 0.00, 0.00, -89.88); CreateDynamicObject(1569, 1302.70, 155.18, 1071.49, 0.00, 0.00, 89.88); CreateDynamicObject(2412, 1302.14, 158.73, 1071.49, 0.00, 0.00, 88.56); CreateDynamicObject(2412, 1302.18, 155.36, 1071.49, 0.00, 0.00, 88.56); CreateDynamicObject(1713, 1299.84, 151.87, 1071.49, 0.00, 0.00, 179.76); CreateDynamicObject(2894, 1291.19, 159.61, 1072.51, 0.00, 0.00, -61.74); CreateDynamicObject(2190, 1291.58, 158.46, 1072.51, 0.00, 0.00, -91.62); CreateDynamicObject(1713, 1297.86, 160.10, 1071.49, 0.00, 0.00, 360.72); CreateDynamicObject(19383, 1277.85, 151.00, 1073.21, 0.00, 0.00, 89.88); CreateDynamicObject(19353, 1274.67, 151.01, 1073.22, 0.00, 0.00, 89.76); CreateDynamicObject(19445, 1273.17, 146.27, 1073.22, 0.00, 0.00, 0.00); CreateDynamicObject(1491, 1277.05, 151.04, 1071.48, 0.00, 0.00, 0.00); CreateDynamicObject(19445, 1273.16, 159.11, 1073.20, 0.00, 0.00, 0.00); CreateDynamicObject(19383, 1273.16, 152.70, 1073.20, 0.00, 0.00, -0.06); CreateDynamicObject(1491, 1273.19, 151.95, 1071.43, 0.00, 0.00, 89.52); CreateDynamicObject(14782, 1276.45, 160.22, 1072.46, 0.00, 0.00, 0.00); CreateDynamicObject(14782, 1273.58, 158.91, 1072.46, 0.00, 0.00, 91.68); CreateDynamicObject(3496, 1262.90, 141.18, 1070.63, 0.00, 0.00, 0.00); CreateDynamicObject(3496, 1265.67, 161.13, 1070.56, 0.00, 0.00, 177.66); CreateDynamicObject(2114, 1266.64, 160.20, 1071.60, 0.00, 0.00, 0.00); CreateDynamicObject(2114, 1263.90, 155.37, 1071.60, 0.00, 0.00, 0.00); CreateDynamicObject(2628, 1255.00, 159.49, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(2628, 1256.70, 159.60, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(2628, 1254.87, 157.40, 1071.51, 0.00, 0.00, 90.42); CreateDynamicObject(2628, 1254.83, 155.80, 1071.49, 0.00, 0.00, 90.42); CreateDynamicObject(2627, 1254.88, 143.31, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(2627, 1256.30, 143.33, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(2627, 1257.65, 143.39, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(2627, 1254.90, 146.44, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(2627, 1256.29, 146.43, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(2627, 1257.64, 146.44, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(14782, 1272.74, 146.22, 1072.45, 0.00, 0.00, -90.24); CreateDynamicObject(2630, 1272.20, 159.11, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(2630, 1270.72, 159.01, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(2630, 1269.50, 158.93, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(3034, 1254.05, 151.48, 1073.27, 0.00, 0.00, 90.60); CreateDynamicObject(3034, 1267.94, 141.89, 1073.27, 0.00, 0.00, 179.52); CreateDynamicObject(19379, 1266.17, 146.38, 1074.89, 0.00, 90.00, 0.00); CreateDynamicObject(1985, 1269.86, 144.73, 1074.80, 0.00, 0.00, 0.00); CreateDynamicObject(1985, 1267.58, 144.48, 1074.80, 0.00, 0.00, 0.00); CreateDynamicObject(19379, 1255.69, 146.39, 1074.89, 0.00, 90.00, 0.00); CreateDynamicObject(19379, 1255.68, 156.01, 1074.89, 0.00, 90.00, 0.00); CreateDynamicObject(19379, 1266.15, 156.00, 1074.89, 0.00, 90.00, 0.00); CreateDynamicObject(19379, 1276.61, 155.99, 1074.89, 0.00, 90.00, 0.00); CreateDynamicObject(19379, 1276.64, 146.39, 1074.89, 0.00, 90.00, 0.00); CreateDynamicObject(19379, 1287.10, 155.94, 1074.89, 0.00, 90.00, 0.00); CreateDynamicObject(19379, 1287.14, 146.32, 1074.89, 0.00, 90.00, 0.00); CreateDynamicObject(19379, 1297.58, 155.95, 1074.89, 0.00, 90.00, 0.00); CreateDynamicObject(19445, 1296.49, 146.42, 1076.72, 0.00, 0.00, 0.00); CreateDynamicObject(19445, 1291.78, 141.54, 1076.72, 0.00, 0.00, 90.06); CreateDynamicObject(19445, 1291.80, 151.33, 1076.72, 0.00, 0.00, 89.10); CreateDynamicObject(19445, 1292.37, 150.84, 1076.72, 0.00, 0.00, 0.00); CreateDynamicObject(19445, 1282.14, 132.21, 1076.72, 0.00, 0.00, 90.06); CreateDynamicObject(19445, 1272.52, 141.49, 1076.72, 0.00, 0.00, 90.06); CreateDynamicObject(19445, 1287.06, 156.14, 1076.72, 0.00, 0.00, 0.00); CreateDynamicObject(19445, 1282.52, 160.64, 1076.72, 0.00, 0.00, 90.06); CreateDynamicObject(19445, 1272.89, 160.63, 1076.72, 0.00, 0.00, 90.06); CreateDynamicObject(19445, 1263.29, 160.60, 1076.72, 0.00, 0.00, 90.06); CreateDynamicObject(19445, 1258.60, 155.74, 1076.72, 0.00, 0.00, 0.00); CreateDynamicObject(19445, 1258.61, 146.14, 1076.72, 0.00, 0.00, 0.00); CreateDynamicObject(19445, 1262.90, 141.48, 1076.72, 0.00, 0.00, 90.06); CreateDynamicObject(2417, 1289.40, 150.70, 1074.97, 0.00, 0.00, 0.00); CreateDynamicObject(2416, 1290.57, 150.62, 1074.97, 0.00, 0.00, 1.44); CreateDynamicObject(2418, 1291.58, 148.98, 1074.97, 0.00, 0.00, -89.28); CreateDynamicObject(2451, 1287.45, 150.61, 1074.97, 0.00, 0.00, 0.00); CreateDynamicObject(2419, 1289.94, 146.92, 1074.97, 0.00, 0.00, 179.04); CreateDynamicObject(19445, 1287.61, 146.19, 1076.72, 0.00, 0.00, 89.10); CreateDynamicObject(2415, 1287.50, 147.03, 1074.97, 0.00, 0.00, 179.10); CreateDynamicObject(2415, 1286.63, 147.06, 1074.97, 0.00, 0.00, 179.10); CreateDynamicObject(2429, 1287.18, 152.67, 1076.02, 0.00, 0.00, -92.40); CreateDynamicObject(1984, 1283.10, 154.25, 1074.97, 0.00, 0.00, 90.42); CreateDynamicObject(2421, 1285.25, 146.37, 1076.67, 0.00, 0.00, 177.90); CreateDynamicObject(2367, 1283.13, 151.21, 1074.97, 0.00, 0.00, -89.34); CreateDynamicObject(19353, 1282.84, 147.90, 1076.71, 0.00, 0.00, 181.50); CreateDynamicObject(2367, 1283.12, 153.33, 1074.97, 0.00, 0.00, -89.34); CreateDynamicObject(2418, 1286.30, 154.69, 1074.97, 0.00, 0.00, -89.28); CreateDynamicObject(2426, 1292.04, 148.27, 1075.92, 0.00, 0.00, -89.76); CreateDynamicObject(1513, 1283.12, 154.47, 1076.23, 0.00, 0.00, -135.12); CreateDynamicObject(2500, 1286.87, 154.01, 1075.93, 0.00, 0.00, -90.00); CreateDynamicObject(1330, 1286.50, 151.97, 1075.43, 0.00, 0.00, 0.00); CreateDynamicObject(2452, 1285.58, 160.10, 1074.97, 0.00, 0.00, 0.00); CreateDynamicObject(2665, 1286.88, 155.90, 1077.35, 0.00, 0.00, -89.46); CreateDynamicObject(2718, 1282.65, 148.45, 1077.52, 0.00, 0.00, -89.40); CreateDynamicObject(2453, 1288.85, 146.84, 1076.29, 0.00, 0.00, 15.60); CreateDynamicObject(1775, 1259.41, 159.70, 1076.08, 0.00, 0.00, 43.02); CreateDynamicObject(2964, 1270.52, 157.47, 1074.97, 0.00, 0.00, 47.40); CreateDynamicObject(14657, 1270.38, 148.55, 1075.59, 0.00, 0.00, -89.82); CreateDynamicObject(14657, 1270.49, 143.34, 1075.59, 0.00, 0.00, -89.82); CreateDynamicObject(2964, 1274.45, 157.30, 1074.97, 0.00, 0.00, 47.40); CreateDynamicObject(1713, 1262.12, 159.93, 1074.97, 0.00, 0.00, 0.00); CreateDynamicObject(1713, 1259.50, 147.51, 1074.97, 0.00, 0.00, 0.00); CreateDynamicObject(1713, 1261.17, 142.11, 1074.97, 0.00, 0.00, 180.18); CreateDynamicObject(1713, 1262.88, 145.34, 1074.97, 0.00, 0.00, 271.86); CreateDynamicObject(19379, 1276.61, 155.99, 1078.39, 0.00, 90.00, 0.00); CreateDynamicObject(19379, 1286.98, 155.97, 1078.39, 0.00, 90.00, 0.00); CreateDynamicObject(19379, 1291.31, 146.46, 1078.39, 0.00, 90.00, 0.00); CreateDynamicObject(19379, 1280.85, 146.36, 1078.39, 0.00, 90.00, 0.00); CreateDynamicObject(19379, 1270.38, 146.34, 1078.39, 0.00, 90.00, 0.00); CreateDynamicObject(19379, 1259.88, 146.35, 1078.39, 0.00, 90.00, 0.00); CreateDynamicObject(19379, 1266.10, 156.00, 1078.39, 0.00, 90.00, 0.00); CreateDynamicObject(19379, 1255.61, 155.97, 1078.39, 0.00, 90.00, 0.00); CreateDynamicObject(2690, 1282.64, 148.74, 1076.03, 0.00, 0.00, -91.20); CreateDynamicObject(2961, 1282.78, 146.61, 1076.65, 0.00, 0.00, 88.14); CreateDynamicObject(2690, 1291.64, 146.62, 1075.35, 0.00, 0.00, -116.88); CreateDynamicObject(19383, 1282.60, 158.31, 1076.76, 0.00, 0.00, 2.46); CreateDynamicObject(19383, 1282.46, 161.49, 1076.76, 0.00, 0.00, 2.46); CreateDynamicObject(1523, 1282.56, 159.09, 1074.98, 0.00, 0.00, -86.94); CreateDynamicObject(1827, 1259.94, 144.57, 1074.98, 0.00, 0.00, 0.00); CreateDynamicObject(19172, 1258.77, 150.32, 1077.29, 0.00, 0.00, 90.24); CreateDynamicObject(19175, 1258.72, 155.68, 1077.24, 0.00, 0.00, 90.06); CreateDynamicObject(19174, 1258.82, 144.56, 1077.31, 0.00, 0.00, 89.76); CreateDynamicObject(2010, 1260.83, 159.88, 1074.98, 0.00, 0.00, 0.00); CreateDynamicObject(2010, 1295.68, 142.21, 1074.98, 0.00, 0.00, 0.00); CreateDynamicObject(3034, 1274.91, 160.51, 1077.03, 0.00, 0.00, 0.00); CreateDynamicObject(3034, 1264.68, 160.49, 1077.03, 0.00, 0.00, 0.00); CreateDynamicObject(18608, 1276.29, 155.02, 1079.43, 0.00, 0.00, 0.00); CreateDynamicObject(18608, 1265.76, 155.06, 1079.43, 0.00, 0.00, 0.00); CreateDynamicObject(18608, 1285.89, 155.87, 1079.43, 0.00, 0.00, 0.00); CreateDynamicObject(18608, 1290.00, 148.54, 1079.43, 0.00, 0.00, 0.00); CreateDynamicObject(18608, 1289.98, 148.54, 1079.43, 0.00, 0.00, 0.00); CreateDynamicObject(18608, 1297.16, 157.76, 1075.63, 0.00, 0.00, 88.02); CreateDynamicObject(2631, 1270.91, 156.13, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(2631, 1268.41, 144.22, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(2631, 1268.42, 146.44, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(2915, 1272.29, 156.78, 1071.67, 0.00, 0.00, 0.00); CreateDynamicObject(2915, 1271.80, 156.43, 1071.67, 0.00, 0.00, 0.00); CreateDynamicObject(2915, 1270.30, 156.30, 1071.67, 0.00, 0.00, 30.00); CreateDynamicObject(2915, 1269.87, 143.57, 1071.66, 0.00, 0.00, 0.00); CreateDynamicObject(2844, 1271.48, 142.63, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(3077, 1277.33, 142.50, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(2165, 1273.85, 145.17, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(1671, 1274.57, 143.00, 1071.93, 0.00, 0.00, 145.50); CreateDynamicObject(1721, 1279.06, 146.66, 1071.49, 0.00, 0.00, 178.56); CreateDynamicObject(1721, 1278.31, 146.67, 1071.49, 0.00, 0.00, 178.56); CreateDynamicObject(1721, 1277.60, 146.65, 1071.49, 0.00, 0.00, 178.56); CreateDynamicObject(1721, 1276.96, 146.65, 1071.49, 0.00, 0.00, 178.56); CreateDynamicObject(1721, 1276.34, 146.63, 1071.49, 0.00, 0.00, 178.56); CreateDynamicObject(1721, 1279.09, 147.97, 1071.49, 0.00, 0.00, 178.56); CreateDynamicObject(1721, 1278.43, 147.96, 1071.49, 0.00, 0.00, 178.56); CreateDynamicObject(1721, 1277.71, 147.95, 1071.49, 0.00, 0.00, 178.56); CreateDynamicObject(1721, 1277.01, 147.91, 1071.49, 0.00, 0.00, 178.56); CreateDynamicObject(1721, 1276.35, 147.90, 1071.49, 0.00, 0.00, 178.56); CreateDynamicObject(1721, 1279.10, 149.35, 1071.49, 0.00, 0.00, 178.56); CreateDynamicObject(1721, 1278.44, 149.38, 1071.49, 0.00, 0.00, 178.56); CreateDynamicObject(1721, 1275.31, 149.48, 1071.49, 0.00, 0.00, 178.56); CreateDynamicObject(1721, 1274.58, 149.50, 1071.49, 0.00, 0.00, 178.56); CreateDynamicObject(1721, 1273.79, 149.59, 1071.49, 0.00, 0.00, 178.56); CreateDynamicObject(19379, 1281.96, 136.76, 1074.89, 0.00, 90.00, 0.00); CreateDynamicObject(19445, 1287.03, 136.81, 1076.72, 0.00, 0.00, 0.00); CreateDynamicObject(19445, 1277.26, 136.75, 1076.72, 0.00, 0.00, 0.00); CreateDynamicObject(19379, 1281.93, 136.87, 1078.39, 0.00, 90.00, 0.00); CreateDynamicObject(19445, 1278.99, 141.52, 1076.71, 0.00, 0.00, 90.06); CreateDynamicObject(19383, 1285.37, 141.52, 1076.70, 0.00, 0.00, 89.88); CreateDynamicObject(1491, 1284.58, 141.54, 1074.98, 0.00, 0.00, 0.00); CreateDynamicObject(2616, 1279.13, 141.38, 1076.74, 0.00, 0.00, 0.00); CreateDynamicObject(2737, 1281.70, 141.36, 1076.70, 0.00, 0.00, 0.00); CreateDynamicObject(14532, 1283.26, 140.82, 1075.97, 0.00, 0.00, 155.52); CreateDynamicObject(2608, 1277.56, 139.65, 1076.80, 0.00, 0.00, 86.16); CreateDynamicObject(2185, 1277.71, 138.82, 1074.98, 0.00, 0.00, 0.00); CreateDynamicObject(1663, 1278.55, 140.47, 1075.43, 0.00, 0.00, 14.70); CreateDynamicObject(2185, 1279.21, 136.33, 1074.98, 0.00, 0.00, 180.12); CreateDynamicObject(2185, 1281.20, 136.33, 1074.98, 0.00, 0.00, 180.12); CreateDynamicObject(2185, 1283.18, 136.34, 1074.98, 0.00, 0.00, 180.12); CreateDynamicObject(2185, 1279.25, 134.05, 1074.98, 0.00, 0.00, 180.12); CreateDynamicObject(1722, 1278.23, 134.69, 1074.98, 0.00, 0.00, 0.00); CreateDynamicObject(1722, 1280.03, 134.72, 1074.98, 0.00, 0.00, 0.00); CreateDynamicObject(1722, 1282.10, 134.78, 1074.98, 0.00, 0.00, 0.00); CreateDynamicObject(1722, 1278.07, 132.41, 1074.98, 0.00, 0.00, 0.00); CreateDynamicObject(2185, 1281.25, 134.05, 1074.98, 0.00, 0.00, 180.12); CreateDynamicObject(2185, 1283.24, 134.03, 1074.98, 0.00, 0.00, 180.12); CreateDynamicObject(1722, 1280.10, 132.40, 1074.98, 0.00, 0.00, 0.00); CreateDynamicObject(1722, 1282.10, 132.41, 1074.98, 0.00, 0.00, 0.00); CreateDynamicObject(2186, 1286.42, 133.75, 1074.98, 0.00, 0.00, -89.46); CreateDynamicObject(14455, 1287.18, 141.80, 1073.09, 0.00, 0.00, 0.00); CreateDynamicObject(14455, 1281.48, 141.78, 1073.09, 0.00, 0.00, 0.00); CreateDynamicObject(1999, 1290.09, 149.38, 1071.49, 0.00, 0.00, 91.62); CreateDynamicObject(2491, 1289.43, 146.53, 1070.71, 0.00, 0.00, 0.00); CreateDynamicObject(3077, 1291.73, 145.86, 1071.49, 0.00, 0.00, 90.60); CreateDynamicObject(1663, 1291.62, 150.39, 1071.96, 0.00, 0.00, -58.98); CreateDynamicObject(2010, 1291.57, 142.45, 1071.47, 0.00, 0.00, 0.00); CreateDynamicObject(2185, 1286.85, 149.09, 1071.49, 0.00, 0.00, 93.66); CreateDynamicObject(2185, 1286.89, 145.57, 1071.49, 0.00, 0.00, 93.66); CreateDynamicObject(2185, 1284.21, 149.02, 1071.49, 0.00, 0.00, 93.66); CreateDynamicObject(2185, 1284.35, 145.51, 1071.49, 0.00, 0.00, 93.66); CreateDynamicObject(2185, 1282.00, 145.35, 1071.49, 0.00, 0.00, 93.66); CreateDynamicObject(1722, 1284.98, 149.89, 1071.49, 0.00, 0.00, -84.78); CreateDynamicObject(1722, 1285.33, 146.41, 1071.49, 0.00, 0.00, -84.78); CreateDynamicObject(1722, 1282.51, 149.88, 1071.49, 0.00, 0.00, -84.78); CreateDynamicObject(1722, 1282.62, 145.98, 1071.49, 0.00, 0.00, -84.78); CreateDynamicObject(1722, 1280.28, 145.81, 1071.49, 0.00, 0.00, -84.78); CreateDynamicObject(1808, 1279.96, 142.00, 1071.49, 0.00, 0.00, 151.02); CreateDynamicObject(1808, 1272.65, 151.08, 1071.60, 0.00, 0.00, -91.38); CreateDynamicObject(1808, 1286.71, 136.67, 1074.98, 0.00, 0.00, -91.26); CreateDynamicObject(1808, 1282.07, 160.11, 1074.98, 0.00, 0.00, -41.04); CreateDynamicObject(19383, 1282.24, 160.72, 1073.23, 0.00, 0.00, 89.76); CreateDynamicObject(19353, 1279.06, 160.74, 1073.22, 0.00, 0.00, 89.76); CreateDynamicObject(19353, 1275.86, 160.74, 1073.22, 0.00, 0.00, 89.76); CreateDynamicObject(19379, 1281.39, 165.56, 1071.40, 0.00, 90.00, 0.00); CreateDynamicObject(19445, 1281.69, 170.37, 1073.22, 0.00, 0.00, 90.36); CreateDynamicObject(19445, 1286.63, 165.60, 1073.22, 0.00, 0.00, 0.00); CreateDynamicObject(19445, 1276.98, 165.62, 1073.22, 0.00, 0.00, 0.00); CreateDynamicObject(19379, 1281.39, 165.56, 1074.91, 0.00, 90.00, 0.00); CreateDynamicObject(2008, 1277.73, 169.64, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(2612, 1281.71, 170.21, 1073.54, 0.00, 0.00, 0.00); CreateDynamicObject(2606, 1286.45, 162.95, 1073.76, 0.00, 0.00, -90.90); CreateDynamicObject(2606, 1286.45, 162.95, 1073.31, 0.00, 0.00, -90.90); CreateDynamicObject(2181, 1285.03, 169.78, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(2197, 1283.99, 168.90, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(2197, 1283.31, 168.90, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(2186, 1280.61, 169.66, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(1806, 1278.07, 168.33, 1071.47, 0.00, 0.00, -36.66); CreateDynamicObject(2332, 1276.83, 166.91, 1071.94, 0.00, 0.00, 89.34); CreateDynamicObject(2010, 1277.71, 161.53, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(2690, 1283.41, 151.20, 1072.58, 0.00, 0.00, 179.70); CreateDynamicObject(1775, 1302.32, 153.48, 1072.59, 0.00, 0.00, -88.98); CreateDynamicObject(2608, 1277.27, 163.31, 1073.80, 0.00, 0.00, 89.46); CreateDynamicObject(2613, 1279.81, 170.73, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(2161, 1286.51, 167.12, 1071.49, 0.00, 0.00, -89.04); CreateDynamicObject(2162, 1286.52, 165.74, 1071.49, 0.00, 0.00, -88.86); CreateDynamicObject(2200, 1285.34, 160.90, 1071.49, 0.00, 0.00, 180.78); CreateDynamicObject(1806, 1285.70, 168.35, 1071.47, 0.00, 0.00, 27.66); CreateDynamicObject(1722, 1278.75, 161.08, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(1722, 1279.56, 161.11, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(1722, 1280.24, 161.06, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(1808, 1283.33, 161.06, 1071.49, 0.00, 0.00, 178.92); CreateDynamicObject(18608, 1281.17, 166.09, 1075.63, 0.00, 0.00, 89.58); CreateDynamicObject(1491, 1281.46, 160.67, 1071.49, 0.00, 0.00, 0.00); CreateDynamicObject(18608, 1282.10, 136.68, 1079.43, 0.00, 0.00, 0.00); // Police department CreateDynamicObject(19452,1578.2000000,-1713.0000000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (1) CreateDynamicObject(19452,1578.2002000,-1722.5996000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1588.7000000,-1713.0000000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (3) CreateDynamicObject(19452,1581.7002000,-1722.5996000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (4) CreateDynamicObject(19452,1581.7002000,-1713.0000000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (5) CreateDynamicObject(19452,1585.2002000,-1722.5996000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (6) CreateDynamicObject(19452,1585.2002000,-1713.0000000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (7) CreateDynamicObject(19452,1588.7002000,-1722.5996000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (8) CreateDynamicObject(19452,1592.2000000,-1713.0000000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (9) CreateDynamicObject(19452,1592.2002000,-1722.5996000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (10) CreateDynamicObject(19452,1595.5996000,-1713.0000000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (11) CreateDynamicObject(19452,1595.5898000,-1722.5996000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (12) CreateDynamicObject(19358,1576.5000000,-1709.7000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (1) CreateDynamicObject(19358,1595.5200000,-1708.2000000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (2) CreateDynamicObject(19358,1592.4000000,-1708.2002000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (3) CreateDynamicObject(19358,1589.2000000,-1708.2002000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (4) CreateDynamicObject(19358,1586.0000000,-1708.2002000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (5) CreateDynamicObject(19358,1583.0000000,-1708.2002000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (6) CreateDynamicObject(19358,1579.8000000,-1708.2002000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (7) CreateDynamicObject(19358,1577.0000000,-1708.2002000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (8) CreateDynamicObject(19358,1597.2998000,-1709.7998000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (9) CreateDynamicObject(1536,1586.2998000,-1708.2568000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(gen_doorext15) (1) CreateDynamicObject(1536,1589.3199000,-1708.2300000,-37.7999990,0.0000000,0.0000000,180.0000000); //object(gen_doorext15) (2) CreateDynamicObject(19358,1576.5000000,-1712.7000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (10) CreateDynamicObject(19358,1576.5000000,-1715.9000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (11) CreateDynamicObject(19358,1576.5000000,-1719.1000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (12) CreateDynamicObject(19358,1576.5000000,-1721.8000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (13) CreateDynamicObject(19358,1576.5000000,-1725.0000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (14) CreateDynamicObject(19358,1597.3000000,-1712.6000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (15) CreateDynamicObject(19358,1595.9000000,-1708.2002000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (16) CreateDynamicObject(19358,1597.3000000,-1715.8000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (17) CreateDynamicObject(19358,1597.2998000,-1719.0000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (18) CreateDynamicObject(19358,1597.2998000,-1722.2002000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (19) CreateDynamicObject(19358,1597.2998000,-1725.4004000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1584.4000000,-1709.4000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (21) CreateDynamicObject(19358,1595.8000000,-1717.4000000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (22) CreateDynamicObject(19358,1593.0000000,-1717.4004000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (24) CreateDynamicObject(19404,1584.4004000,-1712.5996000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(boigagr_sfw) (1) CreateDynamicObject(19358,1584.4004000,-1715.7998000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (25) CreateDynamicObject(19358,1591.0000000,-1717.4004000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (26) CreateDynamicObject(19388,1586.0996000,-1717.4004000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw15) (1) CreateDynamicObject(19358,1589.0000000,-1717.4004000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (27) CreateDynamicObject(1649,1584.4000000,-1712.5000000,-34.5000000,0.0000000,0.0000000,90.0000000); //object(wglasssmash) (1) CreateDynamicObject(1649,1584.4004000,-1712.5000000,-34.5000000,0.0000000,0.0000000,270.0000000); //object(wglasssmash) (2) //CreateDynamicObject(1495,1585.3101000,-1717.4000000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(gen_doorext01) (1) CreateDynamicObject(1706,1590.4000000,-1708.8000000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(kb_couch03) (1) CreateDynamicObject(1706,1592.5000000,-1708.8000000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(kb_couch03) (2) CreateDynamicObject(1706,1594.6000000,-1708.8000000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(kb_couch03) (4) CreateDynamicObject(1706,1596.7000000,-1709.9000000,-37.7999990,0.0000000,0.0000000,270.0000000); //object(kb_couch03) (5) CreateDynamicObject(949,1585.7998000,-1708.7002000,-37.2000010,0.0000000,0.0000000,0.0000000); //object(plant_pot_4) (1) CreateDynamicObject(949,1596.7000000,-1708.8000000,-37.2000010,0.0000000,0.0000000,0.0000000); //object(plant_pot_4) (2) CreateDynamicObject(1706,1596.7000000,-1712.1000000,-37.7999990,0.0000000,0.0000000,270.0000000); //object(kb_couch03) (6) CreateDynamicObject(1706,1596.7000000,-1714.3000000,-37.7999990,0.0000000,0.0000000,270.0000000); //object(kb_couch03) (7) CreateDynamicObject(1706,1595.5000000,-1716.8000000,-37.7999990,0.0000000,0.0000000,180.0000000); //object(kb_couch03) (8) CreateDynamicObject(949,1596.7000000,-1716.8000000,-37.2000010,0.0000000,0.0000000,0.0000000); //object(plant_pot_4) (3) CreateDynamicObject(1706,1593.3000000,-1716.8000000,-37.7999990,0.0000000,0.0000000,179.9945100); //object(kb_couch03) (9) CreateDynamicObject(1706,1591.1000000,-1716.8000000,-37.7999990,0.0000000,0.0000000,179.9945100); //object(kb_couch03) (10) CreateDynamicObject(1706,1588.9000000,-1716.8000000,-37.7999990,0.0000000,0.0000000,179.9945100); //object(kb_couch03) (11) CreateDynamicObject(2319,1592.5000000,-1712.6000000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(cj_tv_table5) (1) CreateDynamicObject(2319,1590.1000000,-1712.6000000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(cj_tv_table5) (2) CreateDynamicObject(2853,1590.2000000,-1712.5000000,-37.2999990,0.0000000,0.0000000,0.0000000); //object(gb_bedmags03) (1) CreateDynamicObject(2854,1591.1000000,-1712.6000000,-37.2999990,0.0000000,0.0000000,0.0000000); //object(gb_bedmags04) (1) CreateDynamicObject(2855,1592.6000000,-1712.6000000,-37.2999990,0.0000000,0.0000000,0.0000000); //object(gb_bedmags05) (1) CreateDynamicObject(2852,1593.4000000,-1712.6000000,-37.2999990,0.0000000,0.0000000,0.0000000); //object(gb_bedmags02) (1) CreateDynamicObject(2700,1597.2000000,-1708.4000000,-35.0999980,0.0000000,0.0000000,220.4877000); //object(cj_sex_tv2) (1) CreateDynamicObject(2202,1582.9000000,-1708.8000000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(photocopier_2) (1) CreateDynamicObject(2198,1583.8000000,-1712.1000000,-37.7999990,0.0000000,0.0000000,270.0000000); //object(med_office2_desk_3) (1) CreateDynamicObject(1671,1578.3000000,-1718.9000000,-37.4000020,0.0000000,0.0000000,180.0000000); //object(swivelchair_a) (1) CreateDynamicObject(1742,1576.6000000,-1716.4000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(med_bookshelf) (1) CreateDynamicObject(1742,1576.5996000,-1709.4004000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(med_bookshelf) (2) CreateDynamicObject(1742,1576.6000000,-1710.8000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(med_bookshelf) (3) CreateDynamicObject(1742,1576.5996000,-1712.2002000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(med_bookshelf) (4) CreateDynamicObject(1742,1576.5996000,-1713.5996000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(med_bookshelf) (5) CreateDynamicObject(1742,1576.5996000,-1715.0000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(med_bookshelf) (6) CreateDynamicObject(19358,1578.0000000,-1717.4004000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (27) CreateDynamicObject(19358,1581.0000000,-1717.4004000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (27) CreateDynamicObject(19388,1583.6000000,-1717.4004000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw15) (1) CreateDynamicObject(949,1589.5000000,-1708.7998000,-37.2000010,0.0000000,0.0000000,0.0000000); //object(plant_pot_4) (4) CreateDynamicObject(2161,1582.0000000,-1716.8000000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(med_office_unit_4) (1) CreateDynamicObject(2164,1581.0000000,-1717.3000000,-37.7999990,0.0000000,0.0000000,180.0000000); //object(med_office_unit_5) (1) CreateDynamicObject(2167,1579.2000000,-1717.3000000,-37.7999990,0.0000000,0.0000000,180.0000000); //object(med_office_unit_7) (1) CreateDynamicObject(11631,1579.3000000,-1709.0000000,-36.5999980,0.0000000,0.0000000,0.0000000); //object(ranch_desk) (1) CreateDynamicObject(1671,1582.5000000,-1712.7002000,-37.4000020,0.0000000,0.0000000,87.6214600); //object(swivelchair_a) (2) CreateDynamicObject(19447,1596.1000000,-1712.9000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (1) CreateDynamicObject(19447,1592.6000000,-1712.9004000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (4) CreateDynamicObject(19447,1582.2000000,-1712.9000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (5) CreateDynamicObject(19447,1589.2002000,-1712.9004000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (6) CreateDynamicObject(19447,1585.7002000,-1712.9004000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (9) CreateDynamicObject(19447,1578.7600000,-1712.9000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (10) CreateDynamicObject(19447,1577.9000000,-1712.9000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (11) CreateDynamicObject(19452,1578.2002000,-1732.2000000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1585.2002000,-1732.2002000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1581.7002000,-1732.2002000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1588.7002000,-1732.2000000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1592.2002000,-1732.2000000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1595.5898000,-1732.2002000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19358,1597.3000000,-1728.5000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1597.3000000,-1731.1000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1597.3000000,-1734.2000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1597.3000000,-1737.0000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1576.5000000,-1727.5000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (14) CreateDynamicObject(19358,1576.5000000,-1730.5996000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (14) CreateDynamicObject(19358,1576.5000000,-1733.7998000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (14) CreateDynamicObject(19358,1576.5000000,-1736.7000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (14) CreateDynamicObject(19358,1587.0000000,-1719.1000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (18) CreateDynamicObject(19358,1587.0000000,-1722.3000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (18) CreateDynamicObject(19358,1587.0000000,-1725.5000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (18) CreateDynamicObject(19358,1588.5000000,-1727.2000000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (18) CreateDynamicObject(19358,1591.7000000,-1727.2000000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (18) CreateDynamicObject(19388,1595.6000000,-1727.2000000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw15) (1) CreateDynamicObject(19358,1592.4000000,-1727.2000000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (18) CreateDynamicObject(2748,1592.9000000,-1718.1000000,-37.2000010,0.0000000,0.0000000,0.0000000); //object(cj_donut_chair2) (1) CreateDynamicObject(2747,1596.4000000,-1719.4000000,-37.4000020,0.0000000,0.0000000,0.0000000); //object(cj_donut_table) (1) CreateDynamicObject(2748,1593.1000000,-1724.3000000,-37.2000010,0.0000000,0.0000000,180.0000000); //object(cj_donut_chair2) (2) CreateDynamicObject(2748,1596.4004000,-1718.0996000,-37.2000010,0.0000000,0.0000000,0.0000000); //object(cj_donut_chair2) (3) CreateDynamicObject(2747,1592.8000000,-1719.5000000,-37.4000020,0.0000000,0.0000000,0.0000000); //object(cj_donut_table) (2) CreateDynamicObject(2748,1596.5000000,-1720.7002000,-37.2000010,0.0000000,0.0000000,179.9945100); //object(cj_donut_chair2) (4) CreateDynamicObject(2748,1596.5000000,-1721.9000000,-37.2000010,0.0000000,0.0000000,0.0000000); //object(cj_donut_chair2) (5) CreateDynamicObject(2748,1593.0000000,-1721.9000000,-37.2000010,0.0000000,0.0000000,0.0000000); //object(cj_donut_chair2) (6) CreateDynamicObject(2747,1593.0000000,-1723.2000000,-37.4000020,0.0000000,0.0000000,0.0000000); //object(cj_donut_table) (3) CreateDynamicObject(2747,1596.4000000,-1723.2000000,-37.4000020,0.0000000,0.0000000,0.0000000); //object(cj_donut_table) (4) CreateDynamicObject(2748,1593.0000000,-1720.7002000,-37.2000010,0.0000000,0.0000000,179.9945100); //object(cj_donut_chair2) (7) CreateDynamicObject(2748,1596.4000000,-1724.3000000,-37.2000010,0.0000000,0.0000000,179.9945100); //object(cj_donut_chair2) (8) CreateDynamicObject(2448,1589.0000000,-1721.7000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(cj_ff_conter_5d) (1) CreateDynamicObject(2448,1589.0000000,-1719.4004000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(cj_ff_conter_5d) (2) CreateDynamicObject(2450,1589.2000000,-1722.4000000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(cj_ff_conter_5b) (1) CreateDynamicObject(1776,1587.5000000,-1726.5000000,-36.7000010,0.0000000,0.0000000,90.0000000); //object(cj_candyvendor) (1) CreateDynamicObject(1775,1587.6000000,-1725.3000000,-36.7000010,0.0000000,0.0000000,90.0000000); //object(cj_sprunk1) (1) CreateDynamicObject(1502,1594.8000000,-1727.2000000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(gen_doorint04) (1) CreateDynamicObject(1502,1580.3000000,-1730.2000000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(gen_doorint04) (2) CreateDynamicObject(19358,1582.7000000,-1719.1000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (18) CreateDynamicObject(19358,1582.7000000,-1722.3000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (18) CreateDynamicObject(19358,1582.7000000,-1725.5000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (18) CreateDynamicObject(19358,1582.7000000,-1728.7000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (18) CreateDynamicObject(19358,1578.0000000,-1730.2000000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (18) CreateDynamicObject(19388,1581.0996000,-1730.2002000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw15) (1) CreateDynamicObject(1502,1582.7998000,-1717.4399000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(gen_doorint04) (3) CreateDynamicObject(1998,1581.2000000,-1718.9000000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(officedesk1l) (1) CreateDynamicObject(1998,1579.3000000,-1718.9000000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(officedesk1l) (2) CreateDynamicObject(1998,1577.4000000,-1718.9000000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(officedesk1l) (3) CreateDynamicObject(2008,1577.0996000,-1728.4004000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(officedesk1) (2) CreateDynamicObject(2008,1577.0996000,-1726.0996000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(officedesk1) (3) CreateDynamicObject(2008,1577.2002000,-1723.5996000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(officedesk1) (4) CreateDynamicObject(2008,1581.1000000,-1723.5996000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(officedesk1) (5) CreateDynamicObject(2008,1581.1000000,-1726.0996000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(officedesk1) (6) CreateDynamicObject(1671,1579.7002000,-1710.0996000,-37.4000020,0.0000000,0.0000000,179.9945100); //object(swivelchair_a) (3) CreateDynamicObject(1671,1580.3000000,-1719.0000000,-37.4000020,0.0000000,0.0000000,179.9945100); //object(swivelchair_a) (4) CreateDynamicObject(1671,1582.2000000,-1719.0000000,-37.4000020,0.0000000,0.0000000,179.9945100); //object(swivelchair_a) (5) CreateDynamicObject(1671,1578.0000000,-1724.8000000,-37.4000020,0.0000000,0.0000000,179.9945100); //object(swivelchair_a) (6) CreateDynamicObject(1671,1582.1000000,-1724.8000000,-37.4000020,0.0000000,0.0000000,179.9945100); //object(swivelchair_a) (7) CreateDynamicObject(1671,1578.0000000,-1727.2000000,-37.4000020,0.0000000,0.0000000,179.9945100); //object(swivelchair_a) (8) CreateDynamicObject(1671,1578.1000000,-1729.8000000,-37.4000020,0.0000000,0.0000000,179.9945100); //object(swivelchair_a) (9) CreateDynamicObject(1671,1582.0000000,-1727.5000000,-37.4000020,0.0000000,0.0000000,179.9945100); //object(swivelchair_a) (10) CreateDynamicObject(19452,1578.2002000,-1741.7998000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1581.7002000,-1741.7998000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1585.2002000,-1741.7998000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1588.7002000,-1741.8000000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1592.2002000,-1741.8000000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1595.5898000,-1741.8000000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1578.2002000,-1751.4000000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1581.7001953,-1751.4003906,-37.9000015,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1588.7002000,-1751.4004000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1585.2002000,-1751.4004000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1592.2002000,-1751.4004000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1595.5898000,-1751.4000000,-37.9000020,0.0000000,90.0000000,0.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19358,1597.3000000,-1740.2000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1597.3000000,-1743.4000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1597.3000000,-1746.5000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1597.3000000,-1749.6000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1576.5000000,-1739.8000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1576.5000000,-1742.3000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1576.5000000,-1745.0000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1576.5000000,-1747.8000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1576.5000000,-1750.7000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1576.5000000,-1753.8000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1576.5000000,-1755.8000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1597.3000000,-1752.8000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1597.2998000,-1755.0996000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1593.0000000,-1756.2002000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1590.2002000,-1756.2002000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1587.5000000,-1756.2002000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1584.4004000,-1756.2002000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1581.5996000,-1756.2002000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1578.0000000,-1756.2002000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1578.5000000,-1756.2002000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19447,1596.0996000,-1722.5000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1589.2002000,-1722.5000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (13) CreateDynamicObject(19447,1592.5996000,-1722.5000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (14) CreateDynamicObject(19447,1585.7002000,-1722.5000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (15) CreateDynamicObject(19447,1582.2002000,-1722.5000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (16) CreateDynamicObject(19447,1578.7598000,-1722.5000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (17) CreateDynamicObject(19447,1578.0996000,-1722.4004000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (18) CreateDynamicObject(18767,1574.5000000,-1735.6000000,-34.2999990,0.0000000,0.0000000,0.0000000); //object(stands) (1) CreateDynamicObject(18767,1574.1000000,-1735.6000000,-34.2999990,0.0000000,0.0000000,0.0000000); //object(stands) (2) CreateDynamicObject(19358,1578.1000000,-1731.7000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1578.0996000,-1736.7002000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1578.0996000,-1733.5000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1596.2002000,-1756.2002000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1577.9004000,-1744.7998000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1581.0996000,-1744.7998000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19388,1582.7000000,-1731.9000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw15) (1) CreateDynamicObject(1502,1582.7300000,-1732.6700000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(gen_doorint04) (4) CreateDynamicObject(19358,1582.7000000,-1735.1000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (18) CreateDynamicObject(19358,1582.7000000,-1738.3000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (18) CreateDynamicObject(19358,1582.7000000,-1741.5000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (18) CreateDynamicObject(19358,1582.7000000,-1743.2000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (18) CreateDynamicObject(2949,1576.5699000,-1744.0000000,-37.7999990,0.0000000,0.0000000,180.0000000); //object(kmb_lockeddoor) (1) CreateDynamicObject(19358,1592.9004000,-1744.7998000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (18) CreateDynamicObject(19358,1587.5000000,-1733.0000000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (18) CreateDynamicObject(19358,1584.2998000,-1733.0000000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (18) CreateDynamicObject(19388,1590.7002000,-1733.0000000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw15) (1) CreateDynamicObject(1502,1589.9004000,-1733.0000000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(gen_doorint04) (6) CreateDynamicObject(19358,1593.0000000,-1733.0000000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (18) CreateDynamicObject(19358,1594.5000000,-1734.7000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1594.5000000,-1737.9000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1594.5000000,-1741.1000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1594.5000000,-1743.3000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1584.2998000,-1744.7998000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (18) CreateDynamicObject(19358,1587.5000000,-1744.7998000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (18) CreateDynamicObject(19358,1590.7002000,-1744.7998000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (18) CreateDynamicObject(14532,1583.5996000,-1733.7998000,-36.7999990,0.0000000,0.0000000,221.2097200); //object(tv_stand_driv) (1) CreateDynamicObject(14532,1593.4004000,-1743.5996000,-36.7999990,0.0000000,0.0000000,48.0596920); //object(tv_stand_driv) (2) CreateDynamicObject(3077,1584.5000000,-1743.0000000,-38.2000010,0.0000000,0.0000000,307.2500000); //object(nf_blackboard) (1) CreateDynamicObject(2606,1577.7000000,-1708.3000000,-35.1199990,0.0000000,0.0000000,0.0000000); //object(cj_police_counter2) (1) CreateDynamicObject(2606,1577.7002000,-1708.2998000,-34.7000010,0.0000000,0.0000000,0.0000000); //object(cj_police_counter2) (2) CreateDynamicObject(1721,1591.8000000,-1742.5000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (1) CreateDynamicObject(1721,1591.8000000,-1741.9000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (2) CreateDynamicObject(1721,1591.8000000,-1741.3000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (3) CreateDynamicObject(1721,1591.8000000,-1740.7000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (4) CreateDynamicObject(1721,1591.8000000,-1740.1000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (5) CreateDynamicObject(1721,1591.8000000,-1739.5000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (6) CreateDynamicObject(1721,1591.8000000,-1738.9000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (7) CreateDynamicObject(1721,1591.8000000,-1738.3000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (8) CreateDynamicObject(1721,1591.8000000,-1737.7000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (9) CreateDynamicObject(1721,1591.8000000,-1737.1000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (10) CreateDynamicObject(1721,1590.0000000,-1742.4000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (11) CreateDynamicObject(1721,1590.0000000,-1741.8000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (12) CreateDynamicObject(1721,1590.0000000,-1741.2000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (13) CreateDynamicObject(1721,1590.0000000,-1740.6000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (14) CreateDynamicObject(1721,1590.0000000,-1740.0000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (15) CreateDynamicObject(1721,1590.0000000,-1739.4000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (16) CreateDynamicObject(1721,1590.0000000,-1738.8000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (17) CreateDynamicObject(1721,1590.0000000,-1738.2000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (18) CreateDynamicObject(1721,1590.0000000,-1737.6000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (19) CreateDynamicObject(1721,1590.0000000,-1737.0000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (20) CreateDynamicObject(1721,1588.3000000,-1742.4000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (21) CreateDynamicObject(1721,1588.3000000,-1741.8000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (22) CreateDynamicObject(1721,1588.3000000,-1741.2000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (23) CreateDynamicObject(1721,1588.3000000,-1740.6000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (24) CreateDynamicObject(1721,1588.3000000,-1740.0000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (25) CreateDynamicObject(1721,1588.3000000,-1739.4000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (26) CreateDynamicObject(1721,1588.3000000,-1738.8000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (27) CreateDynamicObject(1721,1588.3000000,-1738.2000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (28) CreateDynamicObject(1721,1588.3000000,-1737.6000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (29) CreateDynamicObject(1721,1588.3000000,-1737.0000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(est_chair1) (30) CreateDynamicObject(2614,1582.9000000,-1738.6000000,-35.5999980,0.0000000,0.0000000,90.5000000); //object(cj_us_flag) (1) CreateDynamicObject(2614,1591.8000000,-1717.2000000,-35.5999980,0.0000000,0.0000000,181.7500000); //object(cj_us_flag) (2) CreateDynamicObject(14532,1583.5996000,-1733.7998000,-36.7999990,0.0000000,0.0000000,221.2097200); //object(tv_stand_driv) (1) CreateDynamicObject(2491,1585.4000000,-1738.4000000,-38.2999990,0.0000000,0.0000000,0.0000000); //object(model_stand) (1) CreateDynamicObject(19447,1596.1000000,-1732.0000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1589.2002000,-1732.0000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1582.2002000,-1732.0000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1585.7002000,-1732.0000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1579.9000000,-1732.0000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1578.0996000,-1725.3000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (18) CreateDynamicObject(19358,1595.6000000,-1749.0000000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (18) CreateDynamicObject(19447,1592.5996000,-1732.0000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19388,1592.4000000,-1749.0000000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw15) (1) CreateDynamicObject(19358,1589.2000000,-1749.0000000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (18) CreateDynamicObject(19388,1586.0000000,-1749.0000000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw15) (1) CreateDynamicObject(19358,1582.8000000,-1749.0000000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (18) CreateDynamicObject(19388,1579.6000000,-1749.0000000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw15) (1) CreateDynamicObject(19358,1577.0000000,-1749.0000000,-36.0999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (18) CreateDynamicObject(1502,1578.8000000,-1749.0000000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(gen_doorint04) (6) CreateDynamicObject(1502,1591.5996000,-1749.0996000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(gen_doorint04) (6) CreateDynamicObject(1502,1585.2002000,-1749.0000000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(gen_doorint04) (6) CreateDynamicObject(19358,1582.8000000,-1755.8000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (18) CreateDynamicObject(19358,1582.7998000,-1750.7002000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (18) CreateDynamicObject(19358,1582.7998000,-1753.9004000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (18) CreateDynamicObject(19358,1589.1000000,-1755.8000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (18) CreateDynamicObject(19358,1589.0996000,-1750.5000000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (18) CreateDynamicObject(19358,1589.0996000,-1753.7002000,-36.0999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (18) CreateDynamicObject(1999,1593.8000000,-1754.0000000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(officedesk2) (1) CreateDynamicObject(1742,1595.0000000,-1749.1000000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(med_bookshelf) (7) CreateDynamicObject(1742,1593.5996000,-1749.0996000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(med_bookshelf) (8) CreateDynamicObject(1714,1594.7000000,-1755.4000000,-37.7999990,0.0000000,0.0000000,174.7500000); //object(kb_swivelchair1) (1) CreateDynamicObject(1721,1595.6000000,-1752.3000000,-37.7999990,0.0000000,0.0000000,142.7500000); //object(est_chair1) (31) CreateDynamicObject(1721,1593.3000000,-1752.2000000,-37.7999990,0.0000000,0.0000000,214.4953600); //object(est_chair1) (32) CreateDynamicObject(912,1589.6000000,-1754.3000000,-37.2999990,0.0000000,0.0000000,90.0000000); //object(bust_cabinet_2) (1) CreateDynamicObject(2614,1593.6000000,-1756.0000000,-35.5999980,0.0000000,0.0000000,177.7500000); //object(cj_us_flag) (3) CreateDynamicObject(1999,1580.6000000,-1754.6000000,-37.7999990,0.0000000,0.0000000,50.7500000); //object(officedesk2) (2) CreateDynamicObject(1999,1584.4000000,-1754.0000000,-37.7999990,0.0000000,0.0000000,304.7500000); //object(officedesk2) (3) CreateDynamicObject(1714,1583.6000000,-1755.3000000,-37.7999990,0.0000000,0.0000000,137.2485400); //object(kb_swivelchair1) (2) CreateDynamicObject(1714,1582.0000000,-1755.4000000,-37.7999990,0.0000000,0.0000000,220.2467000); //object(kb_swivelchair1) (3) CreateDynamicObject(1721,1580.4000000,-1752.5000000,-37.7999990,0.0000000,0.0000000,214.4915800); //object(est_chair1) (33) CreateDynamicObject(1721,1579.2000000,-1753.9000000,-37.7999990,0.0000000,0.0000000,251.5000000); //object(est_chair1) (34) CreateDynamicObject(1742,1577.8000000,-1749.0000000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(med_bookshelf) (9) CreateDynamicObject(1742,1584.3000000,-1749.0000000,-37.7999990,0.0000000,0.0000000,0.0000000); //object(med_bookshelf) (10) CreateDynamicObject(1721,1586.6000000,-1754.3000000,-37.7999990,0.0000000,0.0000000,120.2415800); //object(est_chair1) (35) CreateDynamicObject(1721,1585.7000000,-1753.3000000,-37.7999990,0.0000000,0.0000000,120.2398700); //object(est_chair1) (36) CreateDynamicObject(2164,1587.0000000,-1756.1000000,-37.7999990,0.0000000,0.0000000,180.0000000); //object(med_office_unit_5) (2) CreateDynamicObject(2164,1576.6000000,-1753.6000000,-37.7999990,0.0000000,0.0000000,90.0000000); //object(med_office_unit_5) (3) CreateDynamicObject(2614,1584.5000000,-1756.0000000,-35.5999980,0.0000000,0.0000000,179.5000000); //object(cj_us_flag) (4) CreateDynamicObject(2614,1580.5000000,-1756.0000000,-35.7000010,0.0000000,0.0000000,178.7500000); //object(cj_us_flag) (5) CreateDynamicObject(1721,1579.2002000,-1753.9004000,-37.7999990,0.0000000,0.0000000,251.4990200); //object(est_chair1) (37) CreateDynamicObject(19447,1596.1000000,-1741.6000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1589.2002000,-1741.5996000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1592.5996000,-1741.5996000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1585.7002000,-1741.6000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1582.2002000,-1741.5996000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1579.9000000,-1741.6000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19358,1578.1000000,-1736.7000000,-32.5999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1578.1000000,-1731.0000000,-32.5999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1578.0996000,-1733.5000000,-32.5999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(18767,1574.7000000,-1725.1000000,-34.2999990,0.0000000,0.0000000,180.0000000); //object(stands) (1) CreateDynamicObject(19358,1576.9004000,-1729.7000000,-32.5999980,0.0000000,0.0000000,74.9981690); //object(road_sfw12) (20) CreateDynamicObject(19358,1575.0000000,-1731.2000000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19452,1575.0000000,-1729.4000000,-34.2099990,0.0000000,90.0000000,90.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19358,1574.2002000,-1729.4004000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1571.0000000,-1729.4000000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1576.5000000,-1732.8000000,-32.5999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (14) CreateDynamicObject(19358,1576.5000000,-1736.0000000,-32.5999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (14) CreateDynamicObject(19358,1576.5000000,-1739.2000000,-32.5999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (14) CreateDynamicObject(19447,1578.2000000,-1743.1000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19358,1576.9000000,-1738.4000000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (14) CreateDynamicObject(19358,1571.9004000,-1731.2002000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1563.0000000,-1727.9000000,-32.5999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1568.7000000,-1731.2000000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1565.5000000,-1731.2000000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19452,1566.0000000,-1729.4004000,-34.2099990,0.0000000,90.0000000,90.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19358,1567.7998000,-1729.4004000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1545.0000000,-1731.2000000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19452,1558.5000000,-1726.0000000,-34.2000010,0.0000000,90.0000000,90.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19358,1564.5996000,-1729.4004000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1563.0000000,-1725.0000000,-32.5999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19452,1558.5000000,-1723.0000000,-34.2000010,0.0000000,90.0000000,90.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1558.5000000,-1729.4004000,-34.2000010,0.0000000,90.0000000,90.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1550.0000000,-1717.0000000,-34.2000010,0.0000000,90.0000000,90.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1558.5000000,-1720.0000000,-34.2000010,0.0000000,90.0000000,90.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19358,1563.0000000,-1721.9000000,-32.5999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1563.0000000,-1718.8000000,-32.5999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1563.0000000,-1715.9000000,-32.5999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1564.5996000,-1731.2002000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1561.5000000,-1715.2998000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1558.5996000,-1715.2998000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1556.0000000,-1715.2998000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19452,1550.0000000,-1720.0000000,-34.2000010,0.0000000,90.0000000,90.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1550.0000000,-1723.0000000,-34.2000010,0.0000000,90.0000000,90.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1550.0000000,-1726.0000000,-34.2000010,0.0000000,90.0000000,90.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19452,1550.0000000,-1729.4004000,-34.2000010,0.0000000,90.0000000,90.0000000); //object(cs_detrok02) (2) CreateDynamicObject(19358,1553.9004000,-1715.2998000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1550.7998000,-1715.2998000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1548.2002000,-1715.2998000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1545.2998000,-1715.2998000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1545.2000000,-1716.7000000,-32.5999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1545.2000000,-1719.7000000,-32.5999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1545.2000000,-1722.7000000,-32.5999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1545.2000000,-1725.9000000,-32.5999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1545.2000000,-1729.1000000,-32.5999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1545.2000000,-1731.0000000,-32.5999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1561.4004000,-1731.2002000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1559.0000000,-1731.2002000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1556.0000000,-1731.2002000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1554.0000000,-1731.2002000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1551.0000000,-1731.2002000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1548.0000000,-1731.2002000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19447,1596.0996000,-1751.0000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1592.5996000,-1751.0000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1589.2002000,-1751.0000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1582.2002000,-1751.0000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1580.8000000,-1755.5000000,-34.2999990,0.0000000,90.0000000,90.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1578.8000000,-1751.0000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1578.0000000,-1751.0000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1585.7002000,-1751.0000000,-34.2999990,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1590.4000000,-1755.3000000,-34.2999990,0.0000000,90.0000000,90.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1599.4000000,-1755.4000000,-34.2999990,0.0000000,90.0000000,90.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19302,1549.4000000,-1718.6000000,-32.9000020,0.0000000,0.0000000,0.0000000); //object(vgstwires21_lvs) (1) CreateDynamicObject(19388,1549.4000000,-1718.6000000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw15) (1) CreateDynamicObject(19358,1546.2000000,-1718.6000000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1559.8000000,-1716.9000000,-32.5999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19388,1562.2002000,-1718.5996000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw15) (1) CreateDynamicObject(19302,1562.2998000,-1718.5996000,-32.9000020,0.0000000,0.0000000,0.0000000); //object(vgstwires21_lvs) (2) CreateDynamicObject(19358,1550.3000000,-1717.0000000,-32.5999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19358,1559.7998000,-1718.5996000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(19388,1557.4004000,-1718.5996000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw15) (1) CreateDynamicObject(19302,1557.5000000,-1718.5996000,-32.9000020,0.0000000,0.0000000,0.0000000); //object(vgstwires21_lvs) (3) CreateDynamicObject(19358,1555.7002000,-1717.0000000,-32.5999980,0.0000000,0.0000000,0.0000000); //object(road_sfw12) (20) CreateDynamicObject(19388,1552.0000000,-1718.5996000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw15) (1) CreateDynamicObject(19302,1552.0996000,-1718.5996000,-32.9000020,0.0000000,0.0000000,0.0000000); //object(vgstwires21_lvs) (4) CreateDynamicObject(19358,1554.2002000,-1718.5996000,-32.5999980,0.0000000,0.0000000,90.0000000); //object(road_sfw12) (20) CreateDynamicObject(1771,1560.7000000,-1717.0000000,-33.5000000,0.0000000,0.0000000,0.0000000); //object(cj_bunk_bed1) (1) CreateDynamicObject(19452,1558.5000000,-1717.0000000,-34.2000010,0.0000000,90.0000000,90.0000000); //object(cs_detrok02) (2) CreateDynamicObject(1771,1559.0000000,-1716.9000000,-33.5000000,0.0000000,0.0000000,0.0000000); //object(cj_bunk_bed1) (2) CreateDynamicObject(1771,1554.8000000,-1717.0000000,-33.5000000,0.0000000,0.0000000,0.0000000); //object(cj_bunk_bed1) (3) CreateDynamicObject(1771,1545.9000000,-1717.0000000,-33.5000000,0.0000000,0.0000000,0.0000000); //object(cj_bunk_bed1) (4) CreateDynamicObject(2602,1549.8000000,-1715.8000000,-33.5999980,0.0000000,0.0000000,0.0000000); //object(police_cell_toilet) (1) CreateDynamicObject(2602,1551.2000000,-1715.8000000,-33.5999980,0.0000000,0.0000000,0.0000000); //object(police_cell_toilet) (2) CreateDynamicObject(2602,1556.4000000,-1715.8000000,-33.5999980,0.0000000,0.0000000,0.0000000); //object(police_cell_toilet) (3) CreateDynamicObject(2602,1562.4000000,-1715.8000000,-33.5999980,0.0000000,0.0000000,0.0000000); //object(police_cell_toilet) (4) CreateDynamicObject(2008,1552.0000000,-1727.9000000,-34.0999980,0.0000000,0.0000000,0.0000000); //object(officedesk1) (1) CreateDynamicObject(2008,1546.7998000,-1727.9004000,-34.0999980,0.0000000,0.0000000,0.0000000); //object(officedesk1) (7) CreateDynamicObject(2008,1556.2000000,-1727.8000000,-34.0999980,0.0000000,0.0000000,0.0000000); //object(officedesk1) (8) CreateDynamicObject(1671,1547.4000000,-1729.1000000,-33.7000010,0.0000000,0.0000000,180.0000000); //object(swivelchair_a) (2) CreateDynamicObject(1671,1557.1000000,-1729.0000000,-33.7000010,0.0000000,0.0000000,179.9945100); //object(swivelchair_a) (2) CreateDynamicObject(1671,1552.9004000,-1729.0996000,-33.7000010,0.0000000,0.0000000,179.9945100); //object(swivelchair_a) (2) CreateDynamicObject(949,1554.6000000,-1727.8000000,-33.5000000,0.0000000,0.0000000,0.0000000); //object(plant_pot_4) (1) CreateDynamicObject(949,1549.7998000,-1727.9004000,-33.5000000,0.0000000,0.0000000,0.0000000); //object(plant_pot_4) (1) CreateDynamicObject(949,1558.7000000,-1727.9000000,-33.5000000,0.0000000,0.0000000,0.0000000); //object(plant_pot_4) (1) CreateDynamicObject(1808,1545.5000000,-1724.3000000,-34.0999980,0.0000000,0.0000000,90.0000000); //object(cj_watercooler2) (1) CreateDynamicObject(1808,1545.5000000,-1724.7002000,-34.0999980,0.0000000,0.0000000,90.0000000); //object(cj_watercooler2) (2) CreateDynamicObject(2833,1557.4000000,-1724.5000000,-34.0999980,0.0000000,0.0000000,0.0000000); //object(gb_livingrug02) (1) CreateDynamicObject(2836,1550.4000000,-1724.6000000,-34.0999980,0.0000000,0.0000000,0.0000000); //object(gb_livingrug05) (1) CreateDynamicObject(19447,1573.9000000,-1729.8000000,-31.0000000,0.0000000,90.0000000,90.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1578.0000000,-1734.7998000,-31.0000000,0.0000000,90.0000000,0.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1555.0000000,-1729.6000000,-31.0000000,0.0000000,90.0000000,90.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1549.3000000,-1726.5000000,-31.0000000,0.0000000,90.0000000,90.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1564.5000000,-1729.7998000,-31.0000000,0.0000000,90.0000000,90.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1547.5000000,-1729.5000000,-31.0000000,0.0000000,90.0000000,90.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1559.0000000,-1726.5000000,-31.0000000,0.0000000,90.0000000,90.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1559.0000000,-1723.2000000,-31.0000000,0.0000000,90.0000000,90.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1559.0000000,-1719.8000000,-31.0000000,0.0000000,90.0000000,90.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1559.0000000,-1717.0000000,-31.0000000,0.0000000,90.0000000,90.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1549.3000000,-1723.2000000,-31.0000000,0.0000000,90.0000000,90.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1549.2998000,-1717.0000000,-31.0000000,0.0000000,90.0000000,90.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1559.0000000,-1717.0000000,-31.0000000,0.0000000,90.0000000,90.0000000); //object(cs_detrok13) (12) CreateDynamicObject(19447,1549.2998000,-1719.8000000,-31.0000000,0.0000000,90.0000000,90.0000000); //object(cs_detrok13) (12) // Fire station CreateDynamicObject(1649, 1737.09998, -1102.50000, 24.00000, 0.00000, 0.00000, 270.00000); CreateDynamicObject(942, 1721.09998, -1114.80005, 25.50000, 0.00000, 0.25000, 91.25000); CreateDynamicObject(930, 1721.19995, -1111.19995, 23.54000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(931, 1720.90002, -1121.00000, 24.10000, 0.00000, 0.00000, 92.00000); CreateDynamicObject(2567, 1707.80005, -1130.19995, 25.00000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(3800, 1712.69995, -1130.00000, 23.10000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(3800, 1711.09998, -1130.19995, 23.10000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1736.42004, -1094.81995, 28.18000, 0.00000, 0.00000, 0.24000); CreateDynamicObject(2165, 1752.69995, -1104.59998, 23.12000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2165, 1750.80005, -1104.59998, 23.12000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1671, 1751.50000, -1105.90002, 23.52000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1671, 1753.40002, -1105.90002, 23.52000, 0.00000, 0.00000, 179.99001); CreateDynamicObject(1723, 1740.30005, -1095.59998, 23.12000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1723, 1744.59998, -1095.59998, 23.12000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2315, 1740.50000, -1097.40002, 23.12000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2315, 1744.90002, -1097.40002, 23.12000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1723, 1742.30005, -1099.40002, 23.12000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1723, 1746.59998, -1099.40002, 23.12000, 0.00000, 0.00000, 179.99001); CreateDynamicObject(1649, 1714.78003, -1142.39001, 28.10000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1722.90002, -1142.40002, 28.10000, 0.00000, 0.00000, 180.24001); CreateDynamicObject(925, 1720.90002, -1123.59998, 24.10000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(2700, 1743.19995, -1108.00000, 26.50000, 0.00000, 0.00000, 89.75000); CreateDynamicObject(2700, 1755.93994, -1101.44995, 26.30000, 0.00000, 0.00000, 179.99001); CreateDynamicObject(2631, 1735.40002, -1113.90002, 23.10000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2632, 1735.40002, -1115.90002, 23.10000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2631, 1735.40002, -1117.90002, 23.10000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2632, 1735.40002, -1119.90002, 23.10000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2631, 1735.40002, -1121.90002, 23.10000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2632, 1735.40002, -1123.90002, 23.10000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1211, 1729.69995, -1140.59998, 23.50000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1211, 1712.50000, -1140.59998, 23.50000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1211, 1746.80005, -1140.59998, 23.50000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1211, 1729.57996, -1096.68005, 23.50000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1211, 1712.40002, -1096.80005, 23.50000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1238, 1713.80005, -1129.69995, 23.40000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1238, 1713.80005, -1129.69995, 23.60000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1238, 1714.50000, -1129.69995, 23.40000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1238, 1714.50000, -1129.69995, 23.60000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(7090, 1728.40002, -1095.50000, 35.30000, 0.00000, 0.00000, 92.00000); CreateDynamicObject(1502, 1737.14001, -1106.19995, 23.06000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3578, 1729.69995, -1137.30005, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3578, 1729.69995, -1134.30005, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3578, 1712.50000, -1137.30005, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3578, 1704.82996, -1137.38000, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3578, 1738.29004, -1135.20996, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3578, 1746.80005, -1136.90002, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3578, 1746.80005, -1127.19995, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1238, 1740.53003, -1130.07996, 24.60000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1238, 1740.54004, -1130.06995, 24.68000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1238, 1741.40002, -1129.95996, 24.60000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2627, 1735.57996, -1113.58997, 23.15000, 0.00000, 0.00000, 270.00000); CreateDynamicObject(2627, 1735.58997, -1114.73999, 23.15000, 0.00000, 0.00000, 270.00000); CreateDynamicObject(2630, 1735.69995, -1116.56006, 23.15000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(2630, 1735.68005, -1117.78003, 23.15000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(2628, 1736.14001, -1119.76001, 23.15000, 0.00000, 0.00000, 270.00000); CreateDynamicObject(2628, 1736.14001, -1121.45996, 23.15000, 0.00000, 0.00000, 270.00000); CreateDynamicObject(1808, 1736.88000, -1125.26001, 23.09000, 0.00000, 0.00000, 270.00000); CreateDynamicObject(2223, 1744.93994, -1097.45996, 23.68000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2342, 1746.51001, -1097.40002, 23.72000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(3578, 1712.40002, -1101.00000, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3578, 1704.77002, -1101.10999, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3578, 1736.80005, -1099.97998, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3578, 1736.80005, -1101.19995, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3578, 1729.59998, -1101.00000, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3578, 1721.09998, -1100.90002, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1649, 1737.08997, -1102.53003, 27.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1649, 1737.09998, -1106.83997, 27.22000, 0.00000, 0.00000, 270.00000); CreateDynamicObject(1649, 1737.09998, -1098.09998, 27.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1649, 1737.09998, -1098.16003, 24.00000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1615, 1754.19995, -1095.80005, 28.00000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1615, 1754.19995, -1130.00000, 28.00000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1615, 1705.09998, -1107.50000, 27.90000, 0.00000, 0.00000, 184.50000); CreateDynamicObject(1615, 1705.09998, -1130.09998, 27.90000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(638, 1701.50000, -1096.50000, 23.80000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(638, 1701.59998, -1100.30005, 23.80000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(2774, 1730.19995, -1095.57996, 20.50000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2774, 1729.09998, -1095.57996, 20.50000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2774, 1713.19995, -1095.57996, 20.50000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1752.40002, -1094.80005, 27.90000, 0.00000, 0.00000, 0.25000); CreateDynamicObject(1649, 1748.00000, -1094.80005, 27.90000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1743.59998, -1094.80005, 27.90000, 0.00000, 0.00000, 180.24001); CreateDynamicObject(1649, 1739.30005, -1094.80005, 27.90000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1732.09998, -1094.83984, 28.20000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1739.30005, -1094.81995, 24.70000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2774, 1712.00000, -1095.57996, 20.50000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1702.97009, -1097.71997, 27.22000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1649, 1702.96997, -1097.68005, 30.48000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3578, 1712.51294, -1127.09998, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3578, 1704.84399, -1127.19995, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3578, 1754.50000, -1136.00000, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1649, 1727.50000, -1094.80005, 28.20000, 0.18000, 0.00000, 0.00000); CreateDynamicObject(1649, 1723.19995, -1094.80005, 28.20000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1719.40002, -1094.80005, 28.20000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1715.09998, -1094.80005, 28.20000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1710.30005, -1094.80005, 28.20000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1706.00000, -1094.83997, 28.20000, 0.00000, 0.00000, 0.99000); CreateDynamicObject(2774, 1747.27002, -1141.64001, 20.38000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2774, 1746.23999, -1141.69995, 20.00000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2774, 1730.18005, -1141.69995, 18.70000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2774, 1728.88000, -1141.69995, 18.70000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2774, 1711.97998, -1141.69995, 19.20000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2774, 1713.12000, -1141.69995, 19.20000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1740.19995, -1142.40002, 28.20000, 0.00000, 0.00000, 180.50000); CreateDynamicObject(1649, 1744.50000, -1142.38000, 28.20000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1749.09998, -1142.38000, 28.10000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1753.40002, -1142.38000, 28.10000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1649, 1736.30005, -1142.40002, 28.20000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1649, 1731.90002, -1142.42004, 28.20000, 0.00000, 0.00000, 180.24001); CreateDynamicObject(1649, 1727.19995, -1142.40002, 28.10000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1649, 1719.18005, -1142.40002, 28.10000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1710.30005, -1142.40002, 28.20000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1705.95996, -1142.39001, 28.20000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(19461, 1703.01001, -1104.71997, 24.82000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19461, 1756.32996, -1135.59998, 28.28000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19461, 1702.98999, -1135.85999, 24.80000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19461, 1703.00000, -1135.82996, 28.28000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19461, 1756.32996, -1135.62000, 24.82000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19461, 1756.31006, -1101.70996, 28.34000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1737.12000, -1102.46997, 24.00000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1649, 1752.38000, -1094.81995, 24.68000, 0.00000, 0.00000, 0.25000); CreateDynamicObject(1649, 1736.39001, -1094.81995, 28.18000, 0.00000, 0.00000, 180.36000); CreateDynamicObject(1649, 1714.81995, -1142.39001, 28.10000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(3578, 1712.50000, -1137.30005, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3578, 1746.80005, -1127.19995, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(931, 1741.21997, -1130.07996, 24.14000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1428, 1742.60999, -1130.43005, 24.65000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1428, 1742.60999, -1129.76001, 24.65000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1502, 1756.29004, -1099.26001, 23.06000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3578, 1712.50000, -1137.30005, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3578, 1746.80005, -1127.19995, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1238, 1740.54004, -1130.06995, 24.68000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1737.10999, -1102.45996, 27.30000, 0.00000, 0.00000, 270.00000); CreateDynamicObject(1649, 1737.10999, -1106.75000, 27.22000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1649, 1737.09998, -1098.14001, 27.30000, 0.00000, 0.00000, 270.00000); CreateDynamicObject(1649, 1737.10999, -1098.14001, 24.00000, 0.00000, 0.00000, 270.00000); CreateDynamicObject(1649, 1752.40002, -1094.81006, 27.90000, 0.00000, 0.00000, 180.25000); CreateDynamicObject(1649, 1748.00000, -1094.77002, 27.90000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1649, 1743.59998, -1094.81995, 27.90000, 0.00000, 0.00000, 0.02000); CreateDynamicObject(1649, 1739.30005, -1094.80005, 27.90000, 0.00000, 0.00000, 179.74001); CreateDynamicObject(1649, 1732.07996, -1094.81995, 28.20000, 0.00000, 0.00000, 179.99001); CreateDynamicObject(1649, 1739.26001, -1094.81995, 24.70000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1649, 1702.97986, -1098.45996, 27.22000, 0.00000, 0.00000, -90.00000); CreateDynamicObject(1649, 1702.97009, -1098.31006, 30.42000, 0.00000, 0.00000, -90.00000); CreateDynamicObject(1649, 1727.47998, -1094.80005, 28.20000, 0.00000, 0.00000, 179.99001); CreateDynamicObject(1649, 1723.19995, -1094.80005, 28.20000, 0.00000, 0.06000, 179.99001); CreateDynamicObject(1649, 1719.38000, -1094.80005, 28.20000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1649, 1715.00000, -1094.80005, 28.20000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1649, 1710.30005, -1094.80005, 28.20000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1649, 1705.95996, -1094.80005, 28.20000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(2774, 1747.27002, -1141.64001, 20.00000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1740.28003, -1142.40002, 28.20000, 0.00000, 0.00000, 0.50000); CreateDynamicObject(1649, 1753.45996, -1142.38000, 28.10000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1736.26001, -1142.40002, 28.20000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1727.18005, -1142.40002, 28.10000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1719.19995, -1142.40002, 28.10000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1649, 1710.33997, -1142.35999, 28.20000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1649, 1705.97998, -1142.39001, 28.20000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19461, 1756.30005, -1104.88000, 24.83000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1765.79004, -1094.87000, 24.68000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(7090, 1728.57996, -1142.33997, 35.40000, 0.00000, 0.00000, 272.00000); CreateDynamicObject(3578, 1712.50000, -1137.30005, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3578, 1746.80005, -1127.19995, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1428, 1742.60999, -1129.76001, 24.65000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1649, 1743.65002, -1094.81006, 24.68000, 0.00000, 0.00000, 179.95000); CreateDynamicObject(1649, 1743.63000, -1094.81995, 24.70000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19461, 1703.01001, -1104.69995, 28.32000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19461, 1790.56006, -1099.70996, 28.30000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(616, 840.28003, -923.78003, 52.09000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1536, 1737.10999, -1108.27002, 23.02000, 0.00000, 0.00000, 269.98001); CreateDynamicObject(2737, 1751.96997, -1108.23999, 24.51000, 0.00000, 0.00000, 540.32001); CreateDynamicObject(6973, 1742.70996, -1113.82996, 43.62000, 0.00000, 0.00000, 90.54000); CreateDynamicObject(1649, 1748.06006, -1094.81995, 24.70000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1752.37000, -1094.81006, 24.68000, 0.00000, 0.00000, 179.95000); CreateDynamicObject(1649, 1748.04004, -1094.80005, 24.68000, 0.00000, 0.00000, 179.95000); CreateDynamicObject(1536, 1752.80005, -1122.04004, 45.53000, 0.00000, 0.00000, 269.98001); CreateDynamicObject(19486, -755.09998, 1637.62000, 28.51000, 0.00000, 0.00000, -179.52000); CreateDynamicObject(19330, 1773.79797, -1114.10522, 25.07000, -4.00000, -91.00000, -76.00000); CreateDynamicObject(19171, 1748.63000, -1108.31006, 25.71000, -90.00000, 0.00000, 0.00000); CreateDynamicObject(19169, 1748.63000, -1108.31006, 24.22000, -90.00000, 0.00000, 0.00000); CreateDynamicObject(19170, 1747.14001, -1108.31006, 25.71000, -90.00000, 0.00000, 0.00000); CreateDynamicObject(19168, 1747.13000, -1108.31006, 24.22000, -90.00000, 0.00000, 0.00000); CreateDynamicObject(19172, 1756.23999, -1101.45996, 25.05000, 0.00000, 0.00000, -90.00000); CreateDynamicObject(18870, 1740.82996, -1097.39001, 23.61000, 0.00000, 0.00000, 23.40000); CreateDynamicObject(2690, 1742.15002, -1130.68994, 23.57000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2690, 1740.47998, -1130.18005, 23.57000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2690, 1741.50000, -1130.60999, 23.57000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2690, 1740.96997, -1130.64001, 23.57000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2690, 1736.84998, -1125.85999, 23.41000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1368, 1702.41003, -1102.06995, 23.78000, 0.00000, 0.00000, -89.88000); CreateDynamicObject(1368, 1702.41003, -1104.59998, 23.78000, 0.00000, 0.00000, -89.88000); CreateDynamicObject(18075, 1728.70996, -1117.10999, 29.08000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(18075, 1716.81006, -1135.50000, 29.08000, 0.00000, 0.00000, -90.18000); CreateDynamicObject(18075, 1742.42004, -1135.51001, 29.08000, 0.00000, 0.00000, -90.18000); CreateDynamicObject(18075, 1716.77002, -1103.60999, 29.08000, 0.00000, 0.00000, -90.18000); CreateDynamicObject(18075, 1742.64001, -1102.77002, 29.08000, 0.00000, 0.00000, -90.18000); CreateDynamicObject(1215, 1752.56995, -1141.26001, 45.87000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1215, 1704.16003, -1141.27002, 45.87000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1215, 1704.18005, -1096.01001, 45.87000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1215, 1752.56006, -1096.07996, 45.87000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1432, 819.85999, -946.59998, 49.75000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19461, 1790.56006, -1111.21997, 24.81000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19415, 1779.42004, -1094.87000, 24.82000, 0.00000, 0.00000, -90.12000); CreateDynamicObject(19461, 1783.62000, -1094.87000, 28.32000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19461, 1773.00000, -1094.87000, 24.83000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19461, 1764.38000, -1094.87000, 28.32000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19415, 1766.66003, -1094.87000, 24.82000, 0.00000, 0.00000, -90.12000); CreateDynamicObject(19461, 1760.23999, -1094.87000, 28.33000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19397, 1756.29004, -1098.51001, 24.83000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19461, 1790.56006, -1099.60010, 24.81000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19461, 1790.52002, -1111.19995, 28.30000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19461, 1787.89001, -1117.12000, 28.31000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19461, 1778.28003, -1116.10999, 28.31000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19461, 1787.89001, -1117.12000, 24.83000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19461, 1778.28015, -1116.10999, 24.83000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19331, 1782.14478, -1115.72253, 25.07000, 0.00000, 265.00000, -25.00000); CreateDynamicObject(19461, 1774.00000, -1094.87000, 28.32000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19461, 1760.23999, -1094.87000, 24.83000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19461, 1785.79004, -1094.87000, 24.83000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19461, 1785.63000, -1108.41003, 24.81000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19461, 1773.12000, -1108.41003, 28.31000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19397, 1779.20996, -1108.41003, 24.81000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1502, 1778.43005, -1108.41003, 23.06000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19461, 1773.12000, -1108.41003, 24.81000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19461, 1782.75000, -1108.41003, 28.31000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19461, 1792.39001, -1108.41003, 28.31000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(941, 1774.47998, -1107.72998, 23.53000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(937, 1776.84998, -1107.75000, 23.53000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(936, 1780.97998, -1107.70996, 23.55000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(2135, 1787.87000, -1095.43994, 23.07000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2136, 1785.93994, -1095.43994, 23.07000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2139, 1784.96997, -1095.44995, 23.06000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2149, 1785.10999, -1095.28003, 24.28000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2529, 1783.96997, -1095.43994, 23.07000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2139, 1782.96997, -1095.44995, 23.06000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2140, 1788.56995, -1096.38000, 22.93000, 0.00000, 0.00000, 270.00000); CreateDynamicObject(2139, 1781.98999, -1095.44995, 23.06000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2867, 1782.64001, -1095.27002, 24.12000, 0.00000, 0.00000, -32.46000); CreateDynamicObject(2219, 1786.15002, -1095.43005, 24.18000, -25.00000, 25.00000, 47.00000); CreateDynamicObject(18075, 1766.96997, -1101.21997, 29.08000, 0.00000, 0.00000, -90.18000); CreateDynamicObject(18075, 1782.82996, -1107.08997, 29.08000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1968, 1786.25000, -1098.68005, 23.59000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1968, 1786.25000, -1100.67004, 23.59000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1968, 1786.25000, -1102.64001, 23.59000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1968, 1783.16003, -1102.64001, 23.59000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1968, 1783.16003, -1100.67004, 23.59000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1968, 1783.16003, -1098.68005, 23.59000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1969, 1783.16003, -1104.00000, 23.59000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1969, 1786.25000, -1104.00000, 23.59000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19461, 1764.50000, -1107.96997, 24.81000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19461, 1764.50000, -1107.96997, 28.30000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1671, 1758.31006, -1107.78003, 23.52000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1671, 1768.80005, -1105.14001, 23.52000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1649, 1766.44995, -1094.80005, 24.68000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1649, 1779.47998, -1094.85999, 24.68000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1779.60999, -1094.82996, 24.68000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(3578, 1729.60999, -1101.35999, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1255, 816.98999, -943.64001, 50.30000, 0.00000, 0.00000, -85.74000); CreateDynamicObject(19461, 1764.27002, -1103.18994, 24.83000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19397, 1757.84998, -1103.18005, 24.83000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19397, 1770.68994, -1103.18994, 24.83000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19461, 1772.20996, -1108.04004, 24.83000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19461, 1772.20996, -1108.04004, 28.33000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19461, 1767.48999, -1103.20996, 28.33000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19461, 1761.19995, -1103.19995, 28.33000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19461, 1764.29004, -1103.18994, 28.33000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(1502, 1769.92004, -1103.19995, 23.06000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1502, 1757.06006, -1103.18994, 23.06000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1546, 1787.18994, -1095.23999, 24.21000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2342, 1783.16003, -1100.62000, 23.98000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2342, 1786.27002, -1104.04004, 23.98000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2223, 1786.21997, -1098.59998, 23.92000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2223, 1783.06006, -1102.64001, 23.92000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1459, 1744.47998, -1130.51001, 23.69000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1423, 1744.47998, -1129.46997, 23.77000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1424, 1748.28003, -1130.15002, 23.60000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1425, 1746.46997, -1129.51001, 23.49000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1422, 1748.42004, -1129.47998, 23.47000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1282, 1746.40002, -1130.34998, 23.58000, 0.00000, 0.00000, -89.94000); CreateDynamicObject(2605, 1758.29004, -1106.38000, 23.46000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1794, 1763.89001, -1104.80005, 23.07000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1794, 1766.04004, -1104.80005, 23.07000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(2605, 1768.78003, -1103.82996, 23.46000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1235, 1781.09998, -1095.32996, 23.58000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1742, 1763.44995, -1103.16003, 23.07000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1742, 1765.08997, -1103.15002, 23.07000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1997, 1720.56995, -1126.44995, 23.06000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2007, 1756.94995, -1107.78003, 23.06000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(2007, 1771.59998, -1105.64001, 23.06000, 0.00000, 0.00000, -90.90000); CreateDynamicObject(2425, 1782.05005, -1095.04004, 24.12000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1722.87000, -1142.39001, 28.10000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1731.90002, -1142.40002, 28.20000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1749.12000, -1142.38000, 28.10000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1649, 1744.57996, -1142.38000, 28.20000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(7092, 1752.81006, -1134.68994, 81.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1663, 1753.37000, -1103.12000, 23.54000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1663, 1751.51001, -1103.12000, 23.54000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(11665, 1775.58997, -1096.62000, 23.76000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1704, 1777.53003, -1097.71997, 23.07000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1704, 1774.69995, -1097.69995, 23.07000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(2700, 1775.56995, -1095.23999, 25.03000, 0.00000, 0.00000, 270.00000); CreateDynamicObject(2108, 1762.59998, -1103.52002, 23.06000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2108, 1766.37000, -1103.56995, 23.06000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19379, 1742.34998, -1099.65002, 23.01000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19379, 1742.34998, -1109.26001, 23.01000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19379, 1752.84998, -1109.26001, 23.01000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19379, 1752.84998, -1099.65002, 23.03000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19379, 1763.34998, -1099.65002, 23.01000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19379, 1773.82996, -1099.65002, 23.01000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19379, 1784.30005, -1099.65002, 23.01000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19379, 1784.30005, -1109.25000, 23.01000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19379, 1773.82996, -1109.25000, 23.01000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19379, 1763.34998, -1109.25000, 22.99000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19370, 1788.68005, -1106.73999, 22.99000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19370, 1788.69995, -1103.55005, 22.99000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19370, 1788.70996, -1100.37000, 23.01000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19370, 1788.68005, -1097.22998, 23.01000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19370, 1791.21997, -1110.05005, 23.01000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19370, 1791.20996, -1113.19995, 23.01000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19370, 1789.25000, -1115.56995, 23.01000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19370, 1785.76001, -1115.54004, 23.01000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19370, 1782.29004, -1115.56006, 23.01000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19370, 1778.81006, -1114.57996, 23.01000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19370, 1775.32996, -1114.57996, 23.01000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19370, 1771.84998, -1114.57996, 22.99000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(2835, 1765.06995, -1105.68994, 23.08000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2836, 1757.30005, -1104.31995, 23.08000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19461, 1807.62122, -1099.60059, 24.81000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19415, 1807.62122, -1105.47998, 24.81000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19461, 1807.62122, -1111.21997, 24.81000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1807.62122, -1105.76001, 24.68000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19461, 1807.62122, -1101.58997, 28.30000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19461, 1807.62122, -1111.19995, 28.30000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19461, 1795.09143, -1094.87000, 28.32000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19461, 1760.23999, -1094.87000, 28.33000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19415, 1803.93176, -1094.87000, 24.82000, 0.00000, 0.00000, -90.12000); CreateDynamicObject(19461, 1798.12207, -1094.87000, 24.83000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19461, 1801.95825, -1094.87000, 28.32000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(1649, 1803.07300, -1094.87000, 24.68000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1649, 1803.07300, -1094.87000, 24.68000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1807.62122, -1105.76001, 24.68000, 0.00000, 0.00000, -90.00000); CreateDynamicObject(19397, 1790.56006, -1105.46411, 24.81000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19379, 1795.51477, -1104.55017, 23.01000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19379, 1795.51477, -1099.67505, 23.01000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19379, 1802.34436, -1104.48071, 23.01000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19379, 1802.39673, -1099.67505, 23.01000, 0.00000, 90.00000, 0.00000); CreateDynamicObject(1502, 1790.53430, -1106.21399, 23.06000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19369, 1792.19299, -1103.87488, 22.50000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1796, 1794.13123, -1103.24817, 23.07000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1796, 1794.13123, -1099.53174, 23.07000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(2087, 1790.83545, -1101.83203, 23.07000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(2087, 1790.83545, -1098.07202, 23.07000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1796, 1794.13123, -1095.70630, 23.07000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19461, 1790.56006, -1108.24719, 28.30000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19369, 1797.53296, -1103.87488, 22.50000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19369, 1799.13416, -1102.34753, 22.76000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19369, 1800.73315, -1103.87488, 22.50000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19369, 1805.95313, -1103.87488, 22.50000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19369, 1799.13416, -1099.17432, 22.76000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19369, 1799.13416, -1096.54956, 22.76000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1796, 1802.69116, -1103.24817, 23.07000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1796, 1802.69116, -1099.53174, 23.07000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1796, 1802.69116, -1095.70630, 23.07000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(2087, 1799.39539, -1101.83203, 23.07000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(2087, 1799.39539, -1098.07202, 23.07000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1796, 1795.57117, -1103.02820, 23.07000, 0.00000, 0.00000, -90.00000); CreateDynamicObject(1796, 1795.57117, -1099.31165, 23.07000, 0.00000, 0.00000, -90.00000); CreateDynamicObject(1796, 1795.57190, -1095.48389, 23.07000, 0.00000, 0.00000, -90.00000); CreateDynamicObject(2087, 1798.87354, -1100.77197, 23.07000, 0.00000, 0.00000, -90.00000); CreateDynamicObject(2087, 1798.87756, -1097.01599, 23.07000, 0.00000, 0.00000, -90.00000); CreateDynamicObject(1796, 1804.05115, -1103.02820, 23.07000, 0.00000, 0.00000, -90.00000); CreateDynamicObject(1796, 1804.05115, -1099.31165, 23.07000, 0.00000, 0.00000, -90.00000); CreateDynamicObject(2087, 1807.37354, -1100.77197, 23.07000, 0.00000, 0.00000, -90.00000); CreateDynamicObject(18075, 1798.90942, -1101.48120, 29.08000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(3578, 1721.18005, -1135.05005, 22.30000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19415, 1791.93530, -1094.87000, 24.82000, 0.00000, 0.00000, -90.12000); CreateDynamicObject(1649, 1792.76953, -1094.87000, 24.68000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1649, 1792.76953, -1094.87000, 24.68000, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1498, 1703.01855, -1099.90955, 23.05900, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1498, 1702.99060, -1096.89185, 23.05900, 0.00000, 0.00000, -90.00000); CreateDynamicObject(1498, 1750.65540, -1094.84595, 23.04510, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1498, 1753.67786, -1094.81897, 23.04510, 0.00000, 0.00000, 180.00000); CreateDynamicObject(2200, 1775.28821, -1115.87366, 23.07780, 0.00000, 0.00000, 180.00000); CreateDynamicObject(2200, 1777.51404, -1115.87366, 23.07780, 0.00000, 0.00000, 180.00000); CreateDynamicObject(2200, 1779.73682, -1115.87366, 23.07780, 0.00000, 0.00000, 180.00000); CreateDynamicObject(2200, 1781.96082, -1115.87366, 23.07780, 0.00000, 0.00000, 180.00000); CreateDynamicObject(2200, 1781.25183, -1112.36035, 23.07780, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2200, 1779.02954, -1112.36035, 23.07780, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2200, 1776.80957, -1112.36035, 23.07780, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2200, 1782.51294, -1112.05347, 23.07780, 0.00000, 0.00000, 180.00000); CreateDynamicObject(2200, 1780.28796, -1112.05347, 23.07780, 0.00000, 0.00000, 180.00000); CreateDynamicObject(2200, 1778.07104, -1112.05347, 23.07780, 0.00000, 0.00000, 180.00000); CreateDynamicObject(2200, 1773.64246, -1113.97485, 23.07780, 0.00000, 0.00000, 90.00000); CreateDynamicObject(2200, 1773.64246, -1111.74939, 23.07780, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1208, 1777.53979, -1108.78809, 23.08890, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1208, 1776.83984, -1108.78809, 23.08890, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1208, 1776.13977, -1108.78809, 23.08890, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1208, 1775.41980, -1108.78809, 23.08890, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1208, 1774.71985, -1108.78809, 23.08890, 0.00000, 0.00000, 180.00000); CreateDynamicObject(19331, 1781.52966, -1115.71790, 25.07000, 0.00000, 265.00000, -4.00000); CreateDynamicObject(19331, 1781.00073, -1115.69910, 25.07000, 0.00000, 265.00000, -33.00000); CreateDynamicObject(19331, 1780.49707, -1115.77954, 25.07000, 0.00000, 265.00000, -4.00000); CreateDynamicObject(19331, 1779.88684, -1115.64880, 25.07000, 0.00000, 265.00000, -40.00000); CreateDynamicObject(19331, 1779.37720, -1115.62659, 25.07000, 0.00000, 265.00000, 40.00000); CreateDynamicObject(19331, 1778.76819, -1115.71338, 25.07000, 0.00000, 265.00000, -6.00000); CreateDynamicObject(19331, 1778.26331, -1115.70239, 25.07000, 0.00000, 265.00000, 4.00000); CreateDynamicObject(19331, 1777.65649, -1115.68921, 25.07000, 0.00000, 265.00000, -25.00000); CreateDynamicObject(19331, 1777.14661, -1115.70398, 25.07000, 0.00000, 265.00000, 47.00000); CreateDynamicObject(19331, 1776.52551, -1115.72192, 25.07000, 0.00000, 265.00000, -11.00000); CreateDynamicObject(19331, 1776.01550, -1115.72620, 25.07000, 0.00000, 265.00000, 4.00000); CreateDynamicObject(19331, 1775.50549, -1115.73047, 25.07000, 0.00000, 265.00000, -55.00000); CreateDynamicObject(19331, 1774.97852, -1115.63733, 25.07000, 0.00000, 265.00000, -25.00000); CreateDynamicObject(19331, 1774.36487, -1115.74731, 25.07000, 0.00000, 265.00000, -55.00000); CreateDynamicObject(19330, 1773.77942, -1113.69958, 25.07000, -4.00000, -91.00000, -113.00000); CreateDynamicObject(19330, 1773.85120, -1113.08044, 25.07000, -4.00000, -91.00000, -55.00000); CreateDynamicObject(19330, 1773.80261, -1112.64807, 25.07000, -4.00000, -91.00000, -85.00000); CreateDynamicObject(19330, 1773.81299, -1111.98816, 25.07000, -4.00000, -91.00000, -53.00000); CreateDynamicObject(19330, 1773.81091, -1111.32727, 25.07000, -4.00000, -91.00000, -127.00000); CreateDynamicObject(19330, 1773.87378, -1110.18103, 25.07000, -4.00000, -91.00000, -62.00000); CreateDynamicObject(19330, 1773.91455, -1110.68677, 25.07000, -4.00000, -91.00000, -125.00000); CreateDynamicObject(19331, 1773.86304, -1115.73877, 25.07000, 0.00000, 265.00000, 11.00000); CreateDynamicObject(19330, 1782.68787, -1111.86804, 25.07000, -4.00000, -91.00000, 10.00000); CreateDynamicObject(19330, 1782.23010, -1111.83459, 25.07000, -4.00000, -91.00000, 18.00000); CreateDynamicObject(19330, 1781.61719, -1111.82056, 25.07000, -4.00000, -91.00000, -40.00000); CreateDynamicObject(19330, 1781.08679, -1111.93933, 25.07000, -4.00000, -91.00000, -16.00000); CreateDynamicObject(19330, 1780.49768, -1111.90503, 25.07000, -4.00000, -91.00000, 25.00000); CreateDynamicObject(19330, 1779.99109, -1111.83813, 25.07000, -4.00000, -91.00000, -40.00000); CreateDynamicObject(19330, 1779.38184, -1111.77942, 25.07000, -4.00000, -91.00000, 47.00000); CreateDynamicObject(19330, 1778.78003, -1111.78455, 25.07000, -4.00000, -91.00000, -40.00000); CreateDynamicObject(19330, 1778.15027, -1111.89075, 25.07000, -4.00000, -91.00000, -12.00000); CreateDynamicObject(19330, 1777.64539, -1111.88013, 25.07000, -4.00000, -91.00000, -25.00000); CreateDynamicObject(19330, 1777.14551, -1111.87158, 25.07000, -4.00000, -91.00000, 9.00000); CreateDynamicObject(19330, 1776.63965, -1111.85986, 25.07000, -4.00000, -91.00000, 47.00000); CreateDynamicObject(19330, 1776.53137, -1112.47644, 25.07000, -4.00000, -91.00000, 178.00000); CreateDynamicObject(19330, 1777.14514, -1112.58252, 25.07000, -4.00000, -91.00000, 149.00000); CreateDynamicObject(19330, 1777.56812, -1112.50891, 25.07000, -4.00000, -91.00000, -178.00000); CreateDynamicObject(19330, 1778.16846, -1112.60168, 25.07000, -4.00000, -91.00000, -193.00000); CreateDynamicObject(19369, 1783.08862, -1113.25757, 24.81000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19397, 1783.08862, -1110.05676, 24.81000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19369, 1783.08862, -1116.44299, 24.81000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19369, 1783.08862, -1116.44495, 28.31000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19369, 1783.08862, -1113.25757, 28.31000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19369, 1783.08862, -1110.05676, 28.31000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1502, 1783.10864, -1110.81006, 23.04000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19461, 1786.61902, -1119.57288, 24.83000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19461, 1777.52209, -1119.56335, 24.83000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19461, 1777.52209, -1119.56335, 28.31000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19461, 1786.61902, -1119.57288, 28.31000, 0.00000, 0.00000, -90.06000); CreateDynamicObject(19369, 1786.79395, -1111.62354, 24.81000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(2527, 1784.63379, -1113.18726, 23.08350, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2527, 1785.65552, -1113.18616, 23.08350, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2527, 1786.68213, -1113.18616, 23.08350, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2523, 1788.06995, -1108.98718, 23.10110, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2523, 1787.06995, -1108.98718, 23.10110, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2523, 1786.06995, -1108.98718, 23.10110, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2523, 1785.06995, -1108.98718, 23.10110, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2523, 1789.06995, -1108.98718, 23.10110, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19369, 1784.76855, -1115.98303, 24.07000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1502, 1783.15796, -1114.48438, 23.04000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1502, 1784.83777, -1114.48438, 23.04000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19369, 1786.44861, -1115.98303, 24.07000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1502, 1786.51782, -1114.48438, 23.04000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19369, 1788.10864, -1115.98303, 24.07000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19369, 1791.33118, -1114.46082, 24.83000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19369, 1791.33118, -1114.46082, 28.31000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(2525, 1787.29626, -1116.51965, 23.09340, 0.00000, 0.00000, 180.00000); CreateDynamicObject(2525, 1785.65625, -1116.51965, 23.09340, 0.00000, 0.00000, 180.00000); CreateDynamicObject(2525, 1783.95630, -1116.51965, 23.09340, 0.00000, 0.00000, 180.00000); CreateDynamicObject(2523, 1784.06995, -1108.98718, 23.10110, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19369, 1784.75403, -1111.62354, 24.81000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(2527, 1783.61401, -1113.18726, 23.08350, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2527, 1787.70215, -1113.18616, 23.08350, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1502, 1788.17786, -1114.48438, 23.04000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19369, 1789.80859, -1115.98303, 24.83000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19369, 1789.80859, -1115.98303, 28.31000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2525, 1788.95630, -1116.51965, 23.09340, 0.00000, 0.00000, 180.00000); CreateDynamicObject(19330, 1778.75940, -1112.54224, 25.07000, -4.00000, -91.00000, -156.00000); CreateDynamicObject(19330, 1779.34583, -1112.48743, 25.07000, -4.00000, -91.00000, -193.00000); CreateDynamicObject(19330, 1779.88721, -1112.52405, 25.07000, -4.00000, -91.00000, -178.00000); CreateDynamicObject(19330, 1780.56470, -1112.51501, 25.07000, -4.00000, -91.00000, -229.00000); CreateDynamicObject(19330, 1781.07898, -1112.59021, 25.07000, -4.00000, -91.00000, -120.00000); CreateDynamicObject(19330, 1781.59680, -1112.56604, 25.07000, -4.00000, -91.00000, -185.00000); CreateDynamicObject(19330, 1782.11133, -1112.54016, 25.07000, -4.00000, -91.00000, -135.00000); CreateDynamicObject(19330, 1782.72241, -1112.61157, 25.07000, -4.00000, -91.00000, -200.00000); // Hospital CreateObject(19449,-207.3999939,-1739.6999512,676.5000000,0.0000000,0.0000000,0.0000000); CreateObject(17038,-205.8994141,-1747.6992188,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(17038,-204.3994141,-1747.6992188,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(17038,-202.8999939,-1747.6999512,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(17038,-201.3994141,-1747.6992188,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(19460,-207.3990021,-1739.6999512,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19449,-202.6000061,-1734.8000488,676.5000000,0.0000000,0.0000000,90.0000000); CreateObject(19460,-206.1999969,-1734.8010254,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(1569,-206.0000000,-1734.9000244,674.7999878,0.0000000,0.0000000,0.0000000); CreateObject(1569,-203.0000000,-1734.9000244,674.7999878,0.0000000,0.0000000,180.0000000); CreateObject(19387,-196.6992188,-1744.5000000,676.5000000,0.0000000,0.0000000,90.0000000); CreateObject(19357,-201.3994141,-1736.5000000,676.5000000,0.0000000,0.0000000,0.0000000); CreateObject(19368,-201.4003906,-1736.5000000,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(2885,-211.7998047,-1734.7998047,678.4000244,270.0000000,180.0000000,180.0000000); CreateObject(17038,-199.8994141,-1747.6992188,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(17038,-198.3999939,-1747.6999512,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(17038,-196.8994141,-1747.6992188,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(19449,-196.6000061,-1738.0159912,676.5000000,0.0000000,0.0000000,90.0000000); CreateObject(19460,-196.6719971,-1738.0169678,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19449,-195.3994141,-1742.8994141,676.5000000,0.0000000,0.0000000,0.0000000); CreateObject(17038,-195.3994141,-1747.6992188,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(19460,-195.4010010,-1742.9000244,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19449,-201.1000061,-1739.6999512,674.0999756,0.0000000,0.0000000,0.0000000); CreateObject(19460,-201.1005859,-1739.6992188,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19357,-199.8837891,-1744.5000000,676.5000000,0.0000000,0.0000000,90.0000000); CreateObject(19460,-191.1503906,-1744.4990234,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19460,-191.1503906,-1744.5009766,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19368,-199.0749969,-1744.4990234,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19368,-199.0749969,-1744.5009766,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19368,-199.8849945,-1744.4980469,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19460,-201.0989990,-1739.5999756,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19357,-201.3994141,-1746.0996094,676.5000000,0.0000000,0.0000000,0.0000000); CreateObject(19387,-201.3994141,-1749.2998047,676.5000000,0.0000000,0.0000000,0.0000000); CreateObject(19357,-201.3999939,-1752.5000000,676.5000000,0.0000000,0.0000000,0.0000000); CreateObject(19387,-201.3999939,-1755.6999512,676.5000000,0.0000000,0.0000000,0.0000000); CreateObject(19357,-201.3999939,-1758.9000244,676.5000000,0.0000000,0.0000000,0.0000000); CreateObject(17038,-205.8994141,-1768.3994141,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(17038,-204.3999939,-1768.4000244,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(17038,-202.8999939,-1768.4000244,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(17038,-201.3999939,-1768.4000244,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(17038,-199.8994141,-1768.3994141,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(17038,-198.3994141,-1768.3994141,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(17038,-196.8999939,-1768.4000244,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(17038,-195.3994141,-1768.3994141,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(19368,-201.4019928,-1746.0999756,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19368,-201.4010010,-1746.9250488,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19387,-201.3994141,-1762.0996094,676.5000000,0.0000000,0.0000000,0.0000000); CreateObject(19449,-206.1999969,-1763.6999512,676.5000000,0.0000000,0.0000000,90.0000000); CreateObject(19368,-201.4010010,-1751.6369629,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19368,-201.4019928,-1753.3249512,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19368,-201.4010010,-1758.0369873,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19368,-201.4019928,-1759.7249756,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19368,-201.4010010,-1764.4370117,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19460,-206.3000031,-1763.6989746,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19387,-207.3994141,-1746.0996094,676.5000000,0.0000000,0.0000000,0.0000000); CreateObject(19387,-207.3994141,-1758.8994141,676.5000000,0.0000000,0.0000000,0.0000000); CreateObject(19357,-207.3999939,-1762.0999756,676.5000000,0.0000000,0.0000000,0.0000000); CreateObject(19449,-195.3994141,-1752.5000000,676.5000000,0.0000000,0.0000000,0.0000000); CreateObject(19449,-195.3994141,-1762.0996094,676.5000000,0.0000000,0.0000000,0.0000000); CreateObject(19449,-196.5996094,-1758.7998047,676.5000000,0.0000000,0.0000000,90.0000000); CreateObject(19460,-206.0000000,-1733.2998047,672.5999756,270.0000000,179.9945068,0.0000000); CreateObject(19460,-203.0000000,-1733.3000488,672.5999756,270.0000000,179.9945068,0.0000000); CreateObject(19441,-203.7140045,-1733.3010254,677.3980244,0.0000000,270.0000000,90.0000000); CreateObject(19441,-205.2870026,-1733.3010254,677.3970244,0.0000000,270.0000000,90.0000000); CreateObject(2885,-200.8994141,-1734.7998047,678.4000244,270.0000000,0.0000000,0.0000000); CreateObject(2885,-200.8994141,-1741.5000000,678.4000244,270.0000000,0.0000000,0.0000000); CreateObject(2885,-211.7998047,-1741.5000000,678.4000244,270.0000000,179.9945068,179.9945068); CreateObject(2885,-211.7998047,-1748.1992188,678.4000244,270.0000000,0.0000000,0.0000000); CreateObject(2885,-200.8999939,-1748.1999512,678.4000244,270.0000000,0.0000000,0.0000000); CreateObject(2885,-200.8994141,-1754.8994141,678.4000244,270.0000000,0.0000000,0.0000000); CreateObject(2885,-200.8994141,-1761.5996094,678.4000244,270.0000000,0.0000000,0.0000000); CreateObject(2885,-211.7998047,-1761.5996094,678.4000244,270.0000000,0.0000000,0.0000000); CreateObject(17038,-207.3994141,-1747.6992188,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(17038,-208.8994141,-1747.6992188,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(17038,-210.3999939,-1747.6999512,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(17038,-211.8999939,-1747.6999512,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(17038,-213.3994141,-1747.6992188,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(17038,-213.3994141,-1768.3994141,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(17038,-211.8999939,-1768.4000244,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(17038,-210.3994141,-1768.3994141,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(17038,-208.8994141,-1768.3994141,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(17038,-207.3999939,-1768.4000244,668.2999878,0.0000000,270.0000000,0.0000000); CreateObject(19449,-214.6000061,-1758.9000244,676.5000000,0.0000000,0.0000000,0.0000000); CreateObject(19449,-214.5996094,-1749.2998047,676.5000000,0.0000000,0.0000000,0.0000000); CreateObject(19449,-214.6000061,-1739.6999512,676.5000000,0.0000000,0.0000000,0.0000000); CreateObject(19449,-212.1992188,-1734.7998047,676.5000000,0.0000000,0.0000000,90.0000000); CreateObject(19368,-199.8000031,-1744.5010986,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19368,-201.3979950,-1746.0999756,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19368,-201.3990021,-1746.9250488,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19368,-201.3990021,-1751.6369629,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19368,-201.3970032,-1753.3242188,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19368,-201.3990021,-1758.0369873,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19368,-201.3979950,-1759.7249756,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19460,-195.4010010,-1752.5000000,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19460,-195.4003906,-1762.0996094,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19460,-196.6494141,-1758.7988281,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19460,-196.6494141,-1758.8007812,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19460,-207.3979950,-1740.5140381,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19368,-207.3990021,-1761.2370605,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19368,-207.3979950,-1764.4000244,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19460,-214.5989990,-1758.8000488,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19460,-214.5980072,-1749.1999512,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19460,-214.5989990,-1739.5999756,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19460,-215.8000031,-1734.8011475,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19460,-207.4010010,-1739.6999512,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19460,-207.4013672,-1740.5136719,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19368,-207.4011993,-1761.2370605,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19368,-207.4010010,-1764.3994141,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(3034,-204.3994141,-1763.5996094,676.7000122,0.0000000,0.0000000,179.9945068); CreateObject(1523,-201.3699951,-1756.4499512,674.7399902,0.0000000,0.0000000,90.0000000); CreateObject(1523,-201.3691406,-1750.0498047,674.7399902,0.0000000,0.0000000,90.0000000); CreateObject(1523,-201.3699951,-1762.8499756,674.7399902,0.0000000,0.0000000,90.0000000); CreateObject(2686,-201.5130005,-1744.9000244,676.4000244,0.0000000,0.0000000,270.0000000); CreateObject(2685,-201.5130005,-1745.4000244,676.4000244,0.0000000,0.0000000,270.0000000); CreateObject(2688,-207.2998047,-1747.5996094,676.2999878,0.0000000,0.0000000,90.0000000); CreateObject(16101,-201.5000000,-1748.5000000,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-201.5000000,-1750.0000000,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-201.5000000,-1754.9000244,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-201.5000000,-1756.4000244,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-201.5000000,-1761.3000488,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-201.5000000,-1762.8000488,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-201.3291016,-1748.5000000,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-201.3300018,-1750.0000000,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-201.3300018,-1754.9000244,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-201.3300018,-1756.4000244,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-201.3300018,-1761.3000488,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-201.3300018,-1762.8000488,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(14487,-211.8000031,-1751.5000000,678.0999756,0.0000000,0.0000000,0.0000000); CreateObject(14487,-211.7998047,-1729.5996094,678.0999756,0.0000000,0.0000000,0.0000000); CreateObject(14487,-218.5996094,-1729.5996094,678.0999756,0.0000000,0.0000000,0.0000000); CreateObject(14487,-218.6000061,-1754.3000488,678.0999756,0.0000000,0.0000000,0.0000000); CreateObject(14487,-190.8994141,-1753.5996094,678.0999756,0.0000000,0.0000000,0.0000000); CreateObject(14487,-190.8999939,-1735.1999512,678.0999756,0.0000000,0.0000000,0.0000000); CreateObject(14487,-190.8994141,-1731.6992188,678.0999756,0.0000000,0.0000000,0.0000000); CreateObject(1523,-207.3691406,-1746.8496094,674.7399902,0.0000000,0.0000000,90.0000000); CreateObject(1523,-207.3699951,-1759.6500244,674.7399902,0.0000000,0.0000000,90.0000000); CreateObject(16101,-207.3291016,-1745.2998047,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-207.3300018,-1746.8199463,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-207.3300018,-1758.0999756,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-207.3300018,-1759.6199951,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-207.5000000,-1759.5999756,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-207.5000000,-1758.0999756,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-207.5000000,-1746.8000488,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-207.5000000,-1745.2998047,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(1999,-200.5000000,-1740.3994141,674.7999878,0.0000000,0.0000000,90.0000000); CreateObject(2009,-199.5000000,-1743.7998047,674.7999878,0.0000000,0.0000000,90.0000000); CreateObject(1671,-199.5000000,-1739.3000488,675.2000122,0.0000000,0.0000000,270.0000000); CreateObject(1671,-199.2998047,-1743.0000000,675.2000122,0.0000000,0.0000000,270.0000000); CreateObject(19387,-213.0000000,-1742.6992188,676.5000000,0.0000000,0.0000000,90.0000000); CreateObject(19357,-209.7998047,-1742.6992188,673.9010010,0.0000000,0.0000000,90.0000000); CreateObject(19357,-209.0000000,-1742.7001953,673.9000244,0.0000000,0.0000000,90.0000000); CreateObject(19449,-212.1999969,-1742.6989746,679.0000000,0.0000000,0.0000000,90.0000000); CreateObject(19466,-208.5000000,-1742.6999512,676.4000244,0.0000000,0.0000000,90.0000000); CreateObject(19466,-210.7402344,-1742.6992188,676.4000244,0.0000000,0.0000000,90.0000000); CreateObject(19368,-209.0000000,-1742.6989746,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19368,-210.6640015,-1742.6979980,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19368,-215.3739929,-1742.6989746,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19368,-215.3750000,-1742.7001953,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19368,-209.0000000,-1742.7011719,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19368,-210.6640015,-1742.7021484,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(1523,-213.7890625,-1742.7294922,674.7399902,0.0000000,0.0000000,0.0000000); CreateObject(16101,-212.2998047,-1742.7998047,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-213.8000031,-1742.8000488,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-213.8000031,-1742.5999756,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-212.3000031,-1742.5999756,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-207.5000000,-1742.6992188,666.9000244,0.0000000,0.0000000,0.0000000); CreateObject(3657,-213.8999939,-1745.6999512,675.2999878,0.0000000,0.0000000,90.0000000); CreateObject(3394,-213.7998047,-1739.0000000,674.7999878,0.0000000,0.0000000,179.9945068); CreateObject(3396,-208.1992188,-1737.0000000,674.7999878,0.0000000,0.0000000,0.0000000); CreateObject(3397,-208.1992188,-1740.8994141,674.7999878,0.0000000,0.0000000,0.0000000); CreateObject(14487,-218.6000061,-1731.8000488,678.0999756,0.0000000,0.0000000,0.0000000); CreateObject(2007,-213.6992188,-1735.3994141,674.7999878,0.0000000,0.0000000,0.0000000); CreateObject(2007,-212.6992188,-1735.3994141,674.7999878,0.0000000,0.0000000,0.0000000); CreateObject(2132,-211.0996094,-1735.3994141,674.7999878,0.0000000,0.0000000,0.0000000); CreateObject(14532,-211.3994141,-1737.0996094,675.7800293,0.0000000,0.0000000,194.7491455); CreateObject(2146,-211.0996094,-1738.7998047,675.2700195,0.0000000,0.0000000,0.0000000); CreateObject(3657,-206.8999939,-1754.5999756,675.2999878,0.0000000,0.0000000,90.0000000); CreateObject(2811,-201.8994141,-1735.3994141,674.7999878,0.0000000,0.0000000,139.9932861); CreateObject(2811,-201.8999939,-1763.1999512,674.7999878,0.0000000,0.0000000,219.9957275); CreateObject(2811,-206.8999939,-1763.1999512,674.7999878,0.0000000,0.0000000,149.9957275); CreateObject(3657,-206.8999939,-1739.5999756,675.2999878,0.0000000,0.0000000,90.0000000); CreateObject(2811,-206.8994141,-1735.3994141,674.7999878,0.0000000,0.0000000,221.9897461); CreateObject(2688,-201.5000000,-1760.5000000,676.4000244,0.0000000,0.0000000,270.0000000); CreateObject(19460,-201.5000000,-1739.6999512,679.9000244,0.0000000,179.9945068,0.0000000); CreateObject(19460,-207.3000031,-1739.6999512,679.9000244,0.0000000,179.9945068,0.0000000); CreateObject(19460,-207.3000031,-1749.3000488,679.9000244,0.0000000,179.9945068,0.0000000); CreateObject(19460,-207.3000031,-1758.9000244,679.9000244,0.0000000,179.9945068,0.0000000); CreateObject(19460,-201.5000000,-1749.3000488,679.9000244,0.0000000,179.9945068,0.0000000); CreateObject(19460,-201.5000000,-1758.9000244,679.9000244,0.0000000,179.9945068,0.0000000); CreateObject(19460,-204.8000031,-1734.9000244,679.9000244,0.0000000,179.9945068,90.0000000); CreateObject(19460,-206.3999939,-1763.5999756,679.9000244,0.0000000,179.9945068,90.0000000); CreateObject(19460,-214.5000000,-1758.9000244,679.9000244,0.0000000,179.9945068,0.0000000); CreateObject(19460,-214.5000000,-1749.3000488,679.9000244,0.0000000,179.9945068,0.0000000); CreateObject(19460,-214.5000000,-1739.6999512,679.9000244,0.0000000,179.9945068,0.0000000); CreateObject(19460,-207.5000000,-1758.9000244,679.9000244,0.0000000,179.9945068,0.0000000); CreateObject(19460,-207.5000000,-1749.3000488,679.9000244,0.0000000,179.9945068,0.0000000); CreateObject(19460,-207.5000000,-1739.6999512,679.9000244,0.0000000,179.9945068,0.0000000); CreateObject(19460,-214.3999939,-1734.9000244,679.9000244,0.0000000,179.9945068,90.0000000); CreateObject(19460,-212.1999969,-1742.8000488,679.9000244,0.0000000,179.9945068,90.0000000); CreateObject(19460,-212.1999969,-1742.5999756,679.9000244,0.0000000,179.9945068,90.0000000); CreateObject(19460,-196.6000061,-1744.4000244,679.9000244,0.0000000,179.9945068,90.0000000); CreateObject(19460,-196.6000061,-1738.0999756,679.9000244,0.0000000,179.9945068,90.0000000); CreateObject(19460,-196.6000061,-1744.5999756,679.9000244,0.0000000,179.9945068,90.0000000); CreateObject(19460,-196.6000061,-1758.6999512,679.9000244,0.0000000,179.9945068,90.0000000); CreateObject(19460,-196.6000061,-1758.9000244,679.9000244,0.0000000,179.9945068,90.0000000); CreateObject(19460,-195.5000000,-1758.9000244,679.9000244,0.0000000,179.9945068,0.0000000); CreateObject(19460,-195.5000000,-1749.3000488,679.9000244,0.0000000,179.9945068,0.0000000); CreateObject(19460,-195.5000000,-1739.6999512,679.9000244,0.0000000,179.9945068,0.0000000); CreateObject(19357,-209.0000000,-1748.8010254,673.9010010,0.0000000,0.0000000,90.0000000); CreateObject(19449,-207.3999939,-1752.5000000,676.5000000,0.0000000,0.0000000,0.0000000); CreateObject(19460,-207.4010010,-1751.5999756,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19460,-207.3990021,-1751.5999756,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19460,-207.4019928,-1753.3000488,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19460,-207.3979950,-1753.3000488,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(3657,-206.8999939,-1750.4000244,675.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19387,-213.0000000,-1748.8000488,676.5000000,0.0000000,0.0000000,90.0000000); CreateObject(19449,-212.1999969,-1748.8010254,679.0000000,0.0000000,0.0000000,90.0000000); CreateObject(19357,-209.8000031,-1748.8000488,673.9000244,0.0000000,0.0000000,90.0000000); CreateObject(19466,-208.6000061,-1748.8000488,676.4000244,0.0000000,0.0000000,90.0000000); CreateObject(19466,-210.8404999,-1748.8000488,676.4000244,0.0000000,0.0000000,90.0000000); CreateObject(19449,-212.1999969,-1756.1999512,676.5000000,0.0000000,0.0000000,90.0000000); CreateObject(1523,-213.7890015,-1748.8299561,674.7399902,0.0000000,0.0000000,0.0000000); CreateObject(19460,-212.1999969,-1748.6999512,679.9000244,0.0000000,179.9945068,90.0000000); CreateObject(19460,-212.1999969,-1748.9000244,679.9000244,0.0000000,179.9945068,90.0000000); CreateObject(19460,-212.1999969,-1756.0999756,679.9000244,0.0000000,179.9945068,90.0000000); CreateObject(19460,-212.3000031,-1756.1989746,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19368,-209.0000000,-1748.7990000,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19368,-210.6629944,-1748.7980000,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19368,-210.6621094,-1748.8027344,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19368,-209.0000000,-1748.8017578,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19368,-215.3750000,-1748.7989502,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19368,-215.3750000,-1748.8007812,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(3397,-208.1999969,-1750.8000488,674.7999878,0.0000000,0.0000000,0.0000000); CreateObject(3396,-208.1999969,-1754.4000244,674.7999878,0.0000000,0.0000000,0.0000000); CreateObject(19460,-212.1999969,-1756.3000488,679.9000244,0.0000000,179.9945068,90.0000000); CreateObject(2132,-209.8999939,-1755.5999756,674.7999878,0.0000000,0.0000000,180.0000000); CreateObject(2007,-212.3000031,-1755.5999756,674.7999878,0.0000000,0.0000000,180.0000000); CreateObject(2007,-213.3000031,-1755.5999756,674.7999878,0.0000000,0.0000000,179.9945068); CreateObject(3394,-213.8000031,-1752.1999512,674.7999878,0.0000000,0.0000000,179.9945068); CreateObject(2146,-211.1000061,-1751.9000244,675.2999878,0.0000000,0.0000000,0.0000000); CreateObject(14532,-210.6999969,-1753.5000000,675.7999878,0.0000000,0.0000000,14.0000000); CreateObject(19460,-212.2998047,-1756.2001953,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(3657,-201.8994141,-1746.5000000,675.2999878,0.0000000,0.0000000,270.0000000); CreateObject(2811,-214.0000000,-1743.4000244,674.7999878,0.0000000,0.0000000,251.9897461); CreateObject(2811,-214.0000000,-1748.0999756,674.7999878,0.0000000,0.0000000,295.9879761); CreateObject(16101,-207.5000000,-1748.8000488,666.9000244,0.0000000,0.0000000,0.0000000); CreateObject(3394,-213.8000031,-1761.5000000,674.7999878,0.0000000,0.0000000,179.9945068); CreateObject(2007,-214.0000000,-1758.5999756,674.7999878,0.0000000,0.0000000,90.0000000); CreateObject(2007,-214.0000000,-1757.5999756,674.7999878,0.0000000,0.0000000,90.0000000); CreateObject(2132,-210.1000061,-1763.0999756,674.7999878,0.0000000,0.0000000,179.9945068); CreateObject(3396,-208.1999969,-1761.6999512,674.7999878,0.0000000,0.0000000,0.0000000); CreateObject(3397,-210.8000031,-1756.6999512,674.7999878,0.0000000,0.0000000,90.0000000); CreateObject(2146,-211.1999969,-1759.9000244,675.2999878,0.0000000,0.0000000,0.0000000); CreateObject(11237,-230.0000000,-1760.4000244,698.9000244,0.0000000,180.0000000,180.0000000); CreateObject(3053,-211.1999969,-1760.4000244,678.4000244,0.0000000,0.0000000,0.0000000); CreateObject(16101,-211.1999969,-1760.4000244,688.0999756,0.0000000,180.0000000,0.0000000); CreateObject(2596,-214.3000031,-1760.0999756,676.7000122,0.0000000,0.0000000,90.0000000); CreateObject(2885,-211.8000031,-1754.9000244,678.4000244,270.0000000,0.0000000,0.0000000); CreateObject(2596,-214.3000031,-1760.8000488,676.7000122,0.0000000,0.0000000,90.0000000); CreateObject(2596,-214.3000031,-1760.8000488,677.2999878,0.0000000,0.0000000,90.0000000); CreateObject(2596,-214.3000031,-1760.0999756,677.2999878,0.0000000,0.0000000,90.0000000); CreateObject(16101,-222.6000061,-1760.4000244,677.9000244,0.0000000,90.0000000,0.0000000); CreateObject(16101,-214.5000000,-1760.4000244,666.19387220,0.0000000,0.0000000,0.0000000); CreateObject(3808,-207.2500000,-1757.8000488,676.2999878,0.0000000,0.0000000,0.0000000); CreateObject(3808,-212.0000000,-1742.8499756,676.2999878,0.0000000,0.0000000,270.0000000); CreateObject(3808,-212.0000000,-1748.6600342,676.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19460,-201.3000031,-1749.5000000,679.9000244,0.0000000,179.9945068,0.0000000); CreateObject(19460,-201.3000031,-1759.0999756,679.9000244,0.0000000,179.9945068,0.0000000); CreateObject(2009,-199.5000000,-1747.8000488,674.7999878,0.0000000,0.0000000,90.0000000); CreateObject(1999,-200.5000000,-1746.0999756,674.8010254,0.0000000,0.0000000,90.0000000); CreateObject(1671,-199.3999939,-1746.9000244,675.2000122,0.0000000,0.0000000,264.0000000); CreateObject(1671,-199.3999939,-1745.0999756,675.2000122,0.0000000,0.0000000,278.0000000); CreateObject(2009,-196.8000031,-1753.8000488,674.8010254,0.0000000,0.0000000,90.0000000); CreateObject(1999,-197.8000031,-1752.0999756,674.7999878,0.0000000,0.0000000,90.0000000); CreateObject(1999,-198.6999969,-1752.8000488,674.7999878,0.0000000,0.0000000,270.0000000); CreateObject(2009,-199.6999969,-1751.0999756,674.8010254,0.0000000,0.0000000,270.0000000); CreateObject(1671,-197.6000061,-1753.0000000,675.2000122,0.0000000,0.0000000,282.0000000); CreateObject(1671,-196.8000031,-1751.3000488,675.2000122,0.0000000,0.0000000,260.0000000); CreateObject(1671,-199.8000031,-1752.0999756,675.2000122,0.0000000,0.0000000,84.0000000); CreateObject(1671,-199.8000031,-1753.8000488,675.2000122,0.0000000,0.0000000,104.0000000); CreateObject(2009,-196.0000000,-1757.1999512,674.7999878,0.0000000,0.0000000,180.0000000); CreateObject(1999,-197.6999969,-1758.1999512,674.8010254,0.0000000,0.0000000,180.0000000); CreateObject(1671,-196.8999939,-1757.3000488,675.2000122,0.0000000,0.0000000,0.0000000); CreateObject(1671,-198.6999969,-1758.0000000,675.2000122,0.0000000,0.0000000,0.0000000); CreateObject(2202,-196.0000000,-1746.1999512,674.7800293,0.0000000,0.0000000,270.0000000); CreateObject(2811,-195.8999939,-1745.0999756,674.7999878,0.0000000,0.0000000,115.9932861); CreateObject(2007,-196.0000000,-1748.3000488,674.7999878,0.0000000,0.0000000,270.0000000); CreateObject(2007,-196.0000000,-1749.3000488,674.7999878,0.0000000,0.0000000,270.0000000); CreateObject(2811,-200.8999939,-1758.3000488,674.7999878,0.0000000,0.0000000,141.9881592); CreateObject(2611,-198.1999969,-1758.6700439,676.7999878,0.0000000,0.0000000,180.0000000); CreateObject(2611,-201.2700043,-1746.4000244,676.5999756,0.0000000,0.0000000,89.9945068); CreateObject(19449,-215.8000031,-1763.6999512,676.5000000,0.0000000,0.0000000,90.0000000); CreateObject(19449,-201.3999939,-1768.5000000,676.5000000,0.0000000,0.0000000,0.0000000); CreateObject(19449,-195.3999939,-1771.6999512,676.5000000,0.0000000,0.0000000,0.0000000); CreateObject(2885,-200.8999939,-1768.3000488,678.4000244,270.0000000,0.0000000,0.0000000); CreateObject(19460,-201.3990021,-1767.5799561,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19460,-195.4010010,-1771.6999512,673.2999878,0.0000000,0.0000000,0.0000000); CreateObject(19460,-195.5000000,-1768.5000000,679.9000244,0.0000000,179.9945068,0.0000000); CreateObject(19460,-201.3000031,-1768.6999512,679.9000244,0.0000000,179.9945068,0.0000000); CreateObject(19449,-196.6000061,-1772.4000244,676.5000000,0.0000000,0.0000000,90.0000000); CreateObject(19460,-196.6000061,-1772.3990479,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(19460,-196.6000061,-1772.3000488,679.9000244,0.0000000,179.9945068,90.0000000); CreateObject(14487,-190.8999939,-1778.1999512,678.0999756,0.0000000,0.0000000,0.0000000); CreateObject(1789,-211.8000031,-1753.0999756,675.2999878,0.0000000,0.0000000,290.0000000); CreateObject(1789,-211.8994141,-1759.1992188,675.2999878,0.0000000,0.0000000,270.0000000); CreateObject(1789,-210.1999969,-1737.6999512,675.2999878,0.0000000,0.0000000,99.9951172); CreateObject(1800,-199.0000000,-1759.5000000,674.7000122,0.0000000,0.0000000,270.0000000); CreateObject(1800,-199.0000000,-1771.5000000,674.7000122,0.0000000,0.0000000,270.0000000); CreateObject(1800,-199.0000000,-1767.5999756,674.7000122,0.0000000,0.0000000,270.0000000); CreateObject(1800,-199.0000000,-1763.6999512,674.7000122,0.0000000,0.0000000,270.0000000); CreateObject(1800,-200.6999969,-1766.9000244,674.7000122,0.0000000,0.0000000,0.0000000); CreateObject(1800,-200.6999969,-1773.3000488,674.7000122,0.0000000,0.0000000,0.0000000); CreateObject(1789,-196.1999969,-1770.6999512,675.2999878,0.0000000,0.0000000,180.0000000); CreateObject(1789,-196.1999969,-1766.6999512,675.2999878,0.0000000,0.0000000,179.9945068); CreateObject(1789,-196.1999969,-1762.9000244,675.2999878,0.0000000,0.0000000,179.9945068); CreateObject(1789,-196.3000031,-1760.6999512,675.2999878,0.0000000,0.0000000,0.0000000); CreateObject(1789,-200.5000000,-1766.1999512,675.2999878,0.0000000,0.0000000,0.0000000); CreateObject(1789,-200.5000000,-1769.4000244,675.2999878,0.0000000,0.0000000,180.0000000); CreateObject(19460,-216.0000000,-1763.5999756,679.9000244,0.0000000,179.9945068,90.0000000); CreateObject(1999,-197.5000000,-1740.4000244,674.7999878,0.0000000,0.0000000,90.0000000); CreateObject(1671,-196.5000000,-1739.3000488,675.2000122,0.0000000,0.0000000,270.0000000); CreateObject(19460,-215.8999939,-1763.6989746,673.2999878,0.0000000,0.0000000,90.0000000); CreateObject(16101,-212.3000031,-1748.6999512,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-213.8000031,-1748.6999512,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-213.8000031,-1748.9000244,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(16101,-212.3000031,-1748.9000244,666.2999878,0.0000000,0.0000000,0.0000000); CreateObject(2852,-206.8000031,-1742.8000488,675.2800293,0.0000000,0.0000000,0.0000000); CreateObject(2315,-206.8000031,-1742.4000244,674.7999878,0.0000000,0.0000000,270.0000000); CreateObject(2855,-206.6999969,-1743.6999512,675.2999878,0.0000000,0.0000000,0.0000000); SetObjectMaterial(CreateObject(11435,-204.3999939,-1745.0999756,679.4000244,0.0000000,0.0000000,270.0000000), 1, 14532, "drivingbit", "blak_1"); SetObjectMaterial(CreateObject(11435,-204.3999939,-1752.0000000,679.4000244,0.0000000,0.0000000,270.0000000), 1, 14532, "drivingbit", "blak_1"); SetObjectMaterial(CreateObject(11435,-204.3999939,-1758.8000488,679.4000244,0.0000000,0.0000000,270.0000000), 1, 14532, "drivingbit", "blak_1"); SetObjectMaterial(CreateObject(11435,-198.6000061,-1764.0000000,679.4000244,0.0000000,0.0000000,270.0000000), 1, 14532, "drivingbit", "blak_1"); SetObjectMaterial(CreateObject(11435,-198.6000061,-1769.1999512,679.4000244,0.0000000,0.0000000,270.0000000), 1, 14532, "drivingbit", "blak_1"); SetObjectMaterial(CreateObject(11435,-198.6000061,-1756.3000488,679.4000244,0.0000000,0.0000000,270.0000000), 1, 14532, "drivingbit", "blak_1"); SetObjectMaterial(CreateObject(11435,-198.6000061,-1749.9000244,679.4000244,0.0000000,0.0000000,270.0000000), 1, 14532, "drivingbit", "blak_1"); SetObjectMaterialText(CreateObject(19353, -195.4142, -1741.4693, 676.4188, 0.0000, 0.0000, 180.0), "HOSPITAL", 0, 140, "Cambria", 130, 1, -1, 0, 1); SetObjectMaterialText(CreateObject(19353, -195.4142, -1741.4362, 676.8190, 0.0000, 0.0000, 180), "SAN ANDREAS COUNTY", 0, 140, "Cambria", 55, 1, -584707328, 0, 1); SetObjectMaterialText(CreateObject(19353, -195.4142, -1739.7816, 676.8000, 0.0000, 0.0000, 180), "|", 0, 140, "Arial", 200, 1, -13750738, 0, 1); SetObjectMaterialText(CreateObject(19353, -195.4142, -1743.1800, 676.8000, 0.0000, 0.0000, 180), "|", 0, 140, "Arial", 200, 1, -13750738, 0, 1); // Bank interior CreateObject(14602, 1443.33521, -985.86328, 1000.47083, 0.00000, 0.00000, 0.00000); CreateObject(19450, 1420.34436, -987.59058, 996.85638, 0.00000, 0.00000, 0.00000); CreateObject(19450, 1420.34436, -997.22662, 996.85638, 0.00000, 0.00000, 0.00000); CreateObject(19450, 1420.34436, -977.94659, 996.85638, 0.00000, 0.00000, 0.00000); CreateObject(19450, 1420.34436, -968.31262, 996.85638, 0.00000, 0.00000, 0.00000); CreateObject(19377, 1425.39563, -997.23810, 998.69531, 0.00000, -90.00000, 0.00000); CreateObject(19379, 1425.52917, -996.80780, 995.01910, 0.00000, -90.00000, 0.00000); CreateObject(19377, 1425.39563, -987.59912, 998.69928, 0.00000, -90.00000, 0.00000); CreateObject(19377, 1425.39563, -977.97009, 998.69531, 0.00000, -90.00000, 0.00000); CreateObject(19377, 1425.39563, -968.33612, 998.69531, 0.00000, -90.00000, 0.00000); CreateObject(19450, 1425.15210, -1001.58301, 996.85638, 0.00000, 0.00000, 89.99190); CreateObject(19450, 1444.42175, -992.99921, 996.85638, 0.00000, 0.00000, 89.99190); CreateObject(19450, 1425.24097, -1001.64844, 996.85638, 0.00000, 0.00000, 89.99190); CreateObject(19450, 1435.60022, -997.79559, 996.85638, 0.00000, 0.00000, 0.00000); CreateObject(19450, 1430.77246, -1001.59528, 996.85638, 0.00000, 0.00000, 89.99190); CreateObject(1569, 1432.61536, -1001.55011, 995.10773, 0.00000, 0.00000, 0.00000); CreateObject(19388, 1438.83838, -993.01642, 996.85449, 0.00000, 0.00000, 90.90000); CreateObject(19431, 1436.57031, -993.03369, 996.85193, 0.00000, 0.00000, 89.95040); CreateObject(19431, 1436.32031, -993.03369, 996.85388, 0.00000, 0.00000, 89.95040); CreateObject(19450, 1425.15210, -970.08197, 996.85638, 0.00000, 0.00000, 89.99190); CreateObject(19450, 1427.71814, -970.08197, 996.85638, 0.00000, 0.00000, 89.99190); CreateObject(19450, 1439.00610, -970.08197, 996.85638, 0.00000, 0.00000, 89.99190); CreateObject(19450, 1448.52612, -970.08197, 996.85638, 0.00000, 0.00000, 89.99190); CreateObject(19388, 1433.38245, -970.08441, 996.86249, 0.00000, 0.00000, 89.78290); CreateObject(19450, 1444.40637, -976.56262, 996.85638, 0.00000, 0.00000, 0.00000); CreateObject(19450, 1444.40637, -966.93060, 996.85638, 0.00000, 0.00000, 0.00000); CreateObject(19450, 1444.40637, -994.98560, 996.85638, 0.00000, 0.00000, 0.00000); CreateObject(19377, 1435.89355, -997.23810, 998.69531, 0.00000, -90.00000, 0.00000); CreateObject(19377, 1435.89355, -987.59912, 998.70532, 0.00000, -90.00000, 0.00000); CreateObject(19377, 1435.89355, -977.97009, 998.70532, 0.00000, -90.00000, 0.00000); CreateObject(19377, 1435.89355, -968.33612, 998.69531, 0.00000, -90.00000, 0.00000); CreateObject(19377, 1446.39160, -968.33612, 998.69531, 0.00000, -90.00000, 0.00000); CreateObject(19377, 1446.39160, -977.97009, 998.69733, 0.00000, -90.00000, 0.00000); CreateObject(19377, 1446.39160, -987.59912, 998.69733, 0.00000, -90.00000, 0.00000); CreateObject(19450, 1444.40637, -986.19659, 1000.16260, -180.00000, 0.00000, 0.00000); CreateObject(1569, 1457.74744, -985.02881, 995.10431, 0.00000, 0.00000, -90.06000); CreateObject(19377, 1446.35864, -997.23810, 998.69531, 0.00000, -90.00000, 0.00000); CreateObject(16101, 1424.50464, -988.71008, 990.73462, 0.00000, 0.00000, 0.00000); CreateObject(16101, 1424.50464, -990.89410, 990.73462, 0.00000, 0.00000, 0.00000); CreateObject(16101, 1424.50464, -993.07813, 990.73462, 0.00000, 0.00000, 0.00000); CreateObject(16101, 1424.50464, -995.26208, 990.73462, 0.00000, 0.00000, 0.00000); CreateObject(16101, 1424.50464, -997.44611, 990.73462, 0.00000, 0.00000, 0.00000); CreateObject(16101, 1424.50464, -999.63013, 990.73462, 0.00000, 0.00000, 0.00000); CreateObject(16101, 1424.50464, -983.33411, 990.73462, 0.00000, 0.00000, 0.00000); CreateObject(16101, 1424.50464, -981.15009, 990.73462, 0.00000, 0.00000, 0.00000); CreateObject(16101, 1424.50464, -978.96613, 990.73462, 0.00000, 0.00000, 0.00000); CreateObject(16101, 1424.50464, -976.78210, 990.73462, 0.00000, 0.00000, 0.00000); CreateObject(16101, 1424.50464, -974.59808, 990.73462, 0.00000, 0.00000, 0.00000); CreateObject(16101, 1424.50464, -972.41412, 990.73462, 0.00000, 0.00000, 0.00000); CreateObject(19325, 1424.51428, -991.97479, 999.00391, 0.00000, 0.00000, 0.00000); CreateObject(19325, 1424.51428, -998.45477, 999.00391, 0.00000, 0.00000, 0.00000); CreateObject(19325, 1424.51428, -980.05078, 999.00391, 0.00000, 0.00000, 0.00000); CreateObject(19325, 1424.51428, -973.42279, 999.00391, 0.00000, 0.00000, 0.00000); CreateObject(2190, 1426.35876, -983.58972, 995.82874, 0.00000, 0.00000, -39.84000); CreateObject(2190, 1427.57007, -986.54395, 995.82874, 0.00000, 0.00000, -102.06001); CreateObject(2190, 1425.72351, -988.86444, 995.82874, 0.00000, 0.00000, -154.73996); CreateObject(1715, 1425.98022, -986.25348, 995.10559, 0.00000, 0.00000, 81.60000); CreateObject(1715, 1425.09607, -984.83795, 995.10559, 0.00000, 0.00000, 148.67998); CreateObject(1715, 1424.76306, -987.25067, 995.10559, 0.00000, 0.00000, 29.09999); CreateObject(2244, 1427.16125, -984.70050, 996.06403, 0.00000, 0.00000, 27.72000); CreateObject(2244, 1426.93335, -987.59070, 996.06403, 0.00000, 0.00000, -24.42000); CreateObject(2165, 1420.89612, -986.00458, 995.10638, 0.00000, 0.00000, 89.57999); CreateObject(1715, 1422.16272, -985.46423, 995.10559, 0.00000, 0.00000, -105.06001); CreateObject(2164, 1420.47449, -980.71246, 995.10602, 0.00000, 0.00000, 87.65998); CreateObject(2773, 1426.07617, -993.09894, 995.65790, 0.00000, 0.00000, 89.16010); CreateObject(2773, 1426.07690, -990.98590, 995.65790, 0.00000, 0.00000, 89.16010); CreateObject(2773, 1426.07617, -995.23187, 995.65790, 0.00000, 0.00000, 89.16010); CreateObject(2773, 1426.07617, -997.52289, 995.65790, 0.00000, 0.00000, 89.16010); CreateObject(2773, 1426.07617, -999.65588, 995.65790, 0.00000, 0.00000, 89.16010); CreateObject(2773, 1426.07690, -981.18988, 995.65790, 0.00000, 0.00000, 89.16010); CreateObject(2773, 1426.07690, -979.05688, 995.65790, 0.00000, 0.00000, 89.16010); CreateObject(2773, 1426.07690, -976.84491, 995.65790, 0.00000, 0.00000, 89.16010); CreateObject(2773, 1426.07690, -974.63287, 995.65790, 0.00000, 0.00000, 89.16010); CreateObject(2773, 1426.07690, -972.42090, 995.65790, 0.00000, 0.00000, 89.16010); CreateObject(1514, 1424.18726, -992.59534, 996.20605, 0.00000, 0.00000, 89.58002); CreateObject(1514, 1424.18726, -994.72827, 996.20612, 0.00000, 0.00000, 89.58000); CreateObject(1514, 1424.18726, -996.94031, 996.20612, 0.00000, 0.00000, 89.58000); CreateObject(1514, 1424.18726, -999.23132, 996.20612, 0.00000, 0.00000, 89.58000); CreateObject(1514, 1424.18726, -980.66632, 996.20612, 0.00000, 0.00000, 89.58000); CreateObject(1514, 1424.18726, -978.53333, 996.20612, 0.00000, 0.00000, 89.58000); CreateObject(1514, 1424.18726, -976.32129, 996.20612, 0.00000, 0.00000, 89.58000); CreateObject(1514, 1424.18726, -974.18829, 996.20612, 0.00000, 0.00000, 89.58000); CreateObject(1514, 1424.18726, -971.97632, 996.20612, 0.00000, 0.00000, 89.58000); CreateObject(1514, 1424.18726, -1001.12732, 996.20612, 0.00000, 0.00000, 89.58000); CreateObject(2599, 1426.01086, -1000.61847, 995.50098, 0.00000, 0.00000, -90.78001); CreateObject(2599, 1425.84473, -973.51959, 995.50061, 0.00000, 0.00000, -89.88000); CreateObject(2007, 1420.94165, -999.54968, 995.10248, 0.00000, 0.00000, 89.76000); CreateObject(2007, 1420.94165, -998.60168, 995.10248, 0.00000, 0.00000, 89.76000); CreateObject(2007, 1420.94165, -997.65369, 995.10248, 0.00000, 0.00000, 89.76000); CreateObject(2007, 1420.94165, -996.70569, 995.10248, 0.00000, 0.00000, 89.76000); CreateObject(2007, 1420.94165, -995.75769, 995.10248, 0.00000, 0.00000, 89.76000); CreateObject(1806, 1422.44788, -971.87213, 995.10742, 0.00000, 0.00000, -78.18002); CreateObject(1806, 1422.44788, -973.37311, 995.10742, 0.00000, 0.00000, -86.22002); CreateObject(1806, 1422.44788, -975.50610, 995.10742, 0.00000, 0.00000, -94.20003); CreateObject(1806, 1422.44788, -977.63910, 995.10742, 0.00000, 0.00000, -93.60002); CreateObject(1806, 1422.44788, -979.93011, 995.10742, 0.00000, 0.00000, -83.64001); CreateObject(1806, 1422.44788, -991.78009, 995.10742, 0.00000, 0.00000, -87.24001); CreateObject(1806, 1422.44788, -993.75513, 995.10742, 0.00000, 0.00000, -101.16003); CreateObject(1806, 1422.44788, -996.04608, 995.10742, 0.00000, 0.00000, -91.26003); CreateObject(1806, 1422.44788, -998.33710, 995.10742, 0.00000, 0.00000, -89.94003); CreateObject(1806, 1422.44788, -1000.23309, 995.10742, 0.00000, 0.00000, -78.18000); CreateObject(19379, 1425.52917, -987.17383, 995.01910, 0.00000, -90.00000, 0.00000); CreateObject(19379, 1425.52917, -977.54077, 995.01910, 0.00000, -90.00000, 0.00000); CreateObject(19379, 1425.52917, -967.90881, 995.01910, 0.00000, -90.00000, 0.00000); CreateObject(19379, 1436.03015, -996.80780, 995.01910, 0.00000, -90.00000, 0.00000); CreateObject(19379, 1436.03015, -987.17383, 995.01910, 0.00000, -90.00000, 0.00000); CreateObject(19379, 1436.03015, -977.53979, 995.01910, 0.00000, -90.00000, 0.00000); CreateObject(19379, 1436.03015, -967.90778, 995.01910, 0.00000, -90.00000, 0.00000); CreateObject(19379, 1446.53076, -987.19177, 995.01910, 0.00000, -90.00000, 0.00000); CreateObject(19379, 1457.03186, -987.19177, 995.01910, 0.00000, -90.00000, 0.00000); CreateObject(19379, 1457.03186, -977.55780, 995.01910, 0.00000, -90.00000, 0.00000); CreateObject(19379, 1446.53186, -977.55780, 995.01910, 0.00000, -90.00000, 0.00000); CreateObject(19379, 1446.53186, -967.92480, 995.01910, 0.00000, -90.00000, 0.00000); CreateObject(19379, 1446.53223, -996.81183, 995.01910, 0.00000, -90.00000, 0.00000); CreateObject(19450, 1449.15112, -981.53003, 996.85638, 0.00000, 0.00000, 89.99190); CreateObject(19450, 1458.76709, -981.53003, 996.85638, 0.00000, 0.00000, 89.99190); CreateObject(19450, 1449.15210, -990.17499, 996.85638, 0.00000, 0.00000, 89.99190); CreateObject(19450, 1458.78308, -990.17499, 996.85638, 0.00000, 0.00000, 89.99190); CreateObject(19377, 1449.57959, -985.77112, 998.29529, 0.00000, -90.00000, 0.00000); CreateObject(19377, 1459.64563, -985.73309, 998.27332, 0.00000, -90.00000, 0.00000); CreateObject(19450, 1457.40637, -985.67657, 996.85638, 0.00000, 0.00000, 0.00000); CreateObject(1569, 1457.37061, -982.48169, 995.10571, 0.00000, 0.00000, 269.37631); CreateObject(1569, 1457.37549, -985.46259, 995.10571, 0.00000, 0.00000, 89.99800); CreateObject(1569, 1457.36865, -986.57483, 995.10571, 0.00000, 0.00000, 269.37631); CreateObject(1569, 1457.37585, -989.57758, 995.10571, 0.00000, 0.00000, 89.99800); CreateObject(19431, 1440.70752, -982.46478, 996.86212, 0.00000, 0.00000, -91.56000); CreateObject(19431, 1440.70752, -981.04077, 996.86212, 0.00000, 0.00000, -91.14001); CreateObject(19431, 1439.91956, -981.72931, 996.86212, 0.00000, 0.00000, -183.05991); CreateObject(19431, 1441.44763, -981.76929, 996.86212, 0.00000, 0.00000, -181.92000); CreateObject(19431, 1441.44763, -989.43732, 996.86212, 0.00000, 0.00000, -181.92000); CreateObject(19431, 1440.70752, -988.71283, 996.86212, 0.00000, 0.00000, -91.56000); CreateObject(19431, 1440.70752, -990.13281, 996.86212, 0.00000, 0.00000, -91.56000); CreateObject(19431, 1439.88562, -989.40332, 996.86212, 0.00000, 0.00000, -181.92000); CreateObject(19431, 1431.84351, -988.67279, 996.86212, 0.00000, 0.00000, -91.56000); CreateObject(19431, 1431.10046, -989.40332, 996.86212, 0.00000, 0.00000, -181.92000); CreateObject(19431, 1431.84351, -990.13580, 996.86212, 0.00000, 0.00000, -91.56000); CreateObject(19431, 1432.58154, -989.40332, 996.86212, 0.00000, 0.00000, -181.92000); CreateObject(19431, 1432.58154, -982.06531, 996.86212, 0.00000, 0.00000, -181.92000); CreateObject(19431, 1431.02148, -982.01929, 996.86212, 0.00000, 0.00000, -181.92000); CreateObject(19431, 1431.84351, -982.75677, 996.86212, 0.00000, 0.00000, -91.56000); CreateObject(19431, 1431.84351, -981.32483, 996.86212, 0.00000, 0.00000, -91.56000); CreateObject(1569, 1432.61133, -970.15210, 995.10773, 0.00000, 0.00000, 0.00000); CreateObject(14576, 1435.29407, -987.92871, 990.71588, 0.00000, 0.00000, -0.36000); CreateObject(19379, 1436.03015, -1001.03583, 995.02307, 0.00000, -90.00000, 0.00000); CreateObject(19388, 1438.86841, -1002.63641, 996.85449, 0.00000, 0.00000, 90.90000); CreateObject(19450, 1440.54065, -997.84619, 996.85638, 0.00000, 0.00000, 0.00000); CreateObject(19450, 1437.23877, -997.84979, 996.85638, 0.00000, 0.00000, 0.00000); CreateObject(19377, 1440.83362, -1004.66913, 998.26831, 0.00000, -90.00000, 0.00000); CreateObject(2634, 1441.06909, -1004.53168, 992.32001, 0.00000, 0.00000, 270.07040); CreateObject(2198, 1433.27332, -996.86798, 989.92047, 0.00000, 0.00000, 178.63960); CreateObject(2198, 1433.27332, -994.02600, 989.92047, 0.00000, 0.00000, 178.63960); CreateObject(2198, 1433.27332, -990.89001, 989.92047, 0.00000, 0.00000, 178.63960); CreateObject(2198, 1433.27332, -1000.00403, 989.92047, 0.00000, 0.00000, 178.63960); CreateObject(1806, 1432.72278, -998.97363, 989.91901, 0.00000, 0.00000, -167.28003); CreateObject(1806, 1432.60571, -995.73785, 989.91901, 0.00000, 0.00000, 175.12816); CreateObject(1806, 1432.60571, -992.79791, 989.91901, 0.00000, 0.00000, 194.12750); CreateObject(1806, 1432.60571, -989.75989, 989.91901, 0.00000, 0.00000, 186.49478); CreateObject(16782, 1443.08545, -993.57495, 992.76324, 0.00000, 0.00000, 179.01819); CreateObject(3397, 1442.95642, -993.62469, 989.94727, 0.00000, 0.00000, 357.18283); CreateObject(3386, 1442.72241, -996.43250, 989.89600, 0.00000, 0.00000, 176.06250); CreateObject(3386, 1442.72241, -997.60852, 989.91400, 0.00000, 0.00000, 176.06250); CreateObject(3386, 1442.87439, -990.38049, 989.91400, 0.00000, 0.00000, 356.84091); CreateObject(3386, 1442.87439, -989.24652, 989.91400, 0.00000, 0.00000, 356.84091); CreateObject(18643, 1427.60217, -995.31152, 984.01813, 0.00000, 0.00000, 0.00000); CreateObject(18643, 1418.20618, -995.31152, 984.01813, 0.00000, 0.00000, 0.00000); CreateObject(18643, 1418.20618, -990.12750, 984.01813, 0.00000, 0.00000, 0.00000); CreateObject(18643, 1427.60217, -990.12750, 984.01813, 0.00000, 0.00000, 0.00000); CreateObject(18643, 1427.60217, -984.45752, 984.45007, 0.00000, 0.00000, 0.00000); CreateObject(18643, 1418.04419, -984.45752, 984.45007, 0.00000, 0.00000, 0.00000); CreateObject(14598, 1431.54688, -985.73328, 1010.65839, 0.00000, 0.00000, 0.00000); CreateObject(1723, 1439.22668, -972.44214, 995.05151, 0.00000, 0.00000, 0.00000); CreateObject(1723, 1442.60986, -973.58191, 995.05151, 0.00000, 0.00000, 269.47330); CreateObject(1723, 1441.65991, -976.88171, 995.05151, 0.00000, 0.00000, 179.19260); CreateObject(1723, 1438.09546, -975.58490, 995.05151, 0.00000, 0.00000, 86.82700); CreateObject(1817, 1439.95251, -975.20856, 995.11218, 0.00000, 0.00000, -0.36000); CreateObject(2011, 1437.90637, -970.72211, 995.11951, 0.00000, 0.00000, 0.00000); CreateObject(2002, 1439.03247, -970.70801, 995.11951, 0.00000, 0.00000, 0.00000); CreateObject(1776, 1440.21924, -970.60382, 996.18219, 0.00000, 0.00000, 0.00000); CreateObject(2816, 1439.91479, -974.76520, 995.62378, 0.00000, 0.00000, -66.18000); CreateObject(2245, 1440.35779, -974.71698, 995.85413, 0.00000, 0.00000, 0.00000); CreateObject(1549, 1441.38904, -970.58020, 995.07281, 0.00000, 0.00000, 0.00000); CreateObject(2961, 1436.19360, -992.91449, 996.43372, 0.00000, 0.00000, 0.00000); CreateObject(2690, 1436.22546, -992.86798, 996.92572, 0.00000, 0.00000, 169.80000); CreateObject(1999, 1435.73157, -1005.59863, 995.12238, 0.00000, 0.00000, 177.89998); CreateObject(1806, 1435.42896, -1003.91840, 995.12079, 0.00000, 0.00000, 146.81998); CreateObject(2606, 1433.61072, -1004.31232, 996.30280, 0.00000, 0.00000, 89.94000); CreateObject(2606, 1433.61072, -1004.31232, 996.73480, 0.00000, 0.00000, 89.94000); CreateObject(2606, 1433.61072, -1004.31232, 997.16681, 0.00000, 0.00000, 89.94000); CreateObject(2894, 1435.51477, -1005.65875, 995.93512, 0.00000, 0.00000, -156.29988); CreateObject(348, 1435.81042, -1005.49841, 995.93518, 91.00000, 0.00000, 38.22002); CreateObject(2839, 1434.89624, -1005.61493, 995.12347, 0.00000, 0.00000, 28.74000); CreateObject(1235, 1436.75586, -1005.67822, 995.63458, 0.00000, 0.00000, 4.14000); CreateObject(2881, 1436.83350, -1005.81738, 995.13568, -2.00000, -69.00000, 28.00000); CreateObject(2881, 1436.72742, -1005.73517, 995.13568, -2.00000, -69.00000, -15.20001); CreateObject(2007, 1420.94165, -995.75769, 996.49847, 0.00000, 0.00000, 89.76000); CreateObject(2007, 1420.94165, -996.70569, 996.50250, 0.00000, 0.00000, 89.76000); CreateObject(2007, 1420.94165, -997.65369, 996.50250, 0.00000, 0.00000, 89.76000); CreateObject(2007, 1420.94165, -998.60168, 996.50250, 0.00000, 0.00000, 89.76000); CreateObject(2007, 1420.94165, -999.54968, 996.50250, 0.00000, 0.00000, 89.76000); CreateObject(2942, 1446.68677, -989.58667, 995.71686, 0.00000, 0.00000, 179.99986); CreateObject(2942, 1448.42285, -989.58667, 995.71692, 0.00000, 0.00000, 179.99989); CreateObject(2942, 1450.13086, -989.58667, 995.71692, 0.00000, 0.00000, 179.99989); CreateObject(2690, 1434.28040, -1002.78546, 996.38782, 0.00000, 0.00000, -4.26000); CreateObject(1892, 1456.52942, -986.43781, 995.14093, 0.00000, 0.00000, 86.76000); CreateObject(1892, 1456.52942, -990.61377, 995.14093, 0.00000, 0.00000, 86.76000); CreateObject(1892, 1456.52942, -982.26178, 995.14093, 0.00000, 0.00000, 86.76000); CreateObject(14633, 1426.06604, -979.43066, 996.56683, 0.00000, 0.00000, 0.00000); CreateObject(2811, 1456.85181, -986.05109, 995.10602, 0.00000, 0.00000, 78.96002); CreateObject(3386, 1442.87439, -988.14252, 989.91400, 0.00000, 0.00000, 356.84091); CreateObject(3386, 1442.87439, -987.03851, 989.91400, 0.00000, 0.00000, 356.84091); CreateObject(3386, 1442.72241, -998.80847, 989.91400, 0.00000, 0.00000, 176.06250); CreateObject(3386, 1442.72241, -1000.00848, 989.91400, 0.00000, 0.00000, 176.06250); CreateObject(3391, 1440.51379, -987.03638, 989.89600, 0.00000, 0.00000, 89.76003); CreateObject(3392, 1436.92480, -987.02655, 989.89398, 0.00000, 0.00000, 89.81998); CreateObject(1806, 1441.29553, -993.01025, 989.92133, 0.00000, 0.00000, -119.94001); CreateObject(2634, 1435.35193, -980.29688, 984.21887, 0.00000, 0.00000, 179.04001); CreateObject(1502, 1438.05847, -992.99011, 995.10675, 0.00000, 0.00000, 0.00000); CreateObject(1499, 1438.53723, -1002.59253, 990.92316, 0.00000, 0.00000, 0.00000); CreateObject(2690, 1440.72217, -1010.17639, 994.91425, 0.00000, 0.00000, -90.41999); CreateObject(2690, 1433.67712, -1004.35260, 992.91760, 0.00000, 0.00000, 83.58002); CreateObject(2690, 1440.74304, -1010.16492, 991.04169, 0.00000, 0.00000, -88.08002); CreateObject(2690, 1433.68909, -1004.27728, 988.57770, 0.00000, 0.00000, 83.94003); CreateObject(2690, 1433.56665, -1009.76007, 986.42206, 0.00000, 0.00000, 83.70004); CreateObject(18643, 1441.46216, -995.31152, 984.01813, 0.00000, 0.00000, 0.00000); CreateObject(18643, 1441.64221, -990.12750, 984.01813, 0.00000, 0.00000, 0.00000); CreateObject(18643, 1441.54224, -984.45752, 984.45007, 0.00000, 0.00000, 0.00000); // Warehouse crates CreateDynamicObject(3798, 1260.306274, -25.321689, 999.883422, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1260.306274, -25.321689, 1001.883361, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1258.317016, -25.365781, 999.883422, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1262.315673, -25.277160, 999.883422, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1262.316040, -25.307142, 1001.883483, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1258.397460, -25.393985, 1001.883483, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1260.306274, -25.321689, 1003.853515, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1260.261474, -23.312185, 999.883422, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1262.250976, -23.268102, 999.883422, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1258.312622, -23.355394, 999.883422, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1262.358764, -27.226678, 999.883422, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1260.418823, -27.269641, 999.883422, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1258.428833, -27.313713, 999.883422, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1262.285766, -25.277828, 1003.853515, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1258.396728, -25.364007, 1003.853515, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1260.306274, -25.321689, 1005.823486, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1262.271484, -23.297637, 1001.883483, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1260.281860, -23.341718, 1001.883483, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1258.332275, -23.384920, 1001.883483, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1264.190185, -23.225122, 999.883422, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1256.502685, -23.395494, 999.883422, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1264.233398, -25.184640, 999.883422, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1264.276489, -27.134164, 999.883422, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1256.546875, -25.385005, 999.883422, 0.000000, 0.000000, -178.730514); CreateDynamicObject(3798, 1256.591430, -27.384523, 999.883422, 0.000000, 0.000000, -178.730514); // Driving test for (new i = 0; i < MAX_PLAYERS; i ++) { arrVirtualWorlds[i] = i + 2000; } CreateDynamicObjectEx(1319, -2058.461425, -65.593460, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2058.981201, -69.791046, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2059.461425, -65.588729, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2059.981201, -69.786315, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2060.461425, -65.583999, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2060.981201, -69.781585, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2061.461425, -65.579269, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2061.981201, -69.776855, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2062.461425, -65.574539, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2062.981201, -69.772125, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2063.461425, -65.569808, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2063.981201, -69.767395, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2064.461425, -65.565078, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2064.981201, -69.762664, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2065.461425, -65.560348, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2065.981201, -69.757934, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2066.461425, -65.555618, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2066.981201, -69.753204, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2067.461425, -65.550888, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2067.981201, -69.748474, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2068.461425, -65.546157, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2068.981201, -69.743743, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2069.461425, -65.541427, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2069.981201, -69.739013, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2070.461425, -65.536697, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2070.981201, -69.734283, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2071.461425, -65.531967, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2071.981201, -69.729553, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2072.461425, -65.527236, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2072.981201, -69.724822, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2073.461425, -65.522506, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2073.981201, -69.720092, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2074.461425, -65.517776, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2074.981201, -69.715362, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2075.461425, -65.513046, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2075.981201, -69.710632, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2076.461425, -65.508316, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2076.981201, -69.705902, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2077.461425, -65.503585, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2077.981201, -69.701171, 34.525119, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3578, -2104.345214, -70.363998, 34.751861, 0.000000, 0.000000, -0.036066, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3578, -2104.343017, -65.663986, 34.751861, 0.000000, 0.000000, -0.036066, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3578, -2114.251708, -65.657752, 34.751861, 0.000000, 0.000000, -0.036066, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3578, -2114.253662, -70.347732, 34.751861, 0.000000, 0.000000, -0.036066, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3578, -2123.241943, -65.652107, 34.751861, 0.000000, 0.000000, -0.036066, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3578, -2122.997802, -70.342224, 34.751861, 0.000000, 0.000000, -0.036066, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2171.885742, -106.985626, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2167.690429, -107.523513, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2171.894531, -107.985580, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2167.699218, -108.523468, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2171.903320, -108.985534, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2167.708007, -109.523422, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2171.912109, -109.985488, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2167.716796, -110.523376, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2171.920898, -110.985443, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2167.725585, -111.523330, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2171.929687, -111.985397, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2167.734375, -112.523284, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2171.938476, -112.985351, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2167.743164, -113.523239, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2171.947265, -113.985305, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2167.751953, -114.523193, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2171.956054, -114.985260, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2167.760742, -115.523147, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2171.964843, -115.985214, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2167.769531, -116.523101, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2171.973632, -116.985168, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2167.778320, -117.523056, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2171.982421, -117.985122, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2167.787109, -118.523010, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2171.991210, -118.985076, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2167.795898, -119.522964, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2172.000000, -119.985031, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2167.804687, -120.522918, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2172.008789, -120.984985, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2167.813476, -121.522872, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2172.017578, -121.984939, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2167.822265, -122.522827, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2172.026367, -122.984893, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2167.831054, -123.522781, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2172.035156, -123.984848, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2167.839843, -124.522735, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2172.043945, -124.984802, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2167.848632, -125.522689, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2172.052734, -125.984756, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2167.857421, -126.522644, 34.519943, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3578, -2167.459716, -160.511413, 34.921886, 0.000000, 0.000000, 84.243225, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3578, -2169.737548, -170.268875, 34.921886, 0.000000, 0.000000, 69.943244, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3578, -2174.539306, -179.056747, 34.921901, 0.000000, 0.000000, 53.343246, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2211.481933, -190.448471, 34.153205, 0.000000, 0.000000, 88.628005, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2209.643066, -190.492553, 34.153205, 0.000000, 0.000000, 88.628005, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2207.663574, -190.539978, 34.153205, 0.000000, 0.000000, 88.628005, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2213.440673, -190.401504, 34.153205, 0.000000, 0.000000, 88.628005, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2215.380615, -190.355041, 34.153205, 0.000000, 0.000000, 88.628005, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2217.260009, -190.309997, 34.153205, 0.000000, 0.000000, 88.628005, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2219.270019, -190.261825, 34.153205, 0.000000, 0.000000, 88.628005, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2221.260253, -190.214187, 34.153205, 0.000000, 0.000000, 88.628005, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2223.209716, -190.167465, 34.153205, 0.000000, 0.000000, 88.628005, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2225.157226, -190.120697, 34.153205, 0.000000, 0.000000, 88.628005, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2207.529052, -184.941589, 34.153205, 0.000000, 0.000000, 88.628005, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2209.478027, -184.894882, 34.153205, 0.000000, 0.000000, 88.628005, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2211.367919, -184.849639, 34.153205, 0.000000, 0.000000, 88.628005, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2213.207031, -184.805572, 34.153205, 0.000000, 0.000000, 88.628005, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2215.197509, -184.757934, 34.153205, 0.000000, 0.000000, 88.628005, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2217.137207, -184.711456, 34.153205, 0.000000, 0.000000, 88.628005, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2219.076171, -184.665054, 34.153205, 0.000000, 0.000000, 88.628005, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2221.026367, -184.618377, 34.153205, 0.000000, 0.000000, 88.628005, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2223.036132, -184.570236, 34.153205, 0.000000, 0.000000, 88.628005, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2225.006835, -184.523101, 34.153205, 0.000000, 0.000000, 88.628005, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2261.793457, -333.091308, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2257.583496, -333.497985, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2261.771484, -334.091064, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2257.561523, -334.497741, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2261.749511, -335.090820, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2257.539550, -335.497497, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2261.727539, -336.090576, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2257.517578, -336.497253, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2261.705566, -337.090332, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2257.495605, -337.497009, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2261.683593, -338.090087, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2257.473632, -338.496765, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2261.661621, -339.089843, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2257.451660, -339.496520, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2261.639648, -340.089599, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2257.429687, -340.496276, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2261.617675, -341.089355, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2257.407714, -341.496032, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2261.595703, -342.089111, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2257.385742, -342.495788, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2261.573730, -343.088867, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2257.363769, -343.495544, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2261.551757, -344.088623, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2257.341796, -344.495300, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2261.529785, -345.088378, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2257.319824, -345.495056, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2261.507812, -346.088134, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2257.297851, -346.494812, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2261.485839, -347.087890, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2257.275878, -347.494567, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2261.463867, -348.087646, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2257.253906, -348.494323, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2261.441894, -349.087402, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2257.231933, -349.494079, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2261.419921, -350.087158, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2257.209960, -350.493835, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2261.397949, -351.086914, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2257.187988, -351.493591, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2261.375976, -352.086669, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -2257.166015, -352.493347, 50.210819, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2255.888671, -364.424621, 49.707180, 0.000000, 0.000000, 181.271499, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2261.308349, -364.544982, 49.707180, 0.000000, 0.000000, 181.271499, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2255.847656, -366.413604, 49.707180, 0.000000, 0.000000, 181.271499, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2261.265625, -366.574279, 49.707180, 0.000000, 0.000000, 181.271499, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2261.222656, -368.523773, 49.707180, 0.000000, 0.000000, 181.271499, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2255.805664, -368.342956, 49.707180, 0.000000, 0.000000, 181.271499, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2255.761474, -370.342437, 49.707180, 0.000000, 0.000000, 181.271499, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2261.178710, -370.483459, 49.707180, 0.000000, 0.000000, 181.271499, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2255.652832, -372.276641, 49.707180, 0.000000, 0.000000, -174.028427, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2255.448486, -374.236053, 49.707180, 0.000000, 0.000000, -174.028427, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2255.246582, -376.165496, 49.707180, 0.000000, 0.000000, -174.028427, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2261.135742, -372.442932, 49.707180, 0.000000, 0.000000, 181.271499, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2260.973144, -374.508941, 49.707180, 0.000000, 0.000000, -171.828445, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2260.690917, -376.468688, 49.707180, -0.199999, 0.000000, -170.928451, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2255.042480, -378.114776, 49.707180, 0.000000, 0.000000, -173.328414, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2260.379882, -378.424011, 49.700256, -0.199999, 0.000000, -170.928451, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2259.898437, -380.432464, 49.693000, -0.199999, 0.000000, -162.728393, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3798, -2254.801025, -379.927886, 49.707180, 0.000000, 0.000000, -171.228393, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3578, -2157.626953, -491.636016, 42.115673, -0.299999, -10.099996, 135.658142, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3578, -2161.156738, -495.247619, 42.089233, -0.299999, -10.099996, 135.658142, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3578, -2154.130126, -502.101440, 40.340858, -0.299999, -10.099996, 135.658142, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3578, -2150.607177, -498.496948, 40.367244, -0.299999, -10.099996, 135.658142, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3578, -2147.131591, -508.927734, 38.599498, -0.299999, -10.099996, 135.658142, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3578, -2143.607666, -505.323272, 38.625873, -0.299999, -10.099996, 135.658142, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1993.557861, -584.265991, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1993.054809, -580.066345, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1992.557861, -584.266723, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1992.054809, -580.067077, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1991.557861, -584.267456, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1991.054809, -580.067810, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1990.557861, -584.268188, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1990.054809, -580.068542, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1989.557861, -584.268920, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1989.054809, -580.069274, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1988.557861, -584.269653, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1988.054809, -580.070007, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1987.557861, -584.270385, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1987.054809, -580.070739, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1986.557861, -584.271118, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1986.054809, -580.071472, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1985.557861, -584.271850, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1985.054809, -580.072204, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1984.557861, -584.272583, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1984.054809, -580.072937, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1983.557861, -584.273315, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1983.054809, -580.073669, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1982.557861, -584.274047, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1982.054809, -580.074401, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1981.557861, -584.274780, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1981.054809, -580.075134, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1980.557861, -584.275512, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1980.054809, -580.075866, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1979.557861, -584.276245, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1979.054809, -580.076599, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1978.557861, -584.276977, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1978.054809, -580.077331, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1977.557861, -584.277709, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1977.054809, -580.078063, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1976.557861, -584.278442, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1976.054809, -580.078796, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1975.557861, -584.279174, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1975.054809, -580.079528, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1974.557861, -584.279907, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1974.054809, -580.080261, 25.090726, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3578, -1892.133300, -580.598632, 24.120117, 0.000000, 0.000000, 179.165649, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3578, -1892.216186, -586.277770, 24.120117, 0.000000, 0.000000, 179.165649, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3578, -1882.247802, -586.422790, 24.120117, 0.000000, 0.000000, 179.165649, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3578, -1882.165039, -580.753356, 24.120117, 0.000000, 0.000000, 179.165649, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3578, -1872.083618, -586.570312, 23.821083, -0.699999, -3.400000, 179.265609, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(3578, -1872.015136, -580.890136, 23.820604, -0.699999, -3.400000, 179.265609, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1813.607299, -567.501098, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1817.835815, -567.405700, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1813.703002, -566.505737, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1817.931518, -566.410339, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1813.798706, -565.510375, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1818.027221, -565.414978, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1813.894409, -564.515014, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1818.122924, -564.419616, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1813.990112, -563.519653, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1818.218627, -563.424255, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1814.085815, -562.524291, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1818.314331, -562.428894, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1814.181518, -561.528930, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1818.410034, -561.433532, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1814.277221, -560.533569, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1818.505737, -560.438171, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1814.372924, -559.538208, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1818.601440, -559.442810, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1814.468627, -558.542846, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1818.697143, -558.447448, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1814.564331, -557.547485, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1818.792846, -557.452087, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1814.660034, -556.552124, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1818.888549, -556.456726, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1814.755737, -555.556762, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1818.984252, -555.461364, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1814.851440, -554.561401, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1819.079956, -554.466003, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1814.947143, -553.566040, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1819.175659, -553.470642, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1815.042846, -552.570678, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1819.271362, -552.475280, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1815.138549, -551.575317, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1819.367065, -551.479919, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1815.234252, -550.579956, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1819.462768, -550.484558, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1815.329956, -549.584594, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1819.558471, -549.489196, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1815.425659, -548.589233, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); CreateDynamicObjectEx(1319, -1819.654174, -548.493835, 15.690916, 0.000000, 0.000000, 0.000000, 0.0, 200.0, arrVirtualWorlds); // Main mall mesh, interior areas CreateDynamicObject(19322, 1117.580, -1490.01, 32.72, 0.00, 0.00, 0.00, -1, -1, -1, 200.0); CreateDynamicObject(19323, 1117.580, -1490.01, 32.72, 0.00, 0.00, 0.00, -1, -1, -1, 200.0); // Mall windows CreateDynamicObject(19325, 1155.40, -1434.89, 16.49, 0.00, 0.00, 0.30, -1, -1, -1, 100.0); CreateDynamicObject(19325, 1155.37, -1445.41, 16.31, 0.00, 0.00, 0.00, -1, -1, -1, 100.0); CreateDynamicObject(19325, 1155.29, -1452.38, 16.31, 0.00, 0.00, 0.00, -1, -1, -1, 100.0); CreateDynamicObject(19325, 1157.36, -1468.35, 16.31, 0.00, 0.00, 18.66, -1, -1, -1, 100.0); CreateDynamicObject(19325, 1160.64, -1478.37, 16.31, 0.00, 0.00, 17.76, -1, -1, -1, 100.0); CreateDynamicObject(19325, 1159.84, -1502.06, 16.31, 0.00, 0.00, -19.92, -1, -1, -1, 100.0); CreateDynamicObject(19325, 1139.28, -1523.71, 16.31, 0.00, 0.00, -69.36, -1, -1, -1, 100.0); CreateDynamicObject(19325, 1117.06, -1523.43, 16.51, 0.00, 0.00, -109.44, -1, -1, -1, 100.0); CreateDynamicObject(19325, 1097.18, -1502.43, 16.51, 0.00, 0.00, -158.58, -1, -1, -1, 100.0); CreateDynamicObject(19325, 1096.47, -1478.29, 16.51, 0.00, 0.00, -197.94, -1, -1, -1, 100.0); CreateDynamicObject(19325, 1099.70, -1468.27, 16.51, 0.00, 0.00, -197.94, -1, -1, -1, 100.0); CreateDynamicObject(19325, 1101.81, -1445.45, 16.22, 0.00, 0.00, -180.24, -1, -1, -1, 100.0); CreateDynamicObject(19325, 1101.76, -1452.47, 16.22, 0.00, 0.00, -181.62, -1, -1, -1, 100.0); CreateDynamicObject(19325, 1101.77, -1434.88, 16.22, 0.00, 0.00, -180.24, -1, -1, -1, 100.0); CreateDynamicObject(19325, 1094.31, -1444.92, 23.47, 0.00, 0.00, -180.24, -1, -1, -1, 100.0); CreateDynamicObject(19325, 1094.37, -1458.37, 23.47, 0.00, 0.00, -179.46, -1, -1, -1, 100.0); CreateDynamicObject(19325, 1093.01, -1517.44, 23.44, 0.00, 0.00, -138.72, -1, -1, -1, 100.0); CreateDynamicObject(19325, 1101.08, -1526.64, 23.42, 0.00, 0.00, -137.34, -1, -1, -1, 100.0); CreateDynamicObject(19325, 1155.12, -1526.38, 23.46, 0.00, 0.00, -42.12, -1, -1, -1, 100.0); CreateDynamicObject(19325, 1163.09, -1517.25, 23.46, 0.00, 0.00, -40.74, -1, -1, -1, 100.0); CreateDynamicObject(19325, 1163.04, -1442.06, 23.40, 0.00, 0.00, -0.12, -1, -1, -1, 100.0); CreateDynamicObject(19325, 1163.09, -1428.47, 23.50, 0.00, 0.00, 0.54, -1, -1, -1, 100.0); // Mall signs CreateDynamicObject(19326, 1155.34, -1446.73, 16.38, 0.00, 0.00, -89.82, -1, -1, -1, 30.0); CreateDynamicObject(19326, 1155.25, -1443.85, 16.36, 0.00, 0.00, -89.82, -1, -1, -1, 30.0); CreateDynamicObject(19326, 1155.37, -1436.32, 16.36, 0.00, 0.00, -89.82, -1, -1, -1, 30.0); CreateDynamicObject(19326, 1155.35, -1433.51, 16.36, 0.00, 0.00, -89.70, -1, -1, -1, 30.0); CreateDynamicObject(19329, 1155.18, -1440.22, 18.70, 0.00, 0.00, 89.04, -1, -1, -1, 30.0); CreateDynamicObject(19329, 1161.59, -1431.50, 17.93, 0.00, 0.00, 0.00, -1, -1, -1, 30.0); CreateDynamicObject(19329, 1160.40, -1448.79, 17.96, 0.00, 0.00, 0.00, -1, -1, -1, 30.0); // Mall 24/7 food aisles CreateDynamicObject(2543, 1168.18, -1436.39, 14.79, 0.00, 0.00, 0.30, -1, -1, -1, 30.0); CreateDynamicObject(2535, 1182.74, -1448.30, 14.70, 0.00, 0.00, -90.96, -1, -1, -1, 30.0); CreateDynamicObject(2543, 1167.10, -1436.40, 14.79, 0.00, 0.00, 0.31, -1, -1, -1, 30.0); CreateDynamicObject(2538, 1172.31, -1435.32, 14.79, 0.00, 0.00, 180.34, -1, -1, -1, 30.0); CreateDynamicObject(2539, 1171.38, -1435.31, 14.79, 0.00, 0.00, 180.19, -1, -1, -1, 30.0); CreateDynamicObject(2540, 1169.56, -1435.36, 14.79, 0.00, 0.00, 180.17, -1, -1, -1, 30.0); CreateDynamicObject(1984, 1157.37, -1442.59, 14.79, 0.00, 0.00, -450.06, -1, -1, -1, 30.0); CreateDynamicObject(2012, 1163.25, -1448.31, 14.75, 0.00, 0.00, -179.16, -1, -1, -1, 30.0); CreateDynamicObject(2012, 1169.29, -1431.92, 14.75, 0.00, 0.00, 359.80, -1, -1, -1, 30.0); CreateDynamicObject(1987, 1163.13, -1436.34, 14.79, 0.00, 0.00, 361.06, -1, -1, -1, 30.0); CreateDynamicObject(1988, 1164.13, -1436.33, 14.79, 0.00, 0.00, 360.80, -1, -1, -1, 30.0); CreateDynamicObject(2871, 1164.79, -1443.96, 14.79, 0.00, 0.00, 177.73, -1, -1, -1, 30.0); CreateDynamicObject(2871, 1164.70, -1444.98, 14.79, 0.00, 0.00, 358.07, -1, -1, -1, 30.0); CreateDynamicObject(2942, 1155.52, -1464.68, 15.43, 0.00, 0.00, -71.22, -1, -1, -1, 30.0); CreateDynamicObject(1987, 1164.12, -1435.32, 14.77, 0.00, 0.00, 180.96, -1, -1, -1, 30.0); CreateDynamicObject(2530, 1171.13, -1443.79, 14.79, 0.00, 0.00, -182.16, -1, -1, -1, 30.0); CreateDynamicObject(1991, 1173.75, -1439.56, 14.79, 0.00, 0.00, 179.47, -1, -1, -1, 30.0); CreateDynamicObject(1996, 1169.82, -1439.50, 14.79, 0.00, 0.00, 179.10, -1, -1, -1, 30.0); CreateDynamicObject(1996, 1174.24, -1435.38, 14.79, 0.00, 0.00, 179.24, -1, -1, -1, 30.0); CreateDynamicObject(1991, 1175.23, -1435.39, 14.79, 0.00, 0.00, 179.57, -1, -1, -1, 30.0); CreateDynamicObject(1995, 1182.65, -1435.10, 14.79, 0.00, 0.00, 90.00, -1, -1, -1, 30.0); CreateDynamicObject(1994, 1182.66, -1438.07, 14.79, 0.00, 0.00, 90.00, -1, -1, -1, 30.0); CreateDynamicObject(1993, 1182.66, -1437.08, 14.79, 0.00, 0.00, 90.00, -1, -1, -1, 30.0); CreateDynamicObject(2542, 1163.78, -1443.92, 14.76, 0.00, 0.00, 178.77, -1, -1, -1, 30.0); CreateDynamicObject(2536, 1166.88, -1445.07, 14.70, 0.00, 0.00, -0.42, -1, -1, -1, 30.0); CreateDynamicObject(2542, 1163.70, -1444.93, 14.78, 0.00, 0.00, -1.74, -1, -1, -1, 30.0); CreateDynamicObject(1984, 1157.34, -1435.71, 14.79, 0.00, 0.00, -450.06, -1, -1, -1, 30.0); CreateDynamicObject(2012, 1166.31, -1448.28, 14.75, 0.00, 0.00, -180.12, -1, -1, -1, 30.0); CreateDynamicObject(2530, 1172.14, -1443.83, 14.79, 0.00, 0.00, -181.38, -1, -1, -1, 30.0); CreateDynamicObject(2530, 1173.14, -1443.85, 14.79, 0.00, 0.00, -180.96, -1, -1, -1, 30.0); CreateDynamicObject(2530, 1174.13, -1443.88, 14.79, 0.00, 0.00, -181.50, -1, -1, -1, 30.0); CreateDynamicObject(1981, 1170.76, -1439.52, 14.79, 0.00, 0.00, -181.74, -1, -1, -1, 30.0); CreateDynamicObject(1981, 1171.76, -1439.54, 14.79, 0.00, 0.00, -180.80, -1, -1, -1, 30.0); CreateDynamicObject(1981, 1172.75, -1439.55, 14.79, 0.00, 0.00, -180.84, -1, -1, -1, 30.0); CreateDynamicObject(2535, 1182.75, -1447.28, 14.70, 0.00, 0.00, -90.78, -1, -1, -1, 30.0); CreateDynamicObject(2535, 1182.74, -1446.28, 14.70, 0.00, 0.00, -90.78, -1, -1, -1, 30.0); CreateDynamicObject(2535, 1182.74, -1445.26, 14.70, 0.00, 0.00, -90.00, -1, -1, -1, 30.0); CreateDynamicObject(2541, 1182.75, -1444.22, 14.79, 0.00, 0.00, -90.06, -1, -1, -1, 30.0); CreateDynamicObject(2541, 1182.75, -1443.20, 14.79, 0.00, 0.00, -90.06, -1, -1, -1, 30.0); CreateDynamicObject(2541, 1182.74, -1442.16, 14.79, 0.00, 0.00, -90.06, -1, -1, -1, 30.0); CreateDynamicObject(2543, 1182.76, -1441.18, 14.79, 0.00, 0.00, -90.84, -1, -1, -1, 30.0); CreateDynamicObject(2541, 1182.79, -1440.17, 14.79, 0.00, 0.00, -90.06, -1, -1, -1, 30.0); CreateDynamicObject(2543, 1182.72, -1439.15, 14.79, 0.00, 0.00, -90.84, -1, -1, -1, 30.0); CreateDynamicObject(1990, 1182.66, -1431.67, 14.79, 0.00, 0.00, 3.30, -1, -1, -1, 30.0); CreateDynamicObject(1990, 1181.63, -1431.73, 14.79, 0.00, 0.00, 3.30, -1, -1, -1, 30.0); CreateDynamicObject(1990, 1180.61, -1431.81, 14.79, 0.00, 0.00, 3.30, -1, -1, -1, 30.0); CreateDynamicObject(1990, 1179.61, -1431.83, 14.79, 0.00, 0.00, 3.30, -1, -1, -1, 30.0); CreateDynamicObject(1990, 1178.61, -1431.89, 14.79, 0.00, 0.00, 3.30, -1, -1, -1, 30.0); CreateDynamicObject(1990, 1177.59, -1431.86, 14.79, 0.00, 0.00, 3.30, -1, -1, -1, 30.0); CreateDynamicObject(1993, 1182.66, -1436.09, 14.79, 0.00, 0.00, 90.00, -1, -1, -1, 30.0); CreateDynamicObject(2012, 1175.50, -1431.82, 14.75, 0.00, 0.00, 361.17, -1, -1, -1, 30.0); CreateDynamicObject(2012, 1172.42, -1431.87, 14.75, 0.00, 0.00, 359.93, -1, -1, -1, 30.0); CreateDynamicObject(2012, 1160.10, -1448.35, 14.75, 0.00, 0.00, -179.94, -1, -1, -1, 30.0); CreateDynamicObject(2539, 1170.45, -1435.33, 14.79, 0.00, 0.00, 181.26, -1, -1, -1, 30.0); CreateDynamicObject(2545, 1161.82, -1431.84, 14.91, 0.00, 0.00, -90.54, -1, -1, -1, 30.0); CreateDynamicObject(2545, 1160.82, -1431.83, 14.91, 0.00, 0.00, -90.54, -1, -1, -1, 30.0); CreateDynamicObject(2545, 1159.81, -1431.86, 14.91, 0.00, 0.00, -90.54, -1, -1, -1, 30.0); CreateDynamicObject(2545, 1162.82, -1431.87, 14.91, 0.00, 0.00, -90.54, -1, -1, -1, 30.0); CreateDynamicObject(1988, 1163.13, -1435.34, 14.79, 0.00, 0.00, 541.46, -1, -1, -1, 30.0); CreateDynamicObject(1988, 1166.07, -1436.32, 14.79, 0.00, 0.00, 360.80, -1, -1, -1, 30.0); CreateDynamicObject(1987, 1165.07, -1436.33, 14.79, 0.00, 0.00, 361.06, -1, -1, -1, 30.0); CreateDynamicObject(1987, 1166.11, -1435.30, 14.77, 0.00, 0.00, 180.96, -1, -1, -1, 30.0); CreateDynamicObject(1988, 1165.07, -1435.31, 14.79, 0.00, 0.00, 540.44, -1, -1, -1, 30.0); CreateDynamicObject(2536, 1165.79, -1445.07, 14.70, 0.00, 0.00, -1.20, -1, -1, -1, 30.0); CreateDynamicObject(2536, 1167.83, -1445.07, 14.70, 0.00, 0.00, -0.06, -1, -1, -1, 30.0); CreateDynamicObject(2871, 1165.79, -1444.00, 14.79, 0.00, 0.00, 178.27, -1, -1, -1, 30.0); CreateDynamicObject(2871, 1166.81, -1444.03, 14.79, 0.00, 0.00, 179.35, -1, -1, -1, 30.0); CreateDynamicObject(2871, 1167.79, -1444.04, 14.79, 0.00, 0.00, 179.89, -1, -1, -1, 30.0); CreateDynamicObject(2543, 1168.13, -1435.36, 14.79, 0.00, 0.00, 180.05, -1, -1, -1, 30.0); CreateDynamicObject(2543, 1167.10, -1435.37, 14.79, 0.00, 0.00, 180.35, -1, -1, -1, 30.0); CreateDynamicObject(2012, 1170.63, -1440.67, 14.75, 0.00, 0.00, 359.50, -1, -1, -1, 30.0); CreateDynamicObject(2012, 1173.77, -1440.72, 14.75, 0.00, 0.00, 359.82, -1, -1, -1, 30.0); CreateDynamicObject(2012, 1177.30, -1445.31, 14.75, 0.00, 0.00, 359.93, -1, -1, -1, 30.0); CreateDynamicObject(1996, 1173.36, -1448.30, 14.79, 0.00, 0.00, 179.10, -1, -1, -1, 30.0); CreateDynamicObject(1981, 1174.33, -1448.32, 14.79, 0.00, 0.00, -181.74, -1, -1, -1, 30.0); CreateDynamicObject(1981, 1175.32, -1448.35, 14.79, 0.00, 0.00, -180.84, -1, -1, -1, 30.0); CreateDynamicObject(1981, 1176.30, -1448.37, 14.79, 0.00, 0.00, -180.84, -1, -1, -1, 30.0); CreateDynamicObject(1991, 1177.28, -1448.37, 14.79, 0.00, 0.00, 179.47, -1, -1, -1, 30.0); CreateDynamicObject(1996, 1178.33, -1448.36, 14.79, 0.00, 0.00, 179.24, -1, -1, -1, 30.0); CreateDynamicObject(1991, 1179.33, -1448.37, 14.79, 0.00, 0.00, 179.57, -1, -1, -1, 30.0); CreateDynamicObject(1994, 1176.82, -1444.16, 14.79, 0.00, 0.00, -0.84, -1, -1, -1, 30.0); CreateDynamicObject(1995, 1178.81, -1444.20, 14.79, 0.00, 0.00, -1.26, -1, -1, -1, 30.0); CreateDynamicObject(2543, 1168.89, -1444.06, 14.79, 0.00, 0.00, 178.97, -1, -1, -1, 30.0); CreateDynamicObject(2543, 1169.91, -1444.07, 14.79, 0.00, 0.00, 179.69, -1, -1, -1, 30.0); CreateDynamicObject(2543, 1169.87, -1445.12, 14.79, 0.00, 0.00, -0.06, -1, -1, -1, 30.0); CreateDynamicObject(2543, 1168.86, -1445.11, 14.79, 0.00, 0.00, 0.31, -1, -1, -1, 30.0); CreateDynamicObject(2538, 1167.02, -1431.87, 14.79, 0.00, 0.00, 0.42, -1, -1, -1, 30.0); CreateDynamicObject(2539, 1166.03, -1431.89, 14.79, 0.00, 0.00, 0.70, -1, -1, -1, 30.0); CreateDynamicObject(2540, 1164.04, -1431.91, 14.79, 0.00, 0.00, 0.60, -1, -1, -1, 30.0); CreateDynamicObject(2539, 1165.03, -1431.91, 14.79, 0.00, 0.00, 1.02, -1, -1, -1, 30.0); CreateDynamicObject(2538, 1176.17, -1436.38, 14.79, 0.00, 0.00, 0.24, -1, -1, -1, 30.0); CreateDynamicObject(2539, 1174.22, -1436.37, 14.79, 0.00, 0.00, -0.06, -1, -1, -1, 30.0); CreateDynamicObject(2540, 1173.22, -1436.36, 14.79, 0.00, 0.00, 0.18, -1, -1, -1, 30.0); CreateDynamicObject(2539, 1175.20, -1436.38, 14.79, 0.00, 0.00, -2.06, -1, -1, -1, 30.0); CreateDynamicObject(2540, 1173.26, -1435.31, 14.79, 0.00, 0.00, 180.17, -1, -1, -1, 30.0); CreateDynamicObject(1991, 1175.74, -1439.58, 14.79, 0.00, 0.00, 179.57, -1, -1, -1, 30.0); CreateDynamicObject(1996, 1174.74, -1439.57, 14.79, 0.00, 0.00, 179.24, -1, -1, -1, 30.0); CreateDynamicObject(1996, 1176.17, -1435.37, 14.79, 0.00, 0.00, 179.24, -1, -1, -1, 30.0); CreateDynamicObject(1991, 1177.16, -1435.38, 14.79, 0.00, 0.00, 179.57, -1, -1, -1, 30.0); CreateDynamicObject(2540, 1169.44, -1436.35, 14.79, 0.00, 0.00, 0.18, -1, -1, -1, 30.0); CreateDynamicObject(2539, 1170.43, -1436.35, 14.79, 0.00, 0.00, 0.90, -1, -1, -1, 30.0); CreateDynamicObject(2539, 1171.34, -1436.33, 14.79, 0.00, 0.00, 0.58, -1, -1, -1, 30.0); CreateDynamicObject(2538, 1172.22, -1436.32, 14.79, 0.00, 0.00, 0.30, -1, -1, -1, 30.0); CreateDynamicObject(2871, 1163.40, -1440.68, 14.79, 0.00, 0.00, 360.41, -1, -1, -1, 30.0); CreateDynamicObject(2536, 1164.49, -1440.73, 14.70, 0.00, 0.00, -1.20, -1, -1, -1, 30.0); CreateDynamicObject(2536, 1165.49, -1440.75, 14.70, 0.00, 0.00, -0.42, -1, -1, -1, 30.0); CreateDynamicObject(2536, 1166.50, -1440.75, 14.70, 0.00, 0.00, -0.06, -1, -1, -1, 30.0); CreateDynamicObject(2543, 1167.61, -1440.64, 14.79, 0.00, 0.00, 0.31, -1, -1, -1, 30.0); CreateDynamicObject(2543, 1168.62, -1440.64, 14.79, 0.00, 0.00, 0.30, -1, -1, -1, 30.0); CreateDynamicObject(2543, 1168.64, -1439.60, 14.79, 0.00, 0.00, 180.05, -1, -1, -1, 30.0); CreateDynamicObject(2543, 1167.67, -1439.61, 14.79, 0.00, 0.00, 180.35, -1, -1, -1, 30.0); CreateDynamicObject(2871, 1163.65, -1439.67, 14.79, 0.00, 0.00, 180.61, -1, -1, -1, 30.0); CreateDynamicObject(2871, 1164.68, -1439.67, 14.79, 0.00, 0.00, 179.77, -1, -1, -1, 30.0); CreateDynamicObject(2871, 1165.68, -1439.68, 14.79, 0.00, 0.00, 180.61, -1, -1, -1, 30.0); CreateDynamicObject(2871, 1166.68, -1439.66, 14.79, 0.00, 0.00, 180.61, -1, -1, -1, 30.0); CreateDynamicObject(1990, 1175.09, -1444.97, 14.79, 0.00, 0.00, -2.46, -1, -1, -1, 30.0); CreateDynamicObject(1990, 1181.63, -1431.73, 14.79, 0.00, 0.00, 3.30, -1, -1, -1, 30.0); CreateDynamicObject(1990, 1174.07, -1444.94, 14.79, 0.00, 0.00, 0.48, -1, -1, -1, 30.0); CreateDynamicObject(1990, 1173.09, -1444.94, 14.79, 0.00, 0.00, -1.20, -1, -1, -1, 30.0); CreateDynamicObject(1990, 1172.11, -1444.92, 14.79, 0.00, 0.00, -1.14, -1, -1, -1, 30.0); CreateDynamicObject(1990, 1171.12, -1444.91, 14.79, 0.00, 0.00, -0.72, -1, -1, -1, 30.0); CreateDynamicObject(2530, 1168.54, -1448.31, 14.79, 0.00, 0.00, -178.98, -1, -1, -1, 30.0); CreateDynamicObject(2530, 1169.60, -1448.29, 14.79, 0.00, 0.00, -178.98, -1, -1, -1, 30.0); CreateDynamicObject(2530, 1170.67, -1448.30, 14.79, 0.00, 0.00, -178.98, -1, -1, -1, 30.0); CreateDynamicObject(2530, 1171.72, -1448.32, 14.79, 0.00, 0.00, -181.50, -1, -1, -1, 30.0); CreateDynamicObject(2530, 1175.13, -1443.91, 14.79, 0.00, 0.00, -181.50, -1, -1, -1, 30.0); CreateDynamicObject(2012, 1176.82, -1440.75, 14.75, 0.00, 0.00, 359.93, -1, -1, -1, 30.0); CreateDynamicObject(1995, 1177.71, -1439.63, 14.79, 0.00, 0.00, 0.00, -1, -1, -1, 30.0); CreateDynamicObject(1994, 1176.73, -1439.63, 14.79, 0.00, 0.00, 0.06, -1, -1, -1, 30.0); CreateDynamicObject(1993, 1177.83, -1444.15, 14.79, 0.00, 0.00, 179.46, -1, -1, -1, 30.0); // Prison Exterior CreateDynamicObject(1278, 229.90096, 1368.96594, 23.32740, 0.00000, 0.00000, 220.00000); CreateDynamicObject(1278, 200.74687, 1368.64319, 23.32740, 0.00000, 0.00000, 180.00000); CreateDynamicObject(1278, 165.18126, 1376.34033, 23.32740, 0.00000, 0.00000, 150.00000); CreateDynamicObject(1278, 177.82100, 1440.04126, 23.32740, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1278, 224.96089, 1439.91064, 23.32740, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1278, 274.66998, 1421.92847, 23.32740, 0.00000, 0.00000, 300.00000); CreateDynamicObject(1278, 122.27402, 1401.62268, 23.32740, 0.00000, 0.00000, 120.00000); CreateDynamicObject(1278, 121.71516, 1440.38428, 23.32740, 0.00000, 0.00000, 40.00000); CreateDynamicObject(3934, 263.38199, 1382.63379, 23.58800, 0.00000, 0.00000, 0.00000); CreateDynamicObject(3109, 250.77750, 1383.13220, 24.77640, 0.00000, 0.00000, 180.00000); CreateDynamicObject(19124, 274.09549, 1371.32324, 24.19493, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19124, 253.04935, 1371.26794, 24.19493, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19124, 252.99965, 1392.70959, 24.19493, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19124, 274.11551, 1392.69324, 24.19493, 0.00000, 0.00000, 0.00000); CreateDynamicObject(3636, 401.63470, 1430.83179, 13.91010, -2.44900, 0.79400, 0.00000); CreateDynamicObject(2774, 288.42181, 1420.14966, 8.99200, 0.00000, 180.00000, 0.00000); CreateDynamicObject(19313, 280.73251, 1420.65112, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 273.66440, 1427.60815, 8.86000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 273.66440, 1441.59253, 8.86000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 232.71010, 1439.51099, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 218.71750, 1439.51099, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 184.82860, 1439.51099, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 170.84010, 1439.51099, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 136.91161, 1439.51099, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 127.59380, 1439.50647, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 120.60090, 1432.50391, 8.86000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 120.61320, 1418.53784, 8.86000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 120.61320, 1404.55750, 8.86000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 120.61320, 1390.57666, 8.86000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 120.61320, 1376.60352, 8.86000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 120.61320, 1362.59875, 8.86000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(2774, 288.42181, 1400.35864, 8.99200, 0.00000, 180.00000, 0.00000); CreateDynamicObject(2774, 273.68338, 1413.10034, 8.40500, 44.32500, 90.00000, 90.00000); CreateDynamicObject(19313, 273.66440, 1413.58960, 8.86000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 273.66241, 1399.62964, 8.86000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3998, 250.5902, 1383.93469, 15.86240, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 231.12820, 1348.60974, 11.45120, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 231.12820, 1373.50317, 11.45119, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 266.45618, 1392.07166, 12.91330, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 264.77591, 1392.09949, 12.91330, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 120.61320, 1362.59875, 15.43390, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 120.61320, 1376.60352, 15.43390, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 120.61320, 1390.57666, 15.43390, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 120.61320, 1404.55750, 15.43390, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 120.61320, 1418.53784, 15.43390, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 120.60090, 1432.50391, 15.43390, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 127.59380, 1439.50647, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 136.91161, 1439.51099, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 170.84010, 1439.51099, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 184.82860, 1439.51099, 0.00000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 184.82860, 1439.51099, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 218.71750, 1439.51099, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 232.71010, 1439.51099, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 273.66440, 1441.59253, 15.43390, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 273.66440, 1427.60815, 15.43390, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 273.66440, 1413.58960, 15.43390, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 273.66241, 1399.62964, 15.43390, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 280.73251, 1420.65112, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 127.63920, 1402.47144, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 141.68280, 1402.47485, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 127.63920, 1402.47144, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 141.68280, 1402.47485, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 152.80748, 1402.46436, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 152.80750, 1402.46436, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 224.08275, 1341.65161, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 210.08070, 1341.64966, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 196.03830, 1341.64966, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 189.04291, 1348.67053, 8.86000, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 181.95216, 1369.68909, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 167.93201, 1369.68713, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 167.93201, 1369.68713, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 181.95219, 1369.68909, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 189.04289, 1348.67053, 15.43390, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 196.03830, 1341.64966, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 210.08070, 1341.64966, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 224.08270, 1341.65161, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 266.65228, 1448.68750, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 266.65231, 1448.68750, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 253.24706, 1448.69482, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 253.24710, 1448.69482, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 166.33110, 1369.70410, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 166.33110, 1369.70410, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 231.15221, 1378.30518, 11.45120, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 231.12820, 1348.60974, 18.01870, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 231.18027, 1362.62976, 18.01870, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 231.12820, 1376.63184, 18.01870, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 231.15221, 1378.30518, 18.01870, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 249.09987, 1395.66016, 10.81643, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19445, 144.01550, 1433.23865, 7.84330, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19445, 144.01550, 1423.60559, 7.84330, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19445, 144.01550, 1413.97095, 7.84330, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19445, 144.01550, 1407.29395, 7.84530, 0.00000, 0.00000, 0.00000); CreateDynamicObject(946, 133.94099, 1405.53662, 11.74820, 0.00000, 0.00000, 0.00000); CreateDynamicObject(946, 133.94099, 1436.98035, 11.75420, 0.00000, 0.00000, 180.00000); CreateDynamicObject(946, 192.15331, 1394.54370, 11.75420, 0.00000, 0.00000, 0.00000); CreateDynamicObject(946, 192.15327, 1415.97351, 11.75420, 0.00000, 0.00000, 180.00000); CreateDynamicObject(16101, 124.67510, 1430.52795, 2.66450, 0.00000, 0.00000, 0.00000); CreateDynamicObject(16101, 121.50750, 1430.53333, 2.04530, 0.00000, 0.00000, 0.00000); CreateDynamicObject(16101, 124.69012, 1411.44495, 2.66450, 0.00000, 0.00000, 0.00000); CreateDynamicObject(16101, 121.52267, 1411.42480, 2.01386, 0.00000, 0.00000, 0.00000); CreateDynamicObject(16101, 124.80370, 1422.46643, 2.66450, 0.00000, 0.00000, 0.00000); CreateDynamicObject(16101, 124.80370, 1425.06714, 2.66450, 0.00000, 0.00000, 0.00000); CreateDynamicObject(16101, 124.80370, 1417.00623, 2.66450, 0.00000, 0.00000, 0.00000); CreateDynamicObject(16101, 124.80370, 1419.72461, 2.66450, 0.00000, 0.00000, 0.00000); CreateDynamicObject(16101, 124.80369, 1414.12524, 2.66450, 0.00000, 0.00000, 0.00000); CreateDynamicObject(16101, 124.80370, 1427.62610, 2.66450, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1368, 121.81980, 1429.13477, 10.24290, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1368, 121.81980, 1426.59399, 10.24290, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1368, 121.81980, 1424.05383, 10.24290, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1368, 121.81980, 1421.51306, 10.24290, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1368, 121.81980, 1418.97241, 10.24290, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1368, 121.81980, 1416.43298, 10.24290, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1368, 121.81980, 1413.89294, 10.24290, 0.00000, 0.00000, 90.00000); CreateDynamicObject(1368, 121.81980, 1412.79272, 10.24090, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3819, 148.02538, 1430.57410, 10.56690, 0.00000, 0.00000, 0.00000); CreateDynamicObject(3819, 148.02541, 1412.24792, 10.56690, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19445, 133.75110, 1421.10522, 7.84730, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 256.09412, 1416.68701, 10.81640, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 256.09021, 1402.67493, 10.81640, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 259.53851, 1416.68701, 10.81640, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 259.53851, 1402.67493, 10.81640, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 259.53851, 1388.71472, 10.81640, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 259.53134, 1385.30688, 10.81640, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19304, 257.82379, 1423.68518, 12.65040, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19303, 258.70190, 1423.68518, 10.82450, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19302, 256.96381, 1423.68518, 10.82450, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19304, 257.82181, 1423.68604, 13.45540, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19087, 243.86713, 1409.75989, 11.82390, 0.00000, 90.00000, 0.00000); CreateDynamicObject(16101, 241.42200, 1409.74902, 1.03310, 0.00000, 0.00000, 0.00000); CreateDynamicObject(16101, 243.83760, 1409.74902, 1.55447, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19087, 241.42929, 1412.25928, 11.51171, 0.00000, 90.00000, 90.00000); CreateDynamicObject(16101, 241.41301, 1412.28894, 0.71990, 0.00000, 0.00000, 0.00000); CreateDynamicObject(16101, 238.44328, 1409.49829, 4.53515, 0.00000, 0.00000, 0.00000); CreateDynamicObject(16101, 233.55949, 1409.49829, 4.53520, 0.00000, 0.00000, -0.12000); CreateDynamicObject(19087, 238.47841, 1409.50061, 15.41054, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19087, 236.02180, 1409.49976, 15.41050, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19087, 235.13200, 1409.49976, 15.41050, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19088, 235.13200, 1409.49976, 12.56050, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19087, 235.13300, 1409.49988, 14.97250, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19087, 236.88100, 1409.49976, 15.41050, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19087, 236.88200, 1409.49988, 14.97250, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19088, 236.88100, 1409.49976, 12.56050, 0.00000, 0.00000, 100.00000); CreateDynamicObject(2629, 232.45370, 1396.74707, 9.56030, 0.00000, 0.00000, 180.00000); CreateDynamicObject(2629, 235.83270, 1396.74707, 9.56030, 0.00000, 0.00000, 180.00000); CreateDynamicObject(2628, 239.51656, 1396.91650, 9.56030, 0.00000, 0.00000, 180.00000); CreateDynamicObject(2628, 242.37840, 1396.91650, 9.56030, 0.00000, 0.00000, 180.00000); CreateDynamicObject(2628, 246.40311, 1396.91650, 9.56030, 0.00000, 0.00000, 180.00000); CreateDynamicObject(19087, 243.85231, 1409.78259, 12.43094, 0.00000, 90.00000, 90.00000); CreateDynamicObject(16101, 243.83659, 1407.32373, 1.55450, 0.00000, 0.00000, 0.00000); CreateDynamicObject(14791, 221.89018, 1409.56616, 10.71730, 0.00000, 0.00000, 0.00000); CreateDynamicObject(3819, 222.00067, 1416.85522, 10.56690, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3819, 222.00070, 1401.17529, 10.56690, 0.00000, 0.00000, 270.00000); CreateDynamicObject(14401, 158.21140, 1389.36743, 9.85860, 0.00000, 0.00000, 270.00000); CreateDynamicObject(14401, 158.21140, 1382.26062, 9.85860, 0.00000, 0.00000, 270.00000); CreateDynamicObject(14401, 199.27879, 1451.74060, 9.85860, 0.00000, 0.00000, 180.00000); CreateDynamicObject(19313, 196.08022, 1369.65076, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 210.08054, 1369.65601, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 224.14120, 1369.71680, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 196.08020, 1369.65076, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 210.08051, 1369.65601, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 224.14120, 1369.71680, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 259.54727, 1430.67126, 10.81640, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 259.54489, 1444.65137, 10.81640, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 259.52869, 1444.99170, 10.81640, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3279, 225.11710, 1453.37585, 9.57495, 0.00000, 0.00000, 0.00000); CreateDynamicObject(3279, 177.97411, 1453.37585, 9.57490, 0.00000, 0.00000, 0.00000); CreateDynamicObject(3279, 131.18930, 1453.37585, 9.57490, 0.00000, 0.00000, 0.00000); CreateDynamicObject(3279, 196.86661, 1362.67029, 9.57490, 0.00000, 0.00000, 0.00000); CreateDynamicObject(3819, 192.97433, 1384.39124, 10.56690, 0.00000, 0.00000, 270.00000); CreateDynamicObject(3279, 277.74667, 1462.05188, 9.57495, 0.00000, 0.00000, 0.00000); CreateDynamicObject(3881, 290.71954, 1403.95178, 7.91466, 0.00000, 0.00000, 270.00000); CreateDynamicObject(3881, 290.71951, 1403.95178, 11.62820, 0.00000, 0.00000, 270.00000); CreateDynamicObject(966, 287.82001, 1406.73767, 9.38020, 0.00000, 0.00000, 270.00000); CreateDynamicObject(995, 288.36459, 1414.8303, 10.02890, 90.00000, 0.00000, 90.00000); CreateDynamicObject(19357, 230.36552, 1344.86133, 7.83630, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19357, 227.24139, 1344.86133, 7.83630, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19357, 224.30040, 1344.86133, 7.83630, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19357, 221.12010, 1344.86133, 7.83630, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19357, 217.97820, 1344.86133, 7.83630, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19357, 214.87869, 1344.86133, 7.83630, 0.00000, 0.00000, -0.24000); CreateDynamicObject(19357, 211.89880, 1344.86133, 7.83630, 0.00000, 0.00000, -0.24000); CreateDynamicObject(19357, 208.79820, 1344.86133, 7.83630, 0.00000, 0.00000, -0.24000); CreateDynamicObject(19357, 205.73801, 1344.86133, 7.83630, 0.00000, 0.00000, -0.24000); CreateDynamicObject(19357, 202.65770, 1344.86133, 7.83630, 0.00000, 0.00000, -0.24000); CreateDynamicObject(19357, 199.62410, 1344.86133, 7.83630, 0.00000, 0.00000, -0.24000); CreateDynamicObject(19445, 205.85971, 1365.02515, 7.84330, 0.00000, 0.00000, 40.00000); CreateDynamicObject(19445, 210.96640, 1365.02515, 7.84330, 0.00000, 0.00000, 40.00000); CreateDynamicObject(19445, 216.35660, 1365.02515, 7.84330, 0.00000, 0.00000, 40.00000); CreateDynamicObject(19445, 194.27516, 1355.55566, 7.84330, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 194.25998, 1351.51111, 7.84330, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19313, 182.06242, 1355.64258, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 168.05917, 1355.65137, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 166.29829, 1355.63013, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 182.06239, 1355.64258, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 168.05920, 1355.65137, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 166.29829, 1355.63013, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(16101, 209.59576, 1416.09485, 2.11692, 0.00000, 0.00000, -0.12000); CreateDynamicObject(16101, 206.47256, 1416.10486, 2.63112, 0.00000, 0.00000, -0.12000); CreateDynamicObject(16101, 206.48151, 1396.98914, 2.63112, 0.00000, 0.00000, -0.12000); CreateDynamicObject(16101, 209.60202, 1396.99182, 2.02408, 0.00000, 0.00000, -0.12000); CreateDynamicObject(16101, 206.36301, 1400.21082, 2.63110, 0.00000, 0.00000, -0.12000); CreateDynamicObject(16101, 206.36301, 1403.31189, 2.63110, 0.00000, 0.00000, -0.12000); CreateDynamicObject(16101, 206.36301, 1406.55176, 2.63110, 0.00000, 0.00000, -0.12000); CreateDynamicObject(16101, 206.36298, 1409.67273, 2.63112, 0.00000, 0.00000, -0.12000); CreateDynamicObject(16101, 206.36301, 1412.97266, 2.63110, 0.00000, 0.00000, -0.12000); CreateDynamicObject(1368, 209.32401, 1414.75415, 10.22490, 0.00000, 0.00000, 270.00000); CreateDynamicObject(1368, 209.32401, 1412.21338, 10.22490, 0.00000, 0.00000, 270.00000); CreateDynamicObject(1368, 209.32401, 1409.67358, 10.22490, 0.00000, 0.00000, 270.00000); CreateDynamicObject(1368, 209.32401, 1407.13293, 10.22490, 0.00000, 0.00000, 270.00000); CreateDynamicObject(1368, 209.32401, 1404.59229, 10.22490, 0.00000, 0.00000, 270.00000); CreateDynamicObject(1368, 209.32401, 1402.05164, 10.22490, 0.00000, 0.00000, 270.00000); CreateDynamicObject(1368, 209.32401, 1399.51184, 10.22490, 0.00000, 0.00000, 270.00000); CreateDynamicObject(1368, 209.32600, 1398.23071, 10.22290, 0.00000, 0.00000, 270.00000); CreateDynamicObject(1344, 144.56853, 1379.93787, 10.38110, 0.00000, 0.00000, 270.00000); CreateDynamicObject(1344, 144.56850, 1382.72021, 10.38110, 0.00000, 0.00000, 270.00000); CreateDynamicObject(1344, 144.57619, 1385.46326, 10.38110, 0.00000, 0.00000, 270.00000); CreateDynamicObject(1448, 143.55380, 1376.95752, 9.65270, 0.00000, 0.00000, 0.00000); CreateDynamicObject(1448, 143.55380, 1376.95752, 9.79170, 0.00000, 0.00000, 342.68130); CreateDynamicObject(1448, 143.55380, 1376.95752, 9.93170, 0.00000, 0.00000, 14.36257); CreateDynamicObject(1438, 143.05623, 1386.77234, 9.58368, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 152.35753, 1402.46692, 8.86000, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19313, 152.35750, 1402.46692, 15.43390, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19357, 249.71919, 1368.81921, 7.83630, 0.00000, 0.00000, -0.24000); CreateDynamicObject(19357, 246.57690, 1368.81921, 7.83630, 0.00000, 0.00000, -0.24000); CreateDynamicObject(19357, 243.57091, 1368.81921, 7.83630, 0.00000, 0.00000, -0.24000); CreateDynamicObject(19357, 240.60989, 1368.81921, 7.83630, 0.00000, 0.00000, -0.24000); CreateDynamicObject(19357, 237.58971, 1368.81921, 7.83630, 0.00000, 0.00000, -0.24000); CreateDynamicObject(19357, 255.62720, 1368.81921, 7.83630, 0.00000, 0.00000, -0.24000); CreateDynamicObject(19357, 258.84741, 1368.81921, 7.83630, 0.00000, 0.00000, -0.24000); CreateDynamicObject(19357, 261.94739, 1368.81921, 7.83630, 0.00000, 0.00000, -0.24000); CreateDynamicObject(19357, 265.06699, 1368.81921, 7.83630, 0.00000, 0.00000, -0.24000); CreateDynamicObject(19357, 268.22720, 1368.81921, 7.83630, 0.00000, 0.00000, -0.24000); CreateDynamicObject(19357, 271.58710, 1368.81921, 7.83630, 0.00000, 0.00000, -0.24000); CreateDynamicObject(19445, 231.60339, 1348.26526, 8.14430, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19381, 236.77890, 1348.25146, 9.81440, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19445, 236.50990, 1352.99475, 8.14430, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 246.13570, 1352.99475, 8.14430, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19381, 247.27850, 1348.25146, 9.81440, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19445, 236.33180, 1343.50916, 8.14330, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 245.96671, 1343.50916, 8.14330, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19381, 257.77829, 1348.25146, 9.81440, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19381, 268.27979, 1348.25146, 9.81440, 0.00000, 90.00000, 0.00000); CreateDynamicObject(19445, 255.60130, 1343.50916, 8.14330, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 265.23401, 1343.50916, 8.14330, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 268.72629, 1343.51025, 8.14430, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 273.45529, 1348.26318, 8.14330, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19445, 255.76910, 1352.99475, 8.14430, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 265.40240, 1352.99475, 8.14430, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 268.60251, 1352.99585, 8.14530, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 174.64439, 1397.55090, 7.84830, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19445, 174.64540, 1391.74231, 7.84730, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19445, 179.55141, 1387.01550, 7.84730, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 189.18491, 1387.01550, 7.84730, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 198.81950, 1387.01550, 7.84730, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 203.72580, 1391.74316, 7.84730, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19445, 203.72580, 1401.37756, 7.84730, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19445, 203.72580, 1411.01184, 7.84930, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19445, 203.72580, 1414.61157, 7.84330, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19445, 200.05220, 1414.51978, 7.84330, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19445, 200.05220, 1404.88550, 7.84330, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19445, 200.05220, 1395.25098, 7.84330, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19445, 195.14500, 1390.67908, 7.84330, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 185.51089, 1390.67908, 7.84330, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 183.03030, 1390.67810, 7.84230, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 178.32050, 1395.58594, 7.84230, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19445, 178.32150, 1397.62573, 7.84130, 0.00000, 0.00000, 0.00000); CreateDynamicObject(617, 240.74400, 1347.65723, 9.58400, 0.00000, 0.00000, 0.00000); CreateDynamicObject(615, 267.28683, 1347.63049, 9.58400, 0.00000, 0.00000, 90.00000); CreateDynamicObject(8623, 237.49951, 1348.04504, 10.50238, 0.00000, 0.00000, 0.00000); CreateDynamicObject(8623, 248.02049, 1348.10803, 10.50238, 0.00000, 0.00000, 0.00000); CreateDynamicObject(8623, 258.78787, 1347.87732, 10.50238, 0.00000, 0.00000, 0.00000); CreateDynamicObject(8623, 267.66467, 1348.14111, 10.50238, 0.00000, 0.00000, 0.00000); CreateDynamicObject(8990, 265.79184, 1347.00977, 10.40348, 0.00000, 0.00000, 0.00000); CreateDynamicObject(8990, 253.82431, 1346.98291, 10.40348, 0.00000, 0.00000, 0.00000); CreateDynamicObject(8990, 239.91698, 1346.90771, 10.40348, 0.00000, 0.00000, 0.00000); CreateDynamicObject(8990, 239.52455, 1348.38513, 10.40348, 0.00000, 0.00000, 0.00000); CreateDynamicObject(8990, 252.48409, 1348.48730, 10.40348, 0.00000, 0.00000, 0.00000); CreateDynamicObject(8990, 265.10614, 1348.68286, 10.40348, 0.00000, 0.00000, 0.72000); id = CreateDynamicObject(5738, 250.59111, 1457.35632, 13.04880, 0.00000, 0.00000, 90.65300); SetObjectMaterial(id, 4, 4079, "civic04_lan", "twintWin1_LAn"); //Windows SetObjectMaterial(id, 3, 4079, "civic04_lan", "twintWall2_LAn"); //Roof corner id = CreateDynamicObject(5738, 202.69530, 1457.38159, 13.04880, 0.00000, 0.00000, 90.65300); SetObjectMaterial(id, 4, 4079, "civic04_lan", "twintWin1_LAn" ); //Windows SetObjectMaterial(id, 3, 4079, "civic04_lan", "twintWall2_LAn"); //Roof corner id = CreateDynamicObject(5738, 154.79713, 1457.36853, 13.04880, 0.00000, 0.00000, 90.65300); SetObjectMaterial(id, 4, 4079, "civic04_lan", "twintWin1_LAn" ); //Windows SetObjectMaterial(id, 3, 4079, "civic04_lan", "twintWall2_LAn"); //Roof corner id = CreateDynamicObject(5738, 153.92700, 1364.09631, 13.04880, 0.00000, 0.00000, 0.65300); SetObjectMaterial(id, 4, 3998, "civic04_lan", "twintWin2_LAn" ); //Windows SetObjectMaterial(id, 3, 3998, "civic04_lan", "twintconc_LAn"); //Roof corner id = CreateDynamicObject(5738, 156.25397, 1383.78210, 5.84841, 0.00000, 0.00000, 90.65300); SetObjectMaterial(id, 4, 4079, "civic04_lan", "twintWin1_LAn" ); //Windows SetObjectMaterial(id, 3, 4079, "civic04_lan", "twintWall2_LAn"); //Roof corner id = CreateDynamicObject(8661, 239.54919, 1429.49438, 9.58680, 0.00000, 0.00000, 0.00000); SetObjectMaterial(id, 0, 17877, "landhub", "dirtKB_64HV"); id = CreateDynamicObject(8661, 199.54930, 1429.49438, 9.58680, 0.00000, 0.00000, 0.00000); SetObjectMaterial(id, 0, 17877, "landhub", "dirtKB_64HV"); id = CreateDynamicObject(8661, 163.92641, 1429.49438, 9.58880, 0.00000, 0.00000, 0.00000); SetObjectMaterial(id, 0, 17877, "landhub", "dirtKB_64HV"); id = CreateDynamicObject(8661, 163.92641, 1412.45239, 9.59080, 0.00000, 0.00000, 0.00000); SetObjectMaterial(id, 0, 17877, "landhub", "dirtKB_64HV"); id = CreateDynamicObject(8661, 246.07111, 1419.51489, -10.39270, -0.09000, 90.00000, 270.00000); SetObjectMaterial(id, 0, 17877, "landhub", "dirtKB_64HV"); id = CreateDynamicObject(19381, 225.75252, 1378.60693, 9.81440, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 17877, "landhub", "dirtKB_64HV"); id = CreateDynamicObject(19381, 225.75369, 1388.24182, 9.81440, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 17877, "landhub", "dirtKB_64HV"); id = CreateDynamicObject(19381, 215.25240, 1388.24182, 9.81440, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 17877, "landhub", "dirtKB_64HV"); id = CreateDynamicObject(19381, 215.25240, 1378.60693, 9.81440, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 17877, "landhub", "dirtKB_64HV"); id = CreateDynamicObject(19447, 153.82552, 1433.24878, 9.50910, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 153.82550, 1423.61450, 9.50910, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 153.82550, 1413.98083, 9.50910, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 153.82550, 1404.34619, 9.50910, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 201.88910, 1433.24878, 9.50910, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 249.70700, 1433.24475, 9.50310, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 160.39301, 1426.67969, 9.50910, 0.00000, 90.00000, 90.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 170.02370, 1426.67969, 9.50910, 0.00000, 90.00000, 90.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 179.65800, 1426.67969, 9.50910, 0.00000, 90.00000, 90.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 189.29311, 1426.67969, 9.50910, 0.00000, 90.00000, 90.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 198.92720, 1426.67969, 9.50910, 0.00000, 90.00000, 90.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 208.56310, 1426.67969, 9.50910, 0.00000, 90.00000, 90.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 218.19791, 1426.67969, 9.50910, 0.00000, 90.00000, 90.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 227.83200, 1426.67969, 9.50910, 0.00000, 90.00000, 90.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 237.46550, 1426.67969, 9.50910, 0.00000, 90.00000, 90.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 246.64120, 1426.67773, 9.50710, 0.00000, 90.00000, 90.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 257.82697, 1396.96594, 9.50910, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 257.82700, 1406.60217, 9.50910, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 257.82700, 1416.23669, 9.50910, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 251.65305, 1422.43433, 9.40710, 0.00000, 90.00000, 51.63934); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 254.75819, 1426.67773, 9.50510, 0.00000, 90.00000, 90.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 257.82700, 1422.33044, 9.50710, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 206.90739, 1436.32495, 9.50710, 0.00000, 90.00000, 90.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 160.39191, 1404.88257, 9.50910, 0.00000, 90.00000, 90.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 249.70700, 1424.24158, 9.50510, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 201.88910, 1424.30957, 9.50710, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 148.91389, 1421.23462, 9.50710, 0.00000, 90.00000, 90.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 201.88910, 1414.67603, 9.50710, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 201.88910, 1405.04333, 9.50710, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 201.88910, 1395.40613, 9.50710, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 198.82060, 1388.83875, 9.50710, 0.00000, 90.00000, 90.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 189.18770, 1388.83875, 9.50710, 0.00000, 90.00000, 90.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 179.55310, 1388.83875, 9.50710, 0.00000, 90.00000, 90.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 176.48511, 1395.40625, 9.50710, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 170.02319, 1404.88257, 9.50910, 0.00000, 90.00000, 90.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 176.48309, 1401.81384, 9.50810, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); CreateDynamicObject(19445, 170.10970, 1402.45764, 7.84630, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 179.25240, 1402.45764, 7.84530, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 183.98109, 1407.36255, 7.84530, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19445, 183.97910, 1414.69836, 7.84330, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19445, 188.88429, 1419.42615, 7.84330, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 198.51880, 1419.42615, 7.84330, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 208.15269, 1419.42615, 7.84330, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 217.78529, 1419.42615, 7.84330, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 227.41811, 1419.42615, 7.84330, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 237.05209, 1419.42615, 7.84330, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 246.68600, 1419.42615, 7.84330, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 251.54640, 1419.42712, 7.84130, 0.00000, 0.00000, 90.00000); CreateDynamicObject(2913, 235.35320, 1396.20483, 10.53980, 0.00000, 90.00000, 0.00000); CreateDynamicObject(2913, 231.97060, 1396.22119, 10.53980, 0.00000, 90.00000, 0.00000); CreateDynamicObject(2915, 234.32182, 1400.07874, 9.70230, 0.00000, 0.00000, 5.00000); CreateDynamicObject(2916, 237.37637, 1399.65674, 9.70230, 0.00000, 0.00000, 0.00000); CreateDynamicObject(2915, 236.32271, 1400.50977, 9.70230, 0.00000, 0.00000, 10.00000); CreateDynamicObject(19445, 259.48611, 1433.24548, 7.84330, 0.00000, 0.00000, 0.00000); id = CreateDynamicObject(19447, 121.50720, 1416.17822, 11.00700, 0.00000, 0.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "twintWall2_LAn"); id = CreateDynamicObject(19447, 121.50717, 1425.81262, 11.00700, 0.00000, 0.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "twintWall2_LAn"); id = CreateDynamicObject(19447, 123.18810, 1425.81262, 13.31820, 0.00000, -100.00000, 0.00000); //Roof SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 123.18810, 1416.17822, 13.31820, 0.00000, -100.00000, 0.00000); //Roof SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 257.81140, 1418.93103, 14.04940, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "twintWall2_LAn"); id = CreateDynamicObject(19447, 257.81140, 1409.29639, 14.04940, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "twintWall2_LAn"); id = CreateDynamicObject(19447, 257.81140, 1399.66150, 14.04940, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "twintWall2_LAn"); id = CreateDynamicObject(19447, 257.81140, 1390.02795, 14.04940, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "twintWall2_LAn"); id = CreateDynamicObject(19447, 254.31754, 1390.86194, 14.04940, 0.00000, 90.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "twintWall2_LAn"); id = CreateDynamicObject(19447, 209.63820, 1411.35950, 11.00700, 0.00000, 0.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "twintWall2_LAn"); id = CreateDynamicObject(19447, 209.63820, 1401.72534, 11.00700, 0.00000, 0.00000, 0.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "twintWall2_LAn"); id = CreateDynamicObject(19447, 208.03281, 1401.72534, 13.27660, 0.00000, 100.00000, 0.00000); //Roof SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19447, 208.03191, 1411.35950, 13.27660, 0.00000, 100.00000, 0.00000); //Roof SetObjectMaterial(id, 0, 4079, "civic04_lan", "plaintarmac1"); id = CreateDynamicObject(19355, 123.20170, 1411.45129, 11.00700, 0.00000, 0.00000, 90.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "twintWall2_LAn"); id = CreateDynamicObject(19355, 123.20320, 1430.54175, 11.00700, 0.00000, 0.00000, 90.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "twintWall2_LAn"); id = CreateDynamicObject(19355, 207.94400, 1416.08618, 11.00700, 0.00000, 0.00000, 90.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "twintWall2_LAn"); id = CreateDynamicObject(19355, 207.94400, 1396.99658, 11.00700, 0.00000, 0.00000, 90.00000); SetObjectMaterial(id, 0, 4079, "civic04_lan", "twintWall2_LAn"); id = CreateDynamicObject(19447, 288.09763, 1415.01477, 19.62394, 0.00000, 0.00000, 0.00000); SetObjectMaterial(id, 0, 2774, "airp_prop", "cj_white_wall2"); id = CreateDynamicObject(19447, 288.09830, 1405.38281, 19.62390, 0.00000, 0.00000, 0.00000); SetObjectMaterial(id, 0, 2774, "airp_prop", "cj_white_wall2"); id = CreateDynamicObject(19447, 287.9496, 1415.01477, 19.62394, 0.00000, 0.00000, 0.00000); SetObjectMaterial(id, 0, 2774, "airp_prop", "cj_white_wall2"); id = CreateDynamicObject(19447, 287.9496, 1405.38281, 19.62390, 0.00000, 0.00000, 0.00000); SetObjectMaterial(id, 0, 2774, "airp_prop", "cj_white_wall2"); // Prison gates CreateDynamicObject(988, 231.21869, 1358.35840, 10.61700, 0.00000, 0.00000, 90.00000); CreateDynamicObject(988, 231.21870, 1363.84888, 10.61700, 0.00000, 0.00000, 90.00000); CreateDynamicObject(968, 287.81442, 1406.71497, 10.02230, 0.00000, 0.00000, 90.00000); //Barrier // Prison doors CreateDynamicObject(3109, 154.61871, 1438.06323, 10.77020, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3109, 202.56454, 1438.04517, 10.77020, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3109, 250.45157, 1438.03906, 10.77020, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3109, 153.9786, 1403.04712, 10.77020, 0.00000, 0.00000, 270.00000); CreateDynamicObject(3109, 173.22977, 1366.2065, 10.77020, 0.00000, 0.00000, 180.00000); CreateDynamicObject(3109, 139.8456, 1374.94885, 10.77020, 0.00000, 0.00000, 270.00000); // Grass area CreateDynamicObject(19445, 216.55380, 1373.85425, 8.14430, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 214.81371, 1373.85315, 8.14530, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 210.06380, 1378.58154, 8.14630, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19445, 210.06380, 1388.20105, 8.14630, 0.00000, 0.00000, 0.00000); CreateDynamicObject(19445, 214.79179, 1393.00476, 8.14530, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 224.42570, 1393.00476, 8.14530, 0.00000, 0.00000, 90.00000); CreateDynamicObject(19445, 234.05949, 1393.00476, 8.14530, 0.00000, 0.00000, 90.00000); CreateDynamicObject(3694, 226.09680, 1382.20959, 10.23200, 0.00000, 0.00000, 0.00000); CreateDynamicObject(617, 211.71286, 1383.07922, 9.58400, 0.00000, 0.00000, 0.00000); CreateDynamicObject(337, 221.29813, 1387.08557, 10.63570, 180.00000, -20.00000, 180.00000); CreateDynamicObject(337, 218.26199, 1386.34912, 9.98550, 0.00000, 90.00000, 0.00000); CreateDynamicObject(617, 226.17700, 1383.07922, 9.58400, 0.00000, 0.00000, 60.00000); CreateDynamicObject(19445, 226.18690, 1373.85425, 8.14430, 0.00000, 0.00000, 90.00000); // Prison Interior CreateDynamicObject(1498,1211.8632,-1355.2440,795.7056,0.0000,0.0000,178.9346, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(8419,1219.29980469,-1342.50000000,784.02398682,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1200.89941406,-1331.29980469,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1205.69995117,-1328.09997559,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1200.89941406,-1326.50000000,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1200.90002441,-1329.69995117,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1205.69995117,-1331.30004883,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1200.90002441,-1332.90002441,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(8419,1219.39941406,-1342.50000000,814.40002441,179.99450684,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1200.59997559,-1331.40002441,799.20001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1206.59997559,-1327.40002441,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1206.59997559,-1329.00000000,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1206.59997559,-1330.59997559,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1206.59997559,-1332.19995117,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1206.59997559,-1333.80004883,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1200.90002441,-1332.90002441,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1205.69995117,-1331.30004883,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1205.69995117,-1328.09997559,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1200.90002441,-1329.69995117,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1200.90002441,-1326.50000000,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1200.90002441,-1331.30004883,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1220.09960938,-1326.50000000,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1220.09997559,-1326.50000000,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1220.40002441,-1331.40002441,799.20001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1214.40002441,-1327.40002441,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1215.30004883,-1328.09997559,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1215.29980469,-1328.09960938,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1215.30004883,-1331.30004883,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1215.30004883,-1331.30004883,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1220.09997559,-1329.69995117,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1220.09997559,-1329.69995117,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1220.19921875,-1331.29980469,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1215.30004883,-1334.50000000,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1215.30004883,-1337.69995117,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1215.30004883,-1340.90002441,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1220.39941406,-1341.00000000,799.20001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1215.30004883,-1334.50000000,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1215.30004883,-1337.69995117,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1215.30004883,-1340.90002441,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1220.09997559,-1332.90002441,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1220.09997559,-1336.09997559,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1220.09997559,-1339.19995117,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1220.09997559,-1342.50000000,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1220.09997559,-1342.50000000,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1220.09997559,-1339.19995117,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1220.09997559,-1336.09997559,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1220.09997559,-1332.90002441,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1220.19921875,-1340.89941406,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1220.19921875,-1340.89941406,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1205.69995117,-1334.50000000,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1200.90002441,-1336.09997559,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1205.69921875,-1337.69921875,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1200.90002441,-1339.30004883,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1205.69995117,-1340.90002441,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1200.90002441,-1342.50000000,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1200.59960938,-1341.00000000,799.20001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1200.89941406,-1340.89941406,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1200.90002441,-1340.90002441,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1205.69995117,-1334.50000000,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1205.69995117,-1337.69995117,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1205.69995117,-1340.90002441,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1200.90002441,-1342.50000000,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1200.90002441,-1339.30004883,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1200.90002441,-1336.09997559,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1206.59997559,-1335.40002441,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1206.59997559,-1337.00000000,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1206.59997559,-1338.59997559,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1206.59997559,-1340.19995117,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1206.59997559,-1341.80004883,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1214.40002441,-1329.00000000,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1214.40002441,-1330.59997559,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1214.40002441,-1332.19995117,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1214.40002441,-1333.80004883,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1214.40002441,-1335.40002441,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1214.40002441,-1337.00000000,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1214.40002441,-1338.59997559,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1214.40002441,-1340.19995117,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1214.40002441,-1341.80004883,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1212.80004883,-1327.40002441,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1211.19995117,-1327.40002441,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1209.59997559,-1327.40002441,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1208.09997559,-1327.40002441,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1210.50000000,-1326.50000000,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1220.19995117,-1331.30004883,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1209.89941406,-1321.89941406,799.20001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1210.50000000,-1326.59997559,807.70001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1215.19995117,-1331.40002441,807.70001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1215.19995117,-1341.00000000,807.70001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1205.80004883,-1331.40002441,807.70001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1205.79980469,-1341.00000000,807.70001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1214.40002441,-1343.40002441,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1214.40002441,-1345.00000000,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1206.59997559,-1343.40002441,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3280,1206.59997559,-1345.00000000,799.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1215.30004883,-1344.09997559,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1220.09960938,-1345.69921875,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1220.09960938,-1345.69921875,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1215.29980469,-1344.09960938,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1205.69995117,-1344.09997559,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1200.89941406,-1345.69921875,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1210.50000000,-1326.59997559,790.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1205.80004883,-1331.40002441,790.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1205.79980469,-1341.00000000,790.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1215.19995117,-1331.40002441,790.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1215.19995117,-1341.00000000,790.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1200.89941406,-1345.69921875,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1205.69995117,-1344.09997559,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(8572,1204.50000000,-1346.69995117,798.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1199.19921875,-1350.50000000,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1200.19921875,-1350.50000000,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1195.09960938,-1350.59960938,799.20001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1198.09997559,-1328.40002441,799.09997559,0.00000000,0.00000000,180.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1198.09997559,-1331.69995117,799.09997559,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1198.09997559,-1334.90002441,799.09997559,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1198.09997559,-1338.09997559,799.09997559,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1198.09997559,-1341.30004883,799.09997559,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1198.09997559,-1344.50000000,799.09997559,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1198.09997559,-1344.50000000,802.70001221,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1198.09960938,-1341.29980469,802.70001221,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1198.09997559,-1338.09997559,802.70001221,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1198.09997559,-1334.90002441,802.70001221,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1198.09997559,-1331.69995117,802.70001221,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1198.09960938,-1328.50000000,802.70001221,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1222.90002441,-1343.80004883,802.67999268,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1222.90002441,-1340.50000000,799.09997559,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1222.90002441,-1337.30004883,799.09997559,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1222.90002441,-1334.19995117,802.67999268,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1222.90002441,-1331.00000000,799.09997559,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1222.90002441,-1327.80004883,799.09997559,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1222.89941406,-1331.00000000,799.09997559,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1222.90002441,-1327.80004883,802.67999268,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1222.90002441,-1331.00000000,802.67999268,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1222.89941406,-1334.19921875,799.09997559,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1222.90002441,-1337.30004883,802.67999268,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1222.90002441,-1340.50000000,802.67999268,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16645,1222.89941406,-1343.79980469,799.09997559,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1205.69995117,-1321.59997559,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1215.30004883,-1321.80004883,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1215.19921875,-1316.00000000,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1209.89941406,-1312.29980469,799.20001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1205.00000000,-1355.30004883,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1214.59960938,-1355.29980469,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19355,1219.39941406,-1353.69921875,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1219.39941406,-1350.50000000,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19355,1219.40002441,-1347.30004883,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1218.40002441,-1350.50000000,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1195.39941406,-1355.29980469,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1205.59960938,-1359.09960938,799.20001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1216.09997559,-1359.09997559,799.20300293,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1223.50000000,-1350.59960938,799.20001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19355,1221.00000000,-1355.30004883,797.50000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1224.19921875,-1355.29980469,797.50000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19355,1227.39941406,-1355.29980469,797.50000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1229.00000000,-1350.50000000,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1229.09960938,-1350.50000000,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1230.89941406,-1341.00000000,799.20001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1230.89941406,-1331.39941406,799.20001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1224.89941406,-1340.89941406,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19388,1215.19921875,-1310.00000000,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19388,1230.59960938,-1355.19921875,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1230.56250000,-1355.29980469,797.50000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19355,1233.69995117,-1355.30004883,797.50000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1235.19995117,-1360.09997559,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1227.59997559,-1360.09997559,795.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1227.59960938,-1360.09960938,799.79998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1226.59960938,-1360.19921875,799.20001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1227.50000000,-1345.69995117,797.50000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19355,1224.30004883,-1345.70104980,797.50000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19388,1232.19921875,-1344.09960938,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1237.09960938,-1350.39941406,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1241.89941406,-1345.59960938,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1237.59997559,-1347.30004883,799.09997559,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1237.59960938,-1337.69921875,799.09997559,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1232.19995117,-1337.69995117,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1229.09997559,-1340.90002441,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19388,1230.59997559,-1345.40002441,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19358,1216.79980469,-1312.91210938,797.50000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19388,1220.00000000,-1312.91210938,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19358,1223.20104980,-1312.91296387,797.50000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1229.00000000,-1340.90002441,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1229.00000000,-1331.30004883,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19358,1215.40002441,-1314.59997559,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19358,1215.40002441,-1317.80004883,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19358,1224.79980469,-1314.50000000,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19358,1224.79980469,-1317.69921875,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1229.00000000,-1321.69995117,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1227.39941406,-1326.50000000,797.50000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19355,1224.19995117,-1326.50097656,797.50000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19355,1224.90002441,-1318.50000000,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1227.40002441,-1316.90002441,797.50000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19428,1225.59997559,-1316.90100098,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19401,1216.89941406,-1319.59960938,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19401,1220.09960938,-1319.59960938,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19401,1223.30004883,-1319.59997559,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19404,1216.90100098,-1319.40100098,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19404,1220.10095215,-1319.40100098,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19404,1223.30102539,-1319.40100098,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19388,1227.43652344,-1316.80078125,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19431,1225.59997559,-1316.80004883,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1229.09960938,-1331.29980469,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1229.09997559,-1321.69995117,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19388,1232.19995117,-1331.30004883,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1232.19921875,-1324.89941406,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1232.19921875,-1312.09960938,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19388,1232.19995117,-1318.50000000,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16101,1229.09960938,-1316.79980469,795.70001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1220.09960938,-1308.00000000,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1229.69921875,-1308.00000000,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19388,1230.59960938,-1326.79980469,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19355,1224.90002441,-1321.69995117,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1224.90002441,-1324.90002441,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1230.90002441,-1321.80004883,799.20001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1230.89941406,-1312.19921875,799.20001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1220.40002441,-1321.80004883,799.20001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1220.40002441,-1312.19995117,799.20001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1237.09997559,-1360.09997559,799.20001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1220.89941406,-1364.89941406,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1211.30004883,-1364.90002441,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1201.69921875,-1364.89941406,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1204.59997559,-1360.09997559,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1195.09997559,-1360.19995117,799.20001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1205.59997559,-1368.69995117,799.20001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1216.09960938,-1368.69921875,799.20001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1210.40002441,-1326.50000000,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1210.50000000,-1320.79980469,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19358,1233.90002441,-1355.19995117,801.00000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19358,1232.19995117,-1350.50000000,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1237.00000000,-1355.19995117,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1237.00000000,-1352.09997559,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1227.09997559,-1350.59997559,799.20098877,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(14877,1236.30004883,-1353.59997559,797.09997559,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1242.40002441,-1356.90002441,799.20098877,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1237.00000000,-1352.09997559,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19358,1232.19921875,-1347.29980469,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19358,1237.09997559,-1355.19995117,801.00000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19388,1240.30004883,-1355.19995117,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1241.80004883,-1356.90002441,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1237.00000000,-1361.69921875,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1227.40002441,-1361.69995117,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1232.30004883,-1350.40002441,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19388,1230.69995117,-1355.19995117,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1229.09997559,-1360.00000000,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19358,1227.50000000,-1355.19995117,801.00000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19388,1224.30004883,-1355.19995117,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1227.40002441,-1352.09997559,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1222.69995117,-1349.59997559,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19401,1208.09997559,-1354.40100098,801.00000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19401,1213.09997559,-1354.40100098,801.00000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19401,1210.59997559,-1354.40002441,801.00000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19355,1216.30004883,-1354.40002441,801.00000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19355,1219.50000000,-1354.40002441,801.00000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1201.69995117,-1354.40002441,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19358,1221.09997559,-1357.59997559,801.00000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19358,1217.90002441,-1357.59997559,801.00000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19358,1216.30004883,-1356.00000000,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19358,1222.69995117,-1356.00000000,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1217.80004883,-1361.69995117,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1208.19995117,-1361.69995117,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1198.59960938,-1361.69921875,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1225.90002441,-1360.00000000,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1200.30004883,-1359.19995117,801.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19404,1213.09960938,-1354.60058594,801.00000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19404,1210.59960938,-1354.59960938,801.00000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19404,1208.09997559,-1354.60095215,801.00000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19358,1216.30004883,-1354.59997559,801.00000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1201.69995117,-1354.59997559,801.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19428,1205.69995117,-1346.80004883,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19428,1207.29980469,-1346.79980469,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19428,1206.50000000,-1345.69995117,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19428,1206.50000000,-1347.59997559,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19428,1205.70104980,-1346.50000000,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19428,1207.30102539,-1346.50000000,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1234.39941406,-1350.39941406,795.70001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1234.40002441,-1340.80004883,795.70001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1234.39941406,-1331.19921875,795.70001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1234.40002441,-1321.59997559,795.70001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1244.90002441,-1350.40002441,795.70001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1244.90002441,-1340.80004883,795.70001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1244.90002441,-1331.19995117,795.70001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1244.89941406,-1321.59960938,795.70001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1244.90002441,-1312.00000000,795.70001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1234.40002441,-1312.00000000,795.70001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1223.90002441,-1312.00000000,795.70001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1213.40002441,-1312.00000000,795.70001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1202.89941406,-1312.00000000,795.70001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1219.59997559,-1314.50000000,795.70098877,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1210.00000000,-1316.00000000,795.70202637,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1239.29980469,-1308.00000000,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1241.90002441,-1336.00000000,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1241.90002441,-1326.40002441,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1241.89941406,-1316.79980469,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1241.90002441,-1307.19995117,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1237.59997559,-1328.09997559,799.09997559,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1237.59997559,-1318.50000000,799.09997559,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1237.59997559,-1308.90002441,799.09997559,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1242.40100098,-1357.00000000,799.29998779,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1227.09997559,-1357.00000000,799.29998779,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1223.59997559,-1357.00000000,799.30102539,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1213.09960938,-1359.50000000,799.29998779,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1202.59960938,-1359.50000000,799.29998779,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1235.40002441,-1360.09997559,799.30200195,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1205.79980469,-1315.89941406,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1210.50000000,-1308.00000000,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1205.79980469,-1306.29980469,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19466,1210.69995117,-1354.59997559,801.40002441,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19466,1213.09960938,-1354.59960938,801.40002441,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19466,1208.09997559,-1354.59997559,801.40002441,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16644,1207.69921875,-1354.50000000,809.79998779,0.00000000,90.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16644,1210.19995117,-1354.50000000,809.79998779,0.00000000,90.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1892,1212.59997559,-1310.50000000,795.76000977,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1569,1205.83996582,-1315.80004883,795.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1569,1205.83996582,-1312.80004883,795.79998779,0.00000000,0.00000000,269.79992676, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1210.30004883,-1308.09997559,804.20001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1210.30004883,-1309.90002441,804.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1210.30004883,-1311.50000000,804.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1210.30004883,-1313.30004883,804.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1210.30004883,-1314.80004883,804.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1210.30004883,-1316.30004883,804.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1210.30004883,-1317.80004883,804.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1210.30004883,-1319.30004883,804.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1210.30004883,-1320.69995117,804.20001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1205.80395508,-1315.90002441,804.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1205.80297852,-1306.30004883,804.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1215.09997559,-1315.80004883,804.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1215.09997559,-1306.19995117,804.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1210.30004883,-1308.02001953,790.65002441,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1205.80297852,-1308.00000000,790.65002441,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1205.80297852,-1316.00000000,790.65002441,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1210.30004883,-1320.79003906,790.65002441,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1215.18994141,-1315.90002441,790.65100098,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1215.19201660,-1315.54199219,790.65002441,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1215.18994141,-1304.42004395,790.65002441,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1209.59997559,-1308.69995117,796.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3657,1228.50000000,-1330.19995117,796.20001221,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3657,1228.50000000,-1335.80004883,796.20001221,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3657,1228.50000000,-1341.39941406,796.20001221,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3055,1212.09997559,-1316.90002441,794.00097656,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3055,1212.10058594,-1314.89941406,794.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3055,1212.09997559,-1305.09997559,794.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1212.59997559,-1312.50000000,796.04998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1212.59997559,-1314.50000000,796.04998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1212.59960938,-1316.50000000,796.04998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1212.59997559,-1318.50000000,796.04998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1212.59997559,-1320.50000000,796.04998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3055,1213.00000000,-1314.90002441,794.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3055,1213.00097656,-1317.00000000,794.00097656,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1212.59997559,-1308.50000000,796.04998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3055,1213.00000000,-1305.09997559,794.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1212.59997559,-1308.18005371,795.40002441,0.00000000,270.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1212.59997559,-1311.77502441,796.40002441,0.00000000,90.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19388,1215.19995117,-1306.80004883,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1212.17004395,-1315.90002441,790.65002441,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1212.17199707,-1315.79003906,790.65002441,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1212.17004395,-1304.16894531,790.65002441,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1212.59997559,-1313.79003906,796.40002441,0.00000000,90.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1212.59997559,-1315.79003906,796.40002441,0.00000000,90.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1212.59960938,-1317.79003906,796.40002441,0.00000000,90.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1212.59960938,-1319.79003906,796.40002441,0.00000000,90.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2165,1212.61914062,-1314.59960938,796.05999756,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2165,1212.59997559,-1318.50000000,796.05999756,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1208.90002441,-1308.69995117,796.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1208.19995117,-1308.69995117,796.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1206.40002441,-1318.19995117,796.29998779,0.00000000,0.00000000,180.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2111,1206.80004883,-1319.69995117,796.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1206.40002441,-1317.50000000,796.29998779,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1206.40002441,-1316.80004883,796.29998779,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1208.69995117,-1320.30004883,796.29998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1209.39941406,-1320.29980469,796.29998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1210.09997559,-1320.30004883,796.29998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2186,1214.69995117,-1319.30004883,795.79998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2197,1214.00000000,-1315.69995117,795.79998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2197,1214.00000000,-1314.30004883,795.79998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2197,1214.00000000,-1315.00000000,795.79998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(948,1206.19995117,-1316.09997559,795.70001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(948,1206.19921875,-1312.50000000,795.70001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2852,1207.00000000,-1319.59997559,796.59997559,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1201.09997559,-1315.80004883,793.09997559,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19379,1201.09997559,-1312.80004883,793.09997559,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(18613,1204.19995117,-1315.09997559,798.29998779,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(18613,1204.19995117,-1313.50000000,798.29998779,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19466,1223.50000000,-1319.50000000,797.90002441,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19466,1220.19995117,-1319.50000000,797.90002441,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19466,1217.00000000,-1319.50000000,797.90002441,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1223.40002441,-1319.90002441,795.70098877,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1221.50000000,-1319.90002441,795.70001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1219.59997559,-1319.90002441,795.70098877,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1217.69995117,-1319.90002441,795.70001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3055,1219.20104980,-1320.30004883,793.64001465,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1215.80004883,-1319.90002441,795.70098877,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3055,1220.90002441,-1320.30102539,793.64001465,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1216.80004883,-1321.00000000,796.20001221,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1220.09997559,-1321.00000000,796.20001221,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1223.40002441,-1321.00000000,796.20001221,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19428,1218.50000000,-1320.19995117,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19428,1221.69921875,-1320.19921875,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1215.80004883,-1319.00000000,795.70098877,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1217.69995117,-1319.00000000,795.70001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1219.59997559,-1319.00000000,795.70098877,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1221.50000000,-1319.00000000,795.70001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1223.40002441,-1319.00000000,795.70098877,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3055,1220.90002441,-1318.50097656,793.64001465,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3055,1219.30004883,-1318.50000000,793.64001465,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19431,1221.69995117,-1318.80004883,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19431,1218.50000000,-1318.80004883,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1223.40002441,-1317.90002441,796.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1220.09997559,-1317.90002441,796.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1216.90002441,-1317.90002441,796.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1269,1220.09997559,-1318.90002441,796.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1269,1220.09997559,-1320.00000000,796.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1269,1223.30004883,-1318.90002441,796.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1269,1216.90002441,-1318.90002441,796.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1269,1216.90002441,-1320.00000000,796.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1269,1223.30004883,-1320.00000000,796.00000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2230,1220.95996094,-1318.40002441,796.02001953,270.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2230,1217.76000977,-1318.40002441,796.02001953,270.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2230,1224.16003418,-1318.40002441,796.02001953,270.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2230,1224.15917969,-1319.90002441,796.02001953,270.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2230,1220.95996094,-1319.90002441,796.02001953,270.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2230,1217.75976562,-1319.90002441,796.02001953,270.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1216,1225.30004883,-1319.69995117,796.40002441,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1216,1225.30004883,-1322.19995117,796.40002441,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1216.40002441,-1313.40002441,796.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1217.09997559,-1313.40002441,796.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1217.80004883,-1313.40002441,796.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1222.90002441,-1313.40002441,796.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1222.19995117,-1313.40002441,796.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1223.59997559,-1313.40002441,796.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(948,1218.59997559,-1313.40002441,795.70001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(948,1221.30004883,-1313.40002441,795.70001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2007,1231.59997559,-1308.59997559,795.79998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3055,1228.19995117,-1310.19995117,793.84997559,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2007,1230.59997559,-1308.59997559,795.79998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2007,1229.59997559,-1308.59997559,795.79998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2007,1228.59997559,-1308.59997559,795.79998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1224.80004883,-1310.69995117,795.90002441,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1226.80004883,-1310.69995117,795.90002441,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1228.80004883,-1310.69995117,795.90002441,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1230.69995117,-1310.69995117,795.90002441,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3055,1228.19995117,-1311.09997559,793.84997559,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1225.09997559,-1310.69995117,795.29998779,0.00000000,270.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2007,1228.59960938,-1308.59960938,797.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2007,1229.59997559,-1308.59997559,797.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2007,1230.59997559,-1308.59997559,797.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2007,1231.59997559,-1308.59997559,797.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2186,1225.00000000,-1308.59960938,795.79998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2165,1231.59997559,-1310.69995117,795.90002441,0.00000000,0.00000000,180.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2165,1227.79980469,-1310.69921875,795.90002441,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1227.09960938,-1310.69921875,795.29998779,0.00000000,270.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1229.09997559,-1310.69995117,795.29998779,0.00000000,270.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2117,1231.09997559,-1310.69995117,795.29998779,0.00000000,270.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16101,1224.80004883,-1312.90002441,795.70001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16101,1215.19921875,-1345.79980469,795.70001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16101,1215.19995117,-1345.80004883,800.70001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16101,1207.29980469,-1347.59960938,795.70001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16101,1207.30004883,-1347.59997559,800.70001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16101,1207.29980469,-1345.69921875,795.70001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16101,1207.30004883,-1345.69995117,800.70001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16101,1207.40002441,-1328.09997559,799.20001221,0.00000000,180.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16101,1213.59997559,-1328.09997559,799.20001221,0.00000000,179.99450684,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16101,1213.69995117,-1345.59997559,799.20001221,0.00000000,179.99450684,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16101,1205.79980469,-1345.79980469,797.79998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1221.09960938,-1309.09960938,796.29998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1219.00000000,-1309.30004883,796.29998779,0.00000000,0.00000000,180.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2165,1220.09997559,-1309.69995117,795.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2137,1233.69995117,-1340.19995117,795.79998779,0.00000000,0.00000000,180.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2138,1239.52929688,-1340.19921875,795.79998779,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2140,1232.80004883,-1338.30004883,795.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2303,1229.50000000,-1323.09997559,795.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2305,1234.69995117,-1355.80004883,795.80102539,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2135,1238.56933594,-1340.20605469,795.79998779,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2136,1234.60803223,-1362.31396484,795.79998779,0.00000000,0.00000000,269.98901367, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2137,1232.79980469,-1339.29980469,795.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2137,1234.67968750,-1340.19921875,795.79998779,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2139,1236.03198242,-1337.30004883,795.79998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2140,1232.80004883,-1337.32995605,795.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2138,1240.50000000,-1340.19995117,795.79998779,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2139,1237.02197266,-1337.30004883,795.79998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2139,1238.00000000,-1337.30004883,795.79998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2139,1238.02734375,-1336.27636719,795.79998779,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2139,1237.05004883,-1336.27636719,795.79998779,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2139,1236.05859375,-1336.27539062,795.79998779,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3383,1236.69995117,-1335.30004883,800.40002441,320.00000000,179.99450684,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3383,1237.30004883,-1338.40002441,800.40002441,319.99877930,179.99450684,180.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1723,1241.19995117,-1324.09997559,795.79998779,0.00000000,0.00000000,180.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1724,1237.80004883,-1323.09997559,795.79998779,0.00000000,0.00000000,89.99572754, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2357,1237.90002441,-1332.30004883,796.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2357,1237.90002441,-1328.69995117,796.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1239.30004883,-1333.50000000,796.29998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1238.59997559,-1333.50000000,796.29998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1237.19995117,-1333.50000000,796.29998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1236.50000000,-1333.50000000,796.29998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1237.90002441,-1333.50000000,796.29998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1239.30004883,-1329.80004883,796.29998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1238.59997559,-1329.80004883,796.29998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1237.90002441,-1329.80004883,796.29998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1237.19995117,-1329.80004883,796.29998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1236.50000000,-1329.80004883,796.29998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1236.50000000,-1331.19995117,796.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1237.19995117,-1331.19995117,796.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1237.90002441,-1331.19995117,796.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1238.59997559,-1331.19995117,796.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1239.30004883,-1331.19995117,796.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1239.30004883,-1327.59997559,796.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1238.59997559,-1327.59997559,796.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1237.90002441,-1327.59997559,796.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1237.19995117,-1327.59997559,796.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2310,1236.50000000,-1327.59997559,796.29998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19358,1233.80004883,-1324.80004883,797.50000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19358,1240.19995117,-1324.80004883,797.50000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19358,1243.40002441,-1324.80004883,797.50000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2964,1236.79980469,-1311.59960938,795.79998779,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1723,1239.19995117,-1320.90002441,795.79998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1737,1239.69995117,-1322.59997559,795.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2297,1241.50000000,-1315.50000000,795.79998779,0.00000000,0.00000000,225.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1723,1237.90002441,-1317.30004883,795.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1737,1239.59997559,-1316.80004883,795.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2303,1229.50000000,-1324.09997559,795.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2303,1229.50000000,-1322.09997559,795.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2303,1229.50000000,-1322.09997559,796.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2303,1229.50000000,-1323.09997559,796.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2303,1229.50000000,-1324.09997559,796.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2303,1229.50000000,-1325.09997559,795.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19450,1237.09997559,-1340.80004883,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2138,1237.59960938,-1340.19921875,795.79998779,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1502,1229.81494141,-1345.43005371,795.73999023,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1502,1229.81640625,-1326.81933594,795.73999023,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2007,1227.59997559,-1308.59997559,797.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2007,1227.59997559,-1308.59997559,795.79998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1502,1226.65002441,-1316.88000488,795.73999023,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2165,1232.80004883,-1346.00000000,795.79998779,0.00000000,0.00000000,359.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2165,1236.69995117,-1346.00000000,795.79998779,0.00000000,0.00000000,359.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2165,1240.30004883,-1346.00000000,795.79998779,0.00000000,0.00000000,359.98901367, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2165,1236.69995117,-1348.69995117,795.79998779,0.00000000,0.00000000,359.98901367, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2165,1232.80004883,-1348.69995117,795.79998779,0.00000000,0.00000000,359.98901367, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2165,1240.30004883,-1348.69995117,795.79998779,0.00000000,0.00000000,359.98901367, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2166,1241.30004883,-1341.90002441,795.79998779,0.00000000,0.00000000,180.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2165,1239.30004883,-1342.90002441,795.79998779,0.00000000,0.00000000,180.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2186,1234.90002441,-1341.50000000,795.79998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1671,1233.30004883,-1349.69995117,796.20001221,0.00000000,0.00000000,180.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1671,1237.30004883,-1349.69995117,796.20001221,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1671,1240.80004883,-1349.80004883,796.20001221,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1671,1240.80004883,-1346.90002441,796.20001221,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1671,1237.30004883,-1346.90002441,796.20001221,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1671,1233.30004883,-1346.90002441,796.20001221,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1671,1238.80004883,-1341.80004883,796.20001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2612,1237.30004883,-1341.00000000,797.79998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2611,1241.69995117,-1344.50000000,797.70001221,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2616,1235.09997559,-1350.19995117,797.70001221,0.00000000,0.00000000,180.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2400,1232.30004883,-1355.30004883,799.59997559,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2400,1236.00000000,-1355.30004883,799.59997559,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(14401,1240.09997559,-1373.19995117,799.70001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(14401,1247.50000000,-1373.19921875,799.70001221,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(14782,1232.29980469,-1361.19921875,800.40002441,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(14782,1238.50000000,-1361.19995117,800.40002441,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2689,1238.90002441,-1355.69995117,800.09997559,0.00000000,0.00000000,180.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2704,1238.26000977,-1355.59997559,800.92999268,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2843,1236.50000000,-1360.69995117,799.40002441,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2846,1233.00000000,-1360.50000000,799.40002441,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2705,1236.50000000,-1355.80004883,800.09997559,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2706,1237.09997559,-1355.80004883,800.09997559,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2844,1235.59997559,-1355.30004883,799.40002441,0.00000000,0.00000000,250.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2165,1220.19995117,-1358.30004883,799.40002441,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2166,1215.69995117,-1356.19995117,799.40002441,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1671,1202.50000000,-1360.09997559,799.79998779,0.00000000,0.00000000,359.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2166,1210.30004883,-1356.19995117,799.40002441,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2165,1208.30004883,-1357.19995117,799.40002441,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2166,1205.00000000,-1356.19995117,799.40002441,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2165,1203.00000000,-1357.19995117,799.40002441,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2166,1215.69995117,-1360.09997559,799.40002441,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2165,1213.69995117,-1361.09997559,799.40002441,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2166,1210.30004883,-1360.09997559,799.40002441,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2166,1205.00000000,-1360.09997559,799.40002441,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2165,1203.00000000,-1361.09997559,799.40002441,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1671,1202.50000000,-1356.19995117,799.79998779,0.00000000,0.00000000,359.98901367, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1671,1207.69995117,-1356.19995117,799.79998779,0.00000000,0.00000000,359.98901367, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1671,1213.09997559,-1356.19995117,799.79998779,0.00000000,0.00000000,359.98901367, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1671,1213.09997559,-1360.19995117,799.79998779,0.00000000,0.00000000,359.98901367, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2165,1208.30004883,-1361.09997559,799.40002441,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1671,1207.80004883,-1360.19995117,799.79998779,0.00000000,0.00000000,359.98901367, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2186,1217.40002441,-1358.19995117,799.40002441,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2165,1213.69921875,-1357.19921875,799.40002441,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1969,1220.80004883,-1364.30004883,796.29998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1968,1220.80004883,-1358.59997559,796.29998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1968,1220.80004883,-1361.59997559,796.29998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1969,1220.80004883,-1355.90002441,796.29998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1968,1217.00000000,-1358.59997559,796.29998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1968,1209.69995117,-1358.59997559,796.29998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1968,1205.90002441,-1358.59997559,796.29998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1968,1217.00000000,-1361.59997559,796.29998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1968,1213.40002441,-1361.59997559,796.29998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1968,1209.69995117,-1361.59997559,796.29998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1968,1205.90002441,-1361.59997559,796.29998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1969,1217.00000000,-1364.30004883,796.29998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1969,1213.40002441,-1364.30004883,796.29998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1969,1209.69995117,-1364.30004883,796.29998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1969,1205.90002441,-1364.30004883,796.29998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1969,1217.00000000,-1355.90002441,796.29998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1969,1213.30004883,-1355.90002441,796.29998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1969,1209.69995117,-1355.90002441,796.29998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1969,1205.90002441,-1355.90002441,796.29998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2441,1228.00000000,-1355.90002441,795.70001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2441,1228.00000000,-1356.90002441,795.70001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2441,1228.00000000,-1357.90002441,795.70001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2441,1228.00000000,-1358.90002441,795.70001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2441,1228.00000000,-1359.90002441,795.70001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2441,1228.00000000,-1360.90002441,795.70001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2441,1228.00000000,-1361.90002441,795.70001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2441,1228.00000000,-1362.90002441,795.70001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2441,1228.00000000,-1363.90002441,795.70001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2441,1228.00000000,-1364.90002441,795.70001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16644,1212.69921875,-1354.50000000,809.79998779,0.00000000,90.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(16644,1227.59997559,-1365.30004883,798.79998779,90.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2136,1236.63964844,-1340.20703125,795.79998779,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2135,1234.60900879,-1358.35705566,795.79998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2137,1234.59997559,-1364.30004883,795.79998779,0.00000000,0.00000000,269.98901367, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2137,1234.59997559,-1361.32702637,795.79998779,0.00000000,0.00000000,269.98901367, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2137,1234.59997559,-1360.33801270,795.79998779,0.00000000,0.00000000,269.98901367, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2137,1234.59997559,-1359.33801270,795.79998779,0.00000000,0.00000000,269.98901367, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2135,1234.60900879,-1357.36999512,795.79998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2137,1234.59997559,-1356.40002441,795.79998779,0.00000000,0.00000000,269.98901367, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2305,1232.79980469,-1340.19921875,795.79998779,0.00000000,0.00000000,179.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1227.59997559,-1369.69995117,797.59997559,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19355,1227.30004883,-1364.90002441,797.50000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19385,1230.50000000,-1364.90002441,797.50000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19355,1233.69995117,-1364.90002441,797.50000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1228.40002441,-1369.80004883,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1232.90002441,-1369.80004883,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19377,1227.90002441,-1369.69995117,799.20001221,0.00000000,90.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1230.09997559,-1372.09997559,797.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1847,1228.80004883,-1367.50000000,795.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1983,1229.00000000,-1370.50000000,795.90002441,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1983,1229.00000000,-1371.50000000,795.90002441,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2012,1232.19995117,-1366.50000000,795.79998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2012,1232.19995117,-1369.50000000,795.79998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1983,1232.30004883,-1371.50000000,795.79998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1983,1229.00000000,-1370.50000000,797.40002441,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1983,1229.00000000,-1371.50000000,797.40002441,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1523,1229.73999023,-1364.93005371,795.72998047,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2139,1232.02404785,-1361.62902832,795.79998779,0.00000000,0.00000000,89.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2139,1232.02404785,-1360.66003418,795.80102539,0.00000000,0.00000000,89.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2139,1232.02404785,-1359.68505859,795.79998779,0.00000000,0.00000000,89.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2139,1232.02404785,-1358.72998047,795.80102539,0.00000000,0.00000000,89.99450684, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2139,1231.00000000,-1361.59997559,795.79998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2139,1231.00000000,-1360.64001465,795.80102539,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2139,1231.00000000,-1359.67004395,795.79998779,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2139,1231.00000000,-1358.69995117,795.80102539,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2149,1231.19995117,-1361.80004883,797.00000000,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2149,1231.09997559,-1361.19995117,797.00000000,0.00000000,0.00000000,287.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2866,1231.40002441,-1359.80004883,796.85998535,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(2867,1234.69995117,-1362.19995117,796.84997559,0.00000000,0.00000000,60.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(19447,1224.90002441,-1331.30004883,797.50000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1968,1213.39941406,-1358.59960938,796.29998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3657,1210.09997559,-1343.00000000,796.20001221,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3657,1210.90002441,-1343.00000000,796.20001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3657,1210.09997559,-1331.90002441,796.20001221,0.00000000,0.00000000,270.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(3657,1210.90002441,-1331.90002441,796.20001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1204.59997559,-1345.09997559,795.59997559,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1204.59997559,-1341.90002441,795.59997559,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1204.59997559,-1338.69995117,795.59997559,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1204.59997559,-1335.50000000,795.59997559,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1204.59997559,-1332.30004883,795.59997559,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1204.59997559,-1329.09997559,795.59997559,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1204.59997559,-1329.09997559,799.20001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1204.59997559,-1345.09997559,799.20001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1204.59997559,-1341.90002441,799.20001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1204.59997559,-1338.69995117,799.20001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1204.59997559,-1335.50000000,799.20001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1204.59997559,-1332.30004883,799.20001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1221.19995117,-1327.40002441,799.20001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1221.19995117,-1330.59997559,799.20001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1221.19995117,-1333.80004883,799.20001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1221.19995117,-1337.00000000,799.20001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1221.19995117,-1340.09997559,799.20001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1221.19995117,-1343.40002441,799.20001221,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1221.19995117,-1343.40002441,795.59997559,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1221.19995117,-1340.09997559,795.59997559,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1221.19995117,-1337.00000000,795.59997559,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1221.19995117,-1333.80004883,795.59997559,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1221.19995117,-1330.59997559,795.59997559,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); CreateDynamicObject(1800,1221.19995117,-1327.40002441,795.59997559,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonDoors][0] = CreateDynamicObject(1495,1226.66210938,-1326.52929688,795.75000000,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); // Prison door 1 PrisonData[prisonDoors][1] = CreateDynamicObject(1495,1215.21997070,-1310.73999023,795.75000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); // Prison door 2 PrisonData[prisonDoors][2] = CreateDynamicObject(1495,1226.76501465,-1345.71997070,795.73999023,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); // Prison door 3 PrisonData[prisonCells][0] = CreateDynamicObject(19302,1205.69995117,-1328.09997559,797.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][1] = CreateDynamicObject(19302,1205.69995117,-1331.30004883,797.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][2] = CreateDynamicObject(19302,1205.69995117,-1331.30004883,800.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][3] = CreateDynamicObject(19302,1205.69995117,-1328.09997559,800.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][4] = CreateDynamicObject(19302,1215.30004883,-1328.09997559,797.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][5] = CreateDynamicObject(19302,1215.30004883,-1331.30004883,797.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][6] = CreateDynamicObject(19302,1215.30004883,-1331.30004883,800.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][7] = CreateDynamicObject(19302,1215.30004883,-1328.09997559,800.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][8] = CreateDynamicObject(19302,1215.30004883,-1334.50000000,797.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][9] = CreateDynamicObject(19302,1215.29980469,-1337.69921875,797.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][10] = CreateDynamicObject(19302,1215.30004883,-1340.90002441,797.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][11] = CreateDynamicObject(19302,1215.30004883,-1340.90002441,800.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][12] = CreateDynamicObject(19302,1215.30004883,-1337.69995117,800.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][13] = CreateDynamicObject(19302,1215.30004883,-1334.50000000,800.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][14] = CreateDynamicObject(19302,1205.69995117,-1334.50000000,800.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][15] = CreateDynamicObject(19302,1205.69995117,-1337.69995117,800.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][16] = CreateDynamicObject(19302,1205.69995117,-1340.90002441,800.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][17] = CreateDynamicObject(19302,1205.69995117,-1334.50000000,797.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][18] = CreateDynamicObject(19302,1205.69995117,-1337.69995117,797.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][19] = CreateDynamicObject(19302,1205.69995117,-1340.90002441,797.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][20] = CreateDynamicObject(19302,1215.30004883,-1344.09997559,800.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][21] = CreateDynamicObject(19302,1215.30004883,-1344.09997559,797.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][22] = CreateDynamicObject(19302,1205.69995117,-1344.09997559,800.50000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); PrisonData[prisonCells][23] = CreateDynamicObject(19302,1205.69995117,-1344.09997559,797.00000000,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0); SetDynamicObjectMaterial(CreateDynamicObject(19304,1213.59997559,-1329.90002441,799.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0), 0, 19304, "pd_jail_door_top01", "pd_jail_door_top01", 0xFF000000); SetDynamicObjectMaterial(CreateDynamicObject(19304,1213.59997559,-1333.40002441,799.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0), 0, 19304, "pd_jail_door_top01", "pd_jail_door_top01", 0xFF000000); SetDynamicObjectMaterial(CreateDynamicObject(19304,1213.59997559,-1336.90002441,799.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0), 0, 19304, "pd_jail_door_top01", "pd_jail_door_top01", 0xFF000000); SetDynamicObjectMaterial(CreateDynamicObject(19304,1213.59997559,-1340.40002441,799.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0), 0, 19304, "pd_jail_door_top01", "pd_jail_door_top01", 0xFF000000); SetDynamicObjectMaterial(CreateDynamicObject(19304,1213.59997559,-1343.90002441,799.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0), 0, 19304, "pd_jail_door_top01", "pd_jail_door_top01", 0xFF000000); SetDynamicObjectMaterial(CreateDynamicObject(19304,1211.90002441,-1328.09997559,799.79998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0), 0, 19304, "pd_jail_door_top01", "pd_jail_door_top01", 0xFF000000); SetDynamicObjectMaterial(CreateDynamicObject(19304,1209.09997559,-1328.09997559,799.79998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0), 0, 19304, "pd_jail_door_top01", "pd_jail_door_top01", 0xFF000000); SetDynamicObjectMaterial(CreateDynamicObject(19304,1207.40002441,-1329.90002441,799.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0), 0, 19304, "pd_jail_door_top01", "pd_jail_door_top01", 0xFF000000); SetDynamicObjectMaterial(CreateDynamicObject(19304,1207.40002441,-1333.40002441,799.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0), 0, 19304, "pd_jail_door_top01", "pd_jail_door_top01", 0xFF000000); SetDynamicObjectMaterial(CreateDynamicObject(19304,1207.40002441,-1336.90002441,799.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0), 0, 19304, "pd_jail_door_top01", "pd_jail_door_top01", 0xFF000000); SetDynamicObjectMaterial(CreateDynamicObject(19304,1207.40002441,-1340.40002441,799.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0), 0, 19304, "pd_jail_door_top01", "pd_jail_door_top01", 0xFF000000); SetDynamicObjectMaterial(CreateDynamicObject(19304,1207.40002441,-1343.90002441,799.79998779,0.00000000,0.00000000,90.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0), 0, 19304, "pd_jail_door_top01", "pd_jail_door_top01", 0xFF000000); SetDynamicObjectMaterial(CreateDynamicObject(19304,1215.30004883,-1345.69995117,799.79998779,0.00000000,0.00000000,0.00000000, PRISON_WORLD, 5, -1, 200.0, 100.0), 0, 19304, "pd_jail_door_top01", "pd_jail_door_top01", 0xFF000000); for (new i = 0; i < 24; i ++) { SetDynamicObjectMaterial(PrisonData[prisonCells][i], 0, 19302, "pd_jail_door02", "pd_jail_door02", 0xFF000000); GetDynamicObjectPos(PrisonData[prisonCells][i], PrisonCells[i][0], PrisonCells[i][1], PrisonCells[i][2]); } // Spawn bikes CreateVehicle(510, -2433.4031, 319.3516, 34.7669, 240.0000, 5, 5, -1); // bike 1 CreateVehicle(510, -2433.0540, 320.1264, 34.7723, 240.0000, 39, 39, -1); // bike 2 CreateVehicle(510, -2432.6870, 320.9364, 34.7610, 240.0000, 16, 16, -1); // bike 3 CreateVehicle(510, -2432.2620, 321.6999, 34.7566, 240.0000, 6, 6, -1); // bike 4 CreateVehicle(510, -2431.7371, 322.6430, 34.7798, 240.0000, 28, 28, -1); // bike 5 CreateVehicle(510, -2431.1504, 323.7235, 34.7716, 240.0000, 2, 2, -1); // bike 6 CreateVehicle(510, -2416.8005, 348.5500, 34.7781, 240.0000, 46, 46, -1); // bike 7 CreateVehicle(510, -2416.1936, 349.4323, 34.7724, 240.0000, 43, 43, -1); // bike 8 CreateVehicle(510, -2415.5227, 350.2519, 34.7586, 240.0000, 39, 39, -1); // bike 9 CreateVehicle(510, -2414.9409, 351.0704, 34.7711, 240.0000, 6, 6, -1); // bike 10 CreateVehicle(510, -2414.1025, 351.9817, 34.7546, 240.0000, 28, 28, -1); // bike 11 CreateVehicle(510, -2413.4233, 352.8137, 34.7543, 240.0000, 16, 16, -1); // bike 12 for (new i = 0; i < 24; i ++) { PrisonData[prisonCellOpened][i] = true; SetDynamicObjectPos(PrisonData[prisonCells][i], PrisonCells[i][0], PrisonCells[i][1] + 1.6, PrisonCells[i][2]); } DisableInteriorEnterExits(); EnableStuntBonusForAll(0); SetNameTagDrawDistance(10.0); ShowPlayerMarkers(0); UpdateTime(); SetTimer("PlayerCheck", 1000, true); SetTimer("FuelUpdate", 50000, true); SetTimer("RefuelCheck", 500, true); SetTimer("LotteryUpdate", 2700000, true); SetTimer("MinuteCheck", 60000, true); SetTimer("WeatherRotator", 2400000, true); SetTimer("RandomFire", 1800000, true); return 1; } forward WeatherRotator(); public WeatherRotator() { new index = random(sizeof(g_aWeatherRotations)); SetWeather(g_aWeatherRotations[index]); } forward LotteryUpdate(); public LotteryUpdate() { new number = random(60) + 1, jackpot = random(2000) + 1000; foreach (new i : Player) { if(PlayerData[i][pLotteryB] == 1) { if (PlayerData[i][pLottery] == number) { GiveMoney(i, jackpot); SendServerMessage(i, "You have won the lottery jackpot of %s!", FormatNumber(jackpot)); } else { SendClientMessage(i, COLOR_WHITE, "[LOTTERY]: You didn't win the lottery draw this time."); } PlayerData[i][pLottery] = 0; PlayerData[i][pLotteryB] = 0; } } return 1; } public OnPlayerRequestClass(playerid, classid) { if (IsPlayerNPC(playerid)) return 1; if (!PlayerData[playerid][pAccount] && !PlayerData[playerid][pKicked]) { new time[3]; gettime(time[0], time[1], time[2]); SetPlayerTime(playerid, time[0], time[1]); PlayerData[playerid][pAccount] = 1; TogglePlayerSpectating(playerid, 1); SetPlayerColor(playerid, DEFAULT_COLOR); SetTimerEx("AccountCheck", 400, false, "d", playerid); // 400 ms } return 1; } public OnPlayerSpawn(playerid) { // Skill levels SetPlayerSkillLevel(playerid, WEAPONSKILL_PISTOL, 0); SetPlayerSkillLevel(playerid, WEAPONSKILL_MICRO_UZI, 0); SetPlayerSkillLevel(playerid, WEAPONSKILL_SPAS12_SHOTGUN, 0); if (PlayerData[playerid][pHUD]) { TextDrawShowForPlayer(playerid, gServerTextdraws[0]); TextDrawShowForPlayer(playerid, gServerTextdraws[1]); } SetPlayerSkin(playerid, PlayerData[playerid][pSkin]); Streamer_ToggleIdleUpdate(playerid, true); PlayerData[playerid][pKilled] = 0; if (PlayerData[playerid][pBleeding]) { PlayerData[playerid][pBleedTime] = 1; } if (PlayerData[playerid][pJailTime] > 0) { if (PlayerData[playerid][pPrisoned]) { SetPlayerInPrison(playerid); } else { SetPlayerPos(playerid, 197.6346, 175.3765, 1003.0234); SetPlayerInterior(playerid, 3); SetPlayerVirtualWorld(playerid, (playerid + 100)); SetPlayerFacingAngle(playerid, 0.0); SetCameraBehindPlayer(playerid); } ResetWeapons(playerid); PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][70]); SendServerMessage(playerid, "You have %d seconds of remaining jail time.", PlayerData[playerid][pJailTime]); } else if (PlayerData[playerid][pHospital] != -1) { PlayerData[playerid][pHospitalTime] = 0; PlayerData[playerid][pHunger] = 50; PlayerData[playerid][pThirst] = 50; SetPlayerInterior(playerid, 3); SetPlayerVirtualWorld(playerid, playerid + 100); SetPlayerPos(playerid, -211.0370, -1738.6848, 676.7153); SetPlayerFacingAngle(playerid, 82.0000); SetPlayerCameraPos(playerid, -214.236602, -1738.812133, 676.648132); SetPlayerCameraLookAt(playerid, -203.072738, -1738.656127, 675.768737); ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0); ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0); GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~~n~~n~~w~Recovering... 15", 1000, 3); TogglePlayerControllable(playerid, 0); } else if (!PlayerData[playerid][pCreated]) { TogglePlayerControllable(playerid, 0); SetPlayerPos(playerid, 216.8005, -99.8691, 1005.2578); SetPlayerFacingAngle(playerid, 90.0000); SetPlayerInterior(playerid, 15); SelectTextDraw(playerid, -1); for (new i = 23; i < 34; i ++) { PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][i]); } } else { SetPlayerFacingAngle(playerid, PlayerData[playerid][pPos][3]); SetPlayerInterior(playerid, PlayerData[playerid][pInterior]); SetPlayerVirtualWorld(playerid, PlayerData[playerid][pWorld]); SetCameraBehindPlayer(playerid); SetAccessories(playerid); if (PlayerData[playerid][pWorld] == PRISON_WORLD) { SetPlayerPosEx(playerid, PlayerData[playerid][pPos][0], PlayerData[playerid][pPos][1], PlayerData[playerid][pPos][2]); } else { if(PlayerData[playerid][pSpawnPoint] == 3 && PlayerData[playerid][pInjured] == 0) { SetPlayerPos(playerid, PlayerData[playerid][pPos][0], PlayerData[playerid][pPos][1], PlayerData[playerid][pPos][2]); } } if (PlayerData[playerid][pInjured]) { ShowHungerTextdraw(playerid, 0); SetPlayerPos(playerid, PlayerData[playerid][pPos][0], PlayerData[playerid][pPos][1], PlayerData[playerid][pPos][2]); TextDrawShowForPlayer(playerid, gServerTextdraws[2]); SendClientMessage(playerid, COLOR_LIGHTRED, "[WARNING]:{FFFFFF} You are injured and require medical attention (/call 911)."); ApplyAnimation(playerid, "CRACK", "null", 4.0, 0, 0, 0, 1, 0, 1); ApplyAnimation(playerid, "CRACK", "crckdeth4", 4.0, 0, 0, 0, 1, 0, 1); } else { SetWeapons(playerid); ShowHungerTextdraw(playerid, 1); SetPlayerHealth(playerid, PlayerData[playerid][pHealth]); SetPlayerArmour(playerid, PlayerData[playerid][pArmorStatus]); } } return 1; } public OnPlayerCommandReceived(playerid, cmdtext[]) { if (!SQL_IsLogged(playerid) || (PlayerData[playerid][pTutorial] > 0 || PlayerData[playerid][pTutorialStage] > 0 || PlayerData[playerid][pKilled] > 0 || PlayerData[playerid][pHospital] != -1)) return 0; if (PlayerData[playerid][pMuted] && strfind(cmdtext, "/unmute", true) != 0) { SendErrorMessage(playerid, "You are muted by the system."); return 0; } if (PlayerData[playerid][pCommandCount] < 6) { PlayerData[playerid][pCommandCount]++; if (PlayerData[playerid][pCommandCount] == 6) { PlayerData[playerid][pCommandCount] = 0; PlayerData[playerid][pMuted] = 1; PlayerData[playerid][pMuteTime] = 5; SendServerMessage(playerid, "You have been muted for spamming (5 seconds)."); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has been automatically muted for spamming.", ReturnName(playerid, 0)); return 0; } } return 1; } public OnPlayerText(playerid, text[]) { if ((!PlayerData[playerid][pLogged] && !PlayerData[playerid][pCharacter]) || PlayerData[playerid][pTutorial] > 0 || PlayerData[playerid][pTutorialStage] > 0 || PlayerData[playerid][pHospital] != -1) return 0; if (PlayerData[playerid][pMuted]) { SendErrorMessage(playerid, "You are muted by the system."); return 0; } if (PlayerData[playerid][pSpamCount] < 5) { PlayerData[playerid][pSpamCount]++; if (PlayerData[playerid][pSpamCount] == 5) { PlayerData[playerid][pSpamCount] = 0; PlayerData[playerid][pMuted] = 1; PlayerData[playerid][pMuteTime] = 5; SendServerMessage(playerid, "You have been muted for spamming (5 seconds)."); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has been automatically muted for spamming.", ReturnName(playerid, 0)); return 0; } } if (PlayerData[playerid][pNewsGuest] != INVALID_PLAYER_ID && GetFactionType(PlayerData[playerid][pNewsGuest]) == FACTION_NEWS && IsPlayerInAnyVehicle(playerid) && IsNewsVehicle(GetPlayerVehicleID(playerid))) { foreach (new i : Player) if (!PlayerData[i][pDisableBC]) { SendClientMessageEx(i, COLOR_LIGHTGREEN, "[NEWS] Guest %s: %s", ReturnName(playerid, 0), text); } return 0; } else { new targetid = PlayerData[playerid][pCallLine]; //SetPlayerChatBubble(playerid, text, COLOR_WHITE, 10.0, 6000); if (IsPlayerInAnyVehicle(playerid) && IsWindowedVehicle(GetPlayerVehicleID(playerid)) && !CoreVehicles[GetPlayerVehicleID(playerid)][vehWindowsDown]) SendVehicleMessage(GetPlayerVehicleID(playerid), 0xBBFFEEFF, "[Vehicle] %s says: %s", ReturnName(playerid, 0), text); else { if (!IsPlayerOnPhone(playerid)) SendNearbyMessage(playerid, 20.0, COLOR_WHITE, "%s says: %s", ReturnName(playerid, 0), text); else SendNearbyMessage(playerid, 20.0, COLOR_WHITE, "(Phone) %s says: %s", ReturnName(playerid, 0), text); if (!IsPlayerInAnyVehicle(playerid) && !PlayerData[playerid][pInjured] && !PlayerData[playerid][pLoopAnim]) { ApplyAnimation(playerid, "GANGS", "prtial_gngtlkA", 4.1, 0, 1, 1, 1, strlen(text) * 100, 1); SetTimerEx("StopChatting", strlen(text) * 100, false, "d", playerid); } } switch (PlayerData[playerid][pEmergency]) { case 1: { if (!strcmp(text, "police", true)) { PlayerData[playerid][pEmergency] = 2; SendClientMessage(playerid, COLOR_LIGHTBLUE, "[OPERATOR]:{FFFFFF} You've been dispatched to police HQ. Please describe the crime."); } else if (!strcmp(text, "medics", true)) { PlayerData[playerid][pEmergency] = 3; SendClientMessage(playerid, COLOR_HOSPITAL, "[OPERATOR]:{FFFFFF} You've been dispatched to medical HQ. Please describe the emergency."); } else SendClientMessage(playerid, COLOR_LIGHTBLUE, "[OPERATOR]:{FFFFFF} Sorry, I don't understand. Do you require \"police\" or \"medics\"?"); } case 2: { SendFactionMessageEx(FACTION_POLICE, COLOR_RADIO, "911 CALL: %s (%s)", ReturnName(playerid, 0), GetPlayerLocation(playerid)); SendFactionMessageEx(FACTION_POLICE, COLOR_RADIO, "DESCRIPTION: %s", text); SendClientMessage(playerid, COLOR_LIGHTBLUE, "[OPERATOR]:{FFFFFF} We have alerted all units in the area."); cmd_hangup(playerid, "\1"); SetFactionMarker(playerid, FACTION_POLICE, 0x00D700FF); } case 3: { SendFactionMessageEx(FACTION_MEDIC, COLOR_HOSPITAL, "911 CALL: %s (%s)", ReturnName(playerid, 0), GetPlayerLocation(playerid)); SendFactionMessageEx(FACTION_MEDIC, COLOR_HOSPITAL, "DESCRIPTION: %s", text); SendClientMessage(playerid, COLOR_HOSPITAL, "[OPERATOR]:{FFFFFF} We have alerted all units in the area."); cmd_hangup(playerid, "\1"); SetFactionMarker(playerid, FACTION_MEDIC, 0x00D700FF); } } switch (PlayerData[playerid][pPlaceAd]) { case 1: { if (!strcmp(text, "yes", true)) { if (GetMoney(playerid) < 500) { SendClientMessage(playerid, COLOR_CYAN, "[OPERATOR]:{FFFFFF} Sorry, you have insufficient funds to advertise right now."); cmd_hangup(playerid, "\1"); } else { PlayerData[playerid][pPlaceAd] = 2; SendClientMessage(playerid, COLOR_CYAN, "[OPERATOR]:{FFFFFF} Please specify your advertisement and we'll advertise it."); } } } case 2: { if (GetMoney(playerid) < 500) { SendClientMessage(playerid, COLOR_CYAN, "[OPERATOR]:{FFFFFF} Sorry, you have insufficient funds to advertise right now."); cmd_hangup(playerid, "\1"); } else { GiveMoney(playerid, -500); SetTimerEx("Advertise", 3000, false, "d", playerid); PlayerData[playerid][pAdTime] = 120; strpack(PlayerData[playerid][pAdvertise], text, 128 char); SendClientMessage(playerid, COLOR_CYAN, "[OPERATOR]:{FFFFFF} Your advertisement will be published shortly."); cmd_hangup(playerid, "\1"); } } } if (targetid != INVALID_PLAYER_ID && !PlayerData[playerid][pIncomingCall]) { SendClientMessageEx(targetid, COLOR_YELLOW, "(Phone) %s says: %s", ReturnName(playerid, 0), text); } } return 0; } public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz) { if (response == EDIT_RESPONSE_FINAL) { if (PlayerData[playerid][pEditGraffiti] != -1 && GraffitiData[PlayerData[playerid][pEditGraffiti]][graffitiExists]) { GraffitiData[PlayerData[playerid][pEditGraffiti]][graffitiPos][0] = x; GraffitiData[PlayerData[playerid][pEditGraffiti]][graffitiPos][1] = y; GraffitiData[PlayerData[playerid][pEditGraffiti]][graffitiPos][2] = z; GraffitiData[PlayerData[playerid][pEditGraffiti]][graffitiPos][3] = rz; Graffiti_Refresh(PlayerData[playerid][pEditGraffiti]); Graffiti_Save(PlayerData[playerid][pEditGraffiti]); } else if (PlayerData[playerid][pEditRack] != -1 && RackData[PlayerData[playerid][pEditRack]][rackExists]) { RackData[PlayerData[playerid][pEditRack]][rackPos][0] = x; RackData[PlayerData[playerid][pEditRack]][rackPos][1] = y; RackData[PlayerData[playerid][pEditRack]][rackPos][2] = z; RackData[PlayerData[playerid][pEditRack]][rackPos][3] = rz; Rack_Refresh(PlayerData[playerid][pEditRack]); Rack_Save(PlayerData[playerid][pEditRack]); } else if (PlayerData[playerid][pEditPump] != -1 && PumpData[PlayerData[playerid][pEditPump]][pumpExists]) { PumpData[PlayerData[playerid][pEditPump]][pumpPos][0] = x; PumpData[PlayerData[playerid][pEditPump]][pumpPos][1] = y; PumpData[PlayerData[playerid][pEditPump]][pumpPos][2] = z; PumpData[PlayerData[playerid][pEditPump]][pumpPos][3] = rz; Pump_Refresh(PlayerData[playerid][pEditPump]); Pump_Save(PlayerData[playerid][pEditPump]); SendServerMessage(playerid, "You have edited the position of pump ID: %d.", PlayerData[playerid][pEditPump]); } else if (PlayerData[playerid][pEditFurniture] != -1 && FurnitureData[PlayerData[playerid][pEditFurniture]][furnitureExists]) { new id = House_Inside(playerid); if (id != -1 && House_IsOwner(playerid, id)) { FurnitureData[PlayerData[playerid][pEditFurniture]][furniturePos][0] = x; FurnitureData[PlayerData[playerid][pEditFurniture]][furniturePos][1] = y; FurnitureData[PlayerData[playerid][pEditFurniture]][furniturePos][2] = z; FurnitureData[PlayerData[playerid][pEditFurniture]][furnitureRot][0] = rx; FurnitureData[PlayerData[playerid][pEditFurniture]][furnitureRot][1] = ry; FurnitureData[PlayerData[playerid][pEditFurniture]][furnitureRot][2] = rz; Furniture_Refresh(PlayerData[playerid][pEditFurniture]); Furniture_Save(PlayerData[playerid][pEditFurniture]); SendServerMessage(playerid, "You have edited the position of item \"%s\".", FurnitureData[PlayerData[playerid][pEditFurniture]][furnitureName]); } } else if (PlayerData[playerid][pEditGate] != -1 && GateData[PlayerData[playerid][pEditGate]][gateExists]) { switch (PlayerData[playerid][pEditType]) { case 1: { new id = PlayerData[playerid][pEditGate]; GateData[PlayerData[playerid][pEditGate]][gatePos][0] = x; GateData[PlayerData[playerid][pEditGate]][gatePos][1] = y; GateData[PlayerData[playerid][pEditGate]][gatePos][2] = z; GateData[PlayerData[playerid][pEditGate]][gatePos][3] = rx; GateData[PlayerData[playerid][pEditGate]][gatePos][4] = ry; GateData[PlayerData[playerid][pEditGate]][gatePos][5] = rz; DestroyDynamicObject(GateData[id][gateObject]); GateData[id][gateObject] = CreateDynamicObject(GateData[id][gateModel], GateData[id][gatePos][0], GateData[id][gatePos][1], GateData[id][gatePos][2], GateData[id][gatePos][3], GateData[id][gatePos][4], GateData[id][gatePos][5], GateData[id][gateWorld], GateData[id][gateInterior]); Gate_Save(id); SendServerMessage(playerid, "You have edited the position of gate ID: %d.", id); } case 2: { new id = PlayerData[playerid][pEditGate]; GateData[PlayerData[playerid][pEditGate]][gateMove][0] = x; GateData[PlayerData[playerid][pEditGate]][gateMove][1] = y; GateData[PlayerData[playerid][pEditGate]][gateMove][2] = z; GateData[PlayerData[playerid][pEditGate]][gateMove][3] = rx; GateData[PlayerData[playerid][pEditGate]][gateMove][4] = ry; GateData[PlayerData[playerid][pEditGate]][gateMove][5] = rz; DestroyDynamicObject(GateData[id][gateObject]); GateData[id][gateObject] = CreateDynamicObject(GateData[id][gateModel], GateData[id][gatePos][0], GateData[id][gatePos][1], GateData[id][gatePos][2], GateData[id][gatePos][3], GateData[id][gatePos][4], GateData[id][gatePos][5], GateData[id][gateWorld], GateData[id][gateInterior]); Gate_Save(id); SendServerMessage(playerid, "You have edited the moving position of gate ID: %d.", id); } } } } if (response == EDIT_RESPONSE_FINAL || response == EDIT_RESPONSE_CANCEL) { if (PlayerData[playerid][pEditFurniture] != -1) Furniture_Refresh(PlayerData[playerid][pEditFurniture]); if (PlayerData[playerid][pEditPump] != -1) Pump_Refresh(PlayerData[playerid][pEditPump]); if (PlayerData[playerid][pEditRack] != -1) Rack_Refresh(PlayerData[playerid][pEditRack]); if (PlayerData[playerid][pEditGraffiti] != -1) Graffiti_Refresh(PlayerData[playerid][pEditGraffiti]); PlayerData[playerid][pEditType] = 0; PlayerData[playerid][pEditGate] = -1; PlayerData[playerid][pEditPump] = -1; PlayerData[playerid][pGasStation] = -1; PlayerData[playerid][pEditFurniture] = -1; PlayerData[playerid][pEditGraffiti] = -1; } return 1; } public OnPlayerEditAttachedObject(playerid, response, index, modelid, boneid, Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ, Float:fRotX, Float:fRotY, Float:fRotZ, Float:fScaleX, Float:fScaleY, Float:fScaleZ) { if (response) { if (PlayerData[playerid][pEditType] != 0) { AccessoryData[playerid][PlayerData[playerid][pEditType]-1][0] = fOffsetX; AccessoryData[playerid][PlayerData[playerid][pEditType]-1][1] = fOffsetY; AccessoryData[playerid][PlayerData[playerid][pEditType]-1][2] = fOffsetZ; AccessoryData[playerid][PlayerData[playerid][pEditType]-1][3] = fRotX; AccessoryData[playerid][PlayerData[playerid][pEditType]-1][4] = fRotY; AccessoryData[playerid][PlayerData[playerid][pEditType]-1][5] = fRotZ; AccessoryData[playerid][PlayerData[playerid][pEditType]-1][6] = (fScaleX > 3.0) ? (3.0) : (fScaleX); AccessoryData[playerid][PlayerData[playerid][pEditType]-1][7] = (fScaleY > 3.0) ? (3.0) : (fScaleY); AccessoryData[playerid][PlayerData[playerid][pEditType]-1][8] = (fScaleZ > 3.0) ? (3.0) : (fScaleZ); switch (PlayerData[playerid][pEditType]) { case 1: { PlayerData[playerid][pEditType] = 0; PlayerData[playerid][pGlasses] = modelid; if (!PlayerData[playerid][pCreated]) { for (new i = 23; i < 34; i ++) { PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][i]); } SelectTextDraw(playerid, -1); TogglePlayerControllable(playerid, 0); } SendServerMessage(playerid, "You have confirmed your glasses."); } case 2: { PlayerData[playerid][pEditType] = 0; PlayerData[playerid][pHat] = modelid; if (!PlayerData[playerid][pCreated]) { for (new i = 23; i < 34; i ++) { PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][i]); } SelectTextDraw(playerid, -1); TogglePlayerControllable(playerid, 0); } SendServerMessage(playerid, "You have confirmed your hat."); } case 3: { PlayerData[playerid][pEditType] = 0; PlayerData[playerid][pBandana] = modelid; if (!PlayerData[playerid][pCreated]) { for (new i = 23; i < 34; i ++) { PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][i]); } SelectTextDraw(playerid, -1); TogglePlayerControllable(playerid, 0); } SendServerMessage(playerid, "You have confirmed your bandana."); } } } } else { if (!PlayerData[playerid][pCreated]) { for (new i = 23; i < 34; i ++) { PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][i]); } SelectTextDraw(playerid, -1); TogglePlayerControllable(playerid, 0); RemovePlayerAttachedObject(playerid, PlayerData[playerid][pEditType] - 1); } } return 1; } public OnModelSelectionResponse(playerid, extraid, index, modelid, response) { if ((extraid >= MODEL_SELECTION_GLASSES && extraid <= MODEL_SELECTION_BANDANAS) && !PlayerData[playerid][pCreated] && !response) { for (new i = 23; i < 34; i ++) { PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][i]); } SetTimerEx("SelectTD", 100, false, "d", playerid); return 1; } if ((extraid == MODEL_SELECTION_INVENTORY && response) && InventoryData[playerid][index][invExists]) { new name[48], id = -1, backpack = GetPlayerBackpack(playerid); strunpack(name, InventoryData[playerid][index][invItem]); PlayerData[playerid][pInventoryItem] = index; switch (PlayerData[playerid][pStorageSelect]) { case 1: { if ((id = House_Inside(playerid)) != -1 && House_IsOwner(playerid, id)) { if (InventoryData[playerid][index][invQuantity] == 1) { if (!strcmp(name, "Backpack") && GetHouseBackpack(id) != -1) return SendErrorMessage(playerid, "You can only store one backpack in your house."); House_AddItem(id, name, InventoryData[playerid][index][invModel], 1); Inventory_Remove(playerid, name); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has stored a \"%s\" into their house storage.", ReturnName(playerid, 0), name); House_ShowItems(playerid, id); if (!strcmp(name, "Backpack") && backpack != -1) { BackpackData[backpack][backpackPlayer] = 0; BackpackData[backpack][backpackHouse] = HouseData[id][houseID]; Backpack_Save(backpack); SetAccessories(playerid); } } else Dialog_Show(playerid, HouseDeposit, DIALOG_STYLE_INPUT, "House Deposit", "Item: %s (Quantity: %d)\n\nPlease enter the quantity that you wish to store for this item:", "Store", "Back", name, InventoryData[playerid][PlayerData[playerid][pInventoryItem]][invQuantity]); } PlayerData[playerid][pStorageSelect] = 0; } case 2: { if ((id = Car_Nearest(playerid)) != -1 && !CarData[id][carLocked]) { if (InventoryData[playerid][index][invQuantity] == 1) { if (!strcmp(name, "Backpack") && GetVehicleBackpack(id) != -1) return SendErrorMessage(playerid, "You can only store one backpack in your trunk."); Car_AddItem(id, name, InventoryData[playerid][index][invModel], 1); Inventory_Remove(playerid, name); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has stored a \"%s\" into the trunk.", ReturnName(playerid, 0), name); Car_ShowTrunk(playerid, id); if (!strcmp(name, "Backpack") && backpack != -1) { BackpackData[backpack][backpackPlayer] = 0; BackpackData[backpack][backpackVehicle] = CarData[id][carID]; Backpack_Save(backpack); SetAccessories(playerid); } } else Dialog_Show(playerid, CarDeposit, DIALOG_STYLE_INPUT, "Car Deposit", "Item: %s (Quantity: %d)\n\nPlease enter the quantity that you wish to store for this item:", "Store", "Back", name, InventoryData[playerid][PlayerData[playerid][pInventoryItem]][invQuantity]); } PlayerData[playerid][pStorageSelect] = 0; } case 3: { if (!strcmp(name, "Backpack")) return SendErrorMessage(playerid, "This item cannot be stored."); if (InventoryData[playerid][index][invQuantity] == 1) { Backpack_Add(GetPlayerBackpack(playerid), name, InventoryData[playerid][index][invModel], 1); Inventory_Remove(playerid, name); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has stored a \"%s\" into their backpack.", ReturnName(playerid, 0), name); Backpack_Open(playerid); } else { Dialog_Show(playerid, BackpackDeposit, DIALOG_STYLE_INPUT, "Backpack Deposit", "Item: %s (Quantity: %d)\n\nPlease enter the quantity that you wish to store for this item:", "Store", "Back", name, InventoryData[playerid][PlayerData[playerid][pInventoryItem]][invQuantity]); } PlayerData[playerid][pStorageSelect] = 0; } default: { if (PlayerData[playerid][pTutorialStage] == 3 && !strcmp(name, "Demo Soda", true)) { SendClientMessage(playerid, COLOR_SERVER, "Click on the first option to use the selected item."); } format(name, sizeof(name), "%s (%d)", name, InventoryData[playerid][index][invQuantity]); if (Garbage_Nearest(playerid) != -1) { Dialog_Show(playerid, Inventory, DIALOG_STYLE_LIST, name, "Use Item\nGive Item\nThrow Out", "Select", "Cancel"); } else { Dialog_Show(playerid, Inventory, DIALOG_STYLE_LIST, name, "Use Item\nGive Item\nDrop Item", "Select", "Cancel"); } } } } if ((response) && (extraid == MODEL_SELECTION_GLASSES)) { if (modelid == 19300) { for (new i = 23; i < 34; i ++) { PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][i]); } SelectTextDraw(playerid, -1); PlayerData[playerid][pGlasses] = 0; RemovePlayerAttachedObject(playerid, 0); SendServerMessage(playerid, "You have removed your glasses."); } else { PlayerData[playerid][pEditType] = 1; TogglePlayerControllable(playerid, 1); SetPlayerAttachedObject(playerid, 0, modelid, 2, 0.094214, 0.044044, -0.007274, 89.675476, 83.514060, 0.000000); EditAttachedObject(playerid, 0); } } if ((response) && (extraid == MODEL_SELECTION_HATS)) { if (modelid == 19300) { for (new i = 23; i < 34; i ++) { PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][i]); } SelectTextDraw(playerid, -1); PlayerData[playerid][pHat] = 0; RemovePlayerAttachedObject(playerid, 1); SendServerMessage(playerid, "You have removed your hat."); } else { PlayerData[playerid][pEditType] = 2; TogglePlayerControllable(playerid, 1); SetPlayerAttachedObject(playerid, 1, modelid, 2, 0.1565, 0.0273, -0.0002, -7.9245, -1.3224, 15.0999); EditAttachedObject(playerid, 1); } } if ((response) && (extraid == MODEL_SELECTION_BANDANAS)) { if (modelid == 19300) { for (new i = 23; i < 34; i ++) { PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][i]); } SelectTextDraw(playerid, -1); PlayerData[playerid][pBandana] = 0; RemovePlayerAttachedObject(playerid, 2); SendServerMessage(playerid, "You have removed your bandana."); } else { PlayerData[playerid][pEditType] = 3; TogglePlayerControllable(playerid, 1); SetPlayerAttachedObject(playerid, 2, modelid, 2, 0.099553, 0.044356, -0.000285, 89.675476, 84.277572, 0.000000); EditAttachedObject(playerid, 2); } } if ((response) && (extraid == MODEL_SELECTION_SKIN)) { PlayerData[playerid][pSkin] = modelid; SetSpawnInfo(playerid, 0, PlayerData[playerid][pSkin], 1684.4392, 1771.6658, 10.8203, 270.0000, 0, 0, 0, 0, 0, 0); TogglePlayerSpectating(playerid, 0); } if ((response) && (extraid == MODEL_SELECTION_CLOTHES)) { new bizid = -1, price; if ((bizid = Business_Inside(playerid)) == -1 || BusinessData[bizid][bizType] != 3) return 0; if (BusinessData[bizid][bizProducts] < 1) return SendErrorMessage(playerid, "This business is out of stock."); price = BusinessData[bizid][bizPrices][PlayerData[playerid][pClothesType] - 1]; if (GetMoney(playerid) < price) return SendErrorMessage(playerid, "You have insufficient funds for the purchase."); GiveMoney(playerid, -price); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); switch (PlayerData[playerid][pClothesType]) { case 1: { PlayerData[playerid][pSkin] = modelid; SetPlayerSkin(playerid, modelid); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received some clothes.", ReturnName(playerid, 0), FormatNumber(price)); } case 2: { PlayerData[playerid][pEditType] = 1; PlayerData[playerid][pGlasses] = modelid; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received some glasses.", ReturnName(playerid, 0), FormatNumber(price)); RemovePlayerAttachedObject(playerid, 0); SetPlayerAttachedObject(playerid, 0, modelid, 2, 0.094214, 0.044044, -0.007274, 89.675476, 83.514060, 0.000000); EditAttachedObject(playerid, 0); } case 3: { PlayerData[playerid][pHat] = modelid; PlayerData[playerid][pEditType] = 2; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a hat.", ReturnName(playerid, 0), FormatNumber(price)); RemovePlayerAttachedObject(playerid, 1); SetPlayerAttachedObject(playerid, 1, modelid, 2, 0.1565, 0.0273, -0.0002, -7.9245, -1.3224, 15.0999); EditAttachedObject(playerid, 1); } case 4: { PlayerData[playerid][pBandana] = modelid; PlayerData[playerid][pEditType] = 3; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a bandana.", ReturnName(playerid, 0), FormatNumber(price)); RemovePlayerAttachedObject(playerid, 2); SetPlayerAttachedObject(playerid, 2, modelid, 2, 0.099553, 0.044356, -0.000285, 89.675476, 84.277572, 0.000000); EditAttachedObject(playerid, 2); } } } if ((response) && (extraid == MODEL_SELECTION_DEALER)) { new id = PlayerData[playerid][pDealership]; if (id != -1 && BusinessData[id][bizExists] && BusinessData[id][bizType] == 5) { if (!DealershipCars[id][index][vehModel]) { Dialog_Show(playerid, AddVehicle, DIALOG_STYLE_LIST, "Add Vehicle", "Add by Name\nAdd by Thumbnail", "Select", "Cancel"); } else { PlayerData[playerid][pDealerCar] = index; Dialog_Show(playerid, CarOptions, DIALOG_STYLE_LIST, "Dealership Vehicle", "Set Price (%s)\nRemove Vehicle", "Select", "Cancel", FormatNumber(DealershipCars[id][index][vehPrice])); } } } if ((response) && (extraid == MODEL_SELECTION_DEALER_ADD)) { new id = PlayerData[playerid][pDealership]; if (id != -1 && BusinessData[id][bizExists] && BusinessData[id][bizType] == 5) { for (new i = 0; i != MAX_DEALERSHIP_CARS; i ++) { if (DealershipCars[id][i][vehModel] == modelid) return SendErrorMessage(playerid, "This vehicle is already sold at this dealership."); } PlayerData[playerid][pDealerCar] = modelid; Dialog_Show(playerid, DealerCarPrice, DIALOG_STYLE_INPUT, "Enter Price", "Please enter a price for '%s':", "Submit", "Cancel", ReturnVehicleModelName(PlayerData[playerid][pDealerCar])); } } if ((response) && (extraid == MODEL_SELECTION_BUY_CAR)) { new id = Business_Inside(playerid); if (id != -1 && BusinessData[id][bizExists] && BusinessData[id][bizType] == 5) { if (!DealershipCars[id][index][vehModel]) return SendErrorMessage(playerid, "There is no model in the selected slot."); if (GetMoney(playerid) < DealershipCars[id][index][vehPrice]) return SendErrorMessage(playerid, "You can't afford this vehicle (%s).", FormatNumber(DealershipCars[id][index][vehPrice])); PlayerData[playerid][pDealerCar] = index; Dialog_Show(playerid, ConfirmCarBuy, DIALOG_STYLE_MSGBOX, "Confirm Purchase", "Are you sure you want to buy this '%s'?\n\nNote: This vehicle costs %s at this dealership.", "Yes", "No", ReturnVehicleModelName(modelid), FormatNumber(DealershipCars[id][index][vehPrice])); } } if ((response) && (extraid == MODEL_SELECTION_FURNITURE)) { new id = Business_Inside(playerid), type = PlayerData[playerid][pFurnitureType], price; if (id != -1 && BusinessData[id][bizExists] && BusinessData[id][bizType] == 7) { price = BusinessData[id][bizPrices][type]; if (GetMoney(playerid) < price) return SendErrorMessage(playerid, "You have insufficient funds for the purchase."); if (BusinessData[id][bizProducts] < 1) return SendErrorMessage(playerid, "This business is out of stock."); new item = Inventory_Add(playerid, GetFurnitureNameByModel(modelid), modelid); if (item == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); GiveMoney(playerid, -price); SendServerMessage(playerid, "You have purchased a \"%s\" for %s.", GetFurnitureNameByModel(modelid), FormatNumber(price)); BusinessData[id][bizProducts]--; BusinessData[id][bizVault] += Tax_Percent(price); Business_Save(id); Tax_AddPercent(price); } } if ((response) && (extraid == MODEL_SELECTION_COLOR)) { new vehicleid = GetNearestVehicle(playerid); if (vehicleid == INVALID_VEHICLE_ID) return SendErrorMessage(playerid, "You are not standing near any vehicle."); if (!Inventory_HasItem(playerid, "Spray Can")) return SendErrorMessage(playerid, "You don't have any cans of spray paint."); ApplyAnimation(playerid, "GRAFFITI", "null", 4.0, 0, 0, 0, 0, 0, 0); ApplyAnimation(playerid, "GRAFFITI", "spraycan_fire", 4.0, 1, 0, 0, 0, 0, 1); ApplyAnimation(playerid, "GRAFFITI", "spraycan_fire", 4.0, 1, 0, 0, 0, 0, 1); GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~r~Spraying vehicle...", 3000, 3); SetTimerEx("ResprayCar", 3000, false, "ddd", playerid, vehicleid, modelid); } if ((response) && (extraid == MODEL_SELECTION_SKINS)) { Dialog_Show(playerid, FactionSkin, DIALOG_STYLE_LIST, "Edit Skin", "Add by Model ID\nAdd by Thumbnail\nClear Slot", "Select", "Cancel"); PlayerData[playerid][pSelectedSlot] = index; } if ((response) && (extraid == MODEL_SELECTION_ADD_SKIN)) { FactionData[PlayerData[playerid][pFactionEdit]][factionSkins][PlayerData[playerid][pSelectedSlot]] = modelid; Faction_Save(PlayerData[playerid][pFactionEdit]); SendServerMessage(playerid, "You have set the skin ID in slot %d to %d.", PlayerData[playerid][pSelectedSlot], modelid); } if ((response) && (extraid == MODEL_SELECTION_FACTION_SKIN)) { new factionid = PlayerData[playerid][pFaction]; if (factionid == -1 || !IsNearFactionLocker(playerid)) return 0; if (modelid == 19300) return SendErrorMessage(playerid, "There is no model in the selected slot."); SetPlayerSkin(playerid, modelid); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has changed their uniform.", ReturnName(playerid, 0)); } if ((response) && (extraid == MODEL_SELECTION_WHEELS)) { new vehicleid = GetPlayerVehicleID(playerid); if (!IsPlayerInAnyVehicle(playerid) || !IsDoorVehicle(vehicleid)) return 0; AddComponent(vehicleid, modelid); SendServerMessage(playerid, "You have added the \"%s\" wheels to this vehicle.", GetWheelName(modelid)); } return 1; } forward ResprayCar(playerid, vehicleid, color); public ResprayCar(playerid, vehicleid, color) { if (!PlayerData[playerid][pLogged] || GetNearestVehicle(playerid) != vehicleid) return 0; Inventory_Remove(playerid, "Spray Can"); ClearAnimations(playerid); SetVehicleColor(vehicleid, color, color); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has used a can of spray paint on the %s.", ReturnName(playerid, 0), ReturnVehicleName(vehicleid)); return 1; } public OnPlayerClickTextDraw(playerid, Text:clickedid) { if (clickedid == Text:INVALID_TEXT_DRAW) { if (!Dialog_Opened(playerid) && PlayerData[playerid][pDisplayStats] > 0) { if (PlayerData[playerid][pDisplayStats] == 2) { for (new i = 50; i < 58; i ++) PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][i]); } else for (new i = 40; i < 50; i ++) { PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][i]); } CancelSelectTextDraw(playerid); PlayerData[playerid][pDisplayStats] = false; } } return 0; } public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid) { if (!Dialog_Opened(playerid)) { if (!PlayerData[playerid][pCharacter]) { if (playertextid == PlayerData[playerid][pTextdraws][2]) SelectCharacter(playerid, 1); else if (playertextid == PlayerData[playerid][pTextdraws][3]) SelectCharacter(playerid, 2); else if (playertextid == PlayerData[playerid][pTextdraws][4]) SelectCharacter(playerid, 3); } else { if (playertextid == PlayerData[playerid][pTextdraws][78]) SQL_LoadCharacter(playerid, PlayerData[playerid][pCharacter]); else if (playertextid == PlayerData[playerid][pTextdraws][79]) { Dialog_Show(playerid, DeleteChar, DIALOG_STYLE_MSGBOX, "Delete Character", "Warning: Are you sure you wish to delete character \"%s\"?\n\nYou will not be issued a refund for any lost property.", "Confirm", "Cancel", PlayerCharacters[playerid][PlayerData[playerid][pCharacter] - 1]); } else if (playertextid == PlayerData[playerid][pTextdraws][80]) { ShowCharacterMenu(playerid); } else if (playertextid == PlayerData[playerid][pTextdraws][19]) { CancelSelectTextDraw(playerid); Dialog_Show(playerid, Gender, DIALOG_STYLE_LIST, "Gender", "Male\nFemale", "Select", "Cancel"); } else if (playertextid == PlayerData[playerid][pTextdraws][20]) { Dialog_Show(playerid, DateBirth, DIALOG_STYLE_INPUT, "Date of Birth", "Please enter your date of birth below (DD/MM/YYYY):", "Submit", "Cancel"); } else if (playertextid == PlayerData[playerid][pTextdraws][21]) { Dialog_Show(playerid, Origin, DIALOG_STYLE_INPUT, "Origin", "Please enter the geographical origin of your character below:", "Submit", "Cancel"); } else if (playertextid == PlayerData[playerid][pTextdraws][22]) { if (!strlen(PlayerData[playerid][pBirthdate])) return SendClientMessage(playerid, COLOR_LIGHTRED, "Server: You must specify a birth date."); else if (!strlen(PlayerData[playerid][pOrigin])) return SendClientMessage(playerid, COLOR_LIGHTRED, "Server: You must specify an origin."); else { for (new i = 11; i < 23; i ++) { PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][i]); } switch (PlayerData[playerid][pGender]) { case 1: ShowModelSelectionMenu(playerid, "Select Skin", MODEL_SELECTION_SKIN, g_aMaleSkins, sizeof(g_aMaleSkins), -16.0, 0.0, -55.0); case 2: ShowModelSelectionMenu(playerid, "Select Skin", MODEL_SELECTION_SKIN, g_aFemaleSkins, sizeof(g_aFemaleSkins), -16.0, 0.0, -55.0); } } } else if (playertextid == PlayerData[playerid][pTextdraws][26]) { static arrGlasses[] = {19300, 19006, 19007, 19008, 19009, 19010, 19011, 19012, 19013, 19014, 19015, 19016, 19017, 19018, 19019, 19020, 19021, 19022, 19023, 19024, 19025, 19026, 19027, 19028, 19029, 19030, 19031, 19032, 19033, 19034, 19035}; for (new i = 23; i < 34; i ++) { PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][i]); } ShowModelSelectionMenu(playerid, "Glasses", MODEL_SELECTION_GLASSES, arrGlasses, sizeof(arrGlasses), 0.0, 0.0, 90.0); } else if (playertextid == PlayerData[playerid][pTextdraws][28]) { static arrHats[] = {19300, 18926, 18927, 18928, 18929, 18930, 18931, 18932, 18933, 18934, 18935, 18944, 18945, 18946, 18947, 18948, 18949, 18950, 18951}; for (new i = 23; i < 34; i ++) { PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][i]); } ShowModelSelectionMenu(playerid, "Hats", MODEL_SELECTION_HATS, arrHats, sizeof(arrHats), -20.0, -90.0, 0.0); } else if (playertextid == PlayerData[playerid][pTextdraws][30]) { static arrBandanas[] = {19300, 18911, 18912, 18913, 18914, 18915, 18916, 18917, 18918, 18919, 18920}; for (new i = 23; i < 34; i ++) { PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][i]); } ShowModelSelectionMenu(playerid, "Bandanas", MODEL_SELECTION_BANDANAS, arrBandanas, sizeof(arrBandanas), 0.0, 0.0, 90.0); } else if (playertextid == PlayerData[playerid][pTextdraws][33]) { for (new i = 23; i < 34; i ++) { PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][i]); } for (new i = 0; i < 100; i ++) { SendClientMessage(playerid, -1, ""); } CancelSelectTextDraw(playerid); TogglePlayerControllable(playerid, 1); PlayerData[playerid][pTutorialStage] = 1; PlayerData[playerid][pTutorialObject] = CreatePlayerObject(playerid, 1543, -226.4219, 1408.4594, 26.7734, 0.0, 0.0, 0.0); SetPlayerCheckpoint(playerid, -226.4219, 1408.4594, 27.7734, 0.5); SendClientMessage(playerid, COLOR_SERVER, "Please make your way towards the item and crouch (pressing 'C')."); SetPlayerPos(playerid, -226.2436, 1400.4767, 27.7656); SetPlayerFacingAngle(playerid, 0.0000); SetPlayerInterior(playerid, 18); SetPlayerVirtualWorld(playerid, (playerid + 2000)); SetCameraBehindPlayer(playerid); ShowHungerTextdraw(playerid, 1); PlayerData[playerid][pThirst] = 80; } else if (playertextid == PlayerData[playerid][pTextdraws][47]) { new string[128]; CancelSelectTextDraw(playerid); format(string, sizeof(string), "%s\n%s\n%s", (!PlayerCharacters[playerid][0][0]) ? ("Empty Slot") : (PlayerCharacters[playerid][0]), (!PlayerCharacters[playerid][1][0]) ? ("Empty Slot") : (PlayerCharacters[playerid][1]), (!PlayerCharacters[playerid][2][0]) ? ("Empty Slot") : (PlayerCharacters[playerid][2])); Dialog_Show(playerid, CharList, DIALOG_STYLE_LIST, "My Characters", string, "Select", "Cancel"); } else if (playertextid == PlayerData[playerid][pTextdraws][48]) { for (new i = 40; i < 50; i ++) PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][i]); CancelSelectTextDraw(playerid); PlayerData[playerid][pDisplayStats] = false; SetTimerEx("OpenInventory", 100, false, "d", playerid); } else if (playertextid == PlayerData[playerid][pTextdraws][49]) { for (new i = 40; i < 50; i ++) PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][i]); CancelSelectTextDraw(playerid); PlayerData[playerid][pDisplayStats] = false; } else if (playertextid == PlayerData[playerid][pTextdraws][55]) { for (new i = 50; i < 58; i ++) PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][i]); CancelSelectTextDraw(playerid); PlayerData[playerid][pDisplayStats] = false; } else if (playertextid == PlayerData[playerid][pTextdraws][56]) { for (new i = 40; i < 58; i ++) { if (i >= 50) PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][i]); else if (i < 50) PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][i]); } PlayerData[playerid][pDisplayStats] = true; } else if (playertextid == PlayerData[playerid][pTextdraws][57]) { if (PlayerData[playerid][pCharacterMenu] == PlayerData[playerid][pCharacter]) return SendErrorMessage(playerid, "You are playing on this character, you can't delete it."); Dialog_Show(playerid, DeleteCharacter, DIALOG_STYLE_MSGBOX, "Delete Character", "Warning: Are you sure you wish to delete character \"%s\"?\n\nYou will not be issued a refund for any lost property.", "Confirm", "Cancel", PlayerCharacters[playerid][PlayerData[playerid][pCharacterMenu] - 1]); } } } return 1; } forward ForkliftUpdate(playerid, vehid); public ForkliftUpdate(playerid, vehid) { if (PlayerData[playerid][pJob] != JOB_UNLOADER || GetVehicleModel(vehid) != 530 || !IsPlayerInWarehouse(playerid) || !PlayerData[playerid][pLoading]) { return 0; } GetVehicleHealth(vehid, CoreVehicles[vehid][vehLoadHealth]); PlayerData[playerid][pLoading] = 0; CoreVehicles[vehid][vehLoadType] = 7; CoreVehicles[vehid][vehCrate] = CreateObject(3798, 0.0, 0.0, 1000.0, 0.0, 0.0, 0.0); AttachObjectToVehicle(CoreVehicles[vehid][vehCrate], vehid, 0.0, 1.2, -0.05, 0.0, 0.0, 0.0); SetPlayerCheckpoint(playerid, 1306.3438, -45.3100, 1001.0313, 1.5); TogglePlayerControllable(playerid, 1); SendServerMessage(playerid, "Deliver the crate to the marker."); return 1; } stock ShowContacts(playerid) { new string[32 * MAX_CONTACTS], count = 0; string = "Add Contact\n"; for (new i = 0; i != MAX_CONTACTS; i ++) if (ContactData[playerid][i][contactExists]) { format(string, sizeof(string), "%s%s - #%d\n", string, ContactData[playerid][i][contactName], ContactData[playerid][i][contactNumber]); ListedContacts[playerid][count++] = i; } Dialog_Show(playerid, Contacts, DIALOG_STYLE_LIST, "My Contacts", string, "Select", "Back"); return 1; } stock GetPlayerID(name[], underscore = 1) { foreach (new i : Player) if (!strcmp(ReturnName(i, underscore), name, true)) { return i; } return INVALID_PLAYER_ID; } Dialog:ShowOnly(playerid, response, listitem, inputtext[]) { playerid = INVALID_PLAYER_ID; response = 0; listitem = 0; inputtext[0] = '\0'; } Dialog:Billboards(playerid, response, listitem, inputtext[]) { if (response) { new string[500], szString[100]; if(BillBoardData[listitem][bbExists] >= 1) { if(!BillBoardData[listitem][bbOwner]) { BillboardCheckout[playerid] = listitem; format(szString, sizeof(szString), "{FFFFFF}Rent Billboard - {FF8000}%i{FFFFFF} - {FF8000}$%d", listitem, BillBoardData[listitem][bbPrice]); format(string, sizeof(string), "{FFFFFF}Billboard Name: {FF8000}%s{FFFFFF} ({FF8000}%i{FFFFFF})\nBillboard Price: {FF8000}$%d{FFFFFF}\n\n\n((Rent Fees are collected each payday from your bank account!))", BillBoardData[listitem][bbName], listitem, BillBoardData[listitem][bbPrice]); Dialog_Show(playerid, BillboardRent, DIALOG_STYLE_MSGBOX, szString, string, "Rent", "Cancel"); return 1; } if(BillBoardData[listitem][bbOwner] == GetPlayerSQLID(playerid)) { Dialog_Show(playerid, MyBillboardMenu, DIALOG_STYLE_LIST, "Manage Billboard", "Edit Message\nUnrent Billboard", "Proceed", "Cancel"); return 1; } else { SendErrorMessage(playerid, "Sorry, this billboard is already being rented!"); } } } return 1; } Dialog:MyBillboardMenu(playerid, response, listitem, inputtext[]) { if (response) { if(listitem == 0) { Dialog_Show(playerid, MyBillboardMessage, DIALOG_STYLE_INPUT, "Billboard Message", "Enter in a new billboard message!\n\n(Max Chars: 230)", "Proceed", "Cancel"); } if(listitem == 1) { Dialog_Show(playerid, MyBillboardUnrent, DIALOG_STYLE_MSGBOX, "Unrent Billboard", "Are you sure you wish to unrent your billboard?\n\nYou'll get half the rent fee back", "Confirm", "Cancel"); } } return 1; } Dialog:MyBillboardMessage(playerid, response, listitem, inputtext[]) { if (response) { if (isnull(inputtext)) return Dialog_Show(playerid, MyBillboardMessage, DIALOG_STYLE_INPUT, "Billboard Message", "Enter in a new billboard message!\n\n(Max Chars: 230)", "Proceed", "Cancel"); if (strlen(inputtext) > 230) return Dialog_Show(playerid, MyBillboardMessage, DIALOG_STYLE_INPUT, "Billboard Message", "Too many characters (Max is 230)\n\nEnter in a new billboard message!\n\n(Max Chars: 230)", "Proceed", "Cancel"); format(BillBoardData[PlayerData[playerid][pOwnsBillboard]][bbMessage], 230, inputtext); Billboard_Save(PlayerData[playerid][pOwnsBillboard]); Billboard_Refresh(PlayerData[playerid][pOwnsBillboard]); } return 1; } Dialog:MyBillboardUnrent(playerid, response, listitem, inputtext[]) { if (response) { new bbid = PlayerData[playerid][pOwnsBillboard]; GiveMoney(playerid, BillBoardData[bbid][bbPrice]/2); BillBoardData[bbid][bbOwner] = 0; format(BillBoardData[PlayerData[playerid][pOwnsBillboard]][bbMessage], 230, "Not Owned"); Billboard_Save(bbid); Billboard_Refresh(bbid); PlayerData[playerid][pOwnsBillboard] = -1; SendClientMessageEx(playerid, COLOR_LIGHTYELLOW, "You have unrented your billboard"); } return 1; } Dialog:BillboardRent(playerid, response, listitem, inputtext[]) { if (response) { new bbid = BillboardCheckout[playerid]; if(PlayerData[playerid][pBankMoney] < BillBoardData[bbid][bbPrice]) { SendErrorMessage(playerid, "You do not have enough cash in your bank account for the billboard rental fee"); return 1; } else { PlayerData[playerid][pBankMoney] -= BillBoardData[playerid][bbPrice]; PlayerData[playerid][pOwnsBillboard] = bbid; BillBoardData[bbid][bbOwner] = GetPlayerSQLID(playerid); Tax_AddMoney(BillBoardData[bbid][bbPrice]); Billboard_Save(bbid); Billboard_Refresh(bbid); SendClientMessageEx(playerid, COLOR_LIGHTYELLOW, "You have purchased a billboard, use /mybillboard to edit the message"); } } return 1; } Dialog:GraffitiColor(playerid, response, listitem, inputtext[]) { if (response) { new id = Graffiti_Nearest(playerid); if (id == -1) return 0; if (IsSprayingInProgress(id)) return SendErrorMessage(playerid, "There is another player spraying at this point already."); switch (listitem) { case 0: PlayerData[playerid][pGraffitiColor] = 0xFFFFFFFF; case 1: PlayerData[playerid][pGraffitiColor] = 0xFFFF0000; case 2: PlayerData[playerid][pGraffitiColor] = 0xFFFFFF00; case 3: PlayerData[playerid][pGraffitiColor] = 0xFF33CC33; case 4: PlayerData[playerid][pGraffitiColor] = 0xFF33CCFF; case 5: PlayerData[playerid][pGraffitiColor] = 0xFFFFA500; case 6: PlayerData[playerid][pGraffitiColor] = 0xFF1394BF; } Dialog_Show(playerid, GraffitiText, DIALOG_STYLE_INPUT, "Graffiti Text", "Please enter the text you wish to spray below.\n\nNote: Your text input cannot exceed over 64 characters.", "Submit", "Cancel"); } return 1; } Dialog:GraffitiText(playerid, response, listitem, inputtext[]) { if (response) { new id = Graffiti_Nearest(playerid); if (id == -1) return 0; if (isnull(inputtext)) return Dialog_Show(playerid, GraffitiText, DIALOG_STYLE_INPUT, "Graffiti Text", "Please enter the text you wish to spray below.\n\nNote: Your text input cannot exceed over 64 characters.", "Submit", "Cancel"); if (strlen(inputtext) > 64) return Dialog_Show(playerid, GraffitiText, DIALOG_STYLE_INPUT, "Graffiti Text", "Error: Your input can't exceed 64 characters.\n\nPlease enter the text you wish to spray below.\n\nNote: Your text input cannot exceed over 64 characters.", "Submit", "Cancel"); if (IsSprayingInProgress(id)) return SendErrorMessage(playerid, "There is another player spraying at this point already."); PlayerData[playerid][pGraffiti] = id; PlayerData[playerid][pGraffitiTime] = 15; strpack(PlayerData[playerid][pGraffitiText], inputtext, 64 char); ApplyAnimationEx(playerid, "GRAFFITI", "spraycan_fire", 4.1, 1, 0, 0, 0, 0, 1); ShowPlayerFooter(playerid, "You are now spraying your ~g~graffiti."); GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~~n~~n~~b~Spraying...~w~ please wait!", 15000, 3); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out a can of spray paint and sprays the wall.", ReturnName(playerid, 0)); } return 1; } Dialog:Radio(playerid, response, listitem, inputtext[]) { if (response) { switch (listitem) { case 0: Dialog_Show(playerid, CulturalRadio, DIALOG_STYLE_LIST, "Cultural", "Classical\nInstruments", "Select", "Cancel"); case 1: Dialog_Show(playerid, OldiesRadio, DIALOG_STYLE_LIST, "Oldies", "70's\n80's\n90's", "Select", "Cancel"); case 2: Dialog_Show(playerid, OtherRadio, DIALOG_STYLE_LIST, "Other", "Dance\nGlee\nMash Ups", "Select", "Cancel"); case 3: Dialog_Show(playerid, PopRadio, DIALOG_STYLE_LIST, "Pop", "Korean\nPop\nTop Hits", "Select", "Cancel"); case 4: Dialog_Show(playerid, RNBRadio, DIALOG_STYLE_LIST, "Rhythm & Blues", "R&B\nSoul", "Select", "Cancel"); case 5: Dialog_Show(playerid, RockRadio, DIALOG_STYLE_LIST, "Rock", "Alternative\nClassic\nIndie Rock\nMetal\nPunk\nRock & Roll", "Select", "Cancel"); case 6: Dialog_Show(playerid, TalkRadio, DIALOG_STYLE_LIST, "Talk", "Comedy\nScanners", "Select", "Cancel"); case 7: Dialog_Show(playerid, UrbanRadio, DIALOG_STYLE_LIST, "Urban", "Country\nHip-Hop", "Select", "Cancel"); case 8: Dialog_Show(playerid, ElectricRadio, DIALOG_STYLE_LIST, "Electric", "ElectricFM.com\n1Dance.fm\nDanceTime.fm", "Select", "Cancel"); case 9: { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; StopVehicleRadio(vehicleid); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has turned off the car radio.", ReturnName(playerid, 0)); } } } return 1; } Dialog:UrbanRadio(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: Dialog_Show(playerid, Country, DIALOG_STYLE_LIST, "Country", "GotRadio - Today's Country\n181.fm - Highway 181\nHPR1: Traditional Classic Country\nCountry - Sky.fm", "Play", "Cancel"); case 1: Dialog_Show(playerid, HipHop, DIALOG_STYLE_LIST, "Hip-Hop", "100Hits - HipHop\nHot 108 Jamz\n181.fm - The Box\nGotRadio - Urban Jams", "Play", "Cancel"); } } return 1; } Dialog:Country(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://206.217.213.235:8100/"); case 1: SetVehicleRadio(vehicleid, "http://relay.181.fm:8018/"); case 2: SetVehicleRadio(vehicleid, "http://108.61.73.119:8024/"); case 3: SetVehicleRadio(vehicleid, "http://scfire-ntc-aa01.stream-aol.com/stream/1019"); } } return 1; } Dialog:HipHop(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://64.56.64.67:10354/"); case 1: SetVehicleRadio(vehicleid, "http://stream-95.shoutcast.com/hot108_mp3_128kbps"); case 2: SetVehicleRadio(vehicleid, "http://108.61.73.119:8024/"); case 3: SetVehicleRadio(vehicleid, "http://108.61.73.118:8068/"); } } return 1; } Dialog:ElectricRadio(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://72.13.83.151/"); case 1: SetVehicleRadio(vehicleid, "http://173.192.207.51:8062/"); case 2: SetVehicleRadio(vehicleid, "http://212.83.60.202:8000/"); } } return 1; } Dialog:TalkRadio(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: Dialog_Show(playerid, Comedy, DIALOG_STYLE_LIST, "Comedy", "Comedy104\nAddictedToRadio.com - Comedy\n181.fm - Comedy Club", "Play", "Cancel"); case 1: Dialog_Show(playerid, Scanners, DIALOG_STYLE_LIST, "Scanners", "New Orleans Police Department\nSan Diego Police Dispatch\nLong Beach Police Dispatch\nCalifornia Highway Patrol - Los Angeles & Orange County\nLAPD - Citywide Dispatch and Hot Shots/Code 3", "Play", "Cancel"); } } return 1; } Dialog:Comedy(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://69.195.140.50:8060/"); case 1: SetVehicleRadio(vehicleid, "http://208.77.21.13:17910/"); case 2: SetVehicleRadio(vehicleid, "http://108.61.73.118:8026/"); } } return 1; } Dialog:Scanners(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://www.radioreference.com/scripts/playlists/1/3877/0-5443008964.m3u"); case 1: SetVehicleRadio(vehicleid, "http://www.radioreference.com/scripts/playlists/1/6740/0-5443008116.m3u"); case 2: SetVehicleRadio(vehicleid, "http://www.radioreference.com/scripts/playlists/1/6740/0-5443008116.m3u"); case 3: SetVehicleRadio(vehicleid, "http://radioreference.com/scripts/playlists/1/10239/0-5443007068.m3u"); case 4: SetVehicleRadio(vehicleid, "http://radioreference.com/scripts/playlists/1/10239/0-5443007068.m3u"); } } return 1; } Dialog:RockRadio(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: Dialog_Show(playerid, Alternative, DIALOG_STYLE_LIST, "Alternative", "GotRadio - Alternative", "Play", "Cancel"); case 1: Dialog_Show(playerid, Classic, DIALOG_STYLE_LIST, "Classic", "181.FM - Rock 181 #1\n.977 The Classic Rock\n181.fm - The Eagle\n181.fm Rock 40\n181.fm Rock 181 #2", "Play", "Cancel"); case 2: Dialog_Show(playerid, IndieRock, DIALOG_STYLE_LIST, "Indie Rock", "GotRadio - Indie Underground\nIndie Rock - LifeJive.com", "Play", "Cancel"); case 3: Dialog_Show(playerid, Metal, DIALOG_STYLE_LIST, "Metal", "GotRadio - Metal Madness\nDepressive Metal Rock radio\nDeath.F(ucking)M(etal)\nDepressive metal rock (Death)\nRepressive metal rock radio (Black)", "Play", "Cancel"); case 4: Dialog_Show(playerid, Punk, DIALOG_STYLE_LIST, "Punk", "Pop Punk - Sky.fm", "Play", "Cancel"); case 5: Dialog_Show(playerid, RockRoll, DIALOG_STYLE_LIST, "Rock & Roll", "Absolute Radio", "Play", "Cancel"); } } return 1; } Dialog:Alternative(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://206.217.213.235:8200/"); } } return 1; } Dialog:Classic(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://relay.181.fm:8008/"); case 1: SetVehicleRadio(vehicleid, "http://7649.live.streamtheworld.com/977_CLASSROCK_SC"); case 2: SetVehicleRadio(vehicleid, "http://relay.181.fm:8030/"); case 3: SetVehicleRadio(vehicleid, "http://uplink.181.fm:8028/"); case 4: SetVehicleRadio(vehicleid, "http://relay.181.fm:8064/"); } } return 1; } Dialog:IndieRock(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://173.244.215.163:8330/"); case 1: SetVehicleRadio(vehicleid, "http://208.53.138.125:8136/"); } } return 1; } Dialog:Metal(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://173.244.215.163:8340/"); case 1: SetVehicleRadio(vehicleid, "http://184.154.10.83:8390/"); case 2: SetVehicleRadio(vehicleid, "http://209.9.229.211/"); case 3: SetVehicleRadio(vehicleid, "http://184.154.185.170:8080/"); case 4: SetVehicleRadio(vehicleid, "http://65.60.19.43:8270/"); } } return 1; } Dialog:Punk(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://80.94.69.106:6884/"); } } return 1; } Dialog:RockRoll(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://mp3-ar-192.as34763.net/"); } } return 1; } Dialog:RNBRadio(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: Dialog_Show(playerid, RNB, DIALOG_STYLE_LIST, "R&B", "181.fm - True R&B\nDEFJay.de - 100% R&B\nGotRadio - R&B Classics\nSlow Jamz\nAddictedToRadio.com - V101 RnB AAC", "Play", "Cancel"); case 1: Dialog_Show(playerid, SoulRadio, DIALOG_STYLE_LIST, "Soul", "181.fm - Soul\nSoulful Bits", "Play", "Cancel"); } } return 1; } Dialog:RNB(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://108.61.73.119:8022/"); case 1: SetVehicleRadio(vehicleid, "http://87.230.56.38/"); case 2: SetVehicleRadio(vehicleid, "http://206.217.213.236:8390/"); case 3: SetVehicleRadio(vehicleid, "http://173.193.32.153:8020/"); case 4: SetVehicleRadio(vehicleid, "http://208.77.21.15:10730/"); } } return 1; } Dialog:SoulRadio(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://relay.181.fm:8058/"); case 1: SetVehicleRadio(vehicleid, "http://88.191.137.70/"); } } return 1; } Dialog:PopRadio(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: Dialog_Show(playerid, KoreanRadio, DIALOG_STYLE_LIST, "Korean", "KPOP TOP 100\nGeneraction\nBig B Radio", "Play", "Cancel"); case 1: Dialog_Show(playerid, Pop, DIALOG_STYLE_LIST, "Pop", "My Tunes FM\nHot Hits IR\nGay FM", "Play", "Cancel"); case 2: Dialog_Show(playerid, TopHits, DIALOG_STYLE_LIST, "Top Hits", "ChartHits.fm - Your Hitz More Music\n181.fm The Office\n100Hitz - Top 40\n1.fm Absolute Top 40\nTop Hits Music - Sky.fm", "Play", "Cancel"); } } return 1; } Dialog:KoreanRadio(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://39.119.181.57:8000/128"); case 1: SetVehicleRadio(vehicleid, "http://176.31.241.195:8700/"); case 2: SetVehicleRadio(vehicleid, "http://199.241.187.194:8060/"); } } return 1; } Dialog:Pop(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://77.102.253.75:8000/"); case 1: SetVehicleRadio(vehicleid, "http://50.117.26.26:1265/moon.wavestreamer.com:1265/live"); case 2: SetVehicleRadio(vehicleid, "http://80.237.211.85/"); } } return 1; } Dialog:TopHits(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://79.141.174.206:22000/"); case 1: SetVehicleRadio(vehicleid, "http://108.61.73.117:8002/"); case 2: SetVehicleRadio(vehicleid, "http://206.217.213.235:8300/"); case 3: SetVehicleRadio(vehicleid, "http://205.164.62.15:7016/"); case 4: SetVehicleRadio(vehicleid, "http://stream-67.shoutcast.com/tophits_skyfm_mp3_96kbps"); } } return 1; } Dialog:OtherRadio(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: Dialog_Show(playerid, DanceRadio, DIALOG_STYLE_LIST, "Dance", "Dancetime.fm\nPlus Fm - Pure Dance Radio", "Play", "Cancel"); case 1: Dialog_Show(playerid, Glee, DIALOG_STYLE_LIST, "Glee", "AceRadio.net - Glee Radio", "Play", "Cancel"); case 2: Dialog_Show(playerid, MashUps, DIALOG_STYLE_LIST, "Mash Ups", "Mastermix - Base Manic Radio\nMashups\nGotRadio - Mashups\nMashup-Radio24.de\nI love mashup radio", "Play", "Cancel"); } } return 1; } Dialog:DanceRadio(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://87.230.53.17:8000/"); case 1: SetVehicleRadio(vehicleid, "http://87.230.82.41/"); } } return 1; } Dialog:Glee(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://174.36.42.110:8360/"); } } return 1; } Dialog:MashUps(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://184.107.17.34:8046/"); case 1: SetVehicleRadio(vehicleid, "http://67.212.166.210:8413/"); case 2: SetVehicleRadio(vehicleid, "http://206.217.213.236:8530/"); case 3: SetVehicleRadio(vehicleid, "http://188.138.124.98:39710/"); case 4: SetVehicleRadio(vehicleid, "http://87.118.64.205:8040/"); } } return 1; } Dialog:OldiesRadio(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: Dialog_Show(playerid, 70sRadio, DIALOG_STYLE_LIST, "70's", "181.fm - 70's\nAll Hit 70's\nSky.fm", "Play", "Cancel"); case 1: Dialog_Show(playerid, 80sRadio, DIALOG_STYLE_LIST, "80's", "Golden Radio Italia 80's\n181.fm - Lite 80's\n181.fm - Awesome 80's\n80's, 80's, 80's! - Sky.fm", "Play", "Cancel"); case 2: Dialog_Show(playerid, 90sRadio, DIALOG_STYLE_LIST, "90's", "GotRadio - 90's Alternative\nAddictedToRadio.com\n181.fm - Lite 90's\n181.fm - 90's Alternative\n181.fm - Star 90's", "Play", "Cancel"); } } return 1; } Dialog:70sRadio(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://108.61.73.118:8066/"); case 1: SetVehicleRadio(vehicleid, "http://stream-45.shoutcast.com/all_hit_70s_skyfm_mp3_96kbps"); } } return 1; } Dialog:80sRadio(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://109.123.116.202:8040/"); case 1: SetVehicleRadio(vehicleid, "http://74.86.186.4:12114/"); case 2: SetVehicleRadio(vehicleid, "http://108.61.73.118:8000/"); case 3: SetVehicleRadio(vehicleid, "http://stream-54.shoutcast.com/the80s_skyfm_mp3_96kbps"); } } return 1; } Dialog:90sRadio(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://173.244.215.162:8190/"); case 1: SetVehicleRadio(vehicleid, "http://208.77.21.13:14330/"); case 2: SetVehicleRadio(vehicleid, "http://74.86.186.4:12118/"); case 3: SetVehicleRadio(vehicleid, "http://108.61.73.118:8052/"); case 4: SetVehicleRadio(vehicleid, "http://108.61.73.118:8012/"); } } return 1; } Dialog:CulturalRadio(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: Dialog_Show(playerid, Classical, DIALOG_STYLE_LIST, "Classical", "Mostly Classical - Sky.fm\nCalmradio.com - Mozart\n1.fm - Otto's classical\nClassical Piano - Sky.fm", "Play", "Cancel"); case 1: Dialog_Show(playerid, Instruments, DIALOG_STYLE_LIST, "Instruments", "Calmradio.com - Solo Piano & Guitar\nGotRadio - Guitar Genius\nGotRadio - Piano Perfect\nPianorama", "Play", "Cancel"); } } return 1; } Dialog:Classical(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://stream-135.shoutcast.com/classical_skyfm_mp3_96kbps"); case 1: SetVehicleRadio(vehicleid, "http://159.253.143.15:12128/"); case 2: SetVehicleRadio(vehicleid, "http://205.164.41.18:7070/"); case 3: SetVehicleRadio(vehicleid, "http://72.26.204.28:6874/"); } } return 1; } Dialog:Instruments(playerid, response, listitem, inputtext[]) { if (response) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER || !IsEngineVehicle(vehicleid)) return 0; switch (listitem) { case 0: SetVehicleRadio(vehicleid, "http://173.192.225.172:8200/"); case 1: SetVehicleRadio(vehicleid, "http://173.244.215.162:8020/"); case 2: SetVehicleRadio(vehicleid, "http://173.244.215.162:8050/"); case 3: SetVehicleRadio(vehicleid, "http://188.127.226.185/"); } } return 1; } Dialog:NewTasks(playerid, response, listitem, inputtext[]) { if (response) { if (!strcmp(inputtext, "Visit Bank (pending)")) { new id = GetClosestEntrance(playerid, 2); if (id == -1) return SendErrorMessage(playerid, "There are no banks spawned in the server."); SetPlayerCheckpoint(playerid, EntranceData[id][entrancePos][0], EntranceData[id][entrancePos][1], EntranceData[id][entrancePos][2], 1.0); SendServerMessage(playerid, "Checkpoint set to the closest bank (marked on radar)."); } else if (!strcmp(inputtext, "Visit Store (pending)")) { new id = GetClosestBusiness(playerid, 1); if (id == -1) return SendErrorMessage(playerid, "There are no retail stores spawned in the server."); SetPlayerCheckpoint(playerid, BusinessData[id][bizPos][0], BusinessData[id][bizPos][1], BusinessData[id][bizPos][2], 1.0); SendServerMessage(playerid, "Checkpoint set to the closest retail store (marked on radar)."); } else if (!strcmp(inputtext, "Visit DMV (pending)")) { new id = GetClosestEntrance(playerid, 1); if (id == -1) return SendErrorMessage(playerid, "There are no DMV's spawned in the server."); SetPlayerCheckpoint(playerid, EntranceData[id][entrancePos][0], EntranceData[id][entrancePos][1], EntranceData[id][entrancePos][2], 1.0); SendServerMessage(playerid, "Checkpoint set to the closest DMV (marked on radar)."); } } return 1; } Dialog:PickupItems(playerid, response, listitem, inputtext[]) { static string[64]; if (response) { new id = NearestItems[playerid][listitem]; if (id != -1 && DroppedItems[id][droppedModel]) { if (DroppedItems[id][droppedWeapon] != 0) { if (PlayerData[playerid][pPlayingHours] < 2) return SendErrorMessage(playerid, "You must have at least 2 playing hours."); GiveWeaponToPlayer(playerid, DroppedItems[id][droppedWeapon], DroppedItems[id][droppedAmmo]); Item_Delete(id); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has picked up a %s.", ReturnName(playerid, 0), ReturnWeaponName(DroppedItems[id][droppedWeapon])); } else if (PickupItem(playerid, id)) { format(string, sizeof(string), "~g~%s~w~ added to inventory!", DroppedItems[id][droppedItem]); ShowPlayerFooter(playerid, string); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has picked up a \"%s\".", ReturnName(playerid, 0), DroppedItems[id][droppedItem]); } else SendErrorMessage(playerid, "You don't have any room in your inventory."); } else SendErrorMessage(playerid, "This item was already picked up."); } return 1; } Dialog:StartDelivery(playerid, response, listitem, inputtext[]) { if (response) { new id = Job_NearestPoint(playerid); if (id == -1) return 0; PlayerData[playerid][pLoadType] = listitem + 1; PlayerData[playerid][pLoadCrate] = 1; PlayerData[playerid][pLoading] = 1; SendServerMessage(playerid, "You have selected \"%s\". Load the crates into a truck to begin.", inputtext); SetPlayerCheckpoint(playerid, JobData[id][jobPoint][0], JobData[id][jobPoint][1], JobData[id][jobPoint][2], 1.0); SetPlayerAttachedObject(playerid, 4, 3014, 1, 0.038192, 0.371544, 0.055191, 0.000000, 90.000000, 357.668670, 1.000000, 1.000000, 1.000000); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CARRY); ApplyAnimation(playerid, "CARRY", "liftup", 4.1, 0, 0, 0, 0, 0, 1); ShowPlayerFooter(playerid, "Press ~y~'N'~w~ to load the crate."); } return 1; } Dialog:GatePass(playerid, response, listitem, inputtext[]) { if (response) { new id = Gate_Nearest(playerid); if (id == -1) return 0; if (isnull(inputtext)) return Dialog_Show(playerid, GatePass, DIALOG_STYLE_INPUT, "Enter Password", "Please enter the password for this gate below:", "Submit", "Cancel"); if (strcmp(inputtext, GateData[id][gatePass]) != 0) return Dialog_Show(playerid, GatePass, DIALOG_STYLE_INPUT, "Enter Password", "Error: Incorrect password specified.\n\nPlease enter the password for this gate below:", "Submit", "Cancel"); Gate_Operate(id); } return 1; } Dialog:EditRanks(playerid, response, listitem, inputtext[]) { if (response) { if (!FactionData[PlayerData[playerid][pFactionEdit]][factionExists]) return 0; PlayerData[playerid][pSelectedSlot] = listitem; Dialog_Show(playerid, SetRankName, DIALOG_STYLE_INPUT, "Set Rank", "Rank: %s (%d)\n\nPlease enter a new name for this rank below:", "Submit", "Back", FactionRanks[PlayerData[playerid][pFactionEdit]][PlayerData[playerid][pSelectedSlot]], PlayerData[playerid][pSelectedSlot] + 1); } return 1; } Dialog:SetRankName(playerid, response, listitem, inputtext[]) { if (response) { if (isnull(inputtext)) return Dialog_Show(playerid, SetRankName, DIALOG_STYLE_INPUT, "Set Rank", "Rank: %s (%d)\n\nPlease enter a new name for this rank below:", "Submit", "Back", FactionRanks[PlayerData[playerid][pFactionEdit]][PlayerData[playerid][pSelectedSlot]], PlayerData[playerid][pSelectedSlot] + 1); if (strlen(inputtext) > 32) return Dialog_Show(playerid, SetRankName, DIALOG_STYLE_INPUT, "Set Rank", "Error: The rank can't exceed 32 characters.\n\nRank: %s (%d)\n\nPlease enter a new name for this rank below:", "Submit", "Back", FactionRanks[PlayerData[playerid][pFactionEdit]][PlayerData[playerid][pSelectedSlot]], PlayerData[playerid][pSelectedSlot] + 1); format(FactionRanks[PlayerData[playerid][pFactionEdit]][PlayerData[playerid][pSelectedSlot]], 32, inputtext); Faction_SaveRanks(PlayerData[playerid][pFactionEdit]); Faction_ShowRanks(playerid, PlayerData[playerid][pFactionEdit]); SendServerMessage(playerid, "You have set the name of rank %d to \"%s\".", PlayerData[playerid][pSelectedSlot] + 1, inputtext); } else Faction_ShowRanks(playerid, PlayerData[playerid][pFactionEdit]); return 1; } Dialog:AcceptTaxi(playerid, response, listitem, inputtext[]) { if (response) { new targetid = strval(inputtext); if (!IsPlayerConnected(targetid)) return SendErrorMessage(playerid, "The specified player has disconnected."); if (!PlayerData[targetid][pTaxiCalled]) return SendErrorMessage(playerid, "That player's call was accepted by another taxi driver."); static Float:x, Float:y, Float:z; GetPlayerLocationEx(targetid, x, y, z); PlayerData[targetid][pTaxiCalled] = 0; Waypoint_Set(playerid, GetPlayerLocation(targetid), x, y, z); SendServerMessage(playerid, "You have accepted %s's taxi call.", ReturnName(targetid, 0)); SendServerMessage(targetid, "%s has accepted your taxi call and is on their way.", ReturnName(playerid, 0)); } return 1; } Dialog:AcceptShipment(playerid, response, listitem, inputtext[]) { if (response) { new bizid = strval(inputtext); if (!BusinessData[bizid][bizExists]) return 0; if (!BusinessData[bizid][bizShipment]) return SendErrorMessage(playerid, "This business is no longer requesting a shipment."); if (IsShipmentAccepted(bizid)) return SendErrorMessage(playerid, "This shipment was already accepted."); foreach (new i : Player) if (Business_IsOwner(i, bizid)) { SendServerMessage(i, "%s has accepted your shipment request.", ReturnName(playerid, 0)); } PlayerData[playerid][pShipment] = bizid; SendServerMessage(playerid, "You have accepted the shipment. Type /startdelivery to start a delivery."); } return 1; } Dialog:RackWeapons(playerid, response, listitem, inputtext[]) { if (response) { new id = Rack_Nearest(playerid); if (id == -1) return 0; if (!RackData[id][rackWeapons][listitem]) { if (!GetWeapon(playerid)) return SendErrorMessage(playerid, "You must be holding a weapon to store it."); RackData[id][rackWeapons][listitem] = GetWeapon(playerid); RackData[id][rackAmmo][listitem] = GetPlayerAmmo(playerid); ResetWeapon(playerid, GetWeapon(playerid)); Rack_RefreshGuns(id); Rack_Save(id); ApplyAnimation(playerid, "WEAPONS", "SHP_Ar_Lift", 4.1, 0, 0, 0, 0, 0, 1); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has stored a %s on the weapon rack.", ReturnName(playerid, 0), ReturnWeaponName(RackData[id][rackWeapons][listitem])); } else { GiveWeaponToPlayer(playerid, RackData[id][rackWeapons][listitem], RackData[id][rackAmmo][listitem]); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has taken a %s from the weapon rack.", ReturnName(playerid, 0), ReturnWeaponName(RackData[id][rackWeapons][listitem])); RackData[id][rackWeapons][listitem] = 0; RackData[id][rackAmmo][listitem] = 0; Rack_RefreshGuns(id); Rack_Save(id); ApplyAnimation(playerid, "WEAPONS", "SHP_Tray_Out", 4.1, 0, 0, 0, 0, 0, 1); } } return 1; } Dialog:TakeItems(playerid, response, listitem, inputtext[]) { if (GetFactionType(playerid) != FACTION_POLICE || PlayerData[playerid][pTakeItems] == INVALID_PLAYER_ID) return 0; if (response) { if (!strcmp(inputtext, "Take Weapons")) { ResetWeapons(PlayerData[playerid][pTakeItems]); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has confiscated %s's weapons.", ReturnName(playerid, 0), ReturnName(PlayerData[playerid][pTakeItems], 0)); } else if (!strcmp(inputtext, "Take Seeds")) { Inventory_Remove(PlayerData[playerid][pTakeItems], "Marijuana Seeds", -1); Inventory_Remove(PlayerData[playerid][pTakeItems], "Cocaine Seeds", -1); Inventory_Remove(PlayerData[playerid][pTakeItems], "Heroin Opium Seeds", -1); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has confiscated %s's drug seeds.", ReturnName(playerid, 0), ReturnName(PlayerData[playerid][pTakeItems], 0)); } else if (!strcmp(inputtext, "Take Drugs")) { Inventory_Remove(PlayerData[playerid][pTakeItems], "Marijuana", -1); Inventory_Remove(PlayerData[playerid][pTakeItems], "Cocaine", -1); Inventory_Remove(PlayerData[playerid][pTakeItems], "Heroin", -1); Inventory_Remove(PlayerData[playerid][pTakeItems], "Steroids", -1); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has confiscated %s's drugs.", ReturnName(playerid, 0), ReturnName(PlayerData[playerid][pTakeItems], 0)); } else if (!strcmp(inputtext, "Take Radio")) { Inventory_Remove(PlayerData[playerid][pTakeItems], "Portable Radio", -1); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has confiscated %s's portable radio.", ReturnName(playerid, 0), ReturnName(PlayerData[playerid][pTakeItems], 0)); } else if (!strcmp(inputtext, "Take Weapon License")) { Inventory_Remove(PlayerData[playerid][pTakeItems], "Weapon License", -1); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has confiscated %s's weapon license.", ReturnName(playerid, 0), ReturnName(PlayerData[playerid][pTakeItems], 0)); } else if (!strcmp(inputtext, "Take Driving License")) { Inventory_Remove(PlayerData[playerid][pTakeItems], "Driving License", -1); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has confiscated %s's driving license.", ReturnName(playerid, 0), ReturnName(PlayerData[playerid][pTakeItems], 0)); } else if (!strcmp(inputtext, "Take Backpack")) { Backpack_Delete(GetPlayerBackpack(PlayerData[playerid][pTakeItems])); Inventory_Remove(PlayerData[playerid][pTakeItems], "Backpack", -1); SetAccessories(PlayerData[playerid][pTakeItems]); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has confiscated %s's backpack.", ReturnName(playerid, 0), ReturnName(PlayerData[playerid][pTakeItems], 0)); } } return 1; } Dialog:ServerPanel(playerid, response, listitem, inputtext[]) { if (PlayerData[playerid][pAdmin] < 6) return 0; if (response) { switch (listitem) { case 0: { if (g_ServerLocked) { g_ServerLocked = false; SendRconCommand("password 0"); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has unlocked the server.", ReturnName(playerid, 0)); } else Dialog_Show(playerid, LockServer, DIALOG_STYLE_INPUT, "Lock Server", "Please enter the specified password below to lock the server with:", "Lock", "Back"); } case 1: Dialog_Show(playerid, SetHostname, DIALOG_STYLE_INPUT, "Set Hostname", "Please enter the new server hostname below:", "Submit", "Back"); case 2: Dialog_Show(playerid, ExecuteQuery, DIALOG_STYLE_INPUT, "Execute Query", "Please specify the MySQL query to execute below:", "Execute", "Back"); } } return 1; } Dialog:LockServer(playerid, response, listitem, inputtext[]) { if (PlayerData[playerid][pAdmin] < 6) return 0; if (response) { if (isnull(inputtext) || !strcmp(inputtext, "0")) return Dialog_Show(playerid, LockServer, DIALOG_STYLE_INPUT, "Lock Server", "Please enter the specified password below to lock the server with:", "Lock", "Back"); if (strlen(inputtext) > 32) return Dialog_Show(playerid, LockServer, DIALOG_STYLE_INPUT, "Lock Server", "Error: Please type a password shorter than 32 characters.\n\nPlease enter the specified password below to lock the server with:", "Lock", "Back"); static str[48]; format(str, sizeof(str), "password %s", inputtext); g_ServerLocked = true; SendRconCommand(str); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has locked the server (password: %s).", ReturnName(playerid, 0), inputtext); } else cmd_panel(playerid, "\1"); return 1; } Dialog:SetHostname(playerid, response, listitem, inputtext[]) { if (PlayerData[playerid][pAdmin] < 6) return 0; if (response) { if (isnull(inputtext)) return Dialog_Show(playerid, SetHostname, DIALOG_STYLE_INPUT, "Set Hostname", "Please enter the new server hostname below:", "Submit", "Back"); static str[128]; format(str, sizeof(str), "hostname %s", inputtext); SendRconCommand(str); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has set the hostname to \"%s\".", ReturnName(playerid, 0), inputtext); } else cmd_panel(playerid, "\1"); return 1; } Dialog:ExecuteQuery(playerid, response, listitem, inputtext[]) { if (PlayerData[playerid][pAdmin] < 6) return 0; if (response) { if (isnull(inputtext)) return Dialog_Show(playerid, ExecuteQuery, DIALOG_STYLE_INPUT, "Execute Query", "Please specify the MySQL query to execute below:", "Execute", "Back"); if (strfind(inputtext, "DELETE", true) != -1 || strfind(inputtext, "DROP", true) != -1) return Dialog_Show(playerid, ExecuteQuery, DIALOG_STYLE_INPUT, "Execute Query", "Error: You can't execute \"DROP\" or \"DELETE\" queries.\n\nPlease specify the MySQL query to execute below:", "Execute", "Back"); PlayerData[playerid][pExecute] = 1; mysql_tquery(g_iHandle, inputtext, "OnQueryExecute", "ds", playerid, inputtext); } else cmd_panel(playerid, "\1"); return 1; } Dialog:TuneVehicle(playerid, response, listitem, inputtext[]) { new vehicleid = GetPlayerVehicleID(playerid); if (!IsPlayerInAnyVehicle(playerid) || !IsDoorVehicle(vehicleid)) return 0; if (response) { switch (listitem) { case 0: ShowModelSelectionMenu(playerid, "Add Wheels", MODEL_SELECTION_WHEELS, {1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1096, 1097, 1098}, 17, 0.0, 0.0, 90.0); case 1: Dialog_Show(playerid, AddNOS, DIALOG_STYLE_LIST, "Add Nitrous", "2x NOS\n5x NOS\n10x NOS", "Select", "Cancel"); case 2: { AddComponent(vehicleid, 1087); SendServerMessage(playerid, "You have added hydraulics to this vehicle."); } } } return 1; } Dialog:AddNOS(playerid, response, listitem, inputtext[]) { new vehicleid = GetPlayerVehicleID(playerid); if (!IsPlayerInAnyVehicle(playerid) || !IsDoorVehicle(vehicleid)) return 0; if (response) { switch (listitem) { case 0: { AddComponent(vehicleid, 1009); SendServerMessage(playerid, "You have added 2x NOS to this vehicle."); } case 1: { AddComponent(vehicleid, 1008); SendServerMessage(playerid, "You have added 5x NOS to this vehicle."); } case 2: { AddComponent(vehicleid, 1010); SendServerMessage(playerid, "You have added 10x NOS to this vehicle."); } } } return 1; } Dialog:EntrancePass(playerid, response, listitem, inputtext[]) { if (response) { new id = (Entrance_Inside(playerid) == -1) ? (Entrance_Nearest(playerid)) : (Entrance_Inside(playerid)); if (id == -1) return SendErrorMessage(playerid, "You are not in range of any entrance."); if (strcmp(EntranceData[id][entrancePass], inputtext) != 0) return SendErrorMessage(playerid, "Invalid password specified."); if (!EntranceData[id][entranceLocked]) { EntranceData[id][entranceLocked] = true; Entrance_Save(id); ShowPlayerFooter(playerid, "You have ~r~locked~w~ the entrance!"); PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0); } else { EntranceData[id][entranceLocked] = false; Entrance_Save(id); ShowPlayerFooter(playerid, "You have ~g~unlocked~w~ the entrance!"); PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0); } } return 1; } Dialog:ReleaseCar(playerid, response, listitem, inputtext[]) { if (response) { new carid = ListedVehicles[playerid][listitem], id = GetImpoundByID(CarData[carid][carImpounded]); if (carid != -1 && id != -1 && CarData[carid][carExists] && CarData[carid][carImpounded] != -1) { if (GetMoney(playerid) < CarData[carid][carImpoundPrice]) return SendErrorMessage(playerid, "You can't afford to release this vehicle."); GiveMoney(playerid, -CarData[carid][carImpoundPrice]); CarData[carid][carPos][0] = ImpoundData[id][impoundRelease][0]; CarData[carid][carPos][1] = ImpoundData[id][impoundRelease][1]; CarData[carid][carPos][2] = ImpoundData[id][impoundRelease][2]; CarData[carid][carPos][3] = ImpoundData[id][impoundRelease][3]; SetVehiclePos(CarData[carid][carVehicle], CarData[carid][carPos][0], CarData[carid][carPos][1], CarData[carid][carPos][2]); SetVehicleZAngle(CarData[carid][carVehicle], CarData[carid][carPos][3]); SendServerMessage(playerid, "You have released your %s for %s.", ReturnVehicleModelName(CarData[carid][carModel]), FormatNumber(CarData[carid][carImpoundPrice])); CarData[carid][carImpounded] = -1; CarData[carid][carImpoundPrice] = 0; Car_Save(carid); } } return 1; } Dialog:GiveItem(playerid, response, listitem, inputtext[]) { if (response) { static userid = -1, itemid = -1, string[32]; if (sscanf(inputtext, "u", userid)) return Dialog_Show(playerid, GiveItem, DIALOG_STYLE_INPUT, "Give Item", "Please enter the name or the ID of the player:", "Submit", "Cancel"); if (userid == INVALID_PLAYER_ID) return Dialog_Show(playerid, GiveItem, DIALOG_STYLE_INPUT, "Give Item", "Error: Invalid player specified.\n\nPlease enter the name or the ID of the player:", "Submit", "Cancel"); if (!IsPlayerNearPlayer(playerid, userid, 6.0)) return Dialog_Show(playerid, GiveItem, DIALOG_STYLE_INPUT, "Give Item", "Error: You are not near that player.\n\nPlease enter the name or the ID of the player:", "Submit", "Cancel"); if (userid == playerid) return Dialog_Show(playerid, GiveItem, DIALOG_STYLE_INPUT, "Give Item", "Error: You can't give items to yourself.\n\nPlease enter the name or the ID of the player:", "Submit", "Cancel"); itemid = PlayerData[playerid][pInventoryItem]; if (itemid == -1) return 0; strunpack(string, InventoryData[playerid][itemid][invItem]); if (InventoryData[playerid][itemid][invQuantity] == 1) { if (!strcmp(string, "Backpack") && Inventory_HasItem(userid, "Backpack")) return SendErrorMessage(playerid, "That player is already carrying a backpack."); new id = Inventory_Add(userid, string, InventoryData[playerid][itemid][invModel]); if (id == -1) return SendErrorMessage(playerid, "That player doesn't have anymore inventory slots."); if (!strcmp(string, "Backpack") && (id = GetPlayerBackpack(playerid)) != -1) { BackpackData[id][backpackPlayer] = PlayerData[userid][pID]; Backpack_Save(id); SetAccessories(userid); Inventory_Remove(playerid, "Backpack"); } SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out a \"%s\" and gives it to %s.", ReturnName(playerid, 0), string, ReturnName(userid, 0)); SendServerMessage(userid, "%s has given you \"%s\" (added to inventory).", ReturnName(playerid, 0), string); Inventory_Remove(playerid, string); Log_Write("logs/give_log.txt", "[%s] %s (%s) has given a %s to %s (%s).", ReturnDate(), ReturnName(playerid, 0), PlayerData[playerid][pIP], string, ReturnName(userid, 0), PlayerData[userid][pIP]); } else { Dialog_Show(playerid, GiveQuantity, DIALOG_STYLE_INPUT, "Give Item", "Item: %s (Quantity: %d)\n\nPlease enter the amount of this item you wish to give %s:", "Give", "Cancel", string, InventoryData[playerid][itemid][invQuantity], ReturnName(userid, 0)); PlayerData[playerid][pGiveItem] = userid; } } return 1; } Dialog:GiveQuantity(playerid, response, listitem, inputtext[]) { if (response && PlayerData[playerid][pGiveItem] != INVALID_PLAYER_ID) { new userid = PlayerData[playerid][pGiveItem], itemid = PlayerData[playerid][pInventoryItem], string[32]; strunpack(string, InventoryData[playerid][itemid][invItem]); if (isnull(inputtext)) return Dialog_Show(playerid, GiveQuantity, DIALOG_STYLE_INPUT, "Give Item", "Item: %s (Quantity: %d)\n\nPlease enter the amount of this item you wish to give %s:", "Give", "Cancel", string, InventoryData[playerid][itemid][invQuantity], ReturnName(userid, 0)); if (strval(inputtext) < 1 || strval(inputtext) > InventoryData[playerid][itemid][invQuantity]) return Dialog_Show(playerid, GiveQuantity, DIALOG_STYLE_INPUT, "Give Item", "Error: You don't have that much.\n\nItem: %s (Quantity: %d)\n\nPlease enter the amount of this item you wish to give %s:", "Give", "Cancel", string, InventoryData[playerid][itemid][invQuantity], ReturnName(userid, 0)); new id = Inventory_Add(userid, string, InventoryData[playerid][itemid][invModel], strval(inputtext)); if (id == -1) return SendErrorMessage(playerid, "That player doesn't have anymore inventory slots."); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out a \"%s\" and gives it to %s.", ReturnName(playerid, 0), string, ReturnName(userid, 0)); SendServerMessage(userid, "%s has given you \"%s\" (added to inventory).", ReturnName(playerid, 0), string); Inventory_Remove(playerid, string, strval(inputtext)); Log_Write("logs/give_log.txt", "[%s] %s (%s) has given %d %s to %s (%s).", ReturnDate(), ReturnName(playerid, 0), PlayerData[playerid][pIP], strval(inputtext), string, ReturnName(userid, 0), PlayerData[userid][pIP]); } return 1; } Dialog:BackpackLoot(playerid, response, listitem, inputtext[]) { static id = -1; if (response) { if (!strcmp(inputtext, "Take Backpack")) { if (Inventory_HasItem(playerid, "Backpack")) return SendErrorMessage(playerid, "You can only have one backpack."); id = PlayerData[playerid][pBackpackLoot]; BackpackData[id][backpackPlayer] = PlayerData[playerid][pID]; BackpackData[id][backpackPos][0] = 0.0; BackpackData[id][backpackPos][1] = 0.0; BackpackData[id][backpackPos][2] = 0.0; DestroyDynamic3DTextLabel(BackpackData[id][backpackText3D]); DestroyDynamicObject(BackpackData[id][backpackObject]); Backpack_Save(id); Inventory_Add(playerid, "Backpack", 3026); SetAccessories(playerid); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has picked up a backpack.", ReturnName(playerid, 0)); } else if ((id = BackpackListed[playerid][listitem]) != -1) { new string[32]; strcat(string, BackpackItems[id][bItemName]); Inventory_Add(playerid, string, BackpackItems[id][bItemModel], BackpackItems[id][bItemQuantity]); Backpack_Remove(BackpackItems[id][bItemBackpack], string, BackpackItems[id][bItemQuantity]); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s reaches inside the backpack and takes a \"%s\".", ReturnName(playerid, 0), string); } } return 1; } Dialog:BackpackDeposit(playerid, response, listitem, inputtext[]) { static string[32]; strunpack(string, InventoryData[playerid][PlayerData[playerid][pInventoryItem]][invItem]); if (response) { new amount = strval(inputtext); if (amount < 1 || amount > InventoryData[playerid][PlayerData[playerid][pInventoryItem]][invQuantity]) return Dialog_Show(playerid, BackpackDeposit, DIALOG_STYLE_INPUT, "Backpack Deposit", "Item: %s (Quantity: %d)\n\nPlease enter the quantity that you wish to store for this item:", "Store", "Back", string, InventoryData[playerid][PlayerData[playerid][pInventoryItem]][invQuantity]); Backpack_Add(GetPlayerBackpack(playerid), string, InventoryData[playerid][PlayerData[playerid][pInventoryItem]][invModel], amount); Inventory_Remove(playerid, string, amount); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has stored a \"%s\" into their backpack.", ReturnName(playerid, 0), string); Backpack_Open(playerid); } else Backpack_Open(playerid); return 1; } Dialog:BackpackTake(playerid, response, listitem, inputtext[]) { static string[32], id = -1; if (response) { new amount = strval(inputtext); id = PlayerData[playerid][pStorageItem]; strunpack(string, BackpackItems[id][bItemName]); if (amount < 1 || amount > BackpackItems[id][bItemQuantity]) return Dialog_Show(playerid, BackpackTake, DIALOG_STYLE_INPUT, "Backpack Take", "Item: %s (Quantity: %d)\n\nPlease enter the quantity that you wish to take for this item:", "Take", "Back", string, BackpackItems[id][bItemQuantity]); Inventory_Add(playerid, string, BackpackItems[id][bItemModel], amount); Backpack_Remove(GetPlayerBackpack(playerid), string, amount); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has taken a \"%s\" from their backpack.", ReturnName(playerid, 0), string); Backpack_Open(playerid); } else Backpack_Open(playerid); return 1; } Dialog:BackpackOptions(playerid, response, listitem, inputtext[]) { if (response) { new id = PlayerData[playerid][pStorageItem], string[32]; switch (listitem) { case 0: { strcat(string, BackpackItems[id][bItemName]); if (BackpackItems[id][bItemQuantity] == 1) { Inventory_Add(playerid, string, BackpackItems[id][bItemModel]); Backpack_Remove(GetPlayerBackpack(playerid), string); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has taken a \"%s\" from their backpack.", ReturnName(playerid, 0), string); Backpack_Open(playerid); } else { Dialog_Show(playerid, BackpackTake, DIALOG_STYLE_INPUT, "Backpack Take", "Item: %s (Quantity: %d)\n\nPlease enter the quantity that you wish to take for this item:", "Take", "Back", string, BackpackItems[id][bItemQuantity]); } } case 1: { new itemid = Inventory_GetItemID(playerid, BackpackItems[id][bItemName]); if (itemid == -1) return SendErrorMessage(playerid, "You don't have anymore of this item to store!"); strunpack(string, InventoryData[playerid][itemid][invItem]); if (IsFurnitureItem(string)) return SendErrorMessage(playerid, "You can't store furniture in your backpack."); if (InventoryData[playerid][itemid][invQuantity] == 1) { Backpack_Add(GetPlayerBackpack(playerid), string, InventoryData[playerid][itemid][invModel]); Inventory_Remove(playerid, string); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has stored a \"%s\" into their backpack.", ReturnName(playerid, 0), string); Backpack_Open(playerid); } else { PlayerData[playerid][pInventoryItem] = itemid; Dialog_Show(playerid, BackpackDeposit, DIALOG_STYLE_INPUT, "Backpack Deposit", "Item: %s (Quantity: %d)\n\nPlease enter the quantity that you wish to store for this item:", "Store", "Back", string, InventoryData[playerid][PlayerData[playerid][pInventoryItem]][invQuantity]); } } } } else Backpack_Open(playerid); return 1; } Dialog:Backpack(playerid, response, listitem, inputtext[]) { if (response) { new id = -1, string[48]; if (!listitem) { if (Backpack_GetItems(GetPlayerBackpack(playerid)) >= MAX_BACKPACK_CAPACITY) return SendErrorMessage(playerid, "The backpack has reached it's capacity of %d items.", MAX_BACKPACK_CAPACITY); OpenInventory(playerid); PlayerData[playerid][pStorageSelect] = 3; } else if ((id = BackpackListed[playerid][listitem-1]) != -1) { PlayerData[playerid][pStorageItem] = id; format(string, sizeof(string), "%s (Quantity: %d)", BackpackItems[id][bItemName], BackpackItems[id][bItemQuantity]); Dialog_Show(playerid, BackpackOptions, DIALOG_STYLE_LIST, string, "Take Item\nStore Item\nDrop Item", "Select", "Back"); } } return 1; } Dialog:Tutorial(playerid, response, listitem, inputtext[]) { if (PlayerData[playerid][pTutorialStage] == 3) { PlayerData[playerid][pTutorialStage] = 4; SendClientMessage(playerid, COLOR_SERVER, "Press 'Y' and select the soda bottle and drop it."); } else if (PlayerData[playerid][pTutorialStage] == 4) { PlayerData[playerid][pTutorialStage] = 5; SendClientMessage(playerid, COLOR_SERVER, "Please make your way towards the exit and press 'F'."); SetPlayerCheckpoint(playerid, -228.8403, 1401.1831, 27.7656, 1.0); } return 1; } Dialog:TutorialConfirm(playerid, response, listitem, inputtext[]) { PlayerData[playerid][pTutorialStage] = 0; if (!response) { PlayerData[playerid][pCreated] = 1; PlayerData[playerid][pTask] = 1; PlayerData[playerid][pTutorial] = 0; PlayerData[playerid][pTutorialTime] = 0; SendServerMessage(playerid, "Type /tasks to view your current tasks to complete."); } else { StartTutorial(playerid); } return 1; } Dialog:MyTickets(playerid, response, listitem, inputtext[]) { if (response) { if (!TicketData[playerid][listitem][ticketExists]) return SendErrorMessage(playerid, "There is no ticket in the selected slot."); if (GetMoney(playerid) < TicketData[playerid][listitem][ticketFee]) return SendErrorMessage(playerid, "You can't afford to pay this ticket."); GiveMoney(playerid, -TicketData[playerid][listitem][ticketFee]); Tax_AddMoney(TicketData[playerid][listitem][ticketFee]); SendServerMessage(playerid, "You have paid off a %s ticket for \"%s\".", FormatNumber(TicketData[playerid][listitem][ticketFee]), TicketData[playerid][listitem][ticketReason]); Ticket_Remove(playerid, listitem); } return 1; } Dialog:MainGPS(playerid, response, listitem, inputtext[]) { if (response) { switch (listitem) { case 0: Dialog_Show(playerid, FindHouse, DIALOG_STYLE_INPUT, "Find House", "Please enter the address of the house below:", "Submit", "Cancel"); case 1: Dialog_Show(playerid, FindBusiness, DIALOG_STYLE_LIST, "Find Business", "Retail Store\nWeapon Store\nClothing Store\nFast Food\nDealership\nGas Station\nFurniture Store", "Submit", "Cancel"); case 2: Dialog_Show(playerid, FindEntrance, DIALOG_STYLE_LIST, "Find Entrance", "Nearest DMV\nNearest Bank\nNearest Warehouse\nNearest City Hall", "Select", "Cancel"); case 3: Dialog_Show(playerid, FindJob, DIALOG_STYLE_LIST, "Find Job", "Courier\nMechanic\nTaxi Driver\nCargo Unloader\nMiner\nFood Vendor\nGarbage Man\nPackage Sorter", "Select", "Cancel"); case 4: { static string[MAX_GPS_LOCATIONS * 32]; string = "Add Location\n"; for (new i = 0; i != MAX_GPS_LOCATIONS; i ++) if (LocationData[playerid][i][locationExists]) { format(string, sizeof(string), "%s%s\n", string, LocationData[playerid][i][locationName]); } Dialog_Show(playerid, CustomLocations, DIALOG_STYLE_LIST, "Custom Locations", string, "Select", "Back"); } } } return 1; } Dialog:FindHouse(playerid, response, listitem, inputtext[]) { if (response) { if (isnull(inputtext) || strlen(inputtext) > 32) return Dialog_Show(playerid, FindHouse, DIALOG_STYLE_INPUT, "Find House", "Please enter the address of the house below:", "Submit", "Cancel"); for (new i = 0; i != MAX_HOUSES; i ++) { if (HouseData[i][houseExists] && !strcmp(HouseData[i][houseAddress], inputtext, true)) { Waypoint_Set(playerid, HouseData[i][houseAddress], HouseData[i][housePos][0], HouseData[i][housePos][1], HouseData[i][housePos][2]); return SendServerMessage(playerid, "Waypoint set to \"%s\" (marked on radar).", HouseData[i][houseAddress]); } } Dialog_Show(playerid, FindHouse, DIALOG_STYLE_INPUT, "Find House", "Error: No results found for \"%s\".\n\nPlease enter the address of the house below:", "Submit", "Cancel", inputtext); } else cmd_gps(playerid, "\1"); return 1; } Dialog:FindBusiness(playerid, response, listitem, inputtext[]) { if (response) { new bizid = GetClosestBusiness(playerid, listitem + 1); if (bizid != -1) { Waypoint_Set(playerid, BusinessData[bizid][bizName], BusinessData[bizid][bizPos][0], BusinessData[bizid][bizPos][1], BusinessData[bizid][bizPos][2]); SendServerMessage(playerid, "Waypoint set to closest %s (marked on radar).", inputtext); } else { SendErrorMessage(playerid, "The GPS was unable to locate any business."); } } else cmd_gps(playerid, "\1"); return 1; } Dialog:FindEntrance(playerid, response, listitem, inputtext[]) { if (response) { new id = GetClosestEntrance(playerid, listitem + 1); if (id != -1) { Waypoint_Set(playerid, EntranceData[id][entranceName], EntranceData[id][entrancePos][0], EntranceData[id][entrancePos][1], EntranceData[id][entrancePos][2]); SendServerMessage(playerid, "Waypoint set to %s (marked on radar).", inputtext); } else { SendErrorMessage(playerid, "The GPS was unable to locate any entrance."); } } else cmd_gps(playerid, "\1"); return 1; } Dialog:FindJob(playerid, response, listitem, inputtext[]) { if (response) { new id = GetClosestJob(playerid, listitem + 1); if (id != -1) { static str[32]; format(str, 32, "%s Job", inputtext); Waypoint_Set(playerid, str, JobData[id][jobPos][0], JobData[id][jobPos][1], JobData[id][jobPos][2]); SendServerMessage(playerid, "Waypoint set to %s (marked on radar).", str); } else { SendErrorMessage(playerid, "The GPS was unable to locate any job."); } } else cmd_gps(playerid, "\1"); return 1; } Dialog:CustomLocations(playerid, response, listitem, inputtext[]) { if (response) { if (!listitem) { Dialog_Show(playerid, AddLocation, DIALOG_STYLE_INPUT, "Add Location", "Please enter the desired name of the location below:", "Submit", "Cancel"); } else { new id = Location_GetID(playerid, inputtext); if (id != -1) { PlayerData[playerid][pSelectedSlot] = id; Dialog_Show(playerid, LocationInfo, DIALOG_STYLE_LIST, inputtext, "Set Waypoint\nDelete Location", "Select", "Back"); } } } else cmd_gps(playerid, "\1"); return 1; } Dialog:AddLocation(playerid, response, listitem, inputtext[]) { if (response) { if (isnull(inputtext)) return Dialog_Show(playerid, AddLocation, DIALOG_STYLE_INPUT, "Add Location", "Please enter the desired name of the location below:", "Submit", "Cancel"); if (strlen(inputtext) > 32) return Dialog_Show(playerid, AddLocation, DIALOG_STYLE_INPUT, "Add Location", "Error: The name can't exceed 32 characters.\n\nPlease enter the desired name of the location below:", "Submit", "Cancel"); static Float:fX, Float:fY, Float:fZ, id = -1; if ((id = House_Inside(playerid)) != -1) { fX = HouseData[id][housePos][0]; fY = HouseData[id][housePos][1]; fZ = HouseData[id][housePos][2]; } else if ((id = Business_Inside(playerid)) != -1) { fX = BusinessData[id][bizPos][0]; fY = BusinessData[id][bizPos][1]; fZ = BusinessData[id][bizPos][2]; } else if ((id = Entrance_Inside(playerid)) != -1) { fX = EntranceData[id][entrancePos][0]; fY = EntranceData[id][entrancePos][1]; fZ = EntranceData[id][entrancePos][2]; } else GetPlayerPos(playerid, fX, fY, fZ); Location_Add(playerid, inputtext, fX, fY, fZ); SendServerMessage(playerid, "You have added \"%s\" to your GPS.", inputtext); } else cmd_gps(playerid, "\1"); return 1; } Dialog:LocationInfo(playerid, response, listitem, inputtext[]) { if (response) { new id = PlayerData[playerid][pSelectedSlot]; switch (listitem) { case 0: { Waypoint_Set(playerid, LocationData[playerid][id][locationName], LocationData[playerid][id][locationPos][0], LocationData[playerid][id][locationPos][1], LocationData[playerid][id][locationPos][2]); SendServerMessage(playerid, "Waypoint set to \"%s\" (marked on radar).", LocationData[playerid][id][locationName]); } case 1: { SendServerMessage(playerid, "You have removed \"%s\" from your GPS.", LocationData[playerid][id][locationName]); Location_Delete(playerid, LocationData[playerid][id][locationName]); dialog_MainGPS(playerid, 1, 4, "\1"); } } } else dialog_MainGPS(playerid, 1, 4, "\1"); return 1; } Dialog:Warrants(playerid, response, listitem, inputtext[]) { if (GetFactionType(playerid) != FACTION_POLICE || !IsACruiser(GetPlayerVehicleID(playerid))) return 0; if (response) { static name[64], targetid = INVALID_PLAYER_ID; strmid(name, inputtext, 0, strfind(inputtext, "(") - 1); if ((targetid = GetPlayerID(name, 0)) == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "The player is no longer connected."); if (PlayerData[targetid][pWarrants] < 1) return SendErrorMessage(playerid, "The player no longer has any warrants."); PlayerData[playerid][pMDCPlayer] = targetid; format(name, sizeof(name), "MDC: %s", name); Dialog_Show(playerid, WarrantList, DIALOG_STYLE_LIST, name, "Track Player\nClear Warrants", "Select", "Back"); } else cmd_mdc(playerid, "\1"); return 1; } Dialog:WarrantList(playerid, response, listitem, inputtext[]) { if (GetFactionType(playerid) != FACTION_POLICE || !IsACruiser(GetPlayerVehicleID(playerid)) || PlayerData[playerid][pMDCPlayer] == INVALID_PLAYER_ID) return 0; if (response) { switch (listitem) { case 0: { SendServerMessage(playerid, "The MDC Satellite System is now trying to track %s...", ReturnName(PlayerData[playerid][pMDCPlayer], 0)); PlayerData[playerid][pTrackTime] = 3; } case 1: { PlayerData[PlayerData[playerid][pMDCPlayer]][pWarrants] = 0; SendServerMessage(playerid, "You have cleared %s's warrants.", ReturnName(PlayerData[playerid][pMDCPlayer], 0)); SendFactionMessage(PlayerData[playerid][pFaction], COLOR_RADIO, "RADIO: %s has cleared %s's active warrants.", ReturnName(playerid, 0), ReturnName(PlayerData[playerid][pMDCPlayer], 0)); PlayerData[playerid][pMDCPlayer] = INVALID_PLAYER_ID; } } } else { PlayerData[playerid][pMDCPlayer] = INVALID_PLAYER_ID; dialog_MainMDC(playerid, 1, 0, "\1"); } return 1; } Dialog:ChargeName(playerid, response, listitem, inputtext[]) { if (GetFactionType(playerid) != FACTION_POLICE || !IsACruiser(GetPlayerVehicleID(playerid))) return 0; if (response) { new targetid; if (sscanf(inputtext, "u", targetid)) return Dialog_Show(playerid, ChargeName, DIALOG_STYLE_INPUT, "Place Charges", "Error: Please enter a valid user.\n\nPlease enter the name or ID of the player:", "Submit", "Back"); if (targetid == INVALID_PLAYER_ID) return Dialog_Show(playerid, ChargeName, DIALOG_STYLE_INPUT, "Place Charges", "Error: Invalid user specified.\n\nPlease enter the name or ID of the player:", "Submit", "Back"); if (PlayerData[targetid][pWarrants] > 14) return Dialog_Show(playerid, ChargeName, DIALOG_STYLE_INPUT, "Place Charges", "Error: The user already has 15 active warrants.\n\nPlease enter the name or ID of the player:", "Submit", "Back"); PlayerData[playerid][pMDCPlayer] = targetid; Dialog_Show(playerid, PlaceCharge, DIALOG_STYLE_INPUT, "Place Charge", "Please enter the description of the crime committed by %s:", "Submit", "Back", ReturnName(PlayerData[playerid][pMDCPlayer], 0)); } else cmd_mdc(playerid, "\1"); return 1; } Dialog:PlaceCharge(playerid, response, listitem, inputtext[]) { if (GetFactionType(playerid) != FACTION_POLICE || !IsACruiser(GetPlayerVehicleID(playerid)) || PlayerData[playerid][pMDCPlayer] == INVALID_PLAYER_ID) return 0; if (response) { if (isnull(inputtext)) return Dialog_Show(playerid, PlaceCharge, DIALOG_STYLE_INPUT, "Place Charge", "Please enter the description of the crime committed by %s:", "Submit", "Back", ReturnName(PlayerData[playerid][pMDCPlayer], 0)); PlayerData[PlayerData[playerid][pMDCPlayer]][pWarrants]++; AddWarrant(PlayerData[playerid][pMDCPlayer], playerid, inputtext); SendFactionMessage(PlayerData[playerid][pFaction], COLOR_RADIO, "RADIO: %s has placed a charge on %s for \"%s\".", ReturnName(playerid, 0), ReturnName(PlayerData[playerid][pMDCPlayer], 0), inputtext); cmd_mdc(playerid, "\1"); } else { PlayerData[playerid][pMDCPlayer] = INVALID_PLAYER_ID; cmd_mdc(playerid, "\1"); } return 1; } Dialog:MainMDC(playerid, response, listitem, inputtext[]) { if (GetFactionType(playerid) != FACTION_POLICE || !IsACruiser(GetPlayerVehicleID(playerid))) return 0; if (response) { switch (listitem) { case 0: { static string[512]; string[0] = 0; foreach (new i : Player) if (PlayerData[i][pWarrants] > 0) { format(string, sizeof(string), "%s%s (%d warrants)\n", string, ReturnName(i, 0), PlayerData[i][pWarrants]); } if (!strlen(string)) return SendErrorMessage(playerid, "There are no active warrants."); Dialog_Show(playerid, Warrants, DIALOG_STYLE_LIST, "Active Warrants", string, "Select", "Back"); } case 1: { Dialog_Show(playerid, ChargeName, DIALOG_STYLE_INPUT, "Place Charges", "Please enter the name or ID of the player:", "Submit", "Back"); } case 2: { Dialog_Show(playerid, ViewCharges, DIALOG_STYLE_INPUT, "View Charges", "Please enter the name or ID of the player:", "Submit", "Back"); } } } return 1; } Dialog:ViewCharges(playerid, response, listitem, inputtext[]) { if (GetFactionType(playerid) != FACTION_POLICE || !IsACruiser(GetPlayerVehicleID(playerid))) return 0; if (response) { if (isnull(inputtext) || strlen(inputtext) > 24) return Dialog_Show(playerid, ViewCharges, DIALOG_STYLE_INPUT, "View Charges", "Please enter the name or ID of the player:", "Submit", "Back"); if (IsNumeric(inputtext) && IsPlayerConnected(strval(inputtext))) { ViewCharges(playerid, ReturnName(strval(inputtext))); } else if (!IsNumeric(inputtext)) { ViewCharges(playerid, inputtext); } else { Dialog_Show(playerid, ViewCharges, DIALOG_STYLE_INPUT, "View Charges", "Error: Invalid user specified.\n\nPlease enter the name or ID of the player:", "Submit", "Back"); } } else cmd_mdc(playerid, "\1"); return 1; } Dialog:Locker(playerid, response, listitem, inputtext[]) { new factionid = PlayerData[playerid][pFaction]; if (factionid == -1 || !IsNearFactionLocker(playerid)) return 0; if (response) { static skins[8], string[512]; string[0] = 0; if (FactionData[factionid][factionType] != FACTION_GANG) { switch (listitem) { case 0: { if (!PlayerData[playerid][pOnDuty]) { PlayerData[playerid][pOnDuty] = true; SetPlayerArmour(playerid, 100.0); SetFactionColor(playerid); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has clocked in and is now on duty.", ReturnName(playerid, 0)); } else { PlayerData[playerid][pOnDuty] = false; SetPlayerArmour(playerid, 0.0); SetPlayerColor(playerid, DEFAULT_COLOR); SetPlayerSkin(playerid, PlayerData[playerid][pSkin]); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has clocked out and is now off duty.", ReturnName(playerid, 0)); } } case 1: { SetPlayerArmour(playerid, 100.0); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s reaches into the locker and takes out a vest.", ReturnName(playerid, 0)); } case 2: { for (new i = 0; i < sizeof(skins); i ++) skins[i] = (FactionData[factionid][factionSkins][i]) ? (FactionData[factionid][factionSkins][i]) : (19300); ShowModelSelectionMenu(playerid, "Choose Skin", MODEL_SELECTION_FACTION_SKIN, skins, sizeof(skins), -16.0, 0.0, -55.0); } case 3: { for (new i = 0; i < 10; i ++) { if (FactionData[factionid][factionWeapons][i]) format(string, sizeof(string), "%sWeapon %d: %s\n", string, i + 1, ReturnWeaponName(FactionData[factionid][factionWeapons][i])); else format(string, sizeof(string), "%sEmpty Slot\n", string); } Dialog_Show(playerid, LockerWeapons, DIALOG_STYLE_LIST, "Locker Weapons", string, "Select", "Cancel"); } } } else { switch (listitem) { case 0: { for (new i = 0; i < sizeof(skins); i ++) skins[i] = (FactionData[factionid][factionSkins][i]) ? (FactionData[factionid][factionSkins][i]) : (19300); ShowModelSelectionMenu(playerid, "Choose Skin", MODEL_SELECTION_FACTION_SKIN, skins, sizeof(skins), -16.0, 0.0, -55.0); } case 1: { for (new i = 0; i < 10; i ++) { if (FactionData[factionid][factionWeapons][i] && GetFactionType(playerid) != FACTION_GANG) format(string, sizeof(string), "%sWeapon %d: %s\n", string, i + 1, ReturnWeaponName(FactionData[factionid][factionWeapons][i])); else if (FactionData[factionid][factionWeapons][i] && GetFactionType(playerid) == FACTION_GANG) format(string, sizeof(string), "%sWeapon %d: %s (%d ammo)\n", string, i + 1, ReturnWeaponName(FactionData[factionid][factionWeapons][i]), FactionData[factionid][factionAmmo][i]); else format(string, sizeof(string), "%sEmpty Slot\n", string); } Dialog_Show(playerid, LockerWeapons, DIALOG_STYLE_LIST, "Locker Weapons", string, "Select", "Cancel"); } } } } return 1; } Dialog:LockerWeapons(playerid, response, listitem, inputtext[]) { new factionid = PlayerData[playerid][pFaction]; if (factionid == -1 || !IsNearFactionLocker(playerid)) return 0; if (response) { new weaponid = FactionData[factionid][factionWeapons][listitem], ammo = FactionData[factionid][factionAmmo][listitem]; if (weaponid) { if (PlayerHasWeapon(playerid, weaponid)) return SendErrorMessage(playerid, "You have this weapon equipped already."); GiveWeaponToPlayer(playerid, weaponid, ammo); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s reaches inside the locker and equips a %s.", ReturnName(playerid, 0), ReturnWeaponName(weaponid)); if (GetFactionType(playerid) == FACTION_GANG) { FactionData[factionid][factionWeapons][listitem] = 0; FactionData[factionid][factionAmmo][listitem] = 0; Faction_Save(factionid); } } else { if (GetFactionType(playerid) == FACTION_GANG) { if ((weaponid = GetWeapon(playerid)) == 0) return SendErrorMessage(playerid, "You are not holding any weapon."); FactionData[factionid][factionWeapons][listitem] = weaponid; FactionData[factionid][factionAmmo][listitem] = GetPlayerAmmo(playerid); Faction_Save(factionid); ResetWeapon(playerid, weaponid); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out a %s and stores it in the locker.", ReturnName(playerid, 0), ReturnWeaponName(weaponid)); } else { SendErrorMessage(playerid, "The selected weapon slot is empty."); } } } else { cmd_flocker(playerid, "\1"); } return 1; } Dialog:FactionLocker(playerid, response, listitem, inputtext[]) { if (PlayerData[playerid][pFactionEdit] == -1) return 0; if (response) { switch (listitem) { case 0: { static Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); FactionData[PlayerData[playerid][pFactionEdit]][factionLockerPos][0] = x; FactionData[PlayerData[playerid][pFactionEdit]][factionLockerPos][1] = y; FactionData[PlayerData[playerid][pFactionEdit]][factionLockerPos][2] = z; FactionData[PlayerData[playerid][pFactionEdit]][factionLockerInt] = GetPlayerInterior(playerid); FactionData[PlayerData[playerid][pFactionEdit]][factionLockerWorld] = GetPlayerVirtualWorld(playerid); Faction_Refresh(PlayerData[playerid][pFactionEdit]); Faction_Save(PlayerData[playerid][pFactionEdit]); SendServerMessage(playerid, "You have adjusted the locker position of faction ID: %d.", PlayerData[playerid][pFactionEdit]); } case 1: { static string[512]; string[0] = 0; for (new i = 0; i < 10; i ++) { if (FactionData[PlayerData[playerid][pFactionEdit]][factionWeapons][i]) format(string, sizeof(string), "%sWeapon %d: %s\n", string, i + 1, ReturnWeaponName(FactionData[PlayerData[playerid][pFactionEdit]][factionWeapons][i])); else format(string, sizeof(string), "%sEmpty Slot\n", string); } Dialog_Show(playerid, FactionWeapons, DIALOG_STYLE_LIST, "Locker Weapons", string, "Select", "Cancel"); } } } return 1; } Dialog:FactionWeapons(playerid, response, listitem, inputtext[]) { if (PlayerData[playerid][pFactionEdit] == -1) return 0; if (response) { PlayerData[playerid][pSelectedSlot] = listitem; Dialog_Show(playerid, FactionWeapon, DIALOG_STYLE_LIST, "Edit Weapon", "Set Weapon (%d)\nSet Ammunition (%d)\nClear Slot", "Select", "Cancel", FactionData[PlayerData[playerid][pFactionEdit]][factionWeapons][PlayerData[playerid][pSelectedSlot]], FactionData[PlayerData[playerid][pFactionEdit]][factionAmmo][PlayerData[playerid][pSelectedSlot]]); } return 1; } Dialog:FactionWeapon(playerid, response, listitem, inputtext[]) { if (PlayerData[playerid][pFactionEdit] == -1) return 0; if (response) { switch (listitem) { case 0: Dialog_Show(playerid, FactionWeaponID, DIALOG_STYLE_INPUT, "Set Weapon", "Current Weapon: %s (%d)\n\nPlease enter the new weapon ID for slot %d:", "Submit", "Cancel", ReturnWeaponName(FactionData[PlayerData[playerid][pFactionEdit]][factionWeapons][PlayerData[playerid][pSelectedSlot]]), FactionData[PlayerData[playerid][pFactionEdit]][factionWeapons][PlayerData[playerid][pSelectedSlot]], PlayerData[playerid][pSelectedSlot]); case 1: Dialog_Show(playerid, FactionWeaponAmmo, DIALOG_STYLE_INPUT, "Set Ammunition", "Current Ammo: %d\n\nPlease enter the new ammunition for the weapon in slot %d:", "Submit", "Cancel", FactionData[PlayerData[playerid][pFactionEdit]][factionAmmo][PlayerData[playerid][pSelectedSlot]], PlayerData[playerid][pSelectedSlot]); case 2: { FactionData[PlayerData[playerid][pFactionEdit]][factionWeapons][PlayerData[playerid][pSelectedSlot]] = 0; FactionData[PlayerData[playerid][pFactionEdit]][factionAmmo][PlayerData[playerid][pSelectedSlot]] = 0; Faction_Save(PlayerData[playerid][pFactionEdit]); dialog_FactionLocker(playerid, 1, 1, "\1"); SendServerMessage(playerid, "You have removed the weapon in slot %d.", PlayerData[playerid][pSelectedSlot] + 1); } } } else { dialog_FactionLocker(playerid, 1, 1, "\1"); } return 1; } Dialog:FactionWeaponID(playerid, response, listitem, inputtext[]) { if (PlayerData[playerid][pFactionEdit] == -1) return 0; if (response) { new weaponid = strval(inputtext); if (isnull(inputtext)) return Dialog_Show(playerid, FactionWeaponID, DIALOG_STYLE_INPUT, "Set Weapon", "Current Weapon: %s (%d)\n\nPlease enter the new weapon ID for slot %d:", "Submit", "Cancel", ReturnWeaponName(FactionData[PlayerData[playerid][pFactionEdit]][factionWeapons][PlayerData[playerid][pSelectedSlot]]), FactionData[PlayerData[playerid][pFactionEdit]][factionWeapons][PlayerData[playerid][pSelectedSlot]], PlayerData[playerid][pSelectedSlot]); if (weaponid < 0 || weaponid > 46) return Dialog_Show(playerid, FactionWeaponID, DIALOG_STYLE_INPUT, "Set Weapon", "Error: The weapon ID can't be below 0 or above 46.\n\nCurrent Weapon: %s (%d)\n\nPlease enter the new weapon ID for slot %d:", "Submit", "Cancel", ReturnWeaponName(FactionData[PlayerData[playerid][pFactionEdit]][factionWeapons][PlayerData[playerid][pSelectedSlot]]), FactionData[PlayerData[playerid][pFactionEdit]][factionWeapons][PlayerData[playerid][pSelectedSlot]], PlayerData[playerid][pSelectedSlot]); FactionData[PlayerData[playerid][pFactionEdit]][factionWeapons][PlayerData[playerid][pSelectedSlot]] = weaponid; Faction_Save(PlayerData[playerid][pFactionEdit]); Dialog_Show(playerid, FactionWeapon, DIALOG_STYLE_LIST, "Edit Weapon", "Set Weapon (%d)\nSet Ammunition (%d)\nClear Slot", "Select", "Cancel", FactionData[PlayerData[playerid][pFactionEdit]][factionWeapons][PlayerData[playerid][pSelectedSlot]], FactionData[PlayerData[playerid][pFactionEdit]][factionAmmo][PlayerData[playerid][pSelectedSlot]]); if (weaponid) { SendServerMessage(playerid, "You have set the weapon in slot %d to %s.", PlayerData[playerid][pSelectedSlot] + 1, ReturnWeaponName(weaponid)); } else { SendServerMessage(playerid, "You have removed the weapon in slot %d.", PlayerData[playerid][pSelectedSlot] + 1); } } return 1; } Dialog:FactionWeaponAmmo(playerid, response, listitem, inputtext[]) { if (PlayerData[playerid][pFactionEdit] == -1) return 0; if (response) { new ammo = strval(inputtext); if (isnull(inputtext)) return Dialog_Show(playerid, FactionWeaponAmmo, DIALOG_STYLE_INPUT, "Set Ammunition", "Current Ammo: %d\n\nPlease enter the new ammunition for the weapon in slot %d:", "Submit", "Cancel", FactionData[PlayerData[playerid][pFactionEdit]][factionAmmo][PlayerData[playerid][pSelectedSlot]], PlayerData[playerid][pSelectedSlot]); if (ammo < 1 || ammo > 15000) return Dialog_Show(playerid, FactionWeaponAmmo, DIALOG_STYLE_INPUT, "Set Ammunition", "Error: The ammo can't be below 1 or above 15,000.\n\nCurrent Ammo: %d\n\nPlease enter the new ammunition for the weapon in slot %d:", "Submit", "Cancel", FactionData[PlayerData[playerid][pFactionEdit]][factionAmmo][PlayerData[playerid][pSelectedSlot]], PlayerData[playerid][pSelectedSlot]); FactionData[PlayerData[playerid][pFactionEdit]][factionAmmo][PlayerData[playerid][pSelectedSlot]] = ammo; Faction_Save(PlayerData[playerid][pFactionEdit]); Dialog_Show(playerid, FactionWeapon, DIALOG_STYLE_LIST, "Edit Weapon", "Set Weapon (%d)\nSet Ammunition (%d)\nClear Slot", "Select", "Cancel", FactionData[PlayerData[playerid][pFactionEdit]][factionWeapons][PlayerData[playerid][pSelectedSlot]], FactionData[PlayerData[playerid][pFactionEdit]][factionAmmo][PlayerData[playerid][pSelectedSlot]]); SendServerMessage(playerid, "You have set the ammunition in slot %d to %d.", PlayerData[playerid][pSelectedSlot] + 1, ammo); } return 1; } Dialog:FactionSkin(playerid, response, listitem, inputtext[]) { if (PlayerData[playerid][pFactionEdit] == -1) return 0; if (response) { static skins[299]; switch (listitem) { case 0: Dialog_Show(playerid, FactionModel, DIALOG_STYLE_INPUT, "Add by Model ID", "Please enter the model ID of the skin below (0-299):", "Add", "Cancel"); case 1: { for (new i = 0; i < sizeof(skins); i ++) skins[i] = i + 1; ShowModelSelectionMenu(playerid, "Add Skin", MODEL_SELECTION_ADD_SKIN, skins, sizeof(skins), -16.0, 0.0, -55.0); } case 2: { FactionData[PlayerData[playerid][pFactionEdit]][factionSkins][PlayerData[playerid][pSelectedSlot]] = 0; Faction_Save(PlayerData[playerid][pFactionEdit]); SendServerMessage(playerid, "You have removed the skin ID in slot %d.", PlayerData[playerid][pSelectedSlot] + 1); } } } return 1; } Dialog:FactionModel(playerid, response, listitem, inputtext[]) { if (PlayerData[playerid][pFactionEdit] == -1) return 0; if (response) { new skin = strval(inputtext); if (isnull(inputtext)) return Dialog_Show(playerid, FactionModel, DIALOG_STYLE_INPUT, "Add by Model ID", "Please enter the model ID of the skin below (0-299):", "Add", "Cancel"); if (skin < 0 || skin > 299) return Dialog_Show(playerid, FactionModel, DIALOG_STYLE_INPUT, "Add by Model ID", "Error: The skin ID can't be below 0 or above 299.\n\nPlease enter the model ID of the skin below (0-299):", "Add", "Cancel"); FactionData[PlayerData[playerid][pFactionEdit]][factionSkins][PlayerData[playerid][pSelectedSlot]] = skin; Faction_Save(PlayerData[playerid][pFactionEdit]); if (skin) { SendServerMessage(playerid, "You have set the skin ID in slot %d to %d.", PlayerData[playerid][pSelectedSlot] + 1, skin); } else { SendServerMessage(playerid, "You have removed the skin ID in slot %d.", PlayerData[playerid][pSelectedSlot] + 1); } } return 1; } Dialog:JobList(playerid, response, listitem, inputtext[]) { /* case 1: str = "Courier"; case 2: str = "Mechanic"; case 3: str = "Taxi Driver"; case 4: str = "Cargo Unloader"; case 5: str = "Miner"; case 6: str = "Food Vendor"; case 7: str = "Garbage Man"; case 8: str = "Weapon Smuggler"; */ if (response) { switch (listitem) { case 0: Dialog_Show(playerid, JobHelp, DIALOG_STYLE_MSGBOX, "Courier Job", "{FFFFFF}The {FF6347}Courier{FFFFFF} job allows players to deliver products to businesses.\nUse {FF6347}/startdelivery{FFFFFF} to begin loading and {FF6347}/unload{FFFFFF} to unload the goods.", "Close", "Back"); case 1: Dialog_Show(playerid, JobHelp, DIALOG_STYLE_MSGBOX, "Mechanic Job", "{FFFFFF}The {FF6347}Mechanic{FFFFFF} job allows players to repair totalled vehicles.\nUse {FF6347}/hood{FFFFFF} to open the hood and {FF6347}/repair{FFFFFF} to repair the vehicle.", "Close", "Back"); case 2: Dialog_Show(playerid, JobHelp, DIALOG_STYLE_MSGBOX, "Taxi Driver Job", "{FFFFFF}The {FF6347}Taxi Driver{FFFFFF} job allows players to transport other players.\nUse {FF6347}/taxi{FFFFFF} whilst inside a taxi cab to go on taxi duty.", "Close", "Back"); case 3: Dialog_Show(playerid, JobHelp, DIALOG_STYLE_MSGBOX, "Cargo Unloader Job", "{FFFFFF}The {FF6347}Cargo Unloader{FFFFFF} job allows players to operate a forklift to move crates.\nUse {FF6347}/loadcrate{FFFFFF} to load a crate and deliver it to the {FF6347}marker{FFFFFF}.", "Close", "Back"); case 4: Dialog_Show(playerid, JobHelp, DIALOG_STYLE_MSGBOX, "Miner Job", "{FFFFFF}The {FF6347}Miner{FFFFFF} job allows players to mine rocks from the ground.\nUse {FF6347}/mine{FFFFFF} to begin mining and {FF6347}LMB{FFFFFF} to start digging.", "Close", "Back"); case 5: Dialog_Show(playerid, JobHelp, DIALOG_STYLE_MSGBOX, "Food Vendor Job", "{FFFFFF}The {FF6347}Food Vendor{FFFFFF} job allows players to sell food items to other players.\nUse {FF6347}/sellfood{FFFFFF} whilst inside a food truck to sell a food item.", "Close", "Back"); case 6: Dialog_Show(playerid, JobHelp, DIALOG_STYLE_MSGBOX, "Garbage Man Job", "{FFFFFF}The {FF6347}Garbage Man{FFFFFF} job allows players to deliver trash in return for money.\nUse {FF6347}/takebag{FFFFFF} whilst near a garbage bin to load a bag of garbage.", "Close", "Back"); case 7: Dialog_Show(playerid, JobHelp, DIALOG_STYLE_MSGBOX, "Package Sorter Job", "{FFFFFF}The {FF6347}Package Sorter{FFFFFF} job allows players to sort packages for money.\nUse {FF6347}/sorting{FFFFFF} at the required location to begin sorting.", "Close", "Back"); case 8: Dialog_Show(playerid, JobHelp, DIALOG_STYLE_MSGBOX, "Weapon Smuggler Job", "{FFFFFF}The {FF6347}Weapon Smuggler{FFFFFF} job allows players to smuggle weapons from weapon crates.\nUse {FF6347}/craftparts{FFFFFF} whilst carrying a weapon crate to smuggle the parts.", "Close", "Back"); } } return 1; } Dialog:JobHelp(playerid, response, listitem, inputtext[]) { if (!response) cmd_joblist(playerid, "\1"); return 1; } Dialog:Crates(playerid, response, listitem, inputtext[]) { if (response) { if (PlayerData[playerid][pCarryCrate] != -1) return SendErrorMessage(playerid, "You are already carrying a crate."); new id = strfind(inputtext, "#"); if (id != -1) { id = strval(inputtext[id + 1]); CrateData[id][crateVehicle] = INVALID_VEHICLE_ID; PlayerData[playerid][pCarryCrate] = id; SetPlayerAttachedObject(playerid, 4, 964, 1, -0.157020, 0.413313, 0.000000, 0.000000, 88.000000, 180.000000, 0.500000, 0.500000, 0.500000); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CARRY); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes a crate out of the vehicle.", ReturnName(playerid, 0)); SendServerMessage(playerid, "You have taken a %s crate out of the vehicle.", Crate_GetType(CrateData[id][crateType])); } } return 1; } Dialog:AddVehicleModel(playerid, response, listitem, inputtext[]) { if (response) { new id = PlayerData[playerid][pDealership]; if (id != -1 && BusinessData[id][bizExists] && BusinessData[id][bizType] == 5) { if (isnull(inputtext)) return Dialog_Show(playerid, AddVehicleModel, DIALOG_STYLE_INPUT, "Add Vehicle", "Please enter the name or the ID of the vehicle model:", "Add", "Cancel"); new model = GetVehicleModelByName(inputtext); if (!model) return Dialog_Show(playerid, AddVehicleModel, DIALOG_STYLE_INPUT, "Add Vehicle", "Error: Invalid model specified.\n\nPlease enter the name or the ID of the vehicle model:", "Add", "Cancel"); for (new i = 0; i != MAX_DEALERSHIP_CARS; i ++) { if (DealershipCars[id][i][vehModel] == model) return Dialog_Show(playerid, AddVehicleModel, DIALOG_STYLE_INPUT, "Add Vehicle", "Error: This model is already sold at this dealership.\n\nPlease enter the name or the ID of the vehicle model:", "Add", "Cancel"); } PlayerData[playerid][pDealerCar] = model; Dialog_Show(playerid, DealerCarPrice, DIALOG_STYLE_INPUT, "Enter Price", "Please enter a price for '%s':", "Submit", "Cancel", ReturnVehicleModelName(PlayerData[playerid][pDealerCar])); } } return 1; } Dialog:AddVehicle(playerid, response, listitem, inputtext[]) { if (response) { new id = PlayerData[playerid][pDealership]; if (id != -1 && BusinessData[id][bizExists] && BusinessData[id][bizType] == 5) { if (!listitem) { Dialog_Show(playerid, AddVehicleModel, DIALOG_STYLE_INPUT, "Add Vehicle", "Please enter the name or the ID of the vehicle model:", "Add", "Cancel"); } else { static cars[212]; for (new i = 0; i < sizeof(cars); i ++) cars[i] = i + 400; ShowModelSelectionMenu(playerid, "Add Vehicle", MODEL_SELECTION_DEALER_ADD, cars, sizeof(cars), -16.0, 0.0, -55.0); } } } return 1; } Dialog:EnterNumber(playerid, response, listitem, inputtext[]) { if (response) { static name[32], string[128]; strunpack(name, PlayerData[playerid][pEditingItem]); if (isnull(inputtext) || !IsNumeric(inputtext)) return Dialog_Show(playerid, EnterNumber, DIALOG_STYLE_INPUT, "Contact Number", "Contact Name: %s\n\nPlease enter the phone number for this contact:", "Submit", "Back", name); for (new i = 0; i != MAX_CONTACTS; i ++) { if (!ContactData[playerid][i][contactExists]) { ContactData[playerid][i][contactExists] = true; ContactData[playerid][i][contactNumber] = strval(inputtext); format(ContactData[playerid][i][contactName], 32, name); format(string, sizeof(string), "INSERT INTO `contacts` (`ID`, `contactName`, `contactNumber`) VALUES('%d', '%s', '%d')", PlayerData[playerid][pID], SQL_ReturnEscaped(name), ContactData[playerid][i][contactNumber]); mysql_tquery(g_iHandle, string, "OnContactAdd", "dd", playerid, i); SendServerMessage(playerid, "You have added \"%s\" to your contacts.", name); return 1; } } SendErrorMessage(playerid, "There is no room left for anymore contacts."); } else { ShowContacts(playerid); } return 1; } Dialog:NewContact(playerid, response, listitem, inputtext[]) { if (response) { if (isnull(inputtext)) return Dialog_Show(playerid, NewContact, DIALOG_STYLE_INPUT, "New Contact", "Error: Please enter a contact name.\n\nPlease enter the name of the contact below:", "Submit", "Back"); if (strlen(inputtext) > 32) return Dialog_Show(playerid, NewContact, DIALOG_STYLE_INPUT, "New Contact", "Error: The contact name can't exceed 32 characters.\n\nPlease enter the name of the contact below:", "Submit", "Back"); strpack(PlayerData[playerid][pEditingItem], inputtext, 32); Dialog_Show(playerid, EnterNumber, DIALOG_STYLE_INPUT, "Contact Number", "Contact Name: %s\n\nPlease enter the phone number for this contact:", "Submit", "Back", inputtext); } else { ShowContacts(playerid); } return 1; } Dialog:ContactInfo(playerid, response, listitem, inputtext[]) { if (response) { new id = PlayerData[playerid][pContact], string[72]; switch (listitem) { case 0: { format(string, 16, "%d", ContactData[playerid][id][contactNumber]); cmd_call(playerid, string); } case 1: { format(string, sizeof(string), "DELETE FROM `contacts` WHERE `ID` = '%d' AND `contactID` = '%d'", PlayerData[playerid][pID], ContactData[playerid][id][contactID]); mysql_tquery(g_iHandle, string); SendServerMessage(playerid, "You have deleted \"%s\" from your contacts.", ContactData[playerid][id][contactName]); ContactData[playerid][id][contactExists] = false; ContactData[playerid][id][contactNumber] = 0; ContactData[playerid][id][contactID] = 0; ShowContacts(playerid); } } } else { ShowContacts(playerid); } return 1; } Dialog:Contacts(playerid, response, listitem, inputtext[]) { if (response) { if (!listitem) { Dialog_Show(playerid, NewContact, DIALOG_STYLE_INPUT, "New Contact", "Please enter the name of the contact below:", "Submit", "Back"); } else { PlayerData[playerid][pContact] = ListedContacts[playerid][listitem - 1]; Dialog_Show(playerid, ContactInfo, DIALOG_STYLE_LIST, ContactData[playerid][PlayerData[playerid][pContact]][contactName], "Call Contact\nDelete Contact", "Select", "Back"); } } else { cmd_phone(playerid, "\1"); } for (new i = 0; i != MAX_CONTACTS; i ++) { ListedContacts[playerid][i] = -1; } return 1; } Dialog:DialNumber(playerid, response, listitem, inputtext[]) { if (response) { new string[16]; if (isnull(inputtext) || !IsNumeric(inputtext)) return Dialog_Show(playerid, DialNumber, DIALOG_STYLE_INPUT, "Dial Number", "Please enter the number that you wish to dial below:", "Dial", "Back"); format(string, 16, "%d", strval(inputtext)); cmd_call(playerid, string); } else { cmd_phone(playerid, "\1"); } return 1; } Dialog:SendText(playerid, response, listitem, inputtext[]) { if (response) { new number = strval(inputtext); if (isnull(inputtext) || !IsNumeric(inputtext)) return Dialog_Show(playerid, SendText, DIALOG_STYLE_INPUT, "Send Text Message", "Please enter the number that you wish to send a text message to:", "Dial", "Back"); if (GetNumberOwner(number) == INVALID_PLAYER_ID) return Dialog_Show(playerid, SendText, DIALOG_STYLE_INPUT, "Send Text Message", "Error: That number is not online right now.\n\nPlease enter the number that you wish to send a text message to:", "Dial", "Back"); PlayerData[playerid][pContact] = GetNumberOwner(number); Dialog_Show(playerid, TextMessage, DIALOG_STYLE_INPUT, "Text Message", "Please enter the message to send to %s:", "Send", "Back", ReturnName(PlayerData[playerid][pContact], 0)); } else { cmd_phone(playerid, "\1"); } return 1; } Dialog:TextMessage(playerid, response, listitem, inputtext[]) { if (response) { if (isnull(inputtext)) return Dialog_Show(playerid, TextMessage, DIALOG_STYLE_INPUT, "Text Message", "Error: Please enter a message to send.\n\nPlease enter the message to send to %s:", "Send", "Back", ReturnName(PlayerData[playerid][pContact], 0)); new targetid = PlayerData[playerid][pContact]; if (!IsPlayerConnected(targetid) || !PlayerData[targetid][pPhone]) return SendErrorMessage(playerid, "The specified phone number went offline."); GiveMoney(playerid, -1); ShowPlayerFooter(playerid, "You've been ~r~charged~w~ $1 to send a text."); SendClientMessageEx(targetid, COLOR_YELLOW, "[TEXT]: %s - %s (%d)", inputtext, ReturnName(playerid, 0), PlayerData[playerid][pPhone]); SendClientMessageEx(playerid, COLOR_YELLOW, "[TEXT]: %s - %s (%d)", inputtext, ReturnName(playerid, 0), PlayerData[playerid][pPhone]); PlayerPlaySoundEx(targetid, 21001); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out their phone and sends a text.", ReturnName(playerid, 0)); } else { Dialog_Show(playerid, SendText, DIALOG_STYLE_INPUT, "Send Text Message", "Please enter the number that you wish to send a text message to:", "Submit", "Back"); } return 1; } Dialog:MyPhone(playerid, response, listitem, inputtext[]) { if (response) { switch (listitem) { case 0: { if (PlayerData[playerid][pPhoneOff]) return SendErrorMessage(playerid, "Your phone must be powered on."); Dialog_Show(playerid, DialNumber, DIALOG_STYLE_INPUT, "Dial Number", "Please enter the number that you wish to dial below:", "Dial", "Back"); } case 1: { if (PlayerData[playerid][pPhoneOff]) return SendErrorMessage(playerid, "Your phone must be powered on."); ShowContacts(playerid); } case 2: { if (PlayerData[playerid][pPhoneOff]) return SendErrorMessage(playerid, "Your phone must be powered on."); Dialog_Show(playerid, SendText, DIALOG_STYLE_INPUT, "Send Text Message", "Please enter the number that you wish to send a text message to:", "Dial", "Back"); } case 3: { if (!PlayerData[playerid][pPhoneOff]) { if (PlayerData[playerid][pCallLine] != INVALID_PLAYER_ID) { CancelCall(playerid); } PlayerData[playerid][pPhoneOff] = 1; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has powered off their cellphone.", ReturnName(playerid, 0)); } else { PlayerData[playerid][pPhoneOff] = 0; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has powered on their cellphone.", ReturnName(playerid, 0)); } } } } return 1; } Dialog:ListedFurniture(playerid, response, listitem, inputtext[]) { if (response) { new id = House_Inside(playerid); if (id != -1 && House_IsOwner(playerid, id)) { PlayerData[playerid][pEditFurniture] = ListedFurniture[playerid][listitem]; Dialog_Show(playerid, FurnitureList, DIALOG_STYLE_LIST, FurnitureData[PlayerData[playerid][pEditFurniture]][furnitureName], "Edit Position\nPickup Furniture\nDestroy Furniture", "Select", "Cancel"); } } for (new i = 0; i != MAX_FURNITURE; i ++) { ListedFurniture[playerid][i] = -1; } return 1; } Dialog:FurnitureList(playerid, response, listitem, inputtext[]) { if (response) { new id = House_Inside(playerid); if (id != -1 && House_IsOwner(playerid, id)) { switch (listitem) { case 0: { EditDynamicObject(playerid, FurnitureData[PlayerData[playerid][pEditFurniture]][furnitureObject]); SendServerMessage(playerid, "You are now editing the position of item \"%s\".", FurnitureData[PlayerData[playerid][pEditFurniture]][furnitureName]); } case 1: { new item = Inventory_Add(playerid, FurnitureData[PlayerData[playerid][pEditFurniture]][furnitureName], FurnitureData[PlayerData[playerid][pEditFurniture]][furnitureModel]); if (item == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has picked up \"%s\".", ReturnName(playerid, 0), FurnitureData[PlayerData[playerid][pEditFurniture]][furnitureName]); SendServerMessage(playerid, "You have picked up your \"%s\". The item was added to your inventory.", FurnitureData[PlayerData[playerid][pEditFurniture]][furnitureName]); Furniture_Delete(PlayerData[playerid][pEditFurniture]); CancelEdit(playerid); PlayerData[playerid][pEditFurniture] = -1; } case 2: { Furniture_Delete(PlayerData[playerid][pEditFurniture]); SendServerMessage(playerid, "You have destroyed furniture \"%s\".", FurnitureData[PlayerData[playerid][pEditFurniture]][furnitureName]); CancelEdit(playerid); PlayerData[playerid][pEditFurniture] = -1; } } } else { PlayerData[playerid][pEditFurniture] = -1; } } else { PlayerData[playerid][pEditFurniture] = -1; } return 1; } Dialog:Trunk(playerid, response, listitem, inputtext[]) { new carid = Car_Nearest(playerid); if (CarData[carid][carImpounded] != -1) return SendErrorMessage(playerid, "This vehicle is impounded and you can't use it."); if (carid != -1 && !CarData[carid][carLocked]) { if (response) { if (!CarData[carid][carWeapons][listitem]) { if (!GetWeapon(playerid)) return SendErrorMessage(playerid, "You aren't holding any weapon."); if (GetWeapon(playerid) == 23 && PlayerData[playerid][pTazer]) return SendErrorMessage(playerid, "You can't store a tazer into your trunk."); if (GetWeapon(playerid) == 25 && PlayerData[playerid][pBeanBag]) return SendErrorMessage(playerid, "You can't store a beanbag shotgun into your trunk."); if (!Car_IsOwner(playerid, carid) && GetFactionType(playerid) == FACTION_POLICE) return SendErrorMessage(playerid, "You can't store weapons since you're a police officer."); CarData[carid][carWeapons][listitem] = GetWeapon(playerid); CarData[carid][carAmmo][listitem] = GetPlayerAmmo(playerid); ResetWeapon(playerid, CarData[carid][carWeapons][listitem]); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s stored a %s into the trunk.", ReturnName(playerid, 0), ReturnWeaponName(CarData[carid][carWeapons][listitem])); Car_Save(carid); Car_WeaponStorage(playerid, carid); } else { GiveWeaponToPlayer(playerid, CarData[carid][carWeapons][listitem], CarData[carid][carAmmo][listitem]); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes a %s from the trunk.", ReturnName(playerid, 0), ReturnWeaponName(CarData[carid][carWeapons][listitem])); CarData[carid][carWeapons][listitem] = 0; CarData[carid][carAmmo][listitem] = 0; Car_Save(carid); Car_WeaponStorage(playerid, carid); } } else { Car_ShowTrunk(playerid, carid); } } return 1; } Dialog:ConfirmCarBuy(playerid, response, listitem, inputtext[]) { if (response) { new bizid = Business_Inside(playerid), carid = PlayerData[playerid][pDealerCar], price = DealershipCars[bizid][carid][vehPrice]; if (bizid != -1 && BusinessData[bizid][bizExists] && BusinessData[bizid][bizType] == 5) { if (GetMoney(playerid) < price) return SendErrorMessage(playerid, "You have insufficient funds for the purchase."); if (Car_GetCount(playerid) >= MAX_OWNABLE_CARS) return SendErrorMessage(playerid, "You already have %d vehicles (server limit).", MAX_OWNABLE_CARS); new id = Car_Create(PlayerData[playerid][pID], DealershipCars[bizid][carid][vehModel], BusinessData[bizid][bizSpawn][0], BusinessData[bizid][bizSpawn][1], BusinessData[bizid][bizSpawn][2], BusinessData[bizid][bizSpawn][3], 1, 1); if (id != -1) { Tax_AddPercent(price); BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); SendServerMessage(playerid, "You have bought a %s for %s!", ReturnVehicleModelName(DealershipCars[bizid][carid][vehModel]), FormatNumber(price)); GiveMoney(playerid, -price); ShowPlayerFooter(playerid, "~w~Vehicle ~p~purchased!"); Log_Write("logs/car_log.txt", "[%s] %s has purchased a %s for %s.", ReturnDate(), ReturnName(playerid, 0), ReturnVehicleModelName(DealershipCars[bizid][carid][vehModel]), FormatNumber(price)); } } } return 1; } Dialog:DealerCarPrice(playerid, response, listitem, inputtext[]) { if (response) { new id = PlayerData[playerid][pDealership]; if (id != -1 && BusinessData[id][bizExists] && BusinessData[id][bizType] == 5) { if (isnull(inputtext) || strval(inputtext) < 1) return Dialog_Show(playerid, DealerCarPrice, DIALOG_STYLE_INPUT, "Enter Price", "Please enter a price for '%s':", "Submit", "Cancel", ReturnVehicleModelName(PlayerData[playerid][pDealerCar])); Business_AddVehicle(id, PlayerData[playerid][pDealerCar], strval(inputtext)); Business_EditCars(playerid, id); SendServerMessage(playerid, "You have added a '%s' to the dealership.", ReturnVehicleModelName(PlayerData[playerid][pDealerCar])); return 1; } } return 1; } Dialog:CarPrice(playerid, response, listitem, inputtext[]) { if (response) { new id = PlayerData[playerid][pDealership]; if (id != -1 && BusinessData[id][bizExists] && BusinessData[id][bizType] == 5) { if (isnull(inputtext) || strval(inputtext) < 1) return Dialog_Show(playerid, CarPrice, DIALOG_STYLE_INPUT, "Set Price", "The current price for '%s' is %s.\n\nPlease enter the new price for this vehicle model below:", "Submit", "Cancel", ReturnVehicleModelName(DealershipCars[id][PlayerData[playerid][pDealerCar]][vehModel]), FormatNumber(DealershipCars[id][PlayerData[playerid][pDealerCar]][vehPrice])); new string[128]; DealershipCars[id][PlayerData[playerid][pDealerCar]][vehPrice] = strval(inputtext); format(string, sizeof(string), "UPDATE `dealervehicles` SET `vehPrice` = '%d' WHERE `ID` = '%d' AND `vehID` = '%d'", strval(inputtext), BusinessData[id][bizID], DealershipCars[id][PlayerData[playerid][pDealerCar]][vehID]); mysql_tquery(g_iHandle, string); SendServerMessage(playerid, "You have set the price of '%s' to %s.", ReturnVehicleModelName(DealershipCars[id][PlayerData[playerid][pDealerCar]][vehModel]), FormatNumber(DealershipCars[id][PlayerData[playerid][pDealerCar]][vehPrice])); Business_EditCars(playerid, id); } return 1; } return 1; } Dialog:CarOptions(playerid, response, listitem, inputtext[]) { if (response) { new id = PlayerData[playerid][pDealership]; if (id != -1 && BusinessData[id][bizExists] && BusinessData[id][bizType] == 5) { if (listitem == 0) { Dialog_Show(playerid, CarPrice, DIALOG_STYLE_INPUT, "Set Price", "The current price for '%s' is %s.\n\nPlease enter the new price for this vehicle model below:", "Submit", "Cancel", ReturnVehicleModelName(DealershipCars[id][PlayerData[playerid][pDealerCar]][vehModel]), FormatNumber(DealershipCars[id][PlayerData[playerid][pDealerCar]][vehPrice])); } else if (listitem == 1) { new model = DealershipCars[id][PlayerData[playerid][pDealerCar]][vehModel]; Business_RemoveVehicle(id, model); SendServerMessage(playerid, "You have removed the '%s' from the dealership.", ReturnVehicleModelName(model)); Business_EditCars(playerid, id); } } } return 1; } Dialog:BankAccount(playerid, response, listitem, inputtext[]) { if (!IsPlayerInBank(playerid) && ATM_Nearest(playerid) == -1) return 0; if (response) { switch (listitem) { case 0: { Dialog_Show(playerid, Withdraw, DIALOG_STYLE_INPUT, "Withdraw funds", "Your bank account's balance: %s\n\nPlease enter the amount of money you wish to withdraw:", "Withdraw", "Back", FormatNumber(PlayerData[playerid][pBankMoney])); } case 1: { Dialog_Show(playerid, Deposit, DIALOG_STYLE_INPUT, "Deposit funds", "Your bank account's balance: %s\n\nPlease enter the amount of money you wish to deposit:", "Deposit", "Back", FormatNumber(PlayerData[playerid][pBankMoney])); } case 2: { Dialog_Show(playerid, Transfer, DIALOG_STYLE_INPUT, "Make a transfer", "Your bank account's balance: %s\n\nPlease enter the name or ID of the player below:", "Continue", "Back", FormatNumber(PlayerData[playerid][pBankMoney])); } } } else { Dialog_Show(playerid, Bank, DIALOG_STYLE_LIST, "Bank Account", "Bank Balance: %s\nSavings Balance: %s", "Select", "Cancel", FormatNumber(PlayerData[playerid][pBankMoney]), FormatNumber(PlayerData[playerid][pSavings])); } return 1; } Dialog:Transfer(playerid, response, listitem, inputtext[]) { if (!IsPlayerInBank(playerid) && ATM_Nearest(playerid) == -1) return 0; if (response) { static userid; if (sscanf(inputtext, "u", userid)) return Dialog_Show(playerid, Transfer, DIALOG_STYLE_INPUT, "Make a transfer", "Your bank account's balance: %s\n\nPlease enter the name or ID of the player below:", "Continue", "Back", FormatNumber(PlayerData[playerid][pBankMoney])); if (userid == INVALID_PLAYER_ID) return Dialog_Show(playerid, Transfer, DIALOG_STYLE_INPUT, "Make a transfer", "Error: Invalid player specified.\n\nYour bank account's balance: %s\n\nPlease enter the name or ID of the player below:", "Continue", "Back", FormatNumber(PlayerData[playerid][pBankMoney])); if (userid == playerid) return Dialog_Show(playerid, Transfer, DIALOG_STYLE_INPUT, "Make a transfer", "Error: You can't transfer funds to yourself.\n\nYour bank account's balance: %s\n\nPlease enter the name or ID of the player below:", "Continue", "Back", FormatNumber(PlayerData[playerid][pBankMoney])); PlayerData[playerid][pTransfer] = userid; Dialog_Show(playerid, TransferCash, DIALOG_STYLE_INPUT, "Make a transfer", "Your bank account's balance: %s\n\nPlease enter the amount of money to transfer to %s:", "Continue", "Back", FormatNumber(PlayerData[playerid][pBankMoney]), ReturnName(PlayerData[playerid][pTransfer], 0)); } else { Dialog_Show(playerid, BankAccount, DIALOG_STYLE_LIST, "Bank Account", "Withdraw funds\nDeposit funds\nMake a transfer", "Select", "Back"); } return 1; } Dialog:TransferCash(playerid, response, listitem, inputtext[]) { if (!IsPlayerInBank(playerid) && ATM_Nearest(playerid) == -1) return 0; if (response) { new amount = strval(inputtext); if (isnull(inputtext)) return Dialog_Show(playerid, TransferCash, DIALOG_STYLE_INPUT, "Make a transfer", "Your bank account's balance: %s\n\nPlease enter the amount of money to transfer to %s:", "Continue", "Back", FormatNumber(PlayerData[playerid][pBankMoney]), ReturnName(PlayerData[playerid][pTransfer], 0)); if (amount < 1 || amount > PlayerData[playerid][pBankMoney]) return Dialog_Show(playerid, TransferCash, DIALOG_STYLE_INPUT, "Make a transfer", "Error: Insufficient funds!\n\nYour bank account's balance: %s\n\nPlease enter the amount of money to transfer to %s:", "Continue", "Back", FormatNumber(PlayerData[playerid][pBankMoney]), ReturnName(PlayerData[playerid][pTransfer], 0)); if (!strcmp(PlayerData[playerid][pIP], PlayerData[PlayerData[playerid][pTransfer]][pIP])) { SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s (%s) has transferred %s to %s (%s).", ReturnName(playerid, 0), PlayerData[playerid][pIP], FormatNumber(amount), ReturnName(PlayerData[playerid][pTransfer], 0), PlayerData[playerid][pIP]); } PlayerData[playerid][pBankMoney] -= amount; PlayerData[PlayerData[playerid][pTransfer]][pBankMoney] += amount; SendServerMessage(playerid, "You have transferred %s to %s's bank account.", FormatNumber(amount), ReturnName(PlayerData[playerid][pTransfer], 0)); SendServerMessage(PlayerData[playerid][pTransfer], "%s has transferred %s into your bank account.", ReturnName(playerid, 0), FormatNumber(amount)); Dialog_Show(playerid, BankAccount, DIALOG_STYLE_LIST, "Bank Account", "Withdraw funds\nDeposit funds\nMake a transfer", "Select", "Back"); Log_Write("logs/transfer_log.txt", "[%s] %s (%s) has transferred %s to %s (%s).", ReturnDate(), ReturnName(playerid), PlayerData[playerid][pIP], FormatNumber(amount), ReturnName(PlayerData[playerid][pTransfer]), PlayerData[PlayerData[playerid][pTransfer]][pIP]); } else { Dialog_Show(playerid, BankAccount, DIALOG_STYLE_LIST, "Bank Account", "Withdraw funds\nDeposit funds\nMake a transfer", "Select", "Back"); } return 1; } Dialog:Savings(playerid, response, listitem, inputtext[]) { if (!IsPlayerInBank(playerid) && ATM_Nearest(playerid) == -1) return 0; if (response) { switch (listitem) { case 0: { Dialog_Show(playerid, SavingsWithdraw, DIALOG_STYLE_INPUT, "Withdraw funds", "Your savings account's balance: %s\n\nPlease enter the amount of money you wish to withdraw:", "Withdraw", "Back", FormatNumber(PlayerData[playerid][pSavings])); } case 1: { Dialog_Show(playerid, SavingsDeposit, DIALOG_STYLE_INPUT, "Deposit funds", "Your savings account's balance: %s\n\nPlease enter the amount of money you wish to deposit:", "Deposit", "Back", FormatNumber(PlayerData[playerid][pSavings])); } } } else { Dialog_Show(playerid, Bank, DIALOG_STYLE_LIST, "Bank Account", "Bank Balance: %s\nSavings Balance: %s", "Select", "Cancel", FormatNumber(PlayerData[playerid][pBankMoney]), FormatNumber(PlayerData[playerid][pSavings])); } return 1; } Dialog:Withdraw(playerid, response, listitem, inputtext[]) { if (!IsPlayerInBank(playerid) && ATM_Nearest(playerid) == -1) return 0; if (response) { new amount = strval(inputtext); if (isnull(inputtext)) return Dialog_Show(playerid, Withdraw, DIALOG_STYLE_INPUT, "Withdraw funds", "Your bank account's balance: %s\n\nPlease enter the amount of money you wish to withdraw:", "Withdraw", "Back", FormatNumber(PlayerData[playerid][pBankMoney])); if (amount < 1 || amount > PlayerData[playerid][pBankMoney]) return Dialog_Show(playerid, Withdraw, DIALOG_STYLE_INPUT, "Withdraw funds", "Error: Insufficient funds!\n\nYour bank account's balance: %s\n\nPlease enter the amount of money you wish to withdraw:", "Withdraw", "Back", FormatNumber(PlayerData[playerid][pBankMoney])); PlayerData[playerid][pBankMoney] -= amount; GiveMoney(playerid, amount); SendServerMessage(playerid, "You have withdrawn %s from your bank account.", FormatNumber(amount)); Dialog_Show(playerid, Withdraw, DIALOG_STYLE_INPUT, "Withdraw funds", "Your bank account's balance: %s\n\nPlease enter the amount of money you wish to withdraw:", "Withdraw", "Back", FormatNumber(PlayerData[playerid][pBankMoney])); } else { Dialog_Show(playerid, BankAccount, DIALOG_STYLE_LIST, "Bank Account", "Withdraw funds\nDeposit funds\nMake a transfer", "Select", "Back"); } return 1; } Dialog:Deposit(playerid, response, listitem, inputtext[]) { if (!IsPlayerInBank(playerid) && ATM_Nearest(playerid) == -1) return 0; if (response) { new amount = strval(inputtext); if (isnull(inputtext)) return Dialog_Show(playerid, Deposit, DIALOG_STYLE_INPUT, "Deposit funds", "Your bank account's balance: %s\n\nPlease enter the amount of money you wish to deposit:", "Deposit", "Back", FormatNumber(PlayerData[playerid][pBankMoney])); if (amount < 1 || amount > GetMoney(playerid)) return Dialog_Show(playerid, Deposit, DIALOG_STYLE_INPUT, "Deposit funds", "Error: You don't have that much.\n\nYour bank account's balance: %s\n\nPlease enter the amount of money you wish to deposit:", "Deposit", "Back", FormatNumber(PlayerData[playerid][pBankMoney])); PlayerData[playerid][pBankMoney] += amount; GiveMoney(playerid, -amount); SendServerMessage(playerid, "You have deposited %s into your bank account.", FormatNumber(amount)); Dialog_Show(playerid, Deposit, DIALOG_STYLE_INPUT, "Deposit funds", "Your bank account's balance: %s\n\nPlease enter the amount of money you wish to deposit:", "Deposit", "Back", FormatNumber(PlayerData[playerid][pBankMoney])); } else { Dialog_Show(playerid, BankAccount, DIALOG_STYLE_LIST, "Bank Account", "Withdraw funds\nDeposit funds\nMake a transfer", "Select", "Back"); } return 1; } Dialog:SavingsWithdraw(playerid, response, listitem, inputtext[]) { if (!IsPlayerInBank(playerid) && ATM_Nearest(playerid) == -1) return 0; if (response) { new amount = strval(inputtext); if (isnull(inputtext)) return Dialog_Show(playerid, SavingsWithdraw, DIALOG_STYLE_INPUT, "Withdraw funds", "Your savings account's balance: %s\n\nPlease enter the amount of money you wish to withdraw:", "Withdraw", "Back", FormatNumber(PlayerData[playerid][pSavings])); if (amount < 1 || amount > PlayerData[playerid][pSavings]) return Dialog_Show(playerid, SavingsWithdraw, DIALOG_STYLE_INPUT, "Withdraw funds", "Error: Insufficient funds!\n\nYour savings account's balance: %s\n\nPlease enter the amount of money you wish to withdraw:", "Withdraw", "Back", FormatNumber(PlayerData[playerid][pSavings])); PlayerData[playerid][pSavings] -= amount; GiveMoney(playerid, amount); SendServerMessage(playerid, "You have withdrawn %s from your savings account.", FormatNumber(amount)); Dialog_Show(playerid, SavingsWithdraw, DIALOG_STYLE_INPUT, "Withdraw funds", "Your savings account's balance: %s\n\nPlease enter the amount of money you wish to withdraw:", "Withdraw", "Back", FormatNumber(PlayerData[playerid][pSavings])); } else { Dialog_Show(playerid, Savings, DIALOG_STYLE_LIST, "Savings Account", "Withdraw funds\nDeposit funds", "Select", "Back"); } return 1; } Dialog:SavingsDeposit(playerid, response, listitem, inputtext[]) { if (!IsPlayerInBank(playerid) && ATM_Nearest(playerid) == -1) return 0; if (response) { new amount = strval(inputtext); if (isnull(inputtext)) return Dialog_Show(playerid, SavingsDeposit, DIALOG_STYLE_INPUT, "Deposit funds", "Your savings account's balance: %s\n\nPlease enter the amount of money you wish to deposit:", "Deposit", "Back", FormatNumber(PlayerData[playerid][pSavings])); if (amount < 1 || amount > GetMoney(playerid)) return Dialog_Show(playerid, SavingsDeposit, DIALOG_STYLE_INPUT, "Deposit funds", "Error: You don't have that much.\n\nYour savings account's balance: %s\n\nPlease enter the amount of money you wish to deposit:", "Deposit", "Back", FormatNumber(PlayerData[playerid][pSavings])); PlayerData[playerid][pSavings] += amount; GiveMoney(playerid, -amount); SendServerMessage(playerid, "You have deposited %s into your savings account.", FormatNumber(amount)); Dialog_Show(playerid, SavingsDeposit, DIALOG_STYLE_INPUT, "Deposit funds", "Your savings account's balance: %s\n\nPlease enter the amount of money you wish to deposit:", "Deposit", "Back", FormatNumber(PlayerData[playerid][pSavings])); } else { Dialog_Show(playerid, Savings, DIALOG_STYLE_LIST, "Savings Account", "Withdraw funds\nDeposit funds", "Select", "Back"); } return 1; } Dialog:Bank(playerid, response, listitem, inputtext[]) { if (!IsPlayerInBank(playerid) && ATM_Nearest(playerid) == -1) return 0; if (response) { switch (listitem) { case 0: { Dialog_Show(playerid, BankAccount, DIALOG_STYLE_LIST, "Bank Account", "Withdraw funds\nDeposit funds\nMake a transfer", "Select", "Back"); } case 1: { Dialog_Show(playerid, Savings, DIALOG_STYLE_LIST, "Savings Account", "Withdraw funds\nDeposit funds", "Select", "Back"); } } } return 1; } Dialog:FAQ1(playerid, response, listitem, inputtext[]) { if (!response) cmd_faq(playerid, "\1"); return 1; } Dialog:FAQ(playerid, response, listitem, inputtext[]) { if (response) { switch (listitem) { case 0: { Dialog_Show(playerid, FAQ1, DIALOG_STYLE_MSGBOX, inputtext, "{FFFFFF}You can enter and exit a building by pressing the {FFFF00}'F'{FFFFFF} key.", "OK", "Back"); } case 1: { Dialog_Show(playerid, FAQ1, DIALOG_STYLE_MSGBOX, inputtext, "{FFFFFF}You can access your inventory by pressing the {FFFF00}'Y'{FFFFFF} key.\nYou can also type {FFFF00}/inventory{FFFFFF} to access your inventory.", "OK", "Back"); } case 2: { Dialog_Show(playerid, FAQ1, DIALOG_STYLE_MSGBOX, inputtext, "{FFFFFF}You can pickup dropped items by pressing the {FFFF00}'N'{FFFFFF} key.\nYou must be crouched and close to the item.", "OK", "Back"); } case 3: { Dialog_Show(playerid, FAQ1, DIALOG_STYLE_MSGBOX, inputtext, "{FFFFFF}The icons on the right side of your screen are as follows:\n\n{FFFF00}Pizza Icon:{FFFFFF} This icon represents hunger. The number beside is the percentage of hunger.\n{FFFF00}Bottle Icon:{FFFFFF} This icon represents thirst. The number beside is the percentage of thirst.\n\nIf you have an armored vest, it will also show along with the icons.", "OK", "Back"); } case 4: { Dialog_Show(playerid, FAQ1, DIALOG_STYLE_MSGBOX, inputtext, "{FFFFFF}You can refill your hunger by cooking food and eating it, or from a {FFFF00}Fast Food{FFFFFF} business.\nTo cook food, type {FFFF00}/cook{FFFFFF}. You can purchase frozen food at any {FFFF00}Retail Store{FFFFFF}.\n\nTo refill your thirst, you can purchase drinks from any {FFFF00}Retail Store{FFFFFF}.\nAdditionally, you can also purchase beverages at a fast food business.", "OK", "Back"); } case 5: { Dialog_Show(playerid, FAQ1, DIALOG_STYLE_MSGBOX, inputtext, "{FFFFFF}You can search for certain areas around the map using a {FFFF00}GPS System{FFFFFF}.\nYou can purchase a GPS System at any {FFFF00}Retail Store{FFFFFF} around the map.", "OK", "Back"); } case 6: { Dialog_Show(playerid, FAQ1, DIALOG_STYLE_MSGBOX, inputtext, "{FFFFFF}You can type {FFFF00}/disablecp{FFFFFF} to stop your current job.\nIf you are loading crates into a truck, use {FFFF00}/stoploading{FFFFFF} to stop loading.", "OK", "Back"); } case 7: { Dialog_Show(playerid, FAQ1, DIALOG_STYLE_MSGBOX, inputtext, "{FFFFFF}You must select a weapon from your inventory and press {FFFF00}Use Item.\n{FFFFFF}Once you are holding a weapon, you must use a magazine to load it.\n\nYou can purchase magazines at any {FFFF00}Weapon Shop for your weapon.\n{FFFFFF}You can also press {FFFF00}'N'{FFFFFF} to put away the weapon you are holding.", "OK", "Back"); } case 8: { Dialog_Show(playerid, FAQ1, DIALOG_STYLE_MSGBOX, inputtext, "{FFFFFF}Any furniture that you've purchased will appear inside your inventory.\nPress {FFFF00}'Y'{FFFFFF}, select the furniture item and press {FFFF00}Use Item{FFFFFF} to deploy it.\n\nIf you wish to edit existing furniture, type {FFFF00}/furniture{FFFFFF} inside your house.\nSimply select the item of choice to edit the position or destroy the item.", "OK", "Back"); } case 9: { Dialog_Show(playerid, FAQ1, DIALOG_STYLE_MSGBOX, inputtext, "{FFFFFF}The {FFFF00}'F'{FFFFFF} key will allow you to interact with a lot of things in the server.\nThese things include vendors, weapon and drug crates, gates and entrances.\n\nTo enter a house or business, simply press the {FFFF00}'F'{FFFFFF} key near the door.\nYou can open your inventory with {FFFF00}'Y'{FFFFFF} and pickup items using {FFFF00}'N'{FFFFFF}.", "OK", "Back"); } } } return 1; } Dialog:TeleportInterior(playerid, response, listitem, inputtext[]) { if (response) { SetPlayerInterior(playerid, g_arrInteriorData[listitem][e_InteriorID]); SetPlayerPos(playerid, g_arrInteriorData[listitem][e_InteriorX], g_arrInteriorData[listitem][e_InteriorY], g_arrInteriorData[listitem][e_InteriorZ]); } return 1; } Dialog:LeaveTest(playerid, response, listitem, inputtext[]) { if (response) { CancelDrivingTest(playerid); SendErrorMessage(playerid, "You have failed the driving test since you quit."); } else { PutPlayerInVehicle(playerid, PlayerData[playerid][pTestCar], 0); } return 1; } Dialog:Inventory(playerid, response, listitem, inputtext[]) { if (response) { new itemid = PlayerData[playerid][pInventoryItem], string[64]; strunpack(string, InventoryData[playerid][itemid][invItem]); switch (listitem) { case 0: { if (!strcmp(string, "Demo Soda") && PlayerData[playerid][pTutorialStage] == 3) { PlayerData[playerid][pThirst] = 100; Dialog_Show(playerid, Tutorial, DIALOG_STYLE_MSGBOX, "Tutorial Message", "You have learned how to pickup items and use them respectfully.\nYou have just picked up a soda bottle and used it to refill your thirst.\n\nThe hunger and thirst icons are displayed on the right side of your screen.\nIf your hunger or thirst reaches zero percent, your player will start losing energy.", "Continue", ""); } else { CallLocalFunction("OnPlayerUseItem", "dds", playerid, itemid, string); } } case 1: { if (!strcmp(string, "Demo Soda")) return 0; PlayerData[playerid][pInventoryItem] = itemid; Dialog_Show(playerid, GiveItem, DIALOG_STYLE_INPUT, "Give Item", "Please enter the name or the ID of the player:", "Submit", "Cancel"); } case 2: { new id = -1; if (!strcmp(string, "Demo Soda") && PlayerData[playerid][pTutorialStage] != 4) return 0; if (PlayerData[playerid][pTutorialStage] == 4) { Inventory_Remove(playerid, "Demo Soda"); Dialog_Show(playerid, Tutorial, DIALOG_STYLE_MSGBOX, "Tutorial Message", "You have dropped the soda bottle. You can pickup dropped items using 'N'.\nYou can also give or trade items from your inventory to other players.\n\nYou can also store items into your house's storage or a vehicle's trunk.\nYour character's inventory can only contain up to %d unique items at once.", "Next", "", MAX_INVENTORY); return 1; } if (IsPlayerInAnyVehicle(playerid) || !IsPlayerSpawned(playerid)) return SendErrorMessage(playerid, "You can't drop items right now."); else if (!strcmp(string, "Backpack")) return cmd_dropbackpack(playerid, "\1"); else if ((id = Garbage_Nearest(playerid)) != -1) { if (GarbageData[id][garbageCapacity] >= 20) return SendErrorMessage(playerid, "This garbage bin is full of trash."); GarbageData[id][garbageCapacity]++; Garbage_Save(id); Inventory_Remove(playerid, string); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s throws a \"%s\" into the garbage bin.", ReturnName(playerid, 0), string); format(string, sizeof(string), "[Garbage %d]\n{FFFFFF}Trash Capacity: %d/20", id, GarbageData[id][garbageCapacity]); UpdateDynamic3DTextLabelText(GarbageData[id][garbageText3D], COLOR_DARKBLUE, string); } else if (InventoryData[playerid][itemid][invQuantity] == 1) DropPlayerItem(playerid, itemid); else Dialog_Show(playerid, DropItem, DIALOG_STYLE_INPUT, "Drop Item", "Item: %s - Quantity: %d\n\nPlease specify how much of this item you wish to drop:", "Drop", "Cancel", string, InventoryData[playerid][itemid][invQuantity]); } } } return 1; } Dialog:DropItem(playerid, response, listitem, inputtext[]) { new itemid = PlayerData[playerid][pInventoryItem], string[32]; strunpack(string, InventoryData[playerid][itemid][invItem]); if (response) { if (isnull(inputtext)) return Dialog_Show(playerid, DropItem, DIALOG_STYLE_INPUT, "Drop Item", "Item: %s - Quantity: %d\n\nPlease specify how much of this item you wish to drop:", "Drop", "Cancel", string, InventoryData[playerid][itemid][invQuantity]); if (strval(inputtext) < 1 || strval(inputtext) > InventoryData[playerid][itemid][invQuantity]) return Dialog_Show(playerid, DropItem, DIALOG_STYLE_INPUT, "Drop Item", "Error: Insufficient amount specified.\n\nItem: %s - Quantity: %d\n\nPlease specify how much of this item you wish to drop:", "Drop", "Cancel", string, InventoryData[playerid][itemid][invQuantity]); DropPlayerItem(playerid, itemid, strval(inputtext)); } return 1; } Dialog:BusinessBuy(playerid, response, listitem, inputtext[]) { static bizid = -1, price, string[64]; if ((bizid = Business_Inside(playerid)) != -1 && response) { price = BusinessData[bizid][bizPrices][listitem]; if (GetMoney(playerid) < price) return SendErrorMessage(playerid, "You have insufficient funds for the purchase."); if (BusinessData[bizid][bizProducts] < 1) return SendErrorMessage(playerid, "This business is out of stock."); if (BusinessData[bizid][bizType] == 1 || BusinessData[bizid][bizType] == 6) { switch (listitem) { case 0: { if (Inventory_HasItem(playerid, "Cellphone")) return SendErrorMessage(playerid, "You have a cellphone already."); new id = Inventory_Add(playerid, "Cellphone", 330); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); PlayerData[playerid][pPhone] = random(90000) + 10000; GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a cellphone.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); format(string, sizeof(string), "Your new number is ~p~%d.", PlayerData[playerid][pPhone]); ShowPlayerFooter(playerid, string); SendServerMessage(playerid, "Your new number is %d.", PlayerData[playerid][pPhone]); } case 1: { if (Inventory_HasItem(playerid, "GPS System")) return SendErrorMessage(playerid, "You have a GPS system already."); new id = Inventory_Add(playerid, "GPS System", 18875); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a GPS System.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 2: { if (Inventory_Count(playerid, "Spray Can") >= 3) return SendErrorMessage(playerid, "You have 3 spray cans, you can't buy anymore."); new id = Inventory_Add(playerid, "Spray Can", 365); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a can of spray paint.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 3: { if (Inventory_HasItem(playerid, "Backpack")) return SendErrorMessage(playerid, "You have this item already."); new id = Inventory_Add(playerid, "Backpack", 3026); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); if (Backpack_Create(playerid) == -1) return SendErrorMessage(playerid, "The server has reached the internal limit for backpacks."); SetAccessories(playerid); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a backpack.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 4: { if (Inventory_Count(playerid, "Water Bottle") >= 10) return SendErrorMessage(playerid, "You have 10 bottles of water, you can't buy anymore."); new id = Inventory_Add(playerid, "Water Bottle", 2958); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a bottle of water.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 5: { if (Inventory_Count(playerid, "Soda") >= 5) return SendErrorMessage(playerid, "You have 5 bottles of soda, you can't buy anymore."); new id = Inventory_Add(playerid, "Soda", 1543); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a bottle of soda.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 6: { if (PlayerData[playerid][pLottery]) return SendErrorMessage(playerid, "You have a lottery ticket already."); Dialog_Show(playerid, LotteryNumber, DIALOG_STYLE_INPUT, "Lottery Number", "Please enter your desired lottery number below (from 1-60):", "Submit", "Cancel"); } case 7: { if (Inventory_HasItem(playerid, "Portable Radio")) return SendErrorMessage(playerid, "You have this item already."); new id = Inventory_Add(playerid, "Portable Radio", 18868); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a portable radio.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 8: { if (Inventory_Count(playerid, "Fuel Can") >= 3) return SendErrorMessage(playerid, "You have 3 cans of fuel, you can't buy anymore."); new id = Inventory_Add(playerid, "Fuel Can", 1650); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a can of fuel.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 9: { if (Inventory_HasItem(playerid, "Crowbar")) return SendErrorMessage(playerid, "You have a crowbar already."); new id = Inventory_Add(playerid, "Crowbar", 18634); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a crowbar.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 10: { if (Inventory_HasItem(playerid, "Boombox")) return SendErrorMessage(playerid, "You have a boombox already."); new id = Inventory_Add(playerid, "Boombox", 2226); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a boombox.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 11: { if (Inventory_HasItem(playerid, "Mask")) return SendErrorMessage(playerid, "You have a mask already."); if (PlayerData[playerid][pPlayingHours] < 5) return SendErrorMessage(playerid, "You must have at least 5 playing hours."); new id = Inventory_Add(playerid, "Mask", 19036); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a mask.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 12: { if (Inventory_Count(playerid, "First Aid") >= 3) return SendErrorMessage(playerid, "You have 3 first aid kits, you can't buy anymore."); new id = Inventory_Add(playerid, "First Aid", 1580); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a first aid kit.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 13: { if (Inventory_Count(playerid, "Repair Kit") >= 3) return SendErrorMessage(playerid, "You have 3 repair kits, you can't buy anymore."); new id = Inventory_Add(playerid, "Repair Kit", 920); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a repair kit.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 14: { if (Inventory_Count(playerid, "NOS Canister") >= 5) return SendErrorMessage(playerid, "You have 5 canisters, you can't buy anymore."); new id = Inventory_Add(playerid, "NOS Canister", 1010); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a NOS canister.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 15: { if (PlayerHasWeapon(playerid, 5)) return SendErrorMessage(playerid, "You have this item already."); GiveWeaponToPlayer(playerid, 5, 1); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a baseball bat.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 16: { if (Inventory_Count(playerid, "Frozen Pizza") >= 3) return SendErrorMessage(playerid, "You have 3 frozen pizzas, you can't buy anymore."); new id = Inventory_Add(playerid, "Frozen Pizza", 2814); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a box of frozen pizza.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 17: { if (Inventory_Count(playerid, "Frozen Burger") >= 5) return SendErrorMessage(playerid, "You have 5 frozen burgers, you can't buy anymore."); new id = Inventory_Add(playerid, "Frozen Burger", 2768); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a frozen burger.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } } } else if (BusinessData[bizid][bizType] == 2) { switch (listitem) { case 0: { if (!Inventory_HasItem(playerid, "Weapon License")) return SendErrorMessage(playerid, "This store only sells to people with a weapon license."); if (Inventory_Count(playerid, "Magazine") >= 10) return SendErrorMessage(playerid, "You have 10 magazines, you can't buy anymore."); new id = Inventory_Add(playerid, "Magazine", 2039); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a weapon magazine.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 1: { if (!Inventory_HasItem(playerid, "Weapon License")) return SendErrorMessage(playerid, "This store only sells to people with a weapon license."); if (Inventory_Count(playerid, "Ammo Cartridge") >= 10) return SendErrorMessage(playerid, "You have 10 ammo cartridges, you can't buy anymore."); new id = Inventory_Add(playerid, "Ammo Cartridge", 2358); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received an ammo cartridge.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 2: { if (!Inventory_HasItem(playerid, "Weapon License")) return SendErrorMessage(playerid, "This store only sells to people with a weapon license."); if (Inventory_Count(playerid, "Armored Vest") >= 3) return SendErrorMessage(playerid, "You have 3 armored vests, you can't buy anymore."); new id = Inventory_Add(playerid, "Armored Vest", 19142); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received an armored vest.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 3: { if (!Inventory_HasItem(playerid, "Weapon License")) return SendErrorMessage(playerid, "A weapon license is required to purchase from this store."); if (PlayerData[playerid][pPlayingHours] < 5) return SendErrorMessage(playerid, "You need at least 5 playing hours."); if (Inventory_Count(playerid, "Desert Eagle") > 5) return SendErrorMessage(playerid, "You can't carry anymore of this weapon."); Inventory_Add(playerid, "Desert Eagle", 348); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a Desert Eagle.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 4: { if (!Inventory_HasItem(playerid, "Weapon License")) return SendErrorMessage(playerid, "A weapon license is required to purchase from this store."); if (PlayerData[playerid][pPlayingHours] < 5) return SendErrorMessage(playerid, "You need at least 5 playing hours."); if (Inventory_Count(playerid, "Shotgun") > 5) return SendErrorMessage(playerid, "You can't carry anymore of this weapon."); Inventory_Add(playerid, "Shotgun", 349); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a Remington 870.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 5: { if (!Inventory_HasItem(playerid, "Weapon License")) return SendErrorMessage(playerid, "A weapon license is required to purchase from this store."); if (PlayerData[playerid][pPlayingHours] < 5) return SendErrorMessage(playerid, "You need at least 5 playing hours."); if (Inventory_Count(playerid, "Rifle") > 5) return SendErrorMessage(playerid, "You can't carry anymore of this weapon."); Inventory_Add(playerid, "Rifle", 357); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a M14 Rifle.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } } } else if (BusinessData[bizid][bizType] == 3) { switch (listitem) { case 0: { PlayerData[playerid][pClothesType] = 1; switch (PlayerData[playerid][pGender]) { case 1: ShowModelSelectionMenu(playerid, "Clothes", MODEL_SELECTION_CLOTHES, g_aMaleSkins, sizeof(g_aMaleSkins), -16.0, 0.0, -55.0); case 2: ShowModelSelectionMenu(playerid, "Clothes", MODEL_SELECTION_CLOTHES, g_aFemaleSkins, sizeof(g_aFemaleSkins), -16.0, 0.0, -55.0); } } case 1: { PlayerData[playerid][pClothesType] = 2; ShowModelSelectionMenu(playerid, "Glasses", MODEL_SELECTION_CLOTHES, {19006, 19007, 19008, 19009, 19010, 19011, 19012, 19013, 19014, 19015, 19016, 19017, 19018, 19019, 19020, 19021, 19022, 19023, 19024, 19025, 19026, 19027, 19028, 19029, 19030, 19031, 19032, 19033, 19034, 19035}, 30, 0.0, 0.0, 90.0); } case 2: { PlayerData[playerid][pClothesType] = 3; ShowModelSelectionMenu(playerid, "Hats", MODEL_SELECTION_CLOTHES, {18926, 18927, 18928, 18929, 18930, 18931, 18932, 18933, 18934, 18935, 18944, 18945, 18946, 18947, 18948, 18949, 18950, 18951}, 18, -20.0, -90.0, 0.0); } case 3: { PlayerData[playerid][pClothesType] = 4; ShowModelSelectionMenu(playerid, "Bandanas", MODEL_SELECTION_CLOTHES, {18911, 18912, 18913, 18914, 18915, 18916, 18917, 18918, 18919, 18920}, 10, 80.0, -173.0, 0.0); } } } else if (BusinessData[bizid][bizType] == 4) { switch (listitem) { case 0: { if (PlayerData[playerid][pThirst] > 90) return SendErrorMessage(playerid, "You are not thirsty right now."); PlayerData[playerid][pThirst] = (PlayerData[playerid][pThirst] + 10 > 100) ? (100) : (PlayerData[playerid][pThirst] + 10); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received some water.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 1: { if (PlayerData[playerid][pThirst] > 90) return SendErrorMessage(playerid, "You are not thirsty right now."); PlayerData[playerid][pThirst] = (PlayerData[playerid][pThirst] + 20 > 100) ? (100) : (PlayerData[playerid][pThirst] + 20); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received some soda.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 2: { if (PlayerData[playerid][pHunger] > 90) return SendErrorMessage(playerid, "You are not hungry right now."); PlayerData[playerid][pHunger] = (PlayerData[playerid][pHunger] + 20 > 100) ? (100) : (PlayerData[playerid][pHunger] + 20); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received some french fries.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 3: { if (PlayerData[playerid][pHunger] > 90) return SendErrorMessage(playerid, "You are not hungry right now."); PlayerData[playerid][pHunger] = (PlayerData[playerid][pHunger] + 25 > 100) ? (100) : (PlayerData[playerid][pHunger] + 25); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a cheeseburger.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 4: { if (PlayerData[playerid][pHunger] > 90) return SendErrorMessage(playerid, "You are not hungry right now."); PlayerData[playerid][pHunger] = (PlayerData[playerid][pHunger] + 30 > 100) ? (100) : (PlayerData[playerid][pHunger] + 30); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a chicken burger.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 5: { if (PlayerData[playerid][pHunger] > 90) return SendErrorMessage(playerid, "You are not hungry right now."); PlayerData[playerid][pHunger] = (PlayerData[playerid][pHunger] + 25 > 100) ? (100) : (PlayerData[playerid][pHunger] + 25); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received some chicken nuggets.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } case 6: { if (PlayerData[playerid][pHunger] > 90) return SendErrorMessage(playerid, "You are not hungry right now."); PlayerData[playerid][pHunger] = (PlayerData[playerid][pHunger] + 20 > 100) ? (100) : (PlayerData[playerid][pHunger] + 20); GiveMoney(playerid, -price); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a salad.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(price); Business_Save(bizid); Tax_AddPercent(price); } } } else if (BusinessData[bizid][bizType] == 7) { new items[50] = {-1, ...}, count; for (new i = 0; i < sizeof(g_aFurnitureData); i ++) if (g_aFurnitureData[i][e_FurnitureType] == listitem + 1) { items[count++] = g_aFurnitureData[i][e_FurnitureModel]; } PlayerData[playerid][pFurnitureType] = listitem; if (listitem == 3) { ShowModelSelectionMenu(playerid, "Furniture", MODEL_SELECTION_FURNITURE, items, count, -12.0, 0.0, 0.0); } else { ShowModelSelectionMenu(playerid, "Furniture", MODEL_SELECTION_FURNITURE, items, count); } } } return 1; } Dialog:LotteryNumber(playerid, response, listitem, inputtext[]) { if (response) { new bizid = Business_Inside(playerid); if (bizid != -1) { if (isnull(inputtext) || (strval(inputtext) < 1 || strval(inputtext) > 60)) { return Dialog_Show(playerid, LotteryNumber, DIALOG_STYLE_INPUT, "Lottery Number", "Please enter your desired lottery number below (from 1-60):", "Submit", "Cancel"); } PlayerData[playerid][pLottery] = strval(inputtext); PlayerData[playerid][pLotteryB] = 1; GiveMoney(playerid, -BusinessData[bizid][bizPrices][6]); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has paid %s and received a lottery ticket.", ReturnName(playerid, 0), FormatNumber(BusinessData[bizid][bizPrices][6])); BusinessData[bizid][bizProducts]--; BusinessData[bizid][bizVault] += Tax_Percent(BusinessData[bizid][bizPrices][6]); Business_Save(bizid); Tax_AddPercent(BusinessData[bizid][bizPrices][6]); } } return 1; } Dialog:EditProduct(playerid, response, listitem, inputtext[]) { static bizid = -1; if ((bizid = Business_Inside(playerid)) != -1 && Business_IsOwner(playerid, bizid)) { if (response) { static item[24]; strmid(item, inputtext, 0, strfind(inputtext, "-") - 1); strpack(PlayerData[playerid][pEditingItem], item, 32 char); PlayerData[playerid][pProductModify] = listitem; Dialog_Show(playerid, PriceSet, DIALOG_STYLE_INPUT, "Business: Set Price", "Please enter the new product price for \"%s\":", "Modify", "Back", item); } } return 1; } Dialog:PriceSet(playerid, response, listitem, inputtext[]) { static bizid = -1, item[32]; if ((bizid = Business_Inside(playerid)) != -1 && Business_IsOwner(playerid, bizid)) { if (response) { strunpack(item, PlayerData[playerid][pEditingItem]); if (isnull(inputtext)) return Dialog_Show(playerid, PriceSet, DIALOG_STYLE_INPUT, "Business: Set Price", "Please enter the new product price for \"%s\":", "Modify", "Back", item); if (strval(inputtext) < 1 || strval(inputtext) > 2000) return Dialog_Show(playerid, PriceSet, DIALOG_STYLE_INPUT, "Business: Set Price", "Please enter the new product price for \"%s\" ($1 to $2,000):", "Modify", "Back", item); BusinessData[bizid][bizPrices][PlayerData[playerid][pProductModify]] = strval(inputtext); Business_Save(bizid); SendServerMessage(playerid, "You have adjusted the price of \"%s\" to: %s!", item, FormatNumber(strval(inputtext))); Business_ProductMenu(playerid, bizid); } else { Business_ProductMenu(playerid, bizid); } } return 1; } Dialog:CarDeposit(playerid, response, listitem, inputtext[]) { static carid = -1, string[32]; if ((carid = Car_Nearest(playerid)) != -1 && !CarData[carid][carLocked]) { strunpack(string, InventoryData[playerid][PlayerData[playerid][pInventoryItem]][invItem]); if (response) { new amount = strval(inputtext); if (amount < 1 || amount > InventoryData[playerid][PlayerData[playerid][pInventoryItem]][invQuantity]) return Dialog_Show(playerid, CarDeposit, DIALOG_STYLE_INPUT, "Car Deposit", "Item: %s (Quantity: %d)\n\nPlease enter the quantity that you wish to store for this item:", "Store", "Back", string, InventoryData[playerid][PlayerData[playerid][pInventoryItem]][invQuantity]); Car_AddItem(carid, string, InventoryData[playerid][PlayerData[playerid][pInventoryItem]][invModel], amount); Inventory_Remove(playerid, string, amount); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has stored a \"%s\" into the trunk.", ReturnName(playerid, 0), string); Car_ShowTrunk(playerid, carid); } else Car_ShowTrunk(playerid, carid); } return 1; } Dialog:CarTake(playerid, response, listitem, inputtext[]) { static carid = -1, string[32]; if ((carid = Car_Nearest(playerid)) != -1 && !CarData[carid][carLocked]) { strunpack(string, CarStorage[carid][PlayerData[playerid][pStorageItem]][cItemName]); if (response) { new amount = strval(inputtext); if (amount < 1 || amount > CarStorage[carid][PlayerData[playerid][pStorageItem]][cItemQuantity]) return Dialog_Show(playerid, CarTake, DIALOG_STYLE_INPUT, "Car Take", "Item: %s (Quantity: %d)\n\nPlease enter the quantity that you wish to take for this item:", "Take", "Back", string, CarStorage[carid][PlayerData[playerid][pInventoryItem]][cItemQuantity]); new id = Inventory_Add(playerid, string, CarStorage[carid][PlayerData[playerid][pStorageItem]][cItemModel], amount); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); Car_RemoveItem(carid, string, amount); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has taken a \"%s\" from the trunk.", ReturnName(playerid, 0), string); Car_ShowTrunk(playerid, carid); } else Car_ShowTrunk(playerid, carid); } return 1; } Dialog:CarStorage(playerid, response, listitem, inputtext[]) { static carid = -1, string[64]; if ((carid = Car_Nearest(playerid)) != -1 && !CarData[carid][carLocked]) { if (response) { if (listitem == MAX_CAR_STORAGE) { Car_WeaponStorage(playerid, carid); } else if (CarStorage[carid][listitem][cItemExists]) { PlayerData[playerid][pStorageItem] = listitem; PlayerData[playerid][pInventoryItem] = listitem; strunpack(string, CarStorage[carid][listitem][cItemName]); format(string, sizeof(string), "%s (Quantity: %d)", string, CarStorage[carid][listitem][cItemQuantity]); Dialog_Show(playerid, TrunkOptions, DIALOG_STYLE_LIST, string, "Take Item\nStore Item", "Select", "Back"); } else { OpenInventory(playerid); PlayerData[playerid][pStorageSelect] = 2; } } } return 1; } Dialog:TrunkOptions(playerid, response, listitem, inputtext[]) { static carid = -1, itemid = -1, backpack = -1, string[32]; if ((carid = Car_Nearest(playerid)) != -1 && !CarData[carid][carLocked]) { itemid = PlayerData[playerid][pStorageItem]; strunpack(string, CarStorage[carid][itemid][cItemName]); if (response) { switch (listitem) { case 0: { if (CarStorage[carid][itemid][cItemQuantity] == 1) { if (!strcmp(string, "Backpack") && Inventory_HasItem(playerid, "Backpack")) return SendErrorMessage(playerid, "You already have a backpack in your inventory."); new id = Inventory_Add(playerid, string, CarStorage[carid][itemid][cItemModel], 1); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); if (!strcmp(string, "Backpack") && (backpack = GetVehicleBackpack(carid)) != -1) { BackpackData[backpack][backpackVehicle] = 0; BackpackData[backpack][backpackPlayer] = PlayerData[playerid][pID]; Backpack_Save(backpack); SetAccessories(playerid); } Car_RemoveItem(carid, string); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has taken a \"%s\" from the trunk.", ReturnName(playerid, 0), string); Car_ShowTrunk(playerid, carid); } else { Dialog_Show(playerid, CarTake, DIALOG_STYLE_INPUT, "Car Take", "Item: %s (Quantity: %d)\n\nPlease enter the quantity that you wish to take for this item:", "Take", "Back", string, CarStorage[carid][itemid][cItemQuantity]); } } case 1: { new id = Inventory_GetItemID(playerid, string); if (!strcmp(string, "Backpack")) { Car_ShowTrunk(playerid, carid); return SendErrorMessage(playerid, "You can only store one backpack in your trunk."); } else if (id == -1) { Car_ShowTrunk(playerid, carid); return SendErrorMessage(playerid, "You don't have anymore of this item to store!"); } else if (InventoryData[playerid][id][invQuantity] == 1) { Car_AddItem(carid, string, InventoryData[playerid][id][invModel], 1); Inventory_Remove(playerid, string); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has stored a \"%s\" into the trunk.", ReturnName(playerid, 0), string); Car_ShowTrunk(playerid, carid); } else if (InventoryData[playerid][id][invQuantity] > 1) { PlayerData[playerid][pInventoryItem] = id; Dialog_Show(playerid, CarDeposit, DIALOG_STYLE_INPUT, "Car Deposit", "Item: %s (Quantity: %d)\n\nPlease enter the quantity that you wish to store for this item:", "Store", "Back", string, InventoryData[playerid][id][invQuantity]); } } } } else { Car_ShowTrunk(playerid, carid); } } return 1; } Dialog:HouseWeapons(playerid, response, listitem, inputtext[]) { static houseid = -1; if ((houseid = House_Inside(playerid)) != -1 && (House_IsOwner(playerid, houseid) || GetFactionType(playerid) == FACTION_POLICE)) { if (response) { if (HouseData[houseid][houseWeapons][listitem] != 0) { GiveWeaponToPlayer(playerid, HouseData[houseid][houseWeapons][listitem], HouseData[houseid][houseAmmo][listitem]); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has taken a \"%s\" from their weapon storage.", ReturnName(playerid, 0), ReturnWeaponName(HouseData[houseid][houseWeapons][listitem])); Log_Write("logs/storage_log.txt", "[%s] %s has taken a \"%s\" from house ID: %d (owner: %s).", ReturnDate(), ReturnName(playerid, 0), ReturnWeaponName(HouseData[houseid][houseWeapons][listitem]), HouseData[houseid][houseID], (House_IsOwner(playerid, houseid)) ? ("Yes") : ("No")); HouseData[houseid][houseWeapons][listitem] = 0; HouseData[houseid][houseAmmo][listitem] = 0; House_Save(houseid); House_WeaponStorage(playerid, houseid); } else { new weaponid = GetWeapon(playerid), ammo = GetPlayerAmmo(playerid); if (!weaponid) return SendErrorMessage(playerid, "You are not holding any weapon!"); if (weaponid == 23 && PlayerData[playerid][pTazer]) return SendErrorMessage(playerid, "You can't store a tazer into your safe."); if (weaponid == 25 && PlayerData[playerid][pBeanBag]) return SendErrorMessage(playerid, "You can't store a beanbag shotgun into your safe."); ResetWeapon(playerid, weaponid); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has stored a \"%s\" into their weapon storage.", ReturnName(playerid, 0), ReturnWeaponName(weaponid)); HouseData[houseid][houseWeapons][listitem] = weaponid; HouseData[houseid][houseAmmo][listitem] = ammo; House_Save(houseid); House_WeaponStorage(playerid, houseid); } } else { House_OpenStorage(playerid, houseid); } } return 1; } Dialog:HouseDeposit(playerid, response, listitem, inputtext[]) { static houseid = -1, string[32]; if ((houseid = House_Inside(playerid)) != -1 && (House_IsOwner(playerid, houseid) || GetFactionType(playerid) == FACTION_POLICE)) { strunpack(string, InventoryData[playerid][PlayerData[playerid][pInventoryItem]][invItem]); if (response) { new amount = strval(inputtext); if (amount < 1 || amount > InventoryData[playerid][PlayerData[playerid][pInventoryItem]][invQuantity]) return Dialog_Show(playerid, HouseDeposit, DIALOG_STYLE_INPUT, "House Deposit", "Item: %s (Quantity: %d)\n\nPlease enter the quantity that you wish to store for this item:", "Store", "Back", string, InventoryData[playerid][PlayerData[playerid][pInventoryItem]][invQuantity]); House_AddItem(houseid, string, InventoryData[playerid][PlayerData[playerid][pInventoryItem]][invModel], amount); Inventory_Remove(playerid, string, amount); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has stored a \"%s\" into their house storage.", ReturnName(playerid, 0), string); House_ShowItems(playerid, houseid); } else House_OpenStorage(playerid, houseid); } return 1; } Dialog:HouseTake(playerid, response, listitem, inputtext[]) { static houseid = -1, string[32]; if ((houseid = House_Inside(playerid)) != -1 && (House_IsOwner(playerid, houseid) || GetFactionType(playerid) == FACTION_POLICE)) { strunpack(string, HouseStorage[houseid][PlayerData[playerid][pStorageItem]][hItemName]); if (response) { new amount = strval(inputtext); if (amount < 1 || amount > HouseStorage[houseid][PlayerData[playerid][pStorageItem]][hItemQuantity]) return Dialog_Show(playerid, HouseTake, DIALOG_STYLE_INPUT, "House Take", "Item: %s (Quantity: %d)\n\nPlease enter the quantity that you wish to take for this item:", "Take", "Back", string, HouseStorage[houseid][PlayerData[playerid][pInventoryItem]][hItemQuantity]); new id = Inventory_Add(playerid, string, HouseStorage[houseid][PlayerData[playerid][pStorageItem]][hItemModel], amount); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); House_RemoveItem(houseid, string, amount); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has taken a \"%s\" from their house storage.", ReturnName(playerid, 0), string); House_ShowItems(playerid, houseid); Log_Write("logs/storage_log.txt", "[%s] %s has taken %d \"%s\" from house ID: %d (owner: %s).", ReturnDate(), ReturnName(playerid, 0), amount, string, HouseData[houseid][houseID], (House_IsOwner(playerid, houseid)) ? ("Yes") : ("No")); } else House_OpenStorage(playerid, houseid); } return 1; } Dialog:HouseWithdrawCash(playerid, response, listitem, inputtext[]) { static houseid = -1; if ((houseid = House_Inside(playerid)) != -1 && House_IsOwner(playerid, houseid)) { if (response) { new amount = strval(inputtext); if (isnull(inputtext)) return Dialog_Show(playerid, HouseWithdrawCash, DIALOG_STYLE_INPUT, "Withdraw from safe", "Safe Balance: %s\n\nPlease enter how much money you wish to withdraw from the safe:", "Withdraw", "Back", FormatNumber(HouseData[houseid][houseMoney])); if (amount < 1 || amount > HouseData[houseid][houseMoney]) return Dialog_Show(playerid, HouseWithdrawCash, DIALOG_STYLE_INPUT, "Withdraw from safe", "Error: Insufficient funds.\n\nSafe Balance: %s\n\nPlease enter how much money you wish to withdraw from the safe:", "Withdraw", "Back", FormatNumber(HouseData[houseid][houseMoney])); HouseData[houseid][houseMoney] -= amount; GiveMoney(playerid, amount); House_Save(houseid); House_OpenStorage(playerid, houseid); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has withdrawn %s from their house safe.", ReturnName(playerid, 0), FormatNumber(amount)); } else Dialog_Show(playerid, HouseMoney, DIALOG_STYLE_LIST, "Money Safe", "Withdraw from safe\nDeposit into safe", "Select", "Back"); } return 1; } Dialog:HouseDepositCash(playerid, response, listitem, inputtext[]) { static houseid = -1; if ((houseid = House_Inside(playerid)) != -1 && House_IsOwner(playerid, houseid)) { if (response) { new amount = strval(inputtext); if (isnull(inputtext)) return Dialog_Show(playerid, HouseDepositCash, DIALOG_STYLE_INPUT, "Deposit into safe", "Safe Balance: %s\n\nPlease enter how much money you wish to deposit into the safe:", "Withdraw", "Back", FormatNumber(HouseData[houseid][houseMoney])); if (amount < 1 || amount > GetMoney(playerid)) return Dialog_Show(playerid, HouseDepositCash, DIALOG_STYLE_INPUT, "Deposit into safe", "Error: Insufficient funds.\n\nSafe Balance: %s\n\nPlease enter how much money you wish to deposit into the safe:", "Withdraw", "Back", FormatNumber(HouseData[houseid][houseMoney])); HouseData[houseid][houseMoney] += amount; GiveMoney(playerid, -amount); House_Save(houseid); House_OpenStorage(playerid, houseid); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has deposited %s into their house safe.", ReturnName(playerid, 0), FormatNumber(amount)); } else Dialog_Show(playerid, HouseMoney, DIALOG_STYLE_LIST, "Money Safe", "Withdraw from safe\nDeposit into safe", "Select", "Back"); } return 1; } Dialog:HouseMoney(playerid, response, listitem, inputtext[]) { static houseid = -1; if ((houseid = House_Inside(playerid)) != -1 && House_IsOwner(playerid, houseid)) { if (response) { switch (listitem) { case 0: { Dialog_Show(playerid, HouseWithdrawCash, DIALOG_STYLE_INPUT, "Withdraw from safe", "Safe Balance: %s\n\nPlease enter how much money you wish to withdraw from the safe:", "Withdraw", "Back", FormatNumber(HouseData[houseid][houseMoney])); } case 1: { Dialog_Show(playerid, HouseDepositCash, DIALOG_STYLE_INPUT, "Deposit into safe", "Safe Balance: %s\n\nPlease enter how much money you wish to deposit into the safe:", "Withdraw", "Back", FormatNumber(HouseData[houseid][houseMoney])); } } } else House_OpenStorage(playerid, houseid); } return 1; } Dialog:HouseItems(playerid, response, listitem, inputtext[]) { static houseid = -1, string[64]; if ((houseid = House_Inside(playerid)) != -1 && (House_IsOwner(playerid, houseid) || GetFactionType(playerid) == FACTION_POLICE)) { if (response) { if (HouseStorage[houseid][listitem][hItemExists]) { PlayerData[playerid][pStorageItem] = listitem; PlayerData[playerid][pInventoryItem] = listitem; strunpack(string, HouseStorage[houseid][listitem][hItemName]); format(string, sizeof(string), "%s (Quantity: %d)", string, HouseStorage[houseid][listitem][hItemQuantity]); Dialog_Show(playerid, StorageOptions, DIALOG_STYLE_LIST, string, "Take Item\nStore Item", "Select", "Back"); } else { OpenInventory(playerid); PlayerData[playerid][pStorageSelect] = 1; } } else House_OpenStorage(playerid, houseid); } return 1; } Dialog:HouseStorage(playerid, response, listitem, inputtext[]) { static houseid = -1; if ((houseid = House_Inside(playerid)) != -1 && (House_IsOwner(playerid, houseid) || GetFactionType(playerid) == FACTION_POLICE)) { if (response) { if (listitem == 0) { House_ShowItems(playerid, houseid); } else if (listitem == 1) { House_WeaponStorage(playerid, houseid); } else if (listitem == 2) { Dialog_Show(playerid, HouseMoney, DIALOG_STYLE_LIST, "Money Safe", "Withdraw from safe\nDeposit into safe", "Select", "Back"); } } } return 1; } Dialog:StorageOptions(playerid, response, listitem, inputtext[]) { static houseid = -1, itemid = -1, backpack = -1, string[32]; if ((houseid = House_Inside(playerid)) != -1 && (House_IsOwner(playerid, houseid) || GetFactionType(playerid) == FACTION_POLICE)) { itemid = PlayerData[playerid][pStorageItem]; strunpack(string, HouseStorage[houseid][itemid][hItemName]); if (response) { switch (listitem) { case 0: { if (HouseStorage[houseid][itemid][hItemQuantity] == 1) { if (!strcmp(string, "Backpack") && Inventory_HasItem(playerid, "Backpack")) return SendErrorMessage(playerid, "You already have a backpack in your inventory."); new id = Inventory_Add(playerid, string, HouseStorage[houseid][itemid][hItemModel], 1); if (id == -1) return SendErrorMessage(playerid, "You don't have any inventory slots left."); if (!strcmp(string, "Backpack") && (backpack = GetHouseBackpack(houseid)) != -1) { BackpackData[backpack][backpackHouse] = 0; BackpackData[backpack][backpackPlayer] = PlayerData[playerid][pID]; Backpack_Save(backpack); SetAccessories(playerid); } House_RemoveItem(houseid, string); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has taken a \"%s\" from their house storage.", ReturnName(playerid, 0), string); House_ShowItems(playerid, houseid); Log_Write("logs/storage_log.txt", "[%s] %s has taken \"%s\" from house ID: %d (owner: %s).", ReturnDate(), ReturnName(playerid, 0), string, HouseData[houseid][houseID], (House_IsOwner(playerid, houseid)) ? ("Yes") : ("No")); } else { Dialog_Show(playerid, HouseTake, DIALOG_STYLE_INPUT, "House Take", "Item: %s (Quantity: %d)\n\nPlease enter the quantity that you wish to take for this item:", "Take", "Back", string, HouseStorage[houseid][itemid][hItemQuantity]); } } case 1: { new id = Inventory_GetItemID(playerid, string); if (!strcmp(string, "Backpack")) { House_ShowItems(playerid, houseid); return SendErrorMessage(playerid, "You can only store one backpack in your house."); } else if (id == -1) { House_ShowItems(playerid, houseid); return SendErrorMessage(playerid, "You don't have anymore of this item to store!"); } else if (InventoryData[playerid][id][invQuantity] == 1) { House_AddItem(houseid, string, InventoryData[playerid][id][invModel]); Inventory_Remove(playerid, string); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has stored a \"%s\" into their house storage.", ReturnName(playerid, 0), string); House_ShowItems(playerid, houseid); } else if (InventoryData[playerid][id][invQuantity] > 1) { PlayerData[playerid][pInventoryItem] = id; Dialog_Show(playerid, HouseDeposit, DIALOG_STYLE_INPUT, "House Deposit", "Item: %s (Quantity: %d)\n\nPlease enter the quantity that you wish to store for this item:", "Store", "Back", string, InventoryData[playerid][id][invQuantity]); } } } } else { House_ShowItems(playerid, houseid); } } return 1; } Dialog:EditGlasses(playerid, response, listitem, inputtext[]) { if (response) { switch (listitem) { case 0: { if (!IsPlayerAttachedObjectSlotUsed(playerid, 0)) { PlayerData[playerid][pToggleGlasses] = 0; SetPlayerAttachedObject(playerid, 0, PlayerData[playerid][pGlasses], 2, AccessoryData[playerid][0][0], AccessoryData[playerid][0][1], AccessoryData[playerid][0][2], AccessoryData[playerid][0][3], AccessoryData[playerid][0][4], AccessoryData[playerid][0][5], AccessoryData[playerid][0][6], AccessoryData[playerid][0][7], AccessoryData[playerid][0][8]); ShowPlayerFooter(playerid, "You have ~g~attached~w~ your glasses."); } else { PlayerData[playerid][pToggleGlasses] = 1; RemovePlayerAttachedObject(playerid, 0); ShowPlayerFooter(playerid, "You have ~r~detached~w~ your glasses."); } } case 1: { PlayerData[playerid][pToggleGlasses] = 0; SetPlayerAttachedObject(playerid, 0, PlayerData[playerid][pGlasses], 2, AccessoryData[playerid][0][0], AccessoryData[playerid][0][1], AccessoryData[playerid][0][2], AccessoryData[playerid][0][3], AccessoryData[playerid][0][4], AccessoryData[playerid][0][5], AccessoryData[playerid][0][6], AccessoryData[playerid][0][7], AccessoryData[playerid][0][8]); EditAttachedObject(playerid, 0); PlayerData[playerid][pEditType] = 1; } case 2: { RemovePlayerAttachedObject(playerid, 0); PlayerData[playerid][pGlasses] = 0; SendServerMessage(playerid, "You have deleted your glasses."); } } } return 1; } Dialog:EditHat(playerid, response, listitem, inputtext[]) { if (response) { switch (listitem) { case 0: { if (!IsPlayerAttachedObjectSlotUsed(playerid, 1)) { PlayerData[playerid][pToggleHat] = 0; SetPlayerAttachedObject(playerid, 1, PlayerData[playerid][pHat], 2, AccessoryData[playerid][1][0], AccessoryData[playerid][1][1], AccessoryData[playerid][1][2], AccessoryData[playerid][1][3], AccessoryData[playerid][1][4], AccessoryData[playerid][1][5], AccessoryData[playerid][1][6], AccessoryData[playerid][1][7], AccessoryData[playerid][1][8]); ShowPlayerFooter(playerid, "You have ~g~attached~w~ your hat."); } else { PlayerData[playerid][pToggleHat] = 1; RemovePlayerAttachedObject(playerid, 1); ShowPlayerFooter(playerid, "You have ~r~detached~w~ your hat."); } } case 1: { PlayerData[playerid][pToggleHat] = 0; SetPlayerAttachedObject(playerid, 1, PlayerData[playerid][pHat], 2, AccessoryData[playerid][1][0], AccessoryData[playerid][1][1], AccessoryData[playerid][1][2], AccessoryData[playerid][1][3], AccessoryData[playerid][1][4], AccessoryData[playerid][1][5], AccessoryData[playerid][1][6], AccessoryData[playerid][1][7], AccessoryData[playerid][1][8]); EditAttachedObject(playerid, 1); PlayerData[playerid][pEditType] = 2; } case 2: { RemovePlayerAttachedObject(playerid, 1); PlayerData[playerid][pHat] = 0; SendServerMessage(playerid, "You have deleted your hat."); } } } return 1; } Dialog:EditBandana(playerid, response, listitem, inputtext[]) { if (response) { switch (listitem) { case 0: { if (!IsPlayerAttachedObjectSlotUsed(playerid, 2)) { PlayerData[playerid][pToggleBandana] = 0; SetPlayerAttachedObject(playerid, 2, PlayerData[playerid][pBandana], 2, AccessoryData[playerid][2][0], AccessoryData[playerid][2][1], AccessoryData[playerid][2][2], AccessoryData[playerid][2][3], AccessoryData[playerid][2][4], AccessoryData[playerid][2][5], AccessoryData[playerid][2][6], AccessoryData[playerid][2][7], AccessoryData[playerid][2][8]); ShowPlayerFooter(playerid, "You have ~g~attached~w~ your bandana."); } else { PlayerData[playerid][pToggleBandana] = 1; RemovePlayerAttachedObject(playerid, 2); ShowPlayerFooter(playerid, "You have ~r~detached~w~ your bandana."); } } case 1: { PlayerData[playerid][pToggleBandana] = 0; SetPlayerAttachedObject(playerid, 2, PlayerData[playerid][pBandana], 2, AccessoryData[playerid][2][0], AccessoryData[playerid][2][1], AccessoryData[playerid][2][2], AccessoryData[playerid][2][3], AccessoryData[playerid][2][4], AccessoryData[playerid][2][5], AccessoryData[playerid][2][6], AccessoryData[playerid][2][7], AccessoryData[playerid][2][8]); EditAttachedObject(playerid, 2); PlayerData[playerid][pEditType] = 3; } case 2: { RemovePlayerAttachedObject(playerid, 2); PlayerData[playerid][pBandana] = 0; SendServerMessage(playerid, "You have deleted your bandana."); } } } return 1; } Dialog:Accessory(playerid, response, listitem, inputtext[]) { if (response) { switch (listitem) { case 0: { if (!PlayerData[playerid][pGlasses]) return SendErrorMessage(playerid, "You don't own a pair of glasses."); Dialog_Show(playerid, EditGlasses, DIALOG_STYLE_LIST, "Glasses", "Toggle Glasses\nEdit Glasses\nDelete Glasses", "Select", "Cancel"); } case 1: { if (!PlayerData[playerid][pHat]) return SendErrorMessage(playerid, "You don't own a hat."); Dialog_Show(playerid, EditHat, DIALOG_STYLE_LIST, "Hat", "Toggle Hat\nEdit Hat\nDelete Hat", "Select", "Cancel"); } case 2: { if (!PlayerData[playerid][pBandana]) return SendErrorMessage(playerid, "You don't own a bandana."); Dialog_Show(playerid, EditBandana, DIALOG_STYLE_LIST, "Bandana", "Toggle Bandana\nEdit Bandana\nDelete Bandana", "Select", "Cancel"); } } } return 1; } Dialog:CharList(playerid, response, listitem, inputtext[]) { SetTimerEx("SelectTD", 200, false, "d", playerid); if (response) { if (!PlayerCharacters[playerid][listitem][0]) return SendErrorMessage(playerid, "The selected character slot is empty."); new string[160]; format(string, sizeof(string), "SELECT `Admin`, `Skin`, `CreateDate`, `LastLogin` FROM `characters` WHERE `Username` = '%s' AND `Character` = '%s'", PlayerData[playerid][pUsername], PlayerCharacters[playerid][listitem]); mysql_tquery(g_iHandle, string, "OnCharacterLookup", "dds", playerid, listitem + 1, PlayerCharacters[playerid][listitem]); } return 1; } Dialog:RegisterScreen(playerid, response, listitem, inputtext[]) { if (!response) return Kick(playerid); else if (isnull(inputtext)) return Dialog_Show(playerid, RegisterScreen, DIALOG_STYLE_PASSWORD, "Account Registration", "Welcome to South Central Roleplay, %s.\n\nNotice: Your account is not registered yet. Please enter your desired password:", "Register", "Cancel", ReturnName(playerid)); else { SQL_CreateAccount(PlayerData[playerid][pUsername], inputtext); ShowCharacterMenu(playerid); SendServerMessage(playerid, "Your account has been created and saved successfully."); } return 1; } Dialog:LoginScreen(playerid, response, listitem, inputtext[]) { if (!response) return Kick(playerid); else if (isnull(inputtext)) return Dialog_Show(playerid, LoginScreen, DIALOG_STYLE_PASSWORD, "Account Login", "Welcome back to South Central Roleplay!\n\nYour account was last seen on: %s.\n\nPlease enter your password below to login to your account:", "Login", "Cancel", PlayerData[playerid][pLoginDate]); else { SQL_AttemptLogin(playerid, inputtext); } return 1; } Dialog:DeleteChar(playerid, response, listitem, inputtext[]) { if (response) { new query[128]; format(query, sizeof(query), "DELETE FROM `characters` WHERE `Username` = '%s' AND `Character` = '%s'", PlayerData[playerid][pUsername], PlayerCharacters[playerid][PlayerData[playerid][pCharacter] - 1]); mysql_tquery(g_iHandle, query); SendServerMessage(playerid, "You have deleted \"%s\" from your account.", PlayerCharacters[playerid][PlayerData[playerid][pCharacter] - 1]); PlayerCharacters[playerid][PlayerData[playerid][pCharacter] - 1][0] = 0; ShowCharacterMenu(playerid); } return 1; } Dialog:DeleteCharacter(playerid, response, listitem, inputtext[]) { if (response) { new query[128]; format(query, sizeof(query), "DELETE FROM `characters` WHERE `Username` = '%s' AND `Character` = '%s'", PlayerData[playerid][pUsername], PlayerCharacters[playerid][PlayerData[playerid][pCharacterMenu] - 1]); mysql_tquery(g_iHandle, query); SendServerMessage(playerid, "You have deleted \"%s\" from your account.", PlayerCharacters[playerid][PlayerData[playerid][pCharacterMenu] - 1]); PlayerCharacters[playerid][PlayerData[playerid][pCharacterMenu] - 1][0] = 0; for (new i = 50; i < 58; i ++) { PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][i]); } PlayerData[playerid][pDisplayStats] = false; CancelSelectTextDraw(playerid); } return 1; } Dialog:CreateChar(playerid, response, listitem, inputtext[]) { if (!response) return PlayerData[playerid][pCharacter] = 0; else if (isnull(inputtext) || strlen(inputtext) > 20) return Dialog_Show(playerid, CreateChar, DIALOG_STYLE_INPUT, "Create Character", "Please enter the name of your new character below:\n\nWarning: Your name must be in the Firstname_Lastname format and not exceed 20 characters.", "Create", "Cancel"); else if (!IsValidRoleplayName(inputtext)) return Dialog_Show(playerid, CreateChar, DIALOG_STYLE_INPUT, "Create Character", "Error: You have entered an invalid roleplay name.\n\nPlease enter the name of your new character below:\n\nWarning: Your name must be in the Firstname_Lastname format and not exceed 20 characters.", "Create", "Cancel"); else { static query[128]; format(query, sizeof(query), "SELECT `ID` FROM `characters` WHERE `Character` = '%s'", inputtext); mysql_tquery(g_iHandle, query, "OnCharacterCheck", "ds", playerid, inputtext); } return 1; } Dialog:Gender(playerid, response, listitem, inputtext[]) { if (response) { PlayerData[playerid][pGender] = listitem + 1; switch (listitem) { case 0: { PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][16], "~r~Gender:~w~ Male"); PlayerTextDrawSetPreviewModel(playerid, PlayerData[playerid][pTextdraws][13], 98); PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][13]); PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][13]); } case 1: { PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][16], "~r~Gender:~w~ Female"); PlayerTextDrawSetPreviewModel(playerid, PlayerData[playerid][pTextdraws][13], 233); PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][13]); PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][13]); } } PlayerData[playerid][pSkin] = (listitem) ? (233) : (98); SetTimerEx("SelectTD", 200, false, "d", playerid); } else SetTimerEx("SelectTD", 200, false, "d", playerid); return 1; } Dialog:DateBirth(playerid, response, listitem, inputtext[]) { if (response) { new iDay, iMonth, iYear, str[64]; static const arrMonthDays[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; if (sscanf(inputtext, "pddd", iDay, iMonth, iYear)) { Dialog_Show(playerid, DateBirth, DIALOG_STYLE_INPUT, "Date of Birth", "Error: Invalid format specified!\n\nPlease enter your date of birth below (DD/MM/YYYY):", "Submit", "Cancel"); } else if (iYear < 1900 || iYear > 2014) { Dialog_Show(playerid, DateBirth, DIALOG_STYLE_INPUT, "Date of Birth", "Error: Invalid year specified!\n\nPlease enter your date of birth below (DD/MM/YYYY):", "Submit", "Cancel"); } else if (iMonth < 1 || iMonth > 12) { Dialog_Show(playerid, DateBirth, DIALOG_STYLE_INPUT, "Date of Birth", "Error: Invalid month specified!\n\nPlease enter your date of birth below (DD/MM/YYYY):", "Submit", "Cancel"); } else if (iDay < 1 || iDay > arrMonthDays[iMonth - 1]) { Dialog_Show(playerid, DateBirth, DIALOG_STYLE_INPUT, "Date of Birth", "Error: Invalid day specified!\n\nPlease enter your date of birth below (DD/MM/YYYY):", "Submit", "Cancel"); } else { format(PlayerData[playerid][pBirthdate], 24, inputtext); format(str, sizeof(str), "~r~Date of Birth:~w~ %s", inputtext); PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][15], str); } } return 1; } Dialog:Origin(playerid, response, listitem, inputtext[]) { if (response) { new str[64]; if (isnull(inputtext) || strlen(inputtext) > 32) { Dialog_Show(playerid, Origin, DIALOG_STYLE_INPUT, "Origin", "Please enter the geographical origin of your character below:", "Submit", "Cancel"); } else for (new i = 0, len = strlen(inputtext); i != len; i ++) { if ((inputtext[i] >= 'A' && inputtext[i] <= 'Z') || (inputtext[i] >= 'a' && inputtext[i] <= 'z') || (inputtext[i] >= '0' && inputtext[i] <= '9') || (inputtext[i] == ' ') || (inputtext[i] == ',') || (inputtext[i] == '.')) continue; else return Dialog_Show(playerid, Origin, DIALOG_STYLE_INPUT, "Origin", "Error: Only letters and numbers are accepted in the origin.\n\nPlease enter the geographical origin of your character below:", "Submit", "Cancel"); } format(PlayerData[playerid][pOrigin], 32, inputtext); format(str, sizeof(str), "~r~Origin:~w~ %s", inputtext); PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][17], str); } return 1; } Dialog:NewPass(playerid, response, listitem, inputtext[]) { if (response) { if (isnull(inputtext)) return Dialog_Show(playerid, NewPass, DIALOG_STYLE_PASSWORD, "Enter New Password", "Please enter your new password below.\n\nNote: Please use a strong and safe password for additional security.", "Change", "Cancel"); static buffer[129], query[256]; WP_Hash(buffer, sizeof(buffer), inputtext); inputtext[0] = '\0'; format(query, sizeof(query), "UPDATE `accounts` SET `Password` = '%s' WHERE `Username` = '%s'", buffer, PlayerData[playerid][pUsername]); mysql_tquery(g_iHandle, query); SendServerMessage(playerid, "You have changed your password."); } return 1; } Dialog:ChangePassword(playerid, response, listitem, inputtext[]) { if (response) { if (isnull(inputtext)) return cmd_changepass(playerid, "\1"); static buffer[129], query[256]; WP_Hash(buffer, sizeof(buffer), inputtext); inputtext[0] = '\0'; format(query, sizeof(query), "SELECT `Password` FROM `accounts` WHERE `Username` = '%s' AND `Password` = '%s'", PlayerData[playerid][pUsername], buffer); mysql_tquery(g_iHandle, query, "OnQueryFinished", "dd", playerid, THREAD_VERIFY_PASS); } return 1; } CMD:x(playerid, params[]) { new Float:x, Float:y, Float:z, Float:npos; if(PlayerData[playerid][pAdmin] >= 2) { if(sscanf(params, "f", npos)) return SendClientMessage(playerid, COLOR_LIGHTRED, "USAGE: /x [Cordinate]"); GetPlayerPos(playerid, x, y, z); SetPlayerPos(playerid, x+npos, y, z); return 1; } else return SendErrorMessage(playerid, "You're not authorized."); } COMMAND:y(playerid, params[]) { new Float:x, Float:y, Float:z, Float:npos; if(PlayerData[playerid][pAdmin] >= 2) { if(sscanf(params, "f", npos)) return SendClientMessage(playerid, COLOR_LIGHTRED, "USAGE: /y [Cordinate]"); GetPlayerPos(playerid, x, y, z); SetPlayerPos(playerid, x, y+npos, z); return 1; } else return SendErrorMessage(playerid, "You're not authorized."); } COMMAND:z(playerid, params[]) { new Float:x, Float:y, Float:z, Float:npos; if(PlayerData[playerid][pAdmin] >= 2) { if(sscanf(params, "f", npos)) return SendClientMessage(playerid, COLOR_LIGHTRED, "USAGE: /z [Cordinate]"); GetPlayerPos(playerid, x, y, z); SetPlayerPos(playerid, x, y, z+npos); return 1; } else return SendErrorMessage(playerid, "You're not authorized."); } // CMD:callsign(playerid, params[]) { new vehicleid; vehicleid = GetPlayerVehicleID(playerid); new string[32]; if(!IsPlayerInAnyVehicle(playerid)) return SendErrorMessage(playerid, "You're not in a vehicle."); if (GetFactionType(playerid) != FACTION_POLICE) return SendErrorMessage(playerid, "You must be a police officer."); if (!IsACruiser(GetPlayerVehicleID(playerid))) return SendErrorMessage(playerid, "You must be inside a police cruiser."); if(vehiclecallsign[GetPlayerVehicleID(playerid)] == 1) { Delete3DTextLabel(vehicle3Dtext[vehicleid]); vehiclecallsign[vehicleid] = 0; SendClientMessage(playerid, COLOR_RED, "Callsign removed."); return 1; } if(sscanf(params, "s[32]",string)) return SendErrorMessage(playerid, "You must enter a callsign."); if(vehiclecallsign[GetPlayerVehicleID(playerid)] == 0) { vehicle3Dtext[vehicleid] = Create3DTextLabel(string, COLOR_WHITE, 0.0, 0.0, 0.0, 10.0, 0, 1); Attach3DTextLabelToVehicle(vehicle3Dtext[vehicleid], vehicleid, 0.0, -2.8, 0.0); vehiclecallsign[vehicleid] = 1; } return 1; } CMD:aremovecall(playerid, params[]) { new vehicleid; if (PlayerData[playerid][pAdmin] < 1) return SendErrorMessage(playerid, "You must be an administrator."); if(sscanf(params, "i", vehicleid)) return SendErrorMessage(playerid, "Must enter a vehicle ID."); if (vehicleid < 1 || vehicleid > MAX_VEHICLES || !IsValidVehicle(vehicleid)) return SendErrorMessage(playerid, "You have specified an invalid vehicle ID."); Delete3DTextLabel(vehicle3Dtext[vehicleid]); return 1; } // CMD:b(playerid, params[]) { if (isnull(params)) return SendSyntaxMessage(playerid, "/b [local OOC]"); if (strlen(params) > 64) { if(PlayerData[playerid][pAdminDuty] == 1) { SendNearbyMessage(playerid, 20.0, COLOR_WHITE, "{33EE33}%s{FFFFFF} [%d]: (( %.64s", ReturnName(playerid, 0), playerid, params); SendNearbyMessage(playerid, 20.0, COLOR_WHITE, "...%s ))", params[64]); return 1; } SendNearbyMessage(playerid, 20.0, COLOR_WHITE, "%s [%d]: (( %.64s", ReturnName(playerid, 0), playerid, params); SendNearbyMessage(playerid, 20.0, COLOR_WHITE, "...%s ))", params[64]); } else { if(PlayerData[playerid][pAdminDuty] == 1) { SendNearbyMessage(playerid, 20.0, COLOR_WHITE, "{33EE33}%s{FFFFFF} [%d]: (( %s ))", ReturnName(playerid, 0), playerid, params); return 1; } SendNearbyMessage(playerid, 20.0, COLOR_WHITE, "%s [%d]: (( %s ))", ReturnName(playerid, 0), playerid, params); } //format(string, sizeof(string), "(( %s ))", params); //SetPlayerChatBubble(playerid, string, COLOR_WHITE, 10.0, 6000); return 1; } CMD:me(playerid, params[]) { if (isnull(params)) return SendSyntaxMessage(playerid, "/me [action]"); if (strlen(params) > 64) { SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "* %s %.64s", ReturnName(playerid, 0), params); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "...%s", params[64]); } else { SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "* %s %s", ReturnName(playerid, 0), params); } //format(string, sizeof(string), "* %s %s", ReturnName(playerid, 0), params); //SetPlayerChatBubble(playerid, string, COLOR_PURPLE, 30.0, 6000); return 1; } CMD:do(playerid, params[]) { if (isnull(params)) return SendSyntaxMessage(playerid, "/do [description]"); if (strlen(params) > 64) { SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "* %.64s", params); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "...%s (( %s ))", params[64], ReturnName(playerid, 0)); } else { SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "* %s (( %s ))", params, ReturnName(playerid, 0)); } //format(string, sizeof(string), "* %s (( %s ))", params, ReturnName(playerid, 0)); //SetPlayerChatBubble(playerid, string, COLOR_PURPLE, 30.0, 6000); return 1; } CMD:ame(playerid, params[]) { static string[128]; if (isnull(params)) return SendSyntaxMessage(playerid, "/ame [action]"); format(string, sizeof(string), "* %s %s", ReturnName(playerid, 0), params); SetPlayerChatBubble(playerid, string, COLOR_PURPLE, 30.0, 10000); SendClientMessageEx(playerid, COLOR_PURPLE, "* %s %s", ReturnName(playerid, 0), params); return 1; } CMD:ado(playerid, params[]) { static string[128]; if (isnull(params)) return SendSyntaxMessage(playerid, "/ado [description]"); format(string, sizeof(string), "* %s (( %s ))", params, ReturnName(playerid, 0)); SetPlayerChatBubble(playerid, string, COLOR_PURPLE, 30.0, 10000); SendClientMessageEx(playerid, COLOR_PURPLE, "* %s (( %s ))", params, ReturnName(playerid, 0)); return 1; } CMD:s(playerid, params[]) { if (isnull(params)) return SendSyntaxMessage(playerid, "/(s)hout [shout text]"); if (strlen(params) > 64) { SendNearbyMessage(playerid, 30.0, COLOR_WHITE, "%s shouts: %.64s", ReturnName(playerid, 0), params); SendNearbyMessage(playerid, 30.0, COLOR_WHITE, "...%s!", params[64]); } else { SendNearbyMessage(playerid, 30.0, COLOR_WHITE, "%s shouts: %s!", ReturnName(playerid, 0), params); } //format(string, sizeof(string), "shouts: %s", params); //SetPlayerChatBubble(playerid, string, COLOR_WHITE, 30.0, 6000); return 1; } CMD:l(playerid, params[]) { if (isnull(params)) return SendSyntaxMessage(playerid, "/(l)ow [low text]"); if (strlen(params) > 64) { SendNearbyMessage(playerid, 5.0, COLOR_WHITE, "[low] %s says: %.64s", ReturnName(playerid, 0), params); SendNearbyMessage(playerid, 5.0, COLOR_WHITE, "...%s", params[64]); } else { SendNearbyMessage(playerid, 5.0, COLOR_WHITE, "[low] %s says: %s", ReturnName(playerid, 0), params); } //format(string, sizeof(string), "[low] says: %s", params); //SetPlayerChatBubble(playerid, string, COLOR_WHITE, 5.0, 6000); return 1; } CMD:kill(playerid, params[]) { if (PlayerData[playerid][pHospital] != -1 || PlayerData[playerid][pCuffed] || PlayerData[playerid][pJailTime] > 0 || PlayerData[playerid][pDrivingTest]) return SendErrorMessage(playerid, "You can't kill yourself at the moment."); SetPlayerHealth(playerid, 0.0); return 1; } CMD:o(playerid, params[]) { if (g_StatusOOC && PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "An administrator has disabled global OOC chat."); if (isnull(params)) return SendSyntaxMessage(playerid, "/o [global OOC]"); if (PlayerData[playerid][pDisableOOC]) return SendErrorMessage(playerid, "You must enable OOC chat first."); if (strlen(params) > 64) { foreach (new i : Player) if (!PlayerData[i][pDisableOOC] && PlayerData[i][pCreated]) { SendClientMessageEx(i, 0xAAC4E5FF, "(( [OOC] %s: %.64s", ReturnName(playerid, 0), params); SendClientMessageEx(i, 0xAAC4E5FF, "...%s ))", params[64]); } } else { foreach (new i : Player) if (!PlayerData[i][pDisableOOC] && PlayerData[i][pCreated]) { SendClientMessageEx(i, 0xAAC4E5FF, "(( [OOC] %s: %s ))", ReturnName(playerid, 0), params); } } return 1; } CMD:radio(playerid, params[]) return cmd_r(playerid, params); CMD:ooc(playerid, params[]) return cmd_o(playerid, params); CMD:f(playerid, params[]) return cmd_fac(playerid, params); CMD:megaphone(playerid, params[]) return cmd_m(playerid, params); CMD:shout(playerid, params[]) return cmd_s(playerid, params); CMD:low(playerid, params[]) return cmd_l(playerid, params); CMD:admin(playerid, params[]) return cmd_a(playerid, params); CMD:w(playerid, params[]) return cmd_whisper(playerid, params); CMD:help(playerid, params[]) { SendClientMessage(playerid, COLOR_CLIENT, "ACCOUNT:{FFFFFF} /changepass, /lastlogged, /username, /properties."); SendClientMessage(playerid, COLOR_CLIENT, "GENERAL:{FFFFFF} /stats, /report, /seekhelp, /acc, /me, /do, /(s)hout, /(o)oc, /inventory, /switch."); SendClientMessage(playerid, COLOR_CLIENT, "GENERAL:{FFFFFF} /approve, /faq, /sell, /paint, /drink, /bank, /cook, /vest, /ammo, /usekit, /phone."); SendClientMessage(playerid, COLOR_CLIENT, "GENERAL:{FFFFFF} /id, /call, /hangup, /text, /drop, /flist, /crates, /fill, /pay, /gps, /open, /usedrug."); SendClientMessage(playerid, COLOR_CLIENT, "GENERAL:{FFFFFF} /animcmds, /backpack, /boombox, /channel, /jobcmds, /supporters, /disablecp, /stopanim."); SendClientMessage(playerid, COLOR_CLIENT, "GENERAL:{FFFFFF} /shakehand, /showlicense, /frisk, /toghud, /passwep, /setradio, /picklock, /resetvw."); SendClientMessage(playerid, COLOR_CLIENT, "PROPERTY:{FFFFFF} /buy, /abandon, /lock, /housecmds, /products, /vault, /binfo, /bizcmds."); if (PlayerData[playerid][pFactionMod]) SendClientMessage(playerid, COLOR_CLIENT, "FACTION:{FFFFFF} /createfaction, /editfaction, /destroyfaction."); if (PlayerData[playerid][pFaction] != -1) { SendClientMessage(playerid, COLOR_CLIENT, "FACTION:{FFFFFF} /online, /(f)ac, /fquit, /flocker, /finvite, /fremove, /frank, /fspray."); if (GetFactionType(playerid) == FACTION_POLICE) { SendClientMessage(playerid, COLOR_CLIENT, "FACTION:{FFFFFF} /tazer, /cuff, /uncuff, /drag, /detain, /mdc, /arrest, /radio, /dept, /seizeplant."); SendClientMessage(playerid, COLOR_CLIENT, "FACTION:{FFFFFF} /ticket, /spike, /roadblock, /fingerprint, /impound, /revokeweapon."); SendClientMessage(playerid, COLOR_CLIENT, "FACTION:{FFFFFF} /take, /kickdoor, /siren, /beanbag /callsign"); } else if (GetFactionType(playerid) == FACTION_NEWS) { SendClientMessage(playerid, COLOR_CLIENT, "FACTION:{FFFFFF} /radio, /broadcast, /bc, /inviteguest, /removeguest."); } else if (GetFactionType(playerid) == FACTION_MEDIC) { SendClientMessage(playerid, COLOR_CLIENT, "FACTION:{FFFFFF} /radio, /dept, /bandage, /loadinjured, /dropinjured."); } else if (GetFactionType(playerid) == FACTION_GOV) { SendClientMessage(playerid, COLOR_CLIENT, "FACTION:{FFFFFF} /radio, /dept, /twithdraw, /tdeposit."); } } SendClientMessage(playerid, COLOR_CLIENT, "VEHICLE:{FFFFFF} /park, /lock, /abandon, /refuel, /unmod, /trunk, /listcars, /engine, /lights, /hood, /tow."); if (PlayerData[playerid][pTester] > 0) { SendClientMessage(playerid, COLOR_CLIENT, "SUPPORTER:{FFFFFF} /t, /sduty, /ah, /dh, /kick"); } if (PlayerData[playerid][pAdmin] > 0) { SendClientMessage(playerid, COLOR_CLIENT, "ADMIN:{FFFFFF} /(a)dmin, /ahelp."); } return 1; } CMD:changepass(playerid, params[]) { Dialog_Show(playerid, ChangePassword, DIALOG_STYLE_PASSWORD, "Change Password", "Please enter your existing password below:", "Submit", "Cancel"); return 1; } CMD:lastlogged(playerid, params[]) { if (isnull(params) || strlen(params) > 24) return SendSyntaxMessage(playerid, "/lastlogged [username]"); static query[128]; format(query, sizeof(query), "SELECT `LoginDate` FROM `accounts` WHERE `Username` = '%s'", SQL_ReturnEscaped(params)); mysql_tquery(g_iHandle, query, "OnLoginDate", "ds", playerid, params); return 1; } CMD:engine(playerid, params[]) { new vehicleid = GetPlayerVehicleID(playerid); if (!IsEngineVehicle(vehicleid)) return SendErrorMessage(playerid, "You are not in any vehicle."); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendErrorMessage(playerid, "You can't do this as you're not the driver."); if (CoreVehicles[vehicleid][vehFuel] < 1) return SendErrorMessage(playerid, "The fuel tank is empty."); if (ReturnVehicleHealth(vehicleid) <= 300) return SendErrorMessage(playerid, "This vehicle is totalled and can't be started."); switch (GetEngineStatus(vehicleid)) { case false: { SetEngineStatus(vehicleid, true); ShowPlayerFooter(playerid, "You have ~g~started~w~ the engine!"); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s inserts the key into the ignition and starts the engine.", ReturnName(playerid, 0)); } case true: { SetEngineStatus(vehicleid, false); ShowPlayerFooter(playerid, "You have ~r~stopped~w~ the engine!"); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s inserts the key into the ignition and stops the engine.", ReturnName(playerid, 0)); } } return 1; } CMD:lights(playerid, params[]) { new vehicleid = GetPlayerVehicleID(playerid); if (!IsEngineVehicle(vehicleid)) return SendErrorMessage(playerid, "You are not in any vehicle."); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendErrorMessage(playerid, "You can't do this as you're not the driver."); switch (GetLightStatus(vehicleid)) { case false: { SetLightStatus(vehicleid, true); ShowPlayerFooter(playerid, "You have ~g~turned on~w~ the lights!"); } case true: { SetLightStatus(vehicleid, false); ShowPlayerFooter(playerid, "You have ~r~turned off~w~ the lights!"); } } return 1; } CMD:hood(playerid, params[]) { for (new i = 1; i != MAX_VEHICLES; i ++) if (IsValidVehicle(i) && IsPlayerNearHood(playerid, i)) { if (!IsDoorVehicle(i)) return SendErrorMessage(playerid, "This vehicle doesn't have a hood."); if (!GetHoodStatus(i)) { SetHoodStatus(i, true); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has opened the hood of the vehicle.", ReturnName(playerid, 0)); ShowPlayerFooter(playerid, "You have ~g~opened~w~ the hood!"); } else { SetHoodStatus(i, false); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has closed the hood of the vehicle.", ReturnName(playerid, 0)); ShowPlayerFooter(playerid, "You have ~g~closed~w~ the hood!"); } return 1; } SendErrorMessage(playerid, "You are not in range of any vehicle."); return 1; } CMD:windows(playerid, params[]) { new vehicleid = GetPlayerVehicleID(playerid); if (!IsWindowedVehicle(vehicleid)) return SendErrorMessage(playerid, "You are not in any vehicle with windows."); switch (CoreVehicles[vehicleid][vehWindowsDown]) { case false: { CoreVehicles[vehicleid][vehWindowsDown] = true; ShowPlayerFooter(playerid, "You have ~g~rolled down~w~ the windows!"); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s presses a button and rolls down the windows.", ReturnName(playerid, 0)); } case true: { CoreVehicles[vehicleid][vehWindowsDown] = false; ShowPlayerFooter(playerid, "You have ~r~rolled up~w~ the windows!"); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s presses a button and rolls up the windows.", ReturnName(playerid, 0)); } } return 1; } CMD:makeadmin(playerid, params[]) { static userid, level; if (PlayerData[playerid][pAdmin] < 6) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "ud", userid, level)) return SendSyntaxMessage(playerid, "/makeadmin [playerid/name] [level]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (level < 0 || level > 6) return SendErrorMessage(playerid, "Invalid admin level. Levels range from 0 to 6."); if (level > PlayerData[userid][pAdmin]) { SendAdminAction(playerid, "You have promoted %s to a higher admin level (%d).", ReturnName(userid, 0), level); SendAdminAction(userid, "%s has promoted you to a higher admin level (%d).", ReturnName(playerid, 0), level); } else { SendAdminAction(playerid, "You have demoted %s to a lower admin level (%d).", ReturnName(userid, 0), level); SendAdminAction(userid, "%s has demoted you to a lower admin level (%d).", ReturnName(playerid, 0), level); } PlayerData[userid][pAdmin] = level; Log_Write("logs/admin_log.txt", "[%s] %s has set %s's admin level to %d.", ReturnDate(), ReturnName(playerid, 0), ReturnName(userid, 0), level); return 1; } CMD:a(playerid, params[]) { if (!PlayerData[playerid][pAdmin]) return SendErrorMessage(playerid, "You are not an administrator."); if (isnull(params)) return SendSyntaxMessage(playerid, "/a [admin text]"); if (strlen(params) > 64) { SendAdminAlert(COLOR_ADMINCHAT, "** %d Admin %s: %.64s", PlayerData[playerid][pAdmin], ReturnName(playerid, 0), params); SendAdminAlert(COLOR_ADMINCHAT, "...%s **", params[64]); } else { SendAdminAlert(COLOR_ADMINCHAT, "** %d Admin %s: %s **", PlayerData[playerid][pAdmin], ReturnName(playerid, 0), params); } return 1; } CMD:t(playerid, params[]) { if (!PlayerData[playerid][pTester] && !PlayerData[playerid][pAdmin]) return SendErrorMessage(playerid, "You are not a tester."); if (isnull(params)) return SendSyntaxMessage(playerid, "/t [tester text]"); if (strlen(params) > 64) { if (PlayerData[playerid][pAdmin]) SendTesterMessage(COLOR_LIGHTRED, "** Admin %s: %.64s", ReturnName(playerid, 0), params); else SendTesterMessage(COLOR_LIGHTRED, "** Tester %s: %.64s", ReturnName(playerid, 0), params); SendTesterMessage(COLOR_LIGHTRED, "...%s **", params[64]); } else { if (PlayerData[playerid][pAdmin]) SendTesterMessage(COLOR_LIGHTRED, "** Admin %s: %s", ReturnName(playerid, 0), params); else SendTesterMessage(COLOR_LIGHTRED, "** Tester %s: %s", ReturnName(playerid, 0), params); } return 1; } CMD:aduty(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 1) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (!PlayerData[playerid][pAdminDuty]) { SetPlayerColor(playerid, 0x33CC3300); PlayerData[playerid][pAdminDuty] = 1; SendClientMessageToAllEx(COLOR_GREEN, "** %s is now on duty as an admin (/report for assistance).", ReturnName(playerid, 0)); } else { SetPlayerColor(playerid, DEFAULT_COLOR); PlayerData[playerid][pAdminDuty] = 0; SendServerMessage(playerid, "You are no longer on admin duty."); } return 1; } CMD:ahelp(playerid, params[]) { if (!PlayerData[playerid][pAdmin]) return SendErrorMessage(playerid, "You are not an administrator."); if (PlayerData[playerid][pAdmin] >= 1) { SendClientMessage(playerid, COLOR_YELLOW, "[LEVEL 1]:{FFFFFF} /a, /reports, /spectate, /ajail, /release, /kick, /mute, /unmute, /freeze, /unfreeze."); SendClientMessage(playerid, COLOR_YELLOW, "[LEVEL 1]:{FFFFFF} /aduty, /ban, /skin /goto /aremovecall"); } if (PlayerData[playerid][pAdmin] >= 2) { SendClientMessage(playerid, COLOR_YELLOW, "[LEVEL 2]:{FFFFFF} /respawn, /warn, /checkstats, /shooter, /goto, /bring, /setinterior, /setvw."); SendClientMessage(playerid, COLOR_YELLOW, "[LEVEL 2]:{FFFFFF} /sendto, /clearchat, /spawn, /refill, /revive, /aslap, /acceptname, /declinename, /atalk."); SendClientMessage(playerid, COLOR_YELLOW, "[LEVEL 2]:{FFFFFF} /masked, /listguns, /respawncar, /respawncars, /respawnnear, /heal, /bringcar, /gotocar."); SendClientMessage(playerid, COLOR_YELLOW, "[LEVEL 2]:{FFFFFF} /x /y /z"); } if (PlayerData[playerid][pAdmin] >= 3) { SendClientMessage(playerid, COLOR_YELLOW, "[LEVEL 3]:{FFFFFF} /unban, /blacklist, /getip, /togooc, /health, /armor, /resetweps, /arepair, /listwarns."); SendClientMessage(playerid, COLOR_YELLOW, "[LEVEL 3]:{FFFFFF} /entercar, /flipcar, /veh, /destroyveh, /near, /healall, /tracenumber, /bleeding."); SendClientMessage(playerid, COLOR_YELLOW, "[LEVEL 3]:{FFFFFF} /atune, /acolorcar, /apaintjob, /afire, /akillfire, /adestroybox."); } if (PlayerData[playerid][pAdmin] >= 4) { SendClientMessage(playerid, COLOR_YELLOW, "[LEVEL 4]:{FFFFFF} /givewep, /settester, /baninfo, /setname, /asetfaction, /asetrank, /setitem."); SendClientMessage(playerid, COLOR_YELLOW, "[LEVEL 4]:{FFFFFF} /asellhouse, /asellbiz, /jetpack, /setweather, /setfuel, /setcarhp, /spawnitem."); SendClientMessage(playerid, COLOR_YELLOW, "[LEVEL 4]:{FFFFFF} /setquantity, /destroyitem, /setplayer, /setleader, /setinventory, /givecar."); } if (PlayerData[playerid][pAdmin] >= 5) { SendClientMessage(playerid, COLOR_YELLOW, "[LEVEL 5]:{FFFFFF} /dynamichelp, /givecash, /clearinventory, /clearwarns, /saveall, /restart."); } if (PlayerData[playerid][pAdmin] >= 6) { SendClientMessage(playerid, COLOR_YELLOW, "[LEVEL 6]:{FFFFFF} /makeadmin, /deleteaccount, /deletechar, /factionmod, /panel."); } return 1; } CMD:dynamichelp(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 5) return 1; SendClientMessage(playerid, COLOR_CLIENT, "DYNAMIC:{FFFFFF} /createhouse, /createbiz, /createentrance, /createpump, /createcrate, /createfaction."); SendClientMessage(playerid, COLOR_CLIENT, "DYNAMIC:{FFFFFF} /creategate, /createcar, /createatm, /createvendor, /creategarbage, /edithouse, /editbiz."); SendClientMessage(playerid, COLOR_CLIENT, "DYNAMIC:{FFFFFF} /bizstate, /destroybiz, /editentrance, /editfaction, /editgate, /setpump, /destroyhouse."); SendClientMessage(playerid, COLOR_CLIENT, "DYNAMIC:{FFFFFF} /destroypump, /destroyentrance, /destroypump, /destroycrate, /destroyfaction, /destroygate"); SendClientMessage(playerid, COLOR_CLIENT, "DYNAMIC:{FFFFFF} /destroyatm, /destroygarbage, /createrack, /editrack, /destroyrack, /createspeed, /destroyspeed."); SendClientMessage(playerid, COLOR_CLIENT, "DYNAMIC:{FFFFFF} /destroyplant, /createdetector, /destroydetector. /createbillboard /destroybillboard /editbillboard"); return 1; } CMD:report(playerid, params[]) { new reportid = -1; if (isnull(params)) { SendSyntaxMessage(playerid, "/report [reason]"); SendClientMessage(playerid, COLOR_LIGHTRED, "[WARNING]:{FFFFFF} Please only use this command for valid purposes only."); return 1; } if (Report_GetCount(playerid) > 5) return SendErrorMessage(playerid, "You already have 5 active reports!"); if (PlayerData[playerid][pReportTime] >= gettime()) return SendErrorMessage(playerid, "You must wait %d seconds before sending another report.", PlayerData[playerid][pReportTime] - gettime()); if ((reportid = Report_Add(playerid, params)) != -1) { ShowPlayerFooter(playerid, "Your ~g~report~w~ has been sent!"); foreach (new i : Player) { if (PlayerData[i][pAdmin] > 0 && PlayerData[i][pAdminDuty]) { SendClientMessageEx(i, COLOR_LIGHTYELLOW, "[REPORT %d]: %s (ID: %d) reports: %s", reportid, ReturnName(playerid, 0), playerid, params); } } PlayerData[playerid][pReportTime] = gettime() + 15; SendServerMessage(playerid, "Your report has been sent to any admins online."); } else { SendErrorMessage(playerid, "The report list is full. Please wait for a while."); } return 1; } CMD:reports(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 1) return SendErrorMessage(playerid, "You don't have permission to use this command."); new count, text[128]; for (new i = 0; i != MAX_REPORTS; i ++) { if (!ReportData[i][rExists]) continue; strunpack(text, ReportData[i][rText]); SendClientMessageEx(playerid, COLOR_LIGHTYELLOW, "[RID: %d] %s (ID: %d) reported: %s", i, ReturnName(ReportData[i][rPlayer]), ReportData[i][rPlayer], text); count++; } if (!count) return SendErrorMessage(playerid, "There are no active reports to display."); SendServerMessage(playerid, "Please use \"/ar RID\" or \"/dr RID\" to accept or deny a report."); return 1; } CMD:ar(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 1) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (isnull(params)) return SendSyntaxMessage(playerid, "/ar [report id] (/reports for a list)"); new reportid = strval(params), string[64]; if ((reportid < 0 || reportid >= MAX_REPORTS) || !ReportData[reportid][rExists]) return SendErrorMessage(playerid, "Invalid report ID. Reports list from 0 to %d.", MAX_REPORTS); format(string, sizeof(string), "You have ~g~accepted~w~ report ID: %d.", reportid); ShowPlayerFooter(playerid, string); SendAdminAction(ReportData[reportid][rPlayer], "%s (ID: %d) has accepted your report.", ReturnName(playerid, 0), playerid); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has accepted %s's report.", ReturnName(playerid, 0), ReturnName(ReportData[reportid][rPlayer], 0)); Report_Remove(reportid); return 1; } CMD:dr(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 1) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (isnull(params)) return SendSyntaxMessage(playerid, "/dr [report id] (/reports for a list)"); new reportid = strval(params), string[64]; if ((reportid < 0 || reportid >= MAX_REPORTS) || !ReportData[reportid][rExists]) return SendErrorMessage(playerid, "Invalid report ID. Reports list from 0 to %d.", MAX_REPORTS); format(string, sizeof(string), "You have ~r~denied~w~ report ID: %d.", reportid); ShowPlayerFooter(playerid, string); SendAdminAction(ReportData[reportid][rPlayer], "%s (ID: %d) has denied your report.", ReturnName(playerid, 0), playerid); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has denied %s's report.", ReturnName(playerid, 0), ReturnName(ReportData[reportid][rPlayer], 0)); Report_Remove(reportid); return 1; } CMD:spectate(playerid, params[]) { new userid; if (PlayerData[playerid][pAdmin] < 1) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (!isnull(params) && !strcmp(params, "off", true)) { if (GetPlayerState(playerid) != PLAYER_STATE_SPECTATING) return SendErrorMessage(playerid, "You are not spectating any player."); PlayerSpectatePlayer(playerid, INVALID_PLAYER_ID); PlayerSpectateVehicle(playerid, INVALID_VEHICLE_ID); SetSpawnInfo(playerid, 0, PlayerData[playerid][pSkin], PlayerData[playerid][pPos][0], PlayerData[playerid][pPos][1], PlayerData[playerid][pPos][2], PlayerData[playerid][pPos][3], 0, 0, 0, 0, 0, 0); TogglePlayerSpectating(playerid, false); return SendServerMessage(playerid, "You are no longer in spectator mode."); } if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/spectate [playerid/name] - Type \"/spectate off\" to stop spectating."); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (GetPlayerState(playerid) != PLAYER_STATE_SPECTATING) { GetPlayerPos(playerid, PlayerData[playerid][pPos][0], PlayerData[playerid][pPos][1], PlayerData[playerid][pPos][2]); GetPlayerFacingAngle(playerid, PlayerData[playerid][pPos][3]); PlayerData[playerid][pInterior] = GetPlayerInterior(playerid); PlayerData[playerid][pWorld] = GetPlayerVirtualWorld(playerid); } SetPlayerInterior(playerid, GetPlayerInterior(userid)); SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(userid)); TogglePlayerSpectating(playerid, 1); if (IsPlayerInAnyVehicle(userid)) PlayerSpectateVehicle(playerid, GetPlayerVehicleID(userid)); else PlayerSpectatePlayer(playerid, userid); SendServerMessage(playerid, "You are now spectating %s (ID: %d).", ReturnName(userid, 0), userid); PlayerData[playerid][pSpectator] = userid; return 1; } CMD:ajail(playerid, params[]) { static userid, minutes, reason[128]; if (PlayerData[playerid][pAdmin] < 1) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "uds[128]", userid, minutes, reason)) return SendSyntaxMessage(playerid, "/ajail [playerid/name] [minutes] [reason]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (minutes < 1) return SendErrorMessage(playerid, "You can't jail a player for under 0 minutes."); if (minutes > 30 && PlayerData[playerid][pTester] && !PlayerData[playerid][pAdmin]) return SendErrorMessage(playerid, "Supporters can't jail players for more than 30 minutes."); ClearAnimations(userid); PlayerTextDrawShow(userid, PlayerData[userid][pTextdraws][70]); SetPlayerPos(userid, 197.6346, 175.3765, 1003.0234); SetPlayerInterior(userid, 3); SetPlayerVirtualWorld(userid, (playerid + 100)); SetPlayerFacingAngle(userid, 0.0); SetCameraBehindPlayer(userid); ResetWeapons(userid); ShowHungerTextdraw(userid, 0); ResetPlayer(userid); PlayerData[userid][pJailTime] = minutes * 60; PlayerData[userid][pPrisoned] = 0; SendAdminAction(playerid, "You have jailed %s for %d minutes (%s).", ReturnName(userid, 0), minutes, reason); SendAdminAction(userid, "%s has jailed you for %d minutes (%s).", ReturnName(playerid, 0), minutes, reason); SendClientMessageToAllEx(COLOR_LIGHTRED, "[ADMIN]: %s has jailed %s for %d minutes for: %s", ReturnName(playerid, 0), ReturnName(userid, 0), minutes, reason); Log_Write("logs/jail_log.txt", "[%s] %s has jailed %s for %d minutes, reason: %s.", ReturnDate(), ReturnName(playerid, 0), ReturnName(userid, 0), minutes, reason); return 1; } CMD:release(playerid, params[]) { static userid; if (PlayerData[playerid][pAdmin] < 1) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/release [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (!PlayerData[userid][pJailTime]) return SendErrorMessage(playerid, "You can't release a player that's not in jail."); PlayerData[userid][pJailTime] = 1; SendAdminAction(playerid, "You have released %s from jail.", ReturnName(userid, 0)); SendAdminAction(userid, "%s has released you from jail.", ReturnName(playerid, 0)); Log_Write("logs/jail_log.txt", "[%s] %s has released %s from jail.", ReturnDate(), ReturnName(playerid, 0), ReturnName(userid, 0)); return 1; } CMD:bleeding(playerid, params[]) { static userid; if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/bleeding [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); switch (PlayerData[userid][pBleeding]) { case 0: { PlayerData[userid][pBleeding] = 1; PlayerData[userid][pBleedTime] = 10; CreateBlood(userid); SetTimerEx("HidePlayerBox", 500, false, "dd", userid, _:ShowPlayerBox(userid, 0xFF000066)); SendServerMessage(playerid, "You have enabled bleeding mode for %s.", ReturnName(userid, 0)); } case 1: { PlayerData[userid][pBleeding] = 0; PlayerData[userid][pBleedTime] = 0; SendServerMessage(playerid, "You have disabled bleeding mode for %s.", ReturnName(userid, 0)); } } return 1; } CMD:aslap(playerid, params[]) { static userid; if (PlayerData[playerid][pAdmin] < 1) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/aslap [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); static Float:x, Float:y, Float:z; GetPlayerPos(userid, x, y, z); SetPlayerPos(userid, x, y, z + 5); PlayerPlaySound(userid, 1130, 0.0, 0.0, 0.0); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has slapped %s.", ReturnName(playerid, 0), ReturnName(userid, 0)); return 1; } CMD:kick(playerid, params[]) { static userid, reason[128]; if (PlayerData[playerid][pAdmin] < 1 && PlayerData[playerid][pTester] < 1) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "us[128]", userid, reason)) return SendSyntaxMessage(playerid, "/kick [playerid/name] [reason]"); if (userid == INVALID_PLAYER_ID || (IsPlayerConnected(userid) && PlayerData[userid][pKicked])) return SendErrorMessage(playerid, "You have specified an invalid player."); if (PlayerData[userid][pAdmin] > PlayerData[playerid][pAdmin]) return SendErrorMessage(playerid, "The specified player has higher authority."); SendClientMessageToAllEx(COLOR_LIGHTRED, "[ADMIN]: %s has kicked %s for: %s.", ReturnName(playerid, 0), ReturnName(userid, 0), reason); Log_Write("logs/kick_log.txt", "[%s] %s has kicked %s for: %s.", ReturnDate(), ReturnName(playerid, 0), ReturnName(userid, 0), reason); KickEx(userid); return 1; } CMD:mute(playerid, params[]) { static userid; if (PlayerData[playerid][pAdmin] < 1) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/mute [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (userid == playerid) return SendErrorMessage(playerid, "You can't mute yourself!"); if (PlayerData[userid][pMuted]) return SendErrorMessage(playerid, "The player you're attempting to mute is muted already."); if (PlayerData[userid][pAdmin] > PlayerData[playerid][pAdmin]) return SendErrorMessage(playerid, "The specified player has higher authority."); PlayerData[userid][pMuted] = 1; SendAdminAction(playerid, "You have muted %s from using text and commands.", ReturnName(userid, 0)); SendAdminAction(userid, "%s has muted you from using text and commands.", ReturnName(playerid, 0)); return 1; } CMD:unmute(playerid, params[]) { static userid; if (PlayerData[playerid][pAdmin] < 1) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/unmute [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (!PlayerData[userid][pMuted]) return SendErrorMessage(playerid, "The player you're attempting to mute is not muted."); PlayerData[userid][pMuted] = 0; SendAdminAction(playerid, "You have unmuted %s from using text and commands.", ReturnName(userid, 0)); SendAdminAction(userid, "You have been unmuted by %s.", ReturnName(playerid, 0)); return 1; } CMD:freeze(playerid, params[]) { static userid; if (PlayerData[playerid][pAdmin] < 1) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/freeze [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); TogglePlayerControllable(userid, 0); SendAdminAction(playerid, "You have frozen %s's movements.", ReturnName(userid, 0)); return 1; } CMD:unfreeze(playerid, params[]) { static userid; if (PlayerData[playerid][pAdmin] < 1) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/unfreeze [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); PlayerData[playerid][pFreeze] = 0; TogglePlayerControllable(userid, 1); SendAdminAction(playerid, "You have unfrozen %s's movements.", ReturnName(userid, 0)); return 1; } CMD:revive(playerid, params[]) { static userid; if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/revive [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (!PlayerData[userid][pInjured]) return SendErrorMessage(playerid, "You can't revive a player that's not injured."); ShowHungerTextdraw(userid, 1); PlayerData[userid][pInjured] = 0; ClearAnimations(userid); TextDrawHideForPlayer(userid, gServerTextdraws[2]); SendAdminAction(playerid, "You have revived %s's character.", ReturnName(userid, 0)); SendAdminAction(userid, "%s has revived your character.", ReturnName(playerid, 0)); return 1; } CMD:respawn(playerid, params[]) { static userid; if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/respawn [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (!IsPlayerSpawned(userid)) return SendErrorMessage(playerid, "You can't respawn a player that's not spawned."); RespawnPlayer(userid); SendAdminAction(playerid, "You have respawned %s.", ReturnName(userid, 0)); SendAdminAction(userid, "You have been respawned by %s.", ReturnName(playerid, 0)); return 1; } CMD:refill(playerid, params[]) { static userid; if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/refill [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); PlayerData[userid][pHunger] = 100; PlayerData[userid][pThirst] = 100; SendAdminAction(playerid, "You have refilled %s's hunger and thirst.", ReturnName(userid, 0)); SendAdminAction(userid, "Your hunger and thirst was refilled by %s.", ReturnName(playerid, 0)); return 1; } CMD:skin(playerid, params[]) { static userid, skinid; if (PlayerData[playerid][pAdmin] < 1) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "ud", userid, skinid)) return SendSyntaxMessage(playerid, "/skin [playerid/name] [skin id]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (skinid < 0 || skinid > 299) return SendErrorMessage(playerid, "Invalid skin ID. Skins range from 0 to 299."); SetPlayerSkin(userid, skinid); PlayerData[userid][pSkin] = skinid; SendAdminAction(playerid, "You have set %s's skin to ID: %d.", ReturnName(userid, 0), skinid); SendAdminAction(userid, "%s has set your skin to ID: %d.", ReturnName(playerid, 0), skinid); return 1; } CMD:ban(playerid, params[]) { static userid, reason[128]; if (PlayerData[playerid][pAdmin] < 1) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "us[128]", userid, reason)) return SendSyntaxMessage(playerid, "/ban [playerid/name] [reason]"); if (userid == INVALID_PLAYER_ID || (IsPlayerConnected(userid) && PlayerData[userid][pKicked])) return SendErrorMessage(playerid, "You have specified an invalid player."); if (userid == playerid) return SendErrorMessage(playerid, "You can't ban yourself from the server."); if (PlayerData[userid][pAdmin] > PlayerData[playerid][pAdmin]) return SendErrorMessage(playerid, "The specified player has higher authority."); foreach (new i : Player) { if (!strcmp(PlayerData[i][pIP], PlayerData[userid][pIP]) && i != userid) { KickEx(i); } } Dialog_Show(userid, ShowOnly, DIALOG_STYLE_MSGBOX, "Banned", "Your account has been banned by the server.\n\nUsername: %s\nReason: %s\nAdmin who banned you: %s\n\nPress F8 to take a screenshot and request a ban appeal on our forums.", "Close", "", PlayerData[userid][pUsername], reason, ReturnName(playerid, 0)); SendClientMessageToAllEx(COLOR_LIGHTRED, "[ADMIN]: %s was banned by %s for: %s.", ReturnName(userid, 0), ReturnName(playerid, 0), reason); Log_Write("logs/ban_log.txt", "[%s] %s was banned by %s for: %s.", ReturnDate(), ReturnName(userid, 0), ReturnName(playerid, 0), reason); Blacklist_Add(PlayerData[userid][pIP], PlayerData[userid][pUsername], PlayerData[playerid][pUsername], reason); KickEx(userid); return 1; } CMD:username(playerid, params[]) { if (isnull(params) || strlen(params) > 24) return SendSyntaxMessage(playerid, "/username [character name]"); static query[128]; format(query, sizeof(query), "SELECT `Username` FROM `characters` WHERE `Character` = '%s'", SQL_ReturnEscaped(params)); mysql_tquery(g_iHandle, query, "OnResolveUsername", "ds", playerid, params); return 1; } CMD:stats(playerid, params[]) { ShowStatsForPlayer(playerid, playerid); return 1; } CMD:checkstats(playerid, params[]) { static userid; if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/checkstats [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (!PlayerData[userid][pLogged] && !PlayerData[userid][pCharacter]) return SendErrorMessage(playerid, "That player is not logged in yet."); ShowStatsForPlayer(playerid, userid); SendAdminAction(playerid, "You are now viewing %s's stats (type /stats to close).", ReturnName(userid, 0)); return 1; } CMD:acc(playerid, params[]) { new string[128]; format(string, sizeof(string), "Glasses: %s\nHat: %s\nBandana: %s", (PlayerData[playerid][pGlasses]) ? ("Yes") : ("No"), (PlayerData[playerid][pHat]) ? ("Yes") : ("No"), (PlayerData[playerid][pBandana]) ? ("Yes") : ("No")); Dialog_Show(playerid, Accessory, DIALOG_STYLE_LIST, "Accessories", string, "Select", "Cancel"); return 1; } CMD:shooter(playerid, params[]) { static userid; if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/shooter [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (PlayerData[userid][pLastShot] == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "That player hasn't been shot since they joined."); SendServerMessage(playerid, "%s was last shot by %s (%s).", ReturnName(userid, 0), ReturnName(PlayerData[userid][pLastShot]), GetDuration(gettime() - PlayerData[userid][pShotTime])); return 1; } CMD:goto(playerid, params[]) { static id, type[24], string[64]; if (PlayerData[playerid][pAdmin] < 1) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", id)) { SendSyntaxMessage(playerid, "/goto [player or name]"); SendClientMessage(playerid, COLOR_YELLOW, "[NAMES]:{FFFFFF} spawn, prison, house, business, entrance, job, gate, interior, billboard"); return 1; } if (id == INVALID_PLAYER_ID) { if (sscanf(params, "s[24]S()[64]", type, string)) { SendSyntaxMessage(playerid, "/goto [player or name]"); SendClientMessage(playerid, COLOR_YELLOW, "[NAMES]:{FFFFFF} spawn, prison, house, business, entrance, job, gate, interior, billboard"); return 1; } if (!strcmp(type, "spawn", true)) { SetDefaultSpawn(playerid); return SendServerMessage(playerid, "You have teleported to the default spawn."); } else if (!strcmp(type, "prison", true)) { SetPlayerPos(playerid, 283.5930, 1413.3511, 10.4078); SetPlayerFacingAngle(playerid, 180.0000); SetPlayerInterior(playerid, 0); SetPlayerVirtualWorld(playerid, 0); return SendServerMessage(playerid, "You have teleported to the prison facility."); } // else if (!strcmp(type, "billboard", true)) { if (sscanf(string, "d", id)) return SendSyntaxMessage(playerid, "/goto [billboard] [billboard ID]"); if ((id < 0 || id >= MAX_BILLBOARDS) || !BillBoardData[id][bbExists]) return SendErrorMessage(playerid, "You have specified an invalid billboard ID."); SetPlayerPos(playerid, BillBoardData[id][bbPos][0], BillBoardData[id][bbPos][1], BillBoardData[id][bbPos][2]); SendServerMessage(playerid, "You have teleported to billboard ID: %d.", id); return 1; } // else if (!strcmp(type, "house", true)) { if (sscanf(string, "d", id)) return SendSyntaxMessage(playerid, "/goto [house] [house ID]"); if ((id < 0 || id >= MAX_HOUSES) || !HouseData[id][houseExists]) return SendErrorMessage(playerid, "You have specified an invalid house ID."); SetPlayerPos(playerid, HouseData[id][housePos][0], HouseData[id][housePos][1], HouseData[id][housePos][2]); SetPlayerInterior(playerid, HouseData[id][houseExterior]); SetPlayerVirtualWorld(playerid, HouseData[id][houseExteriorVW]); SendServerMessage(playerid, "You have teleported to house ID: %d.", id); return 1; } else if (!strcmp(type, "business", true)) { if (sscanf(string, "d", id)) return SendSyntaxMessage(playerid, "/goto [business] [business ID]"); if ((id < 0 || id >= MAX_BUSINESSES) || !BusinessData[id][bizExists]) return SendErrorMessage(playerid, "You have specified an invalid business ID."); SetPlayerPos(playerid, BusinessData[id][bizPos][0], BusinessData[id][bizPos][1], BusinessData[id][bizPos][2]); SetPlayerInterior(playerid, BusinessData[id][bizExterior]); SetPlayerVirtualWorld(playerid, BusinessData[id][bizExteriorVW]); SendServerMessage(playerid, "You have teleported to business ID: %d.", id); return 1; } else if (!strcmp(type, "entrance", true)) { if (sscanf(string, "d", id)) return SendSyntaxMessage(playerid, "/goto [entrance] [entrance ID]"); if ((id < 0 || id >= MAX_ENTRANCES) || !EntranceData[id][entranceExists]) return SendErrorMessage(playerid, "You have specified an invalid entrance ID."); SetPlayerPos(playerid, EntranceData[id][entrancePos][0], EntranceData[id][entrancePos][1], EntranceData[id][entrancePos][2]); SetPlayerInterior(playerid, EntranceData[id][entranceExterior]); SetPlayerVirtualWorld(playerid, EntranceData[id][entranceExteriorVW]); SendServerMessage(playerid, "You have teleported to entrance ID: %d.", id); return 1; } else if (!strcmp(type, "job", true)) { if (sscanf(string, "d", id)) return SendSyntaxMessage(playerid, "/goto [job] [job ID]"); if ((id < 0 || id >= MAX_DYNAMIC_JOBS) || !JobData[id][jobExists]) return SendErrorMessage(playerid, "You have specified an invalid job ID."); SetPlayerPos(playerid, JobData[id][jobPos][0], JobData[id][jobPos][1], JobData[id][jobPos][2]); SetPlayerInterior(playerid, JobData[id][jobInterior]); SetPlayerVirtualWorld(playerid, JobData[id][jobWorld]); SendServerMessage(playerid, "You have teleported to job ID: %d.", id); return 1; } else if (!strcmp(type, "gate", true)) { if (sscanf(string, "d", id)) return SendSyntaxMessage(playerid, "/goto [gate] [gate ID]"); if ((id < 0 || id >= MAX_GATES) || !GateData[id][gateExists]) return SendErrorMessage(playerid, "You have specified an invalid gate ID."); SetPlayerPos(playerid, GateData[id][gatePos][0] - (2.5 * floatsin(-GateData[id][gatePos][3], degrees)), GateData[id][gatePos][1] - (2.5 * floatcos(-GateData[id][gatePos][3], degrees)), GateData[id][gatePos][2]); SetPlayerInterior(playerid, GateData[id][gateInterior]); SetPlayerVirtualWorld(playerid, GateData[id][gateWorld]); SendServerMessage(playerid, "You have teleported to gate ID: %d.", id); return 1; } else if (!strcmp(type, "interior", true)) { static str[1536]; str[0] = '\0'; for (new i = 0; i < sizeof(g_arrInteriorData); i ++) { strcat(str, g_arrInteriorData[i][e_InteriorName]); strcat(str, "\n"); } Dialog_Show(playerid, TeleportInterior, DIALOG_STYLE_LIST, "Teleport: Interior List", str, "Select", "Cancel"); return 1; } else return SendErrorMessage(playerid, "You have specified an invalid player."); } if (!IsPlayerSpawned(id)) return SendErrorMessage(playerid, "You can't teleport to a player that's not spawned."); SendPlayerToPlayer(playerid, id); format(string, sizeof(string), "You have ~y~teleported~w~ to %s.", ReturnName(id, 0)); ShowPlayerFooter(playerid, string); return 1; } CMD:send(playerid, params[]) { static userid, type[24]; if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "us[32]", userid, type)) { SendSyntaxMessage(playerid, "/send [player] [name]"); SendClientMessage(playerid, COLOR_YELLOW, "[NAMES]:{FFFFFF} spawn, prison"); return 1; } if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (!strcmp(type, "spawn", true)) { SetDefaultSpawn(userid); SendServerMessage(playerid, "You have teleported %s to the default spawn.", ReturnName(userid, 0)); SendServerMessage(userid, "%s has teleported you to the default spawn.", ReturnName(playerid, 0)); } else if (!strcmp(type, "prison", true)) { SetPlayerPos(playerid, 283.5930, 1413.3511, 10.4078); SetPlayerFacingAngle(playerid, 180.0000); SetPlayerInterior(playerid, 0); SetPlayerVirtualWorld(playerid, 0); SendServerMessage(playerid, "You have teleported %s to the prison facility.", ReturnName(userid, 0)); SendServerMessage(userid, "%s has teleported you to the prison facility.", ReturnName(playerid, 0)); } return 1; } CMD:bring(playerid, params[]) { static userid; if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/bring [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (!IsPlayerSpawned(userid)) return SendErrorMessage(playerid, "You can't teleport a player that's not spawned."); SendPlayerToPlayer(userid, playerid); SendServerMessage(playerid, "You have teleported %s to you.", ReturnName(userid, 0)); return 1; } CMD:inventory(playerid, params[]) { if (PlayerData[playerid][pHospital] != -1 || PlayerData[playerid][pCuffed] || PlayerData[playerid][pInjured] || !IsPlayerSpawned(playerid)) return SendErrorMessage(playerid, "You can't open your inventory right now."); if (PlayerData[playerid][pJailTime] > 0) return SendErrorMessage(playerid, "You can't open your inventory whilst jailed."); OpenInventory(playerid); return 1; } CMD:setinterior(playerid, params[]) { static userid, interior; if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "ud", userid, interior)) return SendSyntaxMessage(playerid, "/setinterior [playerid/name] [interior]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); SetPlayerInterior(userid, interior); PlayerData[userid][pInterior] = interior; SendServerMessage(playerid, "You have set %s's interior to %d.", ReturnName(userid, 0), interior); return 1; } CMD:setvw(playerid, params[]) { static userid, world; if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "ud", userid, world)) return SendSyntaxMessage(playerid, "/setvw [playerid/name] [world]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); SetPlayerVirtualWorld(userid, world); PlayerData[userid][pWorld] = world; SendServerMessage(playerid, "You have set %s's virtual world to %d.", ReturnName(userid, 0), world); return 1; } CMD:atalk(playerid, params[]) { static userid, text[128]; if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "us[128]", userid, text)) return SendSyntaxMessage(playerid, "/atalk [playerid/name] [message]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); SendClientMessageEx(userid, COLOR_YELLOW, "[ADMIN]: %s says: %s", ReturnName(playerid, 0), text); if (playerid != userid) { SendClientMessageEx(playerid, COLOR_YELLOW, "[ADMIN]: %s says: %s", ReturnName(playerid, 0), text); } return 1; } CMD:sendto(playerid, params[]) { static userid, targetid; if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "uu", userid, targetid)) return SendSyntaxMessage(playerid, "/sendto [playerid/name] [playerid/name]"); if (userid == INVALID_PLAYER_ID || targetid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "The specified user(s) are not connected."); SendPlayerToPlayer(userid, targetid); SendServerMessage(playerid, "You have teleported %s to %s.", ReturnName(userid, 0), ReturnName(targetid)); SendServerMessage(userid, "%s has teleported you to %s.", ReturnName(playerid, 0), ReturnName(targetid)); return 1; } CMD:unban(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (isnull(params) || strlen(params) > 24) { SendSyntaxMessage(playerid, "/unban [username]"); SendClientMessage(playerid, COLOR_LIGHTRED, "[NOTE]:{FFFFFF} Type \"/username\" to resolve the username from a character's name."); } else { Blacklist_Remove(params); SendServerMessage(playerid, "You have unbanned \"%s\" successfully.", params); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has unbanned account \"%s\".", ReturnName(playerid, 0), params); Log_Write("logs/ban_log.txt", "[%s] %s has unbanned account \"%s\".", ReturnDate(), ReturnName(playerid, 0), params); } return 1; } CMD:blacklist(playerid, params[]) { static type[24]; if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "s[24]s[128]", type, params)) { SendSyntaxMessage(playerid, "/blacklist [name] [parameter]"); SendClientMessage(playerid, COLOR_YELLOW, "[NAMES]:{FFFFFF} ban, banip, unbanip"); return 1; } if (!strcmp(type, "ban", true)) { if (!IsValidPlayerName(params)) return SendErrorMessage(playerid, "The name you've entered is not in the correct format."); foreach (new i : Player) if (!strcmp(PlayerData[i][pUsername], params) || !strcmp(ReturnName(i), params, true)) { KickEx(i); } Blacklist_Add("0.0.0.0", params, PlayerData[playerid][pUsername], "Name Ban (/blacklist)"); SendServerMessage(playerid, "You have banned \"%s\" successfully.", params); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has banned \"%s\".", ReturnName(playerid, 0), params); Log_Write("logs/ban_log.txt", "[%s] %s has banned \"%s\".", ReturnDate(), ReturnName(playerid, 0), params); } else if (!strcmp(type, "banip", true)) { if (!IsAnIP(params)) return SendErrorMessage(playerid, "The IP address you've entered is not in the correct format."); foreach (new i : Player) if (!strcmp(PlayerData[i][pIP], params)) { KickEx(i); } Blacklist_Add(params, "", PlayerData[playerid][pUsername], "IP Ban (/blacklist)"); SendServerMessage(playerid, "You have banned IP \"%s\" successfully.", params); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has banned IP \"%s\".", ReturnName(playerid, 0), params); Log_Write("logs/ban_log.txt", "[%s] %s has banned IP \"%s\".", ReturnDate(), ReturnName(playerid, 0), params); } else if (!strcmp(type, "unbanip", true)) { if (!IsAnIP(params)) return SendErrorMessage(playerid, "The IP address you've entered is not in the correct format."); Blacklist_RemoveIP(params); SendServerMessage(playerid, "You have unbanned IP \"%s\" successfully.", params); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has unbanned IP \"%s\".", ReturnName(playerid, 0), params); Log_Write("logs/ban_log.txt", "[%s] %s has unbanned IP \"%s\".", ReturnDate(), ReturnName(playerid, 0), params); } return 1; } CMD:getip(playerid, params[]) { static userid; if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/getip [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); SendServerMessage(playerid, "%s's IP address is %s.", ReturnName(userid, 0), PlayerData[userid][pIP]); return 1; } CMD:togooc(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (!g_StatusOOC) { SendClientMessageToAllEx(COLOR_LIGHTRED, "[ADMIN]: %s has disabled global OOC chat.", ReturnName(playerid, 0)); g_StatusOOC = true; } else { SendClientMessageToAllEx(COLOR_LIGHTRED, "[ADMIN]: %s has enabled global OOC chat.", ReturnName(playerid, 0)); g_StatusOOC = false; } return 1; } CMD:health(playerid, params[]) { static userid, Float:amount; if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "uf", userid, amount)) return SendSyntaxMessage(playerid, "/health [playerid/name] [amount]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); SetPlayerHealth(userid, amount); SendServerMessage(playerid, "You have set %s's health to %.2f.", ReturnName(userid, 0), amount); return 1; } CMD:armor(playerid, params[]) { static userid, Float:amount; if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "uf", userid, amount)) return SendSyntaxMessage(playerid, "/armor [playerid/name] [amount]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); SetPlayerArmour(userid, amount); SendServerMessage(playerid, "You have set %s's armor to %.2f.", ReturnName(userid, 0), amount); return 1; } CMD:resetweps(playerid, params[]) { static userid; if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/resetweps [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); ResetWeapons(userid); SendAdminAction(playerid, "You have reset %s's weapons.", ReturnName(userid, 0)); return 1; } CMD:arepair(playerid, params[]) { new vehicleid = GetPlayerVehicleID(playerid); if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (vehicleid > 0 && isnull(params)) { RepairVehicle(vehicleid); SendServerMessage(playerid, "You have repaired your current vehicle."); } else { if (sscanf(params, "d", vehicleid)) return SendSyntaxMessage(playerid, "/arepair [vehicle ID]"); else if (!IsValidVehicle(vehicleid)) return SendErrorMessage(playerid, "You have specified an invalid vehicle ID."); RepairVehicle(vehicleid); SendServerMessage(playerid, "You have repaired vehicle ID: %d.", vehicleid); } return 1; } CMD:bringcar(playerid, params[]) { new vehicleid; if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", vehicleid)) return SendSyntaxMessage(playerid, "/bringcar [veh]"); if (vehicleid < 1 || vehicleid > MAX_VEHICLES || !IsValidVehicle(vehicleid)) return SendErrorMessage(playerid, "You have specified an invalid vehicle ID."); static Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); SetVehiclePos(vehicleid, x + 2, y - 2, z); SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid)); LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid)); return 1; } CMD:entercar(playerid, params[]) { new vehicleid, seatid; if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", vehicleid)) return SendSyntaxMessage(playerid, "/entercar [veh]"); if (vehicleid < 1 || vehicleid > MAX_VEHICLES || !IsValidVehicle(vehicleid)) return SendErrorMessage(playerid, "You have specified an invalid vehicle ID."); seatid = GetAvailableSeat(vehicleid, 0); if (seatid == -1) return SendErrorMessage(playerid, "There are no seats left to enter."); PutPlayerInVehicle(playerid, vehicleid, seatid); return 1; } CMD:gotocar(playerid, params[]) { new vehicleid; if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", vehicleid)) return SendSyntaxMessage(playerid, "/gotocar [veh]"); if (vehicleid < 1 || vehicleid > MAX_VEHICLES || !IsValidVehicle(vehicleid)) return SendErrorMessage(playerid, "You have specified an invalid vehicle ID."); static Float:x, Float:y, Float:z; GetVehiclePos(vehicleid, x, y, z); SetPlayerPos(playerid, x, y - 2, z + 2); return 1; } CMD:respawncar(playerid, params[]) { new vehicleid; if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", vehicleid)) return SendSyntaxMessage(playerid, "/respawncar [veh]"); if (vehicleid < 1 || vehicleid > MAX_VEHICLES || !IsValidVehicle(vehicleid)) return SendErrorMessage(playerid, "You have specified an invalid vehicle ID."); RespawnVehicle(vehicleid); SendServerMessage(playerid, "You have respawned vehicle ID: %d.", vehicleid); return 1; } CMD:respawncars(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You don't have permission to use this command."); new count; for (new i = 1; i != MAX_VEHICLES; i ++) { if (IsValidVehicle(i) && GetVehicleDriver(i) == INVALID_PLAYER_ID) { RespawnVehicle(i); count++; } } if (!count) return SendErrorMessage(playerid, "There are no vehicles to respawn."); SendServerMessage(playerid, "You have respawned %d unoccupied vehicles.", count); return 1; } CMD:respawnnear(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You don't have permission to use this command."); new count; for (new i = 1; i != MAX_VEHICLES; i ++) { static Float:fX, Float:fY, Float:fZ; if (IsValidVehicle(i) && GetVehicleDriver(i) == INVALID_PLAYER_ID) { GetVehiclePos(i, fX, fY, fZ); if (IsPlayerInRangeOfPoint(playerid, 50.0, fX, fY, fZ)) { RespawnVehicle(i); count++; } } } if (!count) return SendErrorMessage(playerid, "There are no closest vehicles to respawn."); SendServerMessage(playerid, "You have respawned the %d closest vehicles.", count); return 1; } CMD:veh(playerid, params[]) { static model[32], color1, color2; if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "s[32]I(-1)I(-1)", model, color1, color2)) return SendSyntaxMessage(playerid, "/veh [model id/name] "); if ((model[0] = GetVehicleModelByName(model)) == 0) return SendErrorMessage(playerid, "Invalid model ID."); static Float:x, Float:y, Float:z, Float:a, vehicleid; GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, a); vehicleid = CreateVehicle(model[0], x, y + 2, z, a, color1, color2, 0); if (GetPlayerInterior(playerid) != 0) LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid)); if (GetPlayerVirtualWorld(playerid) != 0) SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid)); if (IsABoat(vehicleid) || IsAPlane(vehicleid) || IsAHelicopter(vehicleid)) PutPlayerInVehicle(playerid, vehicleid, 0); ResetVehicle(vehicleid); CoreVehicles[vehicleid][vehTemporary] = true; SendServerMessage(playerid, "You have spawned a %s (%d, %d).", ReturnVehicleModelName(model[0]), color1, color2); return 1; } CMD:destroyveh(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (!isnull(params) && !strcmp(params, "all", true)) { for (new i = 1; i != MAX_VEHICLES; i ++) if (IsValidVehicle(i) && CoreVehicles[i][vehTemporary]) { CoreVehicles[i][vehTemporary] = false; DestroyVehicle(i); ResetVehicle(i); } SendServerMessage(playerid, "You have destroyed the temporary vehicles."); return 1; } else if (IsPlayerInAnyVehicle(playerid)) { new vehicleid = GetPlayerVehicleID(playerid); if (CoreVehicles[vehicleid][vehTemporary]) { CoreVehicles[vehicleid][vehTemporary] = false; DestroyVehicle(vehicleid); ResetVehicle(vehicleid); SendServerMessage(playerid, "You have destroyed this admin vehicle."); } else { SendErrorMessage(playerid, "You cannot destroy a non-temporary vehicle."); } } return 1; } CMD:givewep(playerid, params[]) { static userid, weaponid, ammo; if (PlayerData[playerid][pAdmin] < 4) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "udI(500)", userid, weaponid, ammo)) return SendSyntaxMessage(playerid, "/givewep [playerid/name] [weaponid] [ammo]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You cannot give weapons to disconnected players."); if (!IsPlayerSpawned(userid)) return SendErrorMessage(playerid, "You cannot give weapons to unspawned players."); if (weaponid <= 0 || weaponid > 46 || (weaponid >= 19 && weaponid <= 21)) return SendErrorMessage(playerid, "You have specified an invalid weapon."); GiveWeaponToPlayer(userid, weaponid, ammo); SendServerMessage(playerid, "You have gave %s a %s with %d ammo.", ReturnName(userid, 0), ReturnWeaponName(weaponid), ammo); return 1; } CMD:setplayer(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 4) return SendErrorMessage(playerid, "You don't have permission to use this command."); static userid, type[16], amount[32]; if (sscanf(params, "us[16]S()[32]", userid, type, amount)) { SendSyntaxMessage(playerid, "/setplayer [playerid/name] [name]"); SendClientMessage(playerid, COLOR_YELLOW, "[NAMES]:{FFFFFF} gender, birthdate, origin, bank, savings, hunger, thirst, playinghours"); SendClientMessage(playerid, COLOR_YELLOW, "[NAMES]:{FFFFFF} job, warrants, channel"); return 1; } if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (!strcmp(type, "gender", true)) { if (isnull(amount) || strval(amount) < 1 || strval(amount) > 2) return SendSyntaxMessage(playerid, "/setplayer [playerid/name] [gender] [1: male - 2: female]"); PlayerData[userid][pGender] = strval(amount); if (PlayerData[userid][pGender] == 1) SendServerMessage(playerid, "You have set %s's gender to male.", ReturnName(userid, 0)); else if (PlayerData[userid][pGender] == 2) SendServerMessage(playerid, "You have set %s's gender to female.", ReturnName(userid, 0)); } else if (!strcmp(type, "birthdate", true)) { if (isnull(amount) || strlen(amount) > 24) return SendSyntaxMessage(playerid, "/setplayer [playerid/name] [birthdate] [birth date]"); format(PlayerData[userid][pBirthdate], 24, amount); SendServerMessage(playerid, "You have set %s's birthdate to \"%s\".", ReturnName(userid, 0), amount); } else if (!strcmp(type, "origin", true)) { if (isnull(amount) || strlen(amount) > 32) return SendSyntaxMessage(playerid, "/setplayer [playerid/name] [origin] [new origin]"); format(PlayerData[userid][pOrigin], 32, amount); SendServerMessage(playerid, "You have set %s's origin to \"%s\".", ReturnName(userid, 0), amount); } else if (!strcmp(type, "bank", true)) { if (isnull(amount)) return SendSyntaxMessage(playerid, "/setplayer [playerid/name] [bank] [bank funds]"); PlayerData[userid][pBankMoney] = strval(amount); SendServerMessage(playerid, "You have set %s's bank money to %s.", ReturnName(userid, 0), FormatNumber(strval(amount))); } else if (!strcmp(type, "savings", true)) { if (isnull(amount)) return SendSyntaxMessage(playerid, "/setplayer [playerid/name] [savings] [savings funds]"); PlayerData[userid][pSavings] = strval(amount); SendServerMessage(playerid, "You have set %s's savings to %s.", ReturnName(userid, 0), FormatNumber(strval(amount))); } else if (!strcmp(type, "hunger", true)) { if (isnull(amount)) return SendSyntaxMessage(playerid, "/setplayer [playerid/name] [hunger] [amount]"); if (strval(amount) < 0 || strval(amount) > 1000) return SendErrorMessage(playerid, "You can't specify an amount below 0 or above 1,000."); PlayerData[userid][pHunger] = strval(amount); SendServerMessage(playerid, "You have set %s's hunger to %s.", ReturnName(userid, 0), FormatNumber(strval(amount), "")); } else if (!strcmp(type, "thirst", true)) { if (isnull(amount)) return SendSyntaxMessage(playerid, "/setplayer [playerid/name] [thirst] [amount]"); if (strval(amount) < 0 || strval(amount) > 1000) return SendErrorMessage(playerid, "You can't specify an amount below 0 or above 1,000."); PlayerData[userid][pThirst] = strval(amount); SendServerMessage(playerid, "You have set %s's thirst to %s.", ReturnName(userid, 0), FormatNumber(strval(amount), "")); } else if (!strcmp(type, "playinghours", true)) { if (isnull(amount)) return SendSyntaxMessage(playerid, "/setplayer [playerid/name] [playinghours] [amount]"); PlayerData[userid][pPlayingHours] = strval(amount); SendServerMessage(playerid, "You have set %s's playing hours to %s.", ReturnName(userid, 0), FormatNumber(strval(amount), "")); } else if (!strcmp(type, "job", true)) { if (isnull(amount)) return SendSyntaxMessage(playerid, "/setplayer [playerid/name] [job] [amount]"); if (strval(amount) < 0 || strval(amount) > 9) return SendErrorMessage(playerid, "You have specified an invalid job ID."); PlayerData[userid][pJob] = strval(amount); SendServerMessage(playerid, "You have set %s's job to %s.", ReturnName(userid, 0), Job_GetName(PlayerData[userid][pJob])); } else if (!strcmp(type, "warrants", true)) { if (isnull(amount)) return SendSyntaxMessage(playerid, "/setplayer [playerid/name] [warrants] [amount]"); PlayerData[userid][pWarrants] = strval(amount); SendServerMessage(playerid, "You have set %s's warrants to %s.", ReturnName(userid, 0), FormatNumber(strval(amount), "")); } else if (!strcmp(type, "channel", true)) { if (isnull(amount)) return SendSyntaxMessage(playerid, "/setplayer [playerid/name] [channel] [radio channel]"); PlayerData[userid][pChannel] = strval(amount); SendServerMessage(playerid, "You have set %s's radio channel to %s.", ReturnName(userid, 0), FormatNumber(strval(amount), "")); } return 1; } CMD:baninfo(playerid, params[]) { static string[128]; if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (isnull(params) || strlen(params) > 24) { SendSyntaxMessage(playerid, "/baninfo [username]"); SendClientMessage(playerid, COLOR_LIGHTRED, "[NOTE]:{FFFFFF} Type \"/username\" to resolve the username from a character's name."); } else { format(string, sizeof(string), "SELECT * FROM `blacklist` WHERE `Username` = '%s'", SQL_ReturnEscaped(params)); mysql_tquery(g_iHandle, string, "OnBanLookup", "ds", playerid, params); } return 1; } CMD:settester(playerid, params[]) { static userid; if (PlayerData[playerid][pAdmin] < 4) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/settester [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (PlayerData[userid][pTester]) { PlayerData[userid][pTester] = false; SendAdminAction(playerid, "You have taken away %s's tester status.", ReturnName(userid, 0)); SendAdminAction(userid, "%s has kicked you from the tester team.", ReturnName(playerid, 0)); } else { PlayerData[userid][pTester] = true; SendAdminAction(playerid, "You have invited %s to the tester team.", ReturnName(userid, 0)); SendAdminAction(userid, "%s has invited you to the tester team.", ReturnName(playerid, 0)); } return 1; } CMD:factionmod(playerid, params[]) { static userid; if (PlayerData[playerid][pAdmin] < 6) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/factionmod [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (PlayerData[userid][pFactionMod]) { PlayerData[userid][pFactionMod] = false; SendAdminAction(playerid, "You have taken away %s's faction management status.", ReturnName(userid, 0)); SendAdminAction(userid, "%s has kicked you from the faction management team.", ReturnName(playerid, 0)); } else { PlayerData[userid][pFactionMod] = true; SendAdminAction(playerid, "You have invited %s to the faction management team.", ReturnName(userid, 0)); SendAdminAction(userid, "%s has invited you to the faction management team.", ReturnName(playerid, 0)); } return 1; } CMD:setname(playerid, params[]) { static userid, newname[24], query[128]; if (PlayerData[playerid][pAdmin] < 4) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "us[24]", userid, newname)) return SendSyntaxMessage(playerid, "/setname [playerid/name] [new name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (!PlayerData[userid][pLogged] && !PlayerData[userid][pCharacter]) return SendErrorMessage(playerid, "That player hasn't set a character yet."); if (!IsValidPlayerName(newname)) return SendErrorMessage(playerid, "You have specified an invalid name format."); foreach (new i : Player) if (!strcmp(ReturnName(i), newname)) { return SendErrorMessage(playerid, "The specified name is in use."); } format(query, sizeof(query), "SELECT `ID` FROM `characters` WHERE `Character` = '%s'", SQL_ReturnEscaped(newname)); mysql_tquery(g_iHandle, query, "OnNameChange", "dds", playerid, userid, newname); return 1; } CMD:clearchat(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You don't have permission to use this command."); for (new i = 0; i < 100; i ++) { SendClientMessageToAll(-1, ""); } return 1; } CMD:spawn(playerid, params[]) { static Float:x, Float:y, Float:z, interior; if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "dfff", interior, x, y, z)) return SendSyntaxMessage(playerid, "/spawn [interior] [x] [y] [z]"); SetPlayerPos(playerid, x, y, z); SetPlayerInterior(playerid, interior); return 1; } CMD:createhouse(playerid, params[]) { static price, id, address[32]; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "ds[32]", price, address)) return SendSyntaxMessage(playerid, "/createhouse [price] [address]"); for (new i = 0; i != MAX_HOUSES; i ++) if (HouseData[i][houseExists] && !strcmp(HouseData[i][houseAddress], address, true)) { return SendErrorMessage(playerid, "The address \"%s\" is already in use (ID: %d).", address, i); } id = House_Create(playerid, address, price); if (id == -1) return SendErrorMessage(playerid, "The server has reached the limit for houses."); SendServerMessage(playerid, "You have successfully created house ID: %d.", id); return 1; } CMD:destroyhouse(playerid, params[]) { static id = 0; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", id)) return SendSyntaxMessage(playerid, "/destroyhouse [house id]"); if ((id < 0 || id >= MAX_HOUSES) || !HouseData[id][houseExists]) return SendErrorMessage(playerid, "You have specified an invalid house ID."); House_Delete(id); SendServerMessage(playerid, "You have successfully destroyed house ID: %d.", id); return 1; } CMD:bizcmds(playerid, params[]) { SendClientMessage(playerid, COLOR_CLIENT, "BUSINESSES:{FFFFFF} /buy, /abandon, /lock, /vault, /products, /binfo, /bname, /bmessage, /bshipment."); return 1; } CMD:housecmds(playerid, params[]) { SendClientMessage(playerid, COLOR_CLIENT, "HOUSES:{FFFFFF} /buy, /abandon, /lock, /storage, /furniture, /buyrack, /gunrack, /deleterack."); SendClientMessage(playerid, COLOR_CLIENT, "HOUSES:{FFFFFF} /doorbell, /switch."); return 1; } CMD:buy(playerid, params[]) { static id = -1; if ((id = House_Nearest(playerid)) != -1) { if (House_GetCount(playerid) >= MAX_OWNABLE_HOUSES) return SendErrorMessage(playerid, "You can only own %d houses at a time.", MAX_OWNABLE_HOUSES); if (HouseData[id][houseOwner] != 0) return SendErrorMessage(playerid, "This house is already owned at the moment."); if (HouseData[id][housePrice] > GetMoney(playerid)) return SendErrorMessage(playerid, "You have insufficient funds for the purchase."); HouseData[id][houseOwner] = GetPlayerSQLID(playerid); House_Refresh(id); House_Save(id); GiveMoney(playerid, -HouseData[id][housePrice]); SendServerMessage(playerid, "You have purchased \"%s\" for %s!", HouseData[id][houseAddress], FormatNumber(HouseData[id][housePrice])); ShowPlayerFooter(playerid, "You have ~g~purchased~w~ a house!"); Log_Write("logs/house_log.txt", "[%s] %s has purchased house ID: %d for %s.", ReturnDate(), ReturnName(playerid), id, FormatNumber(HouseData[id][housePrice])); } else if ((id = Business_Nearest(playerid)) != -1) { if (Business_GetCount(playerid) >= MAX_OWNABLE_BUSINESSES) return SendErrorMessage(playerid, "You can only own %d businesses at a time.", MAX_OWNABLE_BUSINESSES); if (BusinessData[id][bizOwner] != 0) return SendErrorMessage(playerid, "This business is already owned at the moment."); if (BusinessData[id][bizPrice] > GetMoney(playerid)) return SendErrorMessage(playerid, "You have insufficient funds for the purchase."); BusinessData[id][bizOwner] = GetPlayerSQLID(playerid); Business_Refresh(id); Business_Save(id); GiveMoney(playerid, -BusinessData[id][bizPrice]); SendServerMessage(playerid, "You have purchased \"%s\" for %s!", BusinessData[id][bizName], FormatNumber(BusinessData[id][bizPrice])); ShowPlayerFooter(playerid, "You have ~g~purchased~w~ a business!"); Log_Write("logs/biz_log.txt", "[%s] %s has purchased business ID: %d for %s.", ReturnDate(), ReturnName(playerid), id, FormatNumber(BusinessData[id][bizPrice])); } else if ((id = Business_Inside(playerid)) != -1) { if (BusinessData[id][bizLocked] != 0 || !BusinessData[id][bizOwner]) return SendErrorMessage(playerid, "This business is closed!"); if (BusinessData[id][bizType] == 5) { Business_CarMenu(playerid, id); } else { Business_PurchaseMenu(playerid, id); } } return 1; } CMD:abandon(playerid, params[]) { static id = -1; if (!IsPlayerInAnyVehicle(playerid) && (id = House_Nearest(playerid)) != -1 && House_IsOwner(playerid, id)) { if (isnull(params) || (!isnull(params) && strcmp(params, "confirm", true) != 0)) { SendSyntaxMessage(playerid, "/abandon [confirm]"); SendClientMessage(playerid, COLOR_LIGHTRED, "[WARNING]:{FFFFFF} You are about to abandon your house with no refund."); } else if (!strcmp(params, "confirm", true)) { HouseData[id][houseOwner] = 0; House_Refresh(id); House_Save(id); SendServerMessage(playerid, "You have abandoned your house: %s.", HouseData[id][houseAddress]); Log_Write("logs/house_log.txt", "[%s] %s has abandoned house ID: %d.", ReturnDate(), ReturnName(playerid), id); } } else if (!IsPlayerInAnyVehicle(playerid) && (id = Business_Nearest(playerid)) != -1 && Business_IsOwner(playerid, id)) { if (isnull(params) || (!isnull(params) && strcmp(params, "confirm", true) != 0)) { SendSyntaxMessage(playerid, "/abandon [confirm]"); SendClientMessage(playerid, COLOR_LIGHTRED, "[WARNING]:{FFFFFF} You are about to abandon your business with no refund."); } else if (!strcmp(params, "confirm", true)) { BusinessData[id][bizOwner] = 0; Business_Refresh(id); Business_Save(id); SendServerMessage(playerid, "You have abandoned your business: %s.", BusinessData[id][bizName]); Log_Write("logs/biz_log.txt", "[%s] %s has abandoned business ID: %d.", ReturnDate(), ReturnName(playerid), id); } } else if ((id = Car_Inside(playerid)) != -1 && Car_IsOwner(playerid, id)) { if (isnull(params) || (!isnull(params) && strcmp(params, "confirm", true) != 0)) { SendSyntaxMessage(playerid, "/abandon [confirm]"); SendClientMessage(playerid, COLOR_LIGHTRED, "[WARNING]:{FFFFFF} You are about to abandon your vehicle with no refund."); } else if (CarData[id][carImpounded] != -1) return SendErrorMessage(playerid, "This vehicle is impounded and you can't use it."); else if (!strcmp(params, "confirm", true)) { new model = CarData[id][carModel]; Car_Delete(id); SendServerMessage(playerid, "You have abandoned your %s.", ReturnVehicleModelName(model)); Log_Write("logs/car_log.txt", "[%s] %s has abandoned their %s.", ReturnDate(), ReturnName(playerid), ReturnVehicleModelName(model)); } } else SendErrorMessage(playerid, "You are not in range of anything you can abandon."); return 1; } CMD:switch(playerid, params[]) { static id = -1; if ((id = House_Inside(playerid)) != -1) { if (!HouseData[id][houseLights]) { foreach (new i : Player) if (House_Inside(i) == id) { PlayerTextDrawHide(i, PlayerData[i][pTextdraws][62]); } SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s flicks the light switch on.", ReturnName(playerid, 0)); HouseData[id][houseLights] = true; } else { foreach (new i : Player) if (House_Inside(i) == id) { PlayerTextDrawShow(i, PlayerData[i][pTextdraws][62]); } SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s flicks the light switch off.", ReturnName(playerid, 0)); HouseData[id][houseLights] = false; } } else { SendErrorMessage(playerid, "You must be in a house to use the lights."); } return 1; } CMD:lock(playerid, params[]) { static id = -1; if (!IsPlayerInAnyVehicle(playerid) && (id = (House_Inside(playerid) == -1) ? (House_Nearest(playerid)) : (House_Inside(playerid))) != -1 && House_IsOwner(playerid, id)) { if (!HouseData[id][houseLocked]) { HouseData[id][houseLocked] = true; House_Save(id); ShowPlayerFooter(playerid, "You have ~r~locked~w~ your house!"); PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0); } else { HouseData[id][houseLocked] = false; House_Save(id); ShowPlayerFooter(playerid, "You have ~g~unlocked~w~ your house!"); PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0); } } else if (!IsPlayerInAnyVehicle(playerid) && (id = (Business_Inside(playerid) == -1) ? (Business_Nearest(playerid)) : (Business_Inside(playerid))) != -1) { if (Business_IsOwner(playerid, id)) { if (!BusinessData[id][bizLocked]) { BusinessData[id][bizLocked] = true; Business_Refresh(id); Business_Save(id); ShowPlayerFooter(playerid, "You have ~r~locked~w~ the business!"); PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0); } else { BusinessData[id][bizLocked] = false; Business_Refresh(id); Business_Save(id); ShowPlayerFooter(playerid, "You have ~g~unlocked~w~ the business!"); PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0); } } } else if (!IsPlayerInAnyVehicle(playerid) && (id = (Entrance_Inside(playerid) == -1) ? (Entrance_Nearest(playerid)) : (Entrance_Inside(playerid))) != -1) { if (strlen(EntranceData[id][entrancePass])) { Dialog_Show(playerid, EntrancePass, DIALOG_STYLE_INPUT, "Entrance Pass", "Please enter the password for this entrance:", "Submit", "Cancel"); } } else if ((id = Car_Nearest(playerid)) != -1) { static engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(CarData[id][carVehicle], engine, lights, alarm, doors, bonnet, boot, objective); if (Car_IsOwner(playerid, id) || (PlayerData[playerid][pFaction] != -1 && CarData[id][carFaction] == GetFactionType(playerid))) { if (!CarData[id][carLocked]) { CarData[id][carLocked] = true; Car_Save(id); ShowPlayerFooter(playerid, "You have ~r~locked~w~ the vehicle!"); PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0); SetVehicleParamsEx(CarData[id][carVehicle], engine, lights, alarm, 1, bonnet, boot, objective); } else { CarData[id][carLocked] = false; Car_Save(id); ShowPlayerFooter(playerid, "You have ~g~unlocked~w~ the vehicle!"); PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0); SetVehicleParamsEx(CarData[id][carVehicle], engine, lights, alarm, 0, bonnet, boot, objective); } } } else SendErrorMessage(playerid, "You are not in range of anything you can lock."); return 1; } CMD:sell(playerid, params[]) { static targetid, type[24], string[128]; if (sscanf(params, "us[24]S()[128]", targetid, type, string)) { SendSyntaxMessage(playerid, "/sell [playerid/name] [name]"); SendClientMessage(playerid, COLOR_YELLOW, "[NAMES]:{FFFFFF} house, business, vehicle"); return 1; } if (targetid == INVALID_PLAYER_ID || !IsPlayerNearPlayer(playerid, targetid, 5.0)) { SendErrorMessage(playerid, "The player is disconnected or not near you."); return 1; } if (targetid == playerid) { SendErrorMessage(playerid, "You cannot sell to yourself."); return 1; } if (!strcmp(type, "house", true)) { static price, houseid = -1; if (sscanf(string, "d", price)) return SendSyntaxMessage(playerid, "/sell [playerid/name] [house] [price]"); if (price < 1) return SendErrorMessage(playerid, "The price you've entered cannot below the value of $1."); if ((houseid = House_Nearest(playerid)) != -1 && House_IsOwner(playerid, houseid)) { PlayerData[targetid][pHouseSeller] = playerid; PlayerData[targetid][pHouseOffered] = houseid; PlayerData[targetid][pHouseValue] = price; SendServerMessage(playerid, "You have requested %s to purchase your house (%s).", ReturnName(targetid, 0), FormatNumber(price)); SendServerMessage(targetid, "%s has offered you their house for %s (type \"/approve house\" to accept).", ReturnName(playerid, 0), FormatNumber(price)); } else SendErrorMessage(playerid, "You are not in range of any of your houses."); } else if (!strcmp(type, "business", true)) { static price, bizid = -1; if (sscanf(string, "d", price)) return SendSyntaxMessage(playerid, "/sell [playerid/name] [business] [price]"); if (price < 1) return SendErrorMessage(playerid, "The price you've entered cannot below the value of $1."); if ((bizid = Business_Nearest(playerid)) != -1 && Business_IsOwner(playerid, bizid)) { PlayerData[targetid][pBusinessSeller] = playerid; PlayerData[targetid][pBusinessOffered] = bizid; PlayerData[targetid][pBusinessValue] = price; SendServerMessage(playerid, "You have requested %s to purchase your business (%s).", ReturnName(targetid, 0), FormatNumber(price)); SendServerMessage(targetid, "%s has offered you their business for %s (type \"/approve business\" to accept).", ReturnName(playerid, 0), FormatNumber(price)); } else SendErrorMessage(playerid, "You are not in range of any of your businesses."); } else if (!strcmp(type, "vehicle", true)) { static price, carid = -1; if (sscanf(string, "d", price)) return SendSyntaxMessage(playerid, "/sell [playerid/name] [veh] [price]"); if (price < 1) return SendErrorMessage(playerid, "The price you've entered cannot below the value of $1."); if ((carid = Car_Inside(playerid)) != -1 && Car_IsOwner(playerid, carid)) { PlayerData[targetid][pCarSeller] = playerid; PlayerData[targetid][pCarOffered] = carid; PlayerData[targetid][pCarValue] = price; SendServerMessage(playerid, "You have requested %s to purchase your %s (%s).", ReturnName(targetid, 0), ReturnVehicleModelName(CarData[carid][carModel]), FormatNumber(price)); SendServerMessage(targetid, "%s has offered you their %s for %s (type \"/approve car\" to accept).", ReturnName(playerid, 0), ReturnVehicleModelName(CarData[carid][carModel]), FormatNumber(price)); } else SendErrorMessage(playerid, "You are not inside any of your vehicles."); } return 1; } CMD:approve(playerid, params[]) { if (isnull(params)) { SendSyntaxMessage(playerid, "/approve [name]"); SendClientMessage(playerid, COLOR_YELLOW, "[NAMES]:{FFFFFF} house, business, car, food, faction, greet, frisk"); return 1; } if (!strcmp(params, "house", true) && PlayerData[playerid][pHouseSeller] != INVALID_PLAYER_ID) { new sellerid = PlayerData[playerid][pHouseSeller], houseid = PlayerData[playerid][pHouseOffered], price = PlayerData[playerid][pHouseValue]; if (!IsPlayerNearPlayer(playerid, sellerid, 6.0)) return SendErrorMessage(playerid, "You are not near that player."); if (GetMoney(playerid) < price) return SendErrorMessage(playerid, "You have insufficient funds to purchase this house."); if (House_Nearest(playerid) != houseid) return SendErrorMessage(playerid, "You must be near the house to purchase it."); if (!House_IsOwner(sellerid, houseid)) return SendErrorMessage(playerid, "This house offer is no longer valid."); SendServerMessage(playerid, "You have successfully purchased %s's house for %s.", ReturnName(sellerid, 0), FormatNumber(price)); SendServerMessage(sellerid, "%s has successfully purchased your house for %s.", ReturnName(playerid, 0), FormatNumber(price)); HouseData[houseid][houseOwner] = GetPlayerSQLID(playerid); House_Save(houseid); GiveMoney(playerid, -price); GiveMoney(playerid, price); Log_Write("logs/offer_log.txt", "[%s] %s (%s) has sold a house to %s (%s) for %s.", ReturnDate(), ReturnName(playerid, 0), PlayerData[playerid][pIP], ReturnName(sellerid, 0), PlayerData[sellerid][pIP], FormatNumber(price)); PlayerData[playerid][pHouseSeller] = INVALID_PLAYER_ID; PlayerData[playerid][pHouseOffered] = -1; PlayerData[playerid][pHouseValue] = 0; } if (!strcmp(params, "business", true) && PlayerData[playerid][pBusinessSeller] != INVALID_PLAYER_ID) { new sellerid = PlayerData[playerid][pBusinessSeller], bizid = PlayerData[playerid][pBusinessOffered], price = PlayerData[playerid][pBusinessValue]; if (!IsPlayerNearPlayer(playerid, sellerid, 6.0)) return SendErrorMessage(playerid, "You are not near that player."); if (GetMoney(playerid) < price) return SendErrorMessage(playerid, "You have insufficient funds to purchase this business."); if (Business_Nearest(playerid) != bizid) return SendErrorMessage(playerid, "You must be near the business to purchase it."); if (!Business_IsOwner(sellerid, bizid)) return SendErrorMessage(playerid, "This business offer is no longer valid."); SendServerMessage(playerid, "You have successfully purchased %s's business for %s.", ReturnName(sellerid, 0), FormatNumber(price)); SendServerMessage(sellerid, "%s has successfully purchased your business for %s.", ReturnName(playerid, 0), FormatNumber(price)); BusinessData[bizid][bizOwner] = GetPlayerSQLID(playerid); Business_Save(bizid); GiveMoney(playerid, -price); GiveMoney(playerid, price); Log_Write("logs/offer_log.txt", "[%s] %s (%s) has sold a business to %s (%s) for %s.", ReturnDate(), ReturnName(playerid, 0), PlayerData[playerid][pIP], ReturnName(sellerid, 0), PlayerData[sellerid][pIP], FormatNumber(price)); PlayerData[playerid][pBusinessSeller] = INVALID_PLAYER_ID; PlayerData[playerid][pBusinessOffered] = -1; PlayerData[playerid][pBusinessValue] = 0; } if (!strcmp(params, "car", true) && PlayerData[playerid][pCarSeller] != INVALID_PLAYER_ID) { new sellerid = PlayerData[playerid][pCarSeller], carid = PlayerData[playerid][pCarOffered], price = PlayerData[playerid][pCarValue]; if (!IsPlayerNearPlayer(playerid, sellerid, 6.0)) return SendErrorMessage(playerid, "You are not near that player."); if (GetMoney(playerid) < price) return SendErrorMessage(playerid, "You have insufficient funds to purchase this vehicle."); if (Car_Nearest(playerid) != carid) return SendErrorMessage(playerid, "You must be near the vehicle to purchase it."); if (!Car_IsOwner(sellerid, carid)) return SendErrorMessage(playerid, "This vehicle offer is no longer valid."); SendServerMessage(playerid, "You have successfully purchased %s's %s for %s.", ReturnName(sellerid, 0), ReturnVehicleModelName(CarData[carid][carModel]), FormatNumber(price)); SendServerMessage(sellerid, "%s has successfully purchased your %s for %s.", ReturnName(playerid, 0), ReturnVehicleModelName(CarData[carid][carModel]), FormatNumber(price)); CarData[carid][carOwner] = GetPlayerSQLID(playerid); Car_Save(carid); GiveMoney(playerid, -price); GiveMoney(playerid, price); Log_Write("logs/offer_log.txt", "[%s] %s (%s) has sold a %s to %s (%s) for %s.", ReturnDate(), ReturnName(playerid, 0), PlayerData[playerid][pIP], ReturnVehicleModelName(CarData[carid][carModel]), ReturnName(sellerid, 0), PlayerData[sellerid][pIP], FormatNumber(price)); PlayerData[playerid][pCarSeller] = INVALID_PLAYER_ID; PlayerData[playerid][pCarOffered] = -1; PlayerData[playerid][pCarValue] = 0; } if (!strcmp(params, "food", true) && PlayerData[playerid][pFoodSeller] != INVALID_PLAYER_ID) { new sellerid = PlayerData[playerid][pFoodSeller], type = PlayerData[playerid][pFoodType], price = PlayerData[playerid][pFoodPrice]; if (!IsPlayerNearPlayer(playerid, sellerid, 6.0)) return SendErrorMessage(playerid, "You are not near that player."); if (GetMoney(playerid) < price) return SendErrorMessage(playerid, "You have insufficient funds for the food."); switch (type) { case 1: { new id = Inventory_Add(playerid, "Water Bottle", 2958); if (id == -1) return SendErrorMessage(playerid, "You don't have anymore room in your inventory."); SendServerMessage(playerid, "You have purchased some water from %s for $%d (added to inventory).", ReturnName(sellerid, 0), price); SendServerMessage(sellerid, "%s has accepted the water for $%d.", ReturnName(playerid, 0), price); } case 2: { new id = Inventory_Add(playerid, "Soda", 1543); if (id == -1) return SendErrorMessage(playerid, "You don't have anymore room in your inventory."); SendServerMessage(playerid, "You have purchased a soda from %s for $%d (added to inventory).", ReturnName(sellerid, 0), price); SendServerMessage(sellerid, "%s has accepted the soda for $%d.", ReturnName(playerid, 0), price); } case 3: { new id = Inventory_Add(playerid, "Cooked Burger", 2703); if (id == -1) return SendErrorMessage(playerid, "You don't have anymore room in your inventory."); SendServerMessage(playerid, "You have purchased a burger from %s for $%d (added to inventory).", ReturnName(sellerid, 0), price); SendServerMessage(sellerid, "%s has acceptedthe burger for $%d.", ReturnName(playerid, 0), price); } case 4: { new id = Inventory_Add(playerid, "Cooked Pizza", 2702); if (id == -1) return SendErrorMessage(playerid, "You don't have anymore room in your inventory."); SendServerMessage(playerid, "You have purchased a slice of pizza from %s for $%d (added to inventory).", ReturnName(sellerid, 0), price); SendServerMessage(sellerid, "%s has accepted the slice of pizza for $%d.", ReturnName(playerid, 0), price); } case 5: { new id = Inventory_Add(playerid, "Chicken", 2663); if (id == -1) return SendErrorMessage(playerid, "You don't have anymore room in your inventory."); SendServerMessage(playerid, "You have purchased some chicken from %s for $%d (added to inventory).", ReturnName(sellerid, 0), price); SendServerMessage(sellerid, "%s has accepted the chicken for $%d.", ReturnName(playerid, 0), price); } } PlayerData[playerid][pFoodSeller] = INVALID_PLAYER_ID; PlayerData[playerid][pFoodType] = 0; PlayerData[playerid][pFoodPrice] = 0; } if (!strcmp(params, "faction", true) && PlayerData[playerid][pFactionOffer] != INVALID_PLAYER_ID) { new targetid = PlayerData[playerid][pFactionOffer], factionid = PlayerData[playerid][pFactionOffered]; if (!FactionData[factionid][factionExists] || PlayerData[targetid][pFactionRank] < FactionData[PlayerData[targetid][pFaction]][factionRanks] - 1) return SendErrorMessage(playerid, "The faction offer is no longer available."); SetFaction(playerid, factionid); PlayerData[playerid][pFactionRank] = 1; SendServerMessage(playerid, "You have accepted %s's offer to join \"%s\".", ReturnName(targetid, 0), Faction_GetName(targetid)); SendServerMessage(targetid, "%s has accepted your offer to join \"%s\".", ReturnName(playerid, 0), Faction_GetName(targetid)); PlayerData[playerid][pFactionOffer] = INVALID_PLAYER_ID; PlayerData[playerid][pFactionOffered] = -1; } if (!strcmp(params, "greet", true) && PlayerData[playerid][pShakeOffer] != INVALID_PLAYER_ID) { new targetid = PlayerData[playerid][pShakeOffer], type = PlayerData[playerid][pShakeType]; if (!IsPlayerNearPlayer(playerid, targetid, 6.0)) return SendErrorMessage(playerid, "You are not near that player."); SetPlayerToFacePlayer(playerid, targetid); SetPlayerToFacePlayer(targetid, playerid); PlayerData[playerid][pShakeOffer] = INVALID_PLAYER_ID; PlayerData[playerid][pShakeType] = 0; switch (type) { case 1: { ApplyAnimation(playerid, "GANGS", "hndshkaa", 4.0, 0, 0, 0, 0, 0, 1); ApplyAnimation(targetid, "GANGS", "hndshkaa", 4.0, 0, 0, 0, 0, 0, 1); } case 2: { ApplyAnimation(playerid, "GANGS", "hndshkba", 4.0, 0, 0, 0, 0, 0, 1); ApplyAnimation(targetid, "GANGS", "hndshkba", 4.0, 0, 0, 0, 0, 0, 1); } case 3: { ApplyAnimation(playerid, "GANGS", "hndshkda", 4.0, 0, 0, 0, 0, 0, 1); ApplyAnimation(targetid, "GANGS", "hndshkda", 4.0, 0, 0, 0, 0, 0, 1); } case 4: { ApplyAnimation(playerid, "GANGS", "hndshkea", 4.0, 0, 0, 0, 0, 0, 1); ApplyAnimation(targetid, "GANGS", "hndshkea", 4.0, 0, 0, 0, 0, 0, 1); } case 5: { ApplyAnimation(playerid, "GANGS", "hndshkfa", 4.0, 0, 0, 0, 0, 0, 1); ApplyAnimation(targetid, "GANGS", "hndshkfa", 4.0, 0, 0, 0, 0, 0, 1); } case 6: { ApplyAnimation(playerid, "GANGS", "prtial_hndshk_biz_01", 4.0, 0, 0, 0, 0, 0, 1); ApplyAnimation(targetid, "GANGS", "prtial_hndshk_biz_01", 4.0, 0, 0, 0, 0, 0, 1); } } SendServerMessage(playerid, "You have accepted %s's handshake.", ReturnName(targetid, 0)); SendServerMessage(targetid, "%s has accepted your handshake.", ReturnName(playerid, 0)); } if (!strcmp(params, "frisk", true) && PlayerData[playerid][pFriskOffer] != INVALID_PLAYER_ID) { new targetid = PlayerData[playerid][pFriskOffer]; if (!IsPlayerNearPlayer(playerid, targetid, 6.0)) return SendErrorMessage(playerid, "You are not near that player."); new models[MAX_INVENTORY], amount[MAX_INVENTORY]; for (new i = 0; i < PlayerData[playerid][pCapacity]; i ++) { if (InventoryData[playerid][i][invExists]) { models[i] = InventoryData[playerid][i][invModel]; amount[i] = InventoryData[playerid][i][invQuantity]; } else { models[i] = -1; amount[i] = -1; } } PlayerData[playerid][pFriskOffer] = INVALID_PLAYER_ID; ShowModelSelectionMenu(targetid, ReturnName(playerid), MODEL_SELECTION_FRISK, models, sizeof(models), 0.0, 0.0, 0.0, 1.0, -1, true, amount); } return 1; } CMD:storage(playerid, params[]) { static houseid = -1; if ((houseid = House_Inside(playerid)) != -1 && (House_IsOwner(playerid, houseid) || GetFactionType(playerid) == FACTION_POLICE)) { House_OpenStorage(playerid, houseid); } else SendErrorMessage(playerid, "You are not in range of your house interior."); return 1; } CMD:edithouse(playerid, params[]) { static id, type[24], string[128]; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "ds[24]S()[128]", id, type, string)) { SendSyntaxMessage(playerid, "/edithouse [id] [name]"); SendClientMessage(playerid, COLOR_YELLOW, "[NAMES]:{FFFFFF} location, interior, price, address, type"); return 1; } if ((id < 0 || id >= MAX_HOUSES) || !HouseData[id][houseExists]) return SendErrorMessage(playerid, "You have specified an invalid house ID."); if (!strcmp(type, "location", true)) { GetPlayerPos(playerid, HouseData[id][housePos][0], HouseData[id][housePos][1], HouseData[id][housePos][2]); GetPlayerFacingAngle(playerid, HouseData[id][housePos][3]); HouseData[id][houseExterior] = GetPlayerInterior(playerid); HouseData[id][houseExteriorVW] = GetPlayerVirtualWorld(playerid); House_Refresh(id); House_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the location of house ID: %d.", ReturnName(playerid, 0), id); } else if (!strcmp(type, "interior", true)) { GetPlayerPos(playerid, HouseData[id][houseInt][0], HouseData[id][houseInt][1], HouseData[id][houseInt][2]); GetPlayerFacingAngle(playerid, HouseData[id][houseInt][3]); HouseData[id][houseInterior] = GetPlayerInterior(playerid); foreach (new i : Player) { if (PlayerData[i][pHouse] == HouseData[id][houseID]) { SetPlayerPos(i, HouseData[id][houseInt][0], HouseData[id][houseInt][1], HouseData[id][houseInt][2]); SetPlayerFacingAngle(i, HouseData[id][houseInt][3]); SetPlayerInterior(i, HouseData[id][houseInterior]); SetCameraBehindPlayer(i); } } House_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the interior spawn of house ID: %d.", ReturnName(playerid, 0), id); } else if (!strcmp(type, "price", true)) { new price; if (sscanf(string, "d", price)) return SendSyntaxMessage(playerid, "/edithouse [id] [price] [new price]"); HouseData[id][housePrice] = price; House_Refresh(id); House_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the price of house ID: %d to %s.", ReturnName(playerid, 0), id, FormatNumber(price)); } else if (!strcmp(type, "address", true)) { new address[32]; if (sscanf(string, "s[32]", address)) return SendSyntaxMessage(playerid, "/edithouse [id] [address] [new address]"); format(HouseData[id][houseAddress], 32, address); House_Refresh(id); House_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the address of house ID: %d to \"%s\".", ReturnName(playerid, 0), id, address); } else if (!strcmp(type, "type", true)) { new typeint; if (sscanf(string, "d", typeint)) return SendSyntaxMessage(playerid, "/edithouse [id] [type] [interior type]"); if (typeint < 1 || typeint > sizeof(arrHouseInteriors)) return SendErrorMessage(playerid, "The specified type must be between 1 and %d.", sizeof(arrHouseInteriors)); HouseData[id][houseInt][0] = arrHouseInteriors[typeint][eHouseX]; HouseData[id][houseInt][1] = arrHouseInteriors[typeint][eHouseY]; HouseData[id][houseInt][2] = arrHouseInteriors[typeint][eHouseZ]; HouseData[id][houseInt][3] = arrHouseInteriors[typeint][eHouseAngle]; HouseData[id][houseInterior] = arrHouseInteriors[typeint][eHouseInterior]; foreach (new i : Player) { if (PlayerData[i][pHouse] == HouseData[id][houseID]) { SetPlayerPos(i, HouseData[id][houseInt][0], HouseData[id][houseInt][1], HouseData[id][houseInt][2]); SetPlayerFacingAngle(i, HouseData[id][houseInt][3]); SetPlayerInterior(i, HouseData[id][houseInterior]); SetCameraBehindPlayer(i); } } House_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the type of house ID: %d to %d.", ReturnName(playerid, 0), id, typeint); } return 1; } CMD:near(playerid, params[]) { static id = -1; if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); if ((id = House_Nearest(playerid)) != -1) SendServerMessage(playerid, "You are standing near house ID: %d.", id); if ((id = Business_Nearest(playerid)) != -1) SendServerMessage(playerid, "You are standing near business ID: %d.", id); if ((id = Entrance_Nearest(playerid)) != -1) SendServerMessage(playerid, "You are standing near entrance ID: %d.", id); if ((id = Job_Nearest(playerid)) != -1) SendServerMessage(playerid, "You are standing near job ID: %d.", id); if ((id = Arrest_Nearest(playerid)) != -1) SendServerMessage(playerid, "You are standing near arrest point ID: %d.", id); if ((id = Pump_Nearest(playerid)) != -1) SendServerMessage(playerid, "You are standing near pump ID: %d.", id); if ((id = Crate_Nearest(playerid)) != -1) SendServerMessage(playerid, "You are standing near crate ID: %d.", id); if ((id = Gate_Nearest(playerid)) != -1) SendServerMessage(playerid, "You are standing near gate ID: %d.", id); if ((id = ATM_Nearest(playerid)) != -1) SendServerMessage(playerid, "You are standing near ATM ID: %d.", id); if ((id = Garbage_Nearest(playerid)) != -1) SendServerMessage(playerid, "You are standing near garbage bin ID: %d.", id); if ((id = Vendor_Nearest(playerid)) != -1) SendServerMessage(playerid, "You are standing near vendor ID: %d.", id); if ((id = Rack_Nearest(playerid)) != -1) SendServerMessage(playerid, "You are standing near weapon rack ID: %d.", id); if ((id = Speed_Nearest(playerid)) != -1) SendServerMessage(playerid, "You are standing near speed camera ID: %d.", id); if ((id = Graffiti_Nearest(playerid)) != -1) SendServerMessage(playerid, "You are standing near graffiti ID: %d.", id); if ((id = Detector_Nearest(playerid)) != -1) SendServerMessage(playerid, "You are standing near detector ID: %d.", id); return 1; } CMD:createbiz(playerid, params[]) { static type, price, id; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "dd", type, price)) { SendSyntaxMessage(playerid, "/createbiz [type] [price]"); SendClientMessage(playerid, COLOR_YELLOW, "[TYPES]:{FFFFFF} 1: Retail | 2: Weapons | 3: Clothes | 4: Fast Food | 5: Dealership | 6: Gas Station | 7: Furniture"); return 1; } if (type < 1 || type > 7) return SendErrorMessage(playerid, "Invalid type specified. Types range from 1 to 7."); id = Business_Create(playerid, type, price); if (id == -1) return SendErrorMessage(playerid, "The server has reached the limit for businesses."); SendServerMessage(playerid, "You have successfully created business ID: %d.", id); return 1; } CMD:editbiz(playerid, params[]) { static id, type[24], string[128]; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "ds[24]S()[128]", id, type, string)) { SendSyntaxMessage(playerid, "/editbiz [id] [name]"); SendClientMessage(playerid, COLOR_YELLOW, "[NAMES]:{FFFFFF} location, interior, deliver, name, price, stock, type, cars, spawn"); return 1; } if ((id < 0 || id >= MAX_BUSINESSES) || !BusinessData[id][bizExists]) return SendErrorMessage(playerid, "You have specified an invalid business ID."); if (!strcmp(type, "location", true)) { GetPlayerPos(playerid, BusinessData[id][bizPos][0], BusinessData[id][bizPos][1], BusinessData[id][bizPos][2]); GetPlayerFacingAngle(playerid, BusinessData[id][bizPos][3]); BusinessData[id][bizExterior] = GetPlayerInterior(playerid); BusinessData[id][bizExteriorVW] = GetPlayerVirtualWorld(playerid); Business_Refresh(id); Business_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the location of business ID: %d.", ReturnName(playerid, 0), id); } else if (!strcmp(type, "interior", true)) { GetPlayerPos(playerid, BusinessData[id][bizInt][0], BusinessData[id][bizInt][1], BusinessData[id][bizInt][2]); GetPlayerFacingAngle(playerid, BusinessData[id][bizInt][3]); BusinessData[id][bizInterior] = GetPlayerInterior(playerid); foreach (new i : Player) { if (PlayerData[i][pBusiness] == BusinessData[id][bizID]) { SetPlayerPos(i, BusinessData[id][bizInt][0], BusinessData[id][bizInt][1], BusinessData[id][bizInt][2]); SetPlayerFacingAngle(i, BusinessData[id][bizInt][3]); SetPlayerInterior(i, BusinessData[id][bizInterior]); SetCameraBehindPlayer(i); } } Business_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the interior spawn of business ID: %d.", ReturnName(playerid, 0), id); } else if (!strcmp(type, "deliver", true)) { if (BusinessData[id][bizType] == 5) return SendErrorMessage(playerid, "This business doesn't accept deliveries."); if (GetPlayerInterior(playerid) > 0 || GetPlayerVirtualWorld(playerid) > 0) return SendErrorMessage(playerid, "You can only place the delivery point outside interiors."); GetPlayerPos(playerid, BusinessData[id][bizDeliver][0], BusinessData[id][bizDeliver][1], BusinessData[id][bizDeliver][2]); Business_Refresh(id); Business_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the deliver point of business ID: %d.", ReturnName(playerid, 0), id); } else if (!strcmp(type, "price", true)) { new price; if (sscanf(string, "d", price)) return SendSyntaxMessage(playerid, "/editbiz [id] [price] [new price]"); BusinessData[id][bizPrice] = price; Business_Refresh(id); Business_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the price of business ID: %d to %s.", ReturnName(playerid, 0), id, FormatNumber(price)); } else if (!strcmp(type, "stock", true)) { new amount; if (sscanf(string, "d", amount)) return SendSyntaxMessage(playerid, "/editbiz [id] [stock] [product amount]"); BusinessData[id][bizProducts] = amount; Business_Refresh(id); Business_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the stock of business ID: %d to %s products.", ReturnName(playerid, 0), id, FormatNumber(amount, "")); } else if (!strcmp(type, "name", true)) { new name[32]; if (sscanf(string, "s[32]", name)) return SendSyntaxMessage(playerid, "/editbiz [id] [name] [new name]"); format(BusinessData[id][bizName], 32, name); Business_Refresh(id); Business_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the name of business ID: %d to \"%s\".", ReturnName(playerid, 0), id, name); } else if (!strcmp(type, "type", true)) { new typeint; if (sscanf(string, "d", typeint)) { SendSyntaxMessage(playerid, "/editbiz [id] [type] [business type]"); SendClientMessage(playerid, COLOR_YELLOW, "[TYPES]:{FFFFFF} 1: Retail | 2: Weapons | 3: Clothes | 4: Fast Food | 5: Dealership | 6: Gas Station | 7: Furniture"); return 1; } if (typeint < 1 || typeint > 7) return SendErrorMessage(playerid, "The specified type must be between 1 and 7."); BusinessData[id][bizType] = typeint; switch (typeint) { case 1: { BusinessData[id][bizInt][0] = -27.3074; BusinessData[id][bizInt][1] = -30.8741; BusinessData[id][bizInt][2] = 1003.5573; BusinessData[id][bizInt][3] = 0.0000; BusinessData[id][bizInterior] = 4; } case 2: { BusinessData[id][bizInt][0] = 316.3963; BusinessData[id][bizInt][1] = -169.8375; BusinessData[id][bizInt][2] = 999.6010; BusinessData[id][bizInt][3] = 0.0000; BusinessData[id][bizInterior] = 6; } case 3: { BusinessData[id][bizInt][0] = 161.4801; BusinessData[id][bizInt][1] = -96.5368; BusinessData[id][bizInt][2] = 1001.8047; BusinessData[id][bizInt][3] = 0.0000; BusinessData[id][bizInterior] = 18; } case 4: { BusinessData[id][bizInt][0] = 363.3402; BusinessData[id][bizInt][1] = -74.6679; BusinessData[id][bizInt][2] = 1001.5078; BusinessData[id][bizInt][3] = 315.0000; BusinessData[id][bizInterior] = 10; } case 5: { BusinessData[id][bizInt][0] = 1494.5612; BusinessData[id][bizInt][1] = 1304.2061; BusinessData[id][bizInt][2] = 1093.2891; BusinessData[id][bizInt][3] = 0.0000; BusinessData[id][bizInterior] = 3; } case 6: { BusinessData[id][bizInt][0] = -27.3383; BusinessData[id][bizInt][1] = -57.6909; BusinessData[id][bizInt][2] = 1003.5469; BusinessData[id][bizInt][3] = 0.0000; BusinessData[id][bizInterior] = 6; } case 7: { BusinessData[id][bizInt][0] = -2240.4954; BusinessData[id][bizInt][1] = 128.3774; BusinessData[id][bizInt][2] = 1035.4210; BusinessData[id][bizInt][3] = 270.0000; BusinessData[id][bizInterior] = 6; } } foreach (new i : Player) { if (PlayerData[i][pBusiness] == BusinessData[id][bizID]) { SetPlayerPos(i, BusinessData[id][bizInt][0], BusinessData[id][bizInt][1], BusinessData[id][bizInt][2]); SetPlayerFacingAngle(i, BusinessData[id][bizInt][3]); SetPlayerInterior(i, BusinessData[id][bizInterior]); SetCameraBehindPlayer(i); } } Business_Refresh(id); Business_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the type of business ID: %d to %d.", ReturnName(playerid, 0), id, typeint); } else if (!strcmp(type, "cars", true)) { if (BusinessData[id][bizType] != 5) return SendErrorMessage(playerid, "This business is not a dealership!"); PlayerData[playerid][pDealership] = id; Business_EditCars(playerid, id); } else if (!strcmp(type, "spawn", true)) { if (BusinessData[id][bizType] != 5) return SendErrorMessage(playerid, "This business is not a dealership!"); if (GetPlayerInterior(playerid) > 0 || GetPlayerVirtualWorld(playerid) > 0) return SendErrorMessage(playerid, "You can only place the vehicle spawn outside interiors."); GetPlayerPos(playerid, BusinessData[id][bizSpawn][0], BusinessData[id][bizSpawn][1], BusinessData[id][bizSpawn][2]); GetPlayerFacingAngle(playerid, BusinessData[id][bizSpawn][3]); BusinessData[id][bizExterior] = GetPlayerInterior(playerid); Business_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the vehicle spawn of business ID: %d.", ReturnName(playerid, 0), id); } return 1; } CMD:products(playerid, params[]) { static bizid = -1; if ((bizid = Business_Inside(playerid)) != -1 && Business_IsOwner(playerid, bizid)) { Business_ProductMenu(playerid, bizid); } else SendErrorMessage(playerid, "You are not in range of your business interior."); return 1; } CMD:bizstate(playerid, params[]) { static id = 0; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", id)) return SendSyntaxMessage(playerid, "/bizstate [biz id]"); if ((id < 0 || id >= MAX_BUSINESSES) || !BusinessData[id][bizExists]) return SendErrorMessage(playerid, "You have specified an invalid business ID."); BusinessData[id][bizOwner] = 99999999; Business_Refresh(id); Business_Save(id); SendServerMessage(playerid, "This business is now owned by the state (/bizcmds).", id); return 1; } CMD:destroybiz(playerid, params[]) { static id = 0; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", id)) return SendSyntaxMessage(playerid, "/destroybiz [biz id]"); if ((id < 0 || id >= MAX_BUSINESSES) || !BusinessData[id][bizExists]) return SendErrorMessage(playerid, "You have specified an invalid business ID."); Business_Delete(id); SendServerMessage(playerid, "You have successfully destroyed business ID: %d.", id); return 1; } CMD:drink(playerid, params[]) { if (PlayerData[playerid][pHospital] != -1 || PlayerData[playerid][pCuffed] || PlayerData[playerid][pInjured] || !IsPlayerSpawned(playerid)) return SendErrorMessage(playerid, "You can't use this command now."); if (isnull(params)) return SendSyntaxMessage(playerid, "/drink [water/soda]"); if (PlayerData[playerid][pDrinking]) return SendErrorMessage(playerid, "You are already drinking from a bottle."); if (!strcmp(params, "soda", true)) { if (!Inventory_HasItem(playerid, "Soda")) return SendErrorMessage(playerid, "You don't have any bottles of soda on you."); if (PlayerData[playerid][pThirst] > 90) return SendErrorMessage(playerid, "You are not thirsty right now."); PlayerData[playerid][pDrinking] = 1; PlayerData[playerid][pDrinkBar] = CreatePlayerProgressBar(playerid, 572.00, 440.00, 56.50, 3.20, -1429936641, 100.0); ShowPlayerProgressBar(playerid, PlayerData[playerid][pDrinkBar]); SetPlayerProgressBarValue(playerid, PlayerData[playerid][pDrinkBar], 100.0); Inventory_Add(playerid, "Empty Bottle", 1484); Inventory_Remove(playerid, "Soda"); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_SPRUNK); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out a bottle of soda and opens it.", ReturnName(playerid, 0)); ShowPlayerFooter(playerid, "Press ~y~LMB~w~ to take a sip."); } else if (!strcmp(params, "water", true)) { if (!Inventory_HasItem(playerid, "Water Bottle")) return SendErrorMessage(playerid, "You don't have any bottles of water on you."); if (PlayerData[playerid][pThirst] > 90) return SendErrorMessage(playerid, "You are not thirsty right now."); PlayerData[playerid][pDrinking] = 2; PlayerData[playerid][pDrinkBar] = CreatePlayerProgressBar(playerid, 572.00, 440.00, 56.50, 3.20, -1429936641, 100.0); ShowPlayerProgressBar(playerid, PlayerData[playerid][pDrinkBar]); SetPlayerProgressBarValue(playerid, PlayerData[playerid][pDrinkBar], 100.0); Inventory_Add(playerid, "Empty Bottle", 1484); Inventory_Remove(playerid, "Water Bottle"); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_SPRUNK); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out a bottle of water and opens it.", ReturnName(playerid, 0)); ShowPlayerFooter(playerid, "Press ~y~LMB~w~ to take a sip."); } return 1; } CMD:cook(playerid, params[]) { new houseid = House_Inside(playerid); if (houseid == -1) return SendErrorMessage(playerid, "You must be inside a house to cook meals."); if (isnull(params)) return SendSyntaxMessage(playerid, "/cook [burger/pizza]"); if (PlayerData[playerid][pCuffed]) return SendErrorMessage(playerid, "You can't use this command at the moment."); if (!strcmp(params, "burger", true)) { if (!Inventory_HasItem(playerid, "Frozen Burger")) return SendErrorMessage(playerid, "You don't have any frozen burgers."); if (PlayerData[playerid][pCooking]) return SendErrorMessage(playerid, "You are already cooking a meal."); Inventory_Add(playerid, "Cardboard", 928); PlayerData[playerid][pCooking] = 1; PlayerData[playerid][pCookingTime] = 20; PlayerData[playerid][pCookingHouse] = houseid; Inventory_Remove(playerid, "Frozen Burger"); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s prepares the microwave and heats up a frozen burger (20 seconds).", ReturnName(playerid, 0)); } else if (!strcmp(params, "pizza", true)) { if (!Inventory_HasItem(playerid, "Frozen Pizza")) return SendErrorMessage(playerid, "You don't have any boxes of frozen pizza."); if (PlayerData[playerid][pCooking]) return SendErrorMessage(playerid, "You are already cooking a meal."); Inventory_Add(playerid, "Cardboard", 928); PlayerData[playerid][pCooking] = 2; PlayerData[playerid][pCookingTime] = 55; PlayerData[playerid][pCookingHouse] = houseid; Inventory_Remove(playerid, "Frozen Pizza"); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s prepares the oven and heats up a frozen pizza (55 seconds).", ReturnName(playerid, 0)); } return 1; } CMD:vest(playerid, params[]) { if (PlayerData[playerid][pHospital] != -1 || PlayerData[playerid][pCuffed] || PlayerData[playerid][pInjured] || !IsPlayerSpawned(playerid)) return SendErrorMessage(playerid, "You can't use this command now."); if (!Inventory_HasItem(playerid, "Armored Vest")) return SendErrorMessage(playerid, "You don't have an armored vest."); if (ReturnArmour(playerid) > 49) return SendErrorMessage(playerid, "You already have a full vest on."); SetPlayerArmour(playerid, 50.0); Inventory_Remove(playerid, "Armored Vest"); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out a kevlar vest and puts it on.", ReturnName(playerid, 0)); return 1; } CMD:vault(playerid, params[]) { static bizid = -1, type[24], str[12], amount; if ((bizid = Business_Inside(playerid)) != -1 && Business_IsOwner(playerid, bizid)) { if (sscanf(params, "s[24]S()[12]", type, str)) { SendSyntaxMessage(playerid, "/vault [name] (%s available)", FormatNumber(BusinessData[bizid][bizVault])); SendClientMessage(playerid, COLOR_YELLOW, "[NAMES]:{FFFFFF} withdraw, deposit, balance"); return 1; } if (!strcmp(type, "withdraw", true)) { if (sscanf(str, "d", amount)) return SendSyntaxMessage(playerid, "/vault [withdraw] [amount]"); if (amount < 1 || amount > BusinessData[bizid][bizVault]) return SendErrorMessage(playerid, "Invalid amount specified!"); BusinessData[bizid][bizVault] -= amount; Business_Save(bizid); GiveMoney(playerid, amount); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has withdrawn %s from the business vault.", ReturnName(playerid, 0), FormatNumber(amount)); } else if (!strcmp(type, "deposit", true)) { if (sscanf(str, "d", amount)) return SendSyntaxMessage(playerid, "/vault [deposit] [amount]"); if (amount < 1 || amount > GetMoney(playerid)) return SendErrorMessage(playerid, "Invalid amount specified!"); BusinessData[bizid][bizVault] += amount; Business_Save(bizid); GiveMoney(playerid, -amount); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has deposited %s into the business vault.", ReturnName(playerid, 0), FormatNumber(amount)); } else if (!strcmp(type, "balance", true)) { SendServerMessage(playerid, "\"%s\" has a total vault balance of: %s.", BusinessData[bizid][bizName], FormatNumber(BusinessData[bizid][bizVault])); } } else SendErrorMessage(playerid, "You are not in range of your business interior."); return 1; } CMD:drivingtest(playerid, params[]) { if (PlayerData[playerid][pDrivingTest]) return SendErrorMessage(playerid, "You have already started the driving test!"); if (!IsPlayerInRangeOfPoint(playerid, 3.0, -2033.0439, -117.4885, 1035.1719)) return SendErrorMessage(playerid, "You are not in range of the pickup."); if (Inventory_HasItem(playerid, "Driving License")) return SendErrorMessage(playerid, "You have your driving license already!"); if (GetMoney(playerid) < 50) return SendErrorMessage(playerid, "You don't have $50 for the driving test."); PlayerData[playerid][pInterior] = GetPlayerInterior(playerid); PlayerData[playerid][pWorld] = GetPlayerVirtualWorld(playerid); GetPlayerHealth(playerid, PlayerData[playerid][pHealth]); GetPlayerPos(playerid, PlayerData[playerid][pPos][0], PlayerData[playerid][pPos][1], PlayerData[playerid][pPos][2]); GetPlayerFacingAngle(playerid, PlayerData[playerid][pPos][3]); PlayerData[playerid][pTestCar] = CreateVehicle(410, -2047.1056, -87.7183, 34.8219, 0.1447, 1, 1, -1); PlayerData[playerid][pTestWarns] = 0; if (PlayerData[playerid][pTestCar] != INVALID_VEHICLE_ID) { PlayerData[playerid][pDrivingTest] = true; PlayerData[playerid][pTestStage] = 0; ResetVehicle(PlayerData[playerid][pTestCar]); SetPlayerVirtualWorld(playerid, (2000 + playerid)); SetVehicleVirtualWorld(PlayerData[playerid][pTestCar], (2000 + playerid)); PutPlayerInVehicle(playerid, PlayerData[playerid][pTestCar], 0); SetPlayerCheckpoint(playerid, g_arrDrivingCheckpoints[0][0], g_arrDrivingCheckpoints[0][1], g_arrDrivingCheckpoints[0][2], 3.0); SendServerMessage(playerid, "You have started the driving test."); SetPlayerInterior(playerid, 0); } return 1; } CMD:createentrance(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (isnull(params) || strlen(params) > 32) return SendSyntaxMessage(playerid, "/createentrance [name]"); new id = Entrance_Create(playerid, params); if (id == -1) return SendErrorMessage(playerid, "The server has reached the limit for entrances."); SendServerMessage(playerid, "You have successfully created entrance ID: %d.", id); return 1; } CMD:editentrance(playerid, params[]) { static id, type[24], string[128]; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "ds[24]S()[128]", id, type, string)) { SendSyntaxMessage(playerid, "/editentrance [id] [name]"); SendClientMessage(playerid, COLOR_YELLOW, "[NAMES]:{FFFFFF} location, interior, password, name, locked, mapicon, type, custom, virtual"); return 1; } if ((id < 0 || id >= MAX_ENTRANCES) || !EntranceData[id][entranceExists]) return SendErrorMessage(playerid, "You have specified an invalid entrance ID."); if (!strcmp(type, "location", true)) { GetPlayerPos(playerid, EntranceData[id][entrancePos][0], EntranceData[id][entrancePos][1], EntranceData[id][entrancePos][2]); GetPlayerFacingAngle(playerid, EntranceData[id][entrancePos][3]); EntranceData[id][entranceExterior] = GetPlayerInterior(playerid); EntranceData[id][entranceExteriorVW] = GetPlayerVirtualWorld(playerid); Entrance_Refresh(id); Entrance_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the location of entrance ID: %d.", ReturnName(playerid, 0), id); } else if (!strcmp(type, "interior", true)) { GetPlayerPos(playerid, EntranceData[id][entranceInt][0], EntranceData[id][entranceInt][1], EntranceData[id][entranceInt][2]); GetPlayerFacingAngle(playerid, EntranceData[id][entranceInt][3]); EntranceData[id][entranceInterior] = GetPlayerInterior(playerid); foreach (new i : Player) { if (PlayerData[i][pEntrance] == EntranceData[id][entranceID]) { SetPlayerPos(i, EntranceData[id][entranceInt][0], EntranceData[id][entranceInt][1], EntranceData[id][entranceInt][2]); SetPlayerFacingAngle(i, EntranceData[id][entranceInt][3]); SetPlayerInterior(i, EntranceData[id][entranceInterior]); SetCameraBehindPlayer(i); } } Entrance_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the interior spawn of entrance ID: %d.", ReturnName(playerid, 0), id); } else if (!strcmp(type, "custom", true)) { new status; if (sscanf(string, "d", status)) return SendSyntaxMessage(playerid, "/editentrance [id] [custom] [0/1]"); if (status < 0 || status > 1) return SendErrorMessage(playerid, "You must specify at least 0 or 1."); EntranceData[id][entranceCustom] = status; Entrance_Save(id); if (status) { SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has enabled custom interior mode for entrance ID: %d.", ReturnName(playerid, 0), id); } else { SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has disabled custom interior mode for entrance ID: %d.", ReturnName(playerid, 0), id); } } else if (!strcmp(type, "virtual", true)) { new worldid; if (sscanf(string, "d", worldid)) return SendSyntaxMessage(playerid, "/editentrance [id] [virtual] [interior world]"); EntranceData[id][entranceWorld] = worldid; foreach (new i : Player) if (Entrance_Inside(i) == id) { SetPlayerVirtualWorld(i, worldid); } Entrance_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the virtual of entrance ID: %d to %d.", ReturnName(playerid, 0), id, worldid); } else if (!strcmp(type, "mapicon", true)) { new icon; if (sscanf(string, "d", icon)) return SendSyntaxMessage(playerid, "/editentrance [id] [mapicon] [map icon]"); if (icon < 0 || icon > 63) return SendErrorMessage(playerid, "Invalid map icon! Valid map icons can be found at \"wiki.sa-mp.com/wiki/MapIcons\"."); EntranceData[id][entranceIcon] = icon; Entrance_Refresh(id); Entrance_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the price of entrance ID: %d to %d.", ReturnName(playerid, 0), id, icon); } else if (!strcmp(type, "password", true)) { new password[32]; if (sscanf(string, "s[32]", password)) return SendSyntaxMessage(playerid, "/editentrance [id] [password] [entrance pass] (use 'none' to disable)"); if (!strcmp(password, "none", true)) { EntranceData[id][entrancePass][0] = 0; } else { format(EntranceData[id][entrancePass], 32, password); } Entrance_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the password of entrance ID: %d to \"%s\".", ReturnName(playerid, 0), id, password); } else if (!strcmp(type, "locked", true)) { new locked; if (sscanf(string, "d", locked)) return SendSyntaxMessage(playerid, "/editentrance [id] [locked] [locked 0/1]"); if (locked < 0 || locked > 1) return SendErrorMessage(playerid, "Invalid value. Use 0 for unlocked and 1 for locked."); EntranceData[id][entranceLocked] = locked; Entrance_Save(id); if (locked) { SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has locked entrance ID: %d.", ReturnName(playerid, 0), id); } else { SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has unlocked entrance ID: %d.", ReturnName(playerid, 0), id); } } else if (!strcmp(type, "name", true)) { new name[32]; if (sscanf(string, "s[32]", name)) return SendSyntaxMessage(playerid, "/editentrance [id] [name] [new name]"); format(EntranceData[id][entranceName], 32, name); Entrance_Refresh(id); Entrance_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the name of entrance ID: %d to \"%s\".", ReturnName(playerid, 0), id, name); } else if (!strcmp(type, "type", true)) { new typeint; if (sscanf(string, "d", typeint)) { SendSyntaxMessage(playerid, "/editentrance [id] [type] [entrance type]"); SendClientMessage(playerid, COLOR_YELLOW, "[TYPES]:{FFFFFF} 0: None | 1: DMV | 2: Bank | 3: Warehouse | 4: City Hall | 5: Shooting Range"); return 1; } if (typeint < 0 || typeint > 5) return SendErrorMessage(playerid, "The specified type must be between 0 and 5."); if (EntranceData[id][entranceType] == 3 && typeint != 3) { DestroyForklifts(id); } else if (EntranceData[id][entranceType] != 3 && typeint == 3) { CreateForklifts(id); } EntranceData[id][entranceType] = typeint; switch (typeint) { case 1: { EntranceData[id][entranceInt][0] = -2029.5531; EntranceData[id][entranceInt][1] = -118.8003; EntranceData[id][entranceInt][2] = 1035.1719; EntranceData[id][entranceInt][3] = 0.0000; EntranceData[id][entranceInterior] = 3; } case 2: { EntranceData[id][entranceInt][0] = 1456.1918; EntranceData[id][entranceInt][1] = -987.9417; EntranceData[id][entranceInt][2] = 996.1050; EntranceData[id][entranceInt][3] = 90.0000; EntranceData[id][entranceInterior] = 6; } case 3: { EntranceData[id][entranceInt][0] = 1291.8246; EntranceData[id][entranceInt][1] = 5.8714; EntranceData[id][entranceInt][2] = 1001.0078; EntranceData[id][entranceInt][3] = 180.0000; EntranceData[id][entranceInterior] = 18; } case 4: { EntranceData[id][entranceInt][0] = 390.1687; EntranceData[id][entranceInt][1] = 173.8072; EntranceData[id][entranceInt][2] = 1008.3828; EntranceData[id][entranceInt][3] = 90.0000; EntranceData[id][entranceInterior] = 3; } case 5: { EntranceData[id][entranceInt][0] = 304.0165; EntranceData[id][entranceInt][1] = -141.9894; EntranceData[id][entranceInt][2] = 1004.0625; EntranceData[id][entranceInt][3] = 90.0000; EntranceData[id][entranceInterior] = 7; } } foreach (new i : Player) { if (PlayerData[i][pEntrance] == EntranceData[id][entranceID]) { SetPlayerPos(i, EntranceData[id][entranceInt][0], EntranceData[id][entranceInt][1], EntranceData[id][entranceInt][2]); SetPlayerFacingAngle(i, EntranceData[id][entranceInt][3]); SetPlayerInterior(i, EntranceData[id][entranceInterior]); SetCameraBehindPlayer(i); } } Entrance_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the type of entrance ID: %d to %d.", ReturnName(playerid, 0), id, typeint); } return 1; } CMD:destroyentrance(playerid, params[]) { static id = 0; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", id)) return SendSyntaxMessage(playerid, "/destroyentrance [entrance id]"); if ((id < 0 || id >= MAX_ENTRANCES) || !EntranceData[id][entranceExists]) return SendErrorMessage(playerid, "You have specified an invalid entrance ID."); Entrance_Delete(id); SendServerMessage(playerid, "You have successfully destroyed entrance ID: %d.", id); return 1; } CMD:ammo(playerid, params[]) { if (PlayerData[playerid][pHospital] != -1 || PlayerData[playerid][pCuffed] || PlayerData[playerid][pInjured] || !IsPlayerSpawned(playerid)) return SendErrorMessage(playerid, "You can't use this command now."); if (!Inventory_HasItem(playerid, "Ammo Cartridge")) return SendErrorMessage(playerid, "You don't have any ammo cartridges on you."); new weaponid = 0; switch ((weaponid = GetWeapon(playerid))) { case 22, 23: GiveWeaponToPlayer(playerid, weaponid, 68); case 24, 27: GiveWeaponToPlayer(playerid, weaponid, 35); case 25, 26: GiveWeaponToPlayer(playerid, weaponid, 20); case 28, 31, 32: GiveWeaponToPlayer(playerid, weaponid, 200); case 29, 30: GiveWeaponToPlayer(playerid, weaponid, 120); case 33, 34: GiveWeaponToPlayer(playerid, weaponid, 20); case 35..37: GiveWeaponToPlayer(playerid, weaponid, 4); case 38: GiveWeaponToPlayer(playerid, weaponid, 500); default: return SendErrorMessage(playerid, "You cannot use an ammo cartridge on this weapon."); } PlayReloadAnimation(playerid, weaponid); Inventory_Remove(playerid, "Ammo Cartridge"); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has used an ammo cartridge on their %s.", ReturnName(playerid, 0), ReturnWeaponName(weaponid)); return 1; } CMD:faq(playerid, params[]) { Dialog_Show(playerid, FAQ, DIALOG_STYLE_LIST, "Frequently Asked Questions", "How do I enter a building?\nHow do I access my inventory?\nHow do I pickup dropped items?\nWhat are the icons on my screen?\nHow do I refill my hunger and thirst?\nHow do I search for certain areas?\nHow do I stop working with my job?\nHow do I take out weapons and load them?\nHow do I edit the furniture in my house?\nHow do I interact with stuff in the server?", "Select", "Cancel"); return 1; } CMD:atm(playerid, params[]) { if (ATM_Nearest(playerid) == -1) return SendErrorMessage(playerid, "You are not in range of any ATM machine."); Dialog_Show(playerid, Bank, DIALOG_STYLE_LIST, "Bank Account", "Bank Balance: %s", "Select", "Cancel", FormatNumber(PlayerData[playerid][pBankMoney]), FormatNumber(PlayerData[playerid][pSavings])); return 1; } CMD:bank(playerid, params[]) { if (!IsPlayerInBank(playerid)) return SendErrorMessage(playerid, "You are not in range of any bank."); Dialog_Show(playerid, Bank, DIALOG_STYLE_LIST, "Bank Account", "Bank Balance: %s", "Select", "Cancel", FormatNumber(PlayerData[playerid][pBankMoney]), FormatNumber(PlayerData[playerid][pSavings])); return 1; } CMD:park(playerid, params[]) { new carid = GetPlayerVehicleID(playerid); if (!carid) return SendErrorMessage(playerid, "You must be inside your vehicle."); if (IsVehicleImpounded(carid)) return SendErrorMessage(playerid, "This vehicle is impounded and you can't use it."); if ((carid = Car_GetID(carid)) != -1 && Car_IsOwner(playerid, carid)) { if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendErrorMessage(playerid, "You must be the driver!"); static g_arrSeatData[10] = {INVALID_PLAYER_ID, ...}, g_arrDamage[4], Float:health, seatid; for (new i = 0; i < 14; i ++) { CarData[carid][carMods][i] = GetVehicleComponentInSlot(CarData[carid][carVehicle], i); } GetVehicleDamageStatus(CarData[carid][carVehicle], g_arrDamage[0], g_arrDamage[1], g_arrDamage[2], g_arrDamage[3]); GetVehicleHealth(CarData[carid][carVehicle], health); foreach (new i : Player) if (IsPlayerInVehicle(i, CarData[carid][carVehicle])) { seatid = GetPlayerVehicleSeat(i); g_arrSeatData[seatid] = i; } GetVehiclePos(CarData[carid][carVehicle], CarData[carid][carPos][0], CarData[carid][carPos][1], CarData[carid][carPos][2]); GetVehicleZAngle(CarData[carid][carVehicle], CarData[carid][carPos][3]); Car_Spawn(carid); Car_Save(carid); SendServerMessage(playerid, "You have successfully parked your %s.", ReturnVehicleName(CarData[carid][carVehicle])); UpdateVehicleDamageStatus(CarData[carid][carVehicle], g_arrDamage[0], g_arrDamage[1], g_arrDamage[2], g_arrDamage[3]); SetVehicleHealth(CarData[carid][carVehicle], health); for (new i = 0; i < sizeof(g_arrSeatData); i ++) if (g_arrSeatData[i] != INVALID_PLAYER_ID) { PutPlayerInVehicle(g_arrSeatData[i], CarData[carid][carVehicle], i); g_arrSeatData[i] = INVALID_PLAYER_ID; } } else SendErrorMessage(playerid, "You are not inside anything you can park."); return 1; } CMD:createpump(playerid, params[]) { static id, bizid = -1; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", bizid)) return SendSyntaxMessage(playerid, "/createpump [business id]"); if ((bizid < 0 || bizid >= MAX_BUSINESSES) || !BusinessData[bizid][bizExists]) return SendErrorMessage(playerid, "You have specified an invalid business ID."); if (BusinessData[bizid][bizType] != 6) return SendErrorMessage(playerid, "This business is not a gas station!"); if (GetPlayerInterior(playerid) > 0 || GetPlayerVirtualWorld(playerid) > 0) return SendErrorMessage(playerid, "You can only create gas pumps outside interiors."); id = Pump_Create(playerid, bizid); if (id == -1) return SendErrorMessage(playerid, "The business has reached the limit for gas pumps."); SendServerMessage(playerid, "You have successfully created gas pump ID: %d.", id); EditDynamicObject(playerid, PumpData[id][pumpObject]); PlayerData[playerid][pEditPump] = id; return 1; } CMD:destroypump(playerid, params[]) { static id = 0; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", id)) return SendSyntaxMessage(playerid, "/destroypump [pump id]"); if ((id < 0 || id >= MAX_GAS_PUMPS) || !PumpData[id][pumpExists]) return SendErrorMessage(playerid, "Invalid pump ID."); Pump_Delete(id); SendServerMessage(playerid, "You have successfully destroyed pump ID: %d.", id); return 1; } CMD:setpump(playerid, params[]) { static id = 0, amount; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "dd", id, amount)) return SendSyntaxMessage(playerid, "/setpump [pump id] [fuel amount]"); if ((id < 0 || id >= MAX_GAS_PUMPS) || !PumpData[id][pumpExists]) return SendErrorMessage(playerid, "Invalid pump ID."); PumpData[id][pumpFuel] = amount; Pump_Refresh(id); Pump_Save(id); SendServerMessage(playerid, "You have set the fuel to %d for pump ID: %d.", amount, id); return 1; } CMD:refuel(playerid, params[]) { new vehicleid = GetPlayerVehicleID(playerid); if (PlayerData[playerid][pRefill] != INVALID_VEHICLE_ID) { BusinessData[PlayerData[playerid][pGasStation]][bizVault] += PlayerData[playerid][pRefillPrice]; Business_Save(PlayerData[playerid][pGasStation]); GiveMoney(playerid, -PlayerData[playerid][pRefillPrice]); SendServerMessage(playerid, "You have refueled your vehicle for $%d.", PlayerData[playerid][pRefillPrice]); StopRefilling(playerid); return 1; } if (!vehicleid) return SendErrorMessage(playerid, "You are not inside any vehicle!"); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendErrorMessage(playerid, "You must be the driver of the vehicle!"); if (GetEngineStatus(vehicleid)) return SendErrorMessage(playerid, "You must turn the engine off first."); new id = Pump_Nearest(playerid); if (id != -1) { if (CoreVehicles[vehicleid][vehFuel] > 95) return SendErrorMessage(playerid, "This vehicle doesn't need any fuel."); if (IsPumpOccupied(id)) return SendErrorMessage(playerid, "This fuel pump is already occupied."); if (PumpData[id][pumpFuel] < 1) return SendErrorMessage(playerid, "This pump doesn't have enough fuel."); PlayerData[playerid][pGasPump] = id; PlayerData[playerid][pGasStation] = PumpData[id][pumpBusiness]; PlayerData[playerid][pRefill] = vehicleid; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has started refilling their vehicle.", ReturnName(playerid, 0)); } else { SendErrorMessage(playerid, "You are not in range of any unused gas pump."); } return 1; } CMD:unmod(playerid, params[]) { new carid = GetPlayerVehicleID(playerid); if (!carid) return SendErrorMessage(playerid, "You must be inside your vehicle."); if (IsVehicleImpounded(carid)) return SendErrorMessage(playerid, "This vehicle is impounded and you can't use it."); if ((carid = Car_GetID(carid)) != -1 && Car_IsOwner(playerid, carid)) { if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendErrorMessage(playerid, "You must be the driver!"); for (new i = 0; i < 14; i ++) { RemoveVehicleComponent(CarData[carid][carVehicle], CarData[carid][carMods][i]); CarData[carid][carMods][i] = 0; } Car_Save(carid); SendServerMessage(playerid, "You have removed the modifications from this vehicle."); } else SendErrorMessage(playerid, "You are not inside anything you can unmodify."); return 1; } CMD:trunk(playerid, params[]) { new id = -1; if ((id = Car_Nearest(playerid)) != -1) { if (IsVehicleImpounded(CarData[id][carVehicle])) return SendErrorMessage(playerid, "This vehicle is impounded and you can't use it."); if (IsPlayerInAnyVehicle(playerid)) return SendErrorMessage(playerid, "You must exit the vehicle first."); if (!IsDoorVehicle(CarData[id][carVehicle])) return SendErrorMessage(playerid, "This vehicle doesn't have a trunk."); if (CarData[id][carLocked]) return SendErrorMessage(playerid, "The vehicle's trunk is locked."); Car_ShowTrunk(playerid, id); } else SendErrorMessage(playerid, "You are not in range of any vehicle."); return 1; } CMD:bname(playerid, params[]) { new id = -1; if ((id = (Business_Inside(playerid) == -1) ? (Business_Nearest(playerid)) : (Business_Inside(playerid))) != -1 && Business_IsOwner(playerid, id)) { if (isnull(params)) return SendSyntaxMessage(playerid, "/bname [new name]"); if (strlen(params) > 32) return SendErrorMessage(playerid, "The business name can't exceed 32 characters."); format(BusinessData[id][bizName], 32, params); Business_Refresh(id); Business_Save(id); SendServerMessage(playerid, "Business name set to: \"%s\".", params); } else SendErrorMessage(playerid, "You are not in range of your business."); return 1; } CMD:bmessage(playerid, params[]) { new id = -1; if ((id = (Business_Inside(playerid) == -1) ? (Business_Nearest(playerid)) : (Business_Inside(playerid))) != -1 && Business_IsOwner(playerid, id)) { if (isnull(params)) return SendSyntaxMessage(playerid, "/bmessage [message] - Use \"none\" to disable."); if (!strcmp(params, "none", true)) { BusinessData[id][bizMessage][0] = '\0'; Business_Save(id); SendServerMessage(playerid, "You have removed the business message."); } else { format(BusinessData[id][bizMessage], 128, params); Business_Save(id); SendServerMessage(playerid, "Business message set to: \"%s\".", params); } } else SendErrorMessage(playerid, "You are not in range of your business."); return 1; } CMD:aojail(playerid, params[]) { if(PlayerData[playerid][pAdmin] >= 1) { new string[128], name[MAX_PLAYER_NAME], minutes; if(sscanf(params, "s[24]ds[64]", name, minutes)) return SendClientMessageEx(playerid, COLOR_WHITE, "USAGE: /aojail [player name] [time (minutes)]"); new tmpName[24], query[512]; mysql_real_escape_string(name, tmpName); SetPVarString(playerid, "OnJailAccount", tmpName); format(string, sizeof(string), "Attempting to jail %s's account for %d minutes...", tmpName, minutes); SendClientMessageEx(playerid, COLOR_LIGHTYELLOW, string); format(query,sizeof(query),"UPDATE `characters` SET `JailTime` = %d WHERE `Admin` < %d AND `Username` = '%s'", minutes*60, PlayerData[playerid][pAdmin], tmpName); mysql_tquery(g_iHandle, query, "OnJailAccount", "i", playerid); } return 1; } CMD:furniture(playerid, params[]) { static houseid = -1; if ((houseid = House_Inside(playerid)) != -1 && House_IsOwner(playerid, houseid)) { new count = 0, string[MAX_FURNITURE * 32]; for (new i = 0; i != MAX_FURNITURE; i ++) if (count < MAX_HOUSE_FURNITURE && FurnitureData[i][furnitureExists] && FurnitureData[i][furnitureHouse] == houseid) { ListedFurniture[playerid][count++] = i; format(string, sizeof(string), "%s%s (%.2f meters)\n", string, FurnitureData[i][furnitureName], GetPlayerDistanceFromPoint(playerid, FurnitureData[i][furniturePos][0], FurnitureData[i][furniturePos][1], FurnitureData[i][furniturePos][2])); } if (count) { Dialog_Show(playerid, ListedFurniture, DIALOG_STYLE_LIST, "Listed Furniture", string, "Select", "Cancel"); } else SendErrorMessage(playerid, "This house doesn't have any furniture spawned."); } else SendErrorMessage(playerid, "You are not in range of your house interior."); return 1; } CMD:createjob(playerid, params[]) { static type, id = -1; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/createjob [type]"); if (type < 1 || type > 9) return SendErrorMessage(playerid, "Invalid type specified. Types range from 1 to 9."); id = Job_Create(playerid, type); if (id == -1) return SendErrorMessage(playerid, "The server has reached the limit for jobs."); SendServerMessage(playerid, "You have successfully created job ID: %d.", id); return 1; } CMD:destroyjob(playerid, params[]) { static id = 0; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", id)) return SendSyntaxMessage(playerid, "/destroyjob [job id]"); if ((id < 0 || id >= MAX_DYNAMIC_JOBS) || !JobData[id][jobExists]) return SendErrorMessage(playerid, "You have specified an invalid job ID."); Job_Delete(id); SendServerMessage(playerid, "You have successfully destroyed job ID: %d.", id); return 1; } CMD:editjob(playerid, params[]) { static id, type[24], string[128]; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "ds[24]S()[128]", id, type, string)) { SendSyntaxMessage(playerid, "/editjob [id] [name]"); SendClientMessage(playerid, COLOR_YELLOW, "[NAMES]:{FFFFFF} location, type, point, deliver"); return 1; } if ((id < 0 || id >= MAX_DYNAMIC_JOBS) || !JobData[id][jobExists]) return SendErrorMessage(playerid, "You have specified an invalid job ID."); if (!strcmp(type, "location", true)) { static Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); JobData[id][jobPos][0] = x; JobData[id][jobPos][1] = y; JobData[id][jobPos][2] = z; JobData[id][jobInterior] = GetPlayerInterior(playerid); JobData[id][jobWorld] = GetPlayerVirtualWorld(playerid); Job_Refresh(id); Job_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the location of job ID: %d.", ReturnName(playerid, 0), id); } else if (!strcmp(type, "type", true)) { new typeint; if (sscanf(string, "d", typeint)) return SendSyntaxMessage(playerid, "/edithouse [id] [type] [new type]"); if (typeint < 1 || typeint > 9) return SendErrorMessage(playerid, "Invalid type specified. Types range from 1 to 9."); JobData[id][jobType] = typeint; Job_Refresh(id); Job_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the type of job ID: %d to %s.", ReturnName(playerid, 0), id, Job_GetName(typeint)); } else if (!strcmp(type, "point", true)) { static Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); JobData[id][jobPoint][0] = x; JobData[id][jobPoint][1] = y; JobData[id][jobPoint][2] = z; JobData[id][jobPointInt] = GetPlayerInterior(playerid); JobData[id][jobPointWorld] = GetPlayerVirtualWorld(playerid); Job_Refresh(id); Job_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the point of job ID: %d.", ReturnName(playerid, 0), id); } else if (!strcmp(type, "deliver", true)) { if (GetPlayerInterior(playerid) > 0 || GetPlayerVirtualWorld(playerid) > 0) return SendErrorMessage(playerid, "You can't place the deliver point inside interiors."); static Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); JobData[id][jobDeliver][0] = x; JobData[id][jobDeliver][1] = y; JobData[id][jobDeliver][2] = z; Job_Refresh(id); Job_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the deliver point of job ID: %d.", ReturnName(playerid, 0), id); } return 1; } CMD:quitjob(playerid, params[]) { if (PlayerData[playerid][pJob] != 0) { new vehicleid = GetPlayerVehicleID(playerid); if (PlayerData[playerid][pMinedRock]) { PlayerData[playerid][pMinedRock] = 0; PlayerData[playerid][pMineCount] = 0; DisablePlayerCheckpoint(playerid); RemovePlayerAttachedObject(playerid, 4); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE); } if (PlayerData[playerid][pJob] == JOB_COURIER) { if (PlayerData[playerid][pUnloading] != -1) { PlayerData[playerid][pUnloading] = -1; PlayerData[playerid][pUnloadVehicle] = INVALID_VEHICLE_ID; DisablePlayerCheckpoint(playerid); } if (PlayerData[playerid][pDeliverShipment]) { PlayerData[playerid][pShipment] = -1; PlayerData[playerid][pDeliverShipment] = 0; DisablePlayerCheckpoint(playerid); } if (PlayerData[playerid][pLoading]) { PlayerData[playerid][pLoading] = 0; PlayerData[playerid][pLoadType] = 0; DisablePlayerCheckpoint(playerid); } if (PlayerData[playerid][pLoadCrate]) { PlayerData[playerid][pLoadCrate] = 0; RemovePlayerAttachedObject(playerid, 4); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE); } } if (IsPlayerInWarehouse(playerid) && GetVehicleModel(vehicleid) == 530 && CoreVehicles[vehicleid][vehLoadType] == 7) { CoreVehicles[vehicleid][vehLoadType] = 0; DestroyObject(CoreVehicles[vehicleid][vehCrate]); CoreVehicles[vehicleid][vehCrate] = INVALID_OBJECT_ID; DisablePlayerCheckpoint(playerid); } SendServerMessage(playerid, "You have quit your job as a \"%s\".", Job_GetName(PlayerData[playerid][pJob])); PlayerData[playerid][pJob] = 0; } else SendErrorMessage(playerid, "You don't have a job to quit."); return 1; } CMD:takejob(playerid, params[]) { static id = -1; if ((id = Job_Nearest(playerid)) != -1) { if (PlayerData[playerid][pJob] == JobData[id][jobType]) return SendErrorMessage(playerid, "You have this job already."); PlayerData[playerid][pJob] = JobData[id][jobType]; return SendServerMessage(playerid, "You are now a %s - type \"/jobcmds\" for job commands.", Job_GetName(JobData[id][jobType])); } SendErrorMessage(playerid, "You are not in range of any job pickup."); return 1; } CMD:unload(playerid, params[]) { new id = Business_NearestDeliver(playerid), vid = GetPlayerVehicleID(playerid); if (PlayerData[playerid][pJob] != JOB_COURIER) return SendErrorMessage(playerid, "You don't have the appropriate job."); if (id == -1) return SendErrorMessage(playerid, "You are not in range of any delivery point."); if (!IsLoadableVehicle(vid)) return SendErrorMessage(playerid, "You are not inside any loadable vehicle."); if (!CoreVehicles[vid][vehLoadType] || CoreVehicles[vid][vehLoads] < 1) return SendErrorMessage(playerid, "There is nothing loaded in this vehicle."); if (PlayerData[playerid][pUnloading] != -1) return SendErrorMessage(playerid, "You are already unloading your crates."); if (PlayerData[playerid][pShipment] != -1 && id != PlayerData[playerid][pShipment]) return SendErrorMessage(playerid, "You didn't accept shipment for this business."); switch (CoreVehicles[vid][vehLoadType]) { case 1: { if (BusinessData[id][bizType] != 1 && BusinessData[id][bizType] != 6) return SendErrorMessage(playerid, "This business can't accept this load (wrong type)."); } case 2..4: { if (BusinessData[id][bizType] != CoreVehicles[vid][vehLoadType]) return SendErrorMessage(playerid, "This business can't accept this load (wrong type)."); } case 5: { if (BusinessData[id][bizType] != 6) return SendErrorMessage(playerid, "This business can't accept this load (wrong type)."); } case 6: { if (BusinessData[id][bizType] != 7) return SendErrorMessage(playerid, "This business can't accept this load (wrong type)."); } } static Float:fX, Float:fY, Float:fZ; DisableWaypoint(playerid); GetVehicleBoot(vid, fX, fY, fZ); RemovePlayerFromVehicle(playerid); PlayerData[playerid][pUnloading] = id; PlayerData[playerid][pUnloadVehicle] = vid; SetPlayerCheckpoint(playerid, fX, fY, fZ, 1.0); SendServerMessage(playerid, "Please unload the crates and deliver them to the point."); return 1; } CMD:repair(playerid, params[]) { if (PlayerData[playerid][pJob] != JOB_MECHANIC) return SendErrorMessage(playerid, "You don't have the appropriate job."); if (IsPlayerInAnyVehicle(playerid)) return SendErrorMessage(playerid, "You must exit the vehicle first."); if (!Inventory_HasItem(playerid, "Repair Kit")) return SendErrorMessage(playerid, "You don't have a repair kit on you."); if (PlayerData[playerid][pRepairTime] > gettime()) return SendErrorMessage(playerid, "You must wait %d seconds before repairing again.", PlayerData[playerid][pRepairTime] - gettime()); for (new i = 1; i != MAX_VEHICLES; i ++) if (IsValidVehicle(i) && IsPlayerNearHood(playerid, i)) { if (!IsEngineVehicle(i)) return SendErrorMessage(playerid, "This vehicle can't be repaired."); if (!GetHoodStatus(i)) return SendErrorMessage(playerid, "The hood must be opened before a repair."); if (CoreVehicles[i][vehRepairing]) return SendErrorMessage(playerid, "This vehicle is already being repaired."); Inventory_Remove(playerid, "Repair Kit"); ApplyAnimation(playerid, "BD_FIRE", "wash_up", 4.1, 0, 0, 0, 0, 0, 1); CoreVehicles[i][vehRepairing] = true; SetTimerEx("RepairCar", 5000, false, "dd", playerid, i); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s starts to repair the vehicle.", ReturnName(playerid, 0)); GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~g~Repairing...~w~ Please wait", 5500, 3); return 1; } SendErrorMessage(playerid, "You are not in range of any vehicle's hood."); return 1; } CMD:nitrous(playerid, params[]) { if (PlayerData[playerid][pJob] != JOB_MECHANIC) return SendErrorMessage(playerid, "You don't have the appropriate job."); if (IsPlayerInAnyVehicle(playerid)) return SendErrorMessage(playerid, "You must exit the vehicle first."); if (!Inventory_HasItem(playerid, "NOS Canister")) return SendErrorMessage(playerid, "You don't have a NOS canister on you."); for (new i = 1; i != MAX_VEHICLES; i ++) if (IsValidVehicle(i) && IsPlayerNearHood(playerid, i)) { if (!IsEngineVehicle(i) || IsABike(i) || IsABoat(i) || IsAPlane(i) || IsAHelicopter(i)) return SendErrorMessage(playerid, "You can't add nitrous to this vehicle."); if (!GetHoodStatus(i)) return SendErrorMessage(playerid, "The hood must be opened before adding nitrous."); Inventory_Remove(playerid, "NOS Canister"); ApplyAnimation(playerid, "BD_FIRE", "wash_up", 4.1, 0, 0, 0, 0, 0, 1); AddComponent(i, 1010); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s places a NOS canister into the vehicle's engine.", ReturnName(playerid, 0)); return 1; } SendErrorMessage(playerid, "You are not in range of any vehicle's hood."); return 1; } CMD:acceptcall(playerid, params[]) { if (PlayerData[playerid][pJob] != JOB_TAXI) return SendErrorMessage(playerid, "You don't have the appropriate job."); if (!PlayerData[playerid][pTaxiDuty]) return SendErrorMessage(playerid, "You must be on taxi duty to accept calls."); Taxi_ShowCalls(playerid); return 1; } CMD:taxi(playerid, params[]) { new modelid = GetVehicleModel(GetPlayerVehicleID(playerid)); if (PlayerData[playerid][pJob] != JOB_TAXI) return SendErrorMessage(playerid, "You don't have the appropriate job."); if (modelid != 438 && modelid != 420) return SendErrorMessage(playerid, "You must be inside a taxi."); if (PlayerData[playerid][pTaxiDuty]) { foreach (new i : Player) if (PlayerData[i][pTaxiPlayer] == playerid && IsPlayerInVehicle(i, GetPlayerVehicleID(playerid))) { LeaveTaxi(i, playerid); } SetPlayerColor(playerid, DEFAULT_COLOR); PlayerData[playerid][pTaxiDuty] = false; SendServerMessage(playerid, "You are no longer on taxi duty!"); } else { SetPlayerColor(playerid, 0xF5DEB300); PlayerData[playerid][pTaxiDuty] = true; SendClientMessageToAllEx(COLOR_GREEN, "[TAXI]: %s is now on taxi duty. Type \"/call 1222\" to call a taxi!", ReturnName(playerid, 0)); } return 1; } CMD:usekit(playerid, params[]) { if (PlayerData[playerid][pHospital] != -1 || PlayerData[playerid][pCuffed] || PlayerData[playerid][pInjured] || !IsPlayerSpawned(playerid)) return SendErrorMessage(playerid, "You can't use this command now."); if (PlayerData[playerid][pFirstAid]) return SendErrorMessage(playerid, "You are already using a first aid kit."); if (!Inventory_HasItem(playerid, "First Aid")) return SendErrorMessage(playerid, "You don't have any first aid kits on you."); if (ReturnHealth(playerid) > 99) return SendErrorMessage(playerid, "You don't need to use a first aid kit right now."); if (!IsPlayerInAnyVehicle(playerid)) ApplyAnimation(playerid, "SWAT", "gnstwall_injurd", 4.0, 1, 0, 0, 0, 0); PlayerData[playerid][pFirstAid] = true; PlayerData[playerid][pAidTimer] = SetTimerEx("FirstAidUpdate", 1000, true, "d", playerid); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s opens a first aid kit and uses it.", ReturnName(playerid, 0)); Inventory_Remove(playerid, "First Aid"); ShowPlayerFooter(playerid, "You have used a ~g~first aid kit!"); return 1; } CMD:phone(playerid, params[]) { if (!Inventory_HasItem(playerid, "Cellphone")) return SendErrorMessage(playerid, "You don't have a cellphone on you."); if (PlayerData[playerid][pHospital] != -1 || PlayerData[playerid][pCuffed] || PlayerData[playerid][pInjured] || !IsPlayerSpawned(playerid)) return SendErrorMessage(playerid, "You can't use this command now."); static str[32]; format(str, sizeof(str), "Phone (#%d)", PlayerData[playerid][pPhone]); if (PlayerData[playerid][pPhoneOff]) { Dialog_Show(playerid, MyPhone, DIALOG_STYLE_LIST, str, "Dial Number\nMy Contacts\nSend Text Message\nTurn On Phone", "Select", "Cancel"); } else { Dialog_Show(playerid, MyPhone, DIALOG_STYLE_LIST, str, "Dial Number\nMy Contacts\nSend Text Message\nTurn Off Phone", "Select", "Cancel"); } return 1; } CMD:sms(playerid, params[]) return cmd_text(playerid, params); CMD:text(playerid, params[]) { if (!Inventory_HasItem(playerid, "Cellphone")) return SendErrorMessage(playerid, "You don't have a cellphone on you."); if (PlayerData[playerid][pPhoneOff]) return SendErrorMessage(playerid, "Your phone must be powered on."); static targetid, number, text[128]; if (sscanf(params, "ds[128]", number, text)) return SendSyntaxMessage(playerid, "/text [phone number] [message]"); if (!number) return SendErrorMessage(playerid, "The specified phone number is not in service."); if ((targetid = GetNumberOwner(number)) != INVALID_PLAYER_ID) { if (targetid == playerid) return SendErrorMessage(playerid, "You can't text yourself!"); if (PlayerData[targetid][pPhoneOff]) return SendErrorMessage(playerid, "The recipient has their cellphone powered off."); GiveMoney(playerid, -1); ShowPlayerFooter(playerid, "You've been ~r~charged~w~ $1 to send a text."); SendClientMessageEx(targetid, COLOR_YELLOW, "[TEXT]: %s - %s (%d)", text, ReturnName(playerid, 0), PlayerData[playerid][pPhone]); SendClientMessageEx(playerid, COLOR_YELLOW, "[TEXT]: %s - %s (%d)", text, ReturnName(playerid, 0), PlayerData[playerid][pPhone]); PlayerPlaySoundEx(targetid, 21001); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out their phone and sends a text.", ReturnName(playerid, 0)); } else { SendErrorMessage(playerid, "The specified phone number is not in service."); } return 1; } CMD:answer(playerid, params[]) { if (!PlayerData[playerid][pIncomingCall]) return SendErrorMessage(playerid, "There are no incoming calls to accept."); if (PlayerData[playerid][pCuffed]) return SendErrorMessage(playerid, "You can't use this command at the moment."); if (PlayerData[playerid][pPhoneOff]) return SendErrorMessage(playerid, "Your phone must be powered on."); new targetid = PlayerData[playerid][pCallLine]; PlayerData[playerid][pIncomingCall] = 0; PlayerData[targetid][pIncomingCall] = 0; SendClientMessage(playerid, COLOR_YELLOW, "[SERVER]:{FFFFFF} You have answered the call."); SendClientMessage(targetid, COLOR_YELLOW, "[SERVER]:{FFFFFF} The other line has accepted the call."); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has accepted the incoming call.", ReturnName(playerid, 0)); return 1; } CMD:hangup(playerid, params[]) { new targetid = PlayerData[playerid][pCallLine]; if (PlayerData[playerid][pEmergency] || PlayerData[playerid][pPlaceAd]) { PlayerData[playerid][pEmergency] = 0; PlayerData[playerid][pPlaceAd] = 0; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has hung up their cellphone.", ReturnName(playerid, 0)); return 1; } if (targetid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "There are no calls to hangup."); if (PlayerData[playerid][pIncomingCall]) { SendClientMessage(playerid, COLOR_YELLOW, "[PHONE]:{FFFFFF} You have declined the incoming call."); SendClientMessage(targetid, COLOR_YELLOW, "[PHONE]:{FFFFFF} The other line has declined the call."); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has declined the call.", ReturnName(playerid, 0)); } else { SendClientMessage(playerid, COLOR_YELLOW, "[PHONE]:{FFFFFF} You have hung up the call."); SendClientMessage(targetid, COLOR_YELLOW, "[PHONE]:{FFFFFF} The other line has hung up the call."); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has hung up their cellphone.", ReturnName(playerid, 0)); SendNearbyMessage(targetid, 30.0, COLOR_PURPLE, "** %s has hung up their cellphone.", ReturnName(targetid, 0)); } PlayerData[playerid][pIncomingCall] = 0; PlayerData[targetid][pIncomingCall] = 0; PlayerData[playerid][pCallLine] = INVALID_PLAYER_ID; PlayerData[targetid][pCallLine] = INVALID_PLAYER_ID; return 1; } CMD:paint(playerid, params[]) { if (PlayerData[playerid][pCuffed]) return SendErrorMessage(playerid, "You can't use this command at the moment."); new vehicleid = GetNearestVehicle(playerid); if (vehicleid == INVALID_VEHICLE_ID) return SendErrorMessage(playerid, "You are not standing near any vehicle."); if (!Inventory_HasItem(playerid, "Spray Can")) return SendErrorMessage(playerid, "You don't have any cans of spray paint."); if (IsPlayerInAnyVehicle(playerid)) return SendErrorMessage(playerid, "You must exit the vehicle first."); static colors[256]; for (new i = 0; i < sizeof(colors); i ++) { colors[i] = i; } ShowColorSelectionMenu(playerid, MODEL_SELECTION_COLOR, colors); return 1; } CMD:id(playerid, params[]) { if (isnull(params)) return SendSyntaxMessage(playerid, "/id [playerid/name]"); if (strlen(params) < 3) return SendErrorMessage(playerid, "You must specify at least 3 characters."); new count; foreach (new i : Player) { if (strfind(ReturnName(i), params, true) != -1) { SendClientMessageEx(playerid, COLOR_WHITE, "** %s - ID: %d", ReturnName(i), i); count++; } } if (!count) return SendErrorMessage(playerid, "No users matched the search criteria: \"%s\".", params); return 1; } CMD:binfo(playerid, params[]) { new id = -1; if ((id = (Business_Inside(playerid) == -1) ? (Business_Nearest(playerid)) : (Business_Inside(playerid))) != -1 && Business_IsOwner(playerid, id)) { SendServerMessage(playerid, "ID: %d | Business: %s | Products: %d | Vault: %s", id, BusinessData[id][bizName], BusinessData[id][bizProducts], FormatNumber(BusinessData[id][bizVault])); } else SendErrorMessage(playerid, "You are not in range of your business."); return 1; } CMD:loadcrate(playerid, params[]) { new vehid = GetPlayerVehicleID(playerid); if (PlayerData[playerid][pJob] != JOB_UNLOADER) return SendErrorMessage(playerid, "You don't have the appropriate job."); if (!IsPlayerInWarehouse(playerid)) return SendErrorMessage(playerid, "You must be inside a warehouse to do this."); if (GetVehicleModel(vehid) != 530) return SendErrorMessage(playerid, "You must be inside a forklift."); if (CoreVehicles[vehid][vehLoadType] == 7) return SendErrorMessage(playerid, "This forklift has a crate loaded already."); if (!IsPlayerInRangeOfPoint(playerid, 5.0, 1260.3976, -20.0215, 1001.0234)) return SendErrorMessage(playerid, "You must be closer to the crates."); if (PlayerData[playerid][pLoading]) return SendErrorMessage(playerid, "You are already loading a crate at the moment."); PlayerData[playerid][pLoading] = 1; GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~r~Loading crate...", 3200, 3); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s moves the forklift towards the crate.", ReturnName(playerid, 0)); TogglePlayerControllable(playerid, 0); SetTimerEx("ForkliftUpdate", 3000, false, "dd", playerid, vehid); return 1; } CMD:mine(playerid, params[]) { if (PlayerData[playerid][pJob] != JOB_MINER) return SendErrorMessage(playerid, "You don't have the appropriate job."); if (!IsPlayerNearMine(playerid)) return SendErrorMessage(playerid, "You must be near the mine."); if (PlayerData[playerid][pMining]) { PlayerData[playerid][pMining] = false; PlayerData[playerid][pMineCount] = 0; RemovePlayerAttachedObject(playerid, 4); SendServerMessage(playerid, "You have finished your mining job."); } else { PlayerData[playerid][pMining] = true; PlayerData[playerid][pMineCount] = 0; SendServerMessage(playerid, "You are now mining! Use the fire key to begin digging."); SetPlayerAttachedObject(playerid, 4, 18634, 6, 0.156547, 0.039423, 0.026570, 198.109115, 6.364907, 262.997558, 1.000000, 1.000000, 1.000000); } return 1; } CMD:sellfood(playerid, params[]) { if (PlayerData[playerid][pJob] != JOB_FOOD_VENDOR) return SendErrorMessage(playerid, "You don't have the appropriate job."); if (GetVehicleModel(GetPlayerVehicleID(playerid)) != 423) return SendErrorMessage(playerid, "You are not inside a food truck."); static userid, food[24], price; if (sscanf(params, "us[24]d", userid, food, price)) { SendSyntaxMessage(playerid, "/sellfood [playerid/name] [food name] [price]"); SendClientMessage(playerid, COLOR_YELLOW, "[NAMES]:{FFFFFF} water, soda, burger, pizza, chicken"); return 1; } if (userid == INVALID_PLAYER_ID || !IsPlayerNearPlayer(playerid, userid, 7.0)) return SendErrorMessage(playerid, "That player is disconnected or not near you."); if (price < 1 || price > 20) return SendErrorMessage(playerid, "The price can't be below $1 or above $20."); if (!strcmp(food, "water", true)) { PlayerData[userid][pFoodSeller] = playerid; PlayerData[userid][pFoodType] = 1; PlayerData[userid][pFoodPrice] = price; SendServerMessage(userid, "%s has offered you some water for $%d (type \"/approve food\" to accept).", ReturnName(playerid, 0), price); SendServerMessage(playerid, "You have offered some water to %s for $%d.", ReturnName(userid, 0), price); } else if (!strcmp(food, "soda", true)) { PlayerData[userid][pFoodSeller] = playerid; PlayerData[userid][pFoodType] = 2; PlayerData[userid][pFoodPrice] = price; SendServerMessage(userid, "%s has offered you a soda for $%d (type \"/approve food\" to accept).", ReturnName(playerid, 0), price); SendServerMessage(playerid, "You have offered a soda to %s for $%d.", ReturnName(userid, 0), price); } else if (!strcmp(food, "burger", true)) { PlayerData[userid][pFoodSeller] = playerid; PlayerData[userid][pFoodType] = 3; PlayerData[userid][pFoodPrice] = price; SendServerMessage(userid, "%s has offered you a burger for $%d (type \"/approve food\" to accept).", ReturnName(playerid, 0), price); SendServerMessage(playerid, "You have offered a burger to %s for $%d.", ReturnName(userid, 0), price); } else if (!strcmp(food, "pizza", true)) { PlayerData[userid][pFoodSeller] = playerid; PlayerData[userid][pFoodType] = 4; PlayerData[userid][pFoodPrice] = price; SendServerMessage(userid, "%s has offered you a slice of pizza for $%d (type \"/approve food\" to accept).", ReturnName(playerid, 0), price); SendServerMessage(playerid, "You have offered a slice of pizza to %s for $%d.", ReturnName(userid, 0), price); } else if (!strcmp(food, "chicken", true)) { PlayerData[userid][pFoodSeller] = playerid; PlayerData[userid][pFoodType] = 5; PlayerData[userid][pFoodPrice] = price; SendServerMessage(userid, "%s has offered you some chicken for $%d (type \"/approve food\" to accept).", ReturnName(playerid, 0), price); SendServerMessage(playerid, "You have offered some chicken to %s for $%d.", ReturnName(userid, 0), price); } return 1; } CMD:createcrate(playerid, params[]) { static id = -1, type; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", type)) { SendSyntaxMessage(playerid, "/createcrate [type]"); SendClientMessage(playerid, COLOR_YELLOW, "[TYPES]:{FFFFFF} 1: Melee | 2: Pistol Parts | 3: SMG Parts | 4: Shotgun Parts | 5: Rifle Parts | 6: Drugs"); return 1; } if (type < 1 || type > 6) return SendErrorMessage(playerid, "Invalid type specified. Types range from 1 to 6."); id = Crate_Create(playerid, type); if (id == -1) return SendErrorMessage(playerid, "The server has reached the limit for crates."); SendServerMessage(playerid, "You have successfully created crate ID: %d.", id); return 1; } CMD:destroycrate(playerid, params[]) { static id = 0; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", id)) return SendSyntaxMessage(playerid, "/destroycrate [crate id]"); if ((id < 0 || id >= MAX_CRATES) || !CrateData[id][crateExists]) return SendErrorMessage(playerid, "You have specified an invalid crate ID."); Crate_Delete(id); SendServerMessage(playerid, "You have successfully destroyed crate ID: %d.", id); return 1; } CMD:crates(playerid, params[]) { static string[512]; string[0] = '\0'; for (new i = 1; i != MAX_VEHICLES; i ++) if (IsLoadableVehicle(i) && IsPlayerNearBoot(playerid, i)) { if (GetVehicleCrates(i) < 1) return SendErrorMessage(playerid, "There are no crates in this vehicle."); for (new j = 0; j != MAX_CRATES; j ++) if (CrateData[j][crateExists] && CrateData[j][crateVehicle] == i) { format(string, sizeof(string), "%sCrate #%d: %s Parts\n", string, j, Crate_GetType(CrateData[j][crateType])); } PlayerData[playerid][pCrateVehicle] = i; return Dialog_Show(playerid, Crates, DIALOG_STYLE_LIST, "Vehicle Crates", string, "Take", "Cancel"); } SendErrorMessage(playerid, "You are not in range of any loadable vehicle."); return 1; } CMD:craftparts(playerid, params[]) { new id = -1; if (PlayerData[playerid][pJob] != JOB_WEAPON_SMUGGLER) return SendErrorMessage(playerid, "You don't have the appropriate job."); if ((id = Job_NearestPoint(playerid)) == -1 || JobData[id][jobType] != JOB_WEAPON_SMUGGLER) return SendErrorMessage(playerid, "You are not in range of the craft factory."); if (PlayerData[playerid][pCarryCrate] == -1) return SendErrorMessage(playerid, "You are not carrying any crate."); if (PlayerData[playerid][pCrafting]) return SendErrorMessage(playerid, "You are already crafting weapon parts."); if (CrateData[PlayerData[playerid][pCarryCrate]][crateType] < 1 || CrateData[PlayerData[playerid][pCarryCrate]][crateType] > 5) return SendErrorMessage(playerid, "There are no weapon parts in this crate."); PlayerData[playerid][pCrafting] = 1; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s begins crafting their %s Parts.", ReturnName(playerid, 0), Crate_GetType(CrateData[PlayerData[playerid][pCarryCrate]][crateType])); GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~r~Crafting parts...", 11000, 3); TogglePlayerControllable(playerid, 0); SetTimerEx("CraftParts", 8000, false, "dd", playerid, PlayerData[playerid][pCarryCrate]); return 1; } CMD:opencrate(playerid, params[]) { new id = Crate_Nearest(playerid); if (id == -1 || CrateData[id][crateType] != 6) return SendErrorMessage(playerid, "You are not in range of any drug crate."); if (!Inventory_HasItem(playerid, "Crowbar")) return SendErrorMessage(playerid, "You need a crowbar to open this crate."); if (PlayerData[playerid][pOpeningCrate]) return SendErrorMessage(playerid, "You are already opening a crate."); PlayerData[playerid][pOpeningCrate] = 1; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out a crowbar and breaks the drug crate open.", ReturnName(playerid, 0)); GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~r~Opening crate...", 3000, 3); TogglePlayerControllable(playerid, 0); ApplyAnimation(playerid, "BASEBALL", "Bat_4", 4.0, 1, 1, 1, 1, 0, 1); SetTimerEx("OpenCrate", 3000, false, "dd", playerid, id); return 1; } CMD:plant(playerid, params[]) { if (isnull(params)) return SendSyntaxMessage(playerid, "/plant [weed/cocaine/heroin]"); if (Plant_Nearest(playerid) != -1) return SendErrorMessage(playerid, "You can't plant seeds near other plants."); if (!strcmp(params, "weed", true)) { if (Inventory_Count(playerid, "Marijuana Seeds") < 10) return SendErrorMessage(playerid, "You need at least 10 marijuana seeds."); Inventory_Remove(playerid, "Marijuana Seeds", 10); Plant_Create(playerid, 1); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s plants some marijuana seeds into the ground.", ReturnName(playerid, 0)); } else if (!strcmp(params, "cocaine", true)) { if (Inventory_Count(playerid, "Cocaine Seeds") < 10) return SendErrorMessage(playerid, "You need at least 10 cocaine seeds."); Inventory_Remove(playerid, "Cocaine Seeds", 10); Plant_Create(playerid, 2); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s plants some cocaine seeds into the ground.", ReturnName(playerid, 0)); } else if (!strcmp(params, "heroin", true)) { if (Inventory_Count(playerid, "Heroin Opium Seeds") < 10) return SendErrorMessage(playerid, "You need at least 10 heroin opium seeds."); Inventory_Remove(playerid, "Heroin Opium Seeds", 10); Plant_Create(playerid, 3); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s plants some heroin opium seeds into the ground.", ReturnName(playerid, 0)); } else { SendSyntaxMessage(playerid, "/plant [weed/cocaine/heroin]"); } return 1; } CMD:harvest(playerid, params[]) { new id = Plant_Nearest(playerid); if (id == -1) return SendErrorMessage(playerid, "You must be near a drug plant."); if (PlantData[id][plantDrugs] < Plant_MaxGrams(PlantData[id][plantType])) return SendErrorMessage(playerid, "This plant is not fully grown yet."); if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) return SendErrorMessage(playerid, "You must be crouched to harvest drug plant."); if (PlayerData[playerid][pHarvesting]) return SendErrorMessage(playerid, "You are already harvesting a plant."); GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~r~Harvesting plant...", 3100, 3); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s begins to harvest the drug plant.", ReturnName(playerid, 0)); PlayerData[playerid][pHarvesting] = 1; SetTimerEx("HarvestPlant", 3000, false, "dd", playerid, id); return 1; } CMD:createfaction(playerid, params[]) { static id = -1, type, name[32]; if (PlayerData[playerid][pAdmin] < 5 && !PlayerData[playerid][pFactionMod]) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "ds[32]", type, name)) { SendSyntaxMessage(playerid, "/createfaction [type] [name]"); SendClientMessage(playerid, COLOR_YELLOW, "[TYPES]:{FFFFFF} 1: Police | 2: News | 3: Medical | 4: Government | 5: Gang"); return 1; } if (type < 1 || type > 5) return SendErrorMessage(playerid, "Invalid type specified. Types range from 1 to 5."); id = Faction_Create(name, type); if (id == -1) return SendErrorMessage(playerid, "The server has reached the limit for factions."); SendServerMessage(playerid, "You have successfully created faction ID: %d.", id); return 1; } CMD:destroyfaction(playerid, params[]) { static id = 0; if (PlayerData[playerid][pAdmin] < 5 && !PlayerData[playerid][pFactionMod]) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", id)) return SendSyntaxMessage(playerid, "/destroyfaction [faction id]"); if ((id < 0 || id >= MAX_FACTIONS) || !FactionData[id][factionExists]) return SendErrorMessage(playerid, "You have specified an invalid faction ID."); Faction_Delete(id); SendServerMessage(playerid, "You have successfully destroyed faction ID: %d.", id); return 1; } CMD:open(playerid, params[]) { new id = Gate_Nearest(playerid); if (id != -1) { if (strlen(GateData[id][gatePass])) { Dialog_Show(playerid, GatePass, DIALOG_STYLE_INPUT, "Enter Password", "Please enter the password for this gate below:", "Submit", "Cancel"); } else { if (GateData[id][gateFaction] != -1 && PlayerData[playerid][pFaction] != GetFactionByID(GateData[id][gateFaction])) return SendErrorMessage(playerid, "You can't open this gate."); Gate_Operate(id); switch (GateData[id][gateOpened]) { case 0: ShowPlayerFooter(playerid, "You have ~r~closed~w~ the gate!"); case 1: ShowPlayerFooter(playerid, "You have ~g~opened~w~ the gate!"); } } } else if (IsPlayerNearDynamicObject(playerid, PrisonData[prisonDoors][0])) { if (GetFactionType(playerid) != FACTION_POLICE) return SendErrorMessage(playerid, "You must be a police officer to open this door."); if (!PrisonData[prisonDoorOpened][0]) { SetDynamicObjectRot(PrisonData[prisonDoors][0], 0.0, 0.0, -90.0); PrisonData[prisonDoorOpened][0] = true; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes their key and opens the prison door.", ReturnName(playerid, 0)); } else { SetDynamicObjectRot(PrisonData[prisonDoors][0], 0.0, 0.0, 0.0); PrisonData[prisonDoorOpened][0] = false; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes their key and closes the prison door.", ReturnName(playerid, 0)); } } else if (IsPlayerNearDynamicObject(playerid, PrisonData[prisonDoors][1])) { if (GetFactionType(playerid) != FACTION_POLICE) return SendErrorMessage(playerid, "You must be a police officer to open this door."); if (!PrisonData[prisonDoorOpened][1]) { SetDynamicObjectRot(PrisonData[prisonDoors][1], 0.0, 0.0, 0.0); PrisonData[prisonDoorOpened][1] = true; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes their key and opens the prison door.", ReturnName(playerid, 0)); } else { SetDynamicObjectRot(PrisonData[prisonDoors][1], 0.0, 0.0, 90.0); PrisonData[prisonDoorOpened][1] = false; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes their key and closes the prison door.", ReturnName(playerid, 0)); } } else if (IsPlayerNearDynamicObject(playerid, PrisonData[prisonDoors][2])) { if (GetFactionType(playerid) != FACTION_POLICE) return SendErrorMessage(playerid, "You must be a police officer to open this door."); if (!PrisonData[prisonDoorOpened][2]) { SetDynamicObjectRot(PrisonData[prisonDoors][2], 0.0, 0.0, -90.0); PrisonData[prisonDoorOpened][2] = true; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes their key and opens the prison door.", ReturnName(playerid, 0)); } else { SetDynamicObjectRot(PrisonData[prisonDoors][2], 0.0, 0.0, 0.0); PrisonData[prisonDoorOpened][2] = false; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes their key and closes the prison door.", ReturnName(playerid, 0)); } } for (new i = 0; i < 24; i ++) if (IsPlayerNearDynamicObject(playerid, PrisonData[prisonCells][i], 3.0)) { if (GetFactionType(playerid) != FACTION_POLICE) return SendErrorMessage(playerid, "You must be a police officer to open this cell."); if (!PrisonData[prisonCellOpened][i]) { MoveDynamicObject(PrisonData[prisonCells][i], PrisonCells[i][0], PrisonCells[i][1] + 1.6, PrisonCells[i][2], 3.0); PrisonData[prisonCellOpened][i] = true; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes their key and opens the prison cell.", ReturnName(playerid, 0)); } else { MoveDynamicObject(PrisonData[prisonCells][i], PrisonCells[i][0], PrisonCells[i][1], PrisonCells[i][2], 3.0); PrisonData[prisonCellOpened][i] = false; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes their key and closes the prison cell.", ReturnName(playerid, 0)); } break; } return 1; } CMD:drop(playerid, params[]) { new weaponid = 0; if (IsPlayerInAnyVehicle(playerid) || !IsPlayerSpawned(playerid)) return SendErrorMessage(playerid, "You can't drop any weapons right now."); if ((weaponid = GetWeapon(playerid)) == 0) return SendErrorMessage(playerid, "You can't drop a weapon unless you're holding one."); if (weaponid == 23 && PlayerData[playerid][pTazer]) return SendErrorMessage(playerid, "You can't drop a tazer."); if (weaponid == 25 && PlayerData[playerid][pBeanBag]) return SendErrorMessage(playerid, "You can't drop a beanbag shotgun."); static Float:x, Float:y, Float:z, Float:angle; GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, angle); x += 1.5 * floatsin(-angle, degrees); y += 1.5 * floatcos(-angle, degrees); DropItem(ReturnWeaponName(weaponid), ReturnName(playerid, 0), GetWeaponModel(weaponid), 1, x, y, z - 1, GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid), weaponid, GetPlayerAmmo(playerid)); ResetWeapon(playerid, weaponid); ApplyAnimation(playerid, "GRENADE", "WEAPON_throwu", 4.1, 0, 0, 0, 0, 0, 1); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out a %s and drops it on the floor.", ReturnName(playerid, 0), ReturnWeaponName(weaponid)); Log_Write("logs/droppick.txt", "[%s] %s has dropped a %s.", ReturnDate(), ReturnName(playerid, 0), ReturnWeaponName(weaponid)); return 1; } CMD:flist(playerid, params[]) { for (new i = 0; i != MAX_FACTIONS; i ++) if (FactionData[i][factionExists]) { SendClientMessageEx(playerid, COLOR_WHITE, "[ID: %d] {%06x}%s", i, FactionData[i][factionColor] >>> 8, FactionData[i][factionName]); } return 1; } CMD:editfaction(playerid, params[]) { static id, type[24], string[128]; if (PlayerData[playerid][pAdmin] < 5 && !PlayerData[playerid][pFactionMod]) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "ds[24]S()[128]", id, type, string)) { SendSyntaxMessage(playerid, "/editfaction [id] [name]"); SendClientMessage(playerid, COLOR_YELLOW, "[NAMES]:{FFFFFF} name, color, type, models, locker, ranks, maxranks"); return 1; } if ((id < 0 || id >= MAX_FACTIONS) || !FactionData[id][factionExists]) return SendErrorMessage(playerid, "You have specified an invalid faction ID."); if (!strcmp(type, "name", true)) { new name[32]; if (sscanf(string, "s[32]", name)) return SendSyntaxMessage(playerid, "/editfaction [id] [name] [new name]"); format(FactionData[id][factionName], 32, name); Faction_Save(id); SendFactionAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the name of faction ID: %d to \"%s\".", ReturnName(playerid, 0), id, name); } else if (!strcmp(type, "maxranks", true)) { new ranks; if (sscanf(string, "d", ranks)) return SendSyntaxMessage(playerid, "/editfaction [id] [maxranks] [maximum ranks]"); if (ranks < 1 || ranks > 15) return SendErrorMessage(playerid, "The specified ranks can't be below 1 or above 15."); FactionData[id][factionRanks] = ranks; Faction_Save(id); SendFactionAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the maximum ranks of faction ID: %d to %d.", ReturnName(playerid, 0), id, ranks); } else if (!strcmp(type, "ranks", true)) { Faction_ShowRanks(playerid, id); } else if (!strcmp(type, "color", true)) { new color; if (sscanf(string, "h", color)) return SendSyntaxMessage(playerid, "/editfaction [id] [color] [hex color]"); FactionData[id][factionColor] = color; Faction_Update(id); Faction_Save(id); SendFactionAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the {%06x}color{FF6347} of faction ID: %d.", ReturnName(playerid, 0), color >>> 8, id); } else if (!strcmp(type, "type", true)) { new typeint; if (sscanf(string, "d", typeint)) { SendSyntaxMessage(playerid, "/editfaction [id] [type] [faction type]"); SendClientMessage(playerid, COLOR_YELLOW, "[TYPES]:{FFFFFF} 1: Police | 2: News | 3: Medical | 4: Government | 5: Gang"); return 1; } if (typeint < 1 || typeint > 5) return SendErrorMessage(playerid, "Invalid type specified. Types range from 1 to 5."); FactionData[id][factionType] = typeint; Faction_Save(id); SendFactionAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the type of faction ID: %d to %d.", ReturnName(playerid, 0), id, typeint); } else if (!strcmp(type, "models", true)) { static skins[8]; for (new i = 0; i < sizeof(skins); i ++) skins[i] = (FactionData[id][factionSkins][i]) ? (FactionData[id][factionSkins][i]) : (19300); PlayerData[playerid][pFactionEdit] = id; ShowModelSelectionMenu(playerid, "Faction Skins", MODEL_SELECTION_SKINS, skins, sizeof(skins), -16.0, 0.0, -55.0); } else if (!strcmp(type, "locker", true)) { PlayerData[playerid][pFactionEdit] = id; Dialog_Show(playerid, FactionLocker, DIALOG_STYLE_LIST, "Faction Locker", "Set Location\nLocker Weapons", "Select", "Cancel"); } return 1; } CMD:color(playerid, params[]) { static color; if (sscanf(params, "h", color)) { SendSyntaxMessage(playerid, "/color [hex color]"); SendClientMessage(playerid, COLOR_YELLOW, "[EXAMPLE]:{FFFFFF} 0xFFFFFFFF is white, 0xFF0000FF is red, etc."); } else { SendClientMessageEx(playerid, color, "This is a test message, testing color 0x%06xFF.", color >>> 8); } return 1; } CMD:joblist(playerid, params[]) { Dialog_Show(playerid, JobList, DIALOG_STYLE_LIST, "Job List", "Courier\nMechanic\nTaxi Driver\nCargo Unloader\nMiner\nFood Vendor\nGarbage Man\nPackage Sorter\nWeapon Smuggler", "Select", "Cancel"); return 1; } CMD:flocker(playerid, params[]) { new factionid = PlayerData[playerid][pFaction]; if (factionid == -1) return SendErrorMessage(playerid, "You must be a faction member."); if (!IsNearFactionLocker(playerid)) return SendErrorMessage(playerid, "You are not in range of your faction's locker."); if (FactionData[factionid][factionType] != FACTION_GANG) Dialog_Show(playerid, Locker, DIALOG_STYLE_LIST, "Faction Locker", "Toggle Duty\nArmored Vest\nLocker Skins\nLocker Weapons", "Select", "Cancel"); else Dialog_Show(playerid, Locker, DIALOG_STYLE_LIST, "Faction Locker", "Locker Skins\nLocker Weapons", "Select", "Cancel"); return 1; } CMD:setleader(playerid, params[]) { static userid, id; if (PlayerData[playerid][pAdmin] < 4) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "ud", userid, id)) return SendSyntaxMessage(playerid, "/setleader [playerid/name] [faction id] (Use -1 to unset)"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if ((id < -1 || id >= MAX_FACTIONS) || (id != -1 && !FactionData[id][factionExists])) return SendErrorMessage(playerid, "You have specified an invalid faction ID."); if (id == -1) { ResetFaction(userid); SendServerMessage(playerid, "You have removed %s's faction leadership.", ReturnName(userid, 0)); SendServerMessage(userid, "%s has removed your faction leadership.", ReturnName(playerid, 0)); } else { SetFaction(userid, id); PlayerData[userid][pFactionRank] = FactionData[id][factionRanks]; SendServerMessage(playerid, "You have made %s the leader of \"%s\".", ReturnName(userid, 0), FactionData[id][factionName]); SendServerMessage(userid, "%s has made you the leader of \"%s\".", ReturnName(playerid, 0), FactionData[id][factionName]); } return 1; } CMD:asetfaction(playerid, params[]) { static userid, id; if (PlayerData[playerid][pAdmin] < 4) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "ud", userid, id)) return SendSyntaxMessage(playerid, "/asetfaction [playerid/name] [faction id] (Use -1 to unset)"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if ((id < -1 || id >= MAX_FACTIONS) || (id != -1 && !FactionData[id][factionExists])) return SendErrorMessage(playerid, "You have specified an invalid faction ID."); if (id == -1) { ResetFaction(userid); SendServerMessage(playerid, "You have removed %s from their faction.", ReturnName(userid, 0)); SendServerMessage(userid, "%s has removed you from your faction.", ReturnName(playerid, 0)); } else { SetFaction(userid, id); if (!PlayerData[userid][pFactionRank]) PlayerData[userid][pFactionRank] = 1; SendServerMessage(playerid, "You have set %s's faction to \"%s\".", ReturnName(userid, 0), FactionData[id][factionName]); SendServerMessage(userid, "%s has set your faction to \"%s\".", ReturnName(playerid, 0), FactionData[id][factionName]); } return 1; } CMD:asetrank(playerid, params[]) { static userid, rank, factionid; if (PlayerData[playerid][pAdmin] < 4) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "ud", userid, rank)) return SendSyntaxMessage(playerid, "/asetrank [playerid/name] [rank id]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if ((factionid = PlayerData[userid][pFaction]) == -1) return SendErrorMessage(playerid, "That player is not a member of any faction."); if (rank < 1 || rank > FactionData[factionid][factionRanks]) return SendErrorMessage(playerid, "Invalid rank. Ranks for this faction range from 1 to %d.", FactionData[factionid][factionRanks]); PlayerData[userid][pFactionRank] = rank; SendServerMessage(playerid, "You have set %s's faction rank to %d.", ReturnName(userid, 0), rank); SendServerMessage(userid, "%s has set your faction rank to %d.", ReturnName(playerid, 0), rank); return 1; } CMD:online(playerid, params[]) { new factionid = PlayerData[playerid][pFaction]; if (factionid == -1) return SendErrorMessage(playerid, "You must be a faction member."); SendClientMessage(playerid, COLOR_SERVER, "Online Members:"); foreach (new i : Player) if (PlayerData[i][pFaction] == factionid) { SendClientMessageEx(playerid, COLOR_WHITE, "[ID: %d] %s - %s (%d)", i, ReturnName(i, 0), Faction_GetRank(i), PlayerData[i][pFactionRank]); } return 1; } CMD:fac(playerid, params[]) { new factionid = PlayerData[playerid][pFaction]; if (factionid == -1) return SendErrorMessage(playerid, "You must be a faction member."); if (isnull(params)) return SendSyntaxMessage(playerid, "/(f)ac [message]"); if (PlayerData[playerid][pDisableFaction]) return SendErrorMessage(playerid, "You must enable faction chat first."); SendFactionMessage(factionid, COLOR_FACTION, "(( (%d) %s %s: %s ))", PlayerData[playerid][pFactionRank], Faction_GetRank(playerid), ReturnName(playerid, 0), params); Log_Write("logs/faction_chat.txt", "[%s] %s %s: %s", ReturnDate(), Faction_GetRank(playerid), ReturnName(playerid, 0), params); return 1; } CMD:fquit(playerid, params[]) { if (PlayerData[playerid][pFaction] == -1) return SendErrorMessage(playerid, "You must be a faction member."); if (GetFactionType(playerid) == FACTION_POLICE) { SetPlayerArmour(playerid, 0); ResetWeapons(playerid); } SendServerMessage(playerid, "You have quit the \"%s\" faction (rank %d).", Faction_GetName(playerid), PlayerData[playerid][pFactionRank]); ResetFaction(playerid); return 1; } CMD:finvite(playerid, params[]) { new userid; if (PlayerData[playerid][pFaction] == -1) return SendErrorMessage(playerid, "You must be a faction member."); if (PlayerData[playerid][pFactionRank] < FactionData[PlayerData[playerid][pFaction]][factionRanks] - 1) return SendErrorMessage(playerid, "You must be at least rank %d.", FactionData[PlayerData[playerid][pFaction]][factionRanks] - 1); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/finvite [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "That player is disconnected."); if (PlayerData[userid][pFaction] == PlayerData[playerid][pFaction]) return SendErrorMessage(playerid, "That player is already part of your faction."); if (PlayerData[userid][pFaction] != -1) return SendErrorMessage(playerid, "That player is already part of another faction."); PlayerData[userid][pFactionOffer] = playerid; PlayerData[userid][pFactionOffered] = PlayerData[playerid][pFaction]; SendServerMessage(playerid, "You have requested %s to join \"%s\".", ReturnName(userid, 0), Faction_GetName(playerid)); SendServerMessage(userid, "%s has offered you to join \"%s\" (type \"/approve faction\").", ReturnName(playerid, 0), Faction_GetName(playerid)); return 1; } CMD:fremove(playerid, params[]) { new userid; if (PlayerData[playerid][pFaction] == -1) return SendErrorMessage(playerid, "You must be a faction member."); if (PlayerData[playerid][pFactionRank] < FactionData[PlayerData[playerid][pFaction]][factionRanks] - 1) return SendErrorMessage(playerid, "You must be at least rank %d.", FactionData[PlayerData[playerid][pFaction]][factionRanks] - 1); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/fremove [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "That player is disconnected."); if (PlayerData[userid][pFaction] != PlayerData[playerid][pFaction]) return SendErrorMessage(playerid, "That player is not part of your faction."); SendServerMessage(playerid, "You have removed %s from \"%s\".", ReturnName(userid, 0), Faction_GetName(playerid)); SendServerMessage(userid, "%s has removed you from the \"%s\" faction.", ReturnName(playerid, 0), Faction_GetName(playerid)); ResetFaction(userid); return 1; } CMD:frank(playerid, params[]) { new userid, rankid; if (PlayerData[playerid][pFaction] == -1) return SendErrorMessage(playerid, "You must be a faction member."); if (PlayerData[playerid][pFactionRank] < FactionData[PlayerData[playerid][pFaction]][factionRanks] - 1) return SendErrorMessage(playerid, "You must be at least rank %d.", FactionData[PlayerData[playerid][pFaction]][factionRanks] - 1); if (sscanf(params, "ud", userid, rankid)) return SendSyntaxMessage(playerid, "/frank [playerid/name] [rank (1-%d)]", FactionData[PlayerData[playerid][pFaction]][factionRanks]); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "That player is disconnected."); if (userid == playerid) return SendErrorMessage(playerid, "You cannot set your own rank."); if (PlayerData[userid][pFaction] != PlayerData[playerid][pFaction]) return SendErrorMessage(playerid, "That player is not part of your faction."); if (rankid < 0 || rankid > FactionData[PlayerData[playerid][pFaction]][factionRanks]) return SendErrorMessage(playerid, "Invalid rank specified. Ranks range from 1 to %d.", FactionData[PlayerData[playerid][pFaction]][factionRanks]); PlayerData[userid][pFactionRank] = rankid; SendServerMessage(playerid, "You have promoted %s to %s (%d).", ReturnName(userid, 0), Faction_GetRank(userid), rankid); SendServerMessage(userid, "%s has promoted you to %s (%d).", ReturnName(playerid, 0), Faction_GetRank(userid), rankid); return 1; } CMD:spawnpoint(playerid, params[]) { new point; if(sscanf(params, "i", point)) return SendErrorMessage(playerid, "/spawnpoint [0-2] (0 = Airport, 1 = Faction, 2 = Last logged)"); if(point == 0) { SendClientMessage(playerid, COLOR_WHITE, "You've changed your spawn point to airport."); PlayerData[playerid][pSpawnPoint] = 0; return 1; } if(point == 1) { if(PlayerData[playerid][pFactionID] == -1) { SendErrorMessage(playerid, "You're not apart of a faction."); return 1; } SendClientMessage(playerid, COLOR_WHITE, "You've changed your spawn to faction."); PlayerData[playerid][pSpawnPoint] = 1; return 1; } if(point == 2) { SendClientMessage(playerid, COLOR_WHITE, "You've changed your spawn to your last logged off."); PlayerData[playerid][pSpawnPoint] = 2; return 1; } return 1; } CMD:fspawn(playerid, params[]) { new faction = PlayerData[playerid][pFactionID]; if (PlayerData[playerid][pFaction] == -1) return SendErrorMessage(playerid, "You must be a faction leader."); if (PlayerData[playerid][pFactionRank] < FactionData[PlayerData[playerid][pFaction]][factionRanks] - 1) return SendErrorMessage(playerid, "You must be at least rank %d.", FactionData[PlayerData[playerid][pFaction]][factionRanks] - 1); new Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X, Y, Z); FactionData[faction][SpawnX] = X; FactionData[faction][SpawnY] = Y; FactionData[faction][SpawnZ] = Z; FactionData[faction][SpawnInterior] = GetPlayerInterior(playerid); FactionData[faction][SpawnVW] = GetPlayerVirtualWorld(playerid); Faction_Save(faction); return 1; } CMD:tazer(playerid, params[]) { if (GetPlayerState(playerid) != PLAYER_STATE_ONFOOT || !IsPlayerSpawned(playerid)) return SendErrorMessage(playerid, "You can't use this command right now."); if (GetFactionType(playerid) != FACTION_POLICE) return SendErrorMessage(playerid, "You must be a police officer."); if (!PlayerData[playerid][pTazer]) { PlayerData[playerid][pTazer] = 1; GetPlayerWeaponData(playerid, 2, PlayerData[playerid][pGuns][2], PlayerData[playerid][pAmmo][2]); GivePlayerWeapon(playerid, 23, 20000); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out a tazer from their holster.", ReturnName(playerid, 0)); } else { PlayerData[playerid][pTazer] = 0; SetWeapons(playerid); SetPlayerArmedWeapon(playerid, PlayerData[playerid][pGuns][2]); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s puts their tazer into their holster.", ReturnName(playerid, 0)); } return 1; } CMD:beanbag(playerid, params[]) { if (GetPlayerState(playerid) != PLAYER_STATE_ONFOOT || !IsPlayerSpawned(playerid)) return SendErrorMessage(playerid, "You can't use this command right now."); if (GetFactionType(playerid) != FACTION_POLICE) return SendErrorMessage(playerid, "You must be a police officer."); if (!PlayerData[playerid][pBeanBag]) { PlayerData[playerid][pBeanBag] = 1; GetPlayerWeaponData(playerid, 3, PlayerData[playerid][pGuns][3], PlayerData[playerid][pAmmo][3]); GivePlayerWeapon(playerid, 25, 20000); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out a beanbag shotgun.", ReturnName(playerid, 0)); } else { PlayerData[playerid][pBeanBag] = 0; SetWeapons(playerid); SetPlayerArmedWeapon(playerid, PlayerData[playerid][pGuns][3]); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s puts their beanbag shotgun away.", ReturnName(playerid, 0)); } return 1; } CMD:cuff(playerid, params[]) { new userid; if (GetFactionType(playerid) != FACTION_POLICE) return SendErrorMessage(playerid, "You must be a police officer."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/cuff [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "That player is disconnected."); if (userid == playerid) return SendErrorMessage(playerid, "You cannot handcuff yourself."); if (!IsPlayerNearPlayer(playerid, userid, 5.0)) return SendErrorMessage(playerid, "You must be near this player."); if (PlayerData[userid][pStunned] < 0 && GetPlayerSpecialAction(userid) != SPECIAL_ACTION_HANDSUP && !IsPlayerIdle(userid)) return SendErrorMessage(playerid, "The player must be idle or stunned."); if (GetPlayerState(userid) != PLAYER_STATE_ONFOOT) return SendErrorMessage(playerid, "The player must be onfoot before you can cuff them."); if (PlayerData[userid][pCuffed]) return SendErrorMessage(playerid, "The player is already cuffed at the moment."); static string[64]; if (PlayerData[userid][pDrinking]) { SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE); DestroyPlayerProgressBar(playerid, PlayerData[playerid][pDrinkBar]); PlayerData[userid][pDrinking] = 0; } if (PlayerData[userid][pHoldWeapon] > 0) { HoldWeapon(userid, 0); } PlayerData[userid][pCuffed] = 1; SetPlayerSpecialAction(userid, SPECIAL_ACTION_CUFFED); format(string, sizeof(string), "You've been ~r~cuffed~w~ by %s.", ReturnName(playerid, 0)); ShowPlayerFooter(userid, string); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s tightens a pair of handcuffs on %s's wrists.", ReturnName(playerid, 0), ReturnName(userid, 0)); return 1; } CMD:uncuff(playerid, params[]) { new userid; if (GetFactionType(playerid) != FACTION_POLICE) return SendErrorMessage(playerid, "You must be a police officer."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/uncuff [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "That player is disconnected."); if (userid == playerid) return SendErrorMessage(playerid, "You cannot uncuff yourself."); if (!IsPlayerNearPlayer(playerid, userid, 5.0)) return SendErrorMessage(playerid, "You must be near this player."); if (!PlayerData[userid][pCuffed]) return SendErrorMessage(playerid, "The player is not cuffed at the moment."); static string[64]; PlayerData[userid][pCuffed] = 0; SetPlayerSpecialAction(userid, SPECIAL_ACTION_NONE); format(string, sizeof(string), "You've been ~g~uncuffed~w~ by %s.", ReturnName(playerid, 0)); ShowPlayerFooter(userid, string); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s loosens the pair of handcuffs on %s's wrists.", ReturnName(playerid, 0), ReturnName(userid, 0)); return 1; } CMD:drag(playerid, params[]) { new userid; if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/drag [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "That player is disconnected."); if (userid == playerid) return SendErrorMessage(playerid, "You cannot drag yourself."); if (!IsPlayerNearPlayer(playerid, userid, 5.0)) return SendErrorMessage(playerid, "You must be near this player."); if (!PlayerData[userid][pCuffed] && !PlayerData[userid][pStunned]) return SendErrorMessage(playerid, "The player is not cuffed or stunned."); if (PlayerData[userid][pDragged]) { PlayerData[userid][pDragged] = 0; PlayerData[userid][pDraggedBy] = INVALID_PLAYER_ID; KillTimer(PlayerData[userid][pDragTimer]); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s releases %s from their grip.", ReturnName(playerid, 0), ReturnName(userid, 0)); } else { PlayerData[userid][pDragged] = 1; PlayerData[userid][pDraggedBy] = playerid; PlayerData[userid][pDragTimer] = SetTimerEx("DragUpdate", 200, true, "dd", playerid, userid); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s grabs %s and starts dragging them.", ReturnName(playerid, 0), ReturnName(userid, 0)); } return 1; } CMD:detain(playerid, params[]) { new userid, vehicleid = GetNearestVehicle(playerid); if (GetFactionType(playerid) != FACTION_POLICE) return SendErrorMessage(playerid, "You must be a police officer."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/detain [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "That player is disconnected."); if (userid == playerid) return SendErrorMessage(playerid, "You cannot detained yourself."); if (!IsPlayerNearPlayer(playerid, userid, 5.0)) return SendErrorMessage(playerid, "You must be near this player."); if (!PlayerData[userid][pCuffed]) return SendErrorMessage(playerid, "The player is not cuffed at the moment."); if (vehicleid == INVALID_VEHICLE_ID) return SendErrorMessage(playerid, "You are not near any vehicle."); if (GetVehicleMaxSeats(vehicleid) < 2) return SendErrorMessage(playerid, "You can't detain that player in this vehicle."); if (IsPlayerInVehicle(userid, vehicleid)) { TogglePlayerControllable(userid, 1); RemoveFromVehicle(userid); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s opens the door and pulls %s out the vehicle.", ReturnName(playerid, 0), ReturnName(userid, 0)); } else { new seatid = GetAvailableSeat(vehicleid, 2); if (seatid == -1) return SendErrorMessage(playerid, "There are no more seats remaining."); new string[64]; format(string, sizeof(string), "You've been ~r~detained~w~ by %s.", ReturnName(playerid, 0)); TogglePlayerControllable(userid, 0); StopDragging(userid); PutPlayerInVehicle(userid, vehicleid, seatid); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s opens the door and places %s into the vehicle.", ReturnName(playerid, 0), ReturnName(userid, 0)); ShowPlayerFooter(userid, string); } return 1; } CMD:createarrest(playerid, params[]) { static id = -1, Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); id = Arrest_Create(x, y, z, GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid)); if (id == -1) return SendErrorMessage(playerid, "The server has reached the limit for arrest points."); SendServerMessage(playerid, "You have successfully created arrest point ID: %d.", id); return 1; } CMD:destroyarrest(playerid, params[]) { static id = 0; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", id)) return SendSyntaxMessage(playerid, "/destroyarrest [point id]"); if ((id < 0 || id >= MAX_ARREST_POINTS) || !ArrestData[id][arrestExists]) return SendErrorMessage(playerid, "You have specified an invalid arrest point ID."); Arrest_Delete(id); SendServerMessage(playerid, "You have successfully destroyed arrest point ID: %d.", id); return 1; } CMD:mdc(playerid, params[]) { if (GetFactionType(playerid) != FACTION_POLICE) return SendErrorMessage(playerid, "You must be a police officer."); if (!IsACruiser(GetPlayerVehicleID(playerid))) return SendErrorMessage(playerid, "You must be inside a police cruiser."); Dialog_Show(playerid, MainMDC, DIALOG_STYLE_LIST, "Mobile Data Computer", "Active Warrants\nPlace Charges\nView Charges", "Select", "Cancel"); return 1; } CMD:arrest(playerid, params[]) { static userid, time; if (GetFactionType(playerid) != FACTION_POLICE) return SendErrorMessage(playerid, "You must be a police officer."); if (sscanf(params, "ud", userid, time)) return SendSyntaxMessage(playerid, "/arrest [playerid/name] [minutes]"); if (userid == INVALID_PLAYER_ID || !IsPlayerNearPlayer(playerid, userid, 5.0)) return SendErrorMessage(playerid, "The player is disconnected or not near you."); if (time < 1 || time > 120) return SendErrorMessage(playerid, "The specified time can't be below 1 or above 120."); if (!PlayerData[userid][pCuffed]) return SendErrorMessage(playerid, "The player must be cuffed before an arrest is made."); if (!IsPlayerNearArrest(playerid)) return SendErrorMessage(playerid, "You must be near an arrest point."); PlayerData[userid][pPrisoned] = 1; PlayerData[userid][pJailTime] = time * 60; StopDragging(userid); SetPlayerInPrison(userid); ResetWeapons(userid); ResetPlayer(userid); PlayerData[userid][pWarrants] = 0; PlayerData[userid][pCuffed] = 0; PlayerTextDrawShow(userid, PlayerData[userid][pTextdraws][70]); SetPlayerSpecialAction(userid, SPECIAL_ACTION_NONE); SendClientMessageToAllEx(COLOR_LIGHTRED, "[PRISON] %s was imprisoned for %d days at San Andreas Prison.", ReturnName(userid, 0), time); return 1; } CMD:seizeplant(playerid, params[]) { static plantid; if (GetFactionType(playerid) != FACTION_POLICE) return SendErrorMessage(playerid, "You must be a police officer."); if ((plantid = Plant_Nearest(playerid)) == -1) return SendErrorMessage(playerid, "You are not standing near any drug plant."); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has seized a %s plant weighing %d grams.", ReturnName(playerid, 0), Plant_GetType(PlantData[plantid][plantType]), PlantData[plantid][plantDrugs]); Plant_Delete(plantid); return 1; } CMD:giveup(playerid, params[]) { if (!PlayerData[playerid][pInjured]) return SendErrorMessage(playerid, "You are not injured at the moment."); SetPlayerHealth(playerid, 0.0); SendServerMessage(playerid, "You have given up and accepted your death."); return 1; } CMD:loadinjured(playerid, params[]) { static userid, seatid; if (GetFactionType(playerid) != FACTION_MEDIC) return SendErrorMessage(playerid, "You must be part of a medical faction."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/loadinjured [playerid/name]"); if (userid == INVALID_PLAYER_ID || !IsPlayerNearPlayer(playerid, userid, 10.0)) return SendErrorMessage(playerid, "That player is disconnected or not near you."); if (userid == playerid) return SendErrorMessage(playerid, "You can't load yourself into an ambulance."); if (!PlayerData[userid][pInjured]) return SendErrorMessage(playerid, "That player is not injured."); for (new i = 0; i != MAX_VEHICLES; i ++) if (IsPlayerNearBoot(playerid, i) && GetVehicleModel(i) == 416) { seatid = GetAvailableSeat(i, 2); if (seatid == -1) return SendErrorMessage(playerid, "There is no room for the patient."); ClearAnimations(userid); PlayerData[userid][pInjured] = 2; PutPlayerInVehicle(userid, i, seatid); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s opens up the ambulance and loads %s on the stretcher.", ReturnName(playerid, 0), ReturnName(userid, 0)); TogglePlayerControllable(userid, 0); SetPlayerHealth(userid, 100.0); return 1; } SendErrorMessage(playerid, "You must be near an ambulance."); return 1; } CMD:dropinjured(playerid, params[]) { static userid; if (GetFactionType(playerid) != FACTION_MEDIC) return SendErrorMessage(playerid, "You must be part of a medical faction."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/dropinjured [playerid/name]"); if (userid == INVALID_PLAYER_ID || !IsPlayerInVehicle(playerid, GetPlayerVehicleID(playerid))) return SendErrorMessage(playerid, "That player is disconnected or not near you."); if (userid == playerid) return SendErrorMessage(playerid, "You can't deliver yourself to the hospital."); if (!PlayerData[userid][pInjured]) return SendErrorMessage(playerid, "That player is not injured."); for (new i = 0; i < sizeof(arrHospitalDeliver); i ++) if (IsPlayerInRangeOfPoint(playerid, 5.0, arrHospitalDeliver[i][0], arrHospitalDeliver[i][1], arrHospitalDeliver[i][2])) { ClearAnimations(userid); SetPlayerInterior(userid, 3); SendServerMessage(playerid, "You have delivered %s to the hospital.", ReturnName(userid, 0)); SetPlayerPos(userid, -204.5867, -1740.7955, 675.7687); SetPlayerFacingAngle(userid, 0.0000); TogglePlayerControllable(userid, 1); SetCameraBehindPlayer(userid); SetPlayerVirtualWorld(userid, i + 5000); PlayerData[userid][pHospitalInt] = i; PlayerData[userid][pHospital] = -1; PlayerData[userid][pHospitalTime] = 0; SendServerMessage(userid, "You have recovered at the nearest hospital."); GameTextForPlayer(userid, " ", 1, 3); ShowHungerTextdraw(userid, 1); PlayerData[userid][pInjured] = 0; TextDrawHideForPlayer(userid, gServerTextdraws[2]); return 1; } SendErrorMessage(playerid, "You must be near a hospital deliver location."); return 1; } CMD:m(playerid, params[]) { if (GetFactionType(playerid) != FACTION_POLICE && GetFactionType(playerid) != FACTION_MEDIC) return SendErrorMessage(playerid, "You can't use the megaphone."); if (isnull(params)) return SendSyntaxMessage(playerid, "/(m)egaphone [message]"); if (strlen(params) > 64) { SendNearbyMessage(playerid, 30.0, COLOR_YELLOW, "(Megaphone) %s says: %.64s", ReturnName(playerid, 0), params); SendNearbyMessage(playerid, 30.0, COLOR_YELLOW, "...%s", params[64]); } else { SendNearbyMessage(playerid, 30.0, COLOR_YELLOW, "(Megaphone) %s says: %s", ReturnName(playerid, 0), params); } return 1; } CMD:bandage(playerid, params[]) { static userid; if (GetFactionType(playerid) != FACTION_MEDIC) return SendErrorMessage(playerid, "You must be part of a medical faction."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/bandage [playerid/name]"); if (userid == INVALID_PLAYER_ID || !IsPlayerNearPlayer(playerid, userid, 6.0)) return SendErrorMessage(playerid, "That player is disconnected or not near you."); if (userid == playerid) return SendErrorMessage(playerid, "You can't use this command for yourself."); if (PlayerData[userid][pFirstAid]) return SendErrorMessage(playerid, "That player is already being bandaged."); if (ReturnHealth(userid) > 99) return SendErrorMessage(playerid, "That player doesn't need to be bandaged."); PlayerData[userid][pFirstAid] = true; PlayerData[userid][pAidTimer] = SetTimerEx("FirstAidUpdate", 1000, true, "d", userid); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s opens a first aid kit and uses a bandage on %s.", ReturnName(playerid, 0), ReturnName(userid, 0)); return 1; } CMD:broadcast(playerid, params[]) { if (GetFactionType(playerid) != FACTION_NEWS) return SendErrorMessage(playerid, "You must be part of a news faction."); if (!IsNewsVehicle(GetPlayerVehicleID(playerid))) return SendErrorMessage(playerid, "You must be inside a news van or chopper."); if (!PlayerData[playerid][pBroadcast]) { PlayerData[playerid][pBroadcast] = true; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has started a news broadcast.", ReturnName(playerid, 0)); SendServerMessage(playerid, "You have started a news broadcast (use \"/bc [text]\" to broadcast)."); } else { PlayerData[playerid][pBroadcast] = false; foreach (new i : Player) if (PlayerData[i][pNewsGuest] == playerid) { PlayerData[i][pNewsGuest] = INVALID_PLAYER_ID; } SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has stopped a news broadcast.", ReturnName(playerid, 0)); SendServerMessage(playerid, "You have stopped the news broadcast."); } return 1; } CMD:bc(playerid, params[]) { if (GetFactionType(playerid) != FACTION_NEWS) return SendErrorMessage(playerid, "You must be part of a news faction."); if (isnull(params)) return SendSyntaxMessage(playerid, "/bc [broadcast text]"); if (!IsNewsVehicle(GetPlayerVehicleID(playerid))) return SendErrorMessage(playerid, "You must be inside a news van or chopper."); if (!PlayerData[playerid][pBroadcast]) return SendErrorMessage(playerid, "You must be broadcasting to use this command."); if (strlen(params) > 64) { foreach (new i : Player) if (!PlayerData[i][pDisableBC]) { SendClientMessageEx(i, COLOR_LIGHTGREEN, "[NEWS] Reporter %s: %.64s", ReturnName(playerid, 0), params); SendClientMessageEx(i, COLOR_LIGHTGREEN, "...%s", params[64]); } } else { foreach (new i : Player) if (!PlayerData[i][pDisableBC]) { SendClientMessageEx(i, COLOR_LIGHTGREEN, "[NEWS] Reporter %s: %s", ReturnName(playerid, 0), params); } } return 1; } CMD:inviteguest(playerid, params[]) { static userid; if (GetFactionType(playerid) != FACTION_NEWS) return SendErrorMessage(playerid, "You must be part of a news faction."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/inviteguest [playerid/name]"); if (!PlayerData[playerid][pBroadcast]) return SendErrorMessage(playerid, "You must be broadcasting to use this command."); if (userid == INVALID_PLAYER_ID || !IsPlayerNearPlayer(playerid, userid, 5.0)) return SendErrorMessage(playerid, "That player is disconnected or not near you."); if (userid == playerid) return SendErrorMessage(playerid, "You can't add yourself as a guest."); if (PlayerData[userid][pNewsGuest] == playerid) return SendErrorMessage(playerid, "That player is already a guest of your broadcast."); if (PlayerData[userid][pNewsGuest] != INVALID_PLAYER_ID) return SendErrorMessage(playerid, "That player is already a guest of another broadcast."); PlayerData[userid][pNewsGuest] = playerid; SendServerMessage(playerid, "You have added %s as a broadcast guest.", ReturnName(userid, 0)); SendServerMessage(userid, "%s has added you as a broadcast guest.", ReturnName(userid, 0)); return 1; } CMD:removeguest(playerid, params[]) { static userid; if (GetFactionType(playerid) != FACTION_NEWS) return SendErrorMessage(playerid, "You must be part of a news faction."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/removeguest [playerid/name]"); if (!PlayerData[playerid][pBroadcast]) return SendErrorMessage(playerid, "You must be broadcasting to use this command."); if (userid == INVALID_PLAYER_ID || !IsPlayerNearPlayer(playerid, userid, 5.0)) return SendErrorMessage(playerid, "That player is disconnected or not near you."); if (userid == playerid) return SendErrorMessage(playerid, "You can't remove yourself as a guest."); if (PlayerData[userid][pNewsGuest] != playerid) return SendErrorMessage(playerid, "That player is not a guest of your broadcast."); PlayerData[userid][pNewsGuest] = INVALID_PLAYER_ID; SendServerMessage(playerid, "You have removed %s from your broadcast.", ReturnName(userid, 0)); SendServerMessage(userid, "%s has removed you from their broadcast.", ReturnName(userid, 0)); return 1; } CMD:pay(playerid, params[]) { static userid, amount; if (sscanf(params, "ud", userid, amount)) return SendSyntaxMessage(playerid, "/pay [playerid/name] [amount]"); if (userid == INVALID_PLAYER_ID || !IsPlayerNearPlayer(playerid, userid, 5.0)) return SendErrorMessage(playerid, "That player is disconnected or not near you."); if (userid == playerid) return SendErrorMessage(playerid, "You can't give yourself money."); if (amount < 1) return SendErrorMessage(playerid, "Please specify an amount above 1 dollar."); if (amount > 100 && PlayerData[playerid][pPlayingHours] < 2) return SendErrorMessage(playerid, "You can't pay above $100 with less than 2 playing hours."); if (amount > GetMoney(playerid)) return SendErrorMessage(playerid, "You don't have that much money."); static string[72]; GiveMoney(playerid, -amount); GiveMoney(userid, amount); format(string, sizeof(string), "You have received ~g~%s~w~ from %s.", FormatNumber(amount), ReturnName(playerid, 0)); ShowPlayerFooter(userid, string); format(string, sizeof(string), "You have given ~r~%s~w~ to %s.", FormatNumber(amount), ReturnName(userid, 0)); ShowPlayerFooter(playerid, string); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out %s from their wallet and hands it to %s.", ReturnName(playerid, 0), FormatNumber(amount), ReturnName(userid, 0)); Log_Write("logs/pay_log.txt", "[%s] %s (%s) has paid %s to %s (%s).", ReturnDate(), ReturnName(playerid, 0), PlayerData[playerid][pIP], FormatNumber(amount), ReturnName(userid, 0), PlayerData[userid][pIP]); return 1; } /*CMD:radio(playerid, params[]) { if (GetFactionType(playerid) != FACTION_POLICE && GetFactionType(playerid) != FACTION_MEDIC && GetFactionType(playerid) != FACTION_GOV) return SendErrorMessage(playerid, "You must be a civil service worker."); if (isnull(params)) return SendSyntaxMessage(playerid, "/(r)adio [radio text]"); SendFactionMessage(PlayerData[playerid][pFaction], COLOR_RADIO, "[RADIO] %s %s: %s", Faction_GetRank(playerid), ReturnName(playerid, 0), params); SendNearbyMessage(playerid, 5.0, COLOR_WHITE, "[RADIO] %s: %s", ReturnName(playerid, 0), params); Log_Write("logs/faction_chat.txt", "[%s][Radio] %s %s: %s", ReturnDate(), Faction_GetRank(playerid), ReturnName(playerid, 0), params); return 1; }*/ CMD:factions(playerid, params[]) { ViewFactions(playerid); return 1; } CMD:dept(playerid, params[]) { if (GetFactionType(playerid) != FACTION_POLICE && GetFactionType(playerid) != FACTION_MEDIC && GetFactionType(playerid) != FACTION_GOV) return SendErrorMessage(playerid, "You must be a civil service worker."); if (isnull(params)) return SendSyntaxMessage(playerid, "/dept [department radio]"); for (new i = 0; i != MAX_FACTIONS; i ++) if (FactionData[i][factionType] == FACTION_POLICE || FactionData[i][factionType] == FACTION_MEDIC || FactionData[i][factionType] == FACTION_GOV) { SendFactionMessage(i, COLOR_DEPARTMENT, "[%s] %s %s: %s", GetInitials(Faction_GetName(playerid)), Faction_GetRank(playerid), ReturnName(playerid, 0), params); } Log_Write("logs/faction_chat.txt", "[%s] [/dept] %s %s: %s", ReturnDate(), Faction_GetRank(playerid), ReturnName(playerid, 0), params); return 1; } CMD:gps(playerid, params[]) { if (!Inventory_HasItem(playerid, "GPS System")) return SendErrorMessage(playerid, "You must have a GPS system to use this."); if (PlayerData[playerid][pInjured] || PlayerData[playerid][pLoading] > 0 || PlayerData[playerid][pUnloading] != -1 || PlayerData[playerid][pDeliverShipment] > 0) return SendErrorMessage(playerid, "You can't use this command at the moment."); Dialog_Show(playerid, MainGPS, DIALOG_STYLE_LIST, "GPS System", "Find House\nFind Business\nFind Entrance\nFind Job\nCustom Locations", "Select", "Cancel"); return 1; } CMD:fill(playerid, params[]) { new vehicleid = GetNearestVehicle(playerid); if (IsPlayerInAnyVehicle(playerid) || vehicleid == INVALID_VEHICLE_ID) return SendErrorMessage(playerid, "You are not standing near any vehicle."); if (!Inventory_HasItem(playerid, "Fuel Can")) return SendErrorMessage(playerid, "You don't have any fuel cans on you."); if (GetEngineStatus(vehicleid)) return SendErrorMessage(playerid, "You must shut off the engine first."); if (CoreVehicles[vehicleid][vehFuel] > 95) return SendErrorMessage(playerid, "This vehicle doesn't need any fuel."); if (PlayerData[playerid][pFuelCan]) return SendErrorMessage(playerid, "You are already using a can of fuel."); PlayerData[playerid][pFuelCan] = 1; Inventory_Remove(playerid, "Fuel Can"); GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~r~Filling vehicle...", 5200, 3); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s opens a can of fuel and fills the vehicle.", ReturnName(playerid, 0)); SetTimerEx("RefillUpdate", 5000, false, "dd", playerid, vehicleid); return 1; } CMD:seekhelp(playerid, params[]) { if (isnull(params)) return SendSyntaxMessage(playerid, "/seekhelp [reason]"); if (PlayerData[playerid][pHelpTime] >= gettime()) return SendErrorMessage(playerid, "You must wait %d seconds before sending another request.", PlayerData[playerid][pHelpTime] - gettime()); PlayerData[playerid][pSeekHelp] = 1; SendTesterMessage(COLOR_CYAN, "[HELP]: %s (ID: %d) asks: \"%s\"", ReturnName(playerid, 0), playerid, params); PlayerData[playerid][pHelpTime] = gettime() + 15; SendServerMessage(playerid, "You have sent a help request to the tester team."); return 1; } CMD:pm(playerid, params[]) { static userid, text[128]; if (sscanf(params, "us[128]", userid, text)) return SendSyntaxMessage(playerid, "/pm [playerid/name] [message]"); if (PlayerData[playerid][pDisablePM]) return SendErrorMessage(playerid, "You must enable private messaging first."); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (userid == playerid) return SendErrorMessage(playerid, "You can't private message yourself."); if (PlayerData[userid][pDisablePM]) return SendErrorMessage(playerid, "That player has disabled private messaging."); GameTextForPlayer(userid, "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~y~New message!", 3000, 3); PlayerPlaySound(userid, 1085, 0.0, 0.0, 0.0); SendClientMessageEx(userid, COLOR_YELLOW, "(( PM from %s (%d): %s ))", ReturnName(playerid, 0), playerid, text); SendClientMessageEx(playerid, COLOR_YELLOW, "(( PM to %s (%d): %s ))", ReturnName(userid, 0), userid, text); return 1; } CMD:tog(playerid, params[]) { if (isnull(params)) { SendSyntaxMessage(playerid, "/tog [name]"); SendClientMessage(playerid, COLOR_YELLOW, "[NAMES]:{FFFFFF} ooc, pm, faction, tester, broadcast, speedo"); return 1; } if (!strcmp(params, "ooc", true)) { if (!PlayerData[playerid][pDisableOOC]) { PlayerData[playerid][pDisableOOC] = 1; SendServerMessage(playerid, "You have disabled OOC chat (/tog to enable)."); } else { PlayerData[playerid][pDisableOOC] = 0; SendServerMessage(playerid, "You have enabled OOC chat."); } } else if (!strcmp(params, "pm", true)) { if (!PlayerData[playerid][pDisablePM]) { PlayerData[playerid][pDisablePM] = 1; SendServerMessage(playerid, "You have disabled private messages (/tog to enable)."); } else { PlayerData[playerid][pDisablePM] = 0; SendServerMessage(playerid, "You have enabled private messages."); } } else if (!strcmp(params, "faction", true)) { if (PlayerData[playerid][pFaction] == -1) return SendErrorMessage(playerid, "You are not part of any faction."); if (!PlayerData[playerid][pDisableFaction]) { PlayerData[playerid][pDisableFaction] = 1; SendServerMessage(playerid, "You have disabled faction chat (/tog to enable)."); } else { PlayerData[playerid][pDisableFaction] = 0; SendServerMessage(playerid, "You have enabled faction chat."); } } else if (!strcmp(params, "tester", true)) { if (!PlayerData[playerid][pTester]) return SendErrorMessage(playerid, "You are not a tester."); if (!PlayerData[playerid][pDisableTester]) { PlayerData[playerid][pDisableTester] = 1; SendServerMessage(playerid, "You have disabled tester chat (/tog to enable)."); } else { PlayerData[playerid][pDisableTester] = 0; SendServerMessage(playerid, "You have enabled tester chat."); } } else if (!strcmp(params, "broadcast", true)) { if (!PlayerData[playerid][pDisableBC]) { PlayerData[playerid][pDisableBC] = 1; SendServerMessage(playerid, "You have disabled news broadcasts (/tog to enable)."); } else { PlayerData[playerid][pDisableBC] = 0; SendServerMessage(playerid, "You have enabled news broadcasts."); } } else if (!strcmp(params, "speedo", true)) { if (!PlayerData[playerid][pDisableSpeedo]) { for (new i = 34; i < 39; i ++) { PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][i]); } PlayerData[playerid][pDisableSpeedo] = 1; SendServerMessage(playerid, "You have disabled the speedometer (/tog to enable)."); } else { if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER && IsSpeedoVehicle(GetPlayerVehicleID(playerid))) { for (new i = 34; i < 39; i ++) { PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][i]); } } PlayerData[playerid][pDisableSpeedo] = 0; SendServerMessage(playerid, "You have enabled the speedometer."); } } return 1; } CMD:ticket(playerid, params[]) { static userid, price, reason[64]; if (GetFactionType(playerid) != FACTION_POLICE) return SendErrorMessage(playerid, "You must be a police officer."); if (sscanf(params, "uds[64]", userid, price, reason)) return SendSyntaxMessage(playerid, "/ticket [playerid/name] [price] [reason]"); if (userid == INVALID_PLAYER_ID || !IsPlayerNearPlayer(playerid, userid, 5.0)) return SendErrorMessage(playerid, "That player is disconnected or not near you."); if (userid == playerid) return SendErrorMessage(playerid, "You can't write a ticket to yourself."); if (price < 1 || price > 1000) return SendErrorMessage(playerid, "The price can't be below $1 or above $1,000."); new id = Ticket_Add(userid, price, reason); if (id != -1) { SendServerMessage(playerid, "You have written %s a ticket for %s, reason: %s", ReturnName(userid, 0), FormatNumber(price), reason); SendServerMessage(userid, "%s has written you a ticket for %s, reason: %s", ReturnName(playerid, 0), FormatNumber(price), reason); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has written up a ticket for%s.", ReturnName(playerid, 0), ReturnName(userid, 0)); Log_Write("logs/ticket_log.txt", "[%s] %s has written a %s ticket to %s, reason: %s", ReturnDate(), ReturnName(playerid, 0), FormatNumber(price), ReturnName(userid, 0), reason); } else { SendErrorMessage(playerid, "That player already has %d outstanding tickets.", MAX_PLAYER_TICKETS); } return 1; } CMD:tickets(playerid, params[]) { static string[MAX_PLAYER_TICKETS * 64]; if (!IsPlayerInRangeOfPoint(playerid, 3.0, 361.2687, 171.5613, 1008.3828)) return SendErrorMessage(playerid, "You must be at city hall to pay your tickets."); string[0] = 0; for (new i = 0; i < MAX_PLAYER_TICKETS; i ++) { if (TicketData[playerid][i][ticketExists]) format(string, sizeof(string), "%s%s (%s - %s)\n", string, TicketData[playerid][i][ticketReason], FormatNumber(TicketData[playerid][i][ticketFee]), TicketData[playerid][i][ticketDate]); else format(string, sizeof(string), "%sEmpty Slot\n", string); } return Dialog_Show(playerid, MyTickets, DIALOG_STYLE_LIST, "My Tickets", string, "Pay", "Cancel"); } CMD:twithdraw(playerid, params[]) { static amount; if (GetFactionType(playerid) != FACTION_GOV) return SendErrorMessage(playerid, "You are not a government official."); if (sscanf(params, "d", amount)) return SendSyntaxMessage(playerid, "/twithdraw [amount] (%s available)", FormatNumber(g_TaxVault)); if (!IsPlayerInCityHall(playerid)) return SendErrorMessage(playerid, "You must be inside City Hall to do this."); if (amount < 1 || amount > g_TaxVault) return SendErrorMessage(playerid, "Invalid amount specified."); if (PlayerData[playerid][pFactionRank] < FactionData[PlayerData[playerid][pFaction]][factionRanks] - 1) return SendErrorMessage(playerid, "You must be at least rank %d.", FactionData[PlayerData[playerid][pFaction]][factionRanks] - 1); Tax_AddMoney(-amount); GiveMoney(playerid, amount); SendServerMessage(playerid, "You have withdrawn %s from the treasury (%s available).", FormatNumber(amount), FormatNumber(g_TaxVault)); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has withdrawn %s from the treasury.", ReturnName(playerid, 0), FormatNumber(amount)); Log_Write("logs/tax_vault.txt", "[%s] %s has withdrawn %s from the treasury.", ReturnDate(), ReturnName(playerid, 0), FormatNumber(amount)); return 1; } CMD:tdeposit(playerid, params[]) { static amount; if (GetFactionType(playerid) != FACTION_GOV) return SendErrorMessage(playerid, "You are not a government official."); if (sscanf(params, "d", amount)) return SendSyntaxMessage(playerid, "/tdeposit [amount] (%s available)", FormatNumber(g_TaxVault)); if (!IsPlayerInCityHall(playerid)) return SendErrorMessage(playerid, "You must be inside City Hall to do this."); if (amount < 1 || amount > GetMoney(playerid)) return SendErrorMessage(playerid, "Invalid amount specified."); if (PlayerData[playerid][pFactionRank] < FactionData[PlayerData[playerid][pFaction]][factionRanks] - 1) return SendErrorMessage(playerid, "You must be at least rank %d.", FactionData[PlayerData[playerid][pFaction]][factionRanks] - 1); Tax_AddMoney(amount); GiveMoney(playerid, -amount); SendServerMessage(playerid, "You have deposited %s into the treasury (%s available).", FormatNumber(amount), FormatNumber(g_TaxVault)); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has deposited %s into the treasury.", ReturnName(playerid, 0), FormatNumber(amount)); Log_Write("logs/tax_vault.txt", "[%s] %s has deposited %s into the treasury.", ReturnDate(), ReturnName(playerid, 0), FormatNumber(amount)); return 1; } CMD:spike(playerid, params[]) { if (GetFactionType(playerid) != FACTION_POLICE) return SendErrorMessage(playerid, "You are not a police officer."); if (isnull(params)) { SendSyntaxMessage(playerid, "/spike [option]"); SendClientMessage(playerid, COLOR_YELLOW, "[OPTIONS]:{FFFFFF} drop, destroy, destroyall"); return 1; } static Float:fX, Float:fY, Float:fZ, Float:fA; GetPlayerPos(playerid, fX, fY, fZ); GetPlayerFacingAngle(playerid, fA); if (!strcmp(params, "drop", true)) { if (IsPlayerInAnyVehicle(playerid)) return SendErrorMessage(playerid, "You must exit the vehicle first."); for (new i = 0; i != MAX_BARRICADES; i ++) if (!BarricadeData[i][cadeExists]) { BarricadeData[i][cadeExists] = true; BarricadeData[i][cadeType] = 1; BarricadeData[i][cadePos][0] = fX; BarricadeData[i][cadePos][1] = fY; BarricadeData[i][cadePos][2] = fZ; BarricadeData[i][cadeObject] = CreateDynamicObject(2899, fX, fY, fZ - 0.8, 0.0, 0.0, fA + 90.0); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has dropped a spikestrip.", ReturnName(playerid, 0)); SendFactionMessage(PlayerData[playerid][pFaction], COLOR_RADIO, "RADIO: %s has dropped a spikestrip at %s.", ReturnName(playerid, 0), GetLocation(fX, fY, fZ)); return 1; } SendErrorMessage(playerid, "The server has reached the limit for spikestrips."); } else if (!strcmp(params, "destroy", true)) { for (new i = 0; i != MAX_BARRICADES; i ++) if (BarricadeData[i][cadeExists] && BarricadeData[i][cadeType] == 1 && IsPlayerInRangeOfPoint(playerid, 3.0, BarricadeData[i][cadePos][0], BarricadeData[i][cadePos][1], BarricadeData[i][cadePos][2])) { BarricadeData[i][cadeExists] = 0; BarricadeData[i][cadeType] = 0; DestroyDynamicObject(BarricadeData[i][cadeObject]); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has picked up a spikestrip.", ReturnName(playerid, 0)); SendFactionMessage(PlayerData[playerid][pFaction], COLOR_RADIO, "RADIO: %s has picked up a spikestrip at %s.", ReturnName(playerid, 0), GetLocation(fX, fY, fZ)); return 1; } SendErrorMessage(playerid, "You are not in range of any spikestrip."); } else if (!strcmp(params, "destroyall", true)) { for (new i = 0; i != MAX_BARRICADES; i ++) if (BarricadeData[i][cadeExists] && BarricadeData[i][cadeType] == 1) { BarricadeData[i][cadeExists] = 0; BarricadeData[i][cadeType] = 0; DestroyDynamicObject(BarricadeData[i][cadeObject]); } SendFactionMessage(PlayerData[playerid][pFaction], COLOR_RADIO, "RADIO: %s has destroyed all of the spikestrips.", ReturnName(playerid, 0)); } return 1; } CMD:roadblock(playerid, params[]) { if (GetFactionType(playerid) != FACTION_POLICE) return SendErrorMessage(playerid, "You are not a police officer."); if (isnull(params)) { SendSyntaxMessage(playerid, "/roadblock [option]"); SendClientMessage(playerid, COLOR_YELLOW, "[OPTIONS]:{FFFFFF} drop, destroy, destroyall"); return 1; } static Float:fX, Float:fY, Float:fZ, Float:fA; GetPlayerPos(playerid, fX, fY, fZ); GetPlayerFacingAngle(playerid, fA); if (!strcmp(params, "drop", true)) { if (IsPlayerInAnyVehicle(playerid)) return SendErrorMessage(playerid, "You must exit the vehicle first."); for (new i = 0; i != MAX_BARRICADES; i ++) if (!BarricadeData[i][cadeExists]) { BarricadeData[i][cadeExists] = true; BarricadeData[i][cadeType] = 2; BarricadeData[i][cadePos][0] = fX; BarricadeData[i][cadePos][1] = fY; BarricadeData[i][cadePos][2] = fZ; BarricadeData[i][cadeObject] = CreateDynamicObject(981, fX, fY, fZ, 0.0, 0.0, fA); SetPlayerPos(playerid, fX + 2, fY + 2, fZ + 2); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has dropped a roadblock.", ReturnName(playerid, 0)); SendFactionMessage(PlayerData[playerid][pFaction], COLOR_RADIO, "RADIO: %s has dropped a roadblock at %s.", ReturnName(playerid, 0), GetLocation(fX, fY, fZ)); return 1; } SendErrorMessage(playerid, "The server has reached the limit for roadblock."); } else if (!strcmp(params, "destroy", true)) { for (new i = 0; i != MAX_BARRICADES; i ++) if (BarricadeData[i][cadeExists] && BarricadeData[i][cadeType] == 2 && IsPlayerInRangeOfPoint(playerid, 5.0, BarricadeData[i][cadePos][0], BarricadeData[i][cadePos][1], BarricadeData[i][cadePos][2])) { BarricadeData[i][cadeExists] = 0; BarricadeData[i][cadeType] = 0; DestroyDynamicObject(BarricadeData[i][cadeObject]); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has picked up a roadblock.", ReturnName(playerid, 0)); SendFactionMessage(PlayerData[playerid][pFaction], COLOR_RADIO, "RADIO: %s has picked up a roadblock at %s.", ReturnName(playerid, 0), GetLocation(fX, fY, fZ)); return 1; } SendErrorMessage(playerid, "You are not in range of any roadblock."); } else if (!strcmp(params, "destroyall", true)) { for (new i = 0; i != MAX_BARRICADES; i ++) if (BarricadeData[i][cadeExists] && BarricadeData[i][cadeType] == 2) { BarricadeData[i][cadeExists] = 0; BarricadeData[i][cadeType] = 0; DestroyDynamicObject(BarricadeData[i][cadeObject]); } SendFactionMessage(PlayerData[playerid][pFaction], COLOR_RADIO, "RADIO: %s has destroyed all of the roadblocks.", ReturnName(playerid, 0)); } return 1; } CMD:changename(playerid, params[]) { if (!IsPlayerInRangeOfPoint(playerid, 3.0, 361.8299, 173.5183, 1008.3828)) return SendErrorMessage(playerid, "You are not in range of city hall."); if (isnull(params) || strlen(params) > 24) return SendSyntaxMessage(playerid, "/changename [new name]"); if (!IsValidPlayerName(params)) return SendErrorMessage(playerid, "You have specified an invalid name format."); static query[128]; format(query, sizeof(query), "SELECT `Username` FROM `characters` WHERE `Character` = '%s'", SQL_ReturnEscaped(params)); mysql_tquery(g_iHandle, query, "OnVerifyNameChange", "ds", playerid, params); return 1; } CMD:acceptname(playerid, params[]) { static userid; if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You are not permitted to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/acceptname [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (!strlen(PlayerData[userid][pNameChange])) return SendErrorMessage(playerid, "That player hasn't requested to change their name yet."); SendServerMessage(playerid, "You have accepted %s's name change to %s.", ReturnName(userid, 0), PlayerData[userid][pNameChange]); SendServerMessage(userid, "%s has accepted your name change to %s.", ReturnName(playerid, 0), PlayerData[userid][pNameChange]); ChangeName(userid, PlayerData[userid][pNameChange]); PlayerData[userid][pNameChange][0] = '\0'; return 1; } CMD:declinename(playerid, params[]) { static userid; if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You are not permitted to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/declinename [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (!strlen(PlayerData[userid][pNameChange])) return SendErrorMessage(playerid, "That player hasn't requested to change their name yet."); SendServerMessage(playerid, "You have declined %s's name change to %s.", ReturnName(userid, 0), PlayerData[userid][pNameChange]); SendServerMessage(userid, "%s has declined your name change to %s.", ReturnName(playerid, 0), PlayerData[userid][pNameChange]); PlayerData[userid][pNameChange][0] = '\0'; return 1; } CMD:deleteaccount(playerid, params[]) { static query[64]; if (PlayerData[playerid][pAdmin] < 6) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (isnull(params) || strlen(params) > 24) return SendSyntaxMessage(playerid, "/deleteaccount [username]"); if (!IsValidPlayerName(params)) return SendErrorMessage(playerid, "You have specified an invalid name format."); foreach (new i : Player) if (!strcmp(PlayerData[i][pUsername], params, true)) { return SendErrorMessage(playerid, "You can't delete an online player's account."); } format(query, sizeof(query), "SELECT * FROM `characters` WHERE `Username` = '%s'", SQL_ReturnEscaped(params)); mysql_tquery(g_iHandle, query, "OnDeleteAccount", "ds", playerid, params); return 1; } CMD:doorbell(playerid, params[]) { new id = House_Nearest(playerid); if (id == -1) return SendErrorMessage(playerid, "You must be standing near a house."); foreach (new i : Player) if (House_Inside(i) == id) { SendClientMessage(i, COLOR_PURPLE, "** You can hear the doorbell ringing."); PlayerPlaySound(i, 20801, 0, 0, 0); } PlayerPlaySoundEx(playerid, 20801); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s rings the doorbell of the house.", ReturnName(playerid, 0)); return 1; } CMD:creategate(playerid, params[]) { static id = -1; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); id = Gate_Create(playerid); if (id == -1) return SendErrorMessage(playerid, "The server has reached the limit for gates."); SendServerMessage(playerid, "You have successfully created gate ID: %d.", id); return 1; } CMD:destroygate(playerid, params[]) { static id = 0; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", id)) return SendSyntaxMessage(playerid, "/destroygate [gate id]"); if ((id < 0 || id >= MAX_GATES) || !GateData[id][gateExists]) return SendErrorMessage(playerid, "You have specified an invalid gate ID."); Gate_Delete(id); SendServerMessage(playerid, "You have successfully destroyed gate ID: %d.", id); return 1; } CMD:editgate(playerid, params[]) { static id, type[24], string[128]; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "ds[24]S()[128]", id, type, string)) { SendSyntaxMessage(playerid, "/editgate [id] [name]"); SendClientMessage(playerid, COLOR_YELLOW, "[NAMES]:{FFFFFF} location, speed, radius, time, model, pos, move, pass, linkid, faction"); return 1; } if ((id < 0 || id >= MAX_GATES) || !GateData[id][gateExists]) return SendErrorMessage(playerid, "You have specified an invalid gate ID."); if (!strcmp(type, "location", true)) { static Float:x, Float:y, Float:z, Float:angle; GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, angle); x += 3.0 * floatsin(-angle, degrees); y += 3.0 * floatcos(-angle, degrees); GateData[id][gatePos][0] = x; GateData[id][gatePos][1] = y; GateData[id][gatePos][2] = z; GateData[id][gatePos][3] = 0.0; GateData[id][gatePos][4] = 0.0; GateData[id][gatePos][5] = angle; SetDynamicObjectPos(GateData[id][gateObject], x, y, z); SetDynamicObjectRot(GateData[id][gateObject], 0.0, 0.0, angle); GateData[id][gateOpened] = false; Gate_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the position of gate ID: %d.", ReturnName(playerid, 0), id); return 1; } else if (!strcmp(type, "speed", true)) { static Float:speed; if (sscanf(string, "f", speed)) return SendSyntaxMessage(playerid, "/editgate [id] [speed] [move speed]"); if (speed < 0.0 || speed > 20.0) return SendErrorMessage(playerid, "The specified speed can't be below 0 or above 20."); GateData[id][gateSpeed] = speed; Gate_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the speed of gate ID: %d to %.2f.", ReturnName(playerid, 0), id, speed); return 1; } else if (!strcmp(type, "radius", true)) { static Float:radius; if (sscanf(string, "f", radius)) return SendSyntaxMessage(playerid, "/editgate [id] [radius] [open radius]"); if (radius < 0.0 || radius > 20.0) return SendErrorMessage(playerid, "The specified radius can't be below 0 or above 20."); GateData[id][gateRadius] = radius; Gate_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the radius of gate ID: %d to %.2f.", ReturnName(playerid, 0), id, radius); return 1; } else if (!strcmp(type, "time", true)) { static time; if (sscanf(string, "d", time)) return SendSyntaxMessage(playerid, "/editgate [id] [time] [close time] (0 to disable)"); if (time < 0 || time > 60000) return SendErrorMessage(playerid, "The specified time can't be 0 or above 60,000 ms."); GateData[id][gateTime] = time; Gate_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the close time of gate ID: %d to %d.", ReturnName(playerid, 0), id, time); return 1; } else if (!strcmp(type, "model", true)) { static model; if (sscanf(string, "d", model)) return SendSyntaxMessage(playerid, "/editgate [id] [model] [gate model]"); if (!IsValidObjectModel(model)) return SendErrorMessage(playerid, "Invalid object model."); GateData[id][gateModel] = model; DestroyDynamicObject(GateData[id][gateObject]); GateData[id][gateObject] = CreateDynamicObject(GateData[id][gateModel], GateData[id][gatePos][0], GateData[id][gatePos][1], GateData[id][gatePos][2], GateData[id][gatePos][3], GateData[id][gatePos][4], GateData[id][gatePos][5], GateData[id][gateWorld], GateData[id][gateInterior]); Gate_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the model of gate ID: %d to %d.", ReturnName(playerid, 0), id, model); return 1; } else if (!strcmp(type, "pos", true)) { ResetEditing(playerid); EditDynamicObject(playerid, GateData[id][gateObject]); PlayerData[playerid][pEditGate] = id; PlayerData[playerid][pEditType] = 1; SendServerMessage(playerid, "You are now adjusting the position of gate ID: %d.", id); return 1; } else if (!strcmp(type, "move", true)) { ResetEditing(playerid); EditDynamicObject(playerid, GateData[id][gateObject]); PlayerData[playerid][pEditGate] = id; PlayerData[playerid][pEditType] = 2; SendServerMessage(playerid, "You are now adjusting the moving position of gate ID: %d.", id); return 1; } else if (!strcmp(type, "linkid", true)) { static linkid = -1; if (sscanf(string, "d", linkid)) return SendSyntaxMessage(playerid, "/editgate [id] [linkid] [gate link] (-1 for none)"); if ((linkid < -1 || linkid >= MAX_GATES) || (linkid != -1 && !GateData[linkid][gateExists])) return SendErrorMessage(playerid, "You have specified an invalid gate ID."); GateData[id][gateLinkID] = (linkid == -1) ? (-1) : (GateData[linkid][gateID]); Gate_Save(id); if (id == -1) SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the faction of gate ID: %d to no gate.", ReturnName(playerid, 0), id); else SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the faction of gate ID: %d to ID: %d.", ReturnName(playerid, 0), id, linkid); return 1; } else if (!strcmp(type, "faction", true)) { static factionid = -1; if (sscanf(string, "d", factionid)) return SendSyntaxMessage(playerid, "/editgate [id] [faction] [gate faction] (-1 for none)"); if ((factionid < -1 || factionid >= MAX_FACTIONS) || (factionid != -1 && !FactionData[factionid][factionExists])) return SendErrorMessage(playerid, "You have specified an invalid faction ID."); GateData[id][gateFaction] = (factionid == -1) ? (-1) : (FactionData[factionid][factionID]); Gate_Save(id); if (factionid == -1) SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the faction of gate ID: %d to no faction.", ReturnName(playerid, 0), id); else SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the faction of gate ID: %d to \"%s\".", ReturnName(playerid, 0), id, FactionData[factionid][factionName]); return 1; } else if (!strcmp(type, "pass", true)) { static pass[32]; if (sscanf(string, "s[32]", pass)) return SendSyntaxMessage(playerid, "/editgate [id] [pass] [gate password] (Use 'none' to disable)"); if (!strcmp(params, "none", true)) GateData[id][gatePass][0] = 0; else format(GateData[id][gatePass], 32, pass); Gate_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the password of gate ID: %d to %s.", ReturnName(playerid, 0), id, pass); return 1; } return 1; } CMD:givecash(playerid, params[]) { static userid, amount; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "ud", userid, amount)) return SendSyntaxMessage(playerid, "/givecash [playerid/name] [amount]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); GiveMoney(userid, amount); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has given %s to %s.", ReturnName(playerid, 0), FormatNumber(amount), ReturnName(userid, 0)); Log_Write("logs/admin_log.txt", "[%s] %s has given %s to %s.", ReturnDate(), ReturnName(playerid, 0), FormatNumber(amount), ReturnName(userid, 0)); return 1; } CMD:usedrug(playerid, params[]) { if (isnull(params)) { SendSyntaxMessage(playerid, "/usedrug [name]"); SendClientMessage(playerid, COLOR_YELLOW, "[NAMES]:{FFFFFF} marijuana, cocaine, heroin, steroids"); return 1; } if (PlayerData[playerid][pDrugTime] > 0) return SendErrorMessage(playerid, "Please wait until the effects have subsided first."); if (!strcmp(params, "marijuana", true)) { if (Inventory_Count(playerid, "Marijuana") < 2) return SendErrorMessage(playerid, "You need at least 2 grams of marijuana."); PlayerData[playerid][pDrugTime] = 20; PlayerData[playerid][pDrugUsed] = 1; Inventory_Remove(playerid, "Marijuana", 2); ApplyAnimation(playerid, "SMOKING", "M_smk_in", 4.1, 0, 0, 0, 0, 0, 1); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_SMOKE_CIGGY); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out a lighter and lights up a joint.", ReturnName(playerid, 0)); } else if (!strcmp(params, "cocaine", true)) { if (Inventory_Count(playerid, "Cocaine") < 2) return SendErrorMessage(playerid, "You need at least 2 grams of cocaine."); PlayerData[playerid][pDrugTime] = 35; PlayerData[playerid][pDrugUsed] = 2; Inventory_Remove(playerid, "Cocaine", 2); ApplyAnimation(playerid, "SMOKING", "M_smk_in", 4.1, 0, 0, 0, 0, 0, 1); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out some cocaine and snorts it.", ReturnName(playerid, 0)); } else if (!strcmp(params, "heroin", true)) { if (Inventory_Count(playerid, "Heroin") < 2) return SendErrorMessage(playerid, "You need at least 2 grams of heroin."); PlayerData[playerid][pDrugTime] = 30; PlayerData[playerid][pDrugUsed] = 3; Inventory_Remove(playerid, "Heroin", 2); ApplyAnimation(playerid, "SMOKING", "M_smk_in", 4.1, 0, 0, 0, 0, 0, 1); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out some heroin and injects it.", ReturnName(playerid, 0)); } else if (!strcmp(params, "steroids", true)) { if (!Inventory_HasItem(playerid, "Steroids")) return SendErrorMessage(playerid, "You need at least one steroid pill."); if (ReturnHealth(playerid) <= 5) return SendErrorMessage(playerid, "Your health is too low to take steroids."); PlayerData[playerid][pDrugTime] = 60; PlayerData[playerid][pDrugUsed] = 4; SetPlayerHealth(playerid, ReturnHealth(playerid) - 5); Inventory_Remove(playerid, "Steroids", 2); ApplyAnimation(playerid, "SMOKING", "M_smk_in", 4.1, 0, 0, 0, 0, 0, 1); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out some steroids and swallows them.", ReturnName(playerid, 0)); } return 1; } CMD:fingerprint(playerid, params[]) { if (GetFactionType(playerid) != FACTION_POLICE) return SendErrorMessage(playerid, "You must be a police officer."); if (PlayerData[playerid][pFingerTime] > 0) return SendErrorMessage(playerid, "You are already using the fingerprint scanner."); for (new i = 0; i != MAX_DROPPED_ITEMS; i ++) if (DroppedItems[i][droppedModel] && IsPlayerInRangeOfPoint(playerid, 1.5, DroppedItems[i][droppedPos][0], DroppedItems[i][droppedPos][1], DroppedItems[i][droppedPos][2])) { SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s runs the fingerprint scanner over the item.", ReturnName(playerid, 0)); PlayerData[playerid][pFingerTime] = 3; PlayerData[playerid][pFingerItem] = i; return 1; } SendErrorMessage(playerid, "There is no item nearby."); return 1; } CMD:createcar(playerid, params[]) { static model[32], color1, color2, id = -1, type = 0; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "s[32]I(-1)I(-1)I(0)", model, color1, color2, type)) { SendSyntaxMessage(playerid, "/createcar [model id/name] [color 1] [color 2] "); SendClientMessage(playerid, COLOR_YELLOW, "[TYPES]:{FFFFFF} 1: Police | 2: News | 3: Medical | 4: Government"); return 1; } if ((model[0] = GetVehicleModelByName(model)) == 0) return SendErrorMessage(playerid, "Invalid model ID."); static Float:x, Float:y, Float:z, Float:angle; GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, angle); id = Car_Create(0, model[0], x, y, z, angle, color1, color2, type); if (id == -1) return SendErrorMessage(playerid, "The server has reached the limit for dynamic vehicles."); SetPlayerPosEx(playerid, x, y, z + 2, 1000); SendServerMessage(playerid, "You have successfully created vehicle ID: %d.", CarData[id][carVehicle]); return 1; } CMD:destroycar(playerid, params[]) { static id = 0; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", id)) { if (IsPlayerInAnyVehicle(playerid)) id = GetPlayerVehicleID(playerid); else return SendSyntaxMessage(playerid, "/destroycar [vehicle id]"); } if (!IsValidVehicle(id) || Car_GetID(id) == -1) return SendErrorMessage(playerid, "You have specified an invalid vehicle ID."); Car_Delete(Car_GetID(id)); SendServerMessage(playerid, "You have successfully destroyed vehicle ID: %d.", id); return 1; } CMD:backpack(playerid, params[]) { if (!Inventory_HasItem(playerid, "Backpack")) return SendErrorMessage(playerid, "You don't have a backpack on you."); Backpack_Open(playerid); return 1; } CMD:dropbackpack(playerid, params[]) { new id = GetPlayerBackpack(playerid); if (!Inventory_HasItem(playerid, "Backpack") || id == -1) return SendErrorMessage(playerid, "You don't have a backpack on you."); if (!Backpack_GetItems(id)) return SendErrorMessage(playerid, "You can't drop an empty backpack."); if (IsPlayerInAnyVehicle(playerid) || !IsPlayerSpawned(playerid)) return SendErrorMessage(playerid, "You can't drop your backpack right now."); static Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); BackpackData[id][backpackPlayer] = 0; BackpackData[id][backpackPos][0] = x; BackpackData[id][backpackPos][1] = y; BackpackData[id][backpackPos][2] = z; BackpackData[id][backpackInterior] = GetPlayerInterior(playerid); BackpackData[id][backpackWorld] = GetPlayerVirtualWorld(playerid); Backpack_Refresh(id); Backpack_Save(id); Inventory_Remove(playerid, "Backpack"); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has dropped their backpack.", ReturnName(playerid, 0)); SetAccessories(playerid); return 1; } CMD:setitem(playerid, params[]) { static userid, item[32], amount; if (PlayerData[playerid][pAdmin] < 4) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "uds[32]", userid, amount, item)) return SendSyntaxMessage(playerid, "/setitem [playerid/name] [amount] [item name]"); if (IsFurnitureItem(item)) { for (new i = 0; i < sizeof(g_aFurnitureData); i ++) if (!strcmp(g_aFurnitureData[i][e_FurnitureName], item, true)) { Inventory_Set(userid, g_aFurnitureData[i][e_FurnitureName], g_aFurnitureData[i][e_FurnitureModel], amount); SendServerMessage(playerid, "You have set %s's \"%s\" to %d.", ReturnName(userid, 0), item, amount); return 1; } } else for (new i = 0; i < sizeof(g_aInventoryItems); i ++) if (!strcmp(g_aInventoryItems[i][e_InventoryItem], item, true)) { if (!strcmp(item, "Cellphone", true)) { PlayerData[userid][pPhone] = random(90000) + 10000; } Inventory_Set(userid, g_aInventoryItems[i][e_InventoryItem], g_aInventoryItems[i][e_InventoryModel], amount); return SendServerMessage(playerid, "You have set %s's \"%s\" to %d.", ReturnName(userid, 0), item, amount); } SendErrorMessage(playerid, "Invalid item name (use /itemlist for a list)."); return 1; } CMD:itemlist(playerid, params[]) { static string[1024]; if (!strlen(string)) { for (new i = 0; i < sizeof(g_aInventoryItems); i ++) { format(string, sizeof(string), "%s%s\n", string, g_aInventoryItems[i][e_InventoryItem]); } } return Dialog_Show(playerid, ShowOnly, DIALOG_STYLE_LIST, "List of Items", string, "Select", "Cancel"); } CMD:createimpound(playerid, params[]) { static id = -1, Float:x, Float:y, Float:z; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (GetPlayerInterior(playerid) > 0 || GetPlayerVirtualWorld(playerid) > 0) return SendErrorMessage(playerid, "You can only create impound lots outside interiors."); GetPlayerPos(playerid, x, y, z); id = Impound_Create(x, y, z); if (id == -1) return SendErrorMessage(playerid, "The server has reached the limit for impound lots."); SendServerMessage(playerid, "You have successfully created impound lot ID: %d.", id); return 1; } CMD:destroyimpound(playerid, params[]) { static id = 0; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", id)) return SendSyntaxMessage(playerid, "/destroyimpound [impound id]"); if ((id < 0 || id >= MAX_IMPOUND_LOTS) || !ImpoundData[id][impoundExists]) return SendErrorMessage(playerid, "You have specified an invalid impound lot ID."); Impound_Delete(id); SendServerMessage(playerid, "You have successfully destroyed impound lot ID: %d.", id); return 1; } CMD:editimpound(playerid, params[]) { static id, type[24], string[128]; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "ds[24]S()[128]", id, type, string)) { SendSyntaxMessage(playerid, "/editimpound [id] [name]"); SendClientMessage(playerid, COLOR_YELLOW, "[NAMES]:{FFFFFF} location, release"); return 1; } if ((id < 0 || id >= MAX_IMPOUND_LOTS) || !ImpoundData[id][impoundExists]) return SendErrorMessage(playerid, "You have specified an invalid impound lot ID."); if (!strcmp(type, "location", true)) { static Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); ImpoundData[id][impoundLot][0] = x; ImpoundData[id][impoundLot][1] = y; ImpoundData[id][impoundLot][2] = z; Impound_Refresh(id); Impound_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the location of impound ID: %d.", ReturnName(playerid, 0), id); } else if (!strcmp(type, "release", true)) { static Float:x, Float:y, Float:z, Float:angle; GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, angle); ImpoundData[id][impoundRelease][0] = x; ImpoundData[id][impoundRelease][1] = y; ImpoundData[id][impoundRelease][2] = z; ImpoundData[id][impoundRelease][3] = angle; Impound_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the release point of impound ID: %d.", ReturnName(playerid, 0), id); } return 1; } CMD:releasecar(playerid, params[]) { if (!IsPlayerInRangeOfPoint(playerid, 3.0, 361.1653, 175.8127, 1008.3828)) return SendErrorMessage(playerid, "You must be at city hall to release a vehicle."); new string[32 * MAX_OWNABLE_CARS], count; for (new i = 0; i < MAX_DYNAMIC_CARS; i ++) if (count < MAX_OWNABLE_CARS && CarData[i][carExists] && Car_IsOwner(playerid, i) && CarData[i][carImpounded] != -1) { format(string, sizeof(string), "%s%d: %s (%s)\n", string, count + 1, ReturnVehicleName(CarData[i][carVehicle]), FormatNumber(CarData[i][carImpoundPrice])); ListedVehicles[playerid][count++] = i; } if (!count) SendErrorMessage(playerid, "You don't have any impounded vehicles."); else Dialog_Show(playerid, ReleaseCar, DIALOG_STYLE_LIST, "Release Vehicle", string, "Select", "Cancel"); return 1; } CMD:tow(playerid, params[]) { if (GetVehicleModel(GetPlayerVehicleID(playerid)) != 525) return SendErrorMessage(playerid, "You are not driving a tow truck."); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendErrorMessage(playerid, "You are not the driver."); new vehicleid = GetVehicleFromBehind(GetPlayerVehicleID(playerid)); if (vehicleid == INVALID_VEHICLE_ID) return SendErrorMessage(playerid, "There is no vehicle in range."); if (!IsDoorVehicle(vehicleid) || IsAPlane(vehicleid) || IsABoat(vehicleid) || IsAHelicopter(vehicleid)) return SendErrorMessage(playerid, "You can't tow this vehicle."); AttachTrailerToVehicle(vehicleid, GetPlayerVehicleID(playerid)); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has hooked a %s onto their tow truck.", ReturnName(playerid, 0), ReturnVehicleName(vehicleid)); return 1; } CMD:untow(playerid, params[]) { if (GetVehicleModel(GetPlayerVehicleID(playerid)) != 525) return SendErrorMessage(playerid, "You are not driving a tow truck."); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendErrorMessage(playerid, "You are not the driver."); new trailerid = GetVehicleTrailer(GetPlayerVehicleID(playerid)); if (!trailerid) return SendErrorMessage(playerid, "There is no vehicle hooked onto the truck."); DetachTrailerFromVehicle(GetPlayerVehicleID(playerid)); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has unhooked the %s from the tow truck.", ReturnName(playerid, 0), ReturnVehicleName(trailerid)); return 1; } CMD:impound(playerid, params[]) { new price, id = Impound_Nearest(playerid), vehicleid = GetPlayerVehicleID(playerid); if (GetFactionType(playerid) != FACTION_POLICE) return SendErrorMessage(playerid, "You must be a police officer."); if (sscanf(params, "d", price)) return SendSyntaxMessage(playerid, "/impound [price]"); if (price < 1 || price > 1000) return SendErrorMessage(playerid, "The price can't be above $1,000 or below $1."); if (GetVehicleModel(vehicleid) != 525) return SendErrorMessage(playerid, "You are not driving a tow truck."); if (id == -1) return SendErrorMessage(playerid, "You are not in range of any impound lot."); if (!GetVehicleTrailer(vehicleid)) return SendErrorMessage(playerid, "There is no vehicle hooked."); vehicleid = Car_GetID(GetVehicleTrailer(vehicleid)); if (vehicleid == -1) return SendErrorMessage(playerid, "You can't tow this vehicle."); if (CarData[vehicleid][carImpounded] != -1) return SendErrorMessage(playerid, "This vehicle is already impounded."); CarData[vehicleid][carImpounded] = ImpoundData[id][impoundID]; CarData[vehicleid][carImpoundPrice] = price; Tax_AddMoney(price); GetVehiclePos(CarData[vehicleid][carVehicle], CarData[vehicleid][carPos][0], CarData[vehicleid][carPos][1], CarData[vehicleid][carPos][2]); Car_Save(vehicleid); SendFactionMessage(PlayerData[playerid][pFaction], COLOR_RADIO, "RADIO: %s has impounded a %s for %s.", ReturnName(playerid, 0), ReturnVehicleModelName(CarData[vehicleid][carModel]), FormatNumber(price)); DetachTrailerFromVehicle(GetPlayerVehicleID(playerid)); return 1; } CMD:channel(playerid, params[]) { new channel; if (!Inventory_HasItem(playerid, "Portable Radio")) return SendErrorMessage(playerid, "You must have a portable radio."); if (sscanf(params, "d", channel)) { SendSyntaxMessage(playerid, "/channel [radio channel] (0 to disable)"); if (PlayerData[playerid][pChannel] > 0) SendClientMessageEx(playerid, COLOR_YELLOW, "[NOTE]:{FFFFFF} Your current radio channel is set to %d.", PlayerData[playerid][pChannel]); return 1; } if (channel < 0 || channel > 999999) return SendErrorMessage(playerid, "The channel can't be below 0 or above 999,999."); PlayerData[playerid][pChannel] = channel; if (channel == 0) SendServerMessage(playerid, "You have disabled your portable radio."); else SendServerMessage(playerid, "You have set your radio's channel to %d (\"/pr [text]\" to chat).", channel); return 1; } CMD:r(playerid, params[]) { if (isnull(params)) return SendSyntaxMessage(playerid, "/r [Radio IC]"); if (!Inventory_HasItem(playerid, "Portable Radio")) return SendErrorMessage(playerid, "You must have a portable radio."); if (!PlayerData[playerid][pChannel]) return SendErrorMessage(playerid, "Your portable radio is disabled (/channel)."); static string[128]; if(PlayerData[playerid][pChannel] == 911 && GetFactionType(playerid) != FACTION_POLICE) return SendErrorMessage(playerid, "This is police department's freqency only."); if (strlen(params) > 64) { format(string, sizeof(string), "** [RADIO: %d] %s: %.64s",PlayerData[playerid][pChannel],ReturnName(playerid, 0), params); SendRadioMessage(PlayerData[playerid][pChannel], COLOR_SERVER, string); format(string, sizeof(string), "...%s **",params[64]); SendRadioMessage(PlayerData[playerid][pChannel], COLOR_SERVER, string); //SendNearbyMessage(playerid, 5.0, COLOR_SERVER, "** (Radio) %s: %.64s", ReturnName(playerid, 0), params); //SendNearbyMessage(playerid, 5.0, COLOR_SERVER, "...%s **", params[64]); } else { format(string, sizeof(string),"** [RADIO: %d] %s: %s **", PlayerData[playerid][pChannel],ReturnName(playerid, 0), params); SendRadioMessage(PlayerData[playerid][pChannel], COLOR_SERVER, string); //SendNearbyMessage(playerid, 5.0, COLOR_SERVER, "** (Radio) %s: %.64s", ReturnName(playerid, 0), params); } return 1; } CMD:jobcmds(playerid, params[]) { switch (PlayerData[playerid][pJob]) { case 1: SendClientMessage(playerid, COLOR_CLIENT, "JOBS:{FFFFFF} /startdelivery, /stoploading, /unload, /shipments."); case 2: SendClientMessage(playerid, COLOR_CLIENT, "JOBS:{FFFFFF} /repair, /nitrous."); case 3: SendClientMessage(playerid, COLOR_CLIENT, "JOBS:{FFFFFF} /taxi, /acceptcall."); case 4: SendClientMessage(playerid, COLOR_CLIENT, "JOBS:{FFFFFF} /loadcrate."); case 5: SendClientMessage(playerid, COLOR_CLIENT, "JOBS:{FFFFFF} /mine."); case 6: SendClientMessage(playerid, COLOR_CLIENT, "JOBS:{FFFFFF} /sellfood."); case 7: SendClientMessage(playerid, COLOR_CLIENT, "JOBS:{FFFFFF} /takebag, /dumpgarbage, /findgarbage."); case 8: SendClientMessage(playerid, COLOR_CLIENT, "JOBS:{FFFFFF} /sorting."); case 9: SendClientMessage(playerid, COLOR_CLIENT, "JOBS:{FFFFFF} /craftparts."); default: SendErrorMessage(playerid, "You are unemployed at the moment."); } return 1; } CMD:createatm(playerid, params[]) { static id = -1; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); id = ATM_Create(playerid); if (id == -1) return SendErrorMessage(playerid, "The server has reached the limit for ATM machines."); SendServerMessage(playerid, "You have successfully created ATM ID: %d.", id); return 1; } CMD:destroyatm(playerid, params[]) { static id = 0; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", id)) return SendSyntaxMessage(playerid, "/destroyatm [atm id]"); if ((id < 0 || id >= MAX_ATM_MACHINES) || !ATMData[id][atmExists]) return SendErrorMessage(playerid, "You have specified an invalid ATM ID."); ATM_Delete(id); SendServerMessage(playerid, "You have successfully destroyed ATM ID: %d.", id); return 1; } CMD:disablecp(playerid, params[]) { if (PlayerData[playerid][pDrivingTest]) return SendErrorMessage(playerid, "You can't do this during your driving test."); new vehicleid = GetPlayerVehicleID(playerid); PlayerData[playerid][pCP] = 0; if (PlayerData[playerid][pSorting] != -1) { PlayerData[playerid][pSorting] = -1; PlayerData[playerid][pSortCrate] = 0; RemovePlayerAttachedObject(playerid, 4); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE); } if (PlayerData[playerid][pMinedRock]) { PlayerData[playerid][pMinedRock] = 0; PlayerData[playerid][pMineCount] = 0; RemovePlayerAttachedObject(playerid, 4); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE); } if (PlayerData[playerid][pUnloading] != -1) { PlayerData[playerid][pUnloading] = -1; PlayerData[playerid][pUnloadVehicle] = INVALID_VEHICLE_ID; } if (PlayerData[playerid][pLoading]) { PlayerData[playerid][pLoading] = 0; PlayerData[playerid][pLoadType] = 0; } if (PlayerData[playerid][pLoadCrate]) { PlayerData[playerid][pLoadCrate] = 0; RemovePlayerAttachedObject(playerid, 4); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE); } if (IsPlayerInWarehouse(playerid) && GetVehicleModel(vehicleid) == 530 && CoreVehicles[vehicleid][vehLoadType] == 7) { CoreVehicles[vehicleid][vehLoadType] = 0; CoreVehicles[vehicleid][vehCrate] = INVALID_OBJECT_ID; DestroyObject(CoreVehicles[vehicleid][vehCrate]); } DisablePlayerCheckpoint(playerid); SendServerMessage(playerid, "You have disabled any active checkpoints."); return 1; } CMD:restart(playerid, params[]) { new time; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (g_ServerRestart) { TextDrawHideForAll(gServerTextdraws[3]); g_ServerRestart = 0; g_RestartTime = 0; return SendClientMessageToAllEx(COLOR_LIGHTRED, "[ADMIN]: %s has postponed the server restart.", ReturnName(playerid, 0)); } if (sscanf(params, "d", time)) return SendSyntaxMessage(playerid, "/restart [seconds]"); if (time < 3 || time > 600) return SendErrorMessage(playerid, "The specified seconds can't be below 3 or above 600."); TextDrawShowForAll(gServerTextdraws[3]); g_ServerRestart = 1; g_RestartTime = time; SendClientMessageToAllEx(COLOR_LIGHTRED, "[ADMIN]: %s has initiated a server restart in %d seconds.", ReturnName(playerid, 0), time); return 1; } CMD:properties(playerid, params[]) { new count; for (new i = 0; i < MAX_HOUSES; i ++) if (House_IsOwner(playerid, i)) { SendClientMessageEx(playerid, COLOR_LIGHTGREEN, "** House ID: %d | Address: %s | Location: %s", i, HouseData[i][houseAddress], GetLocation(HouseData[i][housePos][0], HouseData[i][housePos][1], HouseData[i][housePos][2])); count++; } for (new i = 0; i < MAX_BUSINESSES; i ++) if (Business_IsOwner(playerid, i) && BusinessData[i][bizOwner] != 99999999) { SendClientMessageEx(playerid, COLOR_LIGHTRED, "** Business ID: %d | Name: %s | Location: %s", i, BusinessData[i][bizName], GetLocation(BusinessData[i][bizPos][0], BusinessData[i][bizPos][1], BusinessData[i][bizPos][2])); count++; } if (!count) return SendErrorMessage(playerid, "You don't own any properties."); return 1; } CMD:asellhouse(playerid, params[]) { new houseid = -1; if (PlayerData[playerid][pAdmin] < 4) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", houseid)) return SendSyntaxMessage(playerid, "/asellhouse [house ID]"); if ((houseid < 0 || houseid >= MAX_HOUSES) || !HouseData[houseid][houseExists]) return SendErrorMessage(playerid, "You have specified an invalid house ID."); HouseData[houseid][houseOwner] = 0; House_Refresh(houseid); House_Save(houseid); SendServerMessage(playerid, "You have sold house ID: %d.", houseid); return 1; } CMD:asellbiz(playerid, params[]) { new bizid = -1; if (PlayerData[playerid][pAdmin] < 4) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", bizid)) return SendSyntaxMessage(playerid, "/asellbiz [business ID]"); if ((bizid < 0 || bizid >= MAX_HOUSES) || !BusinessData[bizid][bizExists]) return SendErrorMessage(playerid, "You have specified an invalid business ID."); BusinessData[bizid][bizOwner] = 0; Business_Refresh(bizid); Business_Save(bizid); SendServerMessage(playerid, "You have sold business ID: %d.", bizid); return 1; } CMD:listcars(playerid, params[]) { new Float:fX, Float:fY, Float:fZ, userid, count; if (sscanf(params, "u", userid)) { SendClientMessage(playerid, COLOR_GREY, "-----------------------------------------------------------"); for (new i = 0; i < MAX_DYNAMIC_CARS; i ++) if (Car_IsOwner(playerid, i)) { GetVehiclePos(CarData[i][carVehicle], fX, fY, fZ); SendClientMessageEx(playerid, COLOR_WHITE, "** ID: %d | Model: %s | Location: %s", CarData[i][carVehicle], ReturnVehicleModelName(CarData[i][carModel]), GetLocation(fX, fY, fZ)); count++; } if (!count) SendClientMessage(playerid, COLOR_WHITE, "You don't own any vehicles."); SendClientMessage(playerid, COLOR_GREY, "-----------------------------------------------------------"); } else if (PlayerData[playerid][pAdmin] >= 3) { if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); SendClientMessage(playerid, COLOR_GREY, "-----------------------------------------------------------"); SendClientMessageEx(playerid, COLOR_YELLOW, "Vehicles registered to %s (ID: %d):", ReturnName(userid, 0), userid); for (new i = 0; i < MAX_DYNAMIC_CARS; i ++) if (Car_IsOwner(userid, i)) { GetVehiclePos(CarData[i][carVehicle], fX, fY, fZ); SendClientMessageEx(playerid, COLOR_WHITE, "** ID: %d | Model: %s | Location: %s", CarData[i][carVehicle], ReturnVehicleModelName(CarData[i][carModel]), GetLocation(fX, fY, fZ)); count++; } if (!count) SendClientMessage(playerid, COLOR_WHITE, "That player doesn't own any vehicles."); SendClientMessage(playerid, COLOR_GREY, "-----------------------------------------------------------"); } return 1; } /*CMD:grantweapon(playerid, params[]) { new userid; if (GetFactionType(playerid) != FACTION_POLICE && GetFactionType(playerid) != FACTION_GOV) return SendErrorMessage(playerid, "You must be an officer or a government member."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/grantweapon [playerid/name]"); if (userid == INVALID_PLAYER_ID || !IsPlayerNearPlayer(playerid, userid, 5.0)) return SendErrorMessage(playerid, "That player is disconnected or not near you."); if (userid == playerid) return SendErrorMessage(playerid, "You can't grant yourself a weapon license."); if (Inventory_HasItem(userid, "Weapon License")) return SendErrorMessage(playerid, "That player already has a weapon license."); Inventory_Add(userid, "Weapon License", 1581); SendServerMessage(playerid, "You have granted a weapon license to %s.", ReturnName(userid, 0)); SendServerMessage(userid, "You've been granted a weapon license by %s.", ReturnName(playerid, 0)); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has granted %s with a weapon license.", ReturnName(playerid, 0), ReturnName(userid, 0)); return 1; }*/ CMD:revokeweapon(playerid, params[]) { new userid; if (GetFactionType(playerid) != FACTION_POLICE && GetFactionType(playerid) != FACTION_GOV) return SendErrorMessage(playerid, "You must be an officer or a government member."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/revokeweapon [playerid/name]"); if (userid == INVALID_PLAYER_ID || !IsPlayerNearPlayer(playerid, userid, 5.0)) return SendErrorMessage(playerid, "That player is disconnected or not near you."); if (userid == playerid) return SendErrorMessage(playerid, "You can't revoke your own weapon license."); if (!Inventory_HasItem(userid, "Weapon License")) return SendErrorMessage(playerid, "That player doesn't have a weapon license."); Inventory_Remove(userid, "Weapon License"); SendServerMessage(playerid, "You have revoked %s's weapon license.", ReturnName(userid, 0)); SendServerMessage(userid, "Your weapon license was revoked by %s.", ReturnName(playerid, 0)); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has revoked %s's weapon license.", ReturnName(playerid, 0), ReturnName(userid, 0)); return 1; } CMD:jetpack(playerid, params[]) { new userid; if (PlayerData[playerid][pAdmin] < 4) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", userid)) { PlayerData[playerid][pJetpack] = 1; SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USEJETPACK); } else { PlayerData[userid][pJetpack] = 1; SetPlayerSpecialAction(userid, SPECIAL_ACTION_USEJETPACK); SendServerMessage(playerid, "You have spawned a jetpack for %s.", ReturnName(userid, 0)); } return 1; } CMD:setweather(playerid, params[]) { new weatherid; if (PlayerData[playerid][pAdmin] < 4) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", weatherid)) return SendSyntaxMessage(playerid, "/setweather [weather ID]"); SetWeather(weatherid); SendServerMessage(playerid, "You have changed the weather to ID: %d.", weatherid); return 1; } CMD:setfuel(playerid, params[]) { static id = 0, amount; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "dd", id, amount)) { if (IsPlayerInAnyVehicle(playerid)) { id = GetPlayerVehicleID(playerid); if (sscanf(params, "d", amount)) return SendSyntaxMessage(playerid, "/setfuel [amount]"); if (amount < 0) return SendErrorMessage(playerid, "The amount can't be below 0."); CoreVehicles[id][vehFuel] = amount; SendServerMessage(playerid, "You have set the fuel of vehicle ID: %d to %d percent.", id, amount); return 1; } else return SendSyntaxMessage(playerid, "/setfuel [vehicle id] [amount]"); } if (!IsValidVehicle(id)) return SendErrorMessage(playerid, "You have specified an invalid vehicle ID."); if (amount < 0) return SendErrorMessage(playerid, "The amount can't be below 0."); CoreVehicles[id][vehFuel] = amount; SendServerMessage(playerid, "You have set the fuel of vehicle ID: %d to %d percent.", id, amount); return 1; } CMD:setcarhp(playerid, params[]) { static id = 0, Float:amount; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "df", id, amount)) { if (IsPlayerInAnyVehicle(playerid)) { id = GetPlayerVehicleID(playerid); if (sscanf(params, "f", amount)) return SendSyntaxMessage(playerid, "/setcarhp [amount]"); if (amount < 0.0) return SendErrorMessage(playerid, "The amount can't be below 0."); SetVehicleHealth(id, amount); SendServerMessage(playerid, "You have set the health of vehicle ID: %d to %.1f.", id, amount); return 1; } else return SendSyntaxMessage(playerid, "/setcarhp [vehicle id] [amount]"); } if (!IsValidVehicle(id)) return SendErrorMessage(playerid, "You have specified an invalid vehicle ID."); if (amount < 0.0) return SendErrorMessage(playerid, "The amount can't be below 0."); SetVehicleHealth(id, amount); SendServerMessage(playerid, "You have set the health of vehicle ID: %d to %.1f.", id, amount); return 1; } CMD:editcar(playerid, params[]) { static id, type[24], string[128]; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "ds[24]S()[128]", id, type, string)) { SendSyntaxMessage(playerid, "/editcar [id] [name]"); SendClientMessage(playerid, COLOR_YELLOW, "[NAMES]:{FFFFFF} location, faction, color1, color2"); return 1; } if (!IsValidVehicle(id) || Car_GetID(id) == -1) return SendErrorMessage(playerid, "You have specified an invalid vehicle ID."); id = Car_GetID(id); if (!strcmp(type, "location", true)) { GetPlayerPos(playerid, CarData[id][carPos][0], CarData[id][carPos][1], CarData[id][carPos][2]); GetPlayerFacingAngle(playerid, CarData[id][carPos][3]); Car_Save(id); Car_Spawn(id); SetPlayerPosEx(playerid, CarData[id][carPos][0], CarData[id][carPos][1], CarData[id][carPos][2] + 2.0, 1000); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the location of vehicle ID: %d.", ReturnName(playerid, 0), CarData[id][carVehicle]); } else if (!strcmp(type, "faction", true)) { new typeint; if (sscanf(string, "d", typeint)) { SendSyntaxMessage(playerid, "/editcar [id] [faction] [type]"); SendClientMessage(playerid, COLOR_YELLOW, "[TYPES]:{FFFFFF} 1: Police | 2: News | 3: Medical | 4: Government"); return 1; } if (typeint < 0 || typeint > 4) return SendErrorMessage(playerid, "The specified type can't be below 0 or above 4."); CarData[id][carFaction] = typeint; Car_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the type of vehicle ID: %d to %d.", ReturnName(playerid, 0), CarData[id][carVehicle], typeint); } else if (!strcmp(type, "color1", true)) { new color1; if (sscanf(string, "d", color1)) return SendSyntaxMessage(playerid, "/editcar [id] [color1] [color 1]"); if (color1 < 0 || color1 > 255) return SendErrorMessage(playerid, "The specified color can't be below 0 or above 255."); CarData[id][carColor1] = color1; ChangeVehicleColor(CarData[id][carVehicle], CarData[id][carColor1], CarData[id][carColor2]); Car_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the color 1 of vehicle ID: %d to %d.", ReturnName(playerid, 0), CarData[id][carVehicle], color1); } else if (!strcmp(type, "color2", true)) { new color2; if (sscanf(string, "d", color2)) return SendSyntaxMessage(playerid, "/editcar [id] [color2] [color 2]"); if (color2 < 0 || color2 > 255) return SendErrorMessage(playerid, "The specified color can't be below 0 or above 255."); CarData[id][carColor2] = color2; ChangeVehicleColor(CarData[id][carVehicle], CarData[id][carColor1], CarData[id][carColor2]); Car_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the color 2 of vehicle ID: %d to %d.", ReturnName(playerid, 0), CarData[id][carVehicle], color2); } return 1; } CMD:creategarbage(playerid, params[]) { static id = -1, type; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", type)) { SendSyntaxMessage(playerid, "/creategarbage [type]"); SendClientMessage(playerid, COLOR_YELLOW, "[TYPES]:{FFFFFF} 1: Dumpster | 2: Trash Can"); return 1; } if (type < 1 || type > 2) return SendErrorMessage(playerid, "The specified type can't be below 1 or above 2."); id = Garbage_Create(playerid, type); if (id == -1) return SendErrorMessage(playerid, "The server has reached the limit for garbage bins."); SendServerMessage(playerid, "You have successfully created garbage bin ID: %d.", id); return 1; } CMD:destroygarbage(playerid, params[]) { static id = 0; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", id)) return SendSyntaxMessage(playerid, "/destroygarbage [garbage id]"); if ((id < 0 || id >= MAX_GARBAGE_BINS) || !GarbageData[id][garbageExists]) return SendErrorMessage(playerid, "You have specified an invalid garbage ID."); Garbage_Delete(id); SendServerMessage(playerid, "You have successfully destroyed garbage bin ID: %d.", id); return 1; } CMD:takebag(playerid, params[]) { new id = Garbage_Nearest(playerid), string[64]; if (PlayerData[playerid][pJob] != JOB_GARBAGE) return SendErrorMessage(playerid, "You don't have the appropriate job."); if (id == -1) return SendErrorMessage(playerid, "You are not in range of any garbage bin."); if (GarbageData[id][garbageCapacity] < 1) return SendErrorMessage(playerid, "This garbage bin is empty."); if (PlayerData[playerid][pCarryTrash]) return SendErrorMessage(playerid, "You are already carrying a garbage bag."); GarbageData[id][garbageCapacity]--; Garbage_Save(id); PlayerData[playerid][pCarryTrash] = 1; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes a trash bag from the garbage bin.", ReturnName(playerid, 0), string); format(string, sizeof(string), "[Garbage %d]\n{FFFFFF}Trash Capacity: %d/20", id, GarbageData[id][garbageCapacity]); UpdateDynamic3DTextLabelText(GarbageData[id][garbageText3D], COLOR_DARKBLUE, string); SetPlayerAttachedObject(playerid, 4, 1264, 6, 0.000000, 0.000000, 0.000000, 0.000000, 270.000000, 90.000000, 0.500000, 0.500000, 0.500000); ShowPlayerFooter(playerid, "Press ~y~'N'~w~ to load the garbage bag."); return 1; } CMD:dumpgarbage(playerid, params[]) { new vehicleid = GetPlayerVehicleID(playerid), id = Job_NearestPoint(playerid, 5.0); if (PlayerData[playerid][pJob] != JOB_GARBAGE) return SendErrorMessage(playerid, "You don't have the appropriate job."); if (GetVehicleModel(vehicleid) != 408) return SendErrorMessage(playerid, "You must be driving a garbage truck."); if (id == -1 || JobData[id][jobType] != JOB_GARBAGE) return SendErrorMessage(playerid, "You are not in range of any trash dump."); if (CoreVehicles[vehicleid][vehTrash] < 1) return SendErrorMessage(playerid, "There is no trash loaded in this vehicle."); GiveMoney(playerid, (CoreVehicles[vehicleid][vehTrash] * 25)); ShowPlayerFooter(playerid, "You have ~g~delivered~w~ the garbage!"); SendServerMessage(playerid, "You have earned $%d for dumping %d bags of trash.", (CoreVehicles[vehicleid][vehTrash] * 15), CoreVehicles[vehicleid][vehTrash]); CoreVehicles[vehicleid][vehTrash] = 0; return 1; } CMD:createvendor(playerid, params[]) { static id = -1, type; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", type)) { SendSyntaxMessage(playerid, "/createvendor [type]"); SendClientMessage(playerid, COLOR_YELLOW, "[TYPES]:{FFFFFF} 1: Food | 2: Soda"); return 1; } if (type < 1 || type > 2) return SendErrorMessage(playerid, "The specified type can't be below 1 or above 2."); id = Vendor_Create(playerid, type); if (id == -1) return SendErrorMessage(playerid, "The server has reached the limit for vendors."); SendServerMessage(playerid, "You have successfully created vendor ID: %d.", id); return 1; } CMD:destroyvendor(playerid, params[]) { static id = 0; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", id)) return SendSyntaxMessage(playerid, "/destroyvendor [vendor id]"); if ((id < 0 || id >= MAX_VENDORS) || !VendorData[id][vendorExists]) return SendErrorMessage(playerid, "You have specified an invalid vendor ID."); Vendor_Delete(id); SendServerMessage(playerid, "You have successfully destroyed vendor ID: %d.", id); return 1; } CMD:dance(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/dance [1-4]"); if (type < 1 || type > 4) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DANCE1); case 2: SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DANCE2); case 3: SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DANCE3); case 4: SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DANCE4); } return 1; } CMD:handsup(playerid, params[]) { if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_HANDSUP); return 1; } CMD:piss(playerid, params[]) { if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); SetPlayerSpecialAction(playerid, 68); return 1; } CMD:animcmds(playerid, params[]) { SendClientMessage(playerid, COLOR_CLIENT, "ANIMATION:{FFFFFF} /dance, /handsup, /bat, /slap, /bar, /wash, /lay, /workout, /blowjob, /bomb."); SendClientMessage(playerid, COLOR_CLIENT, "ANIMATION:{FFFFFF} /carry, /crack, /sleep, /jump, /deal, /dancing, /eating, /puke, /gsign, /chat."); SendClientMessage(playerid, COLOR_CLIENT, "ANIMATION:{FFFFFF} /goggles, /spray, /throw, /swipe, /office, /kiss, /knife, /cpr, /scratch, /point."); SendClientMessage(playerid, COLOR_CLIENT, "ANIMATION:{FFFFFF} /cheer, /wave, /strip, /smoke, /reload, /taichi, /wank, /cower, /skate, /drunk."); SendClientMessage(playerid, COLOR_CLIENT, "ANIMATION:{FFFFFF} /cry, /tired, /sit, /crossarms, /fucku, /walk, /piss, /stopanim."); return 1; } CMD:bat(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/bat [1-5]"); if (type < 1 || type > 5) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimation(playerid, "BASEBALL", "Bat_1", 4.1, 0, 1, 1, 0, 0, 1); case 2: ApplyAnimation(playerid, "BASEBALL", "Bat_2", 4.1, 0, 1, 1, 0, 0, 1); case 3: ApplyAnimation(playerid, "BASEBALL", "Bat_3", 4.1, 0, 1, 1, 0, 0, 1); case 4: ApplyAnimation(playerid, "BASEBALL", "Bat_4", 4.1, 0, 0, 0, 0, 0, 1); case 5: ApplyAnimationEx(playerid, "BASEBALL", "Bat_IDLE", 4.1, 1, 0, 0, 0, 0, 1); } return 1; } CMD:slap(playerid, params[]) { if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); ApplyAnimation(playerid, "BASEBALL", "Bat_M", 4.1, 0, 0, 0, 0, 0, 1); return 1; } CMD:bar(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/bar [1-8]"); if (type < 1 || type > 8) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimation(playerid, "BAR", "Barserve_bottle", 4.1, 0, 0, 0, 0, 0, 1); case 2: ApplyAnimation(playerid, "BAR", "Barserve_give", 4.1, 0, 0, 0, 0, 0, 1); case 3: ApplyAnimation(playerid, "BAR", "Barserve_glass", 4.1, 0, 0, 0, 0, 0, 1); case 4: ApplyAnimation(playerid, "BAR", "Barserve_in", 4.1, 0, 0, 0, 0, 0, 1); case 5: ApplyAnimation(playerid, "BAR", "Barserve_order", 4.1, 0, 0, 0, 0, 0, 1); case 6: ApplyAnimationEx(playerid, "BAR", "BARman_idle", 4.1, 1, 0, 0, 0, 0, 1); case 7: ApplyAnimationEx(playerid, "BAR", "dnk_stndM_loop", 4.1, 0, 0, 0, 0, 0, 1); case 8: ApplyAnimationEx(playerid, "BAR", "dnk_stndF_loop", 4.1, 0, 0, 0, 0, 0, 1); } return 1; } CMD:wash(playerid, params[]) { if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); ApplyAnimation(playerid, "BD_FIRE", "wash_up", 4.1, 0, 0, 0, 0, 0, 1); return 1; } CMD:lay(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/lay [1-5]"); if (type < 1 || type > 5) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimationEx(playerid, "BEACH", "bather", 4.1, 1, 0, 0, 0, 0, 1); case 2: ApplyAnimationEx(playerid, "BEACH", "Lay_Bac_Loop", 4.1, 1, 0, 0, 0, 0, 1); case 3: ApplyAnimationEx(playerid, "BEACH", "ParkSit_M_loop", 4.1, 1, 0, 0, 0, 0, 1); case 4: ApplyAnimationEx(playerid, "BEACH", "ParkSit_W_loop", 4.1, 1, 0, 0, 0, 0, 1); case 5: ApplyAnimationEx(playerid, "BEACH", "SitnWait_loop_W", 4.1, 1, 0, 0, 0, 0, 1); } return 1; } CMD:workout(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/workout [1-7]"); if (type < 1 || type > 7) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimation(playerid, "benchpress", "gym_bp_celebrate", 4.1, 0, 0, 0, 0, 0, 1); case 2: ApplyAnimationEx(playerid, "benchpress", "gym_bp_down", 4.1, 0, 0, 0, 1, 0, 1); case 3: ApplyAnimation(playerid, "benchpress", "gym_bp_getoff", 4.1, 0, 0, 0, 0, 0, 1); case 4: ApplyAnimationEx(playerid, "benchpress", "gym_bp_geton", 4.1, 0, 0, 0, 1, 0, 1); case 5: ApplyAnimationEx(playerid, "benchpress", "gym_bp_up_A", 4.1, 0, 0, 0, 1, 0, 1); case 6: ApplyAnimationEx(playerid, "benchpress", "gym_bp_up_B", 4.1, 0, 0, 0, 1, 0, 1); case 7: ApplyAnimationEx(playerid, "benchpress", "gym_bp_up_smooth", 4.1, 0, 0, 0, 1, 0, 1); } return 1; } CMD:blowjob(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/blowjob [1-4]"); if (type < 1 || type > 4) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimationEx(playerid, "BLOWJOBZ", "BJ_COUCH_LOOP_W", 4.1, 1, 0, 0, 0, 0, 1); case 2: ApplyAnimationEx(playerid, "BLOWJOBZ", "BJ_COUCH_LOOP_P", 4.1, 1, 0, 0, 0, 0, 1); case 3: ApplyAnimationEx(playerid, "BLOWJOBZ", "BJ_STAND_LOOP_W", 4.1, 1, 0, 0, 0, 0, 1); case 4: ApplyAnimationEx(playerid, "BLOWJOBZ", "BJ_STAND_LOOP_P", 4.1, 1, 0, 0, 0, 0, 1); } return 1; } CMD:bomb(playerid, params[]) { if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.1, 0, 0, 0, 0, 0, 1); return 1; } CMD:carry(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/carry [1-6]"); if (type < 1 || type > 6) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimation(playerid, "CARRY", "liftup", 4.1, 0, 0, 0, 0, 0, 1); case 2: ApplyAnimation(playerid, "CARRY", "liftup05", 4.1, 0, 0, 0, 0, 0, 1); case 3: ApplyAnimation(playerid, "CARRY", "liftup105", 4.1, 0, 0, 0, 0, 0, 1); case 4: ApplyAnimation(playerid, "CARRY", "putdwn", 4.1, 0, 0, 0, 0, 0, 1); case 5: ApplyAnimation(playerid, "CARRY", "putdwn05", 4.1, 0, 0, 0, 0, 0, 1); case 6: ApplyAnimation(playerid, "CARRY", "putdwn105", 4.1, 0, 0, 0, 0, 0, 1); } return 1; } CMD:crack(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/crack [1-6]"); if (type < 1 || type > 6) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimationEx(playerid, "CRACK", "crckdeth1", 4.1, 0, 0, 0, 1, 0, 1); case 2: ApplyAnimationEx(playerid, "CRACK", "crckdeth2", 4.1, 1, 0, 0, 0, 0, 1); case 3: ApplyAnimationEx(playerid, "CRACK", "crckdeth3", 4.1, 0, 0, 0, 1, 0, 1); case 4: ApplyAnimationEx(playerid, "CRACK", "crckidle1", 4.1, 0, 0, 0, 1, 0, 1); case 5: ApplyAnimationEx(playerid, "CRACK", "crckidle2", 4.1, 0, 0, 0, 1, 0, 1); case 6: ApplyAnimationEx(playerid, "CRACK", "crckidle3", 4.1, 0, 0, 0, 1, 0, 1); } return 1; } CMD:sleep(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/sleep [1-2]"); if (type < 1 || type > 2) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimationEx(playerid, "CRACK", "crckdeth4", 4.1, 0, 0, 0, 1, 0, 1); case 2: ApplyAnimationEx(playerid, "CRACK", "crckidle4", 4.1, 0, 0, 0, 1, 0, 1); } return 1; } CMD:jump(playerid, params[]) { if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); ApplyAnimation(playerid, "DODGE", "Crush_Jump", 4.1, 0, 1, 1, 0, 0, 1); return 1; } CMD:deal(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/deal [1-6]"); if (type < 1 || type > 6) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimation(playerid, "DEALER", "DEALER_DEAL", 4.1, 0, 0, 0, 0, 0, 1); case 2: ApplyAnimation(playerid, "DEALER", "DRUGS_BUY", 4.1, 0, 0, 0, 0, 0, 1); case 3: ApplyAnimation(playerid, "DEALER", "shop_pay", 4.1, 0, 0, 0, 0, 0, 1); case 4: ApplyAnimationEx(playerid, "DEALER", "DEALER_IDLE_01", 4.1, 1, 0, 0, 0, 0, 1); case 5: ApplyAnimationEx(playerid, "DEALER", "DEALER_IDLE_02", 4.1, 1, 0, 0, 0, 0, 1); case 6: ApplyAnimationEx(playerid, "DEALER", "DEALER_IDLE_03", 4.1, 1, 0, 0, 0, 0, 1); } return 1; } CMD:dancing(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/dancing [1-10]"); if (type < 1 || type > 10) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimationEx(playerid, "DANCING", "dance_loop", 4.1, 1, 0, 0, 0, 0, 1); case 2: ApplyAnimationEx(playerid, "DANCING", "DAN_Left_A", 4.1, 1, 0, 0, 0, 0, 1); case 3: ApplyAnimationEx(playerid, "DANCING", "DAN_Right_A", 4.1, 1, 0, 0, 0, 0, 1); case 4: ApplyAnimationEx(playerid, "DANCING", "DAN_Loop_A", 4.1, 1, 0, 0, 0, 0, 1); case 5: ApplyAnimationEx(playerid, "DANCING", "DAN_Up_A", 4.1, 1, 0, 0, 0, 0, 1); case 6: ApplyAnimationEx(playerid, "DANCING", "DAN_Down_A", 4.1, 1, 0, 0, 0, 0, 1); case 7: ApplyAnimationEx(playerid, "DANCING", "dnce_M_a", 4.1, 1, 0, 0, 0, 0, 1); case 8: ApplyAnimationEx(playerid, "DANCING", "dnce_M_e", 4.1, 1, 0, 0, 0, 0, 1); case 9: ApplyAnimationEx(playerid, "DANCING", "dnce_M_b", 4.1, 1, 0, 0, 0, 0, 1); case 10: ApplyAnimationEx(playerid, "DANCING", "dnce_M_c", 4.1, 1, 0, 0, 0, 0, 1); } return 1; } CMD:eating(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/eating [1-3]"); if (type < 1 || type > 3) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimation(playerid, "FOOD", "EAT_Burger", 4.1, 0, 0, 0, 0, 0, 1); case 2: ApplyAnimation(playerid, "FOOD", "EAT_Chicken", 4.1, 0, 0, 0, 0, 0, 1); case 3: ApplyAnimation(playerid, "FOOD", "EAT_Pizza", 4.1, 0, 0, 0, 0, 0, 1); } return 1; } CMD:puke(playerid, params[]) { if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); ApplyAnimation(playerid, "FOOD", "EAT_Vomit_P", 4.1, 0, 0, 0, 0, 0, 1); return 1; } CMD:gsign(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/gsign [1-15]"); if (type < 1 || type > 15) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimation(playerid, "GHANDS", "gsign1", 4.1, 0, 0, 0, 0, 0, 1); case 2: ApplyAnimation(playerid, "GHANDS", "gsign1LH", 4.1, 0, 0, 0, 0, 0, 1); case 3: ApplyAnimation(playerid, "GHANDS", "gsign2", 4.1, 0, 0, 0, 0, 0, 1); case 4: ApplyAnimation(playerid, "GHANDS", "gsign2LH", 4.1, 0, 0, 0, 0, 0, 1); case 5: ApplyAnimation(playerid, "GHANDS", "gsign3", 4.1, 0, 0, 0, 0, 0, 1); case 6: ApplyAnimation(playerid, "GHANDS", "gsign3LH", 4.1, 0, 0, 0, 0, 0, 1); case 7: ApplyAnimation(playerid, "GHANDS", "gsign4", 4.1, 0, 0, 0, 0, 0, 1); case 8: ApplyAnimation(playerid, "GHANDS", "gsign4LH", 4.1, 0, 0, 0, 0, 0, 1); case 9: ApplyAnimation(playerid, "GHANDS", "gsign5", 4.1, 0, 0, 0, 0, 0, 1); case 10: ApplyAnimation(playerid, "GHANDS", "gsign5", 4.1, 0, 0, 0, 0, 0, 1); case 11: ApplyAnimation(playerid, "GHANDS", "gsign5LH", 4.1, 0, 0, 0, 0, 0, 1); case 12: ApplyAnimation(playerid, "GANGS", "Invite_No", 4.1, 0, 0, 0, 0, 0, 1); case 13: ApplyAnimation(playerid, "GANGS", "Invite_Yes", 4.1, 0, 0, 0, 0, 0, 1); case 14: ApplyAnimation(playerid, "GANGS", "prtial_gngtlkD", 4.1, 0, 0, 0, 0, 0, 1); case 15: ApplyAnimation(playerid, "GANGS", "smkcig_prtl", 4.1, 0, 0, 0, 0, 0, 1); } return 1; } CMD:chat(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/chat [1-6]"); if (type < 1 || type > 6) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimation(playerid, "GANGS", "prtial_gngtlkA", 4.1, 0, 0, 0, 0, 0, 1); case 2: ApplyAnimation(playerid, "GANGS", "prtial_gngtlkB", 4.1, 0, 0, 0, 0, 0, 1); case 3: ApplyAnimation(playerid, "GANGS", "prtial_gngtlkE", 4.1, 0, 0, 0, 0, 0, 1); case 4: ApplyAnimation(playerid, "GANGS", "prtial_gngtlkF", 4.1, 0, 0, 0, 0, 0, 1); case 5: ApplyAnimation(playerid, "GANGS", "prtial_gngtlkG", 4.1, 0, 0, 0, 0, 0, 1); case 6: ApplyAnimation(playerid, "GANGS", "prtial_gngtlkH", 4.1, 0, 0, 0, 0, 0, 1); } return 1; } CMD:goggles(playerid, params[]) { if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); ApplyAnimation(playerid, "goggles", "goggles_put_on", 4.1, 0, 0, 0, 0, 0, 1); return 1; } CMD:spray(playerid, params[]) { if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); ApplyAnimationEx(playerid, "GRAFFITI", "spraycan_fire", 4.1, 1, 0, 0, 0, 0, 1); return 1; } CMD:throw(playerid, params[]) { if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); ApplyAnimation(playerid, "GRENADE", "WEAPON_throw", 4.1, 0, 0, 0, 0, 0, 1); return 1; } CMD:swipe(playerid, params[]) { if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); ApplyAnimation(playerid, "HEIST9", "Use_SwipeCard", 4.1, 0, 0, 0, 0, 0, 1); return 1; } CMD:office(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/office [1-6]"); if (type < 1 || type > 6) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimationEx(playerid, "INT_OFFICE", "OFF_Sit_Bored_Loop", 4.1, 1, 0, 0, 0, 0, 1); case 2: ApplyAnimationEx(playerid, "INT_OFFICE", "OFF_Sit_Crash", 4.1, 1, 0, 0, 0, 0, 1); case 3: ApplyAnimationEx(playerid, "INT_OFFICE", "OFF_Sit_Drink", 4.1, 1, 0, 0, 0, 0, 1); case 4: ApplyAnimationEx(playerid, "INT_OFFICE", "OFF_Sit_Read", 4.1, 1, 0, 0, 0, 0, 1); case 5: ApplyAnimationEx(playerid, "INT_OFFICE", "OFF_Sit_Type_Loop", 4.1, 1, 0, 0, 0, 0, 1); case 6: ApplyAnimationEx(playerid, "INT_OFFICE", "OFF_Sit_Watch", 4.1, 1, 0, 0, 0, 0, 1); } return 1; } CMD:kiss(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/kiss [1-6]"); if (type < 1 || type > 6) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimation(playerid, "KISSING", "Grlfrd_Kiss_01", 4.1, 0, 0, 0, 0, 0, 1); case 2: ApplyAnimation(playerid, "KISSING", "Grlfrd_Kiss_02", 4.1, 0, 0, 0, 0, 0, 1); case 3: ApplyAnimation(playerid, "KISSING", "Grlfrd_Kiss_03", 4.1, 0, 0, 0, 0, 0, 1); case 4: ApplyAnimation(playerid, "KISSING", "Playa_Kiss_01", 4.1, 0, 0, 0, 0, 0, 1); case 5: ApplyAnimation(playerid, "KISSING", "Playa_Kiss_02", 4.1, 0, 0, 0, 0, 0, 1); case 6: ApplyAnimation(playerid, "KISSING", "Playa_Kiss_03", 4.1, 0, 0, 0, 0, 0, 1); } return 1; } CMD:knife(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/knife [1-8]"); if (type < 1 || type > 8) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimation(playerid, "KNIFE", "knife_1", 4.1, 0, 1, 1, 0, 0, 1); case 2: ApplyAnimation(playerid, "KNIFE", "knife_2", 4.1, 0, 1, 1, 0, 0, 1); case 3: ApplyAnimation(playerid, "KNIFE", "knife_3", 4.1, 0, 1, 1, 0, 0, 1); case 4: ApplyAnimation(playerid, "KNIFE", "knife_4", 4.1, 0, 1, 1, 0, 0, 1); case 5: ApplyAnimationEx(playerid, "KNIFE", "WEAPON_knifeidle", 4.1, 1, 0, 0, 0, 0, 1); case 6: ApplyAnimation(playerid, "KNIFE", "KILL_Knife_Player", 4.1, 0, 0, 0, 0, 0, 1); case 7: ApplyAnimation(playerid, "KNIFE", "KILL_Knife_Ped_Damage", 4.1, 0, 0, 0, 0, 0, 1); case 8: ApplyAnimation(playerid, "KNIFE", "KILL_Knife_Ped_Die", 4.1, 0, 0, 0, 0, 0, 1); } return 1; } CMD:cpr(playerid, params[]) { if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); ApplyAnimation(playerid, "MEDIC", "CPR", 4.1, 0, 0, 0, 0, 0, 1); return 1; } CMD:scratch(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/scratch [1-4]"); if (type < 1 || type > 4) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimationEx(playerid, "SCRATCHING", "scdldlp", 4.1, 1, 0, 0, 0, 0, 1); case 2: ApplyAnimationEx(playerid, "SCRATCHING", "scdlulp", 4.1, 1, 0, 0, 0, 0, 1); case 3: ApplyAnimationEx(playerid, "SCRATCHING", "scdrdlp", 4.1, 1, 0, 0, 0, 0, 1); case 4: ApplyAnimationEx(playerid, "SCRATCHING", "scdrulp", 4.1, 1, 0, 0, 0, 0, 1); } return 1; } CMD:point(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/point [1-4]"); if (type < 1 || type > 4) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimationEx(playerid, "PED", "ARRESTgun", 4.1, 0, 0, 0, 1, 0, 1); case 2: ApplyAnimationEx(playerid, "SHOP", "ROB_Loop_Threat", 4.1, 1, 0, 0, 0, 0, 1); case 3: ApplyAnimationEx(playerid, "ON_LOOKERS", "point_loop", 4.1, 1, 0, 0, 0, 0, 1); case 4: ApplyAnimationEx(playerid, "ON_LOOKERS", "Pointup_loop", 4.1, 1, 0, 0, 0, 0, 1); } return 1; } CMD:cheer(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/cheer [1-8]"); if (type < 1 || type > 8) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimation(playerid, "ON_LOOKERS", "shout_01", 4.1, 0, 0, 0, 0, 0, 1); case 2: ApplyAnimation(playerid, "ON_LOOKERS", "shout_02", 4.1, 0, 0, 0, 0, 0, 1); case 3: ApplyAnimation(playerid, "ON_LOOKERS", "shout_in", 4.1, 0, 0, 0, 0, 0, 1); case 4: ApplyAnimationEx(playerid, "RIOT", "RIOT_ANGRY_B", 4.1, 1, 0, 0, 0, 0, 1); case 5: ApplyAnimation(playerid, "RIOT", "RIOT_CHANT", 4.1, 0, 0, 0, 0, 0, 1); case 6: ApplyAnimation(playerid, "RIOT", "RIOT_shout", 4.1, 0, 0, 0, 0, 0, 1); case 7: ApplyAnimation(playerid, "STRIP", "PUN_HOLLER", 4.1, 0, 0, 0, 0, 0, 1); case 8: ApplyAnimation(playerid, "OTB", "wtchrace_win", 4.1, 0, 0, 0, 0, 0, 1); } return 1; } CMD:strip(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/strip [1-7]"); if (type < 1 || type > 7) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimationEx(playerid, "STRIP", "strip_A", 4.1, 1, 0, 0, 0, 0, 1); case 2: ApplyAnimationEx(playerid, "STRIP", "strip_B", 4.1, 1, 0, 0, 0, 0, 1); case 3: ApplyAnimationEx(playerid, "STRIP", "strip_C", 4.1, 1, 0, 0, 0, 0, 1); case 4: ApplyAnimationEx(playerid, "STRIP", "strip_D", 4.1, 1, 0, 0, 0, 0, 1); case 5: ApplyAnimationEx(playerid, "STRIP", "strip_E", 4.1, 1, 0, 0, 0, 0, 1); case 6: ApplyAnimationEx(playerid, "STRIP", "strip_F", 4.1, 1, 0, 0, 0, 0, 1); case 7: ApplyAnimationEx(playerid, "STRIP", "strip_G", 4.1, 1, 0, 0, 0, 0, 1); } return 1; } CMD:wave(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/wave [1-3]"); if (type < 1 || type > 3) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimation(playerid, "PED", "endchat_03", 4.1, 0, 0, 0, 0, 0, 1); case 2: ApplyAnimation(playerid, "KISSING", "gfwave2", 4.1, 0, 0, 0, 0, 0, 1); case 3: ApplyAnimationEx(playerid, "ON_LOOKERS", "wave_loop", 4.1, 1, 0, 0, 0, 0, 1); } return 1; } CMD:smoke(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/smoke [1-3]"); if (type < 1 || type > 3) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimation(playerid, "SMOKING", "M_smk_drag", 4.1, 0, 0, 0, 0, 0, 1); case 2: ApplyAnimationEx(playerid, "SMOKING", "M_smklean_loop", 4.1, 1, 0, 0, 0, 0, 1); case 3: ApplyAnimation(playerid, "SMOKING", "M_smkstnd_loop", 4.1, 0, 0, 0, 0, 0, 1); } return 1; } CMD:reload(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/reload [1-4]"); if (type < 1 || type > 4) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimation(playerid, "BUDDY", "buddy_reload", 4.1, 0, 0, 0, 0, 0, 1); case 2: ApplyAnimation(playerid, "UZI", "UZI_reload", 4.1, 0, 0, 0, 0, 0, 1); case 3: ApplyAnimation(playerid, "COLT45", "colt45_reload", 4.1, 0, 0, 0, 0, 0, 1); case 4: ApplyAnimation(playerid, "RIFLE", "rifle_load", 4.1, 0, 0, 0, 0, 0, 1); } return 1; } CMD:taichi(playerid, params[]) { if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); ApplyAnimationEx(playerid, "PARK", "Tai_Chi_Loop", 4.1, 1, 0, 0, 0, 0, 1); return 1; } CMD:wank(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/wank [1-3]"); if (type < 1 || type > 3) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimationEx(playerid, "PAULNMAC", "wank_loop", 4.1, 1, 0, 0, 0, 0, 1); case 2: ApplyAnimation(playerid, "PAULNMAC", "wank_in", 4.1, 0, 0, 0, 0, 0, 1); case 3: ApplyAnimation(playerid, "PAULNMAC", "wank_out", 4.1, 0, 0, 0, 0, 0, 1); } return 1; } CMD:cower(playerid, params[]) { if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); ApplyAnimationEx(playerid, "PED", "cower", 4.1, 0, 0, 0, 1, 0, 1); return 1; } CMD:skate(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/skate [1-2]"); if (type < 1 || type > 2) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimationEx(playerid, "SKATE", "skate_idle", 4.1, 1, 0, 0, 0, 0, 1); case 2: ApplyAnimationEx(playerid, "SKATE", "skate_run", 4.1, 1, 1, 1, 1, 1, 1); } return 1; } CMD:drunk(playerid, params[]) { if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); ApplyAnimationEx(playerid, "PED", "WALK_drunk", 4.1, 1, 1, 1, 1, 1, 1); return 1; } CMD:cry(playerid, params[]) { if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); ApplyAnimationEx(playerid, "GRAVEYARD", "mrnF_loop", 4.1, 1, 0, 0, 0, 0, 1); return 1; } CMD:tired(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/tired [1-2]"); if (type < 1 || type > 2) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimationEx(playerid, "PED", "IDLE_tired", 4.1, 1, 0, 0, 0, 0, 1); case 2: ApplyAnimationEx(playerid, "FAT", "IDLE_tired", 4.1, 1, 0, 0, 0, 0, 1); } return 1; } CMD:sit(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/sit [1-6]"); if (type < 1 || type > 6) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimationEx(playerid, "CRIB", "PED_Console_Loop", 4.1, 1, 0, 0, 0, 0); case 2: ApplyAnimationEx(playerid, "INT_HOUSE", "LOU_In", 4.1, 0, 0, 0, 1, 0); case 3: ApplyAnimationEx(playerid, "MISC", "SEAT_LR", 4.1, 1, 0, 0, 0, 0); case 4: ApplyAnimationEx(playerid, "MISC", "Seat_talk_01", 4.1, 1, 0, 0, 0, 0); case 5: ApplyAnimationEx(playerid, "MISC", "Seat_talk_02", 4.1, 1, 0, 0, 0, 0); case 6: ApplyAnimationEx(playerid, "ped", "SEAT_down", 4.1, 0, 0, 0, 1, 0); } return 1; } CMD:crossarms(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/crossarms [1-4]"); if (type < 1 || type > 4) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimationEx(playerid, "COP_AMBIENT", "Coplook_loop", 4.1, 0, 1, 1, 1, 0, 1); case 2: ApplyAnimationEx(playerid, "GRAVEYARD", "prst_loopa", 4.1, 1, 0, 0, 0, 0, 1); case 3: ApplyAnimationEx(playerid, "GRAVEYARD", "mrnM_loop", 4.1, 1, 0, 0, 0, 0, 1); case 4: ApplyAnimationEx(playerid, "DEALER", "DEALER_IDLE", 4.1, 0, 1, 1, 1, 0, 1); } return 1; } CMD:fucku(playerid, params[]) { if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); ApplyAnimation(playerid, "PED", "fucku", 4.1, 0, 0, 0, 0, 0); return 1; } CMD:walk(playerid, params[]) { new type; if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You can't perform animations at the moment."); if (sscanf(params, "d", type)) return SendSyntaxMessage(playerid, "/walk [1-16]"); if (type < 1 || type > 17) return SendErrorMessage(playerid, "Invalid type specified."); switch (type) { case 1: ApplyAnimationEx(playerid, "FAT", "FatWalk", 4.1, 1, 1, 1, 1, 1, 1); case 2: ApplyAnimationEx(playerid, "MUSCULAR", "MuscleWalk", 4.1, 1, 1, 1, 1, 1, 1); case 3: ApplyAnimationEx(playerid, "PED", "WALK_armed", 4.1, 1, 1, 1, 1, 1, 1); case 4: ApplyAnimationEx(playerid, "PED", "WALK_civi", 4.1, 1, 1, 1, 1, 1, 1); case 5: ApplyAnimationEx(playerid, "PED", "WALK_fat", 4.1, 1, 1, 1, 1, 1, 1); case 6: ApplyAnimationEx(playerid, "PED", "WALK_fatold", 4.1, 1, 1, 1, 1, 1, 1); case 7: ApplyAnimationEx(playerid, "PED", "WALK_gang1", 4.1, 1, 1, 1, 1, 1, 1); case 8: ApplyAnimationEx(playerid, "PED", "WALK_gang2", 4.1, 1, 1, 1, 1, 1, 1); case 9: ApplyAnimationEx(playerid, "PED", "WALK_player", 4.1, 1, 1, 1, 1, 1, 1); case 10: ApplyAnimationEx(playerid, "PED", "WALK_old", 4.1, 1, 1, 1, 1, 1, 1); case 11: ApplyAnimationEx(playerid, "PED", "WALK_wuzi", 4.1, 1, 1, 1, 1, 1, 1); case 12: ApplyAnimationEx(playerid, "PED", "WOMAN_walkbusy", 4.1, 1, 1, 1, 1, 1, 1); case 13: ApplyAnimationEx(playerid, "PED", "WOMAN_walkfatold", 4.1, 1, 1, 1, 1, 1, 1); case 14: ApplyAnimationEx(playerid, "PED", "WOMAN_walknorm", 4.1, 1, 1, 1, 1, 1, 1); case 15: ApplyAnimationEx(playerid, "PED", "WOMAN_walksexy", 4.1, 1, 1, 1, 1, 1, 1); case 16: ApplyAnimationEx(playerid, "PED", "WOMAN_walkshop", 4.1, 1, 1, 1, 1, 1, 1); } return 1; } CMD:atune(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (!IsPlayerInAnyVehicle(playerid)) return SendErrorMessage(playerid, "You are not in any vehicle."); if (!IsDoorVehicle(GetPlayerVehicleID(playerid))) return SendErrorMessage(playerid, "You can't tune this vehicle."); Dialog_Show(playerid, TuneVehicle, DIALOG_STYLE_LIST, "Tune Vehicle", "Add Wheels\nAdd Nitrous\nAdd Hydraulics", "Select", "Cancel"); return 1; } CMD:acolorcar(playerid, params[]) { static color1, color2; if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (!IsPlayerInAnyVehicle(playerid)) return SendErrorMessage(playerid, "You are not in any vehicle."); if (sscanf(params, "dd", color1, color2)) return SendSyntaxMessage(playerid, "/acolorcar [color 1] [color 2]"); if (color1 < 0 || color1 > 255) return SendErrorMessage(playerid, "The first color can't be below 0 or above 255."); if (color2 < 0 || color2 > 255) return SendErrorMessage(playerid, "The second color can't be below 0 or above 255."); SetVehicleColor(GetPlayerVehicleID(playerid), color1, color2); SendServerMessage(playerid, "You have changed the colors of this vehicle to %d, %d.", color1, color2); return 1; } CMD:apaintjob(playerid, params[]) { static paintjobid; if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (!IsPlayerInAnyVehicle(playerid)) return SendErrorMessage(playerid, "You are not in any vehicle."); if (sscanf(params, "d", paintjobid)) return SendSyntaxMessage(playerid, "/apaintjob [paintjob ID] (-1 to disable)"); if (paintjobid < -1 || paintjobid > 5) return SendErrorMessage(playerid, "The specified paintjob can't be below -1 or above 5."); if (paintjobid == -1) paintjobid = 6; SetVehiclePaintjob(GetPlayerVehicleID(playerid), paintjobid); SendServerMessage(playerid, "You have changed the paintjob of this vehicle to %d.", paintjobid); return 1; } CMD:panel(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 6 || !IsPlayerAdmin(playerid)) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (g_ServerLocked) Dialog_Show(playerid, ServerPanel, DIALOG_STYLE_LIST, "Server Panel", "Unlock Server\nSet Hostname\nExecute Query", "Select", "Cancel"); else Dialog_Show(playerid, ServerPanel, DIALOG_STYLE_LIST, "Server Panel", "Lock Server\nSet Hostname\nExecute Query", "Select", "Cancel"); return 1; } CMD:spawnitem(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 4) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (isnull(params)) return SendSyntaxMessage(playerid, "/spawnitem [item name] (/itemlist for a list)"); static Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); for (new i = 0; i < sizeof(g_aInventoryItems); i ++) if (!strcmp(g_aInventoryItems[i][e_InventoryItem], params, true)) { new id = DropItem(g_aInventoryItems[i][e_InventoryItem], "Admin", g_aInventoryItems[i][e_InventoryModel], 1, x, y, z - 0.9, GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid)); if (id == -1) return SendErrorMessage(playerid, "The server has reached a limit for spawned items."); Log_Write("logs/spawnitem.txt", "[%s] %s has spawned %s", ReturnDate(), ReturnName(playerid, 0), g_aInventoryItems[i][e_InventoryItem]); SendServerMessage(playerid, "You have spawned a \"%s\" (type /setquantity to set the quantity).", g_aInventoryItems[i][e_InventoryItem]); return 1; } SendErrorMessage(playerid, "Invalid item name (use /itemlist for a list)."); return 1; } CMD:setquantity(playerid, params[]) { static id = -1, amount; if (PlayerData[playerid][pAdmin] < 4) return SendErrorMessage(playerid, "You don't have permission to use this command."); if ((id = Item_Nearest(playerid)) == -1) return SendErrorMessage(playerid, "You are not in range of any spawned items."); if (sscanf(params, "d", amount)) return SendSyntaxMessage(playerid, "/setquantity [amount]"); if (amount < 1) return SendErrorMessage(playerid, "The specified amount can't be below 1."); Item_SetQuantity(id, amount); Log_Write("logs/spawnitem.txt", "[%s] %s has set the quantity of %s to %d.", ReturnDate(), ReturnName(playerid, 0), DroppedItems[id][droppedItem], amount); SendServerMessage(playerid, "You have set the quantity of \"%s\" to %d.", DroppedItems[id][droppedItem], amount); return 1; } CMD:destroyitem(playerid, params[]) { static id = -1; if (PlayerData[playerid][pAdmin] < 4) return SendErrorMessage(playerid, "You don't have permission to use this command."); if ((id = Item_Nearest(playerid)) == -1) return SendErrorMessage(playerid, "You are not in range of any spawned items."); SendServerMessage(playerid, "You have deleted a \"%s\".", DroppedItems[id][droppedItem]); Item_Delete(id); return 1; } CMD:boombox(playerid, params[]) { static type[24], string[128]; if (!Inventory_HasItem(playerid, "Boombox")) return SendErrorMessage(playerid, "You don't have a boombox on you."); if (sscanf(params, "s[24]S()[128]", type, string)) { SendSyntaxMessage(playerid, "/boombox [name]"); SendClientMessage(playerid, COLOR_YELLOW, "[NAMES]:{FFFFFF} place, pickup, url"); return 1; } if (!strcmp(type, "place", true)) { if (BoomboxData[playerid][boomboxPlaced]) return SendErrorMessage(playerid, "You have placed a boombox already."); if (Boombox_Nearest(playerid) != INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You are in range of another boombox already."); if (IsPlayerInAnyVehicle(playerid)) return SendErrorMessage(playerid, "You must exit the vehicle first."); Boombox_Place(playerid); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out a boombox and sets it down.", ReturnName(playerid, 0)); SendServerMessage(playerid, "You have placed your boombox (use \"/boombox\" for options)."); } else if (!strcmp(type, "pickup", true)) { if (!BoomboxData[playerid][boomboxPlaced]) return SendErrorMessage(playerid, "You don't have a boombox deployed."); if (!IsPlayerInRangeOfPoint(playerid, 3.0, BoomboxData[playerid][boomboxPos][0], BoomboxData[playerid][boomboxPos][1], BoomboxData[playerid][boomboxPos][2])) return SendErrorMessage(playerid, "You are not in range of your boombox."); Boombox_Destroy(playerid); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has picked up their boombox.", ReturnName(playerid, 0)); } else if (!strcmp(type, "url", true)) { if (sscanf(string, "s[128]", string)) return SendSyntaxMessage(playerid, "/boombox [url] [song url]"); if (!BoomboxData[playerid][boomboxPlaced]) return SendErrorMessage(playerid, "You don't have a boombox deployed."); if (!IsPlayerInRangeOfPoint(playerid, 3.0, BoomboxData[playerid][boomboxPos][0], BoomboxData[playerid][boomboxPos][1], BoomboxData[playerid][boomboxPos][2])) return SendErrorMessage(playerid, "You are not in range of your boombox."); Boombox_SetURL(playerid, string); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s turns the dial of the boombox to another station.", ReturnName(playerid, 0)); } return 1; } CMD:adestroybox(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); foreach (new i : Player) if (BoomboxData[i][boomboxPlaced] && IsPlayerInRangeOfPoint(playerid, 3.0, BoomboxData[i][boomboxPos][0], BoomboxData[i][boomboxPos][1], BoomboxData[i][boomboxPos][2])) { Boombox_Destroy(i); SendServerMessage(playerid, "You have destroyed %s's boombox.", ReturnName(i, 0)); return SendServerMessage(i, "%s has destroyed your boombox.", ReturnName(playerid, 0)); } SendErrorMessage(playerid, "You are not in range of any boombox."); return 1; } CMD:findgarbage(playerid, params[]) { if (PlayerData[playerid][pJob] != JOB_GARBAGE) return SendErrorMessage(playerid, "You don't have the appropriate job."); new id = GetClosestGarbage(playerid); if (id == -1) return SendErrorMessage(playerid, "There are no garbage bins available."); PlayerData[playerid][pCP] = 1; SetPlayerCheckpoint(playerid, GarbageData[id][garbagePos][0], GarbageData[id][garbagePos][1], GarbageData[id][garbagePos][2], 2.5); SendServerMessage(playerid, "Marker set to the closest garbage bin."); return 1; } CMD:search(playerid, params[]) { new userid; if (sscanf(params, "u", userid)) { SendSyntaxMessage(playerid, "/search [playerid/name]"); SendClientMessage(playerid, COLOR_YELLOW, "[HINT]:{FFFFFF} Use /searchbp to search a player's backpack."); return 1; } if (userid == INVALID_PLAYER_ID || !IsPlayerNearPlayer(playerid, userid, 5.0)) return SendErrorMessage(playerid, "That player is disconnected or not near you."); if (Inventory_HasItem(userid, "Marijuana Seeds")) SendClientMessageEx(playerid, COLOR_LIGHTRED, "** Marijuana Seeds (%d)", Inventory_Count(userid, "Marijuana Seeds")); if (Inventory_HasItem(userid, "Cocaine Seeds")) SendClientMessageEx(playerid, COLOR_LIGHTRED, "** Cocaine Seeds (%d)", Inventory_Count(userid, "Cocaine Seeds")); if (Inventory_HasItem(userid, "Heroin Opium Seeds")) SendClientMessageEx(playerid, COLOR_LIGHTRED, "** Heroin Opium Seeds (%d)", Inventory_Count(userid, "Heroin Opium Seeds")); if (Inventory_HasItem(userid, "Steroids")) SendClientMessageEx(playerid, COLOR_LIGHTRED, "** Steroids (%d)", Inventory_Count(userid, "Steroids")); if (Inventory_HasItem(userid, "Marijuana")) SendClientMessageEx(playerid, COLOR_LIGHTRED, "** Marijuana (%d)", Inventory_Count(userid, "Marijuana")); if (Inventory_HasItem(userid, "Cocaine")) SendClientMessageEx(playerid, COLOR_LIGHTRED, "** Cocaine (%d)", Inventory_Count(userid, "Cocaine")); if (Inventory_HasItem(userid, "Heroin")) SendClientMessageEx(playerid, COLOR_LIGHTRED, "** Heroin (%d)", Inventory_Count(userid, "Heroin")); for (new i = 0; i < 12; i ++) if (PlayerData[userid][pGuns][i] && PlayerData[userid][pAmmo][i] > 0) { SendClientMessageEx(playerid, COLOR_LIGHTRED, "** %s", ReturnWeaponName(PlayerData[userid][pGuns][i])); } SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s starts to search %s for illegal items.", ReturnName(playerid, 0), ReturnName(userid, 0)); return 1; } CMD:searchbp(playerid, params[]) { new userid, backpack; if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/searchbp [playerid/name]"); if (userid == INVALID_PLAYER_ID || !IsPlayerNearPlayer(playerid, userid, 5.0)) return SendErrorMessage(playerid, "That player is disconnected or not near you."); if (!Inventory_HasItem(userid, "Backpack") || (backpack = GetPlayerBackpack(userid)) == -1) return SendErrorMessage(playerid, "That player doesn't have a backpack."); if (Backpack_HasItem(backpack, "Marijuana Seeds")) SendClientMessageEx(playerid, COLOR_LIGHTRED, "** Marijuana Seeds (%d)", Backpack_Count(backpack, "Marijuana Seeds")); if (Backpack_HasItem(backpack, "Cocaine Seeds")) SendClientMessageEx(playerid, COLOR_LIGHTRED, "** Cocaine Seeds (%d)", Backpack_Count(backpack, "Cocaine Seeds")); if (Backpack_HasItem(backpack, "Heroin Opium Seeds")) SendClientMessageEx(playerid, COLOR_LIGHTRED, "** Heroin Opium Seeds (%d)", Backpack_Count(backpack, "Heroin Opium Seeds")); if (Backpack_HasItem(backpack, "Steroids")) SendClientMessageEx(playerid, COLOR_LIGHTRED, "** Steroids (%d)", Backpack_Count(backpack, "Steroids")); if (Backpack_HasItem(backpack, "Marijuana")) SendClientMessageEx(playerid, COLOR_LIGHTRED, "** Marijuana (%d)", Backpack_Count(backpack, "Marijuana")); if (Backpack_HasItem(backpack, "Cocaine")) SendClientMessageEx(playerid, COLOR_LIGHTRED, "** Cocaine (%d)", Backpack_Count(backpack, "Cocaine")); if (Backpack_HasItem(backpack, "Heroin")) SendClientMessageEx(playerid, COLOR_LIGHTRED, "** Heroin (%d)", Backpack_Count(backpack, "Heroin")); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has searched %s's backpack for illegal items.", ReturnName(playerid, 0), ReturnName(userid, 0)); return 1; } CMD:take(playerid, params[]) { new userid, string[128]; if (GetFactionType(playerid) != FACTION_POLICE) return SendErrorMessage(playerid, "You must be a police officer."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/take [playerid/name]"); if (userid == INVALID_PLAYER_ID || !IsPlayerNearPlayer(playerid, userid, 5.0)) return SendErrorMessage(playerid, "That player is disconnected or not near you."); if (GetWeaponCount(userid) > 0) strcat(string, "Take Weapons\n"); if (Inventory_HasItem(userid, "Marijuana Seeds") || Inventory_HasItem(userid, "Cocaine Seeds") || Inventory_HasItem(userid, "Heroin Opium Seeds")) strcat(string, "Take Seeds\n"); if (Inventory_HasItem(userid, "Marijuana") || Inventory_HasItem(userid, "Cocaine") || Inventory_HasItem(userid, "Heroin") || Inventory_HasItem(userid, "Steroids")) strcat(string, "Take Drugs\n"); if (Inventory_HasItem(userid, "Portable Radio")) strcat(string, "Take Radio\n"); if (Inventory_HasItem(userid, "Backpack") && GetPlayerBackpack(userid) != -1) strcat(string, "Take Backpack\n"); if (Inventory_HasItem(userid, "Weapon License")) strcat(string, "Take Weapon License\n"); if (Inventory_HasItem(userid, "Driving License")) strcat(string, "Take Driving License\n"); if (!strlen(string)) return SendErrorMessage(playerid, "This player has no illegal items to take."); PlayerData[playerid][pTakeItems] = userid; Dialog_Show(playerid, TakeItems, DIALOG_STYLE_LIST, "Take Items", string, "Take", "Cancel"); return 1; } CMD:kickdoor(playerid, params[]) { static id = -1; if (GetFactionType(playerid) != FACTION_POLICE) return SendErrorMessage(playerid, "You must be a police officer."); if ((id = House_Nearest(playerid)) != -1) { if (!HouseData[id][houseLocked]) return SendErrorMessage(playerid, "This house is already unlocked."); ShowPlayerFooter(playerid, "Attempting to ~r~break~w~ door..."); ApplyAnimation(playerid, "POLICE", "Door_Kick", 4.0, 0, 0, 0, 0, 0); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s attempts to kick the house's door down.", ReturnName(playerid, 0)); SetTimerEx("KickHouse", 1500, false, "dd", playerid, id); } else if ((id = Business_Nearest(playerid)) != -1) { if (!BusinessData[id][bizLocked]) return SendErrorMessage(playerid, "This business is already unlocked."); ShowPlayerFooter(playerid, "Attempting to ~r~break~w~ door..."); ApplyAnimation(playerid, "POLICE", "Door_Kick", 4.0, 0, 0, 0, 0, 0); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s attempts to kick the business door down.", ReturnName(playerid, 0)); SetTimerEx("KickBusiness", 1500, false, "dd", playerid, id); } else { SendErrorMessage(playerid, "You must be in range of a house or business."); } return 1; } CMD:buyrack(playerid, params[]) { new houseid = House_Inside(playerid); if (houseid == -1 || !House_IsOwner(playerid, houseid)) return SendErrorMessage(playerid, "You are not in range of your house interior."); if (isnull(params) || (!isnull(params) && strcmp(params, "confirm", true) != 0)) return SendSyntaxMessage(playerid, "/buyrack [confirm] ($1,000 fee)"); if (Rack_Count(playerid) >= 4) return SendErrorMessage(playerid, "Your house can only have up to 4 weapon racks."); if (Rack_Nearest(playerid) != -1) return SendErrorMessage(playerid, "You can't use this command near another rack."); if (GetMoney(playerid) < 1000) return SendErrorMessage(playerid, "You have insufficient funds for the purchase."); new id = Rack_Create(playerid, houseid); if (id == -1) return SendErrorMessage(playerid, "The server has reached the limit for weapon racks."); ResetEditing(playerid); PlayerData[playerid][pEditRack] = id; EditDynamicObject(playerid, RackData[id][rackObjects][4]); GiveMoney(playerid, -1000); SendServerMessage(playerid, "You have purchased a weapon rack for $1,000."); return 1; } CMD:gunrack(playerid, params[]) { new id = Rack_Nearest(playerid); if (id == -1) return SendErrorMessage(playerid, "You are not in range of any weapon rack."); Rack_ShowGuns(playerid, id); return 1; } CMD:deleterack(playerid, params[]) { new id = -1, houseid = House_Inside(playerid); if (houseid == -1 || !House_IsOwner(playerid, houseid)) return SendErrorMessage(playerid, "You are not in range of your house interior."); if ((id = Rack_Nearest(playerid)) == -1) return SendErrorMessage(playerid, "You are not in range of any weapon rack."); Rack_Delete(id); SendServerMessage(playerid, "You have deleted the weapon rack from your house."); return 1; } CMD:createrack(playerid, params[]) { static id = -1; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); id = Rack_Create(playerid, -1); if (id == -1) return SendErrorMessage(playerid, "The server has reached the limit for weapon racks."); ResetEditing(playerid); PlayerData[playerid][pEditRack] = id; EditDynamicObject(playerid, RackData[id][rackObjects][4]); SendServerMessage(playerid, "You have successfully created rack ID: %d.", id); return 1; } CMD:editrack(playerid, params[]) { static id = 0; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", id)) return SendSyntaxMessage(playerid, "/editrack [rack id]"); if ((id < 0 || id >= MAX_WEAPON_RACKS) || !RackData[id][rackExists]) return SendErrorMessage(playerid, "You have specified an invalid rack ID."); ResetEditing(playerid); PlayerData[playerid][pEditRack] = id; EditDynamicObject(playerid, RackData[id][rackObjects][4]); SendServerMessage(playerid, "You are now editing weapon rack ID: %d.", id); return 1; } CMD:destroyrack(playerid, params[]) { static id = 0; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", id)) return SendSyntaxMessage(playerid, "/destroyrack [rack id]"); if ((id < 0 || id >= MAX_WEAPON_RACKS) || !RackData[id][rackExists]) return SendErrorMessage(playerid, "You have specified an invalid rack ID."); Rack_Delete(id); SendServerMessage(playerid, "You have successfully destroyed weapon rack ID: %d.", id); return 1; } CMD:tracenumber(playerid, params[]) { new number; if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", number)) return SendSyntaxMessage(playerid, "/tracenumber [phone number]"); if (number == 0) return SendErrorMessage(playerid, "You have specified an invalid number."); if (GetNumberOwner(number) != INVALID_PLAYER_ID) return SendServerMessage(playerid, "The phone number %d is owned by %s.", number, ReturnName(GetNumberOwner(number), 0)); SendErrorMessage(playerid, "There is no player online with that phone number."); return 1; } CMD:flipcar(playerid, params[]) { new vehicleid = GetPlayerVehicleID(playerid); if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (vehicleid > 0 && isnull(params)) { FlipVehicle(vehicleid); SendServerMessage(playerid, "You have flipped your current vehicle."); } else { if (sscanf(params, "d", vehicleid)) return SendSyntaxMessage(playerid, "/flipcar [vehicle ID]"); else if (!IsValidVehicle(vehicleid)) return SendErrorMessage(playerid, "You have specified an invalid vehicle ID."); FlipVehicle(vehicleid); SendServerMessage(playerid, "You have flipped vehicle ID: %d.", vehicleid); } return 1; } CMD:createspeed(playerid, params[]) { static Float:limit, Float:range; if (sscanf(params, "ff", limit, range)) return SendSyntaxMessage(playerid, "/createspeed [speed limit] [range] (default range: 30)"); if (limit < 5.0 || limit > 150.0) return SendErrorMessage(playerid, "The speed limit can't be below 5 or above 150."); if (range < 5.0 || range > 50.0) return SendErrorMessage(playerid, "The range can't be below 5 or above 50."); if (Speed_Nearest(playerid) != -1) return SendErrorMessage(playerid, "You can't do this in range another speed camera."); new id = Speed_Create(playerid, limit, range); if (id == -1) return SendErrorMessage(playerid, "The server has reached the limit for speed cameras."); SendServerMessage(playerid, "You have created speed camera ID: %d.", id); return 1; } CMD:destroyspeed(playerid, params[]) { static id = 0; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", id)) return SendSyntaxMessage(playerid, "/destroyspeed [speed id]"); if ((id < 0 || id >= MAX_SPEED_CAMERAS) || !SpeedData[id][speedExists]) return SendErrorMessage(playerid, "You have specified an invalid speed camera ID."); Speed_Delete(id); SendServerMessage(playerid, "You have successfully destroyed speed camera ID: %d.", id); return 1; } CMD:admins(playerid, params[]) { new count = 0; SendClientMessage(playerid, COLOR_GREY, "-----------------------------------------------------------"); foreach (new i : Player) if (PlayerData[i][pAdmin] > 0 && PlayerData[i][pAdminHide] < 1) { if (PlayerData[i][pAdminDuty]) SendClientMessageEx(playerid, COLOR_WHITE, "* %s {33CC33}(Level: %d) {33CC33}(On Duty)", ReturnName(i, 0), PlayerData[i][pAdmin]); else SendClientMessageEx(playerid, COLOR_WHITE, "* %s {33CC33}(Level: %d) {FF6347}(Off Duty)", ReturnName(i, 0), PlayerData[i][pAdmin]); count++; } if (!count) { SendClientMessage(playerid, COLOR_WHITE, "* No admins online."); } SendClientMessage(playerid, COLOR_GREY, "-----------------------------------------------------------"); return 1; } CMD:supporters(playerid, params[]) { new count = 0; SendClientMessage(playerid, COLOR_GREY, "-----------------------------------------------------------"); foreach (new i : Player) if (PlayerData[i][pTester] > 0) { if (PlayerData[i][pTesterDuty]) SendClientMessageEx(playerid, COLOR_WHITE, "* %s {33CC33}(On Duty)", ReturnName(i, 0)); else SendClientMessageEx(playerid, COLOR_WHITE, "* %s {FF6347}(Off Duty)", ReturnName(i, 0)); count++; } if (!count) { SendClientMessage(playerid, COLOR_WHITE, "* No supporters online."); } SendClientMessage(playerid, COLOR_GREY, "-----------------------------------------------------------"); return 1; } CMD:showlicense(playerid, params[]) { static userid; if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/showlicense [playerid/name]"); if (userid == INVALID_PLAYER_ID || !IsPlayerNearPlayer(playerid, userid, 5.0)) return SendErrorMessage(playerid, "That player is disconnected or not near you."); if (userid == playerid) return SendErrorMessage(playerid, "You can't show your licenses to yourself."); SendClientMessage(userid, COLOR_GREY, "-----------------------------------------------------------"); if (Inventory_HasItem(playerid, "Driving License")) SendClientMessageEx(userid, COLOR_WHITE, "* Driving License {33CC33}(Passed)"); else SendClientMessageEx(userid, COLOR_WHITE, "* Driving License {AA3333}(Not Passed)"); if (Inventory_HasItem(playerid, "Weapon License")) SendClientMessageEx(userid, COLOR_WHITE, "* Weapon License {33CC33}(Passed)"); else SendClientMessageEx(userid, COLOR_WHITE, "* Weapon License {AA3333}(Not Passed)"); SendClientMessage(userid, COLOR_GREY, "-----------------------------------------------------------"); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out their licenses and shows them to %s.", ReturnName(playerid, 0), ReturnName(userid, 0)); return 1; } CMD:deletechar(playerid, params[]) { static query[128]; if (PlayerData[playerid][pAdmin] < 6) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (isnull(params) || strlen(params) > 24) return SendSyntaxMessage(playerid, "/deletechar [character name]"); if (!IsValidPlayerName(params)) return SendErrorMessage(playerid, "You have specified an invalid name format."); format(query, sizeof(query), "SELECT `ID`, `Admin` FROM `characters` WHERE `Character` = '%s'", SQL_ReturnEscaped(params)); mysql_tquery(g_iHandle, query, "OnDeleteCharacter", "ds", playerid, params); return 1; } CMD:stoploading(playerid, params[]) { if (PlayerData[playerid][pJob] != JOB_COURIER) return SendErrorMessage(playerid, "You don't have the appropriate job."); if (!PlayerData[playerid][pLoading] && !PlayerData[playerid][pLoadType]) return SendErrorMessage(playerid, "You are not loading any crates right now."); PlayerData[playerid][pLoading] = 0; PlayerData[playerid][pLoadType] = 0; PlayerData[playerid][pLoadCrate] = 0; RemovePlayerAttachedObject(playerid, 4); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE); DisablePlayerCheckpoint(playerid); SendServerMessage(playerid, "You are no longer loading crates."); return 1; } CMD:startdelivery(playerid, params[]) { new id = Job_NearestPoint(playerid); if (PlayerData[playerid][pJob] != JOB_COURIER) return SendErrorMessage(playerid, "You don't have the appropriate job."); if (id == -1 || JobData[id][jobType] != JOB_COURIER) return SendErrorMessage(playerid, "You are not in range of any loading point."); if (PlayerData[playerid][pLoadType] > 0) return SendErrorMessage(playerid, "You have already started a delivery."); if (IsPlayerInAnyVehicle(playerid)) return SendErrorMessage(playerid, "You must exit the vehicle first."); Dialog_Show(playerid, StartDelivery, DIALOG_STYLE_LIST, "Select Type", "Retail Supplies\nAmmunition\nClothing\nFood Supplies\nGasoline\nFurniture", "Select", "Cancel"); return 1; } CMD:bshipment(playerid, params[]) { new id = (Business_Inside(playerid) == -1) ? (Business_Nearest(playerid)) : (Business_Inside(playerid)); if (id == -1 || !Business_IsOwner(playerid, id)) return SendErrorMessage(playerid, "You are not in range of your business."); if (BusinessData[id][bizType] == 5) return SendErrorMessage(playerid, "You can't request shipment for this business type."); if (BusinessData[id][bizShipment]) { foreach (new i : Player) if (PlayerData[i][pShipment] == id) { CancelShipment(i); SendServerMessage(i, "The shipment request has been cancelled."); } BusinessData[id][bizShipment] = 0; Business_Save(id); SendServerMessage(playerid, "Your business is no longer requesting a shipment."); SendJobMessage(1, COLOR_YELLOW, "** %s is no longer requesting a shipment for %s. **", ReturnName(playerid, 0), BusinessData[id][bizName]); } else { if (BusinessData[id][bizDeliver][0] == 0.0 && BusinessData[id][bizDeliver][1] == 0.0 && BusinessData[id][bizDeliver][2] == 0.0) return SendErrorMessage(playerid, "The delivery point for your business is not set."); BusinessData[id][bizShipment] = 1; Business_Save(id); SendServerMessage(playerid, "Your have requested a shipment for your business."); SendJobMessage(1, COLOR_YELLOW, "** %s is requesting a shipment for %s (/shipments to accept). **", ReturnName(playerid, 0), BusinessData[id][bizName]); } return 1; } CMD:cancelshipment(playerid, params[]) { if (PlayerData[playerid][pJob] != JOB_COURIER) return SendErrorMessage(playerid, "You don't have the appropriate job."); if (PlayerData[playerid][pShipment] == -1) return SendErrorMessage(playerid, "You haven't accepted any shipments yet."); CancelShipment(playerid); SendServerMessage(playerid, "You have cancelled the accepted shipment."); return 1; } CMD:shipments(playerid, params[]) { if (PlayerData[playerid][pJob] != JOB_COURIER) return SendErrorMessage(playerid, "You don't have the appropriate job."); if (PlayerData[playerid][pShipment] != -1) return SendErrorMessage(playerid, "You have already accepted a shipment (type /cancelshipment to cancel it)."); ShowShipments(playerid); return 1; } CMD:usemag(playerid, params[]) { new weaponid = PlayerData[playerid][pHoldWeapon]; if (!weaponid) return SendErrorMessage(playerid, "You are not holding any empty weapon."); if (!Inventory_HasItem(playerid, "Magazine")) return SendErrorMessage(playerid, "You don't have any weapon magazines."); if (PlayerData[playerid][pUsedMagazine]) return SendErrorMessage(playerid, "You have already used a magazine on this weapon."); switch (weaponid) { case 22: { PlayerPlaySoundEx(playerid, 1131); PlayerData[playerid][pUsedMagazine] = 1; Inventory_Remove(playerid, "Magazine"); PlayReloadAnimation(playerid, 24); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s attaches a magazine to the weapon.", ReturnName(playerid, 0)); ShowPlayerFooter(playerid, "Press ~y~'H'~w~ to load the weapon."); } case 24: { PlayerPlaySoundEx(playerid, 1131); PlayerData[playerid][pUsedMagazine] = 1; Inventory_Remove(playerid, "Magazine"); PlayReloadAnimation(playerid, 24); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s attaches a magazine to the weapon.", ReturnName(playerid, 0)); ShowPlayerFooter(playerid, "Press ~y~'H'~w~ to load the weapon."); } case 25: { PlayerPlaySoundEx(playerid, 1131); PlayerData[playerid][pUsedMagazine] = 1; Inventory_Remove(playerid, "Magazine"); PlayReloadAnimation(playerid, 24); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s inserts some shells into the weapon.", ReturnName(playerid, 0)); ShowPlayerFooter(playerid, "Press ~y~'H'~w~ to load the weapon."); } case 27: { PlayerPlaySoundEx(playerid, 1131); PlayerData[playerid][pUsedMagazine] = 1; Inventory_Remove(playerid, "Magazine"); PlayReloadAnimation(playerid, 24); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s inserts some shells into the weapon.", ReturnName(playerid, 0)); ShowPlayerFooter(playerid, "Press ~y~'H'~w~ to load the weapon."); } case 28: { PlayerPlaySoundEx(playerid, 1131); PlayerData[playerid][pUsedMagazine] = 1; Inventory_Remove(playerid, "Magazine"); PlayReloadAnimation(playerid, 24); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s attaches a magazine to the weapon.", ReturnName(playerid, 0)); ShowPlayerFooter(playerid, "Press ~y~'H'~w~ to load the weapon."); } case 29: { PlayerPlaySoundEx(playerid, 1131); PlayerData[playerid][pUsedMagazine] = 1; Inventory_Remove(playerid, "Magazine"); PlayReloadAnimation(playerid, 24); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s attaches a magazine to the weapon.", ReturnName(playerid, 0)); ShowPlayerFooter(playerid, "Press ~y~'H'~w~ to load the weapon."); } case 32: { PlayerPlaySoundEx(playerid, 1131); PlayerData[playerid][pUsedMagazine] = 1; Inventory_Remove(playerid, "Magazine"); PlayReloadAnimation(playerid, 24); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s attaches a magazine to the weapon.", ReturnName(playerid, 0)); ShowPlayerFooter(playerid, "Press ~y~'H'~w~ to load the weapon."); } case 30: { PlayerPlaySoundEx(playerid, 1131); PlayerData[playerid][pUsedMagazine] = 1; Inventory_Remove(playerid, "Magazine"); PlayReloadAnimation(playerid, 24); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s attaches a magazine to the weapon.", ReturnName(playerid, 0)); ShowPlayerFooter(playerid, "Press ~y~'H'~w~ to load the weapon."); } case 33: { PlayerPlaySoundEx(playerid, 1131); PlayerData[playerid][pUsedMagazine] = 1; Inventory_Remove(playerid, "Magazine"); PlayReloadAnimation(playerid, 24); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s attaches a magazine to the weapon.", ReturnName(playerid, 0)); ShowPlayerFooter(playerid, "Press ~y~'H'~w~ to load the weapon."); } case 34: { PlayerPlaySoundEx(playerid, 1131); PlayerData[playerid][pUsedMagazine] = 1; Inventory_Remove(playerid, "Magazine"); PlayReloadAnimation(playerid, 24); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s attaches a magazine to the weapon.", ReturnName(playerid, 0)); ShowPlayerFooter(playerid, "Press ~y~'H'~w~ to load the weapon."); } default: return SendErrorMessage(playerid, "You can't attach a magazine to this weapon."); } return 1; } CMD:clearinventory(playerid, params[]) { static userid; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/clearinventory [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); Inventory_Clear(userid); SendAdminAction(playerid, "You have cleared %s's inventory from all items.", ReturnName(userid, 0)); SendAdminAction(userid, "%s has cleared your inventory from all items.", ReturnName(playerid, 0)); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has cleared %s's inventory.", ReturnName(playerid, 0), ReturnName(userid, 0)); return 1; } CMD:tasks(playerid, params[]) { if (!IsTaskActive(playerid)) return 1; new string[128]; if (!PlayerData[playerid][pBankTask]) strcat(string, "Visit Bank (pending)\n"); if (!PlayerData[playerid][pStoreTask]) strcat(string, "Visit Store (pending)\n"); if (!PlayerData[playerid][pTestTask]) strcat(string, "Visit DMV (pending)\n"); Dialog_Show(playerid, NewTasks, DIALOG_STYLE_LIST, "Task List", string, "Select", "Cancel"); return 1; } CMD:warnings(playerid, params[]) { SendClientMessage(playerid, COLOR_GREY, "-----------------------------------------------------------"); SendClientMessageEx(playerid, COLOR_LIGHTRED, "Warnings (%d/3)", PlayerData[playerid][pWarnings]); if (PlayerData[playerid][pWarnings] >= 1 && strlen(PlayerData[playerid][pWarn1])) SendClientMessageEx(playerid, COLOR_WHITE, "* 1st Warning: \"%s\"", PlayerData[playerid][pWarn1]); if (PlayerData[playerid][pWarnings] >= 2 && strlen(PlayerData[playerid][pWarn2])) SendClientMessageEx(playerid, COLOR_WHITE, "* 2nd Warning: \"%s\"", PlayerData[playerid][pWarn2]); SendClientMessage(playerid, COLOR_GREY, "-----------------------------------------------------------"); return 1; } CMD:listwarns(playerid, params[]) { static userid; if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/listwarns [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); SendClientMessage(playerid, COLOR_GREY, "-----------------------------------------------------------"); SendClientMessageEx(playerid, COLOR_LIGHTRED, "%s's Warnings (%d/3)", ReturnName(userid, 0), PlayerData[userid][pWarnings]); if (PlayerData[userid][pWarnings] >= 1 && strlen(PlayerData[userid][pWarn1])) SendClientMessageEx(playerid, COLOR_WHITE, "* 1st Warning: \"%s\"", PlayerData[userid][pWarn1]); if (PlayerData[userid][pWarnings] >= 2 && strlen(PlayerData[userid][pWarn2])) SendClientMessageEx(playerid, COLOR_WHITE, "* 2nd Warning: \"%s\"", PlayerData[userid][pWarn2]); SendClientMessage(playerid, COLOR_GREY, "-----------------------------------------------------------"); return 1; } CMD:warn(playerid, params[]) { static userid, reason[32]; if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "us[32]", userid, reason)) return SendSyntaxMessage(playerid, "/warn [playerid/name] [reason]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (PlayerData[userid][pAdmin] > PlayerData[playerid][pAdmin]) return SendErrorMessage(playerid, "The specified player has higher authority."); switch (++ PlayerData[userid][pWarnings]) { case 1: { format(PlayerData[userid][pWarn1], 32, reason); SendAdminAction(userid, "%s has warned you for \"%s\" (first warning).", ReturnName(playerid, 0), reason); SendAdminAction(playerid, "You have warned %s for \"%s\" (first warning).", ReturnName(userid, 0), reason); } case 2: { format(PlayerData[userid][pWarn2], 32, reason); SendAdminAction(userid, "%s has warned you for \"%s\" (second warning).", ReturnName(playerid, 0), reason); SendAdminAction(playerid, "You have warned %s for \"%s\" (second warning).", ReturnName(userid, 0), reason); } default: { ResetWarnings(userid); SendAdminAction(userid, "You've been banned for exceeding your warnings (\"%s\").", reason); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s was banned for 3 warnings by %s, reason: %s", ReturnName(userid, 0), ReturnName(playerid, 0), reason); Blacklist_Add(PlayerData[userid][pIP], PlayerData[userid][pUsername], PlayerData[playerid][pUsername], reason); KickEx(userid); } } Log_Write("logs/warn_log.txt", "[%s] %s has warned %s for %s.", ReturnDate(), ReturnName(playerid, 0), ReturnName(userid, 0), reason); return 1; } CMD:clearwarns(playerid, params[]) { static userid; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/clearwarns [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); ResetWarnings(userid); SendAdminAction(playerid, "You have cleared %s's warnings.", ReturnName(userid, 0)); SendAdminAction(userid, "%s has cleared your warnings.", ReturnName(playerid, 0)); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has cleared %s's warnings.", ReturnName(playerid, 0), ReturnName(userid, 0)); return 1; } CMD:sorting(playerid, params[]) { new id = -1; if (PlayerData[playerid][pJob] != JOB_SORTER) return SendErrorMessage(playerid, "You don't have the appropriate job."); if ((id = Job_NearestPoint(playerid)) == -1 || JobData[id][jobType] != JOB_SORTER) return SendErrorMessage(playerid, "You are not in range of the sorting facility."); switch (PlayerData[playerid][pSorting]) { case -1: { PlayerData[playerid][pSorting] = id; PlayerData[playerid][pSortCrate] = 1; SendServerMessage(playerid, "You have started sorting. Please make your way to the marker."); SetPlayerAttachedObject(playerid, 4, 1220, 5, 0.137832, 0.176979, 0.151424, 96.305931, 185.363006, 20.328088, 0.699999, 0.800000, 0.699999); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CARRY); ApplyAnimation(playerid, "CARRY", "liftup", 4.1, 0, 0, 0, 0, 0, 1); SetPlayerCheckpoint(playerid, JobData[id][jobDeliver][0], JobData[id][jobDeliver][1], JobData[id][jobDeliver][2], 1.0); } default: { PlayerData[playerid][pSorting] = -1; if (PlayerData[playerid][pSortCrate] != 0) { PlayerData[playerid][pSortCrate] = 0; RemovePlayerAttachedObject(playerid, 4); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE); } DisablePlayerCheckpoint(playerid); SendServerMessage(playerid, "You have finished sorting packages."); } } return 1; } CMD:passwep(playerid, params[]) { new weaponid = GetWeapon(playerid), ammo = GetPlayerAmmo(playerid), userid; if (!weaponid) return SendErrorMessage(playerid, "You are not holding any weapon to pass."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/passwep [playerid/name]"); if (userid == INVALID_PLAYER_ID || !IsPlayerNearPlayer(playerid, userid, 5.0)) return SendErrorMessage(playerid, "That player is disconnected or not near you."); if (userid == playerid) return SendErrorMessage(playerid, "You can't give yourself a weapon."); if (PlayerData[userid][pGuns][g_aWeaponSlots[weaponid]] != 0) return SendErrorMessage(playerid, "That player has a weapon in the same slot already."); ResetWeapon(playerid, weaponid); GiveWeaponToPlayer(userid, weaponid, ammo); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has passed their %s to %s.", ReturnName(playerid, 0), ReturnWeaponName(weaponid), ReturnName(userid, 0)); Log_Write("logs/give_log.txt", "[%s] %s (%s) has given a %s with %d ammo to %s (%s).", ReturnDate(), ReturnName(playerid, 0), PlayerData[playerid][pIP], ReturnWeaponName(weaponid), ammo, ReturnName(userid, 0), PlayerData[userid][pIP]); return 1; } CMD:vw(playerid, params[]) { SendClientMessageEx(playerid, COLOR_CLIENT, "Current Virtual World: %d", GetPlayerVirtualWorld(playerid)); return 1; } CMD:toghud(playerid, params[]) { switch (PlayerData[playerid][pHUD]) { case 0: { PlayerData[playerid][pDisableSpeedo] = 0; PlayerData[playerid][pHUD] = 1; ShowHungerTextdraw(playerid, 1); SendServerMessage(playerid, "You have enabled the HUD."); TextDrawShowForPlayer(playerid, gServerTextdraws[0]); TextDrawShowForPlayer(playerid, gServerTextdraws[1]); if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER && IsSpeedoVehicle(GetPlayerVehicleID(playerid))) { for (new i = 34; i < 39; i ++) { PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][i]); } } } case 1: { PlayerData[playerid][pDisableSpeedo] = 1; PlayerData[playerid][pHUD] = 0; ShowHungerTextdraw(playerid, 0); SendServerMessage(playerid, "You have disabled the HUD."); TextDrawHideForPlayer(playerid, gServerTextdraws[0]); TextDrawHideForPlayer(playerid, gServerTextdraws[1]); for (new i = 34; i < 39; i ++) { PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][i]); } } } return 1; } CMD:tduty(playerid, params[]) { if (!PlayerData[playerid][pTester]) return SendErrorMessage(playerid, "You are not a tester."); if (!PlayerData[playerid][pTesterDuty]) { SetPlayerColor(playerid, 0xFF634700); PlayerData[playerid][pTesterDuty] = 1; SendClientMessageToAllEx(COLOR_LIGHTRED, "** %s is now on duty as a tester (/seekhelp for help).", ReturnName(playerid, 0)); } else { SetPlayerColor(playerid, DEFAULT_COLOR); PlayerData[playerid][pTesterDuty] = 0; SendServerMessage(playerid, "You are no longer on tester duty."); } return 1; } CMD:ah(playerid, params[]) { new userid; if (!PlayerData[playerid][pTester]) return SendErrorMessage(playerid, "You are not a tester."); if (!PlayerData[playerid][pTesterDuty]) return SendErrorMessage(playerid, "You must be on tester duty to use this."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/ah [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (!PlayerData[userid][pSeekHelp]) return SendErrorMessage(playerid, "That player hasn't requested any help."); PlayerData[userid][pSeekHelp] = 0; SendServerMessage(userid, "%s has accepted your help request.", ReturnName(playerid, 0)); SendTesterMessage(COLOR_LIGHTRED, "[TESTER]: %s has accepted %s's help request.", ReturnName(playerid, 0), ReturnName(userid, 0)); return 1; } CMD:dh(playerid, params[]) { new userid; if (!PlayerData[playerid][pTester]) return SendErrorMessage(playerid, "You are not a tester."); if (!PlayerData[playerid][pTesterDuty]) return SendErrorMessage(playerid, "You must be on tester duty to use this."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/dh [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "You have specified an invalid player."); if (!PlayerData[userid][pSeekHelp]) return SendErrorMessage(playerid, "That player hasn't requested any help."); PlayerData[userid][pSeekHelp] = 0; SendServerMessage(userid, "%s has denied your help request.", ReturnName(playerid, 0)); SendTesterMessage(COLOR_LIGHTRED, "[TESTER]: %s has denied %s's help request.", ReturnName(playerid, 0), ReturnName(userid, 0)); return 1; } CMD:time(playerid, params[]) { static string[128], month[12], date[6]; getdate(date[2], date[1], date[0]); gettime(date[3], date[4], date[5]); switch (date[1]) { case 1: month = "January"; case 2: month = "February"; case 3: month = "March"; case 4: month = "April"; case 5: month = "May"; case 6: month = "June"; case 7: month = "July"; case 8: month = "August"; case 9: month = "September"; case 10: month = "October"; case 11: month = "November"; case 12: month = "December"; } format(string, sizeof(string), "%d/60 minutes until PayDay.",PlayerData[playerid][pMinutes]); SendClientMessage(playerid, COLOR_YELLOW, string); format(string, sizeof(string), "~g~%s %02d %d~n~~b~%02d:%02d:%02d", month, date[0], date[2], date[3], date[4], date[5]); GameTextForPlayer(playerid, string, 6000, 1); return 1; } CMD:healall(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); foreach (new i : Player) { SetPlayerHealth(i, 100.0); } SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has healed all players online.", ReturnName(playerid, 0)); return 1; } CMD:saveall(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); foreach (new i : Player) { SQL_SaveCharacter(i); } SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has saved all players accounts.", ReturnName(playerid, 0)); return 1; } CMD:whisper(playerid, params[]) { new userid, text[128]; if (sscanf(params, "us[128]", userid, text)) return SendSyntaxMessage(playerid, "/(w)hisper [playerid/name] [text]"); if (userid == INVALID_PLAYER_ID || !IsPlayerNearPlayer(playerid, userid, 5.0)) return SendErrorMessage(playerid, "That player is disconnected or not near you."); if (userid == playerid) return SendErrorMessage(playerid, "You can't whisper yourself."); if (strlen(text) > 64) { SendClientMessageEx(userid, COLOR_YELLOW, "** Whisper from %s (%d): %.64s", ReturnName(playerid, 0), playerid, text); SendClientMessageEx(userid, COLOR_YELLOW, "...%s **", text[64]); SendClientMessageEx(playerid, COLOR_YELLOW, "** Whisper to %s (%d): %.64s", ReturnName(userid, 0), userid, text); SendClientMessageEx(playerid, COLOR_YELLOW, "...%s **", text[64]); } else { SendClientMessageEx(userid, COLOR_YELLOW, "** Whisper from %s (%d): %s **", ReturnName(playerid, 0), playerid, text); SendClientMessageEx(playerid, COLOR_YELLOW, "** Whisper to %s (%d): %s **", ReturnName(userid, 0), userid, text); } SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s mutters something in %s's ear.", ReturnName(playerid, 0), ReturnName(userid, 0)); return 1; } CMD:mask(playerid, params[]) { if (!Inventory_HasItem(playerid, "Mask")) return SendErrorMessage(playerid, "You don't have any mask."); switch (PlayerData[playerid][pMaskOn]) { case 0: { SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out a mask and puts it on.", ReturnName(playerid, 0)); PlayerData[playerid][pMaskOn] = 1; } case 1: { PlayerData[playerid][pMaskOn] = 0; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes their mask off and puts it away.", ReturnName(playerid, 0)); } } return 1; } CMD:masked(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You don't have permission to use this command."); static name[24]; SendClientMessage(playerid, COLOR_GREY, "-----------------------------------------------------------"); foreach (new i : Player) if (PlayerData[i][pMaskOn]) { GetPlayerName(i, name, sizeof(name)); SendClientMessageEx(playerid, COLOR_WHITE, "* %s (#%d)", name, PlayerData[i][pMaskID]); } SendClientMessage(playerid, COLOR_GREY, "-----------------------------------------------------------"); return 1; } CMD:listguns(playerid, params[]) { new userid; if (PlayerData[playerid][pAdmin] < 2) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/listguns [playerid/name]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "The specified player is disconnected."); new weaponid, ammo; SendClientMessage(playerid, COLOR_GREY, "-----------------------------------------------------------"); SendClientMessageEx(playerid, COLOR_LIGHTRED, "%s's Weapons:", ReturnName(userid, 0)); for (new i = 0; i < 13; i ++) { GetPlayerWeaponData(userid, i, weaponid, ammo); if (weaponid > 0) SendClientMessageEx(playerid, COLOR_WHITE, "* %s (%d ammo)", ReturnWeaponName(weaponid), ammo); } SendClientMessage(playerid, COLOR_GREY, "-----------------------------------------------------------"); return 1; } CMD:siren(playerid, params[]) { if (GetFactionType(playerid) != FACTION_POLICE) return SendErrorMessage(playerid, "You are not a police officer."); new vehicleid = GetPlayerVehicleID(playerid); if (!IsPlayerInAnyVehicle(playerid)) return SendErrorMessage(playerid, "You must be inside a vehicle."); switch (CoreVehicles[vehicleid][vehSirenOn]) { case 0: { static Float:fSize[3], Float:fSeat[3]; GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_SIZE, fSize[0], fSize[1], fSize[2]); // need height (z) GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_FRONTSEAT, fSeat[0], fSeat[1], fSeat[2]); // need pos (x, y) CoreVehicles[vehicleid][vehSirenOn] = 1; CoreVehicles[vehicleid][vehSirenObject] = CreateDynamicObject(18646, 0.0, 0.0, 1000.0, 0.0, 0.0, 0.0); AttachDynamicObjectToVehicle(CoreVehicles[vehicleid][vehSirenObject], vehicleid, -fSeat[0], fSeat[1], fSize[2] / 2.0, 0.0, 0.0, 0.0); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s attaches a portable siren to the vehicle.", ReturnName(playerid, 0)); } case 1: { CoreVehicles[vehicleid][vehSirenOn] = 0; DestroyDynamicObject(CoreVehicles[vehicleid][vehSirenObject]); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s detaches a portable siren from the vehicle.", ReturnName(playerid, 0)); } } return 1; } CMD:setinventory(playerid, params[]) { static userid, capacity; if (PlayerData[playerid][pAdmin] < 4) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "ud", userid, capacity)) return SendSyntaxMessage(playerid, "/setinventory [playerid/name] [amount]"); if (userid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "The specified player is disconnected."); if (capacity < 1 || capacity > 120) return SendErrorMessage(playerid, "The specified capacity can't exceed 120 items."); PlayerData[userid][pCapacity] = 120; SendServerMessage(playerid, "You have set %s's inventory capacity to %d items.", ReturnName(userid, 0), capacity); SendServerMessage(userid, "%s has set your inventory capacity to %d items.", ReturnName(playerid, 0), capacity); return 1; } CMD:breakcuffs(playerid, params[]) { static userid; if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/breakcuffs [playerid/name]"); if (!Inventory_HasItem(playerid, "Crowbar")) return SendErrorMessage(playerid, "You don't have a crowbar."); if (userid == INVALID_PLAYER_ID || !IsPlayerNearPlayer(playerid, userid, 6.0)) return SendErrorMessage(playerid, "The specified player is disconnected or not near you."); if (!PlayerData[userid][pCuffed]) return SendErrorMessage(playerid, "The specified player is not cuffed."); if (userid == playerid) return SendErrorMessage(playerid, "You can't pick your own handcuffs."); SetTimerEx("BreakCuffs", 3000, false, "dd", playerid, userid); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s attempts to pick the cuffs with a crowbar.", ReturnName(playerid, 0)); return 1; } CMD:dice(playerid, params[]) { new number = random(6) + 1; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s rolls a dice landing on the number %d.", ReturnName(playerid, 0), number); return 1; } CMD:shakehand(playerid, params[]) { static userid, type; if (sscanf(params, "ud", userid, type)) return SendSyntaxMessage(playerid, "/shakehand [playerid/name] [type]"); if (userid == INVALID_PLAYER_ID || !IsPlayerNearPlayer(playerid, userid, 6.0)) return SendErrorMessage(playerid, "The specified player is disconnected or not near you."); if (userid == playerid) return SendErrorMessage(playerid, "You cannot shake your own hand."); if (type < 1 || type > 6) return SendErrorMessage(playerid, "You must specify a type from 1 to 6."); PlayerData[userid][pShakeOffer] = playerid; PlayerData[userid][pShakeType] = type; SendServerMessage(userid, "%s has offered to shake your hand (type \"/approve greet\").", ReturnName(playerid, 0)); SendServerMessage(playerid, "You have offered to shake %s's hand.", ReturnName(userid, 0)); return 1; } CMD:frisk(playerid, params[]) { static userid; if (sscanf(params, "u", userid)) return SendSyntaxMessage(playerid, "/frisk [playerid/name]"); if (userid == INVALID_PLAYER_ID || !IsPlayerNearPlayer(playerid, userid, 6.0)) return SendErrorMessage(playerid, "The specified player is disconnected or not near you."); if (userid == playerid) return SendErrorMessage(playerid, "You cannot frisk yourself."); PlayerData[userid][pFriskOffer] = playerid; SendServerMessage(userid, "%s has offered to frisk you (type \"/approve frisk\").", ReturnName(playerid, 0)); SendServerMessage(playerid, "You have offered to frisk %s.", ReturnName(userid, 0)); return 1; } CMD:setradio(playerid, params[]) { new vehicleid = GetPlayerVehicleID(playerid); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendErrorMessage(playerid, "You are not driving any vehicle."); if (!IsEngineVehicle(vehicleid)) return SendErrorMessage(playerid, "This vehicle doesn't have any radio."); Dialog_Show(playerid, Radio, DIALOG_STYLE_LIST, "Radio Channels", "Cultural\nOldies\nOther\nPop\nRhythm & Blues\nRock\nTalk\nUrban\nElectric\nTurn Radio Off", "Select", "Cancel"); return 1; } CMD:creategraffiti(playerid, params[]) { static id = -1, Float:x, Float:y, Float:z, Float:angle; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (GetPlayerInterior(playerid) > 0 || GetPlayerVirtualWorld(playerid) > 0) return SendErrorMessage(playerid, "You can only create graffiti points outside interiors."); GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, angle); id = Graffiti_Create(x, y, z, angle); if (id == -1) return SendErrorMessage(playerid, "The server has reached the limit for graffiti points."); EditDynamicObject(playerid, GraffitiData[id][graffitiObject]); PlayerData[playerid][pEditGraffiti] = id; SendServerMessage(playerid, "You have successfully created graffiti ID: %d.", id); return 1; } CMD:destroygraffiti(playerid, params[]) { static id = 0; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", id)) return SendSyntaxMessage(playerid, "/destroygraffiti [graffiti id]"); if ((id < 0 || id >= MAX_GRAFFITI_POINTS) || !GraffitiData[id][graffitiExists]) return SendErrorMessage(playerid, "You have specified an invalid graffiti ID."); Graffiti_Delete(id); SendServerMessage(playerid, "You have successfully destroyed graffiti ID: %d.", id); return 1; } CMD:fspray(playerid, params[]) { new id = Graffiti_Nearest(playerid); if (id == -1) return SendErrorMessage(playerid, "You are not near any graffiti point."); if (GetFactionType(playerid) != FACTION_GANG) return SendErrorMessage(playerid, "You are not a member of an illegal faction."); Dialog_Show(playerid, GraffitiColor, DIALOG_STYLE_LIST, "Select Color", "{FFFFFF}White\n{FF0000}Red\n{FFFF00}Yellow\n{33CC33}Green\n{33CCFF}Light Blue\n{FFA500}Orange\n{1394BF}Dark Blue", "Select", "Cancel"); return 1; } CMD:afire(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); static Float:fX, Float:fY, Float:fZ; RandomFire(); GetDynamicObjectPos(g_aFireObjects[0], fX, fY, fZ); SendServerMessage(playerid, "You have created a random fire (%s).", GetLocation(fX, fY, fZ)); return 1; } CMD:akillfire(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 3) return SendErrorMessage(playerid, "You don't have permission to use this command."); for (new i = 0; i < sizeof(g_aFireObjects); i ++) { g_aFireExtinguished[i] = 0; if (IsValidDynamicObject(g_aFireObjects[i])) DestroyDynamicObject(g_aFireObjects[i]); } SendServerMessage(playerid, "You have killed the fire."); return 1; } CMD:ahide(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 4) return SendErrorMessage(playerid, "You don't have permission to use this command."); switch (PlayerData[playerid][pAdminHide]) { case 0: { PlayerData[playerid][pAdminHide] = 1; SendServerMessage(playerid, "You are now hidden from the admin list."); } case 1: { PlayerData[playerid][pAdminHide] = 0; SendServerMessage(playerid, "You are now visible in the admin list."); } } return 1; } CMD:createdetector(playerid, params[]) { if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); static query[255]; for (new i = 0; i < MAX_METAL_DETECTORS; i ++) if (!MetalDetectors[i][detectorExists]) { MetalDetectors[i][detectorExists] = 1; MetalDetectors[i][detectorInterior] = GetPlayerInterior(playerid); MetalDetectors[i][detectorWorld] = GetPlayerVirtualWorld(playerid); GetPlayerPos(playerid, MetalDetectors[i][detectorPos][0], MetalDetectors[i][detectorPos][1], MetalDetectors[i][detectorPos][2]); GetPlayerFacingAngle(playerid, MetalDetectors[i][detectorPos][3]); format(query, sizeof(query), "INSERT INTO `detectors` (`detectorX`, `detectorY`, `detectorZ`, `detectorAngle`, `detectorInterior`, `detectorWorld`) VALUES('%.4f', '%.4f', '%.4f', '%.4f', '%d', '%d')", MetalDetectors[i][detectorPos][0], MetalDetectors[i][detectorPos][1], MetalDetectors[i][detectorPos][2], MetalDetectors[i][detectorPos][3], MetalDetectors[i][detectorInterior], MetalDetectors[i][detectorWorld]); mysql_tquery(g_iHandle, query, "OnDetectorCreated", "d", i); Detector_Refresh(i); SendServerMessage(playerid, "You have created metal detector ID: %d.", i); return 1; } SendErrorMessage(playerid, "The server has reached a limit for metal detectors."); return 1; } CMD:destroydetector(playerid, params[]) { static id = 0; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", id)) return SendSyntaxMessage(playerid, "/destroydetector [detector id]"); if ((id < 0 || id >= MAX_METAL_DETECTORS) || !MetalDetectors[id][detectorExists]) return SendErrorMessage(playerid, "You have specified an invalid detector ID."); Detector_Delete(id); SendServerMessage(playerid, "You have successfully destroyed detector ID: %d.", id); return 1; } CMD:picklock(playerid, params[]) { new id = Car_Nearest(playerid); if (!Inventory_HasItem(playerid, "Crowbar")) return SendErrorMessage(playerid, "You don't have a crowbar."); if (id == -1) return SendErrorMessage(playerid, "You are not in range of any vehicle."); if (!CarData[id][carLocked]) return SendErrorMessage(playerid, "This vehicle is not locked."); PlayerData[playerid][pPicking] = 1; PlayerData[playerid][pPickCar] = id; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out a crowbar and picks the lock.", ReturnName(playerid, 0)); SendServerMessage(playerid, "Please wait 60 seconds while the lock is picked."); return 1; } CMD:destroyplant(playerid, params[]) { static id = 0; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", id)) return SendSyntaxMessage(playerid, "/destroyplant [plant id]"); if ((id < 0 || id >= MAX_DRUG_PLANTS) || !PlantData[id][plantExists]) return SendErrorMessage(playerid, "You have specified an invalid plant ID."); Plant_Delete(id); SendServerMessage(playerid, "You have successfully destroyed plant ID: %d.", id); return 1; } CMD:givecar(playerid, params[]) { static userid, model[32]; if (PlayerData[playerid][pAdmin] < 4) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "us[32]", userid, model)) return SendSyntaxMessage(playerid, "/givecar [playerid/name] [modelid/name]"); if (Car_GetCount(userid) >= MAX_OWNABLE_CARS) return SendErrorMessage(playerid, "This player already owns the maximum amount of cars."); if ((model[0] = GetVehicleModelByName(model)) == 0) return SendErrorMessage(playerid, "Invalid model ID."); static Float:x, Float:y, Float:z, Float:angle, id = -1; GetPlayerPos(userid, x, y, z); GetPlayerFacingAngle(userid, angle); id = Car_Create(PlayerData[userid][pID], model[0], x, y + 2, z + 1, angle, random(127), random(127), 0); if (id == -1) return SendErrorMessage(playerid, "The server has reached the limit for dynamic vehicles."); SendServerMessage(playerid, "You have created vehicle ID: %d for %s.", CarData[id][carVehicle], ReturnName(userid, 0)); return 1; } CMD:resetvw(playerid, params[]) { if (GetPlayerInterior(playerid) == 0 && GetPlayerVirtualWorld(playerid) > 0) { SetPlayerVirtualWorld(playerid, 0); SendServerMessage(playerid, "You have fixed your virtual world."); } else SendErrorMessage(playerid, "Your virtual world is not bugged right now."); return 1; } CMD:stopanim(playerid, params[]) { if (!AnimationCheck(playerid)) return SendErrorMessage(playerid, "You don't need to use this command right now."); ClearAnimations(playerid, 1); HidePlayerFooter(playerid); PlayerData[playerid][pLoopAnim] = 0; SendServerMessage(playerid, "You have stopped any animations."); return 1; } CMD:editbillboard(playerid, params[]) { static id, type[24], string[128]; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "ds[24]S()[128]", id, type, string)) { SendSyntaxMessage(playerid, "/editbillboard [id] [name]"); SendClientMessage(playerid, COLOR_YELLOW, "[NAMES]:{FFFFFF} location, name, price, message, owner, range"); return 1; } if ((id < 0 || id >= MAX_BILLBOARDS) || !BillBoardData[id][bbExists]) return SendErrorMessage(playerid, "You have specified an invalid business ID."); if (!strcmp(type, "location", true)) { GetPlayerPos(playerid, BillBoardData[id][bbPos][0], BillBoardData[id][bbPos][1], BillBoardData[id][bbPos][2]); Billboard_Refresh(id); Billboard_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the location of billboard ID: %d.", ReturnName(playerid, 0), id); } else if (!strcmp(type, "price", true)) { new price; if (sscanf(string, "d", price)) return SendSyntaxMessage(playerid, "/editbillboard [id] [price] [new price]"); BillBoardData[id][bbPrice] = price; Billboard_Refresh(id); Billboard_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the price of billboard ID: %d to %s.", ReturnName(playerid, 0), id, FormatNumber(price)); } else if (!strcmp(type, "name", true)) { new name[32]; if (sscanf(string, "s[32]", name)) return SendSyntaxMessage(playerid, "/editbillboard [id] [name] [new name]"); format(BillBoardData[id][bbName], 32, name); Billboard_Refresh(id); Billboard_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the name of billboard ID: %d to \"%s\".", ReturnName(playerid, 0), id, name); } else if (!strcmp(type, "message", true)) { new name[32]; if (sscanf(string, "s[230]", name)) return SendSyntaxMessage(playerid, "/editbillboard [id] [message] [new message] (Max Chars: 230)"); format(BillBoardData[id][bbMessage], 32, name); Billboard_Refresh(id); Billboard_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the message of billboard ID: %d to \"%s\".", ReturnName(playerid, 0), id, name); } else if (!strcmp(type, "owner", true)) { new giveplayerid; if (sscanf(string, "d", giveplayerid)) return SendSyntaxMessage(playerid, "/editbillboard [id] [(remove)owner] [playerid]"); if (giveplayerid == INVALID_PLAYER_ID) return SendErrorMessage(playerid, "That player is disconnected."); BillBoardData[id][bbOwner] = GetPlayerSQLID(giveplayerid); Billboard_Refresh(id); Billboard_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the owner of billboard ID: %d", ReturnName(playerid, 0), id); } else if (!strcmp(type, "removeowner", true)) { if (sscanf(string, "d")) return SendSyntaxMessage(playerid, "/editbillboard [id] [removeowner]"); BillBoardData[id][bbOwner] = 0; Billboard_Refresh(id); Billboard_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has removed the owner of billboard ID: %d", ReturnName(playerid, 0), id); } else if (!strcmp(type, "range", true)) { new range; if (sscanf(string, "d", range)) return SendSyntaxMessage(playerid, "/editbillboard [id] [range] [new range]"); if(range < 10) { SendErrorMessage(playerid, "Range can only be 10-200"); return 1; } if(range > 200) { SendErrorMessage(playerid, "Range can only be 10-200"); return 1; } BillBoardData[id][bbRange] = range; Billboard_Refresh(id); Billboard_Save(id); SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has adjusted the range of billboard ID: %d to %d.", ReturnName(playerid, 0), id, range); } return 1; } CMD:destroybillboard(playerid, params[]) { static id = 0; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); if (sscanf(params, "d", id)) return SendSyntaxMessage(playerid, "/destroybillboard [bb id]"); if ((id < 0 || id >= MAX_BILLBOARDS) || !BillBoardData[id][bbExists]) return SendErrorMessage(playerid, "You have specified an invalid billboard ID."); Billboard_Delete(id); SendServerMessage(playerid, "You have successfully destroyed billboard ID: %d.", id); return 1; } CMD:call(playerid, params[]) { if (!Inventory_HasItem(playerid, "Cellphone")) return SendErrorMessage(playerid, "You don't have a cellphone on you."); if (PlayerData[playerid][pPhoneOff]) return SendErrorMessage(playerid, "Your phone must be powered on."); if (PlayerData[playerid][pHospital] != -1 || PlayerData[playerid][pCuffed] || PlayerData[playerid][pInjured] || !IsPlayerSpawned(playerid)) return SendErrorMessage(playerid, "You can't use this command now."); static targetid, number; if (sscanf(params, "d", number)) return SendSyntaxMessage(playerid, "/call [phone number] (1222 for taxi, 911 for emergency, 222 for news, 223 for billboards)"); if (!number) return SendErrorMessage(playerid, "The specified phone number is not in service."); if (number == 911) { PlayerData[playerid][pEmergency] = 1; PlayerPlaySound(playerid, 3600, 0.0, 0.0, 0.0); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out their cellphone and places a call.", ReturnName(playerid, 0)); SendClientMessage(playerid, COLOR_LIGHTBLUE, "[OPERATOR]:{FFFFFF} Which service do you require: \"police\" or \"medics\"?"); } else if (number == 1222) { PlayerData[playerid][pTaxiCalled] = 1; PlayerPlaySound(playerid, 3600, 0.0, 0.0, 0.0); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out their cellphone and places a call.", ReturnName(playerid, 0)); SendClientMessage(playerid, COLOR_YELLOW, "[OPERATOR]:{FFFFFF} The taxi department has been notified of your call."); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s has hung up their cellphone.", ReturnName(playerid, 0)); SendJobMessage(3, COLOR_YELLOW, "** %s is requesting a taxi at %s (use /acceptcall to accept).", ReturnName(playerid, 0), GetPlayerLocation(playerid)); } else if (number == 222) { PlayerData[playerid][pPlaceAd] = 1; PlayerPlaySound(playerid, 3600, 0.0, 0.0, 0.0); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out their cellphone and places a call.", ReturnName(playerid, 0)); if (PlayerData[playerid][pPlayingHours] < 4) { SendClientMessage(playerid, COLOR_CYAN, "[OPERATOR]:{FFFFFF} Sorry, you must play 4 hours to place an advertisement."); cmd_hangup(playerid, "\1"); } else if (PlayerData[playerid][pAdTime] < 1) { SendClientMessage(playerid, COLOR_CYAN, "[OPERATOR]:{FFFFFF} Please say \"yes\" if you wish to advertise for $500."); } else { SendClientMessage(playerid, COLOR_CYAN, "[OPERATOR]:{FFFFFF} You've already advertised in the last 2 minutes. Please try again later."); cmd_hangup(playerid, "\1"); } } else if (number == 223) { PlayerPlaySound(playerid, 3600, 0.0, 0.0, 0.0); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out their cellphone and places a call.", ReturnName(playerid, 0)); if (PlayerData[playerid][pPlayingHours] < 4) { SendClientMessage(playerid, COLOR_CYAN, "[OPERATOR]:{FFFFFF} Sorry, you must play 4 hours to rent a billboard."); cmd_hangup(playerid, "\1"); } SendClientMessageEx(playerid, COLOR_YELLOW, "[PHONE]:{FFFFFF} Hello, this is the Los Santos Billboard Agency, please listen to the following choices!"); ViewBillboards(playerid); } else if ((targetid = GetNumberOwner(number)) != INVALID_PLAYER_ID) { if (targetid == playerid) return SendErrorMessage(playerid, "You can't call yourself!"); if (PlayerData[targetid][pPhoneOff]) return SendErrorMessage(playerid, "The recipient has their cellphone powered off."); PlayerData[targetid][pIncomingCall] = 1; PlayerData[playerid][pIncomingCall] = 1; PlayerData[targetid][pCallLine] = playerid; PlayerData[playerid][pCallLine] = targetid; SendClientMessageEx(playerid, COLOR_YELLOW, "[PHONE]:{FFFFFF} Attempting to dial #%d, please wait for an answer...", number); SendClientMessageEx(targetid, COLOR_YELLOW, "[PHONE]:{FFFFFF} Incoming call from #%d (type \"/answer\" to answer the phone).", PlayerData[playerid][pPhone]); PlayerPlaySound(playerid, 3600, 0.0, 0.0, 0.0); PlayerPlaySoundEx(targetid, 23000); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s takes out their cellphone and places a call.", ReturnName(playerid, 0)); } else { SendErrorMessage(playerid, "The specified phone number is not in service."); } return 1; } CMD:createbillboard(playerid, params[]) { static id = -1; if (PlayerData[playerid][pAdmin] < 5) return SendErrorMessage(playerid, "You don't have permission to use this command."); id = Billboard_Create(playerid, -1); if (id == -1) return SendErrorMessage(playerid, "The server has reached the limit for billboards."); SendServerMessage(playerid, "You have successfully created billboard ID: %d.", id); return 1; } CMD:billboards(playerid, params[]) { if(PlayerData[playerid][pAdmin] < 1) { SendErrorMessage(playerid, "You are not authorized to use this command"); return 1; } ViewBillboards(playerid); return 1; } CMD:mybillboard(playerid, params[]) { if(PlayerData[playerid][pOwnsBillboard] == -1) { SendErrorMessage(playerid, "You do not own a billboard"); return 1; } Dialog_Show(playerid, MyBillboardMenu, DIALOG_STYLE_LIST, "Manage Billboard", "Edit Message\nUnrent Billboard", "Proceed", "Cancel"); return 1; }