Beiträge von d0ma


    Noch genauer:


    Beispiel: Folgende Abfrage:

    SQL
    SELECT * FROM `players` WHERE `name` = 'Music4You' AND `password` = '%s'


    gibt der Spieler jetzt für das Passwort einfach folgenden Text ein:

    Zitat

    ' OR `name` = 'NAME EINES ADMINS


    dann hat er sich erfolgreich in den Adminaccount gehackt. Dies wird durch DB_Escape verhindert indem es die ' Zeichen *escaped* (also man kann dann nicht mehr durch Eingabe von ' die Abfrage manipulieren).


    Ohne DB_Escape wird das eingegebene Passwort einfach in die Abfrage eingefügt und diese dadurch manipuliert: (sollte einleuchtend sein wenn du dir die Abfrage unterhalb jetzt anschaust)
    SELECT * FROM `players` WHERE `name` = 'Music4You' AND `password` = '' OR `name` = 'NAME EINES ADMINS'

    SQL
    SELECT * FROM `players` WHERE `name` = 'Music4You' AND `password` = '' OR `name` = 'NAME EINES ADMINS'


    Hmm ich hab das jetzt so.


    Nun wird er dauerhaft online angezeigt, obwohl er nun Offline ist.

    PHP
    $abfrage = fsockopen ('udp://'.$ip, $port, $errno, $errstr, 5);

    Die 5 bedeutet doch den Intervall, wie er prüft oder?


    scheint zu stimmen das UDP auch aufgebaut wird, wenn nichts dahinter ist.


    Downloade dir von hier die SAMPQueryApi http://forum.sa-mp.com/showthread.php?t=104299
    da siehst du wie durch einen write &read vom socket der Onlinestatus abgefragt wird ;)
    (Kleine Hilfe: die Variable in Zeile 67 ist der Punkt wo der Server dann als Online gekennzeichnet wird)

    $abfrage = fsockopen ($ip, $port, $errno, $errstr, 5);


    Vor der IP sollte "udp://" stehen, sonst wird tcp verwendet.

    PHP
    $abfrage = fsockopen ('udp://'.$ip, $port, $errno, $errstr, 5);


    und den PORT nicht in Anführungszeichen schreiben, ist kein Text.


    Dann sollte es eig. funktionieren

    Installier dein GTA mal in ein anderes Verzeichnis
    und stell sicher das die Audio Dateien mit installiert werden (kann man auswählen bei "Custom" Installation)


    Aber das sieht doch dann so aus? o.o


    Hast du es probiert ? Nein, sonst würdest du es wissen.


    jeder skin ist ein TextDraw mit TextDrawSetPreviewModel


    der Hintergrund ist ein TextDraw mit Box


    die Knöpfe sind TextDraws mit TextDrawSetSelectable


    die Überschrift ist ein TextDraw mit Schrift



    alles einzelne TextDraws zusammen gesetzt


    Edit: dieses Script vom Bild sollte im SA-MP Server download dabei sein

    Der Server muss ständig anfragen gegenüber dem Clienten machen wie der User denn jetzt heißt.
    Meinst du das macht ernsthaft Sinn, den Traffic und die CPU dadurch zu belasten?


    Wenn alle *Get...*-Funktionen Anfragen an den Clienten erzeugen würden, dann würde SA-MP nicht funktionieren. All diese Daten hat der Server schon im Speicher (gibt sie lediglich zurück)


    mit eurer Logik müsste man dann ja ALLE *Get...*-Funktionen(die sich nicht ständig ändern, und das sind viele) in Variablen zwischenspeichern :whistling:
    Für mich ist das nur sparen an falscher Stelle.


    //Goldkiller: Danke für deinen Beitrag.

    1. Du setzt den Cursor(Schreibposition) an den Anfang des zu löschenden Teils
    2. Du gehst mit dem Scrollbacken(oder auch anders) zu dem Ende des zu löschenden Teils
    3. Nun hältst du die Linke Shift-Taste(Großschreibtaste) gedrückt und drückst mit der Maus auf die Endposition des zu löschenden Teils
    4. Nun ist alles dazwischen markiert

    Standbild, Execrash


    Ja, da gibt es zur Zeit ein neues Problem/einen neuen Hack, der GTA einfriert(Standbild) :whistling:


    Jeder öffentliche Server sollte folgenden Code im Script haben(bis dieses Problem behoben wurde) um diesen Player-Crasher zu blockieren:


    #include <a_samp>


    new AOFCT[MAX_PLAYERS];
    new AOFCW[MAX_PLAYERS char];
    public OnPlayerUpdate(playerid)
    {
    new Float:x,Float:y,Float:z;
    GetPlayerCameraFrontVector(playerid,x,y,z);
    if(((-1.0< x <1.0) && (-1.0< y <1.0) && (-1.0< z <1.0)) == false)
    {
    if(AOFCT[playerid] > GetTickCount())AOFCW{playerid}++; else AOFCW{playerid}=0;
    AOFCT[playerid]=GetTickCount()+1000;
    if(AOFCW{playerid} == 2)
    {
    Kick(playerid);
    }
    return 0;
    }
    return 1;
    }

    Immer diese Speedtests
    Man sparrt bestimmt 1 MS nach 12894 formats
    SUPER (sinnlos) !


    In SA-MP gibt es definitiv andere Bereiche zu beachten, wie man Schleifen etc. coded... im Gegensatz zu sowas :p


    Dennoch nützlich um schneller voran zu kommen, aber nicht für Speed :D

    ob ihr

    new pHouse[MAX_PLAYERS];
    new pKills[MAX_PLAYERS];


    oder

    enum pInfo {
    pHouse,
    pKills
    };
    new g_pInfo[MAX_PLAYERS][pInfo];

    schreibt
    nimmt sich "gar nichts" ;)



    beides wird gleich viel Ram verwenden ;) Beide male müssen 2 x MAX_PLAYERS *Speicherblöcke* reserviert werden. Und auch bei beiden wird die .amx größer

    $this->getuser();:
    public OnRconCommand(cmd[])
    {
    printf("OnRconCommand(%s) start", cmd);
    if(!strcmp(cmd,"cpsay",true))
    {
    printf("Send: %s", cmd[5]);
    SendClientMessageToAll(0xFFFFFFAA,cmd[5]); // ab 6ter stelle
    print("Send: done");
    return 1;
    }
    printf("OnRconCommand(%s) end", cmd);
    return 0; // 0 damit andere scripts weiter gecheckt werden
    }


    Ausgabe ?
    Wenn gar nichts kommt, dann blockiert ein anderes FilterScript OnRconCommand (blockieren = return 1 zuvor)


    Mit strings geht man nicht mit "=" um... dafür gibt es format und andere string Funktionen


    Das ganze optimiert:
    public OnRconCommand(cmd[])
    {
    if(!strcmp(cmd,"cpsay",true))
    {
    SendClientMessageToAll(0xFFFFFFAA,cmd[5]); // ab 6ter stelle
    return 1;
    }
    return 1;
    }