DeathRun Manager 3.0.3 [13/02/2010]
При копировании материалов, обязательно оставлять хотя-бы автора!
Автор: xPawВерсия: 3.0.3
Редактор: Shidla
Версия: 1.0 Final
Язык: РУССКИЙ + Английский (Файл языка)
Описание:
Небольшая статья, в которой я расскажу как добавить админам возможность добавлять\устанавливать пользователям жизни.
Оригинальный плагин DeathRun Manager можно взять Вы должны зарегистрироваться, чтобы видеть ссылки.
1) Для начала нам понадобится инклуд amxmisc, для этого нужно вставить строку
- Код: Выделить всё
#include < amxmisc >
- Код: Выделить всё
#include < amxmodx >
#include < amxmisc > // <= вставляем инклуд
#include < engine >
#include < cstrike >
#include < fun >
#include < fakemeta >
#include < hamsandwich >
2) Далее вводим новую переменную, в которой будет храниться флаг доступа будущим к командам:
- Код: Выделить всё
#define ADMIN_LSET ADMIN_IMMUNITY // Admin Set\Give Lifes Level
где ADMIN_IMMUNITY - флаг доступа (подробнее о них можно почитать в файле amxconst.inc)
и у нас должно получится что-то типа этого:
- Код: Выделить всё
#include < amxmodx >
#include < amxmisc >
#include < engine >
#include < cstrike >
#include < fun >
#include < fakemeta >
#include < hamsandwich >
#pragma semicolon 1
// Comment this line if you do not want to have fake player !
#define FAKE_PLAYER
// Bot name
#if defined FAKE_PLAYER
new const g_szBotName[ ] = "DRM Fake Player";
#endif
#define ADMIN_LSET ADMIN_IMMUNITY // Admin Set\Give Lifes Level <= устанавливать\давать сможет админ с флагом "ADMIN_IMMUNITY" (он же "а")
// Messages prefix
new const g_szPrefix[ ] = "[ Deathrun ]";
3) Регистрируем в плагине сами команды, с помощью которых можно будет устанавливать\давать жизни (область plugin_init):
- Код: Выделить всё
register_clcmd( "dr_set_lives", "CmdSetLifes", ADMIN_ALL, "dr_set_lives <name> <amount> : Set User Lifes" );
register_clcmd( "dr_set_lifes", "CmdSetLifes", ADMIN_ALL, "dr_set_lives <name> <amount> : Set User Lifes" );
register_clcmd( "dr_give_lives", "CmdGiveLifes", ADMIN_ALL, "dr_set_lives <name> <amount> : Give User Lifes" );
register_clcmd( "dr_give_lifes", "CmdGiveLifes", ADMIN_ALL, "dr_set_lives <name> <amount> : Give User Lifes" );
В результате получаем следующее:
- Код: Выделить всё
if( get_pcvar_num( g_pGameName ) )
register_forward( FM_GetGameDescription, "FwdGameDesc" );
register_clcmd( "say /lifes", "CmdShowlifes" );
register_clcmd( "say /lives", "CmdShowlifes" );
register_clcmd( "dr_set_lives", "CmdSetLifes", ADMIN_ALL, "dr_set_lives <name> <amount> : Set User Lifes" ); // <= команда установки жизней
register_clcmd( "dr_set_lifes", "CmdSetLifes", ADMIN_ALL, "dr_set_lives <name> <amount> : Set User Lifes" ); // <= команда установки жизней
register_clcmd( "dr_give_lives", "CmdGiveLifes", ADMIN_ALL, "dr_set_lives <name> <amount> : Give User Lifes" ); // <= команда добавления жизней
register_clcmd( "dr_give_lifes", "CmdGiveLifes", ADMIN_ALL, "dr_set_lives <name> <amount> : Give User Lifes" ); // <= команда добавления жизней
register_clcmd( "radio1", "CmdRadio" );
register_clcmd( "radio2", "CmdRadio" );
register_clcmd( "radio3", "CmdRadio" );
// Terrorist Check
g_iThinker= create_entity( "info_target" );
4) Добавляем в тело плагина функции, вызываемые командами:
- Код: Выделить всё
public CmdSetLifes(id, level, id2)
{
if(get_user_flags(id) & ADMIN_LSET)
{
new s_Name[32], s_Amount[5];
read_argv(1, s_Name, charsmax (s_Name));
read_argv( 2, s_Amount, charsmax(s_Amount));
new i_Target = cmd_target(id, s_Name, 2);
if(!i_Target)
{
client_print(id, print_console, "(!) Player not found");
return PLUGIN_HANDLED;
}
g_Lifes[i_Target] = g_Lifes[i_Target] + max(0, str_to_num(s_Amount));
CmdShowlifes(i_Target);
return PLUGIN_HANDLED;
}
client_print ( id, print_console, "You have no access!" );
return PLUGIN_HANDLED;
}
public CmdGiveLifes(id, level, id2)
{
if(get_user_flags(id) & ADMIN_LSET)
{
new s_Name[32], s_Amount[5];
read_argv(1, s_Name, charsmax (s_Name));
read_argv( 2, s_Amount, charsmax(s_Amount));
new i_Target = cmd_target(id, s_Name, 2);
if(!i_Target)
{
client_print(id, print_console, "(!) Player not found");
return PLUGIN_HANDLED;
}
g_Lifes[i_Target] = g_Lifes[i_Target] + max(0, str_to_num(s_Amount));
CmdShowlifes(i_Target);
return PLUGIN_HANDLED;
}
client_print ( id, print_console, "You have no access!" );
return PLUGIN_HANDLED;
}
5) Сохраняем и компилируем Наслаждаемся своей мегакрутизной))
Команды:
Добавить:
dr_give_lifes <nick> <amount>
dr_give_lives <nick> <amount>
Установить:
dr_set_lifes <nick> <amount>
dr_set_lives <nick> <amount>
Ссылки:
Вы должны зарегистрироваться, чтобы видеть ссылки.
Ваш Shidla [SGC]
Last UpDate: 2010-11-21 (17:25)
Last UpDate: 2010-11-21 (17:25)