Code: Select all
#include <sourcemod>
public void OnPluginStart()
{
RegConsoleCmd("sm_test", Command_Test, "Descriere despre comanda");
RegAdminCmd("sm_testforadmin", Command_TestForAdmin, ADMFLAG_GENERIC, "Descriere despre comanda");
}
Am inregistrat comanda "sm_test". Cand cineva scrie sm_test in consola, !test sau /test in chat, Command_Test se va ocupa de raspuns. Vom defini mai jos Command_Test.
Comanda sm_testforadmin e doar pentru admini, pentru cei care au flagul ADMFLAG_GENERIC. Gasiti aici toate flagurile: https://wiki.alliedmods.net/Checking_Ad ... Scripting)
Code: Select all
#include <sourcemod>
public void OnPluginStart()
{
RegConsoleCmd("sm_test", Command_Test, "Descriere despre comanda");
RegAdminCmd("sm_testforadmin", Command_TestForAdmin, ADMFLAG_GENERIC, "Descriere despre comanda");
}
public Action Command_Test(int client, int args)
{
PrintToChatAll("Testam pluginul");
PrintToChat(client, "Hello");
return Plugin_Handled;
}
public Action Command_TestForAdmin(int client, int args)
{
PrintToChatAll("Testam pluginul");
PrintToChat(client, "Hello");
return Plugin_Handled;
}
Mesajul "Hello" se va afisa doar celui care a folosit comanda. Idem pt sm_testforadmin.
Tipul functiei:
Dupa cum se poate observa, returnam la final Plugin_Handled.
Action poate lua urmatoarele valori:
Code: Select all
Plugin_Continue
Plugin_Changed
Plugin_Handled
Plugin_Stop
Daca nu am returna Plugin_Handled (se poate folosi si Plugin_Stop in acest caz), atunci csgo s-ar uita in lista sa de comenzi si ar cauta sm_test (cum exista si comanda "dsiconnect", csgo se uita in comenzile sale, cauta "disconnect" si face ceva - deconecteaza jucatorul). In consola va aparea mesajul: "Tried to look up for a console command" sau ceva de genul.
Returnand Plugin_Handled prevenim acest lucru. Nu este ceva obligatoriu, care sa strice ceva la server, dar este bine sa punem asa.
Parametrii functiei:
Dupa cum se poate observa, functia primeste parametrii "client" si "args":
- client este user-ul care a scris comanda, poate lua o valoare de la 0 pana la MaxClients (este o variabila sourcemod).
Atunci cand clientul este 0, comanda a fost trimisa de catre server.
Daca vrem sa ignoram comenzile trimise de server, scriem asa (util pt comenzi de genul !rank, !stats, !top etc. unde serverul nu are treaba cu ele):
Code: Select all
public Action Command_TestForAdmin(int client, int args)
{
if (!client) // comanda trimisa de server?
{
return Plugin_Handled;
}
// trimite raspuns
return Plugin_Handled;
}
Parametrii sunt despartiti prin SPACE sau alte caractere diferite de cifre sau litere.
Daca vrem sa fortam ca jucatorii sa trimita minim 3 parametrii scriem asa:
Code: Select all
public Action Command_TestForAdmin(int client, int args)
{
if (args < 3) // sub 3 parametri?
{
ReplyToCommand(client, "[SM] Minim 3 parametri");
return Plugin_Handled;
}
// trimite raspuns
return Plugin_Handled;
}
ReplyToCommand este foarte des folosita in creearea comenzilor. Trimite un raspuns pe chat daca jucatorul scrie comanda in chat, sau in consola daca jucatorul trimite comanda in consola.