Designed bY viSta ;x
Fiind uN clan mai now,quake - Team recruteaza membri clan
Nu ezita sa te inscri in acest clan,avem nevoie de ajutorul vostru !
Intra in comunitatea quAke - Team si distreaza-te alaturi de noi !



 
HomeCalendarFAQSearchMemberlistUsergroupsRegisterLog in

Share | 
 

 Tutorial Inceput [AMXX]

Go down 
AuthorMessage
Aleku



Posts : 94
Join date : 04/06/2009

PostSubject: Tutorial Inceput [AMXX]   Tue Jun 09, 2009 9:25 pm

****************************************************************************************************
IMPORTANT DE STIUT :
- In scripting/c++ se foloseste intotdeauna "{" ( acolade )
- Dupa acolada urmeaza un spatiu,FOLOSITI INTOTDEAUNA TAB !Altfel veti primi eroare la compilare !

****************************************************************************************************


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


Code:
#include <amxmodx>

Mai jos vom face un plugin care executa o comanda asupra unui jucator.Aceasta comanda este include in "amxmisc" deci trebui sa face un include si pentru "el" :


Code:
#include <amxmisc>


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

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


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


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

a).prima varianta


Code:
public plugin_init(){

register_plugin(PLUGIN,VERSION,AUTHOR)
}


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


Code:
public plugin_init(){

register_plugin("nume","versiune","autor")
}


4.Urmatoarea faza este construirea comenzilor(de exemplu vreti sa faceti o comanda amx_retry prin care sa reconectati un jucator dorit)
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 :


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


*comanda -> comanda voastra : amx_retry
*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 . Se poate creea si un define ( #define access ADMIN_KICK )
*comenatariu -> este clar (va aparea in consola cand dati amx_help)

In cazul nostru va arata asa :

Code:
register_concmd("amx_retry","retry_cmd",ACCESS,"reconnect a player")

La ACCESS vom face un define langa celelalte :

Code:
#define ACCESS ADMIN_KICK


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


Code:
public retry_cmd(id)

*id - este "index"-ul...puteti pune ce vreti,dar de preferat este sa lasati asa,sa nu va incurcati,deoarece va fi folosit mai jos

6.In continuare,in public,vom folosi o functia care "se va asigura" ca nu oricine poate folosi comanda creeata.Functia este :

Code:
if(!(get_user_flags(id) & ACCESS))

*! - este opusul functiilor...deci daca nu...
*ACCESS - accesul necesar,definit mai sus
Deci ar veni : functia "ia" flagurile jucatorului si verifica daca are printre ele si accesul definit

7.Apoi,daca vrei un mesaj care va fi afisat celui care foloseste comanda si nu are accesul definit,vom avea nevoie de o functie usoara,dar destul de complexa :


Code:
client_print(index,tipul_afisarii,"mesaj")


*index - id de care va ziceam
*tipul_afisarii - sunt 4 tipuri :


Code:
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


Deci noi vom avea asa :

Code:
client_print(id,print_console,"No Access !")

Se poate mai usor asa :

Code:
console_print(id,"No Access !")
Asta nu inseamna ca merge si la celelalte asa Smile


8.Apoi o functia nelipsita din aproape orice plugin,este o valoare re intoarecere : return
Sunt 2 tipuri de returnuri cele mai folosite :
*PLUGIN_HANDLED - "block further operation" -> adica sa blocheze operatia
*PLUGIN_CONTINUE - "continue with normal operation" -> adica sa continue cu operatia normala
Deci,in cazul nostru,vom avea asa :
return PLUGIN_HANDLED

Totul arata asa :


Code:
if(!(get_user_flags(id) & ACCESS)){
console_print(id,"No Access !")
return PLUGIN_HANDLED
}


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


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

* new - este inceputul unei variabile prin care creati ce vreti
* 32 - se numeste "len" sau "length".Este un numar ce trebuie pun unelor variabile intre [] pentru stabilirea "lungimi" sirului de elemente.

Argumentul se citeste prin comanda :


Code:
read_argv(1,arg,31)


Sunt 3 tipuri de citire a argumentelor
*read_argv - citeste un singur argument
*read_args - citeste toate argumentele dintr-o linie
*read_argc - citeste numarul de argumente dintr-o linie

Ati observat ca "len"-ul este mai putin cu unu decat in variabila.Asa va fi peste tot in functii !

10.In continuare se creeaza o variabila la alegere care va fi egalata cu o functie.Sa zicem "player" :


Code:
new player = cmd_target(id,arg,flag)


*cmd_target - functie necesara pentru a executa o comanda asupra unui jucator
*arg - argumentul din consola
*flag - este un numar :

Code:
1 - evita imunitatea
2 - poti executa asupra ta
4 - trebuie sa fie in viata
8 - nu poate fi bot

Daca tu vrei 2 "optiuni" flagurile se aduna...sa zicem sa evite imunitatea si sa nu poate fi bot in acelasi timp,deci vom avea asa :


Code:
new player = cmd_target(id,arg,9)


11.Apoi verificam daca jucatorul specificat in consola exista :


Code:
if(!player){
console_print(id,"Player %s not found !",arg)
return PLUGIN_HANDLED
}


* %s - se numeste "string"..sir de elemente.Mai este si :
%d sau %i - "decimal integer" folosit pentru numere.
Deci pe noi ne intereseaza %s
Si am pus la sfarsit "arg" ca sa inlocuiasca stringul cu ce a scris adminul respectiv in consola.

12.Si la final comanda :

Code:
client_cmd(index,"comanda")

*index - variabila creata mai sus
*comanda - este clar
Deci vom avea asa :


Code:
client_cmd(player,"reconnect")


Si apoi valuare de intoarcere de final,in cazul nostru :

[cod]return PLUGIN_CONTINUE[/code]

|INFO| Daca vreti sa face un comentariu in plugin aveti 2 posibilitati :
1.Pt comentariu scurt : //comentariu
2.Pt comentarii mai lungi : /*comentariu*/

Daca ati urmarit pasi de mai sus ar trebui sa aveti ceva de genu :


Code:
/*This plugin was made by An[n]akin <3 H.s !
* With this plugin you will able to reconnect a specified player !
* Comand : amx_retry player
* Have Fun !
*/

#include <amxmodx>
#include <amxmisc>

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

#define ACCESS ADMIN_KICK

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

register_concmd("amx_retry","retry_cmd",ACCESS,"reconnect a specified player")
}

public retry_cmd(id){

if(!(get_user_flags(id) & ACCESS)){
console_print(id,"No Access !")
return PLUGIN_HANDLED
}

new arg[31]
read_argv(1,arg,31)

new player = cmd_target(id,arg,9)

if(!player){
console_print(id,"Player %s not found !",arg)
return PLUGIN_HANDLED
}

client_cmd(player,"reconnect") //Comand

return PLUGIN_CONTINUE
}


Sper ca ati inteles mai bine.
Back to top Go down
View user profile
 
Tutorial Inceput [AMXX]
Back to top 
Page 1 of 1
 Similar topics
-
» Curl Tutorial!
» AOE_Fan's RMS Command Tutorial
» How to make .abk book ( Arena ) step by step... tutorial...
» i need help ;/
» IvanHoe 999946f x64 vs. IvanHoe B46fB x64, 2.800 games, still running

Permissions in this forum:You cannot reply to topics in this forum
Designed bY viSta ;x  :: ¨˜”°º• » Utilitati Counter-Strike « •º°”˜¨ :: Tutoriale-
Jump to: