Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /********************************************************/
- /*######################################################*/
- /********************************************************/
- /* Simple Scripting 24.11 */
- /* by Tion */
- /* • Neuveröffentlichung verboten ! */
- /* • Copyright ( dieser Header ) muss drinne bleiben ! */
- /* • Habt Spaß =) */
- /* Benutzung von SimpleCommand: */
- /* CMD:befehl(playerid, params[]) */
- /* • Der Befehl muss klein geschrieben werden */
- /* • Wenn keine Parameter, params == "\0" */
- /* Benutzung von SimpleRcon: */
- /* RCON:befehl(params[]) */
- /* • Der Befehl muss klein geschrieben werden */
- /* • Wenn keine Parameter, params == "\0" */
- /* Benutzung von SimpleDialog: */
- /* DIALOG:dialogid(playerid,response,listitem,input[]) */
- /* • Die Dialogid muss eine Zahl sein */
- /* • Nichts weiter zu beachten =) */
- /********************************************************/
- /*######################################################*/
- /********************************************************/
- /* SimpleCommands - Zum deaktivieren "#define SimpleCommandsDeaktivate" vor Einbindung des Scriptes */
- #if !defined SimpleCommandsDeaktivate
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- #if defined DEBUG_MODE
- printf("OPCT: %d / %s", playerid, cmdtext);
- #endif
- new stringpos = 1, commandparser[32], calllocalfunction[64];
- // wir trennen den Befehl von dem restlichen String, dabei machen wir den ersten Teil des Befehles kleiner ( tolower )
- // damit man /help & /hELp & /Help (...) eingeben kann.
- // Da es sich hier nur um Chars handelt ( Strings sind ja eig. ein Char-Array :O ) kann man ein "=" anstelle von strmid benutzen
- for(/* stringpos ist lokal global definiert */; cmdtext[stringpos] != ' ' && stringpos < 28; stringpos++)
- {
- commandparser[stringpos - 1] = tolower(cmdtext[stringpos]);
- }
- // Überspringen wir alle Leerstellen vor dem ersten Parameter, damit "/kick x xxx" zu "/kick x xxx" geformt wird.
- while (cmdtext[stringpos] == ' ') stringpos++;
- // Jetzt wird die Funktion "geformt", die später aufgerufen wird.
- format(calllocalfunction, 64, "cmd_%s", commandparser);
- // Testen wir, ob weitere Parameter nach unendlichen Leerzeichen vorhanden sind.
- if (!cmdtext[stringpos])
- {
- // Es sind keine weiteren Parameter mehr vorhanden. Schade eigentlich :D
- CallLocalFunction(calllocalfunction, "is", playerid, "\0");
- }
- else
- {
- // Es sind weitere Parameter vorhanden. Durch das von C++ bekannte Prinzip der ( ich glaube es heißt so )
- // "Arrayverschiebung" wird bei dem Aufrufen eines Indexes eines Arrays die restlichen Chars mitgeliefert.
- CallLocalFunction(calllocalfunction, "is", playerid, cmdtext[stringpos++]);
- }
- return 1;
- }
- #define OnPlayerCommandText OnPlayerCommandTextEx // Um Befehlsüberschneidung zu vermeiden
- #endif
- /* SimpleRcon - Zum deaktivieren "#define SimpleRconDeaktivate" vor Einbindung des Scriptes */
- #if !defined SimpleRconDeaktivate
- public OnRconCommand(cmd[])
- {
- #if defined DEBUG_MODE
- printf("ORC: %s / %s", cmd);
- #endif
- new stringpos = 1, commandparser[32], calllocalfunction[64];
- // Wir fangen wie bei OnPlayerCommandText an
- for(/* stringpos ist lokal global definiert */; cmd[stringpos] != ' ' && stringpos < 28; stringpos++)
- {
- commandparser[stringpos - 1] = tolower(cmd[stringpos]);
- }
- // Überspringen wir alle Leerstellen vor dem ersten Parameter, damit "kick x" zu "kick x" geformt wird.
- while (cmd[stringpos] == ' ') stringpos++;
- // Jetzt wird die Funktion "geformt", die später aufgerufen wird.
- format(calllocalfunction, 64, "rcon_%s", commandparser);
- // Testen wir, ob weitere Parameter nach unendlichen Leerzeichen vorhanden sind.
- if (!cmd[stringpos])
- {
- // Es sind keine weiteren Parameter mehr vorhanden. Schade eigentlich :D
- CallLocalFunction(calllocalfunction, "s", "\0");
- }
- else
- {
- // Es sind weitere Parameter vorhanden. Durch das von C++ bekannte Prinzip der ( ich glaube es heißt so )
- // "Arrayverschiebung" wird bei dem Aufrufen eines Indexes eines Arrays die restlichen Chars mitgeliefert.
- CallLocalFunction(calllocalfunction, "s", cmd[stringpos++]);
- }
- return 1;
- }
- #define OnRconCommand OnRconCommandEx // Um Befehlsüberschneidung zu vermeiden
- #endif
- /* SimpleDialog - Zum deaktivieren "#define SimpleDialogDeaktivate" vor Einbindung des Scriptes */
- #if !defined SimpleDialogDeaktivate
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- #if defined DEBUG_MODE
- printf("ODR: %i / %i / %i / %i / %s", playerid, dialogid, response, listitem, inputtext);
- #endif
- new calllocalfunction[64];
- // Hier ist das ganze schon weeeeesetnlich einfacher, da alles gegeben ist =)
- format(calllocalfunction, 64, "dialog_%d", dialogid);
- CallLocalFunction(calllocalfunction, "iiis", playerid, response, listitem, inputtext);
- return 1;
- }
- #define OnDialogResponse OnDialogResponseEx // Um Befehlsüberschneidung zu vermeiden
- #endif
- // CMD:befehl(playerid, params[])
- #define CMD:%1(%2,%3) forward cmd_%1(%2,%3); public cmd_%1(%2,%3)
- // RCON:kick(params[])
- #define RCON:%1(%2) forward rcon_%1(%2); public rcon_%1(%2)
- // DIALOG:1(playerid, response, listitem, input[])
- #define DIALOG:%1(%2,%3,%4,%5) forward dialog_%1(%2,%3,%4,%5); public dialog_%1(%2,%3,%4,%5)
- /* Ende SimpleScripting */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement