Помогни ни да направим Uroci.net по - богат! Добави урок

Урок 1: Въведение в AMX MOD X Скриптирането

taffch0   трудност:    видян: 5879

Първото което ще видите, като отворите сорс файла на някой плугин е:

Код:
1
#include <amxmodx> 

.. е разбира се, може да има и други такива подобни линии, които да инлудват (вкарват/включват) и други "неща".

Тези "неща" са тъй наречените библиотеки.

Един AMX Mod X плугин може да има 4 главни типа функции.
Първият е public (публична), което ще рече че е публично видима за AMX Mod X енджина.
Втората е native функция, която е декларирана в модул или в AMX Mod X Ядрото.
Третата е нормална-обикновена потребителска функция, която се декларира без никакви специални атрибути пред името й.
Четвъртата е forward, тя се извиква при някои определени събития, но иначе по същност и тя се пада публична функция.

За да регистрираме плугина в AMX Mod X е нужно да го инициализираме посредством plugin_init() функцията.
Тя се води публична (public) функция и не приема никакви параметри.
Нейното извикване става веднага след зареждането на картата.

В нея НЕ Е нужно, но е препоръчително да се сложи native функцията register_plugin.
Тя служи за регистрирането на плугина Ви, като добавя името, версията и неговия автор-създател.
Тази информация може да бъде видяна при написването на "amxx list" командата в сървърната конзола.

Ето и един примерен код на това, до което в момента сме стигнали:
Код:
1
2
3
4
#include <amxmodx>
public plugin_init() {
 
register_plugin("Test""1.0""AMX Mod X BG")


register_plugin() функцията приема 3 параметъра.
1вият указва името на плугина.
2рият - неговата версия
3тият - автора на плугина

Създаване на команди

Всяка команда, която се регистрира посредством плугин се регистрира като конзолна команда.
Когато искате да регистрирате някаква команда, вие трябва да дефинирате четири опцийки:
    1. Името на самата команда
    2. Функцията, която интерпретира командата
    3. Нивото/level-а за достъп до командата
    4. Кратко описание на командата


Сега ще ви демонстрирам код на плугин с доста проста функция на работа.
Чрез команда, плугинът ще дава на играча допълнително кръв към текущата си.

За да регистрираме командата (която в случая ще е: /kruv), трябва да поставим register_clcmd() функцията в plugin_init().
Но понеже не желая да усложнявам кода, няма да правя командата само за администратори с даден level и затова няма да добавя останалите 2 параметъра, тъй като ще бъде SAY команда /ще се изпълнява в чата/ не е нужно да й слагам някакво описание.
Код:
1
2
3
4
5
6
#include <amxmodx>

public plugin_init() {
    
register_plugin("Give me HP""1.0""AMX Mod X BG")
    
register_clcmd("say /kruv""give_hp")


.. след това пишем самата функция, която ще обслужва "say /kruv" командата:
Код:
1
2
3
public give_hp(id) {


.. както забелязвате функцията приема един параметър, в случая ID, но може да бъде кръстен както си искате.
Той ще отговаря на индекса на играча в сървъра (от 1 до 32).

Понеже ще ползваме функция, която я има във fun модула, трябва да Include-нем fun.inc библиотеката.
За целта под
Код:
1
#include <amxmodx> 

добавяме
Код:
1
#include <fun> 


След това в give_hp() пишем
Код:
1
2
new segashna_kruv get_user_health(id// Присвояваме стойността, която ще ни върне функцията get_user_health в променливата segashna_kruv
set_user_health(idsegashna_kruv 50// Добавяме 50 кръв отгоре за играча, който е написал командата 


Крайният вариант на този код би бил:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
#include <amxmodx>
#include <fun>

public plugin_init() {
    
register_plugin("Give me HP""1.0""AMX Mod X BG")
    
register_clcmd("say /kruv""give_hp")
}

public 
give_hp(id) {
    new 
segashna_kruv get_user_health(id// Присвояваме стойността, която ще ни върне функцията get_user_health в променливата segashna_kruv
    
set_user_health(idsegashna_kruv 50// Добавяме 50 кръв отгоре за играча, който е написал командата


И съответно като напишете в чата /kruv или в клиент конзолата say /kruv, плугинът ще добави 50 кръв към сегашната ви.
И аналогично, ако искате да извадите, умножите, разделите, използвайте другите аретметичните знаци:
    1. - (минус)
    2. * (по/умножено)
    3. / (делено)


Как да използваме CVAR команди в нашите плугини
(CVAR == C = Command .... VAR = Variable => Командна променлива)

Ще използвам за база - горният код.

За да регистрирате CVAR (в случая ще бъде ЧИСЛО и ще оказва колко кръв да се даде на играча при написването на /kruv), трябва да добавите register_cvar функцията в plugin_init.
.. няма значение, дали ще бъде под, или над register_clcmd.

Самата функция приема два параметъра:
    1. Името на командната променлива
    2. Нейната първоначална (default) стойност


Код:
1
register_cvar("amx_how_much_hp""50"


В give_hp() ще създадем променлива, която да присвоява стойността на вече създадената CVAR:
Код:
1
new kolko_kruv get_cvar_num("amx_how_much_hp"

.. след това променяме
Код:
1
set_user_health(idsegashna_kruv 50

на
Код:
1
set_user_health(idsegashna_kruv kolko_kruv


.. иии крайният вариант би бил:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <amxmodx>
#include <fun>

public plugin_init() {
    
register_plugin("Give me HP""1.0""AMX Mod X BG")
    
register_clcmd("say /kruv""give_hp")
    
register_cvar("amx_how_much_hp""50")
}

public 
give_hp(id) {
    new 
kolko_kruv get_cvar_num("amx_how_much_hp")

    new 
segashna_kruv get_user_health(id// Присвояваме стойността, която ще ни върне функцията get_user_health в променливата segashna_kruv
    
set_user_health(idsegashna_kruv kolko_kruv// Добавяме XXXX кръв отгоре за играча, който е написал командата









Коментари (1)

twisty на 17.04 2010 в 20:25ч.
Браво пич това ще е полезно за много народ ^^

Регистрирайте се, за да добавите коментар


Калдейта ЕООД - © 2003-2010. Всички права запазени.
Препоръчваме: Национален Бизнес | Bomba.bg | IT Новини | Диплома.бг | TRAVEL туризъм | Реферати | AmAm.bg | Иде.ли | Курсови работи | Фото Форум | Spodeli.net | Фото-Култ | Atol.bg | Elmaz.com | MobileBulgaria.com | Казанлък.Com