Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Dynamisches Haussystem by ErikSon */
- #include <a_samp>
- #include <ocmd>
- #include <streamer>
- /* Settings */
- #define MAX_HAUS 15 // Maximale Anzahl der Häuser
- #define HAUS_FILE "/Hauser.ini" // Haus-Datei ( indem die Häuser gesaved werden )
- #define H_DIS 100 // Ab wann die Map-Icons angezeigt werden sollen
- /* Settings */
- enum
- {
- DIALOG_INT_AUSWAHL = 8100,
- DIALOG_INT_8_ZIMMER,
- DIALOG_INT_6_ZIMMER,
- DIALOG_INT_5_ZIMMER,
- DIALOG_INT_4_ZIMMER,
- DIALOG_INT_3_ZIMMER,
- DIALOG_INT_2_ZIMMER,
- DIALOG_INT_1_ZIMMER,
- DIALOG_PREIS,
- DIALOG_LEVEL,
- DIALOG_HH,
- dKasse,
- dKasse_Aus,
- dKasse_Ein,
- };
- enum haus_info
- {
- Float:haus_x,
- Float:haus_y,
- Float:haus_z,
- Float:haus_xi,
- Float:haus_yi,
- Float:haus_zi,
- haus_besitzer[32],
- haus_preis,
- haus_pickup,
- haus_level,
- haus_rooms,
- haus_int,
- haus_lock,
- haus_vw,
- Text3D:haus_label,
- haus_vkt,
- haus_id,
- haus_heal,
- haus_kasse,
- haus_icon
- }
- new Haus[MAX_HAUS][haus_info];
- enum ha
- {
- Float:posx,
- Float:posy,
- Float:posz,
- h_int,
- };
- new IntInfo[][ha] =
- {
- { 1.200000,-3.400000,999.400024,2 }, // Trailer
- { 244.500000,305.000000,999.099975,1 },// 'Bedsit'
- { 267.100006,305.000000,999.099975,2 },// 'Bedsit'
- { 301.299987,306.299987,1003.500000,4 },// 'Bedsit'
- { 344.299987,305.200012,999.099975,6 },// 'Bedsit'
- { 446.100006,507.899993,1001.400024,12 },// '2 Zimmer Apartment'
- { -42.400001,1408.199951,1084.400024,8 },// '3 Zimmer Bungalow'
- { 2464.100097,-1698.599975,1013.500000,2 },// '3 Zimmer Bungalow'
- { 386.100006,1471.800048,1080.099975,15 },// '3 Zimmer Apartment'
- { 221.600006,1143.599975,1082.599975,4 },// '3 Zimmer Apartment'
- { 260.600006,1238.800048,1084.199951,9 },// '4 Zimmer Apartment'
- { 261.000000,1286.000000,1080.199951,4 },// '4 Zimmer Haus'
- { 745.299987,1437.699951,1102.699951,6 },// '4 Zimmer Apartment'
- { 376.299987,1417.199951,1081.300048,15 },// '4 Zimmer Apartment'
- { 27.100000,1341.099975,1084.300048,10 },// '4 Zimmer Haus'
- { 2526.399902,-1679.000000,1015.400024,1 },// '4 Zimmer Bedsit'
- { 222.800003,1288.699951,1082.099975,1 },// '4 Zimmer Apartment'
- { 23.000000,1405.599975,1084.400024,5 },// '4 Zimmer Haus'
- { 235.300003,1189.199951,1080.199951,3 },// '4 Zimmer Haus'
- { 447.000000,1400.300048,1084.300048,2 },// '5 Zimmer Apartment'
- { 234.199996,1064.900024,1084.199951,6 },// '5 Zimmer Haus'
- { 327.899993,1478.300048,1084.400024,15 },// '5 Zimmer Slum'
- { 295.399993,1473.199951,1080.199951,15 },// '5 Zimmer Apartment'
- { 140.399993,1370.300048,1083.800048,5 },// '6 Zimmer Haus'
- { 489.700012,1402.500000,1080.199951,2 },// '6 Zimmer Luxus'
- { 83.300003,1324.699951,1083.800048,9 },// '6 Zimmer Haus'
- { 231.399993,1114.099975,1080.900024,5 },// '7 Zimmer Luxus'
- { 225.600006,1023.500000,1084.000000,7 },// '8 Zimmer Luxus'
- { -285.899993,1470.800048,1084.300048,15 },// '4 Zimmer Luxus'
- { -262.700012,1456.599975,1084.300048,4 },// '3 Zimmer Luxus'
- { -68.800003,1354.699951,1080.199951,6 },// '2 Zimmer Luxus'
- { 2254.300048,-1140.000000,1050.599975,9 },// '2 Zimmer Luxus'
- { 2261.300048,-1135.900024,1050.599975,10 },// '3 Zimmer Luxus'
- { 2324.399902,-1147.500000,1050.699951,12 }// '8 Zimmer Luxus'
- };
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print("Dynamisches Haussystem by ErikSon");
- print("--------------------------------------\n");
- return LoadHauser();
- }
- public OnFilterScriptExit()
- {
- for(new i=0;i<MAX_HAUS;i++)DestroyDynamic3DTextLabel(Haus[i][haus_label]),DestroyDynamicPickup(Haus[i][haus_pickup]),DestroyDynamicMapIcon(Haus[i][haus_icon]);
- return SaveHauser();
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- return DeletePVar(playerid,"ImHaus");
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys){
- if(newkeys & KEY_SECONDARY_ATTACK){
- if(NearestHaus(playerid) == -1 && NearestExit(playerid) == -1)return 1;
- if(NearestExit(playerid) != -1 && Haus[GetPVarInt(playerid,"ImHaus")][haus_vw] == GetPlayerVirtualWorld(playerid)){
- new ID = GetPVarInt(playerid,"ImHaus");
- SetPlayerPos(playerid,Haus[ID][haus_x],Haus[ID][haus_y],Haus[ID][haus_z]);
- SetPlayerInterior(playerid,0);
- SetPlayerVirtualWorld(playerid,0);
- SendClientMessage(playerid,-1,"Du hast das Haus verlassen.");
- return DeletePVar(playerid,"ImHaus");
- }
- else if(NearestHaus(playerid) != -1 && !Haus[NearestHaus(playerid)][haus_lock]){
- SetPlayerPos(playerid,Haus[NearestHaus(playerid)][haus_xi],Haus[NearestHaus(playerid)][haus_yi],Haus[NearestHaus(playerid)][haus_zi]);
- SetPlayerInterior(playerid,Haus[NearestHaus(playerid)][haus_int]);
- SetPlayerVirtualWorld(playerid,Haus[NearestHaus(playerid)][haus_vw]);
- SetPVarInt(playerid,"ImHaus",NearestHaus(playerid));
- return SendClientMessage(playerid,-1,"Du hast das Haus betreten.");
- }
- else if(Haus[NearestHaus(playerid)][haus_lock])return SendClientMessage(playerid,-1,"Dieses Haus ist abgeschlossen.");
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case DIALOG_INT_AUSWAHL:
- {
- if(response)
- {
- switch(listitem)
- {
- case 0:return ShowPlayerDialog(playerid,DIALOG_INT_8_ZIMMER,DIALOG_STYLE_LIST,"8 Zimmer","Luxus_1","Auswählen","Abbrechen");
- case 1:return SetPVarInt(playerid,"CHAUS_INT",27),ShowPlayerDialog(playerid,DIALOG_PREIS,DIALOG_STYLE_INPUT,"Preis","Gebe einen Preis für das Haus ein.","Weiter","Abbrechen");
- case 2:return ShowPlayerDialog(playerid,DIALOG_INT_6_ZIMMER,DIALOG_STYLE_LIST,"6 Zimmer","Luxus\nHaus_1\nHaus_2","Auswählen","Abbrechen");
- case 3:return ShowPlayerDialog(playerid,DIALOG_INT_5_ZIMMER,DIALOG_STYLE_LIST,"5 Zimmer","Haus\nApartment_1\nApartment_2\nSlum","Auswählen","Abbrechen");
- case 4:return ShowPlayerDialog(playerid,DIALOG_INT_4_ZIMMER,DIALOG_STYLE_LIST,"4 Zimmer","Luxus\nHaus_1\nHaus_2\nHaus_3\nHaus_4\nApartment_1\nApartment_2\nApartment_3\nApartment_4\nBedsit","Auswählen","Abbrechen");
- case 5:return ShowPlayerDialog(playerid,DIALOG_INT_3_ZIMMER,DIALOG_STYLE_LIST,"3 Zimmer","Luxus_1\nLuxus_2\nApartment_1\nApartment_2\nBungalow_1\nBungalow_2","Auswählen","Abbrechen");
- case 6:return ShowPlayerDialog(playerid,DIALOG_INT_2_ZIMMER,DIALOG_STYLE_LIST,"2 Zimmer","Luxus_1\nLuxus_2\nApartment","Auswählen","Abbrechen");
- case 7:return ShowPlayerDialog(playerid,DIALOG_INT_1_ZIMMER,DIALOG_STYLE_LIST,"1 Zimmer","Bedsit_1\nBedsit_2\nBedsit_3\nBedsit_4\nWohnwagen","Auswählen","Abbrechen");
- }
- }
- else SetCameraBehindPlayer(playerid),SetPlayerInterior(playerid,0);
- }
- case DIALOG_INT_8_ZIMMER:
- {
- if(response)
- {
- switch(listitem)
- {
- case 0:SetPVarInt(playerid,"CHAUS_INT",28);
- case 1:SetPVarInt(playerid,"CHAUS_INT",34);
- }
- return ShowPlayerDialog(playerid,DIALOG_PREIS,DIALOG_STYLE_INPUT,"Preis","Gebe einen Preis für das Haus ein.","Weiter","Abbrechen");
- }
- }
- case DIALOG_INT_6_ZIMMER:
- {
- if(response)
- {
- switch(listitem)
- {
- case 0:SetPVarInt(playerid,"CHAUS_INT",25);
- case 1:SetPVarInt(playerid,"CHAUS_INT",24);
- case 2:SetPVarInt(playerid,"CHAUS_INT",26);
- }
- return ShowPlayerDialog(playerid,DIALOG_PREIS,DIALOG_STYLE_INPUT,"Preis","Gebe einen Preis für das Haus ein.","Weiter","Abbrechen");
- }
- }
- case DIALOG_INT_5_ZIMMER:
- {
- if(response)
- {
- switch(listitem)
- {
- case 0:SetPVarInt(playerid,"CHAUS_INT",21);
- case 1:SetPVarInt(playerid,"CHAUS_INT",20);
- case 2:SetPVarInt(playerid,"CHAUS_INT",23);
- case 3:SetPVarInt(playerid,"CHAUS_INT",22);
- }
- return ShowPlayerDialog(playerid,DIALOG_PREIS,DIALOG_STYLE_INPUT,"Preis","Gebe einen Preis für das Haus ein.","Weiter","Abbrechen");
- }
- }
- case DIALOG_INT_4_ZIMMER:
- {
- if(response)
- {
- switch(listitem)
- {
- case 0:SetPVarInt(playerid,"CHAUS_INT",29);
- case 1:SetPVarInt(playerid,"CHAUS_INT",12);
- case 2:SetPVarInt(playerid,"CHAUS_INT",15);
- case 3:SetPVarInt(playerid,"CHAUS_INT",18);
- case 4:SetPVarInt(playerid,"CHAUS_INT",19);
- case 5:SetPVarInt(playerid,"CHAUS_INT",11);
- case 6:SetPVarInt(playerid,"CHAUS_INT",13);
- case 7:SetPVarInt(playerid,"CHAUS_INT",14);
- case 8:SetPVarInt(playerid,"CHAUS_INT",17);
- case 9:SetPVarInt(playerid,"CHAUS_INT",15);
- }
- return ShowPlayerDialog(playerid,DIALOG_PREIS,DIALOG_STYLE_INPUT,"Preis","Gebe einen Preis für das Haus ein.","Weiter","Abbrechen");
- }
- }
- case DIALOG_INT_3_ZIMMER:
- {
- if(response)
- {
- switch(listitem)
- {
- case 0:SetPVarInt(playerid,"CHAUS_INT",30);
- case 1:SetPVarInt(playerid,"CHAUS_INT",33);
- case 2:SetPVarInt(playerid,"CHAUS_INT",9);
- case 3:SetPVarInt(playerid,"CHAUS_INT",10);
- case 4:SetPVarInt(playerid,"CHAUS_INT",7);
- case 5:SetPVarInt(playerid,"CHAUS_INT",8);
- }
- return ShowPlayerDialog(playerid,DIALOG_PREIS,DIALOG_STYLE_INPUT,"Preis","Gebe einen Preis für das Haus ein.","Weiter","Abbrechen");
- }
- }
- case DIALOG_INT_2_ZIMMER:
- {
- if(response)
- {
- switch(listitem)
- {
- case 0:SetPVarInt(playerid,"CHAUS_INT",31);
- case 1:SetPVarInt(playerid,"CHAUS_INT",32);
- case 2:SetPVarInt(playerid,"CHAUS_INT",6);
- }
- return ShowPlayerDialog(playerid,DIALOG_PREIS,DIALOG_STYLE_INPUT,"Preis","Gebe einen Preis für das Haus ein.","Weiter","Abbrechen");
- }
- }
- case DIALOG_INT_1_ZIMMER:
- {
- if(response)
- {
- switch(listitem)
- {
- case 0:SetPVarInt(playerid,"CHAUS_INT",1);
- case 1:SetPVarInt(playerid,"CHAUS_INT",2);
- case 2:SetPVarInt(playerid,"CHAUS_INT",3);
- case 3:SetPVarInt(playerid,"CHAUS_INT",4);
- case 4:SetPVarInt(playerid,"CHAUS_INT",0);
- }
- return ShowPlayerDialog(playerid,DIALOG_PREIS,DIALOG_STYLE_INPUT,"Preis","Gebe einen Preis für das Haus ein.","Weiter","Abbrechen");
- }
- }
- case DIALOG_PREIS:
- {
- if(response)
- {
- if(strval(inputtext) <= 0)return ShowPlayerDialog(playerid,DIALOG_PREIS,DIALOG_STYLE_INPUT,"Preis","Gebe einen Preis für das Haus ein.","Weiter","Abbrechen");
- SetPVarInt(playerid,"CHAUS_PREIS",strval(inputtext));
- return ShowPlayerDialog(playerid,DIALOG_LEVEL,DIALOG_STYLE_INPUT,"Level","Gebe das mindest-Level ein, das\n der Spieler besitzen muss,\n um das Haus zu kaufen.","Fertig","Abbrechen");
- }
- }
- case DIALOG_LEVEL:
- {
- if(response)
- {
- new Float:Pos[3],rooms;
- GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
- new hi = GetPVarInt(playerid,"CHAUS_INT");
- if(strval(inputtext) <= 0)return ShowPlayerDialog(playerid,DIALOG_LEVEL,DIALOG_STYLE_INPUT,"Level","Gebe das mindest-Level ein, das\n der Spieler besitzen muss,\n um das Haus zu kaufen.","Fertig","Abbrechen");
- SetPVarInt(playerid,"CHAUS_LEVEL",strval(inputtext));
- SetCameraBehindPlayer(playerid),SetPlayerInterior(playerid,0);
- switch(hi)
- {
- case 1:(rooms = 1);
- case 2:(rooms = 1);
- case 3:(rooms = 1);
- case 4:(rooms = 1);
- case 0:(rooms = 1);
- case 31:(rooms = 2);
- case 32:(rooms = 2);
- case 6:(rooms = 2);
- case 30:(rooms = 3);
- case 33:(rooms = 3);
- case 9:(rooms = 3);
- case 10:(rooms = 3);
- case 7:(rooms = 3);
- case 8:(rooms = 3);
- case 29:(rooms = 4);
- case 12:(rooms = 4);
- case 15:(rooms = 4);
- case 18:(rooms = 4);
- case 19:(rooms = 4);
- case 11:(rooms = 4);
- case 13:(rooms = 4);
- case 14:(rooms = 4);
- case 17:(rooms = 4);
- case 21:(rooms = 5);
- case 20:(rooms = 5);
- case 23:(rooms = 5);
- case 22:(rooms = 5);
- case 25:(rooms = 6);
- case 24:(rooms = 6);
- case 26:(rooms = 6);
- case 27:(rooms = 7);
- case 28:(rooms = 8);
- case 34:(rooms = 8);
- }
- return CreateHaus(Pos[0],Pos[1],Pos[2],IntInfo[hi][posx],IntInfo[hi][posy],IntInfo[hi][posz],GetPVarInt(playerid,"CHAUS_PREIS"),GetPVarInt(playerid,"CHAUS_LEVEL"),IntInfo[hi][h_int],rooms);
- }
- }
- case dKasse:{
- if(!response)return 1;
- switch(listitem){
- case 0:return ShowPlayerDialog(playerid,dKasse_Aus,DIALOG_STYLE_INPUT,"Hauskasse - Auszahlen","Gebe einen Betrag in Dollar ein,\nwie viel du von der Kasse abheben willst:","Auszahlen","Abbrechen");
- case 1:return ShowPlayerDialog(playerid,dKasse_Ein,DIALOG_STYLE_INPUT,"Hauskasse - Einzahlen","Gebe einen Betrag in Dollar ein,\nwie viel du in die Kasse einzahlen willst:","Einzahlen","Abbrechen");
- }
- }
- case dKasse_Aus:{
- if(!response)return ocmd_hauskasse(playerid);
- else if(!strval(inputtext))return ocmd_hauskasse(playerid);
- if(Haus[NearestExit(playerid)][haus_kasse] < strval(inputtext))return ocmd_hauskasse(playerid);
- Haus[NearestExit(playerid)][haus_kasse] -= strval(inputtext);
- GivePlayerMoney(playerid,strval(inputtext));
- return ocmd_hauskasse(playerid);
- }
- case dKasse_Ein:{
- if(!response)return ocmd_hauskasse(playerid);
- else if(!strval(inputtext))return ocmd_hauskasse(playerid);
- if(GetPlayerMoney(playerid) < strval(inputtext))return ocmd_hauskasse(playerid);
- Haus[NearestExit(playerid)][haus_kasse] += strval(inputtext);
- GivePlayerMoney(playerid,-strval(inputtext));
- return ocmd_hauskasse(playerid);
- }
- }
- return 0;
- }
- ocmd:chaus(playerid)
- {
- if(!IsPlayerAdmin(playerid))return 1;
- new free = H_FreeSlot();
- if(free == -1)return SendClientMessage(playerid,-1,"Es können keine Häuser mehr erstellt werden! Erhöhen Sie die 'MAX_HAUS'-Zahl im Script!");
- return ShowPlayerDialog(playerid,DIALOG_INT_AUSWAHL,DIALOG_STYLE_LIST,"Haus erstellen - Interior","8 Zimmer\n7 Zimmer\n6 Zimmer\n5 Zimmer\n4 Zimmer\n3 Zimmer\n2 Zimmer\n1 Zimmer","Auswählen","Abbrechen");
- }
- ocmd@3:dhaus,delhaus,deletehaus(playerid,p[])
- {
- if(!IsPlayerAdmin(playerid))return 1;
- if(NearestHaus(playerid) == -1)return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses!");
- SendClientMessage(playerid,-1,"Du hast das Haus erfolgreich gelöscht.");
- return DelHaus(NearestHaus(playerid));
- }
- ocmd@2:hauskaufen,buyhaus(playerid,p[])
- {
- if(NearestHaus(playerid) == -1)return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses!");
- if(Haus[NearestHaus(playerid)][haus_vkt] == 1)return SendClientMessage(playerid,-1,"Dieses Haus wurde bereits gekauft!");
- if(GetPlayerScore(playerid) < Haus[NearestHaus(playerid)][haus_level])return SendClientMessage(playerid,-1,"Dein Level ist zu niedrig!");
- if(GetPlayerMoney(playerid) < Haus[NearestHaus(playerid)][haus_preis])return SendClientMessage(playerid,-1,"Du hast nicht genug Geld bei!");
- DestroyDynamicMapIcon(Haus[NearestHaus(playerid)][haus_icon]);
- Haus[NearestHaus(playerid)][haus_icon] = CreateDynamicMapIcon(Haus[NearestHaus(playerid)][haus_x],Haus[NearestHaus(playerid)][haus_y],Haus[NearestHaus(playerid)][haus_z],32,-1,-1,-1,-1,H_DIS);
- GivePlayerMoney(playerid,-Haus[NearestHaus(playerid)][haus_preis]);
- new str[128]; format(Haus[NearestHaus(playerid)][haus_besitzer],MAX_PLAYER_NAME,Name(playerid));
- DestroyDynamic3DTextLabel(Haus[NearestHaus(playerid)][haus_label]);
- format(str,128,"Hausnummer: %i\nBesitzer: %s\nLevel: %d\nPreis: $%d\n\nStatus: '%s'",Haus[NearestHaus(playerid)][haus_id],Name(playerid),Haus[NearestHaus(playerid)][haus_level],Haus[NearestHaus(playerid)][haus_preis],(Haus[NearestHaus(playerid)][haus_lock] == 1) ? ("geschlossen") : ("geöffnet"));
- CreateDynamic3DTextLabel(str,-1,Haus[NearestHaus(playerid)][haus_x],Haus[NearestHaus(playerid)][haus_y],Haus[NearestHaus(playerid)][haus_z],20,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,-1,-1,-1,100);
- return Haus[NearestHaus(playerid)][haus_vkt] = 1;
- }
- ocmd@2:hausverkaufen,sellhaus(playerid,p[])
- {
- new str[128];
- if(NearestHaus(playerid) == -1)return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses!");
- if(strcmp(Haus[NearestHaus(playerid)][haus_besitzer],Name(playerid),false))return SendClientMessage(playerid,-1,"Dieses Haus gehört dir nicht!");
- GivePlayerMoney(playerid,Haus[NearestHaus(playerid)][haus_preis]);
- format(Haus[NearestHaus(playerid)][haus_besitzer],MAX_PLAYER_NAME,"Niemand");
- format(str,128,"Hausnummer: %i\nBesitzer: Niemand\nLevel: %d\nPreis: $%d\n\nStatus: '%s'",Haus[NearestHaus(playerid)][haus_id],Haus[NearestHaus(playerid)][haus_level],Haus[NearestHaus(playerid)][haus_preis],(Haus[NearestHaus(playerid)][haus_lock] == 1) ? ("geschlossen") : ("geöffnet"));
- DestroyDynamic3DTextLabel(Haus[NearestHaus(playerid)][haus_label]),DestroyDynamicMapIcon(Haus[NearestHaus(playerid)][haus_icon]);
- Haus[NearestHaus(playerid)][haus_icon] = CreateDynamicMapIcon(Haus[NearestHaus(playerid)][haus_x],Haus[NearestHaus(playerid)][haus_y],Haus[NearestHaus(playerid)][haus_z],31,-1,-1,-1,-1,H_DIS);
- Haus[NearestHaus(playerid)][haus_label] = CreateDynamic3DTextLabel(str,-1,Haus[NearestHaus(playerid)][haus_x],Haus[NearestHaus(playerid)][haus_y],Haus[NearestHaus(playerid)][haus_z],20,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,-1,-1,-1,100);
- return Haus[NearestHaus(playerid)][haus_vkt] = 0;
- }
- ocmd:hauskasse(playerid)
- {
- if(!GetPVarInt(playerid,"ImHaus"))return SendClientMessage(playerid,-1,"Du bist in keinem Haus!");
- new ID = GetPVarInt(playerid,"ImHaus");
- new string[128]; format(string,128,"Auszahlen: Es befinden sich '%d$' in der Kasse\nEinzahlen: Du hast gerade '%d$' dabei.",Haus[ID][haus_kasse],GetPlayerMoney(playerid));
- return ShowPlayerDialog(playerid,dKasse,DIALOG_STYLE_LIST,"Hauskasse",string,"Auswählen","Abbrechen");
- }
- ocmd:hheilen(playerid)
- {
- if(!GetPVarInt(playerid,"ImHaus"))return SendClientMessage(playerid,-1,"Du bist in keinem Haus!");
- new ID = GetPVarInt(playerid,"ImHaus");
- if(Haus[ID][haus_heal] == 0)return SendClientMessage(playerid,-1,"Dieses Haus besitzt nicht das Heil-Upgrade! ( /heilupgrade )");
- SetPlayerHealth(playerid,100),SetPlayerArmour(playerid,100);
- return SendClientMessage(playerid,-1,"Du hast dich geheilt & dir eine Schutzweste angezogen.");
- }
- ocmd:heilupgrade(playerid)
- {
- if(!GetPVarInt(playerid,"ImHaus"))return SendClientMessage(playerid,-1,"Du bist in keinem Haus!");
- new ID = GetPVarInt(playerid,"ImHaus");
- if(strcmp(Haus[ID][haus_besitzer],Name(playerid),false))return SendClientMessage(playerid,-1,"Dieses Haus gehört dir nicht!");
- if(Haus[ID][haus_heal])return SendClientMessage(playerid,-1,"Dieses Haus besitzt das Heil-Upgrade bereits!");
- Haus[ID][haus_heal] = 1;
- return SendClientMessage(playerid,-1,"Du hast dir das Heil-Upgrade gekauft. -> /hheilen");
- }
- ocmd:haustuer(playerid)
- {
- if(NearestHaus(playerid) == -1 && NearestExit(playerid) == -1)return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses!");
- if(NearestHaus(playerid) != -1 && strcmp(Haus[NearestHaus(playerid)][haus_besitzer],Name(playerid),false))return SendClientMessage(playerid,-1,"Dieses Haus gehört dir nicht!");
- else if(NearestExit(playerid) != -1 && strcmp(Haus[NearestExit(playerid)][haus_besitzer],Name(playerid),false))return SendClientMessage(playerid,-1,"Dieses Haus gehört dir nicht!");
- new _i; if(NearestExit(playerid) != -1) _i = NearestExit(playerid);
- else if(NearestHaus(playerid) != -1) _i = NearestHaus(playerid);
- switch(Haus[_i][haus_lock])
- {
- case 0:Haus[_i][haus_lock] = 1,SendClientMessage(playerid,-1,"Du hast dein Haus abgeschlossen.");
- case 1:Haus[_i][haus_lock] = 0,SendClientMessage(playerid,-1,"Du hast dein Haus aufgeschlossen.");
- }
- DestroyDynamic3DTextLabel(Haus[_i][haus_label]);
- new str[128]; format(str,128,"Hausnummer: %i\nBesitzer: '%s'\nLevel: %d\nPreis: $%d\n\nStatus: '%s'",Haus[_i][haus_id],Haus[_i][haus_besitzer],Haus[_i][haus_level],Haus[_i][haus_preis],(Haus[_i][haus_lock] == 1) ? ("geschlossen") : ("geöffnet"));
- Haus[_i][haus_label] = CreateDynamic3DTextLabel(str,-1,Haus[_i][haus_x],Haus[_i][haus_y],Haus[_i][haus_z],20,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,-1,-1,-1,100);
- return 1;
- }
- ocmd:haushilfe(playerid)
- {
- new str[512]; format(str,sizeof(str)," -> /heilupgrade - Damit kannst du dir das Heil-Upgrade kaufen.\
- \n -> /hheilen - Damit kannst du dich heilen, wenn du das Heil-Upgrade gekauft hast.\n -> /hauskasse - Damit kannst du gucken, wie viel Geld in der \
- Hauskasse drin ist.\n -> /kaufehaus - Damit kannst du dir ein Haus kaufen.\n -> /verkaufehaus - Damit kannst du dein Haus verkaufen.\
- \n -> /haustuer - damit kannst du dein Haus auf-/zuschließen.");
- return ShowPlayerDialog(playerid,DIALOG_HH,DIALOG_STYLE_MSGBOX,"Haushilfe",str,"Weiter","Schließen");
- }
- stock Name(playerid)
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid,name,sizeof(name));
- return name;
- }
- stock DelHaus(i)
- {
- Haus[i][haus_id] = 0,
- format(Haus[i][haus_besitzer],MAX_PLAYER_NAME,"Niemand");
- Haus[i][haus_preis] = 0,
- Haus[i][haus_x] = 0,
- Haus[i][haus_y] = 0,
- Haus[i][haus_z] = 0,
- Haus[i][haus_xi] = 0,
- Haus[i][haus_yi] = 0,
- Haus[i][haus_zi] = 0,
- Haus[i][haus_level] = 0,
- Haus[i][haus_rooms] = 0,
- Haus[i][haus_int] = 0,
- Haus[i][haus_lock] = 0,
- Haus[i][haus_vkt] = 0,
- Haus[i][haus_heal] = 0,
- Haus[i][haus_kasse] = 0;
- DestroyDynamicPickup(Haus[i][haus_pickup]),DestroyDynamic3DTextLabel(Haus[i][haus_label]),DestroyDynamicMapIcon(Haus[i][haus_icon]);
- return 1;
- }
- stock LoadHauser(){
- if(!fexist(HAUS_FILE)){
- new File:tfFile=fopen(HAUS_FILE,io_write);
- fclose(tfFile);
- }
- new File:fFile=fopen(HAUS_FILE,io_read),Content[128],i = 1,count = 0;
- while(fread(fFile,Content)){
- StripNewLine(Content);
- sscanf(Content,"isiffffffiiiiiii",Haus[i][haus_id],Haus[i][haus_besitzer],Haus[i][haus_preis],Haus[i][haus_x],Haus[i][haus_y],Haus[i][haus_z],
- Haus[i][haus_xi],Haus[i][haus_yi],Haus[i][haus_zi],Haus[i][haus_level],Haus[i][haus_rooms],Haus[i][haus_int],Haus[i][haus_lock],Haus[i][haus_vkt],
- Haus[i][haus_heal],Haus[i][haus_kasse]);
- switch(Haus[i][haus_vkt]){
- case 0:format(Content,128,"Hausnummer: %i\nBesitzer: Niemand\nLevel: %d\nPreis: $%d\n\nStatus: '%s'",Haus[i][haus_id],Haus[i][haus_level],Haus[i][haus_preis],(Haus[i][haus_lock] == 1) ? ("geschlossen") : ("geöffnet")),Haus[i][haus_icon] = CreateDynamicMapIcon(Haus[i][haus_x],Haus[i][haus_y],Haus[i][haus_z],31,-1,-1,-1,-1,H_DIS);
- case 1:format(Content,128,"Hausnummer: %i\nBesitzer: '%s'\nLevel: %d\nPreis: $%d\n\nStatus: '%s'",Haus[i][haus_id],Haus[i][haus_besitzer],Haus[i][haus_level],Haus[i][haus_preis],(Haus[i][haus_lock] == 1) ? ("geschlossen") : ("geöffnet")),Haus[i][haus_icon] = CreateDynamicMapIcon(Haus[i][haus_x],Haus[i][haus_y],Haus[i][haus_z],32,-1,-1,-1,-1,H_DIS);
- }
- DestroyDynamic3DTextLabel(Haus[i][haus_label]),DestroyDynamicPickup(Haus[i][haus_pickup]);
- Haus[i][haus_pickup] = CreateDynamicPickup(1273 ,23,Haus[i][haus_x],Haus[i][haus_y],Haus[i][haus_z],-1,-1,-1,20);
- Haus[i][haus_label] = CreateDynamic3DTextLabel(Content,-1,Haus[i][haus_x],Haus[i][haus_y],Haus[i][haus_z],20,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,-1,-1,-1,100);
- i++, count ++;
- }
- fclose(fFile);
- return printf(" '%d' Haus / Häuser wurden geladen & erstellt.",count);
- }
- stock SaveHauser(){
- if(fexist(HAUS_FILE))fremove(HAUS_FILE);
- new File:fFile=fopen(HAUS_FILE,io_append),Content[128];
- new i = 1;while(i<MAX_HAUS){
- if(Haus[i][haus_id] > 0){
- format(Content,sizeof(Content),"%i %s %i %f %f %f %f %f %f %i %i %i %i %i %i %i\r\n",Haus[i][haus_id],Haus[i][haus_besitzer],Haus[i][haus_preis],Haus[i][haus_x],Haus[i][haus_y],Haus[i][haus_z],
- Haus[i][haus_xi],Haus[i][haus_yi],Haus[i][haus_zi],Haus[i][haus_level],Haus[i][haus_rooms],Haus[i][haus_int],Haus[i][haus_lock],Haus[i][haus_vkt],
- Haus[i][haus_heal],Haus[i][haus_kasse]);
- fwrite(fFile,Content);
- }i++;
- }return fclose(fFile);
- }
- stock CreateHaus(Float:x,Float:y,Float:z,Float:xi,Float:yi,Float:zi,preis,level,int,rooms){
- new i = H_FreeSlot();
- Haus[i][haus_id] = i,
- format(Haus[i][haus_besitzer],MAX_PLAYER_NAME,"Niemand");
- Haus[i][haus_preis] = preis,
- Haus[i][haus_x] = x,
- Haus[i][haus_y] = y,
- Haus[i][haus_z] = z,
- Haus[i][haus_xi] = xi,
- Haus[i][haus_yi] = yi,
- Haus[i][haus_zi] = zi,
- Haus[i][haus_level] = level,
- Haus[i][haus_rooms] = rooms,
- Haus[i][haus_int] = int,
- Haus[i][haus_lock] = 1,
- Haus[i][haus_vkt] = 0,
- Haus[i][haus_heal] = 0,
- Haus[i][haus_kasse] = 0;
- new str[128];
- switch(Haus[i][haus_vkt]){
- case 0:format(str,128,"Hausnummer: %i\nBesitzer: Niemand\nLevel: %d\nPreis: $%d\n\nStatus: '%s'",Haus[i][haus_id],Haus[i][haus_level],Haus[i][haus_preis],(Haus[i][haus_lock] == 1) ? ("geschlossen") : ("geöffnet"));
- case 1:format(str,128,"Hausnummer: %i\nBesitzer: '%s'\nLevel: %d\nPreis: $%d\n\nStatus: '%s'",Haus[i][haus_id],Haus[i][haus_besitzer],Haus[i][haus_level],Haus[i][haus_preis],(Haus[i][haus_lock] == 1) ? ("geschlossen") : ("geöffnet"));
- }
- DestroyDynamic3DTextLabel(Haus[i][haus_label]),DestroyDynamicPickup(Haus[i][haus_pickup]);
- Haus[i][haus_pickup] = CreateDynamicPickup(1273 ,23,Haus[i][haus_x],Haus[i][haus_y],Haus[i][haus_z],-1,-1,-1,20);
- Haus[i][haus_label] = CreateDynamic3DTextLabel(str,-1,Haus[i][haus_x],Haus[i][haus_y],Haus[i][haus_z],20,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,-1,-1,-1,100);
- Haus[i][haus_icon] = CreateDynamicMapIcon(Haus[i][haus_x],Haus[i][haus_y],Haus[i][haus_z],31,-1,-1,-1,-1,H_DIS);
- return 1;
- }
- stock NearestHaus(playerid)
- {
- new Float:dist0,ID = -1;
- new Float:dist1 = 12,Float:px,Float:py,Float:pz;
- for(new i = 1; i<MAX_HAUS; i++)
- {
- GetPlayerPos(playerid,px,py,pz);
- dist0 = GetPlayerDistanceFromPoint(playerid,Haus[i][haus_x],Haus[i][haus_y],Haus[i][haus_z]);
- if(dist0 < dist1) dist1 = dist0,ID = i;
- }
- return ID;
- }
- stock NearestExit(playerid)
- {
- new Float:dist0,ID = -1;
- new Float:dist1 = 12,Float:px,Float:py,Float:pz;
- for(new i = 1; i<MAX_HAUS; i++)
- {
- if(Haus[i][haus_vw]!=GetPlayerVirtualWorld(playerid)) continue;
- GetPlayerPos(playerid,px,py,pz);
- dist0 = GetPlayerDistanceFromPoint(playerid,Haus[i][haus_xi],Haus[i][haus_yi],Haus[i][haus_zi]);
- if(dist0 < dist1) dist1 = dist0,ID = i;
- }
- return ID;
- }
- stock H_FreeSlot(){
- new ID = -1;
- for(new i = 1; i<MAX_HAUS; i++){
- if(Haus[i][haus_id] > 0)continue;
- ID = i;
- break;
- }
- return ID;
- }
- stock StripNewLine(string[]){
- new len=strlen(string);
- if(string[0]==0)return;if((string[len-1]=='\n')||(string[len-1]=='\r')){
- string[len-1]=0; if(string[0]==0)return; if((string[len-2]=='\n')||(string[len-2]=='\r'))string[len-2]=0;
- }
- }
- stock sscanf(string[], format[], {Float,_}:...)
- {
- #if defined isnull
- if (isnull(string))
- #else
- if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
- #endif
- {
- return format[0];
- }
- #pragma tabsize 4
- new
- formatPos = 0,
- stringPos = 0,
- paramPos = 2,
- paramCount = numargs(),
- delim = ' ';
- while (string[stringPos] && string[stringPos] <= ' ')
- {
- stringPos++;
- }
- while (paramPos < paramCount && string[stringPos])
- {
- switch (format[formatPos++])
- {
- case '\0':
- {
- return 0;
- }
- case 'i', 'd':
- {
- new
- neg = 1,
- num = 0,
- ch = string[stringPos];
- if (ch == '-')
- {
- neg = -1;
- ch = string[++stringPos];
- }
- do
- {
- stringPos++;
- if ('0' <= ch <= '9')
- {
- num = (num * 10) + (ch - '0');
- }
- else
- {
- return -1;
- }
- }
- while ((ch = string[stringPos]) > ' ' && ch != delim);
- setarg(paramPos, 0, num * neg);
- }
- case 'h', 'x':
- {
- new
- num = 0,
- ch = string[stringPos];
- do
- {
- stringPos++;
- switch (ch)
- {
- case 'x', 'X':
- {
- num = 0;
- continue;
- }
- case '0' .. '9':
- {
- num = (num << 4) | (ch - '0');
- }
- case 'a' .. 'f':
- {
- num = (num << 4) | (ch - ('a' - 10));
- }
- case 'A' .. 'F':
- {
- num = (num << 4) | (ch - ('A' - 10));
- }
- default:
- {
- return -1;
- }
- }
- }
- while ((ch = string[stringPos]) > ' ' && ch != delim);
- setarg(paramPos, 0, num);
- }
- case 'c':
- {
- setarg(paramPos, 0, string[stringPos++]);
- }
- case 'f':
- {
- new changestr[16], changepos = 0, strpos = stringPos;
- while(changepos < 16 && string[strpos] && string[strpos] != delim)
- {
- changestr[changepos++] = string[strpos++];
- }
- changestr[changepos] = '\0';
- setarg(paramPos,0,_:floatstr(changestr));
- }
- case 'p':
- {
- delim = format[formatPos++];
- continue;
- }
- case '\'':
- {
- new
- end = formatPos - 1,
- ch;
- while ((ch = format[++end]) && ch != '\'') {}
- if (!ch)
- {
- return -1;
- }
- format[end] = '\0';
- if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
- {
- if (format[end + 1])
- {
- return -1;
- }
- return 0;
- }
- format[end] = '\'';
- stringPos = ch + (end - formatPos);
- formatPos = end + 1;
- }
- case 'u':
- {
- new
- end = stringPos - 1,
- id = 0,
- bool:num = true,
- ch;
- while ((ch = string[++end]) && ch != delim)
- {
- if (num)
- {
- if ('0' <= ch <= '9')
- {
- id = (id * 10) + (ch - '0');
- }
- else
- {
- num = false;
- }
- }
- }
- if (num && IsPlayerConnected(id))
- {
- setarg(paramPos, 0, id);
- }
- else
- {
- #if !defined foreach
- #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
- #define __SSCANF_FOREACH__
- #endif
- string[end] = '\0';
- num = false;
- new
- name[MAX_PLAYER_NAME];
- id = end - stringPos;
- foreach (Player, playerid)
- {
- GetPlayerName(playerid, name, sizeof (name));
- if (!strcmp(name, string[stringPos], true, id))
- {
- setarg(paramPos, 0, playerid);
- num = true;
- break;
- }
- }
- if (!num)
- {
- setarg(paramPos, 0, INVALID_PLAYER_ID);
- }
- string[end] = ch;
- #if defined __SSCANF_FOREACH__
- #undef foreach
- #undef __SSCANF_FOREACH__
- #endif
- }
- stringPos = end;
- }
- case 's', 'z':
- {
- new
- i = 0,
- ch;
- if (format[formatPos])
- {
- while ((ch = string[stringPos++]) && ch != delim)
- {
- setarg(paramPos, i++, ch);
- }
- if (!i)
- {
- return -1;
- }
- }
- else
- {
- while ((ch = string[stringPos++]))
- {
- setarg(paramPos, i++, ch);
- }
- }
- stringPos--;
- setarg(paramPos, i, '\0');
- }
- default:
- {
- continue;
- }
- }
- while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
- {
- stringPos++;
- }
- while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
- {
- stringPos++;
- }
- paramPos++;
- }
- do
- {
- if ((delim = format[formatPos++]) > ' ')
- {
- if (delim == '\'')
- {
- while ((delim = format[formatPos++]) && delim != '\'') {}
- }
- else if (delim != 'z')
- {
- return delim;
- }
- }
- }
- while (delim > ' ');
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement