Frage zu befehlen erstellen

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
  • Hi,


    Wollte mal fragen ob es noch andere Möglichkeiten gibt.


    Zum Beispiel wie zcmd, ocmd usw wenn man ja damit Befehle schreibt muss man ja immer auf die Groß und Kleinschreibung achten.
    Gibt es da noch andere möglichkeiten wie man Befehle schreiben kann damit meine ich nicht strcmd oder ähnliche Sachen.


    Grüße,
    .rVx

  • Wenn ich jetzt einen Befehl mache ocmd:test
    Und diesen Ingame schreibe so schreibe /Test funktioniert dieser nicht nur wenn ich diesen /test klein schreibe.

    Bei ocmd bin ich mir nicht sicher, aber bei zcmd ist aufjedenfall die Groß- und Kleinschreibung egal.


    zcmd und ocmd sind halt die beliebtesten und auch (objektiv gesehen) die besten Befehlsprozessoren. Es gibt noch einige wie PawnCMD, aber diese brauchen Memory Hacking, und das ist nicht wirklich sicher.

  • Aber was ist an strcmd so schlimm ?`Würde eventuell noch strget geben.
    Aber finde strcmp ist die einfaschste Methode die es gibt :D

    Bei ocmd sparst du dir aber vieles was bei cmd wieder mehr wird bzw wenn du zb eine gebe funktion für spieler baust

  • Aber was ist an strcmd so schlimm ?

    Es ist super langsam. Und je mehr strcmp Abfragen du hast, desto langsamer wird der Code.


    Deshalb gibt es ja hauptsächlich ocmd und co, weil sie


    1. Eine bessere Übersicht über den Code schaffen, alles ist modular und gekapselt.
    2. Es ist viel schneller und bleibt schnell, egal wie viele Befehle du nutzt.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Finde macht den Kohl nicht fett auch strcmd Befehle kann man optimieren schreiben. Und soviel Ressourcen frisst samp nun auch nicht das man einen großen Unterschied merken könnte. Handelt sich nur um millisekunden. Ich mache heute Abend mal einen aktuellen Speed Test.


    Lg

  • Natürlich, aber diese kann man eben sparen.


    Es gibt duzende Speedtest, hier mal einer:



    Macht schon n Unterschied ob die CPU jetzt 264 ms nur bei der Ausführung und Findung von dem Command beschäftigt ist oder nicht.
    Man muss ja dazu sagen, dass wenn du evtl 100 Befehle hast...und es der letzte Befehl ist...kann das schon wesentlich länger dauern...


    Und dann kann der Server evtl schon mal hängen, wenn der alleine für einen Befehl 2 Millisekunden oder so benötigt.


    Da ist es besser permanent nur 150 mikro Sekunden oder weniger zu benötigen.


    Ist ja nur als Hilfe gemeint ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

    Einmal editiert, zuletzt von Kaliber () aus folgendem Grund: Vertippt

  • Ich muss hier mal einlenken, das kann ich so nicht stehen lassen. @RFT hat absolut Recht.
    Grundsätzlich vorab, ocmd (oder andere) ist natürlich komfortabler und schneller als strcmp, aber die Performance kann sicher kein Grund sein, strcmp nicht zu nutzen, da sich alle Systeme so marginal unterscheiden, dass es niemals jemand merken wird.


    Auch wenn die "schönen" Grafiken etwas anderes vermuten lassen, das zeigt mir, wie schnell hier falsche Schlüsse gezogen werden.


    Und dann kann der Server evtl schon mal hängen, wenn der alleine für einen Befehl 2 Sekunden oder so benötigt.

    Das kann in keinem reellen Fall passieren.


    Die gezeigte Grafik bezieht sich auf 1000 (!) Befehle. Das heißt, 1000 strcmp Befehle benötigen 264 Mikrosekunden.
    Alleine schon hier sehen wir, dass dies im Prinzip nichts ist. Den Unterschied zwischen 21 und 264 Mikrosekunden kann kein Mensch merken. Und 1000 Befehle sind wohl nur bei wenigen Servern implementiert.


    Um das Ganze anschaulicher zu machen.
    Wenn 1000 Befehle 264 Mikrosekunden benötigen (laut Grafik), dann benötigen:
    10.000 Befehle: 2640 Mikrosekunden ~ 2,6 Millisekunden
    100.000 Befehle: 26 Millisekunden
    1.000.000 Befehle 260 Millisekunden
    10.000.000 Befehle: 2600 Millisekunden ~ 2,5 Sekunden


    Das heißt, du müsstest 10 Millionen (!) Befehle implementieren, damit dein Server bei strcmp 2 Sekunden benötigt.


    Dabei würde aber auch ocmd ca. 1,5 Sekunden benötigen (ist nicht in der Grafik, da aber kein Plugin, ähnlich der anderen).



    Man muss ja dazu sagen, dass wenn du evtl 100 Befehle hast...und es der letzte Befehl ist...kann das schon wesentlich länger dauern...

    Das macht einen wesentlichen Unterschied von gigantischen 0,00001 Sekunden, sprich ein hundertstel einer Millisekunde, 10 Mikrosekunden, gegenüber ocmd.
    Damit wäre alles gesagt.

  • Meinte natürlich Millisekunden..und nicht Sekunden :rolleyes:


    Und wie gesagt, es reichen schon 500 Befehle aus, dass der Server erstmal paar Millisekunden alle Strings bearbeiten muss...

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Das macht es ehrlich gesagt nicht besser.



    Und wie gesagt, es reichen schon 500 Befehle aus, dass der Server erstmal paar Millisekunden alle Strings bearbeiten muss...

    Nein, hab ich doch geschrieben, um die 10.000 Befehle für ein "paar Millisekunden" (zwei also mindestens).


    10.000 Befehle: 2640 Mikrosekunden ~ 2,6 Millisekunden


    Und selbst wenn es 100.000 Befehle sind. 26 Millisekunden merkt kein Mensch. Erst ab 200.000 Befehlen würde es theoretisch minimal merkbar werden. Allerdings - und das ist der springende Punkt - auch mit ocmd.
    Zudem hat kein Server 200.000 Befehle implementiert.

  • Nein, hab ich doch geschrieben, um die 10.000 Befehle für ein "paar Millisekunden" (zwei also mindestens).

    Ja...hier reden aber hier nur von einem Vergleich.


    Aber..wenn du verschieden Lange Befehle hast...und der Befehl, den du erreichen willst ganz unten von einer langen Kette von Befehlen steht..macht es das langsamer...je mehr + je länger die Befehle sind und je mehr Ähnlichkeiten die anderen Befehle mit dem Befehl haben, den du aufrufen willst, desto langsamer wird das alles.


    Sind einige Faktoren...was ich damit nur sagen wollte ist...wieso es sich unnötig kompliziert machen, wenn es auch einfach geht.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ja...hier reden aber hier nur von einem Vergleich.

    Natürlich im Vergleich sieht das so aus.
    Praktisch merkt das aber wie gesagt niemand.


    Du kannst zwei völlig normale Server parallel auf zwei identischen Maschinen mit gleich vielen Spielern laufen lassen. Einmal mit strcmp Befehlen und einmal mit ocmd Befehlen.
    An der Last wirst du keinen - absolut 0,0 - Unterschied merken. Der Unterschied ist so gering, dass er nur im Tausendfachen messbar ist.



    Das wäre in etwa so, also würdest du beim 100 Meter Lauf 12 Sekunden laufen, dir dann ein Haar raus reißen, und dann denken, du wärst jetzt schneller, weil du leichter bist. Theoretisch ja, aber praktisch nicht messbar. Darum geht es. Dass ocmd praktischer ist steht nicht zur Debatte, lediglich die völlig falsche Interpretation der Performanceanalyse.

  • Der Unterschied ist so gering, dass er nur im Tausendfachen messbar ist.

    Lustige Metapher :D


    Unter normalen Bedingungen stimmt das ja auch, klar.


    Aber hast du jetzt 100 Leute auf einem großen Server, viele Befehle und alle geben sie zur selben Sekunde einen Befehl ein, kann es passieren das aus 2 Millisekunden, plötzlich 200 werden...und dann reden wir hier schon von 1/5 Sekunde..NUR um den Befehl der ja die eigentliche CPU zieht zu finden.


    Natürlich ist das jetzt nicht die Welt...aber es muss halt auch nicht sein.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Also Fakt ist, nein es macht kein Unterschied ob du es Groß oder- klein schreibst.
    Dazu macht es für derzeitige verhältnisse kein unterschied ob du nun OCMD oder anderes verwendest.



    Papa GUCCI klärt,
    wer ein problem jetzt noch hat kommt ins Cafe.

  • Unter normalen Bedingungen stimmt das ja auch, klar.


    Aber hast du jetzt 100 Leute auf einem großen Server, viele Befehle und alle geben sie zur selben Sekunde einen Befehl ein, kann es passieren das aus 2 Millisekunden, plötzlich 200 werden...und dann reden wir hier schon von 1/5 Sekunde..NUR um den Befehl der ja die eigentliche CPU zieht zu finden.

    Man muss natürlich immer auch vom maximalen Fall ausgehen, das ist klar, aber selbst in dem Fall, der mehr als unwahrscheinlich ist, müssten 10.000 Befehle implementiert sein und gleichzeitig müssten 100 Spieler in der gleichen Sekunde (eigentlich Zehntel-Sekunde, sonst verteilt sich die Last über die Sekunde und man merkt nichts) einen Befehl eingeben, der im ungünstigsten Fall ganz unten steht. Das wäre dann ein einmaliger Lag von 0,2 Sekunden. Das stimmt, ich wage aber zu behaupten, das wird niemals vorkommen und selbst wenn es vorkommen sollte, wäre dieser einmalige Lag zu verkraften, vor allem da er bei ocmd auch nicht viel geringer wäre (0,1 Sekunden) und zudem kaum wahrnehmbar wäre.
    Ich kann soviel sagen, auf meinem Server waren häufig 70-100 Spieler drauf, dass aber alle in der gleichen Sekunde einen Befehl eingegeben haben, ist nie passiert, selbst wenn die Eingabe per GameText beworben wurde. Command Prozessor war übrigens dcmd (was im Grund ja strcmp ist) mit strcmp gemischt (war damals halt so, würde ich heute natürlich nicht mehr machen). Performanceprobleme hatten wir nie, und die Hardware war auch schlechter als heute :)



    Natürlich ist das jetzt nicht die Welt...aber es muss halt auch nicht sein.

    Absolut.
    Ich würde strcmp auch nicht als "Commandprozessor" empfehlen, dass muss klar sein. Es ging mir nur um die Klarstellung der Performancethematik, und die spielt, unter normalen Bedingungen absolut keine Rolle.

  • Finde macht den Kohl nicht fett auch strcmd Befehle kann man optimieren schreiben. Und soviel Ressourcen frisst samp nun auch nicht das man einen großen Unterschied merken könnte. Handelt sich nur um millisekunden. Ich mache heute Abend mal einen aktuellen Speed Test.


    Lg

    Es geht ja nicht um die Clientseitige sondern um die Serverseitige Belastung. Natürlich können unsere Clientseitigen PCs alles problemlos bearbeiten ABER alles ist mit dem Server gebunden, jeder Client und die müssen nunmal geschont werden denn laggt der Server laggt er bei allen nicht nur bei einem Client.