SimpleScripting
SimpleCommand, SimpleRcon & SimpleDialog
Guten Abend,
Ich werde ich heute mein SimpleScripting - System vorstellen, mit dem es euch möglich ist, schneller / einfacher & effektiver zu scripten. Es ähnelt ZCMD
Für die mit dem ? auf dem Kopf, so kommt ihr schneller zum fertigen GM:
SimpleCommand
Sicherlich sieht das OnPlayerCOmmandText bei euch in etwa so aus:
#include <a_samp>
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp("/help", cmdtext, true, 10) == 0)
{
// Hier würden 10 Zeilen Code stehen
return 1;
}
if(strcmp("/help2", cmdtext, true, 10) == 0)
{
// Hier würden 10 Zeilen Code stehen
return 1;
}
if(strcmp("/help3", cmdtext, true, 10) == 0)
{
// Hier würden 10 Zeilen Code stehen
return 1;
}
if(strcmp("/help4", cmdtext, true, 10) == 0)
{
// Hier würden 10 Zeilen Code stehen
return 1;
}
if(strcmp("/help5", cmdtext, true, 10) == 0)
{
// Hier würden 10 Zeilen Code stehen
return 1;
}
return 0;
}
Alles anzeigen
Nach spätestens 30 Befehlen bekommt man Augenkrebs beim suchen bestimmter Textstellen, und wenn man einen Befehl entfernen soll der über 100 Zeilen geht muss man Klammern zählen um ja nicht 1 Block zu viel / zu wenig zu entfernen. Wie sieht es hingegen so aus ?
#include <a_samp>
#include <simplescripting>
CMD:help(playerid, params[])
{
// Hier würden 10 Zeilen Code stehen
return 1;
}
CMD:help2(playerid, params[])
{
// Hier würden 10 Zeilen Code stehen
return 1;
}
CMD:help3(playerid, params[])
{
// Hier würden 10 Zeilen Code stehen
return 1;
}
CMD:help4(playerid, params[])
{
// Hier würden 10 Zeilen Code stehen
return 1;
}
CMD:help5(playerid, params[])
{
// Hier würden 10 Zeilen Code stehen
return 1;
}
Alles anzeigen
Im Gegensatz zu dcmd muss man bei OnPlayerCommandText nichts angeben.
Wenn ihr SimpleCommands nicht nutzen möchtet, könnt ihr es übrigens einfach entfernen, indem ihr vor dem Einbinden der Include einfach
einfügt.
Die Befehlslänge ( ohne Parameter ) ist übrigens seitens PAWN ( und ich habe es aus Kompatiblitätsgründen auch so eingestellt ) auf 32 Zeichen beschränkt. Durch das CMD: davor sind also 28 Zeichen übrig.
SimpleRcon
Wieder die Lage, ich möchte z.B. 10 RCON-Befehle erstellen. Wieder mal ein Vergleich:
#include <a_samp>
public OnRconCommand(cmd[])
{
if(strcmp("help", cmd, true, 10) == 0)
{
// Hier würden 10 Zeilen Code stehen
return 1;
}
if(strcmp("help2", cmd, true, 10) == 0)
{
// Hier würden 10 Zeilen Code stehen
return 1;
}
if(strcmp("help3", cmd, true, 10) == 0)
{
// Hier würden 10 Zeilen Code stehen
return 1;
}
if(strcmp("help4", cmd, true, 10) == 0)
{
// Hier würden 10 Zeilen Code stehen
return 1;
}
if(strcmp("help5", cmd, true, 10) == 0)
{
// Hier würden 10 Zeilen Code stehen
return 1;
}
return 0;
}
Alles anzeigen
Und in der Kurzfassung:
#include <a_samp>
#include <simplescripting>
RCON:help(playerid, params[])
{
// Hier würden 10 Zeilen Code stehen
return 1;
}
RCON:help2(playerid, params[])
{
// Hier würden 10 Zeilen Code stehen
return 1;
}
RCON:help3(playerid, params[])
{
// Hier würden 10 Zeilen Code stehen
return 1;
}
RCON:help4(playerid, params[])
{
// Hier würden 10 Zeilen Code stehen
return 1;
}
RCON:help5(playerid, params[])
{
// Hier würden 10 Zeilen Code stehen
return 1;
}
Alles anzeigen
Die Zeile zum deakivieren lautet:
Die Befehlslänge ( ohne Parameter ) ist übrigens seitens PAWN ( und ich habe es aus Kompatiblitätsgründen auch so eingestellt ) auf 32 Zeichen beschränkt. Durch das RCON: davor sind also 27 Zeichen übrig.
SimpleDialog
Der Vollständigkeit halber
#include <a_samp>
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1)
{
// 10 Zeilen Code
return 1;
}
if(dialogid == 2)
{
// 10 Zeilen Code
return 1;
}
if(dialogid == 3)
{
// 10 Zeilen Code
return 1;
}
if(dialogid == 4)
{
// 10 Zeilen Code
return 1;
}
if(dialogid == 5)
{
// 10 Zeilen Code
return 1;
}
return 1;
}
Alles anzeigen
wird zu
#include <a_samp>
#include <simplescripting>
DIALOG:1(playerid, response, listitem, inputtext[])
{
// 10 Zeilen Code
return 1;
}
DIALOG:2(playerid, response, listitem, inputtext[])
{
// 10 Zeilen Code
return 1;
}
DIALOG:3(playerid, response, listitem, inputtext[])
{
// 10 Zeilen Code
return 1;
}
DIALOG:4(playerid, response, listitem, inputtext[])
{
// 10 Zeilen Code
return 1;
}
DIALOG:5(playerid, response, listitem, inputtext[])
{
// 10 Zeilen Code
return 1;
}
Alles anzeigen
Zum deaktivieren
Leider funktionier dies nicht, wenn die DialogID in einer define gespeichert ist =( Ich suche später noch nach einer Lösung
Wie bekomme ich es ?
Ladet euch einfach die SimpleCommands - Datei von Pastebin herunter, speichert sie in einer "simplescripting.inc" ( oder ähnlich ) und bindet sie ein.
Pastebin: 0.1
Pastebin: 0.1 Beispielscript / Testscript
Ich würde mich freuen, wenn ihr es bewertet & Fragen stellt sollten welche auftauchen. Außerdem ( selbstverständlich ) bitte auf Bugs prüfen, habe es mit dem Testscript oben getestet, kann leider nicht per SA:MP weil ich keins habe =P
Tion
/e1: Wieso ist das hier gelandet ? Bitte um move zu Showroom =)