Sari la conținut
Adrian.xD

Tutorial Pawn scripting (include, define, new, plugin_init)

Recommended Posts

Salut! De ceva timp vreau să încep o serie de tutoriale Pawn, care este limbajul de scripting al AMXX-ului. Nu sunt un om cu foarte mult timp liber, deci sunt câteva săptămâni de când vreau să fac asta şi nu-mi găsesc timpul. Ei bine, acum am nişte timp liber, deci m-am hotărât să încep.
 
1. Include-urile
 Include-urile sunt funcţiile care spun compilerului din ce fişiere .inc, adică module, să ia definiţiile funcţiilor folosite în pluginul respectiv. Include-urile arată cam aşa:

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include < modul >

 
2. Define-uri, new-uri
Define-urile se folosesc după include-uri, pentru a face eventuale definiri suplimentare, pe lângă cele aflate în modulele incluse. De exemplu, cum se observă în multe pluginuri:

#define PLUGIN "Nume plugin"
#define VERSIUNE "1.0"
#define AUTOR "Nume autor"

public plugin_init()
{
    register_plugin(PLUGIN, VERSIUNE, AUTOR)
}

 
Acum, fiecare dintre cele trei variabile definite (PLUGIN, VERSIUNE, AUTOR) vor fi echivalente cu ce au fost definite. Aşadeci, compilerul va citi funcţia dată ca exemplu mai sus aşa:
 

#define PLUGIN "Nume plugin"
#define VERSIUNE "1.0"
#define AUTOR "Nume autor"
 
public plugin_init()
{
register_plugin("Nume plugin", "1.0", "Nume autor")
}

New-urile se folosesc pentru a defini o constanta, astfel:
 

new PLUG[] = "Nume plugin"
new VERS[] = "Versiune plugin"
​new AUTH[] = "Autor plugin"

Fiind aceeaşi poveste ca şi cea de mai sus, cu define-urile.
 
 
3.Plugin_init
Plugin_init este funcţia care înregistrează pluginul. Această funcţie conţine numele pluginului, versiunea pluginului, autorul pluginului şi comenzile administrative. Această funcţie se realizează cu ajutorul unui public, care este cea mai comuna funcţie. Ar trebuii să arate cam aşa:

public plugin_init()
{
          register_plugin("Nume plugin", "Versiune plugin", "Autorul pluginului")
          register_concmd("amx_test", "testCmd", ADMIN_BAN, "Aceasta este o comanda data ca exemplu.")

register_plugin - Înregistrează pluginul register_concmd - Aceasta este o comandă ce poate fi executată fie din consola serverului, fie din consola unui jucător, fiuncţionând astfel:
 

register_concmd("comanda ce va fi scrisa in consola", "functia public ce va fi executata la executarea comenzii", accesul_de_care_are_nevoie_un_admin_ca_sa_poata_executa_comanda, "Descrierea comenzii, ce va apărea în amx_help")

 
Se pot folosi şi alte funcţii în loc de register_concmd. Un exemplu comun este register_clcmd, care este exact ca şi register_concmd, doar că poate fi executată doar din consola jucătorului, nu şi din cea a serverului. Un exemplu de register_clcmd:
 

register_clcmd("say /rs", "cmdResetscore")

 
Nu este nevoie să mai adăugăm restul, dacă nu vrem. Parametrii sunt aceiaşi ca şi cei de la register_concmd şi pot fi adăugaţi la nevoie. Acest exemplu va executa publicul cmdResetscore când un jucător scrie în chat /rs.   Se pot folosi, de altfel, şi funcţii care nu necesită executare manuală, ci care vor fi executate în mod automat, cum ar fi RegisterHam, funcţie pentru care trebuie inclus modulul Hamsandwich. Un exemplu de RegisterHam:
 

RegisterHam(Ham_Spawn, "player", "cmdSpawn", 1)

 
Această funcţie va executa publicul cmdSpawn pe jucătorul definit "player", automat, la spawn.   Se mai pot adăuga în plugin_init şi eventuale cvar-uri, prin funcţia register_cvar, astfel:

register_cvar(test_cvar, "cmdTest", "1")

test_cvar este cvar-ul efectiv, cmdTest este publicul ce va fi executat, 1 este valoarea default a cvar-ului.
 
 
Ei bine, cam asta a fost deocamdată. O sa mai postez când o să mai am timp!
 

Partajează acest post


Link spre post
Distribuie pe alte site-uri

Gand poate nu "gang",si da am de gand dar nu am bani momentan sami fac un server.

Sa-mi fac* , in primu rand nu mai da copy / paste la tutoriale  , daca te mai prind ai warn up. In al 2-lea rand daca tot copiezi posteaza si sursa.

Partajează acest post


Link spre post
Distribuie pe alte site-uri
Vizitator
Acest topic este acum închis pentru alte răspunsuri.

  • Navigare recentă   0 membri

    Nici un utilizator înregistrat nu vede această pagină.

×