Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- CREATE TABLE IF NOT EXISTS `Houses` (
- `Owner` varchar(40) NOT NULL,
- `Keys` varchar(200) NOT NULL,
- `Price` int(40) NOT NULL,
- `IntID` int(40) NOT NULL,
- `Rentfee` int(40) NOT NULL,
- `InX` double NOT NULL,
- `InY` double NOT NULL,
- `InZ` double NOT NULL,
- `OutX` double NOT NULL,
- `OutY` double NOT NULL,
- `OutZ` double NOT NULL,
- `Int` int(40) NOT NULL,
- `VirWorld` int(40) NOT NULL,
- `Locked` int(2) NOT NULL,
- `AcceptRent` int(2) NOT NULL,
- `HouseKasse` int(40) NOT NULL,
- `Objects` longtext NOT NULL,
- `Color` varchar(6) NOT NULL,
- `HouseID` int(40) NOT NULL AUTO_INCREMENT,
- UNIQUE KEY `HouseID` (`HouseID`)
- ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=41 ;
- CREATE TABLE IF NOT EXISTS `Objects` (
- `PosX` float NOT NULL,
- `PosY` float NOT NULL,
- `PosZ` float NOT NULL,
- `rX` float NOT NULL,
- `rY` float NOT NULL,
- `rZ` float NOT NULL,
- `modelID` int(7) NOT NULL,
- `show` tinyint(1) NOT NULL,
- `hID` int(12) NOT NULL,
- `objID` int(12) NOT NULL AUTO_INCREMENT,
- UNIQUE KEY `objID` (`objID`)
- ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci AUTO_INCREMENT=41 ;
- CREATE TABLE IF NOT EXISTS `Interior` (
- `ID` int(11) NOT NULL,
- `Pos_X_Innen` float NOT NULL,
- `Pos_Y_Innen` float NOT NULL,
- `Pos_Z_Innen` float NOT NULL,
- `Interior` int(11) NOT NULL,
- `Beschreibung` text NOT NULL
- ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
- --
- -- Daten für Tabelle `Interior`
- --
- INSERT INTO `Interior` (`ID`, `Pos_X_Innen`, `Pos_Y_Innen`, `Pos_Z_Innen`, `Interior`, `Beschreibung`) VALUES
- (2, 244.5, 305, 999.1, 1, 'Bedsit'),
- (1, 1.2, -3.4, 999.4, 2, 'Trailer'),
- (3, 267.1, 305, 999.1, 2, 'Bedsit'),
- (4, 301.3, 306.3, 1003.5, 4, 'Bedsit'),
- (5, 344.3, 305.2, 999.1, 6, 'Bedsit'),
- (6, 446.1, 507.9, 1001.4, 12, '2 Zimmer Apartment'),
- (7, -42.4, 1408.2, 1084.4, 8, '3 Zimmer Bungalow'),
- (8, 2464.1, -1698.6, 1013.5, 2, '3 Zimmer Bungalow'),
- (9, 386.1, 1471.8, 1080.1, 15, '3 Zimmer Apartment'),
- (10, 221.6, 1143.6, 1082.6, 4, '3 Zimmer Apartment'),
- (11, 260.6, 1238.8, 1084.2, 9, '4 Zimmer Apartment'),
- (12, 261, 1286, 1080.2, 4, '4 Zimmer Haus'),
- (13, 745.3, 1437.7, 1102.7, 6, '4 Zimmer Apartment'),
- (14, 376.3, 1417.2, 1081.3, 15, '4 Zimmer Apartment'),
- (15, 27.1, 1341.1, 1084.3, 10, '4 Zimmer Haus'),
- (16, 2526.4, -1679, 1015.4, 1, '4 Zimmer Bedsit'),
- (17, 222.8, 1288.7, 1082.1, 1, '4 Zimmer Apartment'),
- (18, 23, 1405.6, 1084.4, 5, '4 Zimmer Haus'),
- (19, 235.3, 1189.2, 1080.2, 3, '4 Zimmer Haus'),
- (20, 447, 1400.3, 1084.3, 2, '5 Zimmer Apartment'),
- (21, 234.2, 1064.9, 1084.2, 6, '5 Zimmer Haus'),
- (22, 327.9, 1478.3, 1084.4, 15, '5 Zimmer Slum'),
- (23, 295.4, 1473.2, 1080.2, 15, '5 Zimmer Apartment'),
- (24, 140.4, 1370.3, 1083.8, 5, '6 Zimmer Haus'),
- (25, 489.7, 1402.5, 1080.2, 2, '6 Zimmer Villa'),
- (26, 83.3, 1324.7, 1083.8, 9, '6 Zimmer Haus'),
- (27, 231.4, 1114.1, 1080.9, 5, '7 Zimmer Villa'),
- (28, 225.6, 1023.5, 1084, 7, '8 Zimmer Villa'),
- (29, -285.9, 1470.8, 1084.3, 15, '4 Zimmer Villa'),
- (30, -262.7, 1456.6, 1084.3, 4, '3 Zimmer Villa'),
- (31, -68.8, 1354.7, 1080.2, 6, '2 Zimmer Villa'),
- (32, 2254.3, -1140, 1050.6, 9, '2 Zimmer Villa'),
- (33, 2261.3, -1135.9, 1050.6, 10, '3 Zimmer Villa'),
- (34, 2324.4, -1147.5, 1050.7, 12, '8 Zimmer Villa'),
- (35, 2624.66, 1553.15, -9.0081, 0, 'Office');
- //SUMDEBUG
- [12:05:22] <RG_> Shift+Numpad4: 8224, Shift+Numpad6: 16416
- [12:05:54] <RG_> Numpad0+Numpad4: 8196, Numpad0+Numpad6: 16388
- [12:06:17] <RG_> Numpad4: 8192, Numpad6:16384
- //34= hoch 2= unten 6 = langsam unten 38 = langsam hoch
- */
- #include <a_samp>
- #include <mysql>
- #include <sscanf2>
- #include <ocmd>
- #include <streamer>
- //-------------------------------MySQL CONFIG-----------------------------------
- #define DB_HOST "somehost"
- #define DB_USER "someuser"
- #define DB_DB "somedb"
- #define DB_PW "somepw"
- #define MYSQL_PLAYER_TABLE "somespielertable"
- #define MYSQL_PLAYER_SPAWNATHOUSE "SpawnAtHouse"
- #define MYSQL_PLAYER_SPAWNHID "SpawnHID"
- //--------------------------------SETTINGS--------------------------------------
- #define MAX_House 200
- #define MAX_NOM 20
- #define MAX_HouseNAME 64
- #define MAX_HOUSEOBJECTS 200
- #define MAX_HOUSEOBJECTMODELS 50
- #define MAX_OBJECTDESC 50
- #define DRAWDISTANCE 10.0
- #define MAX_INTERIORS 40
- #define RANGE 2.0
- #define RANGEINT 50.0
- #define MAX_KEYS 8
- //#define GivePlayerMoney GivePlayerMoneyOld -> Someanticheat
- //#define SetPlayerMoney SetPlayerMoneyOld
- //#define GetPlayerMoney GetPlayerMoneyOld
- //#define CreateObject CreateDynamicObject
- //#define SetPlayerPos(%0) CallRemoteFunction("SetPlayerPosEx", "dfff", %0)
- //#define ShowPlayerDialog(%0) CallRemoteFunction("ShowPlayerDialogEx", "dddssss", %0)
- //#define IsPlayerAdmin(%0) CallRemoteFunction("IsAdmin", "d", %0)
- //stock GetPlayerMoneyOld(playerid) return CallRemoteFunction("GetPlayerMoneyEx","d",playerid);
- //stock SetPlayerMoneyOld(playerid, amount) return CallRemoteFunction("SetPlayerMoneyEx","dd",playerid,amount);
- //stock GivePlayerMoneyOld(playerid, amount) return CallRemoteFunction("GivePlayerMoneyEx","dd",playerid,amount);
- //--------------------------------DIALOGE---------------------------------------
- #define DIALOG_BUY 451
- #define DIALOG_CONFIG 452
- #define DIALOG_FUNCTION 453
- //--------------------------------COLORS----------------------------------------
- #define ROT 0xAA3333AA
- #define GREEN 0x33AA33AA
- //#define BLUE 0x0000FFFF
- #define BLUE 0xFFFFFFFF
- #define WHITE 0xFFFFFFFF
- //-------------------------NEWS,FORWARDS&ENUMS----------------------------------
- forward Update3DText();
- new query[600];
- new AutoLineCounter = 1;
- new HouseTypeInfoText[MAX_INTERIORS][MAX_HouseNAME];
- enum HouseInfo
- {
- Owner[MAX_NOM],
- Color[10],
- Keys[MAX_KEYS*MAX_NOM],
- Price,
- Locked,
- AcceptRent,
- Rentfee,
- Text3D:Label,
- Text3D:IntLabel,
- Pickup,
- IntPickup,
- Float:InX,
- Float:InY,
- Float:InZ,
- Float:OutX,
- Float:OutY,
- Float:OutZ,
- Int,
- IntID,
- HouseKasse,
- VirWorld
- }
- new HouseData[MAX_House][HouseInfo];
- enum Int_Typ
- {
- interior,
- Float:int_x,
- Float:int_y,
- Float:int_z
- }
- enum ObjectInfo{
- Float:Objx,
- Float:Objy,
- Float:Objz,
- Float:Objrx,
- Float:Objry,
- Float:Objrz,
- modelID,
- bool:show,
- objHouseID,
- objID,
- cobjID,
- }
- new ObjectData[MAX_HOUSEOBJECTS][ObjectInfo];
- new Interiors[MAX_INTERIORS][Int_Typ];
- public OnFilterScriptInit()
- {
- mysql_init();
- new i = 1;
- for(;i<MAX_INTERIORS;i++)
- {
- LoadInterior(i);
- }
- i = 0;
- for(;i<MAX_House;i++)
- {
- HouseData[i][Label] = Text3D:-1;
- HouseData[i][IntLabel] = Text3D:-1;
- HouseData[i][Pickup] = -1;
- HouseData[i][IntPickup] = -1;
- LoadHouse(i);
- }
- SetTimer("Update3DText",5000,1);
- return 1;
- }
- public OnFilterScriptExit()
- {
- for(new i = 0; i<MAX_House;i++)
- {
- Delete3DTextLabel(HouseData[i][Label]);
- Delete3DTextLabel(HouseData[i][IntLabel]);
- DestroyPickup(HouseData[i][Pickup]);
- DestroyPickup(HouseData[i][IntPickup]);
- if(HouseData[i][Pickup] != -1)
- SaveHouse(i);
- }
- }
- stock LoadInterior(IntiD)
- {
- new data[256];
- format(query, sizeof(query), "SELECT * FROM `Interior` WHERE ID = '%d';",IntiD);
- mysql_query(query);
- mysql_store_result();
- if(0 < mysql_num_rows())
- {
- printf(" ::::::::::::::::::::::: Int loading :::::::::::::::::::::::");
- IntiD -= 1;
- mysql_fetch_field("Pos_X_Innen",data);
- Interiors[IntiD][int_x]= floatstr(data);
- format(data, sizeof(data), "InX: %f", Interiors[IntiD][int_x]);
- printf(data);
- mysql_fetch_field("Pos_Y_Innen",data);
- Interiors[IntiD][int_y]= floatstr(data);
- format(data, sizeof(data), "InY: %f", Interiors[IntiD][int_y]);
- printf(data);
- mysql_fetch_field("Pos_Z_Innen",data);
- Interiors[IntiD][int_z]= floatstr(data);
- format(data, sizeof(data), "InZ: %f", Interiors[IntiD][int_z]);
- mysql_fetch_field("Beschreibung",data);
- strmid(HouseTypeInfoText[IntiD],data,0,strlen(data),MAX_NOM);
- format(data, sizeof(data), "Desc: %s", HouseTypeInfoText[IntiD]);
- printf(data);
- mysql_fetch_field("Interior",data);
- Interiors[IntiD][interior]= strval(data);
- format(data, sizeof(data), "Int: %d", Interiors[IntiD][interior]);
- printf(data);
- printf(" ::::::::::::::::::::::: Int loaded :::::::::::::::::::::::");
- }
- mysql_free_result();
- return 1;
- }
- stock LoadHouse(HouseID)//Ferig :]
- {
- new data[256],string1[256];
- format(query, sizeof(query), "SELECT * FROM `Houses` WHERE HouseID = '%d';",HouseID);
- mysql_query(query);
- mysql_store_result();
- if(0 < mysql_num_rows())
- {
- AutoLineCounter++;
- printf("");
- printf(" ::::::::::::::::::::::: House loading :::::::::::::::::::::::");
- printf("");
- mysql_fetch_field("Owner",data);
- strmid(HouseData[HouseID][Owner],data,0,strlen(data),MAX_NOM);
- format(data, sizeof(data), "Owner: %s", HouseData[HouseID][Owner]);
- printf(data);
- mysql_fetch_field("Keys",data);
- strmid(HouseData[HouseID][Keys],data,0,strlen(data),MAX_NOM*MAX_KEYS);
- format(data, sizeof(data), "Keys: %s", HouseData[HouseID][Keys]);
- printf(data);
- mysql_fetch_field("Color",data);
- strmid(HouseData[HouseID][Color],data,0,strlen(data),10);
- format(data, sizeof(data), "Color: %s", HouseData[HouseID][Color]);
- printf(data);
- mysql_fetch_field("Price",data);
- HouseData[HouseID][Price]= strval(data);
- format(data, sizeof(data), "Wert: %d", HouseData[HouseID][Price]);
- printf(data);
- mysql_fetch_field("Rentfee",data);
- HouseData[HouseID][Rentfee]= strval(data);
- format(data, sizeof(data), "Eintritt: %d", HouseData[HouseID][Rentfee]);
- printf(data);
- mysql_fetch_field("IntID",data);
- HouseData[HouseID][IntID]= strval(data);
- format(data, sizeof(data), "IntID: %d", HouseData[HouseID][IntID]);
- printf(data);
- mysql_fetch_field("InX",data);
- HouseData[HouseID][InX]= floatstr(data);
- format(data, sizeof(data), "InX: %f", HouseData[HouseID][InX]);
- printf(data);
- mysql_fetch_field("InY",data);
- HouseData[HouseID][InY]= floatstr(data);
- format(data, sizeof(data), "InY: %f", HouseData[HouseID][InY]);
- printf(data);
- mysql_fetch_field("InZ",data);
- HouseData[HouseID][InZ]= floatstr(data);
- format(data, sizeof(data), "InZ: %f", HouseData[HouseID][InZ]);
- printf(data);
- mysql_fetch_field("OutX",data);
- HouseData[HouseID][OutX]= floatstr(data);
- format(data, sizeof(data), "OutX: %f", HouseData[HouseID][OutX]);
- printf(data);
- mysql_fetch_field("OutY",data);
- HouseData[HouseID][OutY]= floatstr(data);
- format(data, sizeof(data), "OutX: %f", HouseData[HouseID][OutY]);
- printf(data);
- mysql_fetch_field("OutZ",data);
- HouseData[HouseID][OutZ]= floatstr(data);
- format(data, sizeof(data), "OutZ: %f", HouseData[HouseID][OutZ]);
- printf(data);
- mysql_fetch_field("Int",data);
- HouseData[HouseID][Int]= strval(data);
- format(data, sizeof(data), "IntID: %d", HouseData[HouseID][Int]);
- printf(data);
- mysql_fetch_field("Int",data);
- HouseData[HouseID][Int]= strval(data);
- format(data, sizeof(data), "IntID: %d", HouseData[HouseID][Int]);
- printf(data);
- mysql_fetch_field("Locked",data);
- HouseData[HouseID][Locked]= strval(data);
- format(data, sizeof(data), "Locked: %d", HouseData[HouseID][Locked]);
- printf(data);
- mysql_fetch_field("AcceptRent",data);
- HouseData[HouseID][AcceptRent]= strval(data);
- format(data, sizeof(data), "AcceptRent: %d", HouseData[HouseID][AcceptRent]);
- printf(data);
- mysql_fetch_field("HouseKasse",data);
- HouseData[HouseID][HouseKasse]= strval(data);
- format(data, sizeof(data), "Kasse: %d$", HouseData[HouseID][HouseKasse]);
- printf(data);
- mysql_fetch_field("VirWorld",data);
- HouseData[HouseID][VirWorld]= strval(data);
- format(data, sizeof(data), "VirWorld: %d", HouseData[HouseID][VirWorld]);
- printf(data);
- HouseData[HouseID][VirWorld] = HouseID;
- HouseData[HouseID][AcceptRent] = 1;
- if(strlen(HouseData[HouseID][Color])<6)
- strmid(HouseData[HouseID][Color],"FFFFFF",0,6,9);
- // Alle Werte da, lasst uns Icon+3D Text erstellen
- HouseData[HouseID][IntLabel]= Create3DTextLabel("Ausgang",0x007AD1FF,HouseData[HouseID][InX],HouseData[HouseID][InY],HouseData[HouseID][InZ],DRAWDISTANCE,HouseData[HouseID][VirWorld]);
- HouseData[HouseID][IntPickup]= CreatePickup(1272,1,HouseData[HouseID][InX],HouseData[HouseID][InY],HouseData[HouseID][InZ],HouseData[HouseID][VirWorld]);
- if(strmatch(HouseData[HouseID][Owner],"None"))
- {
- // HouseData[HouseID][MapIcon]= CreateMapIcon(52,kP,HouseData[HouseID][OutX],HouseData[HouseID][OutY],HouseData[HouseID][OutZ]);
- format(string1,sizeof(string1),"Dieses Haus steht zum Verkauf\nBeschreibung: %s\nPreis: %d$\nTippe /buyHouse um\nes zu kaufen",HouseTypeInfoText[HouseData[HouseID][IntID]],HouseData[HouseID][Price]);
- HouseData[HouseID][Label]= Create3DTextLabel(string1,BLUE,HouseData[HouseID][OutX],HouseData[HouseID][OutY],HouseData[HouseID][OutZ],DRAWDISTANCE,0);
- HouseData[HouseID][Pickup]= CreatePickup(1273,1,HouseData[HouseID][OutX],HouseData[HouseID][OutY],HouseData[HouseID][OutZ]);
- }
- else
- {
- format(string1,sizeof(string1),"{%s}Dieses Haus gehört %s\nBeschreibung: %s\nDerzeitige Mieter: %d/%d\nMiete: %d$\nTippe /rent um\nein Zimmer zu mieten",HouseData[HouseID][Color],HouseData[HouseID][Owner],HouseTypeInfoText[HouseData[HouseID][IntID]],GetHouseRenters(HouseID),MAX_KEYS,HouseData[HouseID][Rentfee]);
- HouseData[HouseID][Label]= Create3DTextLabel(string1,BLUE,HouseData[HouseID][OutX],HouseData[HouseID][OutY],HouseData[HouseID][OutZ],DRAWDISTANCE,0);
- HouseData[HouseID][Pickup]= CreatePickup(1272,1,HouseData[HouseID][OutX],HouseData[HouseID][OutY],HouseData[HouseID][OutZ]);
- }
- printf("");
- LoadHouseObjects(HouseID);
- printf(" ::::::::::::::::::::::: House Loaded :::::::::::::::::::::::");
- printf("");
- }
- mysql_free_result();
- return 1;
- }
- LoadHouseObjects(hid){
- format(query,sizeof query, "SELECT * FROM Objects WHERE hID = '%d'",hid);
- mysql_query(query);
- mysql_store_result();
- new dest[128],infosplit[10][12], objid;
- while(mysql_fetch_row(dest,";")){
- split(dest,infosplit,';');
- objid = strval(infosplit[9]);
- for(new i = 0; i < sizeof(ObjectData[])-2; i++)
- ObjectData[objid][ObjectInfo:i] = (i > 5) ? strval(infosplit[i]) : (_:floatstr(infosplit[i]));
- if(infosplit[7][0])
- ObjectData[objid][cobjID] = CreateDynamicObject(ObjectData[objid][modelID],ObjectData[objid][Objx],ObjectData[objid][Objy],ObjectData[objid][Objz],
- ObjectData[objid][Objrx],ObjectData[objid][Objry],ObjectData[objid][Objrz],
- HouseData[ObjectData[objid][objHouseID]][VirWorld],HouseData[ObjectData[objid][objHouseID]][Int]);
- }
- return mysql_free_result();
- }
- SaveHouseObjects(hid){
- for(new i = 0; i < MAX_HOUSEOBJECTS; i++){
- if(ObjectData[i][objHouseID] == hid){
- format(query,sizeof query, "UPDATE Objects SET PosX = '%f',PosY = '%f',PosZ = '%f',\
- rX = '%f',rY = '%f',rZ = '%f',modelID = '%d', `show` = '%d', hID = '%d' WHERE objID = '%d'",
- ObjectData[i][Objx],ObjectData[i][Objy],ObjectData[i][Objz],
- ObjectData[i][Objrx],ObjectData[i][Objry],ObjectData[i][Objrz],
- ObjectData[i][modelID],ObjectData[i][show],ObjectData[i][objHouseID],i);
- mysql_query(query);
- }
- }
- return 1;
- }
- GetHouseRenters(hid)
- {
- new Keysplit[MAX_KEYS][MAX_NOM],count;
- split(HouseData[hid][Keys], Keysplit,',');
- for(new i = 0;i<MAX_KEYS;i++)
- if(strlen(Keysplit[i])>0)count++;
- return count;
- }
- stock split(const strsrc[], strdest[][], delimiter = '|')
- {
- new i, li, aNum, len, srclen = strlen(strsrc);
- while(i <= srclen)
- {
- if (strsrc[i] == delimiter || i == srclen)
- {
- len = strmid(strdest[aNum], strsrc, li, i, 128);
- strdest[aNum][len] = 0;
- li = i + 1;
- aNum++;
- }
- i++;
- }
- }
- stock CreateNewHouse(Float:X,Float:Y,Float:Z,intiD,price,InteriorID)
- {
- format(query,sizeof(query),"INSERT INTO `Houses` (`Owner`,`InX`,`InY`,`InZ`,`OutX`,`OutY`,`OutZ`,`Price`,`IntID`,`Int`)\
- VALUES ('None','%f','%f','%f','%f','%f','%f','%d','%d','%d')",Interiors[InteriorID][int_x],Interiors[InteriorID][int_y],
- Interiors[InteriorID][int_z],X,Y,Z,price,intiD,Interiors[InteriorID][interior]);
- mysql_query(query);
- format(query,sizeof(query),"SELECT HouseID FROM Houses WHERE OutX = '%f' AND OutY = '%f'",X,Y);
- mysql_query(query);
- mysql_store_result();
- if(0 < mysql_num_rows())
- {
- mysql_fetch_field("HouseID",query);
- LoadHouse(strval(query));
- }
- mysql_free_result();
- return 1;
- }
- stock GetPlayerNearestHouse(playerid)
- {
- new Float:x,Float:y,Float:z;
- GetPlayerPos(playerid,x,y,z);
- for(new i = 0;i<MAX_House;i++)
- if(IsPlayerInRangeOfPoint(playerid,RANGE,HouseData[i][OutX],HouseData[i][OutY],HouseData[i][OutZ]))
- return i;
- return -1;
- }
- stock GetPlayerNearestHouseInterior(playerid, entrance = 0)
- {
- new Float:x,Float:y,Float:z;
- GetPlayerPos(playerid,x,y,z);
- for(new i = 0;i<MAX_House;i++)
- if(!entrance){
- if(IsPlayerInRangeOfPoint(playerid,RANGEINT,HouseData[i][InX],HouseData[i][InY],HouseData[i][InZ])&&HouseData[i][VirWorld] == GetPlayerVirtualWorld(playerid))
- return i;
- }
- else{
- if(IsPlayerInRangeOfPoint(playerid,2.0,HouseData[i][InX],HouseData[i][InY],HouseData[i][InZ])&&HouseData[i][VirWorld] == GetPlayerVirtualWorld(playerid))
- return i;
- }
- return -1;
- }
- stock SaveHouse(HouseID)
- {
- format(query,sizeof(query),"UPDATE `Houses` SET `Owner` = '%s' , `Keys` = '%s'\
- , `Color` = '%s', `Price` = '%d', `Locked` = '%d', `AcceptRent` = '%d', `Rentfee` = '%d',`InX` = '%f'\
- ,`InY` = '%f',`InZ` = '%f',`OutX` = '%f',`OutY` = '%f',`OutZ` = '%f',`Int` = '%d'\
- ,`HouseKasse` = '%d',`VirWorld` = '%d' ,`IntID` = '%d' WHERE `HouseID` = '%d'",
- HouseData[HouseID][Owner],HouseData[HouseID][Keys],HouseData[HouseID][Color],HouseData[HouseID][Price],HouseData[HouseID][Locked],
- HouseData[HouseID][AcceptRent],HouseData[HouseID][Rentfee],HouseData[HouseID][InX],HouseData[HouseID][InY],HouseData[HouseID][InZ],
- HouseData[HouseID][OutX],HouseData[HouseID][OutY],HouseData[HouseID][OutZ],HouseData[HouseID][Int],HouseData[HouseID][HouseKasse],
- HouseData[HouseID][VirWorld],HouseData[HouseID][IntID],HouseID);
- mysql_query(query);
- SaveHouseObjects(HouseID);
- return 1;
- }
- stock HasPlayerKey(playername[],hid)// Fertig
- {
- new Keysplit[MAX_KEYS][MAX_NOM];
- split(HouseData[hid][Keys], Keysplit,',');
- for(new i = 0;i<MAX_KEYS;i++)
- if(strmatch(Keysplit[i],playername))return 1;
- return 0;
- }
- public OnPlayerConnect(playerid)
- {
- SetPVarInt(playerid,"SelObject",-1);
- return 0;
- }
- stock AddPlayerKey(playername[],hid)
- {
- new Keysplit[MAX_KEYS][MAX_NOM];
- split(HouseData[hid][Keys], Keysplit,',');
- for(new i = 0;i<MAX_KEYS;i++)
- if(strmatch(Keysplit[i],playername))return 0;
- else if(strmatch(Keysplit[i],""))
- {
- strmid(Keysplit[i],playername,0,120,120);
- strmid(HouseData[hid][Keys],"",0,0,0);
- for(new u=0;u<MAX_KEYS;u++)
- if(!strmatch(Keysplit[u],""))
- format(HouseData[hid][Keys],1024,"%s,%s",HouseData[hid][Keys],Keysplit[u]);
- SaveHouse(hid);
- return 1;
- }
- return 0;
- }
- stock RemovePlayerKey(playername[],hid)
- {
- new Keysplit[MAX_KEYS][MAX_NOM];
- split(HouseData[hid][Keys], Keysplit,',');
- for(new i = 0;i<MAX_KEYS;i++)
- if(strmatch(Keysplit[i],playername))
- {
- strmid(Keysplit[i],"",0,0,0);
- strmid(HouseData[hid][Keys],"",0,0,0);
- for(new u=0;u<MAX_KEYS;u++)
- if(!strmatch(Keysplit[u],""))
- format(HouseData[hid][Keys],1024,"%s,%s",HouseData[hid][Keys],Keysplit[u]);
- SaveHouse(hid);
- return 1;
- }
- return 0;
- }
- public Update3DText()
- {
- new string1[256];
- for(new i = 0;i<MAX_House;i++)
- {
- if(HouseData[i][Label] != Text3D:-1)
- {
- if(strmatch(HouseData[i][Owner],"None"))
- {
- format(string1,sizeof(string1),"Dieses Haus steht zum Verkauf\nBeschreibung: %s\nPreis: %d$\nTippe /buyHouse um\nes zu kaufen",HouseTypeInfoText[HouseData[i][IntID]],HouseData[i][Price]);
- Update3DTextLabelText(HouseData[i][Label],BLUE,string1);
- }
- else
- {
- format(string1,sizeof(string1),"{%s}Dieses Haus gehört %s\nBeschreibung: %s\nDerzeitige Mieter: %d/%d\nMiete: %d$\nTippe /rent um\nein Zimmer zu mieten",HouseData[i][Color],HouseData[i][Owner],HouseTypeInfoText[HouseData[i][IntID]],GetHouseRenters(i),MAX_KEYS,HouseData[i][Rentfee]);
- Update3DTextLabelText(HouseData[i][Label],BLUE,string1);
- }
- }
- }
- }
- forward OnPlayerHausSpawn(playerid);
- public OnPlayerHausSpawn(playerid)
- {
- if(!GetPVarInt(playerid,"FirstSpawn"))
- // if(GetPVarInt(playerid,"SpawnHouse"))
- {
- new hid;
- hid = mysql_GetInt(MYSQL_PLAYER_TABLE,MYSQL_PLAYER_SPAWNHID,"Name",PlayerName(playerid));// So ergibt das i-wie einfach garnicks, keine Werte drinne
- if((strmatch(HouseData[hid][Owner],PlayerName(playerid))|| HasPlayerKey(PlayerName(playerid),hid)&&hid != -1) && mysql_GetInt(MYSQL_PLAYER_TABLE, MYSQL_PLAYER_SPAWNATHOUSE, "Name", PlayerName(playerid)))
- {
- SetPlayerInterior(playerid,HouseData[hid][Int]);
- SetPlayerVirtualWorld(playerid,HouseData[hid][VirWorld]);
- SetPlayerPosWait(playerid,HouseData[hid][InX],HouseData[hid][InY],HouseData[hid][InZ]);
- SetPVarInt(playerid,"SpawnHouse",1);
- SetPVarInt(playerid,"FirstSpawn",1);
- return 1;
- }
- }
- SetPVarInt(playerid,"FirstSpawn",1);
- return 0;
- }
- public OnRconCommand(cmd[])
- {
- new parts[3][24];
- if(strfind(cmd,"refresh") != -1)
- {
- split(cmd,parts,' ');
- CallRemoteFunction("refresh","s",parts[1]);
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- if(!IsPlayerConnected(i)) continue;
- if(!strmatch(PlayerName(i),parts[1])) continue;
- for(new u = 0; u < MAX_House; u++)
- {
- if(!strmatch(PlayerName(i),HouseData[u][Owner]) && !HasPlayerKey(PlayerName(i),u)) continue;
- SaveHouse(u);
- }
- }
- return 1;
- }
- if(strfind(cmd,"changename") != -1)
- {
- split(cmd,parts,' ');
- CallRemoteFunction("OnPlayerChangeName","ss",parts[1],parts[2]);
- return 1;
- }
- return 0;
- }
- stock mysql_SetInt(Table[], Field[], To, Where[], Where2[])
- {
- format(query, sizeof(query), "UPDATE `%s` SET `%s` = '%d' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
- mysql_query(query);
- return true;
- }
- stock mysql_GetString(Table[], Field[], Where[], Where2[])
- {
- new Get[128];
- format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Where2);
- mysql_query(query);
- mysql_store_result();
- mysql_fetch_row(Get);
- mysql_free_result();
- return Get;
- }
- stock mysql_GetString1(Table[], Field[], Where[], Where2)
- {
- new Get[600];
- format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%d'", Field, Table, Where, Where2);
- mysql_query(query);
- mysql_store_result();
- mysql_fetch_row(Get);
- mysql_free_result();
- return Get;
- }
- stock mysql_GetInt(Table[], Field[], Where[], Where2[])
- {
- return strval(mysql_GetString(Table, Field, Where, Where2));
- }
- #define PRESSED(%0) \
- (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
- #define RELEASED(%0) \
- (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
- public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
- {
- if(newkeys == KEY_SECONDARY_ATTACK)
- {
- new HouseID = GetPlayerNearestHouse(playerid);
- if(HouseID != -1)
- {
- if(HouseData[HouseID][Locked] && !HasPlayerKey(PlayerName(playerid),HouseID) && !strmatch(HouseData[HouseID][Owner],PlayerName(playerid))) return SendClientMessage(playerid,ROT,"Es ist abgeschlossen!");
- SetPlayerInterior(playerid,HouseData[HouseID][Int]);
- SetPlayerVirtualWorld(playerid,HouseData[HouseID][VirWorld]);
- if(HasPlayerKey(PlayerName(playerid),HouseID) || strmatch(HouseData[HouseID][Owner],PlayerName(playerid)))
- mysql_SetInt(MYSQL_PLAYER_TABLE, MYSQL_PLAYER_SPAWNHID, HouseID, "Name", PlayerName(playerid));
- return SetPlayerPosWait(playerid,HouseData[HouseID][InX],HouseData[HouseID][InY],HouseData[HouseID][InZ]);
- }
- HouseID = GetPlayerNearestHouseInterior(playerid,1);
- if(HouseID != -1)
- {
- SetPlayerInterior(playerid,0);
- SetPlayerVirtualWorld(playerid,0);
- SetPVarInt(playerid,"Editing",0);
- return SetPlayerPosWait(playerid,HouseData[HouseID][OutX],HouseData[HouseID][OutY],HouseData[HouseID][OutZ]);
- }
- }
- if(GetPVarInt(playerid,"Editing") && GetPlayerNearestHouseInterior(playerid) != -1)
- {
- /*if((newkeys & KEY_WALK))
- if(GetPVarInt(playerid,"SelOK") == 1)SelectObject(playerid),SetPVarInt(playerid,"SelOK",0);
- else if(!GetPVarInt(playerid,"SelOK"))CancelEdit(playerid),SetPVarInt(playerid,"SelOK",1);*/
- if(PRESSED(KEY_WALK))
- CancelEdit(playerid);
- else if(RELEASED(KEY_WALK))
- {
- if(GetPVarInt(playerid,"SelOK") == 1)
- SelectObject(playerid);
- if(GetPVarInt(playerid,"SelObject") != -1)
- EditDynamicObject(playerid,GetPVarInt(playerid,"SelObject"));
- }
- }
- return 0;
- }
- stock PlayerName(playerid)
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- return name;
- }
- forward PayDayPart(i);
- public PayDayPart(i)
- {
- new string[128];
- if(!IsPlayerConnected(i)) return 0;
- if(!IsPlayerLoggedIn(i)) return 0;
- for(new u = 0;u < MAX_House;u++)
- {
- if(HasPlayerKey(PlayerName(i),u))
- {
- if(GetPlayerMoney(i) > HouseData[u][Rentfee])
- {
- GivePlayerMoney(i,-HouseData[u][Rentfee]);
- HouseData[u][HouseKasse] += HouseData[u][Rentfee];
- format(string,sizeof string, "Mietrechnung: Hausbesitzer: %s, Miete: $%d",HouseData[u][Owner],HouseData[u][Rentfee]);
- SendClientMessage(i,WHITE,string);
- }
- else
- {
- format(string,sizeof string, "Du kannst die Mietrechnung vom Hausbesitzer %s (Miete: $%d) nichtmehr bezahlen, darum wurdest du aus dem Haus geworfen!",HouseData[u][Owner],HouseData[u][Rentfee]);
- RemovePlayerKey(PlayerName(i),u);
- SendClientMessage(i,WHITE,string);
- }
- }
- }
- return 1;
- }
- IsPlayerLoggedIn(pid)return CallRemoteFunction("LoggedIn","d",pid);
- forward OnPlayerChangeNameHouse(oldname[],newname[]);
- public OnPlayerChangeNameHouse(oldname[],newname[])
- {
- for(new i = 0;i<MAX_House;i++)
- {
- if(strmatch(HouseData[i][Owner],oldname))
- strmid(HouseData[i][Owner],newname,0,24);
- if(HasPlayerKey(oldname,i))
- RemovePlayerKey(oldname,i),
- AddPlayerKey(newname,i);
- }
- return 1;
- }
- public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
- {
- SetPVarInt(playerid, "InDiag", 0);
- switch(dialogid)
- {
- case DIALOG_BUY:
- {
- if(response == 0) return SendClientMessage(playerid,ROT,"Abgebrochen");
- new HouseID = GetPVarInt(playerid,"SelectedHouse");
- if(!strmatch(HouseData[HouseID][Owner],"None")) return SendClientMessage(playerid,ROT,"Dieses Haus steht nicht zum Verkauf!");
- if(GetPlayerMoney(playerid) < HouseData[HouseID][Price]) return SendClientMessage(playerid,ROT,"Du hast zuwenig Geld");
- strmid(HouseData[HouseID][Owner],PlayerName(playerid),0,strlen(PlayerName(playerid)),MAX_NOM);
- SendClientMessage(playerid,GREEN,"Glückwunsch zu deinem neuen Haus! Tippe /confighouse (/ch) um es zu konfigurieren!");
- GivePlayerMoney(playerid,-HouseData[HouseID][Price]);
- }
- case DIALOG_CONFIG:
- {
- if(response == 0) return SendClientMessage(playerid,ROT,"Verlassen");
- new hid = GetPVarInt(playerid,"SelectedHouse");
- SetPVarInt(playerid,"SelectedFunction",listitem);
- new caption[128],string[256],keysplit[MAX_KEYS][MAX_NOM];
- switch(listitem)
- {
- case 0:
- {
- format(caption,sizeof caption,"{FFFFFF}Hauskasse: {33AA33}$%d{FFFFFF}",HouseData[hid][HouseKasse]);
- format(string,sizeof string,"{FFFFFF}Derzeitige Hauskasse: {33AA33}$%d{FFFFFF}\nUm Geld aus der Kasse abzuheben, tippen Sie ''abheben, [Betrag]''\
- \nUm Geld in die Kasse einzuzahlen, tippen Sie ''einzahlen, [Betrag]''",HouseData[hid][HouseKasse]);
- }
- case 1:
- {
- format(caption,sizeof caption,"{FFFFFF}Mietkosten: {33AA33}$%d{FFFFFF}",HouseData[hid][Rentfee]);
- format(string,sizeof string,"{FFFFFF}Derzeitige Mietkosten: {33AA33}$%d{FFFFFF}\nUm diesen Betrag zu ändern, tippen Sie den neuen Betrag ein:",HouseData[hid][Rentfee]);
- }
- case 2:
- {
- format(caption,sizeof caption,"{FFFFFF}Derzeitige Mieter",HouseData[hid][Rentfee]);
- split(HouseData[hid][Keys],keysplit,',');
- for(new i = 0; i < MAX_KEYS;i++)
- if(!strmatch(keysplit[i],"")) format(string,sizeof string,"%s\n%s",string,keysplit[i]);
- format(string,sizeof string,"{FFFFFF}Derzeitige Mitbewohner:\n\n%s\nUm einen Mieter rauszuwerfen, tippen Sie dessen Namen ein:\n",string);
- }
- case 3:
- {
- format(caption,sizeof caption,"{FFFFFF}Derzeitige Textfarbe",HouseData[hid][Rentfee]);
- format(string,sizeof string,"{FFFFFF}Derzeitige Textfarbe:\n{%s}||||||||||||||||{FFFFFF}\nUm diese Farbe zu ändern, tippen Sie einen neuen 6stelligen Farbcode ein:\n",HouseData[hid][Color]);
- }
- }
- ShowPlayerDialog(playerid,DIALOG_FUNCTION,DIALOG_STYLE_INPUT,caption,string,"Bestätigen","Zurück");
- }
- case DIALOG_FUNCTION:
- {
- new HouseID = GetPVarInt(playerid,"SelectedHouse"), string1[256];
- if(response == 0)
- {
- format(string1,sizeof string1,"{FFFFFF}Hauskasse: {33AA33}$%d{FFFFFF}\nMietkosten: {33AA33}$%d{FFFFFF}\nMieter verwalten\nTextfarbe",HouseData[HouseID][HouseKasse],HouseData[HouseID][Rentfee]);
- return ShowPlayerDialog(playerid,DIALOG_CONFIG,DIALOG_STYLE_LIST,"Hauskonfiguration",string1,"Wählen","Verlassen");
- }
- switch(GetPVarInt(playerid,"SelectedFunction"))
- {
- case 0:
- {
- if(strfind(inputtext,"abheben",true) != -1)
- {
- new params[2][20],betrag;
- if(strfind(inputtext,",",true) != -1)
- split(inputtext,params,',');
- else
- split(inputtext,params,' ');
- betrag = strval(params[1]);
- if(betrag <= 0) return SendClientMessage(playerid,ROT,"Der Betrag bei einer Auszahlung MUSS über 0 liegen!")+OnDialogResponse(playerid,DIALOG_CONFIG,1,0," ");
- if(betrag > HouseData[HouseID][HouseKasse])return SendClientMessage(playerid,ROT,"Soviel Geld steht nicht zur Verfügung!")+OnDialogResponse(playerid,DIALOG_CONFIG,1,0," ");
- HouseData[HouseID][HouseKasse]-=betrag;
- OnDialogResponse(playerid,DIALOG_CONFIG,1,0," ");
- return GivePlayerMoney(playerid,betrag);
- }
- if(strfind(inputtext,"einzahlen",true) != -1)
- {
- new param[2][20],betrag;
- if(strfind(inputtext,",",true) != -1)
- split(inputtext,param,',');
- else
- split(inputtext,param,' ');
- split(inputtext,param,',');
- betrag = strval(param[1]);
- if(betrag <= 0) return SendClientMessage(playerid,ROT,"Der Betrag bei einer Einzahlung MUSS über 0 liegen!")+OnDialogResponse(playerid,DIALOG_CONFIG,1,0," ");
- if(betrag > GetPlayerMoney(playerid)) return SendClientMessage(playerid,ROT,"Du besitzt nicht soviel Geld!")+OnDialogResponse(playerid,DIALOG_CONFIG,1,0," ");
- HouseData[HouseID][HouseKasse]+=betrag;
- OnDialogResponse(playerid,DIALOG_CONFIG,1,0," ");
- GivePlayerMoney(playerid,-betrag);
- }
- else
- {
- OnDialogResponse(playerid,DIALOG_CONFIG,1,0," ");
- SendClientMessage(playerid,ROT,"Oops, es trat ein Fehler auf, bitte versuche es erneut");
- }
- }
- case 1:
- {
- new rentfee = strval(inputtext);
- if(rentfee < 0) return SendClientMessage(playerid,ROT,"Der Betrag der Miete MUSS über 0 liegen!")+OnDialogResponse(playerid,DIALOG_CONFIG,1,1," ");
- if(rentfee > 10000) return SendClientMessage(playerid,ROT,"Der Betrag der Miete MUSS unter 10.000 liegen!")+OnDialogResponse(playerid,DIALOG_CONFIG,1,1," ");
- HouseData[hid][Rentfee] = rentfee;
- OnDialogResponse(playerid,DIALOG_CONFIG,1,1," ");
- }
- case 2:
- {
- if(!HasPlayerKey(PlayerName(playerid),hid)) return SendClientMessage(playerid,ROT,"Dieser Spieler hat keinen Schlüssel!")+OnDialogResponse(playerid,DIALOG_CONFIG,1,2," ");
- if(!RemovePlayerKey(PlayerName(playerid),hid)) return SendClientMessage(playerid,ROT,"Dieser Spieler hat keinen Schlüssel!")+OnDialogResponse(playerid,DIALOG_CONFIG,1,2," ");
- OnDialogResponse(playerid,DIALOG_CONFIG,1,2," ");
- }
- case 3:
- {
- if(strlen(inputtext)>6 || strlen(inputtext) < 6) return SendClientMessage(playerid,ROT,"Der Farbcode ist zu lang/kurz!")+OnDialogResponse(playerid,DIALOG_CONFIG,1,3," ");
- if(!ishex(inputtext)) return SendClientMessage(playerid,ROT,"Dies ist kein valider Farbcode!")+OnDialogResponse(playerid,DIALOG_CONFIG,1,3," ");
- strmid(HouseData[hid][Color],inputtext,0,9,9);
- SendClientMessage(playerid,GREEN,"Farbe erfolgreich geändert!");
- return OnDialogResponse(playerid,DIALOG_CONFIG,1,3," ");
- }
- }
- }
- }
- return 0;
- }
- stock ishex(str[])//credits to y_less
- {
- new
- i,
- cur;
- if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X'))
- i = 2;
- while (str[i])
- {
- cur = str[i++];
- if ((cur < '0') || (cur > '9' && cur < 'A') || (cur > 'F' && cur < 'a') || (cur > 'f')) return 0;
- }
- return 1;
- }
- enum blubb
- {
- conObject
- }
- new Container[20][blubb];
- ocmd:attachcon(playerid,params[]) {
- new id;
- if(!sscanf(params, "d", id)) return 0;
- AttachObjectToVehicle(Container[id][conObject], GetPlayerVehicleID(playerid), 0, 0, 0, 0, 0, 0);
- return 1;
- }
- ocmd:spawnchange(playerid,params[])
- {
- mysql_SetInt(MYSQL_PLAYER_TABLE, MYSQL_PLAYER_SPAWNATHOUSE, ((GetPVarInt(playerid,"SpawnHouse") == 1) ? 0 : 1), "Name", PlayerName(playerid));
- SendClientMessage(playerid,GREEN,((GetPVarInt(playerid,"SpawnHouse") == 0) ? ("Du spawnst nun an deinem Haus!") : ("Du spawnst nun an deiner letzen Position!")));
- SetPVarInt(playerid,"SpawnHouse",((GetPVarInt(playerid,"SpawnHouse") == 1) ? 0 : 1));
- return 1;
- }
- /*ocmd:boom(playerid,params[])
- {
- RemoveBuildingForPlayer(playerid, 3838, -2787.8438, -123.9297, 10.5781, 0.25);
- RemoveBuildingForPlayer(playerid, 3827, -2787.8438, -123.9297, 10.5781, 0.25);
- RemoveBuildingForPlayer(playerid, 11024, -2076.2734, 359.3203, 44.5938, 0.25);
- RemoveBuildingForPlayer(playerid, 3868, -2120.7656, 336.8672, 49.1563, 200.0);
- RemoveBuildingForPlayer(playerid, 3867, -2131.1797, 347.2813, 49.1563, 200.0);
- RemoveBuildingForPlayer(playerid, 10949, -2076.2734, 359.3203, 44.5938, 0.25);
- RemoveBuildingForPlayer(playerid, 10946, -2076.6563, 354.3672, 35.7891, 0.25);
- RemoveBuildingForPlayer(playerid, 11403, -2076.6563, 354.3672, 35.7891, 0.25);
- return 1;
- }
- ocmd:help(playerid,params[])
- {
- new str[1100];
- format(str,sizeof str,"{FFFFFF} ------------------------------------------------------------------------------------------------------------------------------------\n");
- format(str,sizeof str,"%s| Immobilien:\t\t\t\t\t| Immobilien:\t\t\t\t\t|\n",str);
- format(str,sizeof str,"%s| - /buyhouse \t-> Haus kaufen\t\t\t| - /buyhouse \t-> Haus kaufen\t\t\t|\n",str);
- format(str,sizeof str,"%s| - /ch\t\t-> Haus konfigurieren\t\t| - /ch\t\t-> Haus konfigurieren\t\t|\n",str);
- format(str,sizeof str,"%s| - /hlock\t-> Haus abschließen\t\t| - /hlock\t-> Haus abschließen\t\t|\n",str);
- format(str,sizeof str,"%s| - /sellhouse\t-> Haus verkaufen\t\t| - /sellhouse\t-> Haus verkaufen\t\t|\n",str);
- format(str,sizeof str,"%s| - /(un)rent\t-> Zimmer mieten/kündigen\t| - /(un)rent\t-> Zimmer mieten/kündigen\t|\n",str);
- format(str,sizeof str,"%s|------------------------------------------------------------------\t|------------------------------------------------------------------\t||\n",str);
- format(str,sizeof str,"%s| Fahrzeuge:\t\t\t\t\t|\t\t|\t\t|\t\t|\n",str);
- format(str,sizeof str,"%s| - sellveh \t-> Auto verkaufen\t\t|\t\t|\t\t|\t\t|\n",str);
- format(str,sizeof str,"%s| - /cc\t\t-> Auto konfigurieren\t\t|\t\t|\t\t|\t\t|\n",str);
- format(str,sizeof str,"%s| - /carlock\t-> Auto abschließen\t\t|\t\t|\t\t|\t\t|\n",str);
- format(str,sizeof str,"%s| - /carhelp\t-> Erweiterte Hilfe\t\t|\t\t|\t\t|\t\t| \n",str);
- format(str,sizeof str,"%s| - /carhelp\t-> Erweiterte Hilfe\t\t|\t\t|\t\t|\t\t| \n",str);
- format(str,sizeof str,"%s------------------------------------------------------------------------------------------------------------------------------------",str);
- ShowPlayerDialog(playerid,999,DIALOG_STYLE_MSGBOX,"Hilfe",str,"Ok!","");
- return 1;
- }*/
- ocmd:buyhouse(playerid,params[])
- {
- #pragma unused params
- new HouseID = GetPlayerNearestHouse(playerid);
- if(HouseID == -1) return SendClientMessage(playerid,ROT,"Du bist zu weit von einem Haus entfernt!");
- if(!strmatch(HouseData[HouseID][Owner],"None")) return SendClientMessage(playerid,ROT,"Dieses Haus steht nicht zum Verkauf!");
- new string[256];
- format(string,sizeof(string),"--------Hausinformationen:--------\n\nBeschreibung: %s\nPreis: %d$",
- HouseTypeInfoText[HouseData[HouseID][IntID]],HouseData[HouseID][Price]);
- ShowPlayerDialog(playerid,DIALOG_BUY,DIALOG_STYLE_MSGBOX,"Haus erwerben",string,"Kaufen","Abbrechen");
- SetPVarInt(playerid,"SelectedHouse",HouseID);
- return 1;
- }
- ocmd:hlock(playerid,params[])
- {
- #pragma unused params
- new HouseID = GetPlayerNearestHouse(playerid);
- if(HouseID == -1) HouseID = GetPlayerNearestHouseInterior(playerid,1);
- if(HouseID == -1) return SendClientMessage(playerid,ROT,"Du bist zu weit von einem Haus entfernt!");
- if(!strmatch(PlayerName(playerid),HouseData[HouseID][Owner])) return SendClientMessage(playerid,ROT,"Dieses Haus gehört nicht dir!");
- if(!HouseData[HouseID][Locked])
- {
- HouseData[HouseID][Locked]=true;
- return SendClientMessage(playerid,GREEN,"Abgeschlossen!");
- }
- else
- {
- HouseData[HouseID][Locked]=false;
- return SendClientMessage(playerid,GREEN,"Aufgesperrt!");
- }
- }
- ocmd:edit(playerid,params[])
- {
- new hid = GetPlayerNearestHouseInterior(playerid);
- if(hid == -1)return SendClientMessage(playerid,ROT,"Du befindest dich nicht nahe eines Hauses!");
- if(!strmatch(HouseData[hid][Owner],PlayerName(playerid))) return SendClientMessage(playerid,ROT,"Du kannst dieses Haus nicht bearbeiten!");
- SetPVarInt(playerid,"Editing",1);
- SetPVarInt(playerid,"SelOK",0);
- SetPVarInt(playerid,"SelObject",-1);
- SelectObject(playerid);
- return 1;
- }
- ocmd:endedit(playerid,params[]){
- SetPVarInt(playerid,"Editing",0);
- return 1;
- }
- ocmd:addobj(playerid,params[])
- {
- new hid = GetPlayerNearestHouseInterior(playerid);
- if(hid == -1)return SendClientMessage(playerid,ROT,"Du befindest dich nicht nahe eines Hauses!");
- if(!strmatch(HouseData[hid][Owner],PlayerName(playerid))) return SendClientMessage(playerid,ROT,"Du kannst dieses Haus nicht bearbeiten!");
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,ROT,"Diesen Befehl darfst du nicht nutzen!");
- new objmodel,objid;
- if(sscanf(params,"d",objmodel)) return SendClientMessage(playerid,ROT,"Verwendung: /addobj objmodel");
- GetPlayerPos(playerid,ObjectData[199][Objx],ObjectData[199][Objy],ObjectData[199][Objz]);
- format(query,sizeof query, "INSERT INTO Objects (`modelID`,`show`,`hID`,`PosX`,`PosY`,`PosZ`) VALUES ('%d','1','%d','%f','%f','%f')",objmodel,hid,ObjectData[199][Objx],ObjectData[199][Objy],ObjectData[199][Objz]);
- mysql_query(query);
- format(query,sizeof query, "SELECT objID FROM Objects WHERE `modelID` = '%d' AND `show` = '1' AND `hID` = '%d' ORDER BY objID DESC LIMIT 1",objmodel,hid);
- mysql_query(query);
- mysql_store_result();
- new result[64];
- mysql_fetch_field("objID",result);
- mysql_free_result();
- objid = strval(result);
- ObjectData[objid][modelID] = objmodel;
- ObjectData[objid][objHouseID] = hid;
- format(result,sizeof result,"OBJID: %d -> HID: %d <%s> -> TESTME <%d>",objid,hid,result,9230);
- SendClientMessage(playerid,ROT,result);
- GetPlayerPos(playerid,ObjectData[objid][Objx],ObjectData[objid][Objy],ObjectData[objid][Objz]);
- ObjectData[objid][cobjID] = CreateDynamicObject(ObjectData[objid][modelID],ObjectData[objid][Objx],ObjectData[objid][Objy],ObjectData[objid][Objz],
- ObjectData[objid][Objrx],ObjectData[objid][Objry],ObjectData[objid][Objrz],
- HouseData[ObjectData[objid][objHouseID]][VirWorld],HouseData[ObjectData[objid][objHouseID]][Int]);
- SaveHouseObjects(hid);
- return 1;
- }
- public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz){
- if(GetPVarInt(playerid,"Editing")){
- new hid = GetPlayerNearestHouseInterior(playerid);
- if(hid == -1)return SendClientMessage(playerid,ROT,"Du befindest dich nicht nahe eines Hauses!"),SetPVarInt(playerid,"Editing",0);
- if(!strmatch(HouseData[hid][Owner],PlayerName(playerid))) return SendClientMessage(playerid,ROT,"Du kannst dieses Haus nicht bearbeiten!"),SetPVarInt(playerid,"Editing",0);
- for(new i = 0; i < MAX_HOUSEOBJECTS; i ++){
- if(ObjectData[i][objHouseID] == hid && ObjectData[i][cobjID] == objectid){
- switch(response){
- case EDIT_RESPONSE_CANCEL:{
- new keystate,UNUSE;
- GetPlayerKeys(playerid,keystate,UNUSE,UNUSE);
- if(!(keystate & KEY_WALK))
- {
- MoveDynamicObject(objectid,ObjectData[i][Objx],ObjectData[i][Objy],ObjectData[i][Objz],5.0,
- ObjectData[i][Objrx],ObjectData[i][Objry],ObjectData[i][Objrz]);
- SetPVarInt(playerid,"SelOK",1);
- SetPVarInt(playerid,"SelObject",-1);
- }
- }
- case EDIT_RESPONSE_UPDATE:MoveDynamicObject(objectid,x,y,z,1000,rx,ry,rz);
- case EDIT_RESPONSE_FINAL:{
- ObjectData[i][Objx] = x;
- ObjectData[i][Objy] = y;
- ObjectData[i][Objz] = z;
- ObjectData[i][Objrx] = rx;
- ObjectData[i][Objry] = ry;
- ObjectData[i][Objrz] = rz;
- MoveDynamicObject(objectid,x,y,z,5.0,rx,ry,rz);
- SaveHouseObjects(hid);
- SelectObject(playerid);
- SendClientMessage(playerid,GREEN,"Erfolgreich gespeichert!");
- SetPVarInt(playerid,"SelOK",1);
- SetPVarInt(playerid,"SelObject",-1);
- }
- }
- return 1;
- }
- }
- }
- return 0;
- }
- public OnPlayerSelectDynamicObject(playerid, objectid, modelid, Float:x, Float:y, Float:z){
- if(GetPVarInt(playerid,"Editing")){
- new hid = GetPlayerNearestHouseInterior(playerid);
- if(hid == -1)return SendClientMessage(playerid,ROT,"Du befindest dich nicht nahe eines Hauses!"),SetPVarInt(playerid,"Editing",0);
- if(!strmatch(HouseData[hid][Owner],PlayerName(playerid))) return SendClientMessage(playerid,ROT,"Du kannst dieses Haus nicht bearbeiten!"),SetPVarInt(playerid,"Editing",0);
- for(new i = 0; i < MAX_HOUSEOBJECTS; i ++){
- if(ObjectData[i][objHouseID] == hid && ObjectData[i][cobjID] == objectid)
- EditDynamicObject(playerid, objectid),SetPVarInt(playerid,"SelOK",2),SetPVarInt(playerid,"SelObject",objectid);
- }
- }
- return 0;
- }
- ocmd:ch(playerid,params[])
- {
- new hid = GetPlayerNearestHouse(playerid);
- if(hid == -1) hid = GetPlayerNearestHouseInterior(playerid);
- if(hid == -1)return SendClientMessage(playerid,ROT,"Du befindest dich nicht nahe eines Hauses!");
- if(strmatch(HouseData[hid][Owner],PlayerName(playerid)))
- {
- new string[128];
- format(string,sizeof string,"{FFFFFF}Hauskasse: {33AA33}$%d{FFFFFF}\nMietkosten: {33AA33}$%d{FFFFFF}\nMieter verwalten\nTextfarbe",HouseData[hid][HouseKasse],HouseData[hid][Rentfee]);
- SetPVarInt(playerid,"SelectedHouse",hid);
- return ShowPlayerDialog(playerid,DIALOG_CONFIG,DIALOG_STYLE_LIST,"Hauskonfiguration",string,"Wählen","Verlassen");
- }
- return SendClientMessage(playerid,ROT,"Du kannst dieses Haus nicht konfigurieren!");
- }
- ocmd:confighouse(playerid,params[])
- {
- new hid = GetPlayerNearestHouse(playerid);
- if(hid == -1) hid = GetPlayerNearestHouseInterior(playerid);
- if(hid == -1)return SendClientMessage(playerid,ROT,"Du befindest dich nicht nahe eines Hauses!");
- if(strmatch(HouseData[hid][Owner],PlayerName(playerid)))
- {
- new string[128];
- format(string,sizeof string,"{FFFFFF}Hauskasse: {33AA33}$%d{FFFFFF}\nMietkosten: {33AA33}$%d{FFFFFF}\nMieter verwalten\nTextfarbe",HouseData[hid][HouseKasse],HouseData[hid][Rentfee]);
- SetPVarInt(playerid,"SelectedHouse",hid);
- return ShowPlayerDialog(playerid,DIALOG_CONFIG,DIALOG_STYLE_LIST,"Hauskonfiguration",string,"Wählen","Verlassen");
- }
- return SendClientMessage(playerid,ROT,"Du kannst dieses Haus nicht konfigurieren!");
- }
- ocmd:setcolor(playerid,params[])
- {
- new col1,col2;
- if(!IsPlayerAdmin(playerid)) return 1;
- if(sscanf(params,"dd",col1,col2)) return SendClientMessage(playerid,ROT,"Verwendung: /setcolor [col1] [col2]");
- ChangeVehicleColor(GetPlayerVehicleID(playerid),col1,col2);
- CallRemoteFunction("OnVehicleRespray","dddd",playerid,GetPlayerVehicleID(playerid),col1,col2);
- return 1;
- }
- ocmd:delveh(playerid,params[])
- {
- new vehid;
- if(!IsPlayerAdmin(playerid)) return 1;
- if(sscanf(params,"d",vehid)) return SendClientMessage(playerid,ROT,"Verwendung: /delveh [vehid]");
- DestroyVehicle(vehid);
- return 1;
- }
- ocmd:sethousepos(playerid,params[])
- {
- if(!IsPlayerAdmin(playerid)) return 1;
- new HouseID;
- if(sscanf(params,"d",HouseID)) return SendClientMessage(playerid,ROT,"Verwendung: /sethousepos [HouseID]");
- if(HouseData[HouseID][Pickup] == -1) return SendClientMessage(playerid,ROT,"Dieses Haus existiert nicht");
- GetPlayerPos(playerid,HouseData[HouseID][OutX],HouseData[HouseID][OutY],HouseData[HouseID][OutZ]);
- Delete3DTextLabel(HouseData[HouseID][Label]);
- DestroyPickup(HouseData[HouseID][Pickup]);
- new string1[140];
- if(strmatch(HouseData[HouseID][Owner],"None"))
- {
- // HouseData[HouseID][MapIcon]= CreateMapIcon(52,kP,HouseData[HouseID][OutX],HouseData[HouseID][OutY],HouseData[HouseID][OutZ]);
- format(string1,sizeof(string1),"Dieses Haus steht zum Verkauf\nBeschreibung: %s\nPreis: %d$\nTippe /buyHouse um\nes zu kaufen",HouseTypeInfoText[HouseData[HouseID][IntID]],HouseData[HouseID][Price]);
- HouseData[HouseID][Label]= Create3DTextLabel(string1,BLUE,HouseData[HouseID][OutX],HouseData[HouseID][OutY],HouseData[HouseID][OutZ],DRAWDISTANCE,0);
- HouseData[HouseID][Pickup]= CreatePickup(1273,1,HouseData[HouseID][OutX],HouseData[HouseID][OutY],HouseData[HouseID][OutZ]);
- }
- else
- {
- format(string1,sizeof(string1),"{%s}Dieses Haus gehört %s\nBeschreibung: %s\nDerzeitige Mieter: %d/%d\nMiete: %d$\nTippe /rent um\nein Zimmer zu mieten",HouseData[HouseID][Color],HouseData[HouseID][Owner],HouseTypeInfoText[HouseData[HouseID][IntID]],GetHouseRenters(HouseID),MAX_KEYS,HouseData[HouseID][Rentfee]);
- HouseData[HouseID][Label]= Create3DTextLabel(string1,BLUE,HouseData[HouseID][OutX],HouseData[HouseID][OutY],HouseData[HouseID][OutZ],DRAWDISTANCE,0);
- HouseData[HouseID][Pickup]= CreatePickup(1272,1,HouseData[HouseID][OutX],HouseData[HouseID][OutY],HouseData[HouseID][OutZ]);
- }
- return 1;
- }
- ocmd:sethouseint(playerid,params[])
- {
- new interiorid,HouseID;
- if(!IsPlayerAdmin(playerid)) return 1;
- if(sscanf(params,"d",interiorid)) return SendClientMessage(playerid,ROT,"Verwendung: /sethouseint [interior]");
- HouseID = GetPlayerNearestHouse(playerid);
- if(HouseID == -1) return SendClientMessage(playerid,ROT,"Du bist zu weit von einem Haus entfernt!");
- HouseData[HouseID][InX] = Interiors[interiorid][int_x];
- HouseData[HouseID][InY] = Interiors[interiorid][int_y];
- HouseData[HouseID][InZ] = Interiors[interiorid][int_z];
- HouseData[HouseID][Int] = Interiors[interiorid][interior];
- HouseData[HouseID][IntID] = interiorid;
- Delete3DTextLabel(HouseData[HouseID][IntLabel]);
- DestroyPickup(HouseData[HouseID][IntPickup]);
- HouseData[HouseID][IntLabel]= Create3DTextLabel("Ausgang",0x007AD1FF,HouseData[HouseID][InX],HouseData[HouseID][InY],HouseData[HouseID][InZ],DRAWDISTANCE,HouseData[HouseID][VirWorld]);
- HouseData[HouseID][IntPickup]= CreatePickup(1272,1,HouseData[HouseID][InX],HouseData[HouseID][InY],HouseData[HouseID][InZ],HouseData[HouseID][VirWorld]);
- SaveHouse(HouseID);
- return 1;
- }
- ocmd:createhouse(playerid,params[])
- {
- new price,interiorid;
- if(!IsPlayerAdmin(playerid)) return 1;
- if(sscanf(params,"dd",price,interiorid)) return SendClientMessage(playerid,ROT,"Verwendung: /createHouse [preis] [interior]");
- new Float:x,Float:y,Float:z;
- GetPlayerPos(playerid,x,y,z);
- CreateNewHouse(x,y,z,interiorid,price,interiorid);
- return 1;
- }
- ocmd:die(playerid,params[])
- {
- for(new i = 0; i<MAX_House;i++)
- {
- Delete3DTextLabel(Text3D:i);
- DestroyPickup(i);
- }
- return 1;
- }
- ocmd:rent(playerid,params[])
- {
- #pragma unused params
- new HouseID = GetPlayerNearestHouse(playerid);
- if(HouseID == -1) return SendClientMessage(playerid,ROT,"Du bist zu weit von einem Haus entfernt!");
- if(!HouseData[HouseID][AcceptRent]) return SendClientMessage(playerid,ROT,"Du kannst hier nicht mieten!");
- if(strmatch(HouseData[HouseID][Owner],"None") || strmatch(HouseData[HouseID][Owner],PlayerName(playerid)) ) return SendClientMessage(playerid,ROT,"Du kannst hier nicht mieten!");
- if(HasPlayerKey(PlayerName(playerid),HouseID)) return SendClientMessage(playerid,ROT,"Du mietest hier bereits ein Zimmer!");
- if(!AddPlayerKey(PlayerName(playerid),HouseID)) return SendClientMessage(playerid,ROT,"Es wohnen bereits 5 Leute in diesem Haus!");
- return SendClientMessage(playerid,GREEN,"Du hast erfolgreich ein Zimmer gemietet!");
- }
- ocmd:unrent(playerid,params[])
- {
- #pragma unused params
- new HouseID = GetPlayerNearestHouse(playerid);
- if(HouseID == -1) return SendClientMessage(playerid,ROT,"Du bist zu weit von einem Haus entfernt!");
- if(!HasPlayerKey(PlayerName(playerid),HouseID)) return SendClientMessage(playerid,ROT,"Du mietest hier doch garkein Zimmer!");
- if(!RemovePlayerKey(PlayerName(playerid),HouseID)) return SendClientMessage(playerid,ROT,"Es trat ein Fehler auf, benachrichtige bitte den Scripter.");
- return SendClientMessage(playerid,GREEN,"Du hast deinen Mietvertrag erfolgreich gekündigt!");
- }
- SetPlayerPosWait(pid,Float:x,Float:y,Float:z)
- {
- TogglePlayerControllable(pid,false);
- SetPlayerPos(pid,x,y,z);
- SetTimerEx("Unfreeze",1000,0,"d",pid);
- return 1;
- }
- forward Unfreeze(pid);
- public Unfreeze(pid) return TogglePlayerControllable(pid,true);
- stock strmatch(const String1[], const String2[])
- {
- if ((strcmp(String1, String2, true, strlen(String2)) == 0) && (strlen(String2) == strlen(String1))) return true;
- else return false;
- }
- forward SendFormatedMessage(playerid,color,const form[],{Float,_}:...);
- public SendFormatedMessage(playerid,color,const form[],{Float,_}:...)
- {
- new len = strlen(form),
- output[144],currarg=3,
- args = numargs()+1,
- replace[32],pos = 0,i = 0;
- strmid(output,form,0,len,144);
- if(args-1 > 0)
- {
- for(; i < len;i++)
- {
- replace = " ";
- if(currarg >=args)
- {
- break;
- }
- switch(output[i])
- {
- case '%':
- {
- switch(output[i+1])
- {
- case 'd','i':
- {
- valstr(replace,getarg(currarg,0));
- strdel(output, i, i+2);
- strins(output, replace, i);
- len = strlen(output);
- currarg++;
- continue;
- }
- case 'f':
- {
- format(replace,32,"%.4f",Float:getarg(currarg,0));
- strdel(output, i, i+2);
- strins(output, replace, i);
- len = strlen(output);
- currarg++;
- continue;
- }
- case 's':
- {
- while(getarg(currarg,pos) != 0)
- {
- replace[pos] = getarg(currarg,pos);
- pos++;
- }
- strdel(output, i, i+2);
- strins(output, replace, i);
- len = strlen(output);
- currarg++;
- continue;
- }
- }
- }
- }
- }
- }
- //printf("LOG: %s",output);
- return SendClientMessage(playerid,color,output);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement