Beiträge von ...

    Naja Fox. Dank der Tatsache dass Y_Less einen Object Streamer, der leistungsfähiger als alle bisher bekannten ist (Wobei, bei xObjects weiß ich es ned genau.), wäre es wahrscheinlich sogar möglich dass man soviele Objekte an einem so, vergleichweise, kleinen Ort ladet.

    Die einzige Möglichkeit wäre, eigenständig alle Commands auf dcmd & sscanf umzuschreiben. Ich überlege mir gerade ob ich ein GF so umschreiben und dann veröffentlichen sollte. Ein Haufen Arbeit, aber, es lohnt sich ganz sicher.

    Also:


    Als allererstes brauchst du das dcmd Makro. Das fügst du einfach ganz oben ins Script ein, und vergisst es.
    #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1


    Dann schreibst du unter das Callback "OnPlayerCommandText(playerid, cmdtext[])" deinen Command in dieser Form:


    dcmd(mycommand, 9, cmdtext);
    "mycommand" ist dein Command. Die 9 signalisiert die Länge des Commands ohne Parameter. cmdtext zeigt nur an wo der Command erstellt wird.


    So, dann fügst du, außerhalb eines jeden Callbacks das hier in dein Script ein:
    dcmd_mycommand(playerid,params[])


    Der erste Parameter, "playerid", ist der User der den Command ausführt. Der zweite Parameter enthält das was der Spieler eingibt wenn er den Command ausführt. Z.B. /mycommand 123. Dann enthält "params" 123.


    Dann erstellen wir einfach einmal einen simplen Kick Command.


    Als erstes erstellen wir das Grundgerüst des Commands: In diesem Fall: dcmd(kick,4,cmdtext);.
    Als nächstes erstellen wir den eigentlichen Command.
    Der würde so aussehen:
    dcmd_kick(playerid, params[]) {
    new target = strval(params); // Zeigt an dass "target" ein Wert ist
    if(!strlen(params)) {// Was passiert wenn wir nichts eingeben nach dem /kick, also "params" leer lassen:
    return SendClientMessage(playerid, 0xFF0000FF, "Benutze /kick [PlayerID].");
    }
    if(!IsPlayerConnected(target)) { // Wenn "target" nicht online ist.
    return SendClientMessage(playerid, 0xFF0000FF, "Angegebener User ist nicht online!");
    }
    Kick(target); // Hier kicken wir "target".
    SendClientMessage(playerid, 0xFF0000FF, "Ziel wurde gekickt.");
    return 1;
    }


    So, jetzt haben wir einen simplen, aber effektiven Kick-Command.


    sscanf erkläre ich dir entweder morgen oder du schaust dir Goldkillers Tutorial nochmal an.

    Les es dir doch einmal genau durch. Am Anfang erscheint alles schwer. Aber sobald es *Klick* gemacht hat kann man Commands mit 3 Parametern mit Leichtigkeit in nichtmal 2 Minuten schreiben.

    Also, mit Wayne bin doch nicht ich gemeint oder? xD


    Naja, was gibts noch groß zu sagen. Eigentlich nix. Matze hat hier nur sein neuestes Projekt vorgestellt, und mehr nicht. Viel Glück Matze. :thumbup:

    Diese Variablen wurden schon zuvor als globale, nicht Callback-abhängige Variablen erstellt. Einfach giveplayerid und playername umbennen. ^^

    Was meiner Meinung nach sehr paradox ist, dass ausgerechnet GodFather RPG/RL Server die best-besuchtesten RL/RPG Server sind, und nicht die von vielen angepriesenen Selfmade-Script-Server. Seid doch mal ehrlich, es gibt nur wenige Scripts die mit dem GodFather mithalten können. FeaR hat mit diesem Script die SA:MP Welt VOLLKOMMEN verändert, negativ sowie positiv. Außerdem zählt doch bei jedem Server einzig und allein die Community. Ich habe schon Server miterlebt die hatten ein vollkommen verbuggtes Script, aber hatten zu Top-Zeiten trotzdem mehr als 50 User, zur gleichen Zeit. Hingegen haben die meisten neuen RPG/RL Server, egal auf welchem Script sie basieren, einfach keine Überlebenschancen weil sie eben keine gute Community haben. Ich finde man sollte einfach mal anerkennen dass es bei einem Server NICHT um das Script geht, sondern um die User.

    Bei sscanf kann man auch Name oder PlayerID nehmen. Man braucht dazu nicht einmal ReturnUser (Oder war es IsNumeric?). Man verwendet einfach statt dem Dateityp des Parameters der PlayerID den Typ "u". Damit kann man PlayerID ODER Name benutzen.


    Im Übrigen ist dcmd und sscanf viel ressourcenschonender als strtok bzw. strget.