Урок 1: Въведение в AMX MOD X Скриптирането
Първото което ще видите, като отворите сорс файла на някой плугин е:
| Код: |
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> |
добавяме
След това в give_hp() пишем
| Код: |
1 2
| new segashna_kruv = get_user_health(id) // Присвояваме стойността, която ще ни върне функцията get_user_health в променливата segashna_kruv
set_user_health(id, segashna_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(id, segashna_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(id, segashna_kruv + 50) |
на
| Код: |
1
| set_user_health(id, segashna_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(id, segashna_kruv + kolko_kruv) // Добавяме XXXX кръв отгоре за играча, който е написал командата
} |
Коментари (1)