Beiträge von Jeffry

    Oh, stimmt, das ist natürlich schlecht in dem Tutorial, darauf hab ich gar nicht geachtet. Kommt davon wenn man sich auf die Korrektheit verlässt.


    Mache es so:
    OnGameModeInit:
    SetTimer("PayDay", 60000, true);


    Und das Public:
    forward PayDay();
    public PayDay()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    payDayCount[i]++;
    if(payDayCount[i] >= 60)
    {
    //PayDay geben, für i.
    payDayCount[i] = 0;
    }
    }
    }
    return 1;
    }


    Und unter den Includes:
    new payDayCount[MAX_PLAYERS];


    Beim Login den payDayCount laden und beim Verlassen speichern.

    Schreibe vor den stock:
    forward Float:GetDistanceBetweenPoints(Float:X, Float:Y, Float:Z, Float:PointX, Float:PointY, Float:PointZ);


    Oder schreibe den stock direkt unter die Includes.


    Die Warnung kommt, weil eine Funktion mit einem, mit Tag gekennzeichneten return-Wert, nicht nach der ersten Verwendung deklariert werden darf.

    Es ist besser mit einem Timer der jede Minute durch alle Spieler loopt und den Zähler hoch setzt, als einen Timer pro Spieler, der eine Stunde lang ist.


    So ist es auch individuell, da jeder einen anderen Zähler hat. Außerdem läuft dann nur 1 Timer, und keine X Timer.

    if(WantedLevel[giveplayerid] >= 6)
    zu:
    if(WantedLevel[giveplayerid] >= 6 && strval(result) > 0)


    Und das hier kannst du noch hinzufügen:
    if(WantedLevel[giveplayerid] <= 0 && strval(result) < 0)
    {
    SendClientMessage(playerid, COLOR_WHITE, "Der Spieler hat schon 0 Wanteds!");
    return 1;
    }

    PlayerInfo[giveplayerid][pCrimes] += 1;
    WantedLevel[giveplayerid] += 1;
    zu
    PlayerInfo[giveplayerid][pCrimes] += strval(result);
    WantedLevel[giveplayerid] += strval(result);

    Nein, du kannst nur die angegebenen Keys abfragen.


    Wenn du einen zweiten PC hast, dann kannst du auch über localhost mit mehreren Spielern drauf sein (mit beiden Rechnern eben). Dafür nimmst du einfach die lokale IP (findest du bei ipconfig in der cmd).

    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys & KEY_JUMP)
    {
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    SetPlayerPos(playerid, x, y, z);
    ClearAnimations(playerid);
    }
    return 1;
    }


    Du könntest es so versuchen.
    Alternativ mit GetPlayerKeys unter OnPlayerUpdate, und dann mit return 0, falls es den Sprung für die anderen trotzdem zeigt.

    Problem behoben, er hatte bei mysql_connect die Datenbank und das Passwort vertauscht.
    Richtig ist es (wie in Post #19 auch steht):
    mysql = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DATABASE, MYSQL_PASS);


    Beim Überprüfen ob ein Account schon existiert musste zudem
    mysql_fetch_int
    zu
    mysql_num_rows
    geändert werden.


    Funktioniert nun alles.



    FunkySimonp: Thema auf erledigt setzen nicht vergessen. ;)

    Heißt deine Datenbank auch "samp"?
    MySQL (etc) alles korrekt aufgesetzt, also kommst du mit z.B. phpMyAdmin auf die Datenbank?
    Hast du es mal mit 127.0.0.1 anstatt localhost versucht?
    Was sagt der MySQL Log, wenn du den Server startest (zuvor leeren)?

    Das ist ja jetzt wieder der gleiche Fehler wie zu Anfangs, bevor du das Plugin gewechselt hast.


    Nimm den root Benutzer ohne Passwort:
    #define MYSQL_HOST "127.0.0.1"
    #define MYSQL_USER "root"
    #define MYSQL_DATABASE "Datenbank"
    #define MYSQL_PASS ""


    Das ist in 99% aller Fälle standardmäßig so eingestellt, ohnehin so, wenn du es neu installierst.



    Zwecks dem Error:
    Ja also dann doch mysql_debug wie ich schon sagte. :klugs:
    mysql_debug(1);

    if(listitem == 1)
    {
    new string[512];
    for(new i = 0; i < 10; i++)
    {
    format(string, sizeof(string), "%s%s - %s | Quote 1: %i | Quote X: %i | Quote 2: %i\n", string, Wettinfo[i][Team1], Wettinfo[i][Team2],Wettinfo[i][Quote1],Wettinfo[i][QuoteX],Wettinfo[i][Quote2]);
    }
    ShowPlayerDialog(playerid,3, DIALOG_STYLE_LIST, "Spiel löschen:", string, "Löschen", "Abbrechen");
    return 1;
    }


    Dann dürfte es alle anzeigen, ich denke das ist was du willst.





    EDIT: (Post unten)
    hubby: Da dein Problem behoben ist, wäre es gut, wenn du den Thread auf erledigt setzt. Danke! :)

    Da es ein Textdraw ist, das spielerspezifisch erstellt wird, musst du das playerid Array hinzufügen, überall.


    Textdraw0
    Zu
    Textdraw0[playerid]


    Ebenso für Textdraw1.


    Die richtige Deklaration hatte ich dir ja bereits gegeben.



    @xCurry:
    Setze einen Timer, oder nimm OnPlayerRequestClass.