Beiträge von Jeffry

    PC schonmal neu gestartet?
    Lösche die amx Datei mal, dann starte die pawno.exe neu und versuche dann den Code zu kompilieren.


    Falls das nicht klappt, kannst du dir den SAMP Server neu herunterladen, und dann fügst du deine Codes, Plugins und scriptfiles dort ein.

    Entweder so, oder du definierst es als Funktion, die du dann aufrufst. Das macht die Sache übersichtlicher und du kannst es besser auseinander halten, was zu was gehört.


    public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
    {
    PlayerPlaySound(issuerid,17802,0.0,0.0,0.0);
    OnPlayerTakeDamage_HS(playerid, issuerid, amount, weaponid, bodypart);
    return 1;
    }


    stock OnPlayerTakeDamage_HS(playerid, issuerid, Float: amount, weaponid, bodypart)
    {
    if(issuerid != INVALID_PLAYER_ID && weaponid == 34 && bodypart == 9)
    {
    SetPlayerHealth(playerid, 0.0);
    }
    return 1;
    }

    Willkommen im der Scripting Base!


    Wenn du im Spiel bist, wird der Gamemode auch dort neu geladen, sprich siehst du die Küste von Los Santos und bist danach wieder in der Class-Selection, oder nicht?
    Wenn ja: Suche in deinem Code (auch im Filterscript) mal nach "gmx", ob das irgendwo steht.
    Wenn nein: Dann suche, ob über irgendeinen Timer das Callback "OnGameModeInit" immer wieder aufgerufen wird. Zur Not könnte man das auch abbrechen lassen, falls das der Fall sein sollte, aber du nichts findest.

    Sehr schön. :)


    Mich würden Speedtests auch mal interessieren. ;)


    Werde ich machen sobald ich Zeit habe. Ich hoffe, dass es mir am Wochenende reicht.
    Ich kann aber auch so sagen, dass es keine Probleme verursacht, solange man es nicht jede Millisekunde aufruft.


    Wenn ichs mir recht überlege, könnte man das Tutorial doch zu einer Include bringen. Ich kann mir vorstellen, dass das sehr viel mehr genutzt werden würde, als sich jemand das Tutorial hier durchliest und es auf eigene Faust versucht.


    Ich merke mir das mal vor. Vielleicht mache ich das über Weihnachten, da findet sich meistens etwas Zeit.



    EDIT:


    Hier der Speedtest @Paradoxon: Manyula:.

    Code
    new t = GetTickCount(), b[16];
    for(new x=0; x<10000; x++)
    {
    for(new i=0; i<10; i++)
    {
    switch(i)
    {
    case 0: b = "Listitem A";
    case 1: b = "Listitem B";
    case 2: b = "Listitem C";
    case 3: b = "Listitem D";
    case 4: b = "Listitem E";
    case 5: b = "Listitem F";
    case 6: b = "Listitem G";
    case 7: b = "Listitem H";
    case 8: b = "Listitem I";
    case 9: b = "Listitem J";
    }
    AddItemToDialog(0, b);
    }
    for(new i=0; i<10; i++)
    {
    switch(i)
    {
    case 0: b = "Listitem A";
    case 1: b = "Listitem B";
    case 2: b = "Listitem C";
    case 3: b = "Listitem D";
    case 4: b = "Listitem E";
    case 5: b = "Listitem F";
    case 6: b = "Listitem G";
    case 7: b = "Listitem H";
    case 8: b = "Listitem I";
    case 9: b = "Listitem J";
    }
    RemoveItemFromDialog(0, b);
    }
    }
    printf("Zeit: %d ms", GetTickCount()-t);

    Zitat

    [18/10/2014 19:31:37] Zeit: 1076 ms


    Das bedeutet, dass es 0,1 Millisekunden (!) dauert, wenn man 10 Items hinzufügt und danach gleich wieder 10 Items entfernt, was eigentlich sowieso keiner macht. Damit kann man entsprechend sagen, dass 1 Item hinzufügen/entfernen 0,005 Millisekunden, also 5 Mikrosekunden dauert.


    => Es ist also zu 100% Lag-Frei und wird keinerlei Fehler verursachen, auch nicht, wenn 200 Spieler den Dialog offen haben, da die Dialoge ja nur per ShowPlayerDialog nach dem aktualisieren angezeigt werden, das hat also keine nennenswerte Auswirkung auf die Laufzeit. Und selbst wenn es die Laufzeit verhundertfachen würde (was völlig absurd ist) würde 1 Item hinzufügen/aktualisieren nur 0,5 Millisekunden dauern, was ebenso keine Lags verursacht, selbst wenn man es 10 mal in der Sekunde macht.


    Fazit: Das System ist selbst bei übermäßig extremen Gebrauch absolut Lag-Frei.

    Naja, ich sag es mal so: Der Code ist ein Chaos, und funktionieren tut er auch nicht, wie [LnD]Sulfarius schon sagte. Einen ganzen Gamemode kann dir hier keiner reparieren.
    Du musst nun so vorgehen:


    1.) Solange den MySQL Log checken, bis da keine Fehler mehr angezeigt werden. Am besten du stellst das Loglevel auf Errors und Warnungen um:
    mysql_log(LOG_ERROR | LOG_WARNING);


    2.) Wenn dort keine Fehler mehr kommen, aber du noch immer Fehlerhaft gespawnt wirst, musst du den Verlauf des Codes verfolgen und schauen wann du wie gespawnt wirst, den Teil prüfen und ggf. entfernen oder ausbessern.




    ODER: (Meine Empfehlung)
    Mach dir einen eigenen Code, es soll ja später auch dein Server sein.

    Zitat

    [14:47:57] [WARNING] CMySQLResult::GetRowDataByName - field not found ("GSKILLS")
    [14:51:47] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1146) Table 'ni42523_2_DB.mRD_races' doesn't exist


    Hier hast du wieder Fehler.


    Falls es noch immer nicht funktioniert, poste die "CreateAccount" Funktion.

    Ok, das liegt zum einen daran, dass du es rundest und zum anderen daran, dass du den Timer zu wenig oft aufrufst.


    Ändere
    ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) / 1000.0;
    zu:
    ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) / 10.0;



    Und ändere SetTimer von "CheckGas" von 10000 zu 1000.

    Siehst du diese Nachricht im Chat noch?
    format(string,sizeof(string),"Und du bist also %i Jahre alt.",AgeOfPlayer(playerid));


    Wenn ja, poste nochmal den MySQL Log wenn du das Datum eingegeben hast.

    Ok, dann fehlt aber in deinem mysql_log etwas.


    Du musst das mysql_debug vor Connect_To_Database() schreiben:
    mysql_debug(1);
    Connect_To_Database();


    Ändere das und poste dann nochmal was im Log steht.

    In dem Log steht nichts von "Connect". Wo im Code stellst du den die Verbindung zur Datenbank her? Das scheint ganz und gar zu fehlen, bzw. nicht aufgerufen zu werden.

    Ok, was ist jetzt das Problem? Wird es nicht aktualisiert, oder was?


    Egal welches Problem, ändere dieses Teil des CheckGas zu:
    if(veh)
    {
    new Float:ST[4];
    GetVehicleVelocity(veh,ST[0],ST[1],ST[2]);
    ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) / 1000.0;
    Kilometer[veh] += ST[3];
    format(string, sizeof string, "Kilometer: %d km", floatround(Kilometer[veh]));
    printf("playerid: %d | ST3: %0.2f | Kilometer[%d]: %0.2f | string: %s", i, ST[3], veh, Kilometer[veh], string);
    TextDrawSetString(Tacho7[i],string);
    }


    Dann poste was im Log steht wenn du fährst.