Първа част от поредицата за научаването на pawn скриптирането
Автор: hateYou @ amxmodxbg.org
Код за потвърждение: Избери целия код
#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" командата в сървърната конзола.
Ето и един примерен код на това, до което в момента сме стигнали:
Код за потвърждение: Избери целия код
#include <amxmodx>
public plugin_init() {
register_plugin("Test", "1.0", "AMX Mod X BG")
}
1вият указва името на плугина.
2рият - неговата версия
3тият - автора на плугина
Всяка команда, която се регистрира посредством плугин се регистрира като конзолна команда.
Когато искате да регистрирате някаква команда, вие трябва да дефинирате четири опцийки:
- 1. Името на самата команда
2. Функцията, която интерпретира командата
3. Нивото/level-а за достъп до командата
4. Кратко описание на командата
Чрез команда, плугинът ще дава на играча допълнително кръв към текущата си.
За да регистрираме командата (която в случая ще е: /kruv), трябва да поставим register_clcmd() функцията в plugin_init().
Но понеже не желая да усложнявам кода, няма да правя командата само за администратори с даден level и затова няма да добавя останалите 2 параметъра, тъй като ще бъде SAY команда /ще се изпълнява в чата/ не е нужно да й слагам някакво описание.
Код за потвърждение: Избери целия код
#include <amxmodx>
public plugin_init() {
register_plugin("Give me HP", "1.0", "AMX Mod X BG")
register_clcmd("say /kruv", "give_hp")
}
Код за потвърждение: Избери целия код
public give_hp(id) {
}
Той ще отговаря на индекса на играча в сървъра (от 1 до 32).
Понеже ще ползваме функция, която я има във fun модула, трябва да Include-нем fun.inc библиотеката.
За целта под
Код за потвърждение: Избери целия код
#include <amxmodx>
Код за потвърждение: Избери целия код
#include <fun>
Код за потвърждение: Избери целия код
new segashna_kruv = get_user_health(id) // Присвояваме стойността, която ще ни върне функцията get_user_health в променливата segashna_kruv
set_user_health(id, segashna_kruv + 50) // Добавяме 50 кръв отгоре за играча, който е написал командата
Код за потвърждение: Избери целия код
#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 кръв отгоре за играча, който е написал командата
}
И аналогично, ако искате да извадите, умножите, разделите, използвайте другите аретметичните знаци:
- 1. - (минус)
2. * (по/умножено)
3. / (делено)
(CVAR == C = Command .... VAR = Variable => Командна променлива)
За да регистрирате CVAR (в случая ще бъде ЧИСЛО и ще оказва колко кръв да се даде на играча при написването на /kruv), трябва да добавите register_cvar функцията в plugin_init.
.. няма значение, дали ще бъде под, или над register_clcmd.
Самата функция приема два параметъра:
- 1. Името на командната променлива
2. Нейната първоначална (default) стойност
Код за потвърждение: Избери целия код
register_cvar("amx_how_much_hp", "50")
Код за потвърждение: Избери целия код
new kolko_kruv = get_cvar_num("amx_how_much_hp")
Код за потвърждение: Избери целия код
set_user_health(id, segashna_kruv + 50)
Код за потвърждение: Избери целия код
set_user_health(id, segashna_kruv + kolko_kruv)
Код за потвърждение: Избери целия код
#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 кръв отгоре за играча, който е написал командата
}
Източник: amxmodx.org
Превод: hateYou