Bun Venit Pe Site`uL Clanului WoG
Doriți să reacționați la acest mesaj? Creați un cont în câteva clickuri sau conectați-vă pentru a continua.
Radio mafia
[Tutorial] Inceput 2w4wq4g [Tutorial] Inceput 2h3you8
Servar
Ultimele subiecte
» play popular vegas slots
[Tutorial] Inceput I_icon_minitimeMier Aug 03, 2011 2:24 am Scris de Vizitator

» iceland fish oil
[Tutorial] Inceput I_icon_minitimeMar Aug 02, 2011 9:33 pm Scris de Vizitator

» гинекология круглосуточно
[Tutorial] Inceput I_icon_minitimeLun Aug 01, 2011 8:42 am Scris de Vizitator

» generic cialis online
[Tutorial] Inceput I_icon_minitimeVin Iul 29, 2011 4:49 am Scris de Vizitator

» Продвижение неизбежно
[Tutorial] Inceput I_icon_minitimeDum Iul 24, 2011 3:01 pm Scris de Vizitator

» Interviul meu:P
[Tutorial] Inceput I_icon_minitimeDum Dec 20, 2009 7:01 pm Scris de -W.o.G- Bershka

» Admin..daca se poate
[Tutorial] Inceput I_icon_minitimeDum Dec 20, 2009 6:54 pm Scris de -W.o.G- Bershka

» sa imi fie scos banul
[Tutorial] Inceput I_icon_minitimeSam Noi 28, 2009 7:28 pm Scris de Vizitator

» slot cs1.6
[Tutorial] Inceput I_icon_minitimeSam Noi 21, 2009 4:40 pm Scris de rata

ChaT 2 -WoG-

ShoutMix chat widget

[Tutorial] Inceput

In jos

[Tutorial] Inceput Empty [Tutorial] Inceput

Mesaj  -RaZoR- Sam Aug 29, 2009 10:15 am

**************************************************
**************************************************
AUTOR : ANNAKIN

IMPORTANT DE STIUT :
-
In Pawn / amxx se foloseste in cele mai multe cazuri "{" (acolade);
intre acolade se pun mai multe functii dorite. Daca aveti doar o
functie acoladele nu mai sunt necesare. Pentru citirea mai usoara, dupa
o acolada se va pune un spatiu folosind tasta TAB.

- Un plugin este format din public-uri si stock-uri:
public - poate fi folosit doar in pluginul respectiv[/*]
stock - poate fi folosit si in alte pluginuri; se pune de obicei intr-un fisier in amxmodx/scripting/include[/*]
Pentru inceput invatam public-uri
- La sfaristul unei linii, declarari se pune de obicei caracterul ;
- Se pot adauga si comentarii care nu afecteaza compilarea pluginului

Pt. comentariu de linie : // comentariu[/*]
2. Pt. comentarii mai lungi sau taiere de linie : /*comentariu*/[/*]

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

1.Totul incepe prin includerea fisierelor care contin functii, necesare pentru a crea pluginul.
Forma generala:

Code:
#include <fisier>


Fisierele sunt citite din amxmodx/scripting/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.Acest
fisier contine functii utile, care ne vor ajuta in plugin:

Code:
#include <amxmisc>


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

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

- public-ul este plugin_init :

Code:
public plugin_init()
{
}


- inregistrarea se face in felul urmator:

Code:
register_plugin("nume plugin","versiune","autor");


Si am obtinut:

Code:
public plugin_init()
{
register_plugin("nume plugin","versiune","autor");
}


3.
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
Forma generala:

Code:
register_concmd("comanda","public",acces,"comentariu (optional)");


* 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 . Acesta ese sub forma: ADMIN_SLAY,ADMIN_KICK,ADMIN_BAN,etc..
* comenatariu -> este clar (va aparea in consola cand dati amx_help)

In cazul nostru va arata asa :

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


4. Urmatorul pas este publicul(cel care lati pus la register_concmd)
In cazul nostru va fi asa:

Code:
public retry_cmd(id,level,cid)


* 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
* level,cid - corespund comenzii create...ne vor ajuta sa verificam daca jucatorul are acces la comanda.

5. In continuare,in public,vom folosi o functia care "se va asigura" ca nu oricine poate folosi comanda creeata.
Forma generala:

Code:
cmd_access(id,level,cid,num)


* num
- numarul argumentelor din consola, primul fiind comanda. Deci, in
cazul nostru vom avea num-ul 2, deoarece comanda este amx_retry jucator.
Deci, vom avea asa:

if(!cmd_access(id,level,cid,2))

* if - 'daca'...este o functie care verifica cea ce ati scris, si 'vede' daca este asa.
* ! - opusul comenzii, deci daca nu are acces
Acum ca am verificat daca jucatorul are sau nu acces la comanda, blocam operatia:

Code:
return PLUGIN_HANDLED


- "block further operation" - blocheaza operatia
- return - valoare de 'intoarcere'
Si am obtinut:

Code:
if(!cmd_access(id,level,cid,2))
return PLUGIN_HANDLED;


Alta valoare de intoarcere:

Code:
return PLUGIN_CONTINUE


- "continue with normal operation" - continua cu operatia normala
6. Urmeaza citirea argumentelor din consola :

Code:
new arg[32]*


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. In
cazul numelui este 31, in variabila se pune cu 1 in plus, deoarece se
incepe de la 0.

Argumentul se citeste prin comanda :

read_argv(num,arg,len)

* num - al catelea argument din consola
* arg - variabila care va fi folosita mai departe
* len - lungimea sirului de caractere

Si avem:

Code:
read_argv(1,arg,31)


- va citi primu argument scris dupa comanda.
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

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

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 :

new player = cmd_target(id,arg,9)

8. Apoi verificam daca jucatorul specificat in consola exista :

if(!player)
return PLUGIN_HANDLED9

Si la final, comanda :

client_cmd(index,"comanda")

*index - asupra carui jucator se executa comanda
*comanda - comanda ce va fi trimisa in consola jucatorului si executata in acelasi timp.
Deci vom avea asa :

client_cmd(player,"reconnect")

10. Daca vreti sa trimiteti un mesaj jucatorilor.
Forma generala:

client_print(index,type,"mesaj");

* index - cui i se trimite mesajul, 0 - toti jucatorii
* type - unde este trimis:

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


Si avem:

Code:
client_print(0,print_chat,"Un jucator a fost reconectat!");

Daca vreti sa trimiteti si numele adminului respectiv al jucatorului, trebuie mai intai sa aflam numele acestora.
Forma generala:
Code:
new variabila[len];
get_user_name(index,variabila,len-1);


Deci, avem asa....vom crea 2 variabila, una pentru admin si alta pentru jucator:

Code:
new adminname[32],playername[32];
get_user_name(id,adminname,31); // pentru admin
get_user_name(player,playername,31); // pentru jucator


Apoi, trebuie sa stiti ca:

%s - string,sir de caractere
%d, %i - 'decimal integer' -- pentru numere
%c - caracter, pentru un singur caracter, litera,etc...

Deci noi vom folosi %s:

client_print(0,print_chat,"Admin %s: l-a reconectat pe %s",adminname,playername);

- tot ce este la sfarsit, dupa , sunt informatii ce vor fi introduse in mesaj, inlocuid %s,%d,etc...

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

Code:
return PLUGIN_HANDLED;


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 !
* Command : amx_retry player
* Have Fun !
*/
#include <amxmodx>
#include <amxmisc>

public plugin_init()
{
register_plugin("Reconnect Player","1.0","anakin_cstrike");
register_concmd("amx_retry","retry_cmd",ADMIN_KICK,"- <jucator>");
}
public retry_cmd(id,level,cid)
{
if(!cmd_access(id,level,cid,2))
return PLUGIN_HANDLED;
new arg[32];
read_argv(1,arg,31);

new player = cmd_target(id,arg,9);
if(!player) return PLUGIN_HANDLED;
new adminname[32],playername[32];
get_user_name(id,adminname,31);
get_user_name(player,playername,31);

client_cmd(player,"reconnect"); // aceasta este comanda
client_print(0,print_chat,"Admin %s: l-a reconectat pe %s",adminname,playername);
return PLUGIN_HANDLED;

-RaZoR-
Admin

Mesaje : 212
Data de inscriere : 28/08/2009

Sus In jos

Sus

- Subiecte similare

 
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum