Helló
Szeretném a PPC_Housing-ba a ház szintek árát átirni de nem tudom hol keressem
// PPC Trucking házrendszer
//
// Készítette: PowerPC603
//
// A szkriptet ScreaM fordította a Magyar SA-MP Közösség számára!
//
// WWW.SAMPFORUM.HU
#pragma tabsize 0
#include <a_samp>
#include <zcmd>
#include <dutils>
#include <sscanf2>
#include <streamer>
#pragma unused ret_memcpy
#pragma unused strtok
// ******************************************************************************************************************************
// A beállítások módosíthatóak
// ******************************************************************************************************************************
// Set timer-delay for exiting houses (this timer freezes a player when he exits a house, this allows the game to load the environment
// before the player starts to fall, also the player\'s vehicles assigned to the house he exits from, are respawned by this timer)
new ExitHouseTimer = 1000;
// This allows you to toggle the red houses on the map (bought houses appear on the map as red house icons when this is set to \"true\")
// Setting this to \"false\" doesn\'t show a bought house on the map
new bool:ShowBoughtHouses = false;
// Setting this to \"true\" will load all vehicles assigned to houses when the filterscript loads
// Setting this to \"false\" will load the vehicles assigned to a house when the house-owner logs in (they\'ll also disappear when he logs out)
// Recommended setting for popular servers (with alot of players): \"false\"
// In popular servers, the amount of cars could go over the samp-limit (2000), bugging everything when all cars stay loaded
// even when the owner of the vehicle is offline
new bool:LoadCarsDuringFSInit = false;
// Setting this to \"true\" will set all houses to have insurance by default
// Seting this to \"false\" required players to buy insurance for their vehicles from within the house
// If players don\'t have insurance, their vehicle will be gone forever if it\'s destroyed
// If players have insurance, they will get their vehicle back when it\'s destroyed
new bool:AutomaticInsurance = true;
// Default max number of players is set to 500, re-define it to 50
#undef MAX_PLAYERS
#define MAX_PLAYERS 50
// Define housing parameters
#define MAX_HOUSES 2000 // Defines the maximum number of houses that can be created
#define MAX_HOUSESPERPLAYER 20 // Defines the maximum number of houses that any player can own (useable values: 1 to 20)
#define HouseUpgradePercent 100 // Defines the percentage for upgrading a house (house of 10m can be upgraded for 5m when set to 50)
#define ParkRange 150.0 // Defines the range for parking the vehicle around the house to which it belongs (default = 150m)
// Define path to house-files and player-files
#define HouseFile \"PPC_Housing/House%i.ini\"
// Define Dialogs
#define DialogHouseMenu 5001
#define DialogUpgradeHouse 5002
#define DialogGoHome 5003
#define DialogHouseNameChange 5004
#define DialogSellHouse 5005
#define DialogBuyCarClass 5006
#define DialogBuyCar 5007
#define DialogSellCar 5008
#define DialogBuyInsurance 5009
#define DialogGetCarSelectHouse 5010
#define DialogGetCarSelectCar 5011
// Define vehicle-classes
#define VClassBike 1
#define VClassBoat 2
#define VClassConvertible 3
#define VClassHelicopter 4
#define VClassIndustrial 5
#define VClassLowRider 6
#define VClassOffRoad 7
#define VClassPlane 8
#define VClassPublic 9
#define VClassRCVehicle 10
#define VClassSaloons 11
#define VClassSportCar 12
#define VClassStationCar 13
#define VClassTrailer 14
#define VClassUnique 15
// ******************************************************************************************************************************
// Enums and the array-setups that use them
// ******************************************************************************************************************************
// Setup a custom type that holds all data for houses
enum THouseData
{
PickupID, // Holds the pickup-id that is linked to this house
Text3D:DoorText, // Holds the reference to the 3DText above the house\'s pickup
MapIconID, // Holds the ID of the mapicon for the house
bool:Owned, // Holds true if the house is owned by somebody
Owner[24], // Holds the name of the owner of the house
HouseName[100], // Holds the name of the house (this will be displayed above the pickup near the house when it\'s owned)
Float:HouseX, // Holds the X-coordinate of the pickup for the house
Float:HouseY, // Holds the Y-coordinate of the pickup for the house
Float:HouseZ, // Holds the Z-coordinate of the pickup for the house
HouseLevel, // Holds the level of upgrades the house has, and defines which interior to use when you enter the house
HouseMaxLevel, // Holds the maximum level this house can be upgraded to
HousePrice, // Holds the price for buying the house, the same price applies when upgrading a house per level (multiplied by HouseUpgradePercent/100)
bool:HouseOpened, // Holds true if the house is open to the public (anyone can enter), false means: only the owner can enter it
bool:Insurance, // Holds \"true\" if the house has an insurance for the vehicles belonging to this house
VehicleIDs[10], // Holds the vehicle-id\'s of the vehicles linked to this house (max 10 vehicles per house)
bool:StaticHouse, // Holds \"true\" if the house is static (cannot be upgraded and has a fixed interior)
CarSlots // Holds the amount of carslots available
}
// Holds the data for all houses
new AHouseData[MAX_HOUSES][THouseData];
// Setup a custom type to hold all data about a vehicle
enum TVehicleData
{
BelongsToHouse, // Holds the HouseID to which this vehicle belongs
bool:Owned, // Holds true if the vehicle is owned by somebody
Owner[24], // Holds the name of the owner of the vehicle
Model, // Holds the vehicle-model of this vehicle
PaintJob, // Holds the ID of the paintjob applied to the vehicle
Components[14], // Holds all Component-ID\'s for all components on the vehicle
Color1, // Holds the primary color for this vehicle
Color2, // Holds the secundairy color for this vehicle
Float:SpawnX, // Holds the X-coordinate of the parking spot for this vehicle
Float:SpawnY, // Holds the Y-coordinate of the parking spot for this vehicle
Float:SpawnZ, // Holds the Z-coordinate of the parking spot for this vehicle
Float:SpawnRot // Holds the rotation of the parking spot for this vehicle
}
// Setup an array which holds all data for every vehicle, max 2000 vehicles (server limit)
new AVehicleData[2000][TVehicleData];
// Setup all the fields required for the player data (Speedometer TextDraw, current job, ...)
enum TPlayerData
{
Houses[20], // Holds the HouseID\'s of the houses that the player owns (index of the AHouseData array), maximum 20 houses per player
CurrentHouse, // Holds the HouseID to track in which house the player currently is (used when accessing the housemenu)
DialogBuyVClass,
DialogGetCarHouseID
}
// Create an array to hold the playerdata for every player
new APlayerData[MAX_PLAYERS][TPlayerData];
// Setup a custom type that holds all data about a house-interior (selected when entering a house, based on the house-level)
enum THouseInterior
{
InteriorName[50], // Holds the name of the interior
InteriorID, // Holds the interior-id
Float:IntX, // Holds the X-coordinate of the spawn-location where you enter the house
Float:IntY, // Holds the Y-coordinate of the spawn-location where you enter the house
Float:IntZ // Holds the Z-coordinate of the spawn-location where you enter the house
}
// Holds the data for all interiors for houses (each house-level has it\'s own interior)
new AHouseInteriors[][THouseInterior] =
{
{\"Dummy\", 0, 0.0, 0.0, 0.0}, // Dummy interior (Level 0), as the house-level starts at 1
{\"Small motel room\", 10, 2262.83, -1137.71, 1050.63}, // Level 1
{\"Small house\", 2, 2467.36, -1698.38, 1013.51}, // Level 2
{\"Small house 2\", 1, 223.00, 1289.26, 1082.20}, // Level 3
{\"Medium house\", 10, 2260.76, -1210.45, 1049.02}, // Level 4
{\"Medium house 2\", 8, 2365.42, -1131.85, 1050.88}, // Level 5
{\"Duplex house\", 12, 2324.33, -1144.79, 1050.71}, // Level 6
{\"Big house\", 15, 295.14, 1474.47, 1080.52}, // Level 7
{\"Big duplex house\", 3, 235.50, 1189.17, 1080.34}, // Level 8
{\"Huge house\", 7, 225.63, 1022.48, 1084.07}, // Level 9
{\"Mansion\", 5, 1299.14, -794.77, 1084.00} // Level 10
};
// Setup a custom type that holds all data about a buyable vehicle
enum TBuyableVehicle
{
CarName[50], // Holds the name of the vehicle
VehicleClass, // Holds the ID of the vehicleclass
CarModel, // Holds the model-ID of the vehicle
Price // Holds the price for the vehicle (renting it will be 10% of this price)
}
new ABuyableVehicles[][TBuyableVehicle] =
{
{\"Admiral\", VClassSaloons, 445, 50000},
{\"Alpha\", VClassSportCar, 602, 50000},
{\"Ambulance\", VClassPublic, 416, 50000},
{\"Andromada\", VClassPlane, 592, 50000},
{\"Article Trailer\", VClassTrailer, 591, 50000},
// {\"AT400\", VClassPlane, 577, 50000},
{\"Baggage\", VClassUnique, 485, 50000},
{\"Baggage Trailer A\", VClassTrailer, 606, 50000},
{\"Baggage Trailer B\", VClassTrailer, 607, 50000},
{\"Bandito\", VClassOffRoad, 568, 50000},
{\"Banshee\", VClassSportCar, 429, 50000},
{\"Barracks\", VClassPublic, 433, 50000},
{\"Beagle\", VClassPlane, 511, 50000},
{\"Benson\", VClassIndustrial, 499, 50000},
{\"Berkley\'s RC Van\", VClassIndustrial, 459, 50000},
{\"BF Injection\", VClassOffRoad, 424, 50000},
{\"BF-400\", VClassBike, 581, 50000},
{\"Bike\", VClassBike, 509, 50000},
{\"Blade\", VClassLowRider, 536, 50000},
{\"Blista Compact\", VClassSportCar, 496, 50000},
{\"Bloodring Banger\", VClassSaloons, 504, 50000},
{\"BMX\", VClassBike, 481, 50000},
{\"Bobcat\", VClassIndustrial, 422, 50000},
{\"Boxville 1\", VClassIndustrial, 498, 50000},
{\"Boxville 2\", VClassIndustrial, 609, 50000},
{\"Bravura\", VClassSaloons, 401, 50000},
{\"Broadway\", VClassLowRider, 575, 50000},
// {\"Brownstreak (train)\", VClassUnique, 538, 50000},
{\"Buccaneer\", VClassSaloons, 518, 50000},
{\"Buffalo\", VClassSportCar, 402, 50000},
{\"Bullet\", VClassSportCar, 541, 50000},
{\"Burrito\", VClassIndustrial, 482, 50000},
{\"Bus\", VClassPublic, 431, 50000},
{\"Cabbie\", VClassPublic, 438, 50000},
{\"Caddy\", VClassUnique, 457, 50000},
{\"Cadrona\", VClassSaloons, 527, 50000},
{\"Camper\", VClassUnique, 483, 50000},
{\"Cargo Trailer\", VClassTrailer, 435, 50000},
{\"Cargobob\", VClassHelicopter, 548, 50000},
{\"Cement Truck\", VClassIndustrial, 524, 50000},
{\"Cheetah\", VClassSportCar, 415, 50000},
{\"Clover\", VClassSaloons, 542, 50000},
{\"Club\", VClassSportCar, 589, 50000},
{\"Coach\", VClassPublic, 437, 50000},
{\"Coastguard\", VClassBoat, 472, 50000},
{\"Combine Harvester\", VClassUnique, 532, 50000},
{\"Comet\", VClassConvertible, 480, 50000},
{\"Cropduster\", VClassPlane, 512, 50000},
{\"DFT-30\", VClassIndustrial, 578, 50000},
{\"Dinghy\", VClassBoat, 473, 50000},
{\"Dodo\", VClassPlane, 593, 50000},
{\"Dozer\", VClassUnique, 486, 50000},
{\"Dumper\", VClassUnique, 406, 50000},
{\"Dune\", VClassOffRoad, 573, 50000},
{\"Elegant\", VClassSaloons, 507, 50000},
{\"Elegy\", VClassSaloons, 562, 50000},
{\"Emperor\", VClassSaloons, 585, 50000},
{\"Enforcer\", VClassPublic, 427, 50000},
{\"Esperanto\", VClassSaloons, 419, 50000},
{\"Euros\", VClassSportCar, 587, 50000},
{\"Faggio\", VClassBike, 462, 50000},
{\"Farm Trailer\", VClassTrailer, 610, 50000},
{\"FBI Rancher\", VClassPublic, 490, 50000},
{\"FBI Truck\", VClassPublic, 528, 50000},
{\"FCR-900\", VClassBike, 521, 50000},
{\"Feltzer\", VClassConvertible, 533, 50000},
{\"Firetruck\", VClassPublic, 407, 50000},
{\"Firetruck LA\", VClassPublic, 544, 50000},
{\"Flash\", VClassSportCar, 565, 50000},
{\"Flatbed\", VClassIndustrial, 455, 50000},
{\"Fluids Trailer\", VClassTrailer, 584, 50000},
{\"Forklift\", VClassUnique, 530, 50000},
{\"Fortune\", VClassSaloons, 526, 50000},
{\"Freeway\", VClassBike, 463, 50000},
// {\"Freight (train)\", VClassUnique, 537, 50000},
// {\"Freight Box Trailer (train)\", VClassTrailer, 590, 50000},
// {\"Freight Flat Trailer (train)\", VClassTrailer, 569, 50000},
{\"Glendale\", VClassSaloons, 466, 50000},
{\"Glendale Shit\", VClassSaloons, 604, 50000},
{\"Greenwood\", VClassSaloons, 492, 50000},
{\"Hermes\", VClassSaloons, 474, 50000},
{\"Hotdog\", VClassUnique, 588, 50000},
{\"Hotknife\", VClassUnique, 434, 50000},
{\"Hotring Racer 1\", VClassSportCar, 494, 50000},
{\"Hotring Racer 2\", VClassSportCar, 502, 50000},
{\"Hotring Racer 3\", VClassSportCar, 503, 50000},
{\"HPV1000\", VClassPublic, 523, 50000},
{\"Hunter\", VClassHelicopter, 425, 50000},
{\"Huntley\", VClassOffRoad, 579, 50000},
{\"Hustler\", VClassUnique, 545, 50000},
{\"Hydra\", VClassPlane, 520, 50000},
{\"Infernus\", VClassSportCar, 411, 50000},
{\"Intruder\", VClassSaloons, 546, 50000},
{\"Jester\", VClassSportCar, 559, 50000},
{\"Jetmax\", VClassBoat, 493, 50000},
{\"Journey\", VClassUnique, 508, 50000},
{\"Kart\", VClassUnique, 571, 50000},
{\"Landstalker\", VClassOffRoad, 400, 50000},
{\"Launch\", VClassBoat, 595, 50000},
{\"Leviathan\", VClassHelicopter, 417, 50000},
{\"Linerunner\", VClassIndustrial, 403, 50000},
{\"Majestic\", VClassSaloons, 517, 50000},
{\"Manana\", VClassSaloons, 410, 50000},
{\"Marquis\", VClassBoat, 484, 50000},
{\"Maverick\", VClassHelicopter, 487, 50000},
{\"Merit\", VClassSaloons, 551, 50000},
{\"Mesa\", VClassOffRoad, 500, 50000},
{\"Monster\", VClassOffRoad, 444, 50000},
{\"Monster A\", VClassOffRoad, 556, 50000},
{\"Monster B\", VClassOffRoad, 557, 50000},
{\"Moonbeam\", VClassStationCar, 418, 50000},
{\"Mountain Bike\", VClassBike, 510, 50000},
{\"Mower\", VClassUnique, 572, 50000},
{\"Mr Whoopee\", VClassUnique, 423, 50000},
{\"Mule\", VClassIndustrial, 414, 50000},
{\"Nebula\", VClassSaloons, 516, 50000},
{\"Nevada\", VClassPlane, 553, 50000},
{\"Newsvan\", VClassIndustrial, 582, 50000},
{\"NRG-500\", VClassBike, 522, 50000},
{\"Oceanic\", VClassSaloons, 467, 50000},
{\"Ore Trailer\", VClassTrailer, 450, 50000},
{\"Packer\", VClassIndustrial, 443, 50000},
{\"Patriot\", VClassOffRoad, 470, 50000},
{\"PCJ-600\", VClassBike, 461, 50000},
{\"Perenniel\", VClassStationCar, 404, 50000},
{\"Phoenix\", VClassSportCar, 603, 50000},
{\"Picador\", VClassIndustrial, 600, 50000},
{\"Pizzaboy\", VClassBike, 448, 50000},
{\"Police Car (LSPD)\", VClassPublic, 596, 50000},
{\"Police Car (LVPD)\", VClassPublic, 598, 50000},
{\"Police Car (SFPD)\", VClassPublic, 597, 50000},
{\"Police Maverick\", VClassHelicopter, 497, 50000},
{\"Police Ranger\", VClassPublic, 599, 50000},
{\"Pony\", VClassIndustrial, 413, 50000},
{\"Predator\", VClassBoat, 430, 50000},
{\"Premier\", VClassSaloons, 426, 50000},
{\"Previon\", VClassSaloons, 436, 50000},
{\"Primo\", VClassSaloons, 547, 50000},
{\"Quad\", VClassBike, 471, 50000},
{\"Raindance\", VClassHelicopter, 563, 50000},
{\"Rancher 1\", VClassOffRoad, 489, 50000},
{\"Rancher 2\", VClassOffRoad, 505, 50000},
// {\"RC Bandit\", VClassRCVehicle, 441, 50000},
// {\"RC Baron\", VClassRCVehicle, 464, 50000},
// {\"RC Cam\", VClassRCVehicle, 594, 50000},
// {\"RC Goblin\", VClassRCVehicle, 501, 50000},
// {\"RC Raider\", VClassRCVehicle, 465, 50000},
// {\"RC Tiger\", VClassRCVehicle, 564, 50000},
{\"Reefer\", VClassBoat, 453, 50000},
{\"Regina\", VClassStationCar, 479, 50000},
{\"Remington\", VClassLowRider, 534, 50000},
{\"Rhino\", VClassPublic, 432, 50000},
{\"Roadtrain\", VClassIndustrial, 515, 50000},
{\"Romero\", VClassUnique, 442, 50000},
{\"Rumpo\", VClassIndustrial, 440, 50000},
{\"Rustler\", VClassPlane, 476, 50000},
{\"Sabre\", VClassSportCar, 475, 50000},
{\"Sadler\", VClassIndustrial, 543, 50000},
{\"Sadler Shit\", VClassIndustrial, 605, 50000},
{\"SAN News Maverick\", VClassHelicopter, 488, 50000},
{\"Sanchez\", VClassBike, 468, 50000},
{\"Sandking\", VClassOffRoad, 495, 50000},
{\"Savanna\", VClassLowRider, 567, 50000},
{\"Seasparrow\", VClassHelicopter, 447, 50000},
{\"Securicar\", VClassUnique, 428, 50000},
{\"Sentinel\", VClassSaloons, 405, 50000},
{\"Shamal\", VClassPlane, 519, 50000},
{\"Skimmer\", VClassPlane, 460, 50000},
{\"Slamvan\", VClassLowRider, 535, 50000},
{\"Solair\", VClassStationCar, 458, 50000},
{\"Sparrow\", VClassHelicopter, 469, 50000},
{\"Speeder\", VClassBoat, 452, 50000},
{\"Squallo\", VClassBoat, 446, 50000},
{\"Stafford\", VClassSaloons, 580, 50000},
{\"Stallion\", VClassConvertible, 439, 50000},
{\"Stratum\", VClassStationCar, 561, 50000},
// {\"Streak Trailer (train)\", VClassTrailer, 570, 50000},
{\"Stretch\", VClassUnique, 409, 50000},
{\"Stuntplane\", VClassPlane, 513, 50000},
{\"Sultan\", VClassSaloons, 560, 50000},
{\"Sunrise\", VClassSaloons, 550, 50000},
{\"Super GT\", VClassSportCar, 506, 50000},
{\"S.W.A.T.\", VClassPublic, 601, 50000},
{\"Sweeper\", VClassUnique, 574, 50000},
{\"Tahoma\", VClassLowRider, 566, 50000},
{\"Tampa\", VClassSaloons, 549, 50000},
{\"Tanker\", VClassIndustrial, 514, 50000},
{\"Taxi\", VClassPublic, 420, 50000},
{\"Tornado\", VClassLowRider, 576, 50000},
{\"Towtruck\", VClassUnique, 525, 50000},
{\"Tractor\", VClassIndustrial, 531, 50000},
// {\"Tram\", VClassUnique, 449, 50000},
{\"Trashmaster\", VClassIndustrial, 408, 50000},
{\"Tropic\", VClassBoat, 454, 50000},
{\"Tug\", VClassUnique, 583, 50000},
{\"Tug Stairs Trailer\", VClassTrailer, 608, 50000},
{\"Turismo\", VClassSportCar, 451, 50000},
{\"Uranus\", VClassSportCar, 558, 50000},
{\"Utility Trailer\", VClassTrailer, 611, 50000},
{\"Utility Van\", VClassIndustrial, 552, 50000},
{\"Vincent\", VClassSaloons, 540, 50000},
{\"Virgo\", VClassSaloons, 491, 50000},
{\"Voodoo\", VClassLowRider, 412, 50000},
{\"Vortex\", VClassUnique, 539, 50000},
{\"Walton\", VClassIndustrial, 478, 50000},
{\"Washington\", VClassSaloons, 421, 50000},
{\"Wayfarer\", VClassBike, 586, 50000},
{\"Willard\", VClassSaloons, 529, 50000},
{\"Windsor\", VClassConvertible, 555, 50000},
{\"Yankee\", VClassIndustrial, 456, 50000},
{\"Yosemite\", VClassIndustrial, 554, 50000},
{\"ZR-350\", VClassSportCar, 477, 50000}
};
// Setup an array that holds all prices for vehicle-components
new AVehicleModPrices[] =
{
400, // ID 1000, Spoiler Pro Certain Transfender cars
550, // ID 1001, Spoiler Win Certain Transfender cars
200, // ID 1002, Spoiler Drag Certain Transfender cars
250, // ID 1003, Spoiler Alpha Certain Transfender cars
100, // ID 1004, Hood Champ Scoop Certain Transfender cars
150, // ID 1005, Hood Fury Scoop Certain Transfender cars
80, // ID 1006, Roof Roof Scoop Certain Transfender cars
500, // ID 1007, Sideskirt Right Sideskirt Certain Transfender cars
500, // ID 1008, Nitro 5 times Most cars, Most planes and Most Helicopters
200, // ID 1009, Nitro 2 times Most cars, Most planes and Most Helicopters
1000, // ID 1010, Nitro 10 times Most cars, Most planes and Most Helicopters
220, // ID 1011, Hood Race Scoop Certain Transfender cars
250, // ID 1012, Hood Worx Scoop Certain Transfender cars
100, // ID 1013, Lamps Round Fog Certain Transfender cars
400, // ID 1014, Spoiler Champ Certain Transfender cars
500, // ID 1015, Spoiler Race Certain Transfender cars
200, // ID 1016, Spoiler Worx Certain Transfender cars
500, // ID 1017, Sideskirt Left Sideskirt Certain Transfender cars
350, // ID 1018, Exhaust Upswept Most cars
300, // ID 1019, Exhaust Twin Most cars
250, // ID 1020, Exhaust Large Most cars
200, // ID 1021, Exhaust Medium Most cars
150, // ID 1022, Exhaust Small Most cars
350, // ID 1023, Spoiler Fury Certain Transfender cars
50, // ID 1024, Lamps Square Fog Certain Transfender cars
1000, // ID 1025, Wheels Offroad Certain Transfender cars
480, // ID 1026, Sideskirt Right Alien Sideskirt Sultan
480, // ID 1027, Sideskirt Left Alien Sideskirt Sultan
770, // ID 1028, Exhaust Alien Sultan
680, // ID 1029, Exhaust X-Flow Sultan
370, // ID 1030, Sideskirt Left X-Flow Sideskirt Sultan
370, // ID 1031, Sideskirt Right X-Flow Sideskirt Sultan
170, // ID 1032, Roof Alien Roof Vent Sultan
120, // ID 1033, Roof X-Flow Roof Vent Sultan
790, // ID 1034, Exhaust Alien Elegy
150, // ID 1035, Roof X-Flow Roof Vent Elegy
500, // ID 1036, SideSkirt Right Alien Sideskirt Elegy
690, // ID 1037, Exhaust X-Flow Elegy
190, // ID 1038, Roof Alien Roof Vent Elegy
390, // ID 1039, SideSkirt Right X-Flow Sideskirt Elegy
500, // ID 1040, SideSkirt Left Alien Sideskirt Elegy
390, // ID 1041, SideSkirt Right X-Flow Sideskirt Elegy
1000, // ID 1042, SideSkirt Right Chrome Sideskirt Broadway
500, // ID 1043, Exhaust Slamin Broadway
500, // ID 1044, Exhaust Chrome Broadway
510, // ID 1045, Exhaust X-Flow Flash
710, // ID 1046, Exhaust Alien Flash
670, // ID 1047, SideSkirt Right Alien Sideskirt Flash
530, // ID 1048, SideSkirt Right X-Flow Sideskirt Flash
810, // ID 1049, Spoiler Alien Flash
620, // ID 1050, Spoiler X-Flow Flash
670, // ID 1051, SideSkirt Left Alien Sideskirt Flash
530, // ID 1052, SideSkirt Left X-Flow Sideskirt Flash
130, // ID 1053, Roof X-Flow Flash
210, // ID 1054, Roof Alien Flash
230, // ID 1055, Roof Alien Stratum
520, // ID 1056, Sideskirt Right Alien Sideskirt Stratum
430, // ID 1057, Sideskirt Right X-Flow Sideskirt Stratum
620, // ID 1058, Spoiler Alien Stratum
720, // ID 1059, Exhaust X-Flow Stratum
530, // ID 1060, Spoiler X-Flow Stratum
180, // ID 1061, Roof X-Flow Stratum
520, // ID 1062, Sideskirt Left Alien Sideskirt Stratum
430, // ID 1063, Sideskirt Left X-Flow Sideskirt Stratum
830, // ID 1064, Exhaust Alien Stratum
850, // ID 1065, Exhaust Alien Jester
750, // ID 1066, Exhaust X-Flow Jester
250, // ID 1067, Roof Alien Jester
200, // ID 1068, Roof X-Flow Jester
550, // ID 1069, Sideskirt Right Alien Sideskirt Jester
450, // ID 1070, Sideskirt Right X-Flow Sideskirt Jester
550, // ID 1071, Sideskirt Left Alien Sideskirt Jester
450, // ID 1072, Sideskirt Left X-Flow Sideskirt Jester
1100, // ID 1073, Wheels Shadow Most cars
1030, // ID 1074, Wheels Mega Most cars
980, // ID 1075, Wheels Rimshine Most cars
1560, // ID 1076, Wheels Wires Most cars
1620, // ID 1077, Wheels Classic Most cars
1200, // ID 1078, Wheels Twist Most cars
1030, // ID 1079, Wheels Cutter Most cars
900, // ID 1080, Wheels Switch Most cars
1230, // ID 1081, Wheels Grove Most cars
820, // ID 1082, Wheels Import Most cars
1560, // ID 1083, Wheels Dollar Most cars
1350, // ID 1084, Wheels Trance Most cars
770, // ID 1085, Wheels Atomic Most cars
100, // ID 1086, Stereo Stereo Most cars
1500, // ID 1087, Hydraulics Hydraulics Most cars
150, // ID 1088, Roof Alien Uranus
650, // ID 1089, Exhaust X-Flow Uranus
450, // ID 1090, Sideskirt Right Alien Sideskirt Uranus
100, // ID 1091, Roof X-Flow Uranus
750, // ID 1092, Exhaust Alien Uranus
350, // ID 1093, Sideskirt Right X-Flow Sideskirt Uranus
450, // ID 1094, Sideskirt Left Alien Sideskirt Uranus
350, // ID 1095, Sideskirt Right X-Flow Sideskirt Uranus
1000, // ID 1096, Wheels Ahab Most cars
620, // ID 1097, Wheels Virtual Most cars
1140, // ID 1098, Wheels Access Most cars
1000, // ID 1099, Sideskirt Left Chrome Sideskirt Broadway
940, // ID 1100, Bullbar Chrome Grill Remington
780, // ID 1101, Sideskirt Left `Chrome Flames` Sideskirt Remington
830, // ID 1102, Sideskirt Left `Chrome Strip` Sideskirt Savanna
3250, // ID 1103, Roof Convertible Blade
1610, // ID 1104, Exhaust Chrome Blade
1540, // ID 1105, Exhaust Slamin Blade
780, // ID 1106, Sideskirt Right `Chrome Arches` Remington
780, // ID 1107, Sideskirt Left `Chrome Strip` Sideskirt Blade
780, // ID 1108, Sideskirt Right `Chrome Strip` Sideskirt Blade
1610, // ID 1109, Rear Bullbars Chrome Slamvan
1540, // ID 1110, Rear Bullbars Slamin Slamvan
55, // ID 1111, Front Sign? Little Sign? Slamvan
55, // ID 1112, Front Sign? Little Sign? Slamvan
3340, // ID 1113, Exhaust Chrome Slamvan
3250, // ID 1114, Exhaust Slamin Slamvan
2130, // ID 1115, Front Bullbars Chrome Slamvan
2050, // ID 1116, Front Bullbars Slamin Slamvan
2040, // ID 1117, Front Bumper Chrome Slamvan
780, // ID 1118, Sideskirt Right `Chrome Trim` Sideskirt Slamvan
940, // ID 1119, Sideskirt Right `Wheelcovers` Sideskirt Slamvan
780, // ID 1120, Sideskirt Left `Chrome Trim` Sideskirt Slamvan
940, // ID 1121, Sideskirt Left `Wheelcovers` Sideskirt Slamvan
780, // ID 1122, Sideskirt Right `Chrome Flames` Sideskirt Remington
860, // ID 1123, Bullbars Bullbar Chrome Bars Remington
780, // ID 1124, Sideskirt Left `Chrome Arches` Sideskirt Remington
1120, // ID 1125, Bullbars Bullbar Chrome Lights Remington
3340, // ID 1126, Exhaust Chrome Exhaust Remington
3250, // ID 1127, Exhaust Slamin Exhaust Remington
3340, // ID 1128, Roof Vinyl Hardtop Blade
1650, // ID 1129, Exhaust Chrome Savanna
3380, // ID 1130, Roof Hardtop Savanna
3290, // ID 1131, Roof Softtop Savanna
1590, // ID 1132, Exhaust Slamin Savanna
830, // ID 1133, Sideskirt Right `Chrome Strip` Sideskirt Savanna
800, // ID 1134, SideSkirt Right `Chrome Strip` Sideskirt Tornado
1500, // ID 1135, Exhaust Slamin Tornado
1000, // ID 1136, Exhaust Chrome Tornado
800, // ID 1137, Sideskirt Left `Chrome Strip` Sideskirt Tornado
580, // ID 1138, Spoiler Alien Sultan
470, // ID 1139, Spoiler X-Flow Sultan
870, // ID 1140, Rear Bumper X-Flow Sultan
980, // ID 1141, Rear Bumper Alien Sultan
150, // ID 1142, Vents Left Oval Vents Certain Transfender Cars
150, // ID 1143, Vents Right Oval Vents Certain Transfender Cars
100, // ID 1144, Vents Left Square Vents Certain Transfender Cars
100, // ID 1145, Vents Right Square Vents Certain Transfender Cars
490, // ID 1146, Spoiler X-Flow Elegy
600, // ID 1147, Spoiler Alien Elegy
890, // ID 1148, Rear Bumper X-Flow Elegy
1000, // ID 1149, Rear Bumper Alien Elegy
1090, // ID 1150, Rear Bumper Alien Flash
840, // ID 1151, Rear Bumper X-Flow Flash
910, // ID 1152, Front Bumper X-Flow Flash
1200, // ID 1153, Front Bumper Alien Flash
1030, // ID 1154, Rear Bumper Alien Stratum
1030, // ID 1155, Front Bumper Alien Stratum
920, // ID 1156, Rear Bumper X-Flow Stratum
930, // ID 1157, Front Bumper X-Flow Stratum
550, // ID 1158, Spoiler X-Flow Jester
1050, // ID 1159, Rear Bumper Alien Jester
1050, // ID 1160, Front Bumper Alien Jester
950, // ID 1161, Rear Bumper X-Flow Jester
650, // ID 1162, Spoiler Alien Jester
450, // ID 1163, Spoiler X-Flow Uranus
550, // ID 1164, Spoiler Alien Uranus
850, // ID 1165, Front Bumper X-Flow Uranus
950, // ID 1166, Front Bumper Alien Uranus
850, // ID 1167, Rear Bumper X-Flow Uranus
950, // ID 1168, Rear Bumper Alien Uranus
970, // ID 1169, Front Bumper Alien Sultan
880, // ID 1170, Front Bumper X-Flow Sultan
990, // ID 1171, Front Bumper Alien Elegy
900, // ID 1172, Front Bumper X-Flow Elegy
950, // ID 1173, Front Bumper X-Flow Jester
1000, // ID 1174, Front Bumper Chrome Broadway
900, // ID 1175, Front Bumper Slamin Broadway
1000, // ID 1176, Rear Bumper Chrome Broadway
900, // ID 1177, Rear Bumper Slamin Broadway
2050, // ID 1178, Rear Bumper Slamin Remington
2150, // ID 1179, Front Bumper Chrome Remington
2130, // ID 1180, Rear Bumper Chrome Remington
2050, // ID 1181, Front Bumper Slamin Blade
2130, // ID 1182, Front Bumper Chrome Blade
2040, // ID 1183, Rear Bumper Slamin Blade
2150, // ID 1184, Rear Bumper Chrome Blade
2040, // ID 1185, Front Bumper Slamin Remington
2095, // ID 1186, Rear Bumper Slamin Savanna
2175, // ID 1187, Rear Bumper Chrome Savanna
2080, // ID 1188, Front Bumper Slamin Savanna
2200, // ID 1189, Front Bumper Chrome Savanna
1200, // ID 1190, Front Bumper Slamin Tornado
1040, // ID 1191, Front Bumper Chrome Tornado
940, // ID 1192, Rear Bumper Chrome Tornado
1100, // ID 1193 Rear Bumper Slamin Tornado
};
// These variables are used when starting the script and debugging purposes
new TotalHouses;
// ******************************************************************************************************************************
// Callbacks
// ******************************************************************************************************************************
// The main function (used only once when the server loads)
main()
{
}
// This callback gets called when the server initializes the filterscript
public OnFilterScriptInit()
{
// Loop through all houses and try to load them (HouseID 0 isn\'t used)
for (new HouseID = 1; HouseID < MAX_HOUSES; HouseID++)
{
// Try to load the house-file
HouseFile_Load(HouseID);
// Load housecars too if chosen to do so
if (LoadCarsDuringFSInit == true)
HouseFile_LoadCars(HouseID);
}
printf(\"\\n----------------------------------------\");
printf(\"PPC Házrendszer betöltve\");
printf(\"Betöltött házak: %i\", TotalHouses);
printf(\"----------------------------------------\\n\");
return 1;
}
// This callback gets called when a player connects to the server
public OnPlayerConnect(playerid)
{
// Setup local variables
new HouseID, HouseSlot, Name[24];
// Get the player\'s name
GetPlayerName(playerid, Name, sizeof(Name));
// Loop through all houses to find the ones which belong to this player
for (HouseID = 1; HouseID < MAX_HOUSES; HouseID++)
{
// Check if the house exists
if (IsValidDynamicPickup(AHouseData[HouseID][PickupID]))
{
// Check if the house is owned
if (AHouseData[HouseID][Owned] == true)
{
// Check if the player is the owner of the house
if (strcmp(AHouseData[HouseID][Owner], Name, false) == 0)
{
// Add the HouseID to the player\'s account for faster reference later on
APlayerData[playerid][Houses][HouseSlot] = HouseID;
// Load housecars if they weren\'t loaded at FilterscriptInit
if (LoadCarsDuringFSInit == false)
HouseFile_LoadCars(HouseID);
// Select the next HouseSlot
HouseSlot++;
}
}
}
}
return 1;
}
// This callback gets called when a player disconnects from the server
public OnPlayerDisconnect(playerid, reason)
{
// Setup local variables
new HouseSlot;
// Loop through all Houses the player owns
for (HouseSlot = 0; HouseSlot < MAX_HOUSESPERPLAYER; HouseSlot++)
{
// Check if the house exists
if (APlayerData[playerid][Houses][HouseSlot] != 0)
{
// Save the housefile
HouseFile_Save(APlayerData[playerid][Houses][HouseSlot]);
}
}
// Unload housecars if they were loaded when the owner logged in
if (LoadCarsDuringFSInit == false)
{
// Loop through all Houses the player owns
for (HouseSlot = 0; HouseSlot < MAX_HOUSESPERPLAYER; HouseSlot++)
{
// Check if the house exists
if (APlayerData[playerid][Houses][HouseSlot] != 0)
{
// Unload all vehicles assigned to this house
House_RemoveVehicles(APlayerData[playerid][Houses][HouseSlot]);
}
}
}
// Clear all data for this player
// Loop through all Houses the player owns
for (HouseSlot = 0; HouseSlot < MAX_HOUSESPERPLAYER; HouseSlot++)
{
// Clear the HouseID\'s
APlayerData[playerid][Houses][HouseSlot] = 0;
}
APlayerData[playerid][CurrentHouse] = 0;
APlayerData[playerid][DialogBuyVClass] = 0;
APlayerData[playerid][DialogGetCarHouseID] = 0;
return 1;
}
// This callback gets called when a player interacts with a dialog
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
// Select the proper dialog to process
switch (dialogid)
{
case DialogHouseMenu: Dialog_HouseMenu(playerid, response, listitem); // Process the main housemenu
case DialogUpgradeHouse: Dialog_UpgradeHouse(playerid, response, listitem); // Process the house-upgrade menu
case DialogGoHome: Dialog_GoHome(playerid, response, listitem); // Port to one of your houses
case DialogHouseNameChange: Dialog_ChangeHouseName(playerid, response, inputtext); // Change the name of your house
case DialogSellHouse: Dialog_SellHouse(playerid, response); // Sell the house
case DialogBuyCarClass: Dialog_BuyCarClass(playerid, response, listitem); // The player chose a vehicleclass from where he can buy a vehicle
case DialogBuyCar: Dialog_BuyCar(playerid, response, listitem); // The player chose a vehicle from the list of vehicles from the vehicleclass he chose before
case DialogSellCar: Dialog_SellCar(playerid, response, listitem);
case DialogBuyInsurance: Dialog_BuyInsurance(playerid, response);
case DialogGetCarSelectHouse: Dialog_GetCarSelectHouse(playerid, response, listitem);
case DialogGetCarSelectCar: Dialog_GetCarSelectCar(playerid, response, listitem);
}
return 1;
}
// This callback gets called when a player spawns somewhere
public OnPlayerSpawn(playerid)
{
// Reset the HouseID where the player is located
APlayerData[playerid][CurrentHouse] = 0;
return 1;
}
// This callback gets called whenever a player dies
public OnPlayerDeath(playerid, killerid, reason)
{
// Reset the HouseID where the player is located
APlayerData[playerid][CurrentHouse] = 0;
return 1;
}
// This callback gets called when the player is selecting a class (but hasn\'t clicked \"Spawn\" yet)
public OnPlayerRequestClass(playerid, classid)
{
// Reset the HouseID where the player is located
APlayerData[playerid][CurrentHouse] = 0;
return 1;
}
// This callback is called when the player attempts to spawn via class-selection
public OnPlayerRequestSpawn(playerid)
{
// Reset the HouseID where the player is located
APlayerData[playerid][CurrentHouse] = 0;
return 1;
}
// This callback gets called when a vehicle respawns at it\'s spawn-location (where it was created)
public OnVehicleSpawn(vehicleid)
{
// Only use this for house-vehicles
if (AVehicleData[vehicleid][Owned] == true)
{
// Re-apply the paintjob (if any was applied)
if (AVehicleData[vehicleid][PaintJob] != 0)
{
// Re-apply the paintjob
ChangeVehiclePaintjob(vehicleid, AVehicleData[vehicleid][PaintJob] - 1);
}
// Also update the car-color
ChangeVehicleColor(vehicleid, AVehicleData[vehicleid][Color1], AVehicleData[vehicleid][Color2]);
// Re-add all components that were installed (if they were there)
for (new i; i < 14; i++)
{
// Remove all mods from the vehicle (all added mods applied by hackers will hopefully be removed this way when the vehicle respawns)
RemoveVehicleComponent(vehicleid, GetVehicleComponentInSlot(vehicleid, i));
// Check if the componentslot has a valid component-id
if (AVehicleData[vehicleid][Components] != 0)
AddVehicleComponent(vehicleid, AVehicleData[vehicleid][Components]); // Add the component to the vehicle
}
}
return 1;
}
// This callback is called when the vehicle leaves a mod shop
public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
// Only use this for house-vehicles
if (AVehicleData[vehicleid][Owned] == true)
{
// Let the player pay $150 for changing the color (if they have been changed)
if ((AVehicleData[vehicleid][Color1] != color1) || (AVehicleData[vehicleid][Color2] != color2))
INT_GivePlayerMoney(playerid, -150);
// Save the colors
AVehicleData[vehicleid][Color1] = color1;
AVehicleData[vehicleid][Color2] = color2;
// If the primary color is black, remove the paintjob
if (color1 == 0)
AVehicleData[vehicleid][PaintJob] = 0;
}
return 1;
}
// This callback gets called whenever a player mods his vehicle
public OnVehicleMod(playerid, vehicleid, componentid)
{
// Only use this for house-vehicles
if (AVehicleData[vehicleid][Owned] == true)
{
// When the player changes a component of his vehicle, reduce the price of the component from the player\'s money
INT_GivePlayerMoney(playerid, -AVehicleModPrices[componentid - 1000]);
// Store the component in the AVehicleData array
AVehicleData[vehicleid][Components][GetVehicleComponentType(componentid)] = componentid;
}
return 1;
}
// This callback gets called whenever a player VIEWS at a paintjob in a mod garage (viewing automatically applies it)
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
// Only use this for house-vehicles
if (AVehicleData[vehicleid][Owned] == true)
{
// Store the paintjobid for the vehicle (add 1 to the value, otherwise checking for an applied paintjob is difficult)
AVehicleData[vehicleid][PaintJob] = paintjobid + 1;
}
return 1;
}
// This callback gets called whenever a vehicle enters the water or is destroyed (explodes)
public OnVehicleDeath(vehicleid)
{
// Setup local variables
new HouseID, CarSlot;
// Only use this for house-vehicles
if (AVehicleData[vehicleid][Owned] == true)
{
// Get the houseid to which this vehicle belongs
HouseID = AVehicleData[vehicleid][belongsToHouse];
// If automatic insurance has been turned off, check if the vehicle\'s house has insurance for the vehicle
if (AutomaticInsurance == false)
{
// Check if this vehicle belongs to a house
if (HouseID != 0)
{
// If the house doesn\'t have insurance for it\'s vehicles
if (AHouseData[HouseID][insurance] == false)
{
// Find the CarSlot where this vehicle is stored
for (CarSlot = 0; CarSlot < 10; CarSlot++)
{
// Check if the vehicle is stored in this carslot
if (AHouseData[HouseID][VehicleIDs][CarSlot] == vehicleid)
break; // Stop searching, because CarSlot now hold the carslot of the vehicle where it\'s stored
}
// Delete the vehicle, clear the data and remove it from the house it belongs to
Vehicle_Delete(vehicleid, HouseID, CarSlot);
// Save the house (and linked vehicles)
HouseFile_Save(HouseID);
}
}
}
}
return 1;
}
// This callback gets called when the player changes state
public OnPlayerStateChange(playerid,newstate,oldstate)
{
// Setup local variables
new vid, Name[24], Msg[128], engine, lights, alarm, doors, bonnet, boot, objective;
// Check if the player became the driver of a vehicle
if (newstate == PLAYER_STATE_DRIVER)
{
// Get the ID of the player\'s vehicle
vid = GetPlayerVehicleID(playerid);
// Get the player\'s name
GetPlayerName(playerid, Name, sizeof(Name));
// Check if the vehicle is owned
if (AVehicleData[vid][Owned] == true)
{
// Check if the vehicle is owned by somebody else (strcmp will not be 0)
if (strcmp(AVehicleData[vid][Owner], Name, false) != 0)
{
// Force the player out of the vehicle
RemovePlayerFromVehicle(playerid);
// Turn off the lights and engine
GetVehicleParamsEx(vid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vid, 0, 0, alarm, doors, bonnet, boot, objective);
// Let the player know he cannot use somebody else\'s vehicle
format(Msg, 128, \"{FF0000}Nem tudod használni a jármûvet, tulajdonosa \\\"{FFFF00}%s{FF0000}\\\"\", AVehicleData[vid][Owner]);
SendClientMessage(playerid, 0xFFFFFFFF, Msg);
}
}
}
return 1;
}
// ******************************************************************************************************************************
// Commands
// ******************************************************************************************************************************
// Lets the player add new houses (a house that can be upgraded and where the houselevel determines the amount of carslots)
COMMAND:createhouse(playerid, params[])
{
// Setup local variables
new HPrice, MaxLevel, HouseID;
// If a player hasn\'t logged in properly, he cannot use this command
if (INT_IsPlayerLoggedIn(playerid) == 0) return 0;
// If the player has an insufficient admin-level (he needs level 5 or RCON admin), exit the command
// returning \"SERVER: Unknown command\" to the player
if (INT_CheckPlayerAdminLevel(playerid, 5) == 0) return 0;
// Check if the player isn\'t inside a vehicle (the admin-player must be on foot to use this command)
if (GetPlayerVehicleSeat(playerid) == -1)
{
if (sscanf(params, \"ii\", HPrice, MaxLevel)) SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Használat: \\\"/createhouse <ár> <maxlevel (1-10)>\\\"\");
else
{
// Check if the player entered a proper maxlevel
if ((MaxLevel >= 1) && (MaxLevel <= 10))
{
// Find the first free HouseID
for (HouseID = 1; HouseID < MAX_HOUSES; HouseID++)
if (!IsValidDynamicPickup(AHouseData[HouseID][PickupID])) // Check if an empty house-index has been found (PickupID is 0)
break; // Stop searching, the first free HouseID has been found now
// Check if the house-limit hasn\'t been reached yet
// This would seem to double-check the pickup-id, but in case there was no free houseslot found (HouseID points
// to the last index, the last index would hold a house, so be sure to not overwrite it
if (!IsValidDynamicPickup(AHouseData[HouseID][PickupID]))
{
// Setup some local variables
new Float:x, Float:y, Float:z, Msg[128];
// Get the player\'s position
GetPlayerPos(playerid, x, y, z);
// Set some default data
AHouseData[HouseID][Owned] = false;
AHouseData[HouseID][Owner] = 0;
AHouseData[HouseID][HouseX] = x;
AHouseData[HouseID][HouseY] = y;
AHouseData[HouseID][HouseZ] = z;
AHouseData[HouseID][HouseLevel] = 1;
AHouseData[HouseID][HouseMaxLevel] = MaxLevel;
AHouseData[HouseID][HousePrice] = HPrice;
AHouseData[HouseID][HouseOpened] = false;
AHouseData[HouseID][insurance] = false;
AHouseData[HouseID][staticHouse] = false;
AHouseData[HouseID][CarSlots] = 1; // This must be equal to the house-level for a normal house
// Add the pickup and 3DText at the location of the house-entrance (where the player is standing when he creates the house)
House_UpdateEntrance(HouseID);
// Save the house
HouseFile_Save(HouseID);
// Inform the player that he created a new house
format(Msg, 128, \"{00FF00}Ház létrehozva, azonosító (ID): {FFFF00}%i\", HouseID);
SendClientMessage(playerid, 0xFFFFFFFF, Msg);
}
else
SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Nem lehet több házat létrehozni!\");
}
else
SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Max szint: 1 - 10\");
}
}
else
SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Csak gyalog lehet házat létrehozni!\");
// Let the server know that this was a valid command
return 1;
}
// Lets the player add new houses (a house that cannot be upgraded, has a fixed interior and a fixed amount of carslots)
COMMAND:createstatichouse(playerid, params[])
{
// Setup local variables
new HPrice, Carslots, HouseID, Interior;
// If a player hasn\'t logged in properly, he cannot use this command
if (INT_IsPlayerLoggedIn(playerid) == 0) return 0;
// If the player has an insufficient admin-level (he needs level 5 or RCON admin), exit the command
// returning \"SERVER: Unknown command\" to the player
if (INT_CheckPlayerAdminLevel(playerid, 5) == 0) return 0;
// Check if the player isn\'t inside a vehicle (the admin-player must be on foot to use this command)
if (GetPlayerVehicleSeat(playerid) == -1)
{
if (sscanf(params, \"iii\", HPrice, Carslots, Interior)) SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Használat: \\\"/createstatichouse <ár> <Jármûhelyek (1-10)> <Interior (1-10)>\\\"\");
else
{
// Check if the player entered a proper amount of Carslots
if ((Carslots >= 1) && (Carslots <= 10))
{
// Check if the player entered a valid interior
if ((Interior >= 1) && (Interior <= 10))
{
// Find the first free HouseID
for (HouseID = 1; HouseID < MAX_HOUSES; HouseID++)
if (!IsValidDynamicPickup(AHouseData[HouseID][PickupID])) // Check if an empty house-index has been found (PickupID is 0)
break; // Stop searching, the first free HouseID has been found now
// Check if the house-limit hasn\'t been reached yet
// This would seem to double-check the pickup-id, but in case there was no free houseslot found (HouseID points
// to the last index, the last index would hold a house, so be sure to not overwrite it
if (!IsValidDynamicPickup(AHouseData[HouseID][PickupID]))
{
// Setup some local variables
new Float:x, Float:y, Float:z, Msg[128];
// Get the player\'s position
GetPlayerPos(playerid, x, y, z);
// Set some default data
AHouseData[HouseID][Owned] = false;
AHouseData[HouseID][HouseX] = x;
AHouseData[HouseID][HouseY] = y;
AHouseData[HouseID][HouseZ] = z;
AHouseData[HouseID][HouseLevel] = Interior; // The house-level indicates the static interior
AHouseData[HouseID][HouseMaxLevel] = Interior;
AHouseData[HouseID][HousePrice] = HPrice;
AHouseData[HouseID][HouseOpened] = false;
AHouseData[HouseID][insurance] = false;
AHouseData[HouseID][staticHouse] = true;
AHouseData[HouseID][CarSlots] = Carslots;
// Add the pickup and 3DText at the location of the house-entrance (where the player is standing when he creates the house)
House_UpdateEntrance(HouseID);
// Save the house
HouseFile_Save(HouseID);
// Inform the player that he created a new house
format(Msg, 128, \"{00FF00}A statikus ház létrehozva, azonosító (ID): {FFFF00}%i\", HouseID);
SendClientMessage(playerid, 0xFFFFFFFF, Msg);
}
else
SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Nem lehet több házat létrehozni!\");
}
else
SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Belsõ (Interior) azonosítók: 1 - 10\");
}
else
SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Jármûférõhelyeket add meg! (1 - 10)\");
}
}
else
SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Csak gyalog lehet házat létrehozni!\");
// Let the server know that this was a valid command
return 1;
}
// This command lets the player delete a house
COMMAND:delhouse(playerid, params[])
{
// Setup local variables
new file[100], Msg[128];
// If a player hasn\'t logged in properly, he cannot use this command
if (INT_IsPlayerLoggedIn(playerid) == 0) return 0;
// If the player has an insufficient admin-level (he needs level 5 or RCON admin), exit the command
// returning \"SERVER: Unknown command\" to the player
if (INT_CheckPlayerAdminLevel(playerid, 5) == 0) return 0;
// Check if the player isn\'t inside a vehicle (the admin-player must be on foot to use this command)
if (GetPlayerVehicleSeat(playerid) == -1)
{
// Loop through all houses
for (new HouseID = 1; HouseID < MAX_HOUSES; HouseID++)
{
// Check if the house exists
if (IsValidDynamicPickup(AHouseData[HouseID][PickupID]))
{
// Check if the house has no owner (owned houses cannot be deleted)
if (AHouseData[HouseID][Owned] == false)
{
// Check if the player is in range of the house-pickup
if (IsPlayerInRangeOfPoint(playerid, 2.5, AHouseData[HouseID][HouseX], AHouseData[HouseID][HouseY], AHouseData[HouseID][HouseZ]))
{
// Clear all data of the house
AHouseData[HouseID][Owned] = false;
AHouseData[HouseID][Owner] = 0;
AHouseData[HouseID][HouseName] = 0;
AHouseData[HouseID][insurance] = false;
AHouseData[HouseID][HouseX] = 0.0;
AHouseData[HouseID][HouseY] = 0.0;
AHouseData[HouseID][HouseZ] = 0.0;
AHouseData[HouseID][HouseLevel] = 0;
AHouseData[HouseID][HouseMaxLevel] = 0;
AHouseData[HouseID][HousePrice] = 0;
AHouseData[HouseID][HouseOpened] = false;
AHouseData[HouseID][staticHouse] = false;
AHouseData[HouseID][CarSlots] = 0;
// Destroy the mapicon, 3DText and pickup for the house
DestroyDynamicPickup(AHouseData[HouseID][PickupID]);
DestroyDynamicMapIcon(AHouseData[HouseID][MapIconID]);
DestroyDynamic3DTextLabel(AHouseData[HouseID][DoorText]);
AHouseData[HouseID][PickupID] = 0;
AHouseData[HouseID][MapIconID] = 0;
// Delete the house-file
format(file, sizeof(file), HouseFile, HouseID); // Construct the complete filename for this house-file
if (fexist(file)) // Make sure the file exists
fremove(file); // Delete the file
// Also let the player know he deleted the house
format(Msg, 128, \"{00FF00}Törölted a {FFFF00}%i {00FF00}azonosítószámú házat!\", HouseID);
SendClientMessage(playerid, 0xFFFFFFFF, Msg);
// Exit the function
return 1;
}
}
else
SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Tulajdonossal rendelkezõ házakat nem törölhetsz!\");
}
}
// There was no house in range, so let the player know about it
SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Nincs a közelben ház!\");
}
else
SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Csak gyalog lehet házat törölni!\");
// Let the server know that this was a valid command
return 1;
}
// This command lets the player buy a house when he\'s standing in range of a house that isn\'t owned yet
COMMAND:buyhouse(playerid, params[])
{
// Setup local variables
new Msg[128];
// If a player hasn\'t logged in properly, he cannot use this command
if (INT_IsPlayerLoggedIn(playerid) == 0) return 0;
// Check if the player isn\'t inside a vehicle (the player must be on foot to use this command)
if (GetPlayerVehicleSeat(playerid) == -1)
{
// Check if the player is near a house-pickup
for (new HouseID = 1; HouseID < MAX_HOUSES; HouseID++)
{
// Check if the house exists
if (IsValidDynamicPickup(AHouseData[HouseID][PickupID]))
{
// Check if the player is in range of the house-pickup
if (IsPlayerInRangeOfPoint(playerid, 2.5, AHouseData[HouseID][HouseX], AHouseData[HouseID][HouseY], AHouseData[HouseID][HouseZ]))
{
// Check if the house isn\'t owned yet
if (AHouseData[HouseID][Owned] == false)
{
// Check if the player can afford this house
if (INT_GetPlayerMoney(playerid) >= AHouseData[HouseID][HousePrice])
House_SetOwner(playerid, HouseID); // Give ownership of the house to the player (if he has a spare houseslot)
else
SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Nem engedheted meg magadnak ezt a házat! Ok: kevés pénz\"); // The player cannot afford this house
}
else
{
// Let the player know that this house is already owned by a player
format(Msg, 128, \"{FF0000}Ezt a házat már megvették! Tulajdonos: {FFFF00}%s\", AHouseData[HouseID][Owner]);
SendClientMessage(playerid, 0xFFFFFFFF, Msg);
}
// The player was in range of a house-pickup, so stop searching for the other house pickups
return 1;
}
}
}
// All houses have been processed, but the player wasn\'t in range of any house-pickup, let him know about it
SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Házvásárláshoz közel kell légy egy ház-pickuphoz!\");
}
else
SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Nem tudsz jármûben házat venni!\");
// Let the server know that this was a valid command
return 1;
}
// This command lets the player enter the house/business if he\'s the owner
COMMAND:enter(playerid, params[])
{
// Setup local variables
new HouseID, IntID;
// If a player hasn\'t logged in properly, he cannot use this command
if (INT_IsPlayerLoggedIn(playerid) == 0) return 0;
// Check if the player isn\'t inside a vehicle (the player must be on foot to use this command)
if (GetPlayerVehicleSeat(playerid) == -1)
{
// Loop through all houses
for (HouseID = 1; HouseID < MAX_HOUSES; HouseID++)
{
// Check if the house exists
if (IsValidDynamicPickup(AHouseData[HouseID][PickupID]))
{
// Check if the player is in range of the house-pickup
if (IsPlayerInRangeOfPoint(playerid, 2.5, AHouseData[HouseID][HouseX], AHouseData[HouseID][HouseY], AHouseData[HouseID][HouseZ]))
{
// Check if the house is closed to the public
if (AHouseData[HouseID][HouseOpened] == false)
{
// The house isn\'t open to the public, so keep anyone out who isn\'t the owner of the house
if (House_PlayerIsOwner(playerid, HouseID) == 0)
{
// Let the player know that this house isn\'t open to the public and he can\'t enter it
SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Ez a ház magánház, nem léphetsz be!\");
return 1;
}
}
// The house is open to the public, or the player trying to enter is the owner, so let the player inside the house
// Get the interior to put the player in
IntID = AHouseData[HouseID][HouseLevel]; // Get the level of the house
// Set the worldid so other players cannot see him anymore (but allow all players in the same house to see eachother)
SetPlayerVirtualWorld(playerid, 5000 + HouseID);
// Set the player inside the
Üdv