Frage zum Resourcen sparenden Scripten

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Das siehst du dann, wenn es laggt oder etc. Strings könntest du niedrig setzten. Z.b. für ein "Satz" der ca. 50 Wörter beinhaltet brauch man keinen 265 String >.>

  • Ich bin mir nicht sicher aber wenn du immer eine neue Abfrage machst oder so... ^^

  • ForEachPlayers, MySQL, kleine Strings, Strings recyclen (wiederverwenden) & nicht tausende Variablen mit [MAX_PLAYERS]; lieber pVars verwenden, nicht tausende Abfragen, lieber switch & case :P - Und das sind nur einige kleine Sachen die ein Script effizienter machen.



    Ein kleines Beispiel:


    Fail:


    new String[256];
    format(String,sizeof String,"Hallo %s.",name);
    SendClientMessage(playerid,Farbe,String);


    Gut:
    new String[16];


    format(String,sizeof String,"Hallo %s.",name);


    SendClientMessage(playerid,Farbe,String);


    Noch ein Beispiel:


    Fail:


    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(gTeam[killerid] == 0 && gTeam[playerid] == 0)
    {
    SendClientMessage(killerid,farbe,"Teamkill ist verboten.");
    }
    if(gTeam[killerid] == 1 && gTeam[playerid] == 1)
    {
    SendClientMessage(killerid,farbe,"Teamkill ist verboten.");
    }
    //...


    Gut:


    public OnPlayerDeath(playerid, killerid, reason)


    {
    if(gTeam[killerid] == gTeam[playerid])
    {
    SendClientMessage(killerid,farbe,"Teamkill ist verboten.");
    }


    Und wo wir bei gTeam[MAX_PLAYERS] sind, gilt das für oben - lieber pVars.



    LG :D


    // Edit: Etwas effizientes Hinzugefügt <3

  • dini ist auch nicht das beste Speichersystem /:
    Würde dir ein anderer Empfehlen.

  • Ne, Dini ist korrekt <3 Aber MySQL ist besser :D


    Die maximale Länge von einem Namen ist 25 :O also drück STRG+H im Script und ersetz Name[68]; mit Name[MAX_PLAYER_NAME]; oder Name[25];


    Und die Strings, tja, den wirst du wohl für jede Nachricht anpassen müssen ;)

  • Ehm ?


    16+25? Das schreibt man doch nicht hin^^ Sondern gleich 41 :)

  • Ob er 16+25 oder 41 schreibt ist kein Unterschied.


    128er String für SendClientMessages ist okay, auch wenn man vllt sogar bei so kurzen Nachrichten wie der hier ein wenig runtergehen kann.



    Wichtig ist: Wenig Code in Timer, noch weniger Code in OnPlayerUpdate und bei mehr als 3 Dateizugriffen direkt hintereinander ein cachendes Dateisystem wie SII benutzen.