Beiträge von Campbell

    Ja hab ich.


    Zitat

    Debuggen ist immer eine gute Lösung, um Probleme zu lösen. Schau doch mal eben in OnPlayerSpawn, ob dein Code überhaupt ausgeführt wird, wenn ein Spieler stirbt.


    Was ist hier dein Ergebnis, wird es ausgeführt?

    Die Zeile mit mysql_fetch_float und die Zeile, in der du printf() benutzt wäre interessant. Entweder, wird wie bereits gesagt, ein falscher Print-Operator benutzt, oder in eine falsche Variable gefetcht.

    Nach einer Bedingung in einer if-Schleife, wird kein Semikolon benötigt. Ebenfalls wäre es schön, wenn du wie folgt vorgehst, wenn du deinen Quellcode zeigst:


    Code
    [pwn]  [/pwn]


    if(dini_Exists(Spielerdatei))
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Dein Account wurde gefunden. Gib bitte das Passwort ein.","Login","Abbrechen");
    }
    // Alles Weitere hier ..

    1028 if (dini_Exists[128] Spielerdatei);
    Das ist etwas wenig Quellcode. Zeig uns doch einfach kurz das was du nun hast mit ein bis zwei Zeilen mehr vorne und hinten und es wird sich in Sekunden herausstellen, was falsch ist.

    Du definierst die Fraktion immer als 0, du solltest evt. die Spielerfraktion nehmen. Siehe:


    new fraktion = 0;
    Des weiteren ist dein String 'string' nur 26 Zeichen lang, wobei deine Messages meistens länger als 26 Zeichen sind. Erweitern des Strings sollte die Messages anzeigen lassen.


    new string[26];

    '=' - Operator um Wert zuzuweisen.
    '==' - Operator um zwei Werte zu vergleichen.


    Ebenfalls wären Klammern nach deinem if ganz hilfreich:



    if(vehicleid == 520)
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid, x, y, z);
    SetPlayerPos(playerid, x, y, z+6);
    return 1;
    }

    1. 1 Sekunde = 1000 Millisekunden. 1 Minute = 60 * 1000 = 60.000. - Du solltest dich bei 3600 Millisekunden noch 3.6 Sekunden im Gefängnis befinden.
    2. floatround() ist eine wunderbare Möglichkeit zum Runden, die dir verschiedene Optionen offen stellt. Ich würde dabei bleiben.
    3. Irgendwie musst du eben die Zeit runterzählen, im Timer wäre dies die beste Möglichkeit. Du könntest jede Minute einfach die Gefängniszeit heruntersetzen, somit wird nur jede Minute der Timer aufgerufen.

    Ja das geht immer auto so komisch! Wie geht das denn?


    if(!strcmp("/ucl",cmdtext,true))
    {
    if(UCL[playerid] == 0)
    {
    SetPVarInt(playerid, "Status", 1);
    SetPVarInt(playerid, "undercover", CreateObject(18646,0,0,0,0,0,0));
    AttachObjectToVehicle(GetPVarInt(playerid, "undercover"), GetPlayerVehicleID(playerid), -0.5, -0.2, 0.8, 2.0, 2.0, 3.0);
    SendClientMessage(playerid, 0xFFFFFFAA, "Undercover Lichter Installiert. Lösch sie wieder mit /ucldel");
    UCL[playerid] = 1;
    }
    return 1;
    }
    Die Enter-Taste ist dein Freund, nun fehlt nur noch eine Fehlerbeschreibung.

    Lass dir doch einfach mal ..


    HouseInfo[i][pBesitzer]
    .. ausgeben und schaue nach, ob überhaupt etwas geladen wird. Wenn ja, dann wird es wohl an deiner Bedingung liegen, dann wäre es sinnvoll strcmp() und IsNull() zu verwenden.

    Debuggen ist immer eine gute Lösung, um Probleme zu lösen. Schau doch mal eben in OnPlayerSpawn, ob dein Code überhaupt ausgeführt wird, wenn ein Spieler stirbt. Hast du überhaupt bei OnPlayerDeath die Player Variable 'dead' auf '1' gesetzt?

    Unter welchem Callback verwendest du den geschilderten Ausschnitt? Falls du es in OnPlayerEnterVehicle verwendest, hast du einen Gedankenfehler. OnPlayerEnterVehicle wird ausgeführt, sobald der Client die 'Einsteigen-Taste' drückt. Um es dort zu verwenden, musst du seine X, Y und Z Koordinaten einfach nochmals setzen.

    Der String 'rank' ist derzeit NULL und daher kann strval auch nichts damit anfangen. Du musst den Variablen vorher einen Wert zuweisen. Lass dir mal eben den String via printf ausgeben, dannach sollten wir mehr wissen.


    #e: Schau dir auch nochmals strval an, es formt den String in einen Integer um, daher kann strval(rank) niemals 'user' sein.