[CAMPANIE STAFF]Cautam moderatori si designeri activi!
Welcome to WTFCS Community Forums!
Servere gaming la super-preturi! [HOSTING SERVICE]
-->






Tutorial scripting AMXX
Author : Insomnia, Category : Scripting, 0 Replyes, 1336 Views
EVALUATE THIS TOPIC
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
1 Guest(s)
Banned!
 
143
POSTS
59
THREADS
0
REPUTATION
Male
Sex

WtfCs Coins: 0[w]
09-22-2012, 01:07 PM
#1
Salut, acest tutorial nu e facut in totalitate de mine deoarece nu am rabdare sa fac un tutorial, dar este bun pentru mici scripteri care vor sa invete cate ceva



Tutorial scripting [AMXX]

Pentru inceput puteti urma acest tutorial daca vreti sa deviniti avansati cautati alte surse sau uitativa prin alte pluginuri Succes.

1. INCLUDEREA FISIERELOR
Includerea fisierelor se realizeaza prin 2 cai:
Cod:
Code:
#include <fisierul>

Cod:
Code:
#include "fisierul"

Folosind prima cale , fisierul este cautat in directoarele standard(In cazul AMXX directorul standard este include).
Folosind a doua cale , fisierul este cautat in directorul curent , apoi in cele standard(In cazul AMXX directorul curent este scripting).Aceasta forma
Atunci cand facem un plugin AMXX , va trebui sa includem mereu amxmodx:
Cod:
Code:
#include <amxmodx>

Daca pluginul contine si comenzi care pot fi folosite de admini , atunci va trebui sa includem si amxmisc:
Cod:
Code:
#include <amxmisc>


2. CONSTANTE SIMBOLICE
Definirea constantelor simbolice se face astfel:
Cod:
Code:
#define NUMELE_CONSTANTEI VALOAREA_CONSTANTEI

Acest lucru face ca in toata sursa , NUMELE_CONSTANTEI sa fie inlocuit cu VALOAREA_CONSTANTEI(exceptie comentariile).
Scopul acestora este de a usura editarea surselor.
Exemplu:
Cod:
Code:
#define COMUNITATEA Watf



3. PRINTAREA MESAJELOR
Exista patru tipuri de mesaje: mesaje hud , mesaje in chat , mesaje in consola si mesaje centrate.

3.1. MESAJE HUD
Printarea mesajelor hud se face prin intermediul:
Cod:
Code:
set_hudmessage(...)
shoe_hudmessage

Vom vorbi acum despre set_hudmessage.Este alcatuit din:
Cod:
Code:
set_hudmessage ( red, green, blue, Float:x, Float:y, effects, Float:fxtime, Float:holdtime, Float:fadeintime, Float:fadeouttime, channel )

red , green , blue reprezinta culoarea mesajului.
Float:x , Float:y reprezinta pozitia mesajului.
effects reprezinta efectele mesajului:
Code:
Cod:
0 = fade in/fade out
1 = flickery credits
2 = write out (training room)

Float:fxtime , Float:fadeintime , Float:fadeouttime reprezinta timpii la care efectele se schimba
Float:holdtime reprezinta cat timp apare mesajul pe ecran.
channel reprezinta canalul pe care este trimis mesajul.Exista 4 canale per jucator.
Uitati aici un exemplu:
Cod:
Code:
set_hudmessage ( 200, 100, 0, -1.0, 0.35, 0, 6.0, 12.0, 0.1, 0.2, 4 )

Dupa ce am stabilit setarile mesajului , este timpul sa il printam cu show_hudmessage:
Cod:
Code:
show_hudmessage ( index, message[], ... )

index reprezinta jucatorul cui i se va afisa mesajul [ 0 - tuturor ] [ id - doar acelui jucator care a actionat comanda]
message[] reprezinta mesajul ce va fi afisat
Exemplu:
Cod:
Code:
set_hudmessage(200, 255, 0, 0.04, 0.48, 0, 6.0, 12.0)
show_hudmessage(id, "www.eXtreamCS.com)


4. FOLOSIREA CONSTANTELOR SIMBOLICE
Pentru ca NUMELE_CONSTANTEI sa ia valoarea VALOAREA_CONSTANTEI trebuie sa efectuam niste modificari in sursa.
Am definit mai sus o constanta numita COMUNITATEA cu valoarea Watf.
Mai jos avem o linie de cod ce printeaza un mesaj in chat:
Cod:
Code:
client_print(0, print_chat, "Distractie maxima pe comunitatea Watf!")


Acum vom face o modificare pentru a citi valoarea constantei:
Cod:
client_print(0, print_chat, "Distractie maxima pe comunitatea %s!", COMUNITATE)




5. COMPILAREA CU CONDITII
Compilarea cu conditii permite includerea/excluderea unor portiuni din sursa in functie de conditiile puse.
Aceasta se face astfel:
Code:
#if CONDITIE
SECTIUNE
#endif
Pentru ca aceasta parte de cod sa fie valida , conditia trebuie definita.Uitati mai jos un exemplu:
Code:
#define ARATA_COMUNITATEA 1
#define COMUNITATEA Watf

#if ARATA_COMUNITATEA
client_print(0, print_chat, "Distractie maxima pe comunitatea %s!", COMUNITATE)
#else
client_print(0, print_chat, "Have Fun")
#endif
6. COMENTARII IN SURSA
Comentariile din sursa sunt foarte folositoare deoarece putem explica ce am facut prin niste linii de cod.Exista doua moduri prin care puteam sa facem comentarii:
Code:
//Dstractie maxima pe comunitatea Watf
Code:
/*Distractie maxima pe comunitatea Watf*/
Daca doriti sa folositi prima forma , iar comentariul se intinde pe mai multe randuri , trebuie sa adaugati // in fata fiecarui rand de comentariu.
A doua forma este recomandata deoarece la inceputul comentariului se pune /* iar la sfarsit se pune */
Avantajul este ca nu mai trebuie sa puneti simbolurile in fata fiecarui rand!
ATENTIE: Comentariile din sursa nu sunt compilate

7. INREGISTRAREA PLUGINULUI
Inregistrarea pluginului se foloseste pentru a printa informatii despre plugin(Numele pluginului , Versiune , Autor).
Se face astfel:

Code:
register_plugin("Numele pluginului", "Versiunea", "Autorul")
Acest cod poate fi folosit in:
Code:
public plugin_init
Code:
public plugin_precache
De asemenea pot fi folosite si constantele simbolice:
Code:
#define PLUGIN "Created By Watf"
#define VERSIUNE "1.0"
#define AUTOR "Test"

public plugin_init()
{
register_plugin( PLUGIN, VERSIUNE, AUTOR)
}
8. INREGISTRAREA COMENZILOR
Inregistrarea comenzilor se foloseste pentru a executa anumite linii de cod pe jucatorii care folosesc acele comenzi.
De exemplu:
Code:
public plugin_init()
{
register_clcmd("say comanda", "executa_comanda")
register_clcmd("say_team comanda", "executa_comanda")
register_clcmd("comanda", "executa_comanda")
}

public executa_comanda(id)
{
client_print(id, print_chat, "Have Fun")
}
Cand un jucator tasteaza in chat , team_chat sau consola comanda , in chat va aparea mesajul:
Code:
Have Fun
9. INREGISTRAREA COMENZILOR DE ADMIN
Inregistrarea comenzilor de admin se foloseste pentru a executa anumite linii de cod pe jucatorii pe care au fost folosite acele comenzi.Vom inregistra comanda amx_kill care omoara jucatorul pe care este folosita comanda.
In public plugin_init adaugam:
Code:
register_concmd("amx_kill","kill_player",ADMIN_KICK,"-<nume> Omori jucatorul respectiv")
Acum facem un nou public numit kill_player:
Code:
public kill_player(id,level,cid)
{
}
In publicul kill_player , verificam daca jucatorul este admin.Daca nu este , comanda nu este executata si apare un mesaj:
Code:
if(!cmd_access(id,level,cid,2))
{
client_print(id, console_print, "Nu ai acces la aceasta comanda")
return PLUGIN_HANDLED
}
Dupa aceste linii , adaugam:
Code:
new arg[32]
read_argv(1,arg,31)

new player = cmd_target(id,arg,7)
if(!is_user_alive(id)) /*Verifica daca jucatorul este in viata*/
return PLUGIN_HANDLED
client_cmd(player,"kill") /*Omoara jucatorul*/
return PLUGIN_HANDLED
In final va arata asa:
Code:
#include <amxmodx>
#include <amxmisc>

public_plugin_init()
{
register_concmd("amx_kill","kill_player",ADMIN_KICK,"-<nume> Omori jucatorul respectiv")
}

public kill_player(id,level,cid)
{
if(!cmd_access(id,level,cid,2))
{
client_print(id, console_print, "Nu ai acces la aceasta comanda")
return PLUGIN_HANDLED
}
new arg[32]
read_argv(1,arg,31)

new player = cmd_target(id,arg,7)
if(!is_user_alive(id)) /*Verifica daca jucatorul este in viata*/
return PLUGIN_HANDLED
client_cmd(player,"kill") /*Omoara jucatorul*/
return PLUGIN_HANDLED
}
Regulament forum: You are not allowed to view links. Register or Login to view.

You are not allowed to view links. Register or Login to view.

You are not allowed to view links. Register or Login to view.


Forum Jump: