|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
помогите перевести
|
|
predator | Дата: Вторник, 22.12.2009, 17:42:53 | Сообщение # 31 |
Лейтенант
Группа: Пользователи
Сообщений: 54
Статус: Не в сети
| Code #include <amxmodx> #include <amxmisc> #include <hamsandwich>
#define PLUGIN "Admin Revive" #define VERSION "0.01" #define AUTHOR "~Free*.*KILL~"
new pcv_amx_revive new bool:g_player_revive[33]
public plugin_init() { register_plugin( PLUGIN, VERSION, AUTHOR ) RegisterHam( Ham_Spawn, "player", "event_player_spawn", 1 ) register_clcmd( "say /revive", "revive_me", ADMIN_ALL, "" ) pcv_amx_revive = register_cvar( "amx_revive", "1" ) }
public event_player_spawn( id ) if ( get_pcvar_num ( pcv_amx_revive ) && is_user_alive( id ) ) g_player_revive[id] = false
public revive_me( id, level, cid ) { if ( !get_pcvar_num ( pcv_amx_revive ) ) return PLUGIN_CONTINUE
if ( !cmd_access( id, level, cid, 0 ) ) return PLUGIN_HANDLED
if( is_user_alive( id ) ) { client_print( id, print_chat, "* This command can only use a dead player." ) return PLUGIN_HANDLED }
if( g_player_revive[id] ) { client_print( id, print_chat, "* You have already used this command in this round." ) return PLUGIN_HANDLED }
new name[32] get_user_name( id, name, charsmax( name ) )
client_print( 0, print_chat, "Player ^"%s^" was revived. Be careful!", name )
g_player_revive[id] = true ExecuteHamB(Ham_CS_RoundRespawn, id);
return PLUGIN_HANDLED } Вам осталось только сделать 2 проверки: Выбрал ли игрок команду и скин (если нет - респавн не выполнять) и на то какой мод сейчас запущен (cstrike, czero и если ни один их них то осианавливаем работу плагина).
Сообщение отредактировал predator - Вторник, 22.12.2009, 18:55:26 |
|
| |
a_aqua | Дата: Вторник, 22.12.2009, 18:37:32 | Сообщение # 32 |
Лейтенант
Группа: Пользователи
Сообщений: 64
Статус: Не в сети
| Quote /* Code regenerated by UFPS AMX(X) Designer */ Можно подробнее? о.0 Извините за оффтоп.
|
|
| |
predator | Дата: Вторник, 22.12.2009, 18:56:45 | Сообщение # 33 |
Лейтенант
Группа: Пользователи
Сообщений: 54
Статус: Не в сети
| Quote (a_aqua) Можно подробнее? о.0 Извините за оффтоп. Спасибо, забыл убрать. Просто относится только к оформлению.
|
|
| |
FreeKILL | Дата: Вторник, 22.12.2009, 21:24:24 | Сообщение # 34 |
Подполковник
Группа: Пользователи
Сообщений: 143
Статус: Не в сети
| predator, плагин нерабочий. поясняю: исходя из твоего плагина как токо человек стал живым ему дается значение false и он автоматом может делать ревайв. но огромное спс! ты мне многое разъяснил))!
|
|
| |
PomanoB | Дата: Вторник, 22.12.2009, 22:03:21 | Сообщение # 35 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Надо заменить Code RegisterHam( Ham_Spawn, "player", "event_player_spawn", 1 ) на Code RegisterHam( Ham_CS_RoundRespawn, "player", "event_player_spawn", 1 ) И Code ExecuteHamB(Ham_CS_RoundRespawn, id); на ExecuteHam(Ham_CS_RoundRespawn, id); И Code if( is_user_alive( id ) ) { client_print( id, print_chat, "* This command can only use a dead player." ) return PLUGIN_HANDLED } На Code if( is_user_alive( id ) || !(1 <= get_user_team(id) <= 2)) // Если игрок живой либо не состоит в командах Т или КТ { client_print( id, print_chat, "* This command can only use a dead player." ) return PLUGIN_HANDLED }
http://romanov4400.mybrute.com
|
|
| |
predator | Дата: Среда, 23.12.2009, 12:53:41 | Сообщение # 36 |
Лейтенант
Группа: Пользователи
Сообщений: 54
Статус: Не в сети
| Так пойдет? amx_revive - Количество разрешенных ре-респавнов игрока за раунд. Code #include <amxmodx> #include <amxmisc> #include <hamsandwich>
#define PLUGIN_NAME "Admin Revive" #define PLUGIN_VERSION "0.01" #define PLUGIN_AUTHOR "~Free*.*KILL~"
#define CS_TEAM_T 1 #define CS_TEAM_CT 2
new g_revive_limit new pcv_amx_revive new g_player_revive[33]
public plugin_init() { register_plugin( PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR )
if( module_exists( "cstrike" ) ) { register_event( "HLTV", "event_new_round", "a", "1=0", "2=0" ) register_clcmd( "say /revive", "cmd_say_revive", ADMIN_ALL, "" ) pcv_amx_revive = register_cvar( "amx_revive", "1" ) }
else pause( "ad", PLUGIN_NAME ) }
public client_putinserver( id ) g_player_revive[id] = 0
public event_new_round( ) { g_revive_limit = get_pcvar_num( pcv_amx_revive )
if( g_revive_limit ) g_player_revive = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } }
public cmd_say_revive( id, level, cid ) { if ( !g_revive_limit ) return PLUGIN_CONTINUE
if ( !cmd_access( id, level, cid, 0 ) ) return PLUGIN_HANDLED
new team = get_user_team( id )
if ( team != CS_TEAM_T && team != CS_TEAM_CT ) { client_print( id, print_chat, "* This command can be used only after the selection team." ) return PLUGIN_HANDLED }
if( is_user_alive( id ) ) { client_print( id, print_chat, "* This command can only use a dead player." ) return PLUGIN_HANDLED }
if( ++g_player_revive[id] > g_revive_limit ) { client_print( id, print_chat, "* You may not use this command more than %d times per round.", g_revive_limit ) return PLUGIN_HANDLED }
new name[32] get_user_name( id, name, charsmax( name ) )
client_print( 0, print_chat, "Player ^"%s^" was revived. Be careful!", name )
ExecuteHam( Ham_CS_RoundRespawn, id )
return PLUGIN_HANDLED }
/* Pawn syntax is normalized */
Сообщение отредактировал predator - Среда, 23.12.2009, 16:20:26 |
|
| |
FreeKILL | Дата: Среда, 23.12.2009, 21:25:34 | Сообщение # 37 |
Подполковник
Группа: Пользователи
Сообщений: 143
Статус: Не в сети
| predator, спасибо огромное! Quote (FreeKILL) ExecuteHamB(Ham_CS_RoundRespawn, id); на ExecuteHam(Ham_CS_RoundRespawn, id); что меняется? я менял туда сюда, искал разницу и не нашел.Добавлено (23.12.2009, 21:25:34) --------------------------------------------- плагин работает, но я непонимаю почему) Code g_revive_limit = get_pcvar_num( pcv_amx_revive )
if( g_revive_limit ) g_player_revive = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } я это понимаю так: если квар amx_revive равен тому что он равен( в данном случае "1") то g_player_revive все значения будут равны нулю Code if( ++g_player_revive[id] > g_revive_limit ) { client_print( id, print_chat, "* You may not use this command more than %d times per round.", g_revive_limit ) return PLUGIN_HANDLED } если g_player_revive будет больше чем лимит(который устанавливается в amx_revive, и в данном случае равен "1") то пишется сообщение и плагин закрывает функцию возрождения. но тут непонятно как g_player_revive может быть больше лимита если после использования возрождения к g_player_revive неприбавляется ничего Code new name[32] get_user_name( id, name, charsmax( name ) )
client_print( 0, print_chat, "Player ^"%s^" was revived. Be careful!", name )
ExecuteHam( Ham_CS_RoundRespawn, id )
return PLUGIN_HANDLED вот он возродил человека и все, ничего не изменилось, но почему же тогда плагин работает?) и когда возраждаеш себя больше чем установлен лимит, пишется что нельзя возрадится?
|
|
| |
predator | Дата: Четверг, 24.12.2009, 13:16:38 | Сообщение # 38 |
Лейтенант
Группа: Пользователи
Сообщений: 54
Статус: Не в сети
| if( ++g_player_revive[id] > g_revive_limit ) - здесь ++ инкрементирует g_player_revive а затем полученное значение сравнивается с лимитом.
|
|
| |
FreeKILL | Дата: Четверг, 24.12.2009, 15:42:51 | Сообщение # 39 |
Подполковник
Группа: Пользователи
Сообщений: 143
Статус: Не в сети
| вроде понял, то есть чтобы возрадится игроку нужно пройти весь цикл функций, и при этом каждый раз перед тем как он возродится он проходит через функцию Code if( ++g_player_revive[id] > g_revive_limit ) значит перед тем как он возрождается его g_player_revive увеличивается на 1, а значит как только будет привышен лимит сразу будет прекращен доступ к возрождению. я правильно все понял? получается функция if( ++g_player_revive[id] ) увеличивает g_player_revive на единицу и так и оставляет значение g_player_revive увеличеное на 1.
|
|
| |
| AMX Mod X Russian Community © 2006-2024 | |
|
| |