Beiträge von Jeffry

    Ich weiß nicht wie ich das alles setzen soll.
    Heißt den Sein Schlüssel auf 0 das er eben das haus nichtmehr betreten kann.

    Spieler[pID][pHouseKey] = INVALID_HOUSE_KEY;


    pID ist die eingegebene playerid aus dem inputtext mit strval.
    Dazu halt noch die standardmäßigen Abfragen, ob der Spieler online ist, etc.

    Wieso wird überhaupt eine Schleife verwendet, wenn pHouseKey scheinbar den zugehörigen Index für den Hau-Array enthält?

    Stimmt, darauf habe ich gar nicht geachtet, die Beziehung ist hier wirklich 1:1. Danke für den Hinweis.
    Dann kann man es auch so schreiben:
    if(listitem == 5) //Mieter auflisten
    {
    new id = INVALID_HOUSE_KEY, hKey = Spieler[playerid][pHouseKey], string[512];
    if(hKey >= 0 && hKey < MAX_HOUSES)
    {
    if(strcmp(Haus[hKey][hBesitzer], GetName(playerid), true) == 0)
    {
    id = hKey;
    }
    }
    if(id != INVALID_HOUSE_KEY)
    {
    format(string,sizeof(string),"Liste aller Mieter, die derzeit Online sind:\n");
    for(new x;x <MAX_PLAYERS; x++)
    {
    if(IsPlayerConnected(x) && x != playerid)
    {
    if(Spieler[x][pHouseKey] == id)
    {
    format(string,sizeof(string),"%s\n%s (ID: %d),",string, GetName(x), x);
    }
    }
    }
    ShowPlayerDialog(playerid, DIALOG_MIETER_LISTE ,DIALOG_STYLE_MSGBOX,"Hausbearbeitung",string,"Weiter","");
    }
    }


    Das geht dann aber wirklich nur, wenn der pHouseKey exakt immer dem Index des Haus-Arrays entspricht (wie es hier aktuell ist).
    Sollte sich das ändern, geht das nicht mehr und es muss wieder mit der Schleife gearbeitet werden. Der Fall wäre dann, wenn das Haus-Array eine Eigenschaft "hID" (z.B.) bekommt, welches dann die ID wiedergibt.
    Beide Varianten sind möglich und haben ihre Vor- und Nachteile.

    Ein Spieler: ShowPlayerDialog -> ID eingeben -> bei OnDialogResponse strval(inputtext) auslesen -> ID rauswerfen
    Alle Spieler: ShowPlayerDialog -> OnDialogResponse -> Schleife durch alle Spieler -> Prüfen ob Mieter -> ID rauswerfen


    Ich würde das ganze über eine Dialog-Liste machen, über eine Befehl wie /haus, und in der Liste dann anzeigen lassen:

    • ...
    • Einen Mieter rauswerfen
    • Alle Mieter rauswerfen
    • ...


    So kommt man dann über einen Befehl an alle Funktionen des Hauses ran.

    Ich habe den Code mal etwas aufgeräumt und performanter gemacht.
    if(listitem == 5) //Mieter auflisten
    {
    new id = INVALID_HOUSE_KEY, string[512];
    for(new i = 0; i <MAX_HOUSES; i++)
    {
    if(Spieler[playerid][pHouseKey] == i)
    {
    if(strcmp(Haus[i][hBesitzer], GetName(playerid), true) == 0)
    {
    id = i;
    }
    break;
    }
    }
    if(id != INVALID_HOUSE_KEY)
    {
    format(string,sizeof(string),"Liste aller Mieter, die derzeit Online sind:\n");
    for(new x;x <MAX_PLAYERS; x++)
    {
    if(IsPlayerConnected(x) && x != playerid)
    {
    if(Spieler[x][pHouseKey] == id)
    {
    format(string,sizeof(string),"%s\n%s (ID: %d),",string, GetName(x), x);
    }
    }
    }
    ShowPlayerDialog(playerid, DIALOG_MIETER_LISTE ,DIALOG_STYLE_MSGBOX,"Hausbearbeitung",string,"Weiter","");
    }
    }


    Versuche es so.

    Gibt Ja Textdraws,Dialoge etc...

    Einen Dialog als Speedo-Element zu nutzen macht wenig Sinn, Textdraws sind im Grunde das einzig sinnvolle.


    Folgendes Beispiel finde ich ganz schick, es ist schlicht, aber trotzdem gut gemacht:
    http://forum.sa-mp.com/showthread.php?t=91257
    Das ließe sich auch um den Tank erweitern.


    Welche Möglichkeiten es gibt, hängt aber grundsätzlich davon ab, was du am Ende haben willst.
    Sowas wäre auch möglich: http://forum.sa-mp.com/showthread.php?t=469508
    Oder: http://forum.sa-mp.com/showthread.php?t=517908


    Scrolle dich auch mal durch die Google Bilder wenn du nach "samp Speedo" suchst, da gibt es einige Ideen. Du musst aber darauf achten, dass manches auch CLEO Mods sind.

    Habe meinen Sky-Vertrag verlängert, da ich das erhoffte Angebot nach der Kündigung erhalten habe.


    Komplettpaket inklusive HD für 29,99 pro Monat, mit zwei Jahren Laufzeit (gut, 23 Monate, wegen angefangenem Monat).


    Die Fehlerstelle müsst ihr selbst identifizieren, da ihr den Gamemode spielen könnt und gleichzeitig in den Code schauen könnt, was, wann und wie aufgerufen wird. Ich kann lediglich ins Blaue raten, was ich grundsätzlich nicht mache, da das nicht zielführend ist.
    Wie gesagt, irgendwo passt etwas hinsichtlich dem Setup-Status nicht. Was da nicht passt, kann ich nicht sagen, da ich den Code nicht kenne und auch die Hintergründe dieses Status nicht weiß. Selbst wenn eine Korrektur gemacht wird, ist nicht auszuschließen, dass dadurch weitere Probleme auftreten.


    Da es sich hier nicht um ein wirkliches Scripting Problem handelt, sondern eher um einen generellen Support auf euren Gamemode, wird es schwierig, das über die Scripting Base zu regeln, sofern ihr nicht die relevanten Coding-Stellen findet und postet.


    Wenn Ihr einen Gamemode kauft, dann solltet ihr auch sicherstellen, dass ihr einen entsprechenden Support darauf erhaltet, da Fehler nie auszuschließen sind - und dem nach, was ich vom Code gesehen habe, wird das auch nicht das letzte Problem bleiben.

    Das ist dann ein Problem im Coding, an der jeweiligen Stelle, wo das Setup des Spielers abgefragt wird, bzw. abgefragt werden müsste.
    Könnte aber auch an einer Stelle sein, an der des Setup des Spielers geändert wird, bzw. geändert werden sollte, oder gespeichert werden sollte.


    Hier musst du im Code den Ablauf nachvollziehen, wie es im Spiel durchgeführt wird, und prüfen, wann und wo die Setup-Variable angepasst und abgefragt wird.


    Es kann aber auch andere Gründe haben.
    Da ich den Code nicht kenne und du den Code nicht geschrieben hast, lässt sich hier nur raten.
    Die Empfehlung ist, dass du dich an den Ersteller des Codes wendest.

    [19:29:29 06/28/18] [DEBUG] cache_get_field_content_int - row: 5, field_name: "turftokens", connection: 1
    [19:29:29 06/28/18] [DEBUG] CMySQLResult::GetRowDataByName - row: '5', field: "turftokens", data: "NULL"
    [19:29:29 06/28/18] [ERROR] cache_get_field_content_int - invalid datatype

    An diesem Feld liegt das Problem.
    Wie ist dies in der Datenbank definiert?

    ohjee sieht nicht gut aus das sind mehr als 100 Debugs
    ich muss die mal alle einzel durchgehen...

    Poste das bitte alles. Nutze am besten pastebin.com.



    aber eins will ich mal wissen was könnte es sein warum es sich zweimal verbinden will oder tut?

    Anhand des letzten Codes sieht man, dass mysql_connect zwei mal aufgerufen wird, somit werden zwei Verbindungen aufgebaut.
    Das macht keinen Sinn.
    Ändere:
    radioConnectionID = mysql_connect(MYSQL_HOSTNAME, MYSQL_USERNAME, MYSQL_DATABASE, MYSQL_PASSWORD);
    zu:
    radioConnectionID = connectionID;


    Dann haben beide die gleiche ID und du musst sonst nichts am Code anpassen.


    und schau dir mal diese Fehlermeldungen an

    Das sind keine Fehlermeldungen, das sind Debug-Informationen, da LOG_ALL eingeschaltet ist.

    das mit dem mysql_log(ALL); checke ich nicht wie wo soll ich das machen?

    OnGameModeInit

    Einfach ganz als erstes darin einfügen.



    und was bringt mir das?

    Es werden nicht nur die Fehler ausgegeben, sondern alles, was das Plugin macht. Somit lässt sich gegebenenfalls erkennen, durch welches Query-Result der Fehler erzeugt wird.
    Dadurch kann die Suche dann eventuell eingegrenzt werden.

    Möglicherweise werden hier falsche Tunings an das neu gespawnte Fahrzeug gesetzt, das kann Crashes verursachen.
    Da ich den Code nicht kenne, kann ich das aber nicht mit Sicherheit sagen.

    Siehe Post #4.


    Ob der Code falsch ist, oder das Feld in der Datenbank, kann ich nicht sagen, ohne zu wissen, welche Daten drin stehen.
    Wenn du den Code selbst geschrieben hast, solltest du das aber wissen.
    Ansonsten wende dich an den Ersteller des Codes.


    Mache ansonsten das, was ich in Post #10 beschrieben habe.