Beiträge von #define

    Also quasi so?


    new querystring[128];
    format(querystring,sizeof(querystring),"UPDATE `accounts` SET `Level` = '%s', `Geld` = '%s', `Kills` = '%s', `Tode` = '%s', `Adminlevel` = '%s, `Health` = '%s' WHERE `Name` = '%s'",SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pGeld],SpielerInfo[playerid][pKills],SpielerInfo[playerid][pTode],SpielerInfo[playerid][pAdminlevel],SpielerInfo[playerid][pHealth],SpielerInfo[playerid][pName]);
    mysql_query(querystring);

    Finde ich richtig gut und mit ein wenig logischen denken selbst für einen Anfänger wie mir gut zu verstehen.


    //edit:


    Habe mal versucht das maddin speicherzeugs in einer einzigen query zu speichern, allerdings speichert er es nicht... :/


    mysql_query("UPDATE `accounts` SET `Level` = 'SpielerInfo[playerid][pLevel]', `Geld` = 'SpielerInfo[playerid][pGeld]', `Kills` = 'SpielerInfo[playerid][pKills]', `Tode` = 'SpielerInfo[playerid][pTode]', `Adminlevel` = 'SpielerInfo[playerid][pAdminlevel], `Health` = 'SpielerInfo[playerid][pHealth]' WHERE `Name` = 'SpielerInfo[playerid][pName]'");


    Oder muss ich mit strings arbeiten?

    Hey Leute,
    ich arbeite momentan an einem Startintro, also eigentlich ein Tutorial. Es klappt auch, nur wenn ich es danach nochmal versuche mit einem neuen Account, oder wenn es ein Kumpel versuchst, klappt es nichtmehr o_O...


    Hier der Code:


    new new StartdialogTime[MAX_PLAYERS];
    new DialogTimer[MAX_PLAYERS];
    forward Startdialog(playerid);


    Dann nach der Registration:

    TogglePlayerControllable(playerid,false);
    SetPlayerPos(playerid,180.0177,-110.1077,8.7177);
    SetPlayerCameraPos(playerid, 180.0177,-110.1077,8.7177);
    SetPlayerCameraLookAt(playerid,208.2195,-102.8708,7.8655);
    DialogTimer = SetTimerEx("Startdialog",1000,true,"i",playerid);
    SetPVarInt(playerid,"ImIntro", 1);


    Bei OnPlayerSpawn:



    if(GetPVarInt(playerid,"ImIntro") == 1)
    {
    DeletePVar(playerid,"ImIntro");
    KillTimer(DialogTimer[playerid]);
    return 1;
    }


    Der Timer:



    public Startdialog(playerid)
    {
    StartdialogTime[playerid]++;
    new str[128],str1[128],str2[128],str3[128],str4[128],str5[128],str6[128],strr[128],str7[128],str8[128];
    if(StartdialogTime[playerid] == 3)
    {
    SendClientMessage(playerid,Weiss,"{"Embed_Türkis"}Jim sagt: {"Embed_Weiss"}Junge, du schuldest mir immernoch mein Geld! 120.000$!");
    }
    if(StartdialogTime[playerid] == 8)
    {
    format(str1,sizeof(str1),"{"Embed_Gelb"}%s sagt:{"Embed_Weiss"} Man Jim, du kennst meinen finanziellen Zustand ganz genau!",Playername(playerid));
    format(str,sizeof(str),"{"Embed_Gelb"}%s sagt:{"Embed_Weiss"} In meinem Portmonai herrscht Ebbe und das Geld was ich krieg reicht grade noch so zum überleben!",Playername(playerid));
    SendClientMessage(playerid,Weiss,str1);
    SendClientMessage(playerid,Weiss,str);
    }
    // Und so weiter...
    }


    Hoffentlich kann mir einer von euch helfen :/


    mfg

    Ok, habe es jetzt so gemacht:


    new rPass[128],rAlter,rSex;
    GetPVarString(playerid,"Reg_Passwort",rPass,128);
    rAlter = GetPVarInt(playerid,"Reg_Alter");
    rSex = GetPVarInt(playerid,"Reg_Geschlecht");
    CreateAccount(playerid,rPass,rAlter,rSex,inputtext);
    return true;




    HILFE!


    Jetzt wird garkein Account mehr erstellt!
    Es wird nichts in der Tabelle erstellt -.-

    Ich versuche dir mal zu helfen:


    Ersteinmal setzt du in deinem Speicherenum folgende Punkte ein:



    Float:pLastX,
    Float:pLastY,
    Float:pLastZ


    Deine letzten Koordinaten speicherst du dann bei OnPlayerDisconnect.


    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid,x,y,z);
    mysql_SetFloat("accounts", "LastX", Float:x, "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "LastY", Float:y, "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "LastZ", Float:z, "Name", SpielerInfo[playerid][pName]);
    SavePlayer(playerid);


    Nun musst du sie nurnoch laden. Das machst du einfach bei deinem LoadPlayer stock.


    SpielerInfo[playerid][pLastX] = mysql_GetFloat("accounts", "LastX", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pLastY] = mysql_GetFloat("accounts", "LastY", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pLastZ] = mysql_GetFloat("accounts", "LastZ", "Name", SpielerInfo[playerid][pName]);


    Zu guter letzt setzt du den Spieler einfach an die abgespeicherte Position... bei OnPlayerSpawn


    new Float:Lx = mysql_GetFloat("accounts", "LastX", "Name", SpielerInfo[playerid][pName]);
    new Float:Ly = mysql_GetFloat("accounts", "LastY", "Name", SpielerInfo[playerid][pName]);
    new Float:Lz = mysql_GetFloat("accounts", "LastZ", "Name", SpielerInfo[playerid][pName]);
    SetPlayerPos(playerid,Lx,Ly,Lz);

    //edit:


    Dein mysql_GetFloat muss im übrigen oben stehen, also im Header. Ausserdem musst du "Float:" davorschreiben.
    Also so:


    stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[])
    {
    new query[128], Float:sqlfloat;
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT %s FROM %s WHERE %s = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_float(sqlfloat);
    mysql_free_result();
    return sqlfloat;
    }
    Ich hoffe ich konnte dir weiterhelfen :)

    Hallo Community,
    ich arbeite an einem Registriersystem in mysql. Als kleine Vorlage habe ich das System von maddin!


    Zum System: Es werden Geschlecht, Alter und Email abgefragt. Vorerst wird es in PVar's abgespeichert und beim erstellen dann aufgerufen.
    Und genau da liegt mein Problem!


    case DIALOG_REGISTER_MAIL:
    {
    if(response)
    {
    if(strfind(inputtext, "@", true) != -1)
    {
    new rPass[128],rAlter,rSex,rMail[256];
    rPass = GetPVarInt(playerid,"Reg_Passwort"); //array must be indexed (variable "rPass")
    rAlter = GetPVarInt(playerid,"Reg_Alter"); // Fehlerfrei
    rSex = GetPVarInt(playerid,"Reg_Geschlecht"); // Fehlerfrei
    rMail = GetPVarInt(playerid,"Reg_Mail"); //array must be indexed (variable "rMail")
    CreateAccount(playerid,rPass,rAlter,rSex,rMail);
    return true;
    }
    else
    {
    kick(playerid);
    return true;
    }
    }
    }


    Und im CreateAccount stock gibt es auch erros...


    stock CreateAccount(playerid, pass[],age,sex,email[])
    {
    new query[256],Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    mysql_real_escape_string(Name,Name);
    mysql_real_escape_string(pass,pass);
    mysql_real_escape_string(email,email);
    mysql_real_escape_string(age,age); //argument type mismatch(argument 1)
    mysql_real_escape_string(sex,sex);//argument type mismatch(argument 1)
    format(query, sizeof(query), "INSERT INTO accounts (Name, Passwort, eMail, Alter, Geschlecht) VALUES ('%s', '%s', '%s', '%d', '%d')", Name, pass, email, age,sex);
    mysql_query(query);
    return true;
    }


    Ich hoffe einer von euch könnte mir helfen... Bin langsam echt am verzweifeln.
    Falls ihr noch mehr Informationen benötigt, einfach in den Thread schreiben.
    Mfg.

    Hey Leute,
    stehe hinter einen Rätsel... unzwar: Ich möchte eine e-Mail abfrage machen, habe aber keine Ahnung wie das geht, das man auch eine e-mail eingeben muss. Bedeutet das wenn man halt "Domain@email.de" machen muss.
    Ich hoffe ihr wisst wie ich meine und ihr könnt mir helfen :)

    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid==DIALOG_REGISTER)
    {
    if(response==0)
    {
    SendClientMessage(playerid,BLAU,"Du hast den Vorgang abgebrochen.");
    Kick(playerid);
    return 1;
    }
    if(response==1)
    {
    if(!strlen(inputtext))
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren"."Gib bitte das gewünschte Passwort ein:"."Register"."Abbrechen");
    SendClientMessage(playerid,BLAU,"Du hast den Vorgang abgebrochen.");
    return 1;
    }
    else
    {
    Register(playerid,inputtext);
    return 1;
    }
    }
    }
    return 1;
    }


    Du hast Klammern vergessen, so is es richtig


    und Xuki: das wurde schon gesagt du beitragspusher :DD

    Und wie sollen wir das anstellen ohne jegliche informationen?
    mysql? dini? anderes speicherungssystem?
    Godfather? Selfmade?