AcasaAcasa  FacebookFacebook  CalendarCalendar  FAQFAQ  CautareCautare  MembriMembri  GrupuriGrupuri  InregistrareInregistrare  ConectareConectare  



 
NewGames • Suntem in redeschidere!
NewGames • suntem in cautare de staff. Alatura-te si tu noua si ajuta-ne cu ceea ce poti ! Click aici

Distribuiţi|

amxx. scripting

Vezi subiectul anterior Vezi subiectul urmator In jos
AutorMesaj
Moderator
avatar

Mesaje : 25
MesajSubiect: amxx. scripting Lun Mai 05, 2014 5:56 pm

Un mic ajutor pentru "invataceii" de scripting pe baza modului amxx.


1. INCLUDEREA FISIERELOR
Includerea fisierelor se realizeaza prin 2 cai:


Cod: [Selectează]
#include


Cod: [Selectează]
#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: [Selectează]
#include


Daca pluginul contine si comenzi care pot fi folosite de admini , atunci va trebui sa includem si amxmisc:


Cod: [Selectează]
#include



2. CONSTANTE SIMBOLICE
Definirea constantelor simbolice se face astfel:


Cod: [Selectează]
#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: [Selectează]
#define FORUM [Trebuie sa fiti inscris si conectat pentru a vedea acest link]


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: [Selectează]
set_hudmessage(...) show_hudmessage


Vom vorbi acum despre set_hudmessage.Este alcatuit din:


Cod: [Selectează]
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:

Cod: [Selectează]
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: [Selectează]
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: [Selectează]
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: [Selectează]
set_hudmessage(200, 255, 0, 0.04, 0.48, 0, 6.0, 12.0) show_hudmessage(id, "[Trebuie sa fiti inscris si conectat pentru a vedea acest link]



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 FORUM cu valoarea [Trebuie sa fiti inscris si conectat pentru a vedea acest link]
Mai jos avem o linie de cod ce printeaza un mesaj in chat:

Cod: [Selectează]
client_print(0, print_chat, "Tutorial facut pentru comunitatea Lan-Mania!")


Acum vom face o modificare pentru a citi valoarea constantei:


Cod: [Selectează]
client_print(0, print_chat, "Tutorial facut pentru 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:


Cod: [Selectează]
#if CONDITIE SECTIUNE #endif


Pentru ca aceasta parte de cod sa fie valida , conditia trebuie definita.Uitati mai jos un exemplu:


Cod: [Selectează]
#define ARATA_FORUM 1 #define FORUM [Trebuie sa fiti inscris si conectat pentru a vedea acest link]


Cod: [Selectează]
#if FORUM client_print(0, print_chat, "Tutorial facut pentru comunitatea %s!", FORUM) #else client_print(0, print_chat, "Tutorial facut de StoleA") #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:
Cod: [Selectează]
//Tutorial facut pentru comunitatea Lan-Mania.Com /*Tutorial facut pentru comunitatea Lan-Mania.Com*/


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, nu sunt loate in considerare

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


Cod: [Selectează]
register_plugin("Numele pluginului", "Versiunea", "Autorul")


Acest cod poate fi folosit in:

Cod: [Selectează]
public plugin_init

Cod: [Selectează]
public plugin_precache


De asemenea pot fi folosite si constantele simbolice:

Cod: [Selectează]
#define PLUGIN "Plugin Lan-Mania" #define VERSIUNE "0.1" #define AUTOR "Lan-Mania Suport"

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:


Cod: [Selectează]
public plugin_init() { register_clcmd("say comanda", "executa_comanda") register_clcmd("say_team comanda", "executa_comanda") register_clcmd("comanda", "executa_comanda") }

Cod: [Selectează]
public executa_comanda(id) { client_print(id, print_chat, "Tutorial facut de GodLikE") }


Cand un jucator tasteaza in chat , team_chat sau consola comanda , in chat va aparea mesajul:

Tutorial facut de GodLikE


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:

Cod: [Selectează]
register_concmd("amx_kill","kill_player",ADMIN_KICK,"- Omori jucatorul respectiv")

Acum facem un nou public numit kill_player:

Cod: [Selectează]
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:

Cod: [Selectează]
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:
Cod: [Selectează]
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:

Cod: [Selectează]
#include #include public_plugin_init() { register_concmd("amx_kill","kill_player",ADMIN_KICK,"- Omori jucatorul
Sus In jos
Vezi profilul utilizatorului
Pagina 1 din 1

Permisiunile acestui forum:Nu puteti raspunde la subiectele acestui forum
 :: Jocuri :: Counter-Strike 1.6 :: Tutoriale-
Copyright © 2014 - 2015 NEWGAMES.DUST.TV. Toate drepturile rezervate.