/**Она вызывается каждый раз когда остается последний зомби и передает его айди. Другие функции можно посмотреть в соответствующих плагину файлах в папке include и с расширением inc. Надеюсь, вы поняли о чем речь и можно переходить к конкретной практике.
* Called when a player becomes the last zombie.
* Note: This is called for the first zombie too.
* @param id Player index.
*/
forward zp_user_last_zombie(id)
Для создания forward функции необходимо знать две функции:
CreateMultiForward
ExecuteForward
Изучили? Замечательно, поехали дальше.
Что бы не выдумывать и не запутывать вас лишний раз, возьму пример из выше приведенных функций:
Это будет первый плагин(основной):
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "[amxmodx.inc] ExecuteForward"
#define VERSION "1.0"
#define AUTHOR "Admin"
new g_fwd_first
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
g_fwd_first = CreateMultiForward("my_first_multi_forward", ET_CONTINUE, FP_CELL,FP_CELL)
server_print("Forward[%d]",g_fwd_first)
}
public client_connect(id){
new num = 5
new ret
ExecuteForward(g_fwd_first,ret,id,num)
//Результат будет 98 (далее вы поймете почему)
//Второго плагина с функцией my_first_multi_forward
server_print("ret[%d]",ret)
}
Далее необходимо создать файл который будет рассказывать другим плагинам что за функцию волшебную мы придумали и назовем его new_forwards.inc, не забыли в какую папку его необходимо сохранить? Вижу, правильно думаете в папку include.
После чего в него помещаем информацию о нашей функции:
/*Разумеется данный пример не имеет ни какого смысла, так как создаваемый форвард дублирует уже существующий client_connect, но сейчас наша задача научиться работать с форвардами, а не придумывать их.
* Тестовая функция, вызывается каждый раз
* Когда заходит игрок
* Параметры:
* id - айди игрока
* num - какое то число
*/
forward my_first_multi_forward(id,num)
Далее необходим второй плагин, где бы использовалась данная функция:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
//Подключение библиотеки, которая расскажет скрипту о функции
#include <new_forwards>
#define PLUGIN "[amxmodx.inc] Multi Forward`s"
#define VERSION "1.0"
#define AUTHOR "Admin"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
}
//Мы же регистрировали форвард, а как вы помните
//форвард функция вызывается при каком то событии
//А в библиотеке мы описали что за данные придут в не
public my_first_multi_forward(id,num){
//Для подтверждения что все прошло удачно
//Выводим в консоль инфу об айди игрока и числа
//Из первого плагина
server_print("id[%d],num[%d]",id,num)
//Возвращаем какое то значение в первый плагин
return 98
}
Ну как, поняли о чем речь?
Сейчас очень популярен стал мод DeathRun, вот и попробуйте написать два плагина.
- Где будет отслеживаться что остался один CT и создайте форвард по этому событию и передайте id игрока и его здоровье.
- Плагин который будет использовать данную функцию, например давать этому CT какое то оружие или здоровье, ну или просто HUD сообщение.