Beiträge von Pille

    if(strcmp(cmdtext,"/stats", true)==0)
    {
    new string[128];
    new Float:health;
    new Float:armour;
    new fraktname[64];
    switch(GetPVarInt(playerid,"Fraktion"))
    {
    case 0:{fraktname="Keine";}
    case 1:{fraktname=frak1;}
    case 2:{fraktname=frak2;}
    case 3:{fraktname=frak3;}
    }
    GetPlayerHealth(playerid,health);
    GetPlayerArmour(playerid,armour);
    SendClientMessage(playerid,GELB,"|____Deine Stats____|");
    format(string,sizeof(string),"[Username: %s] [Level: %i] [Geld: %i] [Adminlevel: %i] [Fraktion: %s]",SpielerName(playerid),GetPlayerScore(playerid), GetPlayerMoney(playerid), GetPVarInt(playerid,"Adminlevel"),fraktname);
    SendClientMessage(playerid,GELB,string);
    format(string,sizeof(string),"[Wantedlevel: %i] [Health: %i] [Armour: %i] [Skin ID: %i]",GetPlayerWantedLevel(playerid),GetPlayerHealth(playerid),GetPlayerArmour(playerid), GetPlayerSkin(playerid));
    SendClientMessage(playerid,GELB,string);
    return 1;
    }

    Hallo Leute,


    Ich versuche gerade in einer Datei eine bestimmte Zeile zu löschen.
    Das funktioniert auch ganz gut, ich habe es mit ein bisschen herumprobieren
    geschafft, aber so ganz zufrieden bin ich mit dem Ergebnis nicht.


    • Einmal Datei Öffnen , auslesen ( mit Schleife Linien auslesen )
    • zwischendrin eine Temporäre Datei erstellen & in diese alle gelesenen Linien schreiben
    • Mit einer Abfrage verhinderst du das Linien geschrieben werden die nicht benötigt werden
    • Danach löscht du die alte Datei & benennst die alte um


    Das hier habe ich versucht durchzusetzen, jedoch gelang es mir nicht die Datei
    umzubenennnen.


    Ich habe mir meine eigene Funktion geschrieben, wobei
    die wahrscheinlich sehr viel ressourcen verbraucht.


    Geht das nicht einfacher?


    Hier der stock:

    Spoiler anzeigen
    stock fdeleteline(Name[],Line[])
    {
    new File:datei=fopen(Name,io_read);
    new File:datei2=fopen("tmp.txt",io_append);
    new string[50];
    while(fread(datei,string)) if(strfind(string,Line,true)==-1) fwrite(datei2,string);
    fclose(datei);
    fclose(datei2);
    datei=fopen(Name,io_write);
    datei2=fopen("tmp.txt",io_read);
    while(fread(datei2,string)) fwrite(datei,string);
    fclose(datei2);
    fclose(datei);
    fremove("tmp.txt");
    return 1;
    }


    LG
    Pille

    Smoker hat wieder die umständlichste Methode genommen -.- :wacko:



    Leute..??
    Soll das jetzt hier ein Battle werden, wer die ressourcenschonendste,
    beste, einfachste und kürzeste Antwort hat?


    Beim Scripten hat man verdammt viele Wege, die zum ZIel führen.
    Jeder Weg ist dabei unterschiedlich, doch solang der Weg zum Ziel
    führt, ist das weder falsch noch "Käse", das ist nur dann wichtig,
    wenn jemand dannach fragt oder dieser Weg umständlich und lang ist.



    Alle 3 funktionieren.... Alle 3 sind richtig.

    new string[200],name[MAX_PLAYER_NAME];
    GetPlayerName(name,sizeof(name));
    format(string,sizeof(string),"Willkommen bei meinem Dialog, %s.\nWir danken dir, dass du ihn angeschaut hast.",name);
    ShowPlayerDialog(playerid,DIALOG_NAME,DIALOG_STYLE_MSGBOX,"Überschrift",string,"Okay","");

    Super, funktioniert.


    Aber wann muss ich ' ' verwenden?
    Wann nicht? Das ist mir nicht ganz plausibel.

    Soo, ich bin dabei Daten auszulesen, was leider nicht klappt.


    stock AccountLaden(playerid)
    {
    new Int[5][20]={
    "Level",
    "Geld",
    "Adminlevel",
    "Fraktion",
    "Skin"
    };
    new string[100];
    for(new i=0;i<sizeof(Int);i++)
    {
    format(string,sizeof(string),"SELECT %s FROM accounts WHERE Name = %s",Int[i],Spieler[playerid][MySQL_Name]);
    mysql_query(string);
    mysql_store_result();
    switch(i)
    {
    case 0: Spieler[playerid][Level]=mysql_fetch_int();
    case 1: Spieler[playerid][Geld]=mysql_fetch_int();
    case 2: Spieler[playerid][Adminlevel]=mysql_fetch_int();
    case 3: Spieler[playerid][Fraktion]=mysql_fetch_int();
    case 4: Spieler[playerid][Skin]=mysql_fetch_int();
    }
    mysql_free_result();
    }
    return 1;
    }

    mysql_store_result: Speichert das Ergebnis der ausgeführten Query. Beispielsweise du verwendest "SELECT * FROM spielerdaten", dann ist das Ergebnis alles aus den Spielerdaten.


    Dann speichert MySQL alle Spielerdaten in den RAM?
    Wie kann ich sie im Script auslesen und in einerVariable speichern?


    Weiss nicht genau was du damit meinst. welche zeichen sollten denn unbekannt sein?


    Ich weiß nicht, was macht der denn sonst? ^^




    store_result speichert das ergebniss (sagt der name der funktion ja eigentlich schon^^), der vorherigen query.


    Welches Ergebnis und worein speichert er das?



    free_result gibt den speicher wieder frei.


    Was passiert wenn man das nicht macht?



    num_rows gibt die anzahl an reihen zurück.


    Also er prüft eine Zeile, ob die dem gesuchten entspricht, wenn nicht,
    dann gibt er +1 zurück, bis ers gefunden hat?