Beiträge von SA:MP-Designs

    Habs geprintet, der SavePlayer Stock wird nicht ausgeführt.


    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new query[200];
    format(query, sizeof(query), "UPDATE `accounts` SET `Level` = '%d',`Adminlevel` = '%d',`Online` = '%d',`Datum` = '%s',`Geschlecht` = '%d' WHERE `Name` = '%s'",
    SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pAdminlevel],SpielerInfo[playerid][pOnline],SpielerInfo[playerid][pDatum],SpielerInfo[playerid][pGeschlecht],SpielerInfo[playerid][pName]);
    mysql_query(query);
    }
    }
    return 1;
    }

    Hier mal der Code wo die Tabelle erstellt wird.


    Guten Tag,


    in meiner Tabelle wird Alter sowie das Geschlecht nicht gespeichert woran liegt das?
    Code siehe hier:


    if(dialogid == DIALOG_GESCHLECHT)
    {
    if(response == 1) //Männlich
    {
    SendClientMessage(playerid,COLOR_ROT,"In Ordnung, du bist also Männlich.");
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    SpielerInfo[playerid][pGeschlecht] = 1;
    }
    if(response == 0) //Weiblich
    {
    SendClientMessage(playerid,COLOR_ROT,"In Ordnung, du bist also Weiblich.");
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    SpielerInfo[playerid][pGeschlecht] = 2;
    }
    }
    if(dialogid == DIALOG_ALTER)
    {
    getdate(jahr,monat,tag);
    gettime(stunde,minute,sekunde);
    new DateInfo[3][20],string[200];
    split(inputtext,DateInfo,'.');
    if(response == 0)return Kick(playerid);
    else
    {
    if(strlen(inputtext) > 10)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    if(!IsValidDate(strval(DateInfo[0]),strval(DateInfo[1]),strval(DateInfo[2])))
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    if(jahr - strval(DateInfo[2]) > 100 || strval(DateInfo[2]) < 1 || strval(DateInfo[2]) >= jahr)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    new check = jahr - strval(DateInfo[2]);
    if(check == jahr)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    if(strval(DateInfo[1]) > monat)
    {
    check -= 1;
    }
    else if(strval(DateInfo[1]) == monat && strval(DateInfo[0]) > tag)
    {
    check -= 1;
    }
    SpielerInfo[playerid][pAlter] = mktime(stunde,minute,sekunde,strval(DateInfo[0]),strval(DateInfo[1]),strval(DateInfo[2]));
    if(AgeOfPlayer(playerid) < 10 && AgeOfPlayer(playerid) > 80)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    format(string,sizeof(string),"In Ordnung, du bist also %i Jahre alt.",AgeOfPlayer(playerid));
    SendClientMessage(playerid,COLOR_ROT,string);
    return 1;
    }
    }


    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))//Wir fragen ab ob der angegebene Spieler auch Online ist, und kein NPC ist (nur zur sicherhheit)
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    new query[400], data[50]; //50 zeichen bei data reichen völlig aus.
    format(query, sizeof(query), "SELECT * FROM `accounts` WHERE `Name`='%s'",SpielerInfo[playerid][pName]);//Lese `Alles` Von Accounts aus, wo der Name sich befindet
    mysql_query(query);//abschicken des queries
    mysql_store_result();//Auflisten aller ergebnisse
    if(mysql_num_rows())//Abfragen ob datensatz existiert
    {
    if(mysql_retrieve_row())//Weiß ich nicht genau was das bewirkt.
    {
    mysql_fetch_field_row(data,"Level");//Söllte eigendlich selbsterklärend sein
    SpielerInfo[playerid][pLevel]=strval(data);
    mysql_fetch_field_row(data,"Adminlevel");
    SpielerInfo[playerid][pAdminlevel]=strval(data);
    mysql_fetch_field_row(data,"Online");//Ich sehe auch keinen sinn, nen LEEREN Wert zu laden aber naja.
    SpielerInfo[playerid][pOnline]=strval(data);
    mysql_fetch_field_row(data,"Datum");//Ich sehe auch keinen sinn, nen LEEREN Wert zu laden aber naja.
    SpielerInfo[playerid][pDatum]=strval(data);
    mysql_fetch_field_row(data,"Geschlecht");
    SpielerInfo[playerid][pGeschlecht]=strval(data);
    mysql_fetch_field_row(data,"Alter");
    SpielerInfo[playerid][pAlter]=strval(data);


    }
    }
    mysql_free_result();//NIEMALS VERGESSEN!!!! gibt den benutzten speicher wieder frei
    }
    return 1;
    }


    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new query[400];
    format(query, sizeof(query), "UPDATE `accounts` SET `Level` = '%d',`Adminlevel` = '%d',`Online` = '%d',`Datum` = '%s',`Geschlecht` = '%d',`Alter` = '%d' WHERE `Name` = '%s'",
    SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pAdminlevel],SpielerInfo[playerid][pOnline],SpielerInfo[playerid][pDatum],SpielerInfo[playerid][pGeschlecht],SpielerInfo[playerid][pAlter],SpielerInfo[playerid][pName]);
    mysql_query(query);
    }
    }
    return 1;
    }


    //Edit:Text

    Erstmal danke für den Tipp, ist beim Speichern des Spielers deiner Meinung nach alles richtig?
    Habe noch ein Problem mit dem Laden, es liegt ein Fehler vor und könntest du mal eben noch drüber schauen ob das richtig ist, sprich der Query?
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    new query[256], data[128];
    format(query, sizeof(query), "SELECT * FROM `accounts` WHERE `Name`='%s',`Level` = '%d',`Adminlevel` = '%d',`Online` = '%d'",SpielerInfo[playerid][pName],SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pAdminlevel],SpielerInfo[playerid][pOnline]);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_field("Level", data); SpielerInfo[playerid][pLevel] = strval(data); /Errorcode
    mysql_fetch_field("Adminlevel", data); SpielerInfo[playerid][pAdminlevel] = strval(data);/Errorcode
    mysql_fetch_field("Online", data); SpielerInfo[playerid][pOnline] = strval(data);/Errorcode

    Code
    : error 035: argument type mismatch (argument 1)

    Ja reicht es.


    Du sölltest dir allgemein angucken wie du mit dem R5 Plugin Ordentlich lädst.!!
    /e Und speicherst natürlich.


    so?
    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new query[200];
    format(query, sizeof(query), "UPDATE `accounts` SET `Level` = '%d',`Adminlevel` = '%d',`Online` = '%d' WHERE `Name` = '%s'",
    SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pAdminlevel],SpielerInfo[playerid][pOnline],SpielerInfo[playerid][pName]);
    mysql_query(query);
    }
    }
    return 1;
    }


    Reicht das wenn ich das unter OnPlayerConnect und Disconnect verwende?

    Ich möchte sobald der Spieler online ist der Wert 'Online' in der Tabelle auf 1 gesetzt wird.
    Letztendlich mache ich das mit SpielerInfo[playerid][pOnline] = 1; unter LoadPlayer.
    Der Wert bleibt aber bei 0, ich weiß nicht warum.


    Zeige euch hier mal meinen Code
    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", "Adminlevel", SpielerInfo[playerid][pAdminlevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Online", SpielerInfo[playerid][pOnline], "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pOnline] = 0;
    }
    }
    return 1;
    }


    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pAdminlevel] = mysql_GetInt("accounts", "Adminlevel", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pOnline] = mysql_GetInt("accounts", "Online", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pOnline] = 1;
    }
    return 1;
    }


    enum SpielerDaten
    {
    pName[MAX_PLAYER_NAME],
    pLevel,
    pGeld,
    pAdminlevel,
    pOnline
    }
    new SpielerInfo[MAX_PLAYERS][SpielerDaten];


    Code wo ich die Tabelle erstelle

    SQL
    DROP TABLE IF EXISTS `accounts`;
    CREATE TABLE `accounts` (
      `id` INT(11) NOT NULL AUTO_INCREMENT,
      `Name` VARCHAR(24) NOT NULL,
      `Passwort` VARCHAR(128) NOT NULL,
      `Level` INT(11) NOT NULL DEFAULT '1',
      `Adminlevel` INT(11) NOT NULL DEFAULT '0',
      `Online` INT(11) NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=latin1;

    Alles klar, trotzdem nochmal eine dringende Frage, ich möchte sobald der Spieler online ist der Wert 'Online' in der Tabelle auf 1 gesetzt wird.
    Letztendlich mache ich das mit SpielerInfo[playerid][pOnline] = 1; unter LoadPlayer.
    Der Wert bleibt aber bei 0, ich weiß nicht warum.


    Zeige euch hier mal meinen Code
    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", "Adminlevel", SpielerInfo[playerid][pAdminlevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Online", SpielerInfo[playerid][pOnline], "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pOnline] = 0;
    }
    }
    return 1;
    }


    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pAdminlevel] = mysql_GetInt("accounts", "Adminlevel", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pOnline] = mysql_GetInt("accounts", "Online", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pOnline] = 1;
    }
    return 1;
    }


    enum SpielerDaten
    {
    pName[MAX_PLAYER_NAME],
    pLevel,
    pGeld,
    pAdminlevel,
    pOnline
    }
    new SpielerInfo[MAX_PLAYERS][SpielerDaten];


    Code wo ich die Tabelle erstelle

    SQL
    DROP TABLE IF EXISTS `accounts`;
    CREATE TABLE `accounts` (
      `id` INT(11) NOT NULL AUTO_INCREMENT,
      `Name` VARCHAR(24) NOT NULL,
      `Passwort` VARCHAR(128) NOT NULL,
      `Level` INT(11) NOT NULL DEFAULT '1',
      `Adminlevel` INT(11) NOT NULL DEFAULT '0',
      `Online` INT(11) NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=latin1;


    //Edit: Tabellen Erstellung hinzugefügt

    Guten Tag,


    ich habe eine Frage an euch. Ich möchte gerne für Informationen die im UCP wiedergegeben werden den letzten Logout des Spielers speichern in der Spielerdatei, sprich z.B 05.03.2014.
    Hat jemand eine Idee/Tipp wie ich das mache?

    Guten Tag,


    was ist hier dran bitte falsch? :whistling:
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,""#SERVERFARBE""#SERVERNAME" {FFFFFF}- Login","Dein Account wurde in der Datenbank gefunden, bitte gebe nun dein Passwort ein.\nSolltest du dein Passwort vergessen haben, melde dich bei einem Head Administrator.","Login","Abbrechen");