Beiträge von d0ma

    Mit "netstat -tulpn" kannst du nachschauen welche Ports von welchem Prozess bereits genutzt werden.


    Ports sind in der Spalte "Local Address" hinter dem ':', am Ende der Tabelle sollte jeweils der Prozess stehen der den Port belegt/lauscht.


    oder viel einfacher(ohne % Operation): http://wiki.sa-mp.com/wiki/Floatdiv
    floatdiv

    Hier muss rein garnichts gemoddet werden...


    Ich zeig dir wie es geht ohne modden, weil es beim modden sowieso nur du selbst dann sehen würdest ingame.


    Hier die Idee dazu:
    -Erstelle einen NPC ohne recording abzuspielen und setze seine position.
    -SetPlayerAttachedObject mit scale parametern für die Größe
    Bsp: SetPlayerAttachedObject(botplayerid, 0, 1276, 1, 0, 2, 0, 0, 0, 90, 0, 10, 10, 10);


    for(new robs=0; robs < sizeof(Rob); robs++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,5.0,Rob[robs][0],Rob[robs][1],Rob[robs][2]))
    {
    IsRobbing[playerid] =0;
    pRobCount[playerid] = 0;
    KillTimer(pRobTimerID[playerid]);
    robmoney[playerid] = robmoney[playerid];
    //printf("robZone: %d", robs);
    break; // gefunden, schleife beenden
    }
    }
    Jede Rob zone wird überprüft

    Ignoriere alle vorherigen Angaben über RAM-Verbrauch wenn Ihr kein Geld unnötig ausgeben wollt.


    Normal sollten für SA-MP wenige hundert MB's ausreichen. (Hängt auch vom Script ab)


    Letztens waren es bei uns 96 MB für 104 Spieler.


    Könnt ja mal nachschauen bei eurem jetzigem Hoster wieviel euer Server an RAM verbraucht sofern das möglich ist.


    PS: Vergiss aber nicht das das Betriebssystem auch noch RAM braucht.


    Edit: 2 GB hatten bei uns lange ausgereicht.

    Gab da mal eine Nummer die man wählt um Android Geräte zu Resetten.


    Ob das bei PIN lock/der Notruf Eingabe funktioniert bin ich mir nicht sicher.


    Wähl: *2767*3855# (Resettet das Handy)

    Du musst bei SELECT auch ALLES aufführen wo du in WHERE benutzt



    heißt:


    SQL
    SELECT produkte.ID,produkt.BizID,produkt.Preis,produkt.ProduktID,produkte.Name FROM produkt as produkt,produkte as produkte WHERE produkt.BizID = %d AND produkte.ID = produkt.ProduktID


    SELECT produkte.ID,produkt.BizID,produkt.Preis,produkt.ProduktID,produkte.Name FROM produkt as produkt,produkte as produkte WHERE produkt.BizID = %d AND produkte.ID = produkt.ProduktID
    Der dick gedruckte Teil

    SQL
    *Was auch immer vorher noch kommt...* Tprodukt.Preis,Tprodukt.ProduktID,Tprodukte.Name FROM produkt as Tprodukt,produkte as Tprodukte WHERE Tprodukt.BizID = %d AND Tprodukte.ID = Tprodukt.ProduktID


    mit "as" gibst du den tabellen namen

    einfach mit "bind" mal rumspielen könnte die lösung sein


    Versuch es mal mit "bind DieIPVomRoot" in der server.cfg


    wenn das nicht hilft kannst du auch versuchen die ip wo jeder user hat hinter "bind" zu setzen


    Warum ?
    Warum sendet man 5 MySQL Abfragen zum MySQL Server und wartet 5 MAL bis der MySQL Server die Abfragen verarbeitet und zurücksendet.


    Was wird wohl um einiges besser sein ?

    SQL
    UPDATE `accounts` SET `Level` = '*ZAHL*' WHERE `Name` = '*NAME*'
    UPDATE `accounts` SET `Geld` = '*ZAHL*' WHERE `Name` = '*NAME*'
    UPDATE `accounts` SET `Kills` = '*ZAHL*' WHERE `Name` = '*NAME*'
    UPDATE `accounts` SET `Tode` = '*ZAHL*' WHERE `Name` = '*NAME*'
    UPDATE `accounts` SET `Health` = '*ZAHL*' WHERE `Name` = '*NAME*'


    oder so alles auf einmal:

    SQL
    UPDATE `accounts` SET `Level`='*ZAHL*', `Geld`='*ZAHL*', `Kills`='*ZAHL*', `Tode`='*ZAHL*', `Health`='*ZAHL*' WHERE `Name` = '*NAME*'


    Und hier das gleiche Problem:
    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); //Wir Speichern den Namen des Spielers in der Variable [i]SpielerInfo[playerid][pName][/i]
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Level" eingetragen ist und Speichern ihn in unserer Variable.
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Geld" eingetragen ist und Speichern ihn in unserer Variable.
    SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Kills" eingetragen ist und Speichern ihn in unserer Variable.
    SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Tode" eingetragen ist und Speichern ihn in unserer Variable.
    }
    return 1;
    }
    Bei LoadPlayer wird das an mysql-Abfragen gesendet:

    SQL
    SELECT `Level` FROM `accounts` WHERE `Name` = '*NAME*'
    SELECT `Geld` FROM `accounts` WHERE `Name` = '*NAME*'
    SELECT `Kills` FROM `accounts` WHERE `Name` = '*NAME*'
    SELECT `Tode` FROM `accounts` WHERE `Name` = '*NAME*'


    4 mal mysql_store_result usw, obwohl es auf einmal auch geht:


    SQL
    SELECT `Level`,`Geld`,`Kills`,`Tode` FROM `accounts` WHERE `Name` = '*NAME*'



    So wie hier im Forum MySQL in SA-MP genutzt wird ist es sicher langsamer als jede andere Speichermethode und noch dazu ohne Threaded queries damit der Server anfängt zu hängen und alles zu ruckeln beginnt.

    Wenn ihr den Aimbot von GTA San Andreas selbst blocken weollt, also joysticks:


    Benutzt GetPlayerKeys in OnPlayerUpdate um es zu prüfen.
    Bei der Tastertur sind die Up/Down und Left/Right tasten immer 0(nicht gedrückt) oder 128(gedrückt). Bei einem Joystick ist es immer von 0 bis 128, da man da den Knüppel ja auch einfach nur zur hälfte durchdrücken kann.



    public OnPlayerUpdate(playerid)
    {
    new Keys,ud,lr;
    GetPlayerKeys(playerid,Keys,ud,lr);

    if(ud > -128 && ud < 128 && ud != 0) SendClientMessage(playerid, 0xFFFFFFFF, "Joystick(also GTA SA Aimbot) erkannt");
    if(lr > -128 && lr < 128 && lr != 0) SendClientMessage(playerid, 0xFFFFFFFF, "Joystick(also GTA SA Aimbot) erkannt");



    return 1;
    }

    Langsamer als MySQL wird es sicherlich nicht sein. Lade mal einen GF Acc per MySQL System ... Der Server lalalalalagt wie sau. Ob es bei SQLite auch so ist, kann ich nicht bestätigen.
    Jedenfalls müsste man den ganzen Acc per einzelnem Befehl auslesen lassen. Dann gehts ja noch mit der Laggerei ;]


    Gruss: Sonic


    ....


    Dieses Forum braucht wirklich mal ein Tutorial für threaded MySQL-Queries, weil ich das Gefühl habe das sowas in diesem Forum komplett fremd ist.