Beiträge von maddin


    Jap. Am besten schaust du dir das mal an dann weisst du genau weshalb das wichtig ist. Sicher ist sicher ;)


    xivo
    Also für sha1 und whirpool gibts ja ein plugin, für MD5 gibts eine include von y_less. http://pastebin.com/0yKdjV8E


    Dann benutzt du halt z.b
    if(!strcmp(MD5_Hash(inputtext), ReturnPasswort(SpielerName), true))
    um das eingegebene passwort als md5 mit dem aus der datenbank zu vergleichen. Das setzt aber vorraus das du das Passwort auch als md5 in der datenbank gespeichert hast.
    Das kannst du machen, indem du die CreateAccount funktion so umschreibst:
    stock CreateAccount(playerid, pass[])
    {
    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);
    format(query, sizeof(query), "INSERT INTO accounts (Name, Passwort) VALUES ('%s', MD5('%s'))", Name, pass);
    mysql_query(query);
    return true;
    }
    Da mysql eingebaute hash funktionen hat geht das recht einfach.
    Das ganze geht so übrigens auch mit SHA1,SHA2-224, SHA2-256, SHA2-384 und SHA2-512. Falls es jemanden interessiert, einfach die format zeile ersetzen:
    format(query, sizeof(query), "INSERT INTO accounts (Name, Passwort) VALUES ('%s', SHA1('%s'))", Name, pass);//SHA1
    format(query, sizeof(query), "INSERT INTO accounts (Name, Passwort) VALUES ('%s', SHA2('%s', 224))", Name, pass);//SHA2-224
    format(query, sizeof(query), "INSERT INTO accounts (Name, Passwort) VALUES ('%s', SHA2('%s', 256))", Name, pass);//SHA2-256
    format(query, sizeof(query), "INSERT INTO accounts (Name, Passwort) VALUES ('%s', SHA2('%s', 384))", Name, pass);//SHA2-384
    format(query, sizeof(query), "INSERT INTO accounts (Name, Passwort) VALUES ('%s', SHA2('%s', 512))", Name, pass);//SHA2-512
    Aber wie gesagt, ausser Whirpool, MD5 und SHA512 gibt es keine andere methode die in pawn unterstützt wird. Jedenfalls kenne ich keine, lasse mich aber gerne eines bessere belehren.

    Markus20
    Die funktionen werden in der Wiki beschrieben, eigentlich sollte das reichen^^


    Cal44
    stock LoadBuildings()
    {
    new h=0,result[50];
    mysql_query("SELECT * FROM `tabelle_mit_den_haeusern`");//wir holen uns alles aus der tabelle "tabelle_mit_den_haeusern"
    mysql_store_result();//speichern dann das ergebniss
    while(mysql_fetch_row(str))//wir gehen in einer while schleife eine reihe nach der anderen durch
    {
    mysql_get_field("Enter_x",result);//Wir holen uns den wert aus dem feld "Enter_x" und speichern es in result
    HouseInfo[h][hEntrancex] = floatstr(result);//nun übergeben wir result an die variable in der es gespeichert werden soll. Da mysql_get_field aber immer in strings speichert müssen wir aus dem string einen float wert machen mit floatstr.

    mysql_get_field("Owner",HouseInfo[h][hOwner]);//Wir holen uns den wert aus dem feld "Owner" und speichern es direkt in der variable, da es ja ein string ist.

    mysql_get_field("Value",result);//Wir holen uns den wert aus dem feld "Value" und speichern es in result
    HouseInfo[h][hValue] = strval(result);//nun übergeben wir result an die variable in der es gespeichert werden soll. Da wir dieses mal einen integer brauchen, benutzen wir strval um den string in einen integer zu convertieren.
    h++;//Jetzt noch die variable h einen dazu zählen damit wir im nächsten schleifen durchgang die variablen des nächsten hauses benutzen.
    }
    printf("Es wurden %d Häuser geladen."h);
    return 1;
    }
    Das sind 3 besiepiele jeweils für float, string und integer. Musst die restlichen felder allerdings selbst machen.

    Probiers mal so:
    stock mysql_zahlen(Table[],Where[], Where2)
    {
    new anzahl;
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Where, Where);
    format(query, 128, "SELECT * FROM %s WHERE %s = '%d'", Table,Where, Where2);
    mysql_query(query);
    mysql_store_result();//Speichern das ergebnis
    anzahl = mysql_num_rows();//Zählen dann die reihen und speichern die anzahl der reihen in der variable "anzahl"
    mysql_free_result();//und mach zu guter letzt den speicher wieder frei.
    return anzahl;
    }

    forward UpdatePlayerScore();


    public OnGameModeInit()
    {
    //Blablabla
    SetTimer("UpdatePlayerScore", 1000, true);
    //Blablabla
    return 1;
    }


    public UpdatePlayerScore()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i)
    {
    SetPlayerScore(i, GetPlayerMoney(i));
    }
    }
    return 1;
    }


    SetTimerEx zu benutzen wäre ziemlich schlecht, da du dann für jeden spieler einen timer erstellen müsstest.

    Die 568 ist die Modelid.
    Das heisst, man wird nur geportet wenn man
    a) zu fuß unterwegs ist, oder
    b) man in einem auto ist, das die angegebene Modelid hat.


    Syntax:
    SpeceficTele(playerid, telename[], Float:Vx, Float:Vy, Float:Vz, Float:Va, Float:Px, Float:Py, Float:Pz, Float:Pa, interior, Vmodel)

    Probier mal so:
    ballasa = CreatePickup(1240,2,2818.3784,-1171.5515,1025.5703,8); //ballas heal
    ballash = CreatePickup(1240,2,2818.4893,-1169.7913,1025.5703,8); //ballas armor

    dcmd_o(playerid, params[])
    {
    if(loggedin[playerid] != true) return SCM(playerid,COLOR_WHITE,"SERVER: Du bist nicht eingeloggt!");
    new string[128],result[128], name[30];
    GetPlayerName(playerid, name, sizeof(name));
    if(sscanf(params,"s[128]",result))return SendClientMessage(playerid,COLOR_GREY,"Benutze: (/o)oc [Text]");
    if(IsPlayerConnected(playerid))
    {
    format(string,sizeof(string),"(( %s: %s ))",name,result);
    SendClientMessageToAll(COLOR_WHITE,string);
    return 1;
    }
    return 1;
    }
    Bei dem plugin musst du die string länge mit angeben. Ka ob da wirklich der fehler bei dir lag aber fällt mir grad so auf ^^

    wieso entscheidest du dich nicht einfach für eins der beiden? Wer Copy & Paste kann, kann auch dcmd zu ocmd machen und anders herum...

    Kommt ganz drauf an was du für Spiele spielst. Von Razer gibts ja auch MMO Mäuse also mit extra vielen tasten an der seite für Makros etc. Wenn du aber eher der Ego-Shooter Typ bist dann bringen dir z.b 12 extra tasten auf der Maus hertzlich wenig.