Gruppenhaus Systemfehler

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

Es gibt Neuigkeiten! Ab sofort könnt ihr dem Donators Club auf Lebenszeit beitreten.
Weitere Infos im Thema Donator's Club ab heute wieder verfügbar!

  • Gruppenhaus Systemfehler

    Ich wollte nicht mehrere Threads aufmachen, deswegen packe ich mal alles in diesen hier.
    Aktuell besteht das Problem wenn ich das Haus zu einem Gruppenhaus umbaue, dann kann man dort seinen Spawn aber nicht mit /spawnchange hinverlegen.
    Hierfür habe auch ein paar meiner dazu verwendeten Funktionen ausgegeben und sie geben mir 0 aus, also nicht vorhandene Daten.

    Fangen wir mal beim Umbau selber an.
    Die Spieler, die Online sind, bekommen auch die Nachricht dass das Haus umgebaut wurde aber das Gruppenhaus wird anscheinend nicht zugeteilt.

    PAWN-Quellcode

    1. case 3: // Gruppenumbau
    2. {
    3. if(IsPlayerGroupLeader(playerid) ==
    4. 0)return SendClientMessage(playerid, COLOR_RED, "HAUS: {FFFFFF}Du bist
    5. kein Gruppierungsleiter!");
    6. if(HouseData[id][hGroupHouse] ==
    7. 1)return SendClientMessage(playerid, COLOR_RED, "HAUS: {FFFFFF}Dein Haus
    8. hat dieses Upgrade bereits!");
    9. if(HouseData[id][hGroupHouse] ==
    10. DELINCE_GROUP_ADDON)return SendClientMessage(playerid, COLOR_RED, "HAUS:
    11. {FFFFFF}Dieses Haus ist nicht für das Gruppenaddon geeignet..");
    12. if(getPlayerMoney(playerid)
    13. < 5000)return SendClientMessage(playerid, COLOR_RED, "FEHLER:
    14. {FFFFFF}Du hast nicht genug Geld dabei!");
    15. if(HouseData[id][hRentMember] > 0)
    16. {
    17. ShowPlayerDialog(playerid,
    18. DIALOG_GADDON, DIALOG_STYLE_MSGBOX, "Gruppenaddon", "Es wohnen aktuell
    19. noch andere Spieler in deinem Haus!\nWenn du das Haus umbauen möchtest,
    20. musst die Spieler zuerst rauswerfen.\nDu kannst sie anschließend wieder
    21. Einladen.", "Rauswerfen", "Zurück");
    22. return 1;
    23. }
    24. givePlayerMoney(playerid, -5000),
    25. HouseData[id][hGroupHouse] = 1;
    26. for(new i;i {
    27. if(IsPlayerLoggedIn(i) == true)
    28. {
    29. if(pInfo[i][pGroup] != 0 && pInfo[i][pGroup] == pInfo[playerid][pGroup])
    30. {
    31. SendClientMessage(i,
    32. COLOR_GREEN, "Dein Gruppierungsleiter hat sein Haus zu einem
    33. Gruppenhaus umgebaut. (/spawnchange)"),
    34. pInfo[i][pGHouse] = HouseData[id][hSQL];
    35. }
    36. }
    37. }
    38. mysql_format(handle,
    39. query, sizeof query, "UPDATE account SET GHouseID=%i WHERE Group=%i",
    40. HouseData[id][hSQL], pInfo[playerid][pGroup]),
    41. mysql_pquery(handle, query);
    42. new gid = GetPlayerGroupID(playerid), str[128];
    43. Group[gid][gHouse] = GetMyHouseID(playerid),
    44. format(str,sizeof str, "gHouse: %i, GMHouseID: %i, mygid: %i", Group[gid][gHouse], GetMyHouseID(playerid), gid),
    45. SendClientMessage(playerid, -1, str),
    46. SendClientMessage(playerid, COLOR_GREEN, "Du hast dein Haus zum Gruppierungshaus umgebaut."),
    47. SendClientMessage(playerid, COLOR_GREEN, "Du hast jetzt kein Mieterlimit aber kannst auch keine Miete mehr verlangen!");
    Alles anzeigen



    GetPlayerGroupID, GetMyGroupHouseID & GetMyHouseID Die Funktionen geben teilweise 0 aus

    PAWN-Quellcode

    1. stock GetMyHouseID(playerid)
    2. {
    3. for(new i;i {
    4. if(HouseData[i][hOwnerSQL] == getPlayerSQL(playerid))return i;
    5. }
    6. return -1;
    7. }
    8. stock GetMyGroupHouseID(playerid)
    9. {
    10. for(new i;i {
    11. if(Group[i][gSQL] != 0 && Group[i][gHouse] == pInfo[playerid][pGHouse])return i;
    12. }
    13. return -1;
    14. }
    15. stock GetPlayerGroupID(playerid)
    16. {
    17. for(new i;i {
    18. if(Group[i][gSQL] != 0 && Group[i][gSQL] == pInfo[playerid][pGroup])return i;
    19. }
    20. return 0;
    21. }
    Alles anzeigen


    SpawnChange Funktion (Gruppenhaus wird nicht angeboten)

    PAWN-Quellcode

    1. stock SpawnChange(playerid)
    2. {
    3. switch(pInfo[playerid][pSpawn])
    4. {
    5. case 0:
    6. {
    7. new id = GetMyRentHouseID(playerid);
    8. if(id == -1)
    9. {
    10. pInfo[playerid][pSpawn] +=1;
    11. SpawnChange(playerid);
    12. return 1;
    13. }
    14. if(HouseData[id][hInterior] == -1)
    15. {
    16. pInfo[playerid][pSpawn] +=1;
    17. SpawnChange(playerid);
    18. return 1;
    19. }
    20. if(pInfo[playerid][pHouse] < 1)return SendClientMessage(playerid, COLOR_RED, "FEHLER: {FFFFFF}Du hast leider keine Unterkunft wo du Spawnen könntest.");
    21. SendClientMessage(playerid, COLOR_GREEN, "Du spawnst nun in Zukunft dort, wo du Eingemietet bist.");
    22. pInfo[playerid][pSpawn] = 1;
    23. }
    24. case 1:
    25. {
    26. new id2 = GetMyGroupHouseID(playerid);
    27. printf("Bryans id2: %i", id2);
    28. if(id2 != -1 && id2 != 0)
    29. {
    30. SendClientMessage(playerid, COLOR_GREEN, "Du spawnst nun in Zukunft in deinem Gruppierungshaus.");
    31. pInfo[playerid][pSpawn] = 2;
    32. return 1;
    33. }
    34. pInfo[playerid][pSpawn] ++, SpawnChange(playerid);
    35. }
    36. case 2:
    37. {
    38. if(pInfo[playerid][pHitman] < 1) {pInfo[playerid][pSpawn] ++,SpawnChange(playerid);return 1;}
    39. else pInfo[playerid][pSpawn] = 3;
    40. SendClientMessage(playerid, COLOR_GREEN, "Du spawnst nun in Zukunft in der Agency.");
    41. }
    42. case 3:
    43. {
    44. pInfo[playerid][pSpawn] = 0,
    45. SendClientMessage(playerid, COLOR_GREEN, "Du spawnst nun in Zukunft wieder am Bahnhof.");
    46. }
    47. }
    48. return 1;
    49. }
    Alles anzeigen


    Hoffe ihr habt einen Denkanstoß für mich.
    Рыба лично :rolleyes:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von seegras () aus folgendem Grund: Spoiler behindern nur den Lesefluss, daher hab ich sie mal entfernt

  • PAWN-Quellcode

    1. mysql_format(handle, query, sizeof(query), "UPDATE account SET GHouseID=%i WHERE Group=%i",HouseData[id][hSQL], pInfo[playerid][pGroup]);


    zu

    PAWN-Quellcode

    1. mysql_format(handle, query, sizeof(query), "UPDATE account SET GHouseID='%i' WHERE Group='%i'",HouseData[id][hSQL], pInfo[playerid][pGroup]);

    Probier mal so
  • T4eZ schrieb:

    Probier mal so
    Die Apostrophen werden benötigt, wenn ein String übergeben wird, bei Integern ist es nicht zwingend notwendig.
    UPDATE users SET name = 'Max Mustermann' WHERE id = %i

    seegras schrieb:

    sprich anstelle des Apostroph ein Backtick
    Die Backticks werden nur bei Spalten-Namen benötigt, die z.B. eine SQL-Funktion darstellen.
    Beispiel: alter
    Dann wäre folgendes nötig: UPDATE users SET `alter` = 18 WHERE id = %i

    Backticks beim Wert sind syntaktisch nicht möglich.


    Kasakow schrieb:

    Hat niemand eine Idee ?
    Deine GetMyGroupHouseID gibt einen falschen Wert zurück, und zwar den Index der Gruppe im Array (i).
    Ändere dort

    PAWN-Quellcode

    1. if(Group[i][gSQL] != 0 && Group[i][gHouse] == pInfo[playerid][pGHouse])return i;

    zu:

    PAWN-Quellcode

    1. if(Group[i][gSQL] != 0 && Group[i][gSQL] == pInfo[playerid][pGroup]) return Group[i][gHouse];
  • Jeffry schrieb:

    zu:

    if(Group[gSQL] != 0 && Group[i][gSQL] == pInfo[playerid][pGroup]) return Group[i][gHouse];

    Danke erstmal für deine Antwort! :)

    Das ist so aber nicht gewollt. Da ich ja in der Funktion wirklich den Index Integer ausgeben möchte.
    Beispielsweise, Ich suche in einer Schleife eine Gruppe, die Zeitlich gesperrt wurde. Diese würde dann auch geladen werden mit Group[i][gLock] = (1);.
    Ich suche diese Gruppe jetzt und möchte das Array mit dem Index der besagten Gruppe bearbeiten. Dann ist i in der Schleife letztes endlich meine Antwort.
    Deine Variante habe ich benutzt, diese verhindert dann andere Funktionen die mit der gleichen Funktion eine Information erzeugen möchten.
    Also ob ein Spieler Besitzer der Gruppe ist, kann nicht mehr ermittelt werden, vorher hat das ganz gut Funktioniert. Ich zeige dir mal die Funktion der Leaderermittlung, dann kommst du dem Hintergrund vielleicht näher.

    PAWN-Quellcode

    1. stock IsPlayerGroupLeader(playerid)
    2. {
    3. for(new i, gID;i<MAX_GROUP;i++)
    4. {
    5. if(IsPlayerLoggedIn(i) == true)
    6. {
    7. if(pInfo[i][pGroup] != 0)
    8. {
    9. gID = GetPlayerGroupID(i);
    10. if(Group[gID][gLeaderSQL] == getPlayerSQL(playerid))return 1;
    11. }
    12. }
    13. }
    14. return 0;
    15. }
    Alles anzeigen


    ((WIESO SCHREIBT ER BEI MIR ALLES KURSIV ?))
    Рыба лично :rolleyes:
  • Kasakow schrieb:

    Da ich ja in der Funktion wirklich den Index Integer ausgeben möchte.
    GetMyGroupHouseID soll doch aber nicht den Index der Gruppe ausgeben, sondern die ID des Hauses.
    Ansonsten macht die Bezeichnung der Funktion keinen Sinn, oder?


    Kasakow schrieb:

    ((WIESO SCHREIBT ER BEI MIR ALLES KURSIV ?))
    Weil du einen Code zitiert hast, der [i] enthält, das ist der Start für "kursiv-schreiben".

  • Ja, funktioniert so nicht.

    Schau, ich glaub wir reden aneinander vorbei.
    Ich meine es so, ich möchte das aus der MySQL geladene Array bearbeiten, wie bei einem Haussystem zum Bespiel ja.
    Ich möchte herausfinden ob mir das Haus gehört.


    PAWN-Quellcode

    1. stock MyHouseID(playerid){for(new i;i<sizeof Haus;i++){if(Haus[i][hID] == pInfo[playerid][pHaus])return i; //Das jeweilige array, was zu bearbeiten ist, ist dem Fall, Haus[i]}return INVALID_HAUS_ID;}



    Jetzt möchte ich sagen, okay.. das Haus bekommt ein Upgrade.
    Dann arbeite ich so:


    PAWN-Quellcode

    1. new hid = MyHouseID(playerid);if(hid == INVALID_HAUS_ID){Haus[i][hUpgrade] = 1;}


    //Sorry die Formatierung, mein Editor spinnt gerade etwas.
    Рыба лично :rolleyes: