Beiträge von Weihnachtsmann

    Sorry, hab mich vertan. Statt pLevel muss natürlich pName hin.


    Er lädt i.wie meinen Level nicht, an was kann es liegen?
    ich habe es so:

    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    new query[500];
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    /*SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Adminlevel", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pBanned] = mysql_GetInt("accounts", "Bann", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
    SetPlayerScore(playerid,SpielerInfo[playerid][pLevel]);
    GivePlayerMoney(playerid,SpielerInfo[playerid][pGeld]);*/
    format(query,500,"SELECT `Level` FROM `accounts` WHERE `name` = '%s';",SpielerInfo[playerid][pName]);
    mysql_query(query);
    }
    if(SpielerInfo[playerid][pBanned] == 1)
    {
    SendClientMessage(playerid,ROT,"Dein Account ist gebannt!");
    Kick(playerid);
    }
    return 1;
    }
    //edit: Wahrscheinlich weil ich GetPlayerName ausgeklammert habe haha :D
    //edit: Funktioniert immer noch nicht

    Was ist daran falsch, er schickt keine Narricht ingame ab?, wollte es so machen das jeder Adminrang ne andere Farbe hat aber man sieht nix im Chat?

    public OnPlayerText(playerid, text[])
    {
    new string[128];
    if(SpielerInfo[playerid][pAdmin] == 0)
    {
    format(string, 128,"(( %s: %s ))",PlayerName(playerid),text);
    SendClientMessageToAll(-1,string);
    }
    else if(SpielerInfo[playerid][pAdmin] == 1)
    {
    format(string, 128,"{E600FF}(( {FFFFFF}%s %s: %s {E600FF}))",Adminrang[SpielerInfo[playerid][pAdmin]],PlayerName(playerid),text);
    SendClientMessageToAll(-1,string);
    }
    else if(SpielerInfo[playerid][pAdmin] == 2)
    {
    format(string, 128,"{19CF00}(( {FFFFFF}%s %s: %s {19CF00}))",Adminrang[SpielerInfo[playerid][pAdmin]],PlayerName(playerid),text);
    SendClientMessageToAll(-1,string);
    }
    else if(SpielerInfo[playerid][pAdmin] == 3)
    {
    format(string, 128,"{0085FF}(( {FFFFFF}%s %s: %s {0085FF}))",Adminrang[SpielerInfo[playerid][pAdmin]],PlayerName(playerid),text);
    SendClientMessageToAll(-1,string);
    }
    else if(SpielerInfo[playerid][pAdmin] == 4)
    {
    format(string, 128,"{E1FF00}(( {FFFFFF}%s %s: %s {E1FF00}))",Adminrang[SpielerInfo[playerid][pAdmin]],PlayerName(playerid),text);
    SendClientMessageToAll(-1,string);
    }
    return 0;
    }

    Ich will es so machen, das die Schleife durchgeht wenn jemand /l eingibt oder disconnectet da ich ein dm script mit arenen mache und will das man sieht wie viele in der arena sind.
    Aber bis jetzt zieht er bei allen Arenen -1 ab wenn jemand /l eingibt, er woll eigentlich nur die Variabel abziehen wo der Spieler auch drinn war?
    wie würde das mit der Schleife gehen.


    for(new i; i != 2; ++i >0)dmcount[i]--;

    Ist schon veraltet... zu mindest die Stocks. Die werden irgendwann seeeeehr oft aufgerufen und das für jeden Spieler. Also z.B. Du speicherst bei 10 Spielern jeweils 10 Sachen, sind dann schon 100Qerys. So hat xGreekz7x mir das erklärt. Aber ich denke es kommt auf die Serverleistung an.


    Ab welcher Userzahl würde das ungefähr laggen?


    Ist doch offline oder irre ich mich?

    Ich habe ebend mal ein anderes SCript draufgeladen auf meinen Server weil ich was testen wollte. So danach wollte ich wieder mein selfmade DM Script draufladen, alles klappt Server startet etc.
    Aber als ich ingame war und z.b in eine Arena gehe also /deagle, bekomme ich keine Waffe, schwebe in der Luft etc.
    Oder wenn ich mein givemoney Befehl eingeben möchte, geht der auch nicht bekomme kein Geld unso


    Aber davor ging alles perfekt ?
    An was kann es liegen

    Geht auch nur ich empfehle diese Funktion keinen, da das direkte getten deutlich schneller ist als eine extra funktion


    Würde das so gehen?

    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Bann", SpielerInfo[playerid][pBann], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Adminlevell", SpielerInfo[playerid][pAdmin], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    }
    }
    return 1;
    }

    aber beim Speichern fragst du folgendes ab:
    if(GetPVarInt(playerid,"Eingeloggt") == 1)


    Habe ich es überlesen oder setzt du "Eingeloggt" garnicht auf 1?

    Doch bei response

    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new str[128];
    switch(dialogid)
    {
    case DIALOG_REGISTER:
    {
    if(response)
    {
    if(strlen(inputtext) == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Register","Das angegebene Passwort war zu Kurtz...\nBitte Registrier dich jetzt mit einem Passwort:","Register","Abbrechen");
    return 1;
    }
    else
    {
    CreateAccount(playerid, inputtext);
    SetPVarInt(playerid,"Eingeloggt",1);
    SpawnPlayer(playerid);
    ClearChat(playerid);
    SendClientMessage(playerid,GELB,"Benutze /arenen um in eine Arena beizutreten!");
    SendClientMessage(playerid,GELB,"[NEW] Kennst du schon unsere /teamdm Arena oder das /1o1 System?");
    return 1;
    }
    }
    else
    {
    Kick(playerid);
    }
    }
    case DIALOG_LOGIN:
    {
    if(response)
    {
    if(strlen(inputtext) == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das Angegebene Passwort war Falsch.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
    return 1;
    }
    else
    {
    new SpielerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, SpielerName, MAX_PLAYER_NAME);
    if(!strcmp(inputtext, mysql_ReturnPasswort(SpielerName), true))
    {
    SetPVarInt(playerid,"Eingeloggt",1);
    LoadPlayer(playerid);
    SpawnPlayer(playerid);
    ClearChat(playerid);
    SendClientMessage(playerid,GELB,"Benutze /arenen um in eine Arena beizutreten!");
    SendClientMessage(playerid,GELB,"[NEW] Kennst du schon unsere /teamdm Arena oder das /1o1 System?");
    return 1;
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das war das Falsche Passwort.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
    return 1;
    }
    }
    }
    else
    {
    Kick(playerid);
    }
    }

    Also ich mein Kumpel hat sich ausgeloggt und bei ihm hat sich nix gespeichert und wo ich mit ausgeloggt habe, hat sich mein Spielstand gespeichert? ich verstehe nicht wieso, ich habe dauerhaft Probleme mit Mysql und den Accounts


    Code:


    //Saveplayer

    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Bann", SpielerInfo[playerid][pBann], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Adminlevell", SpielerInfo[playerid][pAdmin], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    }
    }
    return 1;
    }


    //OnPlayerConenct

    public OnPlayerConnect(playerid)
    {
    new text[264];
    Resetcount(playerid);
    ResetPlayer(playerid);
    SetPlayerColor(playerid, 0xFFFFFF00);
    if(GetPVarInt(playerid,"Eingeloggt") == 0)
    {
    if(mysql_CheckAccount(playerid) == 0)
    {
    format(text,sizeof(text),"{FFFFFF}Herzlich Willkommen auf Pure Deathmatch, {00B700}%s {FFFFFF}!\nEs wurde kein Account in der Datenbank mit deinem Namen gefunden.\nAccount legst du an, indem du ein Accountpasswort eingibst und auf Registrieren drückst.",PlayerName(playerid));
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Pure Deathmatch || Erstanmeldung",text,"Registrieren","Schliessen");
    }
    else if(mysql_CheckAccount(playerid) == 1)
    {
    format(text,sizeof(text),"{FFFFFF}Herzlich Willkommen zurück auf Pure Gaming, {00B700}%s {FFFFFF}!\nBitte gib unten in das Eingabefeld dein Accountpasswort ein,\num dich einzuloggen. Anschließend werden deine Accountdaten geladen.",PlayerName(playerid));
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Pure Gaming || Authenfifizierung",text,"Login","Schliesseen");
    }
    }
    return 1;
    }



    //Disconnect

    public OnPlayerDisconnect(playerid, reason)
    {
    SavePlayer(playerid);
    DeletePVar(playerid,"Eingeloggt");
    return 1;
    }



    ResetPlayer unter OnPlayerconnect

    stock ResetPlayer(playerid)
    {
    SpielerInfo[playerid][pGeld] = 0;
    SpielerInfo[playerid][pLevel] = 0;
    SpielerInfo[playerid][pKills] = 0;
    SpielerInfo[playerid][pTode] = 0;
    SpielerInfo[playerid][pAdmin] = 0;
    return 1;
    }


    //ResetCount


    stock Resetcount(playerid)
    {
    if(dm[0][playerid] ==1)
    {
    if(dmcount[0] >0)
    {
    dmcount[0] --;
    }
    }
    if(dm[1][playerid] ==1)
    {
    if(dmcount[1] >0)
    {
    dmcount[1] --;
    }
    }
    if(dm[2][playerid] ==1)
    {
    if(dmcount[2] >0)
    {
    dmcount[2] --;
    }
    }
    if(dm[3][playerid] ==1)
    {
    if(dmcount[3] >0)
    {
    dmcount[3] --;
    }
    }
    if(dm[4][playerid] ==1)
    {
    if(dmcount[4] >0)
    {
    dmcount[4] --;
    }
    }
    if(dm[5][playerid] ==1)
    {
    if(dmcount[5] >0)
    {
    dmcount[5] --;
    }
    }
    if(one[0][playerid] == 1)
    {
    if(onecount[0] >0)
    {
    onecount[0] --;
    }
    }
    if(one[1][playerid] == 1)
    {
    if(onecount[1] >0)
    {
    onecount[1] --;
    }
    }
    if(one[2][playerid] == 1)
    {
    if(onecount[2] >0)
    {
    onecount[2] --;
    }
    }
    if(one[3][playerid] == 1)
    {
    if(onecount[3] >0)
    {
    onecount[3] --;
    }
    }
    dm[0][playerid] = 0;
    dm[1][playerid] = 0;
    dm[2][playerid] = 0;
    dm[3][playerid] = 0;
    dm[4][playerid] = 0;
    dm[5][playerid] = 0;
    one[0][playerid] = 0;
    one[1][playerid] = 0;
    one[2][playerid] = 0;
    one[3][playerid] = 0;
    Killstreak[playerid] = 0;
    Map[playerid] = 0;
    return 1;
    }