Fragen zum Haussystem (Mieter Rauswerfen & Mieter Auflisten)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Fragen zum Haussystem (Mieter Rauswerfen & Mieter Auflisten)

    Hallo,

    Ich möchte gerne per MSGBOX wissen wie ich die Mieter die Online sind auflisten kann.
    Und wie kann ich Besitzer rauswerfen die Online sind also ID angeben das der jenige rausgeworfen wird.


    enum des Haussystem:

    Quellcode

    1. enum e_Haus
    2. {
    3. hCreated,
    4. Float:EnterX,
    5. Float:EnterY,
    6. Float:EnterZ,
    7. Float:ExitX,
    8. Float:ExitY,
    9. Float:ExitZ,
    10. hBesitzer[MAX_PLAYER_NAME],
    11. hOwned,
    12. hName[32],
    13. hPreis,
    14. hMieten,
    15. Text3D:hText,
    16. hPickup,
    17. hLock,
    18. hMietPreis,
    19. hInterior,
    20. hKasse,
    21. hdbID,
    22. hHealthUpgrade
    23. }
    24. new Haus[MAX_HOUSES][e_Haus];
    Alles anzeigen

    Befehl zum Einmieten:

    Quellcode

    1. ocmd:renthouse(playerid)
    2. {
    3. if(PlayerInfo[playerid][pHouseKey] != INVALID_HOUSE_KEY)return SendClientMessage(playerid, COLOR_GREY, "Du bist bereits in einem Haus eingemietet!");
    4. new count = CountPlayerHouses(playerid);
    5. if(count > 0)return SendClientMessage(playerid, COLOR_GREY, "Du besitzt bereits ein Haus.");
    6. if(IsPlayerHouse(playerid) != INVALID_HOUSE_KEY)return SendClientMessage(playerid, COLOR_GREY, "Du besitzt bereits ein Haus.");
    7. new i = GetNextHouseID(playerid);
    8. if(i == INVALID_HOUSE_KEY)return SendClientMessage(playerid, COLOR_GREY, "Es befindet sich kein Haus zum mieten in deiner Nähe!");
    9. if(Haus[i][hMieten] == 0)return SendClientMessage(playerid, COLOR_GREY, "Dieses Haus lässt das Mieten nicht zu.");
    10. if(GetPlayerMoneys(playerid) < Haus[i][hMietPreis])return SendClientMessage(playerid, COLOR_GREY, "Du hast nicht genügend Geld dabei.");
    11. PlayerInfo[playerid][pHouseKey] = i;
    12. GivePlayerMoneys(playerid, -Haus[i][hMietPreis]);
    13. Haus[i][hKasse] += Haus[i][hMietPreis];
    14. SendClientMessage(playerid, COLOR_GREEN, "Du hast dich erfolgreich in dieses Haus eingemietet.");
    15. return 1;
    16. }
    Alles anzeigen
  • Dr. Frauenarzt schrieb:

    Ich möchte gerne per MSGBOX wissen wie ich die Mieter die Online sind auflisten kann.


    Versuchs mal.

    PAWN-Quellcode

    1. new str[256];
    2. for(new i=0, j=GetPlayerPoolSize(); i<=j; i++) {
    3. if(PlayerInfo[playerid][pHouseKey] == PlayerInfo[i][pHouseKey]) {
    4. format(str, sizeof(str), "%sMieter: %s (ID: %d)\n", str, PlayerInfo[i][pName], i);
    5. }
    6. }
    7. if(!strlen(str))return format(str, sizeof(str), "Du hast keine Mieter");
    8. ShowPlayerDialog(playerid, DIALOG_HOUSE_MIETERLIST, DIALOG_STYLE_MSGBOX, "Mieter", str, "Schließen", "");
  • Quellcode

    1. ocmd:renthouse(playerid)
    2. {
    3. if(PlayerInfo[playerid][pHouseKey] != INVALID_HOUSE_KEY)return SendClientMessage(playerid, COLOR_GREY, "Du bist bereits in einem Haus eingemietet!");
    4. new count = CountPlayerHouses(playerid);
    5. if(count > 0)return SendClientMessage(playerid, COLOR_GREY, "Du besitzt bereits ein Haus.");
    6. if(IsPlayerHouse(playerid) != INVALID_HOUSE_KEY)return SendClientMessage(playerid, COLOR_GREY, "Du besitzt bereits ein Haus.");
    7. new i = GetNextHouseID(playerid);
    8. if(i == INVALID_HOUSE_KEY)return SendClientMessage(playerid, COLOR_GREY, "Es befindet sich kein Haus zum mieten in deiner Nähe!");
    9. if(Haus[i][hMieten] == 0)return SendClientMessage(playerid, COLOR_GREY, "Dieses Haus lässt das Mieten nicht zu.");
    10. if(GetPlayerMoneys(playerid) < Haus[i][hMietPreis])return SendClientMessage(playerid, COLOR_GREY, "Du hast nicht genügend Geld dabei.");
    11. PlayerInfo[playerid][pHouseKey] = i;
    12. GivePlayerMoneys(playerid, -Haus[i][hMietPreis]);
    13. Haus[i][hKasse] += Haus[i][hMietPreis];
    14. SendClientMessage(playerid, COLOR_GREEN, "Du hast dich erfolgreich in dieses Haus eingemietet.");
    15. return 1;
    16. }
    Alles anzeigen

    Das ist der befehl sich einzumieten.

    Das heißt wen er sich einmietet wird im der HouseKey gegeben.
    Ebernso wen er sich ausmietet wird ihm der HouseKey entzogen


    das hängt ebenso mit Buyhouse zusammen die frage ist nun soll man MieterKey anlegen das es getrennt läuft?
  • Quellcode

    1. ocmd:buyhouse(playerid)
    2. {
    3. if(PlayerInfo[playerid][pHouseKey] != INVALID_HOUSE_KEY)return SendClientMessage(playerid, COLOR_GREY, "Du bist in einem Haus eingemietet. Benutze /unrent.");
    4. new string[128];
    5. for(new i=1;i<MAX_HOUSES;i++)
    6. {
    7. if(Haus[i][hCreated] == 1)
    8. {
    9. if(IsPlayerInRangeOfPoint(playerid, 2.0, Haus[i][EnterX], Haus[i][EnterY], Haus[i][EnterZ]))
    10. {
    11. if(PlayerInfo[playerid][pPersonalausweis] == 0)return SendClientMessage(playerid, COLOR_GREY, "Du besitzt keinen Personalausweis.");
    12. if(strcmp(Haus[i][hBesitzer], SpielerName(playerid), false) == 0)return SendClientMessage(playerid, COLOR_GREY, "Dieses Haus gehört bereits dir.");
    13. if(strcmp(Haus[i][hBesitzer], "-", false))return SendClientMessage(playerid, COLOR_GREY, "Das Haus ist bereits verkauft.");
    14. new count = CountPlayerHouses(playerid);
    15. if(count > 0)return SendClientMessage(playerid, COLOR_GREY, "Du besitzt bereits ein Haus.");
    16. if((GetPlayerMoneys(playerid) - Haus[i][hPreis]) < 0)return SendClientMessage(playerid, COLOR_GREY, ERROR_MONEY);
    17. format(string, sizeof(string), "Herzlichen Glückwunsch zu deinem neuen Haus. (-$%d)", Haus[i][hPreis]);
    18. SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    19. GivePlayerMoneys(playerid, -Haus[i][hPreis]);
    20. DestroyPickup(Haus[i][hPickup]);
    21. Haus[i][hPickup] = CreatePickup(OWNER_PICKUP, 1, Haus[i][EnterX], Haus[i][EnterY], Haus[i][EnterZ], -1);
    22. strmid(Haus[i][hBesitzer], GetName(playerid), 0, strlen(GetName(playerid)), 24);
    23. Haus[i][hOwned] = 1;
    24. UpdateHouseLabel(i, Haus[i][hOwned]);
    25. PlayerInfo[playerid][pHouseKey] = i;
    26. SaveHouse(i);
    27. PlayerUpdate(playerid);
    28. return 1;
    29. }
    30. }
    31. }
    32. return 1;
    33. }
    Alles anzeigen
  • Quellcode

    1. stock GetNextHouseID(playerid)
    2. {
    3. new houseID = INVALID_HOUSE_KEY;
    4. for(new i=1;i<MAX_HOUSES;i++)
    5. {
    6. if(Haus[i][hCreated] != 0)
    7. {
    8. if(IsPlayerInRangeOfPoint(playerid, 5.0, Haus[i][EnterX], Haus[i][EnterY], Haus[i][EnterZ]) || (IsPlayerInRangeOfPoint(playerid, 10.0, Haus[i][ExitX], Haus[i][ExitY], Haus[i][ExitZ]) && GetPlayerVirtualWorld(playerid) == i))
    9. {
    10. houseID = i;
    11. }
    12. }
    13. }
    14. return houseID;
    15. }
    Alles anzeigen
  • PAWN-Quellcode

    1. Eine Liste würde ich dann so erstellen:
    2. //Ermittlung des Hauses des Owners der die Mieter aufgelistet sehen will
    3. for(new i;i<MAX_HOUSES;i++)
    4. {
    5. if(strcmp(Haus[i][hBesitzer],GetName(playerid),true)==0)
    6. {
    7. break;
    8. }
    9. }
    10. //Ermittlung aller Mieter ausgenommen der Owner
    11. new string[1024];
    12. if(i!=MAX_HOUSES&&i!=INVALID_HOUSE_KEY)
    13. {
    14. for(new x;x<MAX_PLAYERS;x++)
    15. {
    16. if(IsPlayerConnected(x)
    17. {
    18. if(PlayerInfo[x][pHouseKey]==i&&if(strcmp(GetName(x),Haus[i][hBesitzer]!=0)
    19. {
    20. format(string,sizeof(string),"%s\nSpieler: %s ist Mieter dieses Hauses",string,GetName(x));
    21. }
    22. }
    23. }
    24. }
    25. ShowPlayerDialog(playerid,dialogidselbereinfügen,DIALOG_STYLE_MSGBOX/*Außerduwillstjetztkrassesachenmachensobaldmanraufklicktdannnatürlichstyle_list*/,"Mieter",string,"Weiter","");
    Alles anzeigen



    so sollte es denke mal mit der Liste richtig sein
    Mein Scriptingservice

    Meine Werke:
    [ FILTERSCRIPT] DT_DynamicRestaurants

    [ GAMEMODE ] EER Script [GF-Reallife]

  • Habe das jetzt eingefügt


    Quellcode

    1. if(listitem == 5) //Mieter Auflisten
    2. {
    3. for(new i;i<MAX_HOUSES;i++)
    4. {
    5. if(strcmp(Haus[i][hBesitzer],SpielerName(playerid),true)==0)
    6. {
    7. break;
    8. }
    9. }
    10. if(i!=MAX_HOUSES&&i!=INVALID_HOUSE_KEY)
    11. {
    12. for(new x;x<MAX_PLAYERS;x++)
    13. {
    14. if(IsPlayerConnected(x)
    15. {
    16. if(PlayerInfo[x][pHouseKey]==i&&if(strcmp(GetName(x),Haus[i][hBesitzer]!=0)
    17. {
    18. format(mstring, sizeof mstring, "%s\nSpieler: %s (ID: %d)", string, SpielerName(x), playerid);
    19. ShowPlayerDialog(playerid, DIALOG_HOUSE_MIETERLIST,DIALOG_STYLE_MSGBOX, "Mieter", string, "Schließen", "");
    20. }
    21. }
    22. }
    23. }
    Alles anzeigen
    Es stürzt ab wen ich Kompeilen.
  • schick uns doch mal den kompletten code nicht nur das fünfte listitem sondern ab if(dialogid==dialogvondemwirreden) bis ende

    btw. warum hast du die Positionen des Codes einfach geändert? Jede stelle hat seinen Grund gehabt und z.B. das ShowPlayerDialog einfach zu entfernen und wieder woanders einzufügen ist nicht gerade sinnvoll wenn man keine Ahnung hat was man damit bewirkt
    und du musst bei ShowPlayerDialog aus string dann entsprechend mstring machen.
    Wenn ich mich nicht irre hast du } zu wenig und bei if(IsPlayerConnected(x) fehlt eine klammer zu was jedoch mein Fehler war
    Mein Scriptingservice

    Meine Werke:
    [ FILTERSCRIPT] DT_DynamicRestaurants

    [ GAMEMODE ] EER Script [GF-Reallife]
  • Quellcode

    1. if(dialogid == DIALOG_CONFIGHOUSE)
    2. {
    3. if(response)
    4. {
    5. new haus = IsPlayerHouse(playerid);
    6. if(haus != INVALID_HOUSE_KEY)
    7. {
    8. if(!IsPlayerInRangeOfPoint(playerid, 5.0, Haus[haus][EnterX], Haus[haus][EnterY], Haus[haus][EnterZ]))return SendClientMessage(playerid, COLOR_GREY, "Du befindest dich nicht an deinem Haus (außerhalb).");
    9. if(listitem == 0) //Haus Verkaufen
    10. {
    11. ShowPlayerDialog(playerid, DIALOG_SELLHOUSE, DIALOG_STYLE_MSGBOX, "Hausbearbeitung","Möchtest du wirklich dein Haus verkaufen?\nWen du dir sicher bist drücke auf Bestätigen um das Haus zu verkaufen!\nDu erhältst die hälfte des Kaufpreises.", "Bestätigen", "Abbrechen");
    12. }
    13. if(listitem == 1) //Haustür
    14. {
    15. if(Haus[haus][hLock] == 1)
    16. {
    17. Haus[haus][hLock] = 0;
    18. GameTextForPlayer(playerid, "~w~Haus ~g~aufgeschlossen", 3000, 6);
    19. UpdateHouseLabel(haus, Haus[haus][hOwned]);
    20. }
    21. else if(Haus[haus][hLock] == 0)
    22. {
    23. Haus[haus][hLock] = 1;
    24. GameTextForPlayer(playerid, "~w~Haus ~r~abgeschlossen", 3000, 6);
    25. UpdateHouseLabel(haus, Haus[haus][hOwned]);
    26. }
    27. }
    28. if(listitem == 2) //Mietbar
    29. {
    30. new i = IsPlayerHouse(playerid);
    31. if(Haus[i][hMieten] == 1)
    32. {
    33. Haus[i][hMieten] = 0;
    34. GameTextForPlayer(playerid, "~w~Miete ~r~deaktiviert", 3000, 6);
    35. UpdateHouseLabel(i, Haus[i][hOwned]);
    36. SaveHouse(i);
    37. }
    38. else if(Haus[i][hMieten] == 0)
    39. {
    40. Haus[i][hMieten] = 1;
    41. GameTextForPlayer(playerid, "~w~Miete ~g~aktiviert", 3000, 6);
    42. UpdateHouseLabel(i, Haus[i][hOwned]);
    43. SaveHouse(i);
    44. }
    45. }
    46. if(listitem == 3) //Mietbar
    47. {
    48. ShowPlayerDialog(playerid, DIALOG_SET_RENT, DIALOG_STYLE_INPUT, "Hausbearbeitung","Gebe den neuen Mietpreis an.", "Bestätigen", "Abbrechen");
    49. }
    50. if(listitem == 5) //Mieter Auflisten
    51. {
    52. for(new i;i<MAX_HOUSES;i++)
    53. {
    54. if(strcmp(Haus[i][hBesitzer],SpielerName(playerid),true)==0)
    55. {
    56. break;
    57. }
    58. }
    59. }
    60. if(i!=MAX_HOUSES&&i!=INVALID_HOUSE_KEY)
    61. {
    62. for(new x;x<MAX_PLAYERS;x++)
    63. {
    64. if(IsPlayerConnected(x)
    65. {
    66. if(PlayerInfo[x][pHouseKey] == i && if(strcmp(SpielerName(x), Haus[i][hBesitzer]! = 0)
    67. {
    68. format(string, sizeof string, "%s\nSpieler: %s (ID: %d)", string, SpielerName(x), playerid);
    69. ShowPlayerDialog(playerid, DIALOG_HOUSE_MIETERLIST,DIALOG_STYLE_MSGBOX, "Mieter", string, "Schließen", "");
    70. }
    71. }
    72. }
    73. }
    74. if(listitem == 6) //Hauskasse
    75. {
    76. ShowPlayerDialog(playerid, DIALOG_HAUSKASSE, DIALOG_STYLE_LIST, "Hausbearbeitung", "Geld einzahlen\nGeld auszahlen\nAktueller Stand\nHeal Upgrade", "Bestätigen", "Abbrechen");
    77. }
    78. if(listitem == 7) //Beschreibung
    79. {
    80. ShowPlayerDialog(playerid, DIALOG_HAUS_BESCHREIBUNG, DIALOG_STYLE_INPUT, "Hausbearbeitung","Gebe eine neue Beschreibung an.\nDieser Vorgang kostet dich 1.000.000$.\nDie Headadministration behält es sich vor, die Beschreibung bei Missbrauch zu entfernen.", "Bestätigen", "Abbrechen");
    81. }
    82. }
    83. }
    84. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Dr. Frauenarzt () aus folgendem Grund: Code Bearbeitet

  • Hä? Die Erkärung ist auch komisch.

    Es per befehl also /Confighouse zeigt er mir alles an die Kategorie die ich anklicke sollte dann alles anzeigt werden per msgbox wer alles eingemietet ist??


    @[DT]midomen


    Habe es so drinne jz

    Quellcode

    1. if(dialogid == DIALOG_CONFIGHOUSE)
    2. {
    3. if(response)
    4. {
    5. new haus = IsPlayerHouse(playerid);
    6. if(haus != INVALID_HOUSE_KEY)
    7. {
    8. if(!IsPlayerInRangeOfPoint(playerid, 5.0, Haus[haus][EnterX], Haus[haus][EnterY], Haus[haus][EnterZ]))return SendClientMessage(playerid, COLOR_GREY, "Du befindest dich nicht an deinem Haus (außerhalb).");
    9. if(listitem == 0) //Haus Verkaufen
    10. {
    11. ShowPlayerDialog(playerid, DIALOG_SELLHOUSE, DIALOG_STYLE_MSGBOX, "Hausbearbeitung","Möchtest du wirklich dein Haus verkaufen?\nWen du dir sicher bist drücke auf Bestätigen um das Haus zu verkaufen!\nDu erhältst die hälfte des Kaufpreises.", "Bestätigen", "Abbrechen");
    12. }
    13. if(listitem == 1) //Haustür
    14. {
    15. if(Haus[haus][hLock] == 1)
    16. {
    17. Haus[haus][hLock] = 0;
    18. GameTextForPlayer(playerid, "~w~Haus ~g~aufgeschlossen", 3000, 6);
    19. UpdateHouseLabel(haus, Haus[haus][hOwned]);
    20. }
    21. else if(Haus[haus][hLock] == 0)
    22. {
    23. Haus[haus][hLock] = 1;
    24. GameTextForPlayer(playerid, "~w~Haus ~r~abgeschlossen", 3000, 6);
    25. UpdateHouseLabel(haus, Haus[haus][hOwned]);
    26. }
    27. }
    28. if(listitem == 2) //Mietbar
    29. {
    30. new i = IsPlayerHouse(playerid);
    31. if(Haus[i][hMieten] == 1)
    32. {
    33. Haus[i][hMieten] = 0;
    34. GameTextForPlayer(playerid, "~w~Miete ~r~deaktiviert", 3000, 6);
    35. UpdateHouseLabel(i, Haus[i][hOwned]);
    36. SaveHouse(i);
    37. }
    38. else if(Haus[i][hMieten] == 0)
    39. {
    40. Haus[i][hMieten] = 1;
    41. GameTextForPlayer(playerid, "~w~Miete ~g~aktiviert", 3000, 6);
    42. UpdateHouseLabel(i, Haus[i][hOwned]);
    43. SaveHouse(i);
    44. }
    45. }
    46. if(listitem == 3) //Mietbar
    47. {
    48. ShowPlayerDialog(playerid, DIALOG_SET_RENT, DIALOG_STYLE_INPUT, "Hausbearbeitung","Gebe den neuen Mietpreis an.", "Bestätigen", "Abbrechen");
    49. }
    50. if(listitem == 5) //Mieter Auflisten
    51. {
    52. for(new i;i<MAX_HOUSES;i++)
    53. {
    54. if(strcmp(Haus[i][hBesitzer],GetName(playerid),true)==0)
    55. {
    56. break;
    57. }
    58. }
    59. new string[1024];
    60. if(i!=MAX_HOUSES&&i!=INVALID_HOUSE_KEY)
    61. {
    62. for(new x;x<MAX_PLAYERS;x++)
    63. {
    64. if(IsPlayerConnected(x)
    65. {
    66. if(PlayerInfo[x][pHouseKey]==i&&if(strcmp(GetName(x),Haus[i][hBesitzer]!=0)
    67. {
    68. format(string,sizeof(string),"%s\nSpieler: %s ist Mieter dieses Hauses",string,GetName(x));
    69. }
    70. }
    71. }
    72. }
    73. ShowPlayerDialog(playerid,dialogidselbereinfügen,DIALOG_STYLE_MSGBOX,"Mieter",string,"Weiter","");
    74. }
    75. if(listitem == 6) //Hauskasse
    76. {
    77. ShowPlayerDialog(playerid, DIALOG_HAUSKASSE, DIALOG_STYLE_LIST, "Hausbearbeitung", "Geld einzahlen\nGeld auszahlen\nAktueller Stand\nHeal Upgrade", "Bestätigen", "Abbrechen");
    78. }
    79. if(listitem == 7) //Beschreibung
    80. {
    81. ShowPlayerDialog(playerid, DIALOG_HAUS_BESCHREIBUNG, DIALOG_STYLE_INPUT, "Hausbearbeitung","Gebe eine neue Beschreibung an.\nDieser Vorgang kostet dich 1.000.000$.\nDie Headadministration behält es sich vor, die Beschreibung bei Missbrauch zu entfernen.", "Bestätigen", "Abbrechen");
    82. }
    83. }
    84. }
    85. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Dr. Frauenarzt ()