ThE BesT InFeRNaL-zOn3-=[PgL]=-
 
AcasaCalendarFAQCautareMembriGrupuriInregistrareConectare

Distribuiți | 
 

 tutorial cereere pluginuri AMX

In jos 
AutorMesaj
hy2RoG3N
Admin
avatar

Mesaje : 217
Data de înscriere : 05/06/2008

MesajSubiect: tutorial cereere pluginuri AMX   Lun Iun 09, 2008 12:33 pm

Totul incepe printr-un "include"
In cazul nostru vom facem un plugin pentru amxmodx.Deci vom scrie asa:

#include <amxmodx>

Mai sunt si alte includuri pentru pluginuri mai complexe.Deocamdata lasam asa

Urmatorul pas este optional.Este "define",prin care definesti ceva.Deci ca sa definim pluginul,versionuea acestuia si autorul vom scrie asa:

#define PLUGIN "numele pluginului"
#define VERSION "versiunea"
#define AUTHOR "autorul"

Apoi urmeaza faza de inregistrare a pluginului.Aceastea se face in felul urmator:

a).prima varianta

public plugin_init()
{
register_plugin(PLUGIN,VERSION,AUTHOR)
}

b). a doua varianta(in cazul in care nu ati pus #define)

public plugin_init()
{
register_plugin("nume","versiune","autor")
}


Urmatoarea faza este contruirea comenzilor(de exemplu vreti sa faceti o comanda amx_ss si sa faca snapshot playerului)
Vom scrie asa in register plugin_init() mai jos de register_plugin("nume","versiune","autor")

a). register_concmd -> comanda in consola
b). register_clcmd -> comanda folosita de playeri

Deci noi vom scrie asa :

register_concmd("comanda","public",accesul,"comentariu ce va fi afisat in consola")

comanda -> comanda voastra : amx_ss
public -> puneti "ce vreti",este un public(pote fi scris orice,care va fi folosit mai jos)
accessul -> un admin trebuie sa aiba accesul specificat pentru a putea folosi comanda
comenatariu -> este clar (va aparea in consola cand dati amx_help)

In cazul nostru va arata asa :

register_concmd("amx_ss","snapshot",ADMIN_LEVEL_C,"Face snapshot playerului specificat !")

Urmatorul pas este publicul(cel care lati pus la register_concmd:
In cazul nostru va fi asa(se incepe cu "public"):

public snapshot(id)

In continuare vom scrie in public unele chesti elementare :
De exemplu daca un admin/player incearca sa foloseasca comanda trebuia sa blocheze operatia altfel toata lumea are acces la comanda
Acest lucru se face mai usor prin : "if(!(get_user_flags(id) & ADMIN_LEVEL_C)), asta in cazul de fata deoarece am specificat un acces necesar
Vom avea:

public snapshot(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_C))
return PLUGIN_HANDLED


return PLUGIN_HANDLED -> blocheaza operatia
Puteti adauga se arete ceva celui care incearca sa foloseasca comanda si nu are accesul necesar
Exemplu

public snapshot(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_C))
{
client_print(id,print_console,"NU ai access !")
return PLUGIN_HANDLED
}

Ati observat ca am adaugat { } intre return si client_print,asta deoarece daca la "if" sunt 2 sau mai multe argumente trebuie obligatoriu puse {} altfel va da eroare

id -> a). aceasta inseamna ca mesajul va fi afisat numa unui singur player,difera de context,in cazul de fata numai celui care foloseste comanda
b). 0 -> aceasta inseamna ca mesajul va fi afisat tututor playerilor de pe server.exemplu : client_print(0,print_chat,"Cineva a folosit comanda fara acces !")


client_print -> exista 4 feluri de print-uri:

print_chat -> mesajul este afisat in chat
print_console -> mesajul este afisat in consola
print_center -> mesajul este afisat in centru ecranului
print_notify -> mesajul este afisat in consola putin diferit

Urmatorul pas este citirea argumentului de dupa comanda pentru a putea fi identificat playerul asupra caruia se executa o comanda
Aceasta se face asa :

new arg[32] -> in loc de arg puneti ce vreti,dar de preferat mai bine il lasati asa

Argumentul se citeste prin comanda :

read_argv(1,arg,31)

Urmatorul pas este :

new player = cmd_target(id,arg,9) -> deci "player" este comanda asupra caruia se executa(puteti pune jucator,etc...)

In urmatorul pas se verifica daca playerul specificat exista
Aceasta se face asa :

if (!player)
return PLUGIN_HANDLED

-> deci daca playerul specificat nu exista comanda se blocheaza si nu are efect
-> din nou puteti trimite un mesaj


Urmatorul pas :

new name[32]
get_user_name(player,name, 31) -> obseravati din nou "player" -> acesta este pus din nou deoarece este pus cmd_target(id,arg,9) -> new player = cmd_target(id,arg,9)

Urmeaza comanda suportata de player,in cazul nostru snapshot

client_cmd(player,"snapshot") -> din nou player(argumentul citit)

Iar public se incheie cu return PLUGIN_HANDLED(ca in majoritatea publicurilor) si cu }

Deci,in final pluginul complet arata asa:




#include <amxmodx>

#define PLUGIN "amx_ss"
#define VERSION "1.0"
#define AUTHOR "Anakin"

public plugin_init()
{
register_plugin(PLUGIN,VERSION,AUTHOR)
register_concmd("amx_ss","snapshot",ADMIN_LEVEL_C,"Face snapshot playerului pecificat")
}

public snapshot(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_C))
{
client_print(id,print_chat,"Nu ai acces !")
return PLUGIN_HANDLED
}

new arg[32]
read_argv(1,arg,31)
new player = cmd_target(id,arg,9)

if(!player)
{
client_print(id,print_chat,"Playerul specificat nu exista !")
return PLUGIN_HANDLED
}

new name[32]
get_user_name(player,name, 31)
client_cmd(player,"snapshot")

return PLUGIN_HANDLED
}
Sus In jos
Vezi profilul utilizatorului http://www.cs-pgl.forumz.ro
 
tutorial cereere pluginuri AMX
Sus 
Pagina 1 din 1
 Subiecte similare
-
» [Tutorial] Cum sa faci un sistem de logare/inregistrare!

Permisiunile acestui forum:Nu puteti raspunde la subiectele acestui forum
ThE BesT InFeRNaL-zOn3-=[PgL]=- :: -=[PgL]=-CoUnTeR sTr1k3 1.6 :: TuToriale couNtER sTr1k3 1.6 :: Difrite tutoriale ptr SV de C.s-
Mergi direct la: