Вопрос такой: можно ли сделать меню таким образом, чтобы было на одной странице 9 пунктов ножей и клавиша "0 - выход"?
Уже перепробовал все возможные варианты.
Спасибо заранее.
- Код: Выделить всё
//#define DEATHRUN /* Раскомментируйте, если используете Дезран-модификацию */
#include < amxmodx >
#include < hamsandwich >
#include < fakemeta_util >
#include < engine >
#if defined ZOMBIEPLAGUE
#include < zombieplague >
#endif
#define NAME "Knife Mode"
#define VERSION "2.0"
#define AUTHOR "Exodus"
#define ACCESS_V ADMIN_LEVEL_H /* Флаг t для Вип-Ножа */
#define ACCESS_A ADMIN_LEVEL_E /* Флаг d Для Админ-Ножа */
#define COMMAND "radio3" /* Команда, вызывающая меню ножей */
#define COMMAND1 "knifemenu" /* Команда, вызывающая меню ножей */
#define COMMAND2 "say /knifemenu" /* Команда, вызывающая меню ножей */
#define COMMAND3 "say /knife" /* Команда, вызывающая меню ножей */
#define COMMAND4 "say /knifes" /* Команда, вызывающая меню ножей */
#define COMMAND5 "say knife" /* Команда, вызывающая меню ножей */
#define COMMAND6 "say knifes" /* Команда, вызывающая меню ножей */
#define SPEED_NORMAL 250.0 /* Нормальная скорость на сервере */
#define GRAVITY_NORMAL 0.9 /* Нормальная гравитация на сервере */
#define SPEED_POWER 340.0 /* Повышенная скорость от ножей */
#define GRAVITY_POWER 0.6 /* Пониженная гравитация от ножей */
#define DAMAGE_POWER 2.0 /* Повышенный множитель урона от ножей */
#define REGEN_TIME 25.0 /* Интервал времени, через которое будет прибавляться здоровье от ножей */
#define REGEN_AMOUNT 10 /* Колличество здоровья, которое будет прибавляться от ножей */
#define REGEN_MAXIMAL 200 /* Максимальное колличество здоровья на сервере */
#define POISON_TREATMENT 20.0 /* Время в секундах, за которое игрок будет вылечен от "Яда" */
#define POISON_TIME 5.0 /* Интервал времени, через которое будет работать навык "Яд" */
#define POISON_AMOUNT 15 /* Колличество здоровья, которое будет отниматься при отравлении */
#define POISON_MINIMAL 5 /* Минимальное колличество здоровья, ниже которого навык отравления не будет работать */
#define TIME_FREEZE 3.0 /* Время, через которое будет разморожен игрок при "Заморозке" */
#define TIME_PROTECT 5.0 /* Время, через которое будет окончена защита при "Заморозке" */
static
Knife_Menu,
Regen_Sprite,
Poison_Sprite,
Frost_Sprite,
Frost_Gibs,
Choosen_Knife[ 33 ],
Jumps_Amount[ 33 ],
Jumps_Done[ 33 ],
bool: Has_Jumps[ 33 ],
bool: Has_Damage[ 33 ],
bool: Has_Poison[ 33 ],
bool: Has_Freeze[ 33 ]
#if defined DEATHRUN
static
Duel_Mode[ 32 ]
#endif
static const Knife_Models[ 2 ][ 10 ][] = {
{
"" ,
"models/just_guns/knife/v_steels.mdl", //Скорость
"models/just_guns/knife/v_fantom_1.mdl", //Гравитация
"models/just_guns/knife/v_strong.mdl", //Вархаммер
"models/just_guns/knife/v_dagger.mdl", //Двойной-прыжок
"models/just_guns/knife/v_kujang.mdl", //Регенерация
"models/just_guns/knife/v_splash.mdl", //Отравление
"models/just_guns/knife/v_shiner.mdl", //Заморозка
"models/just_guns/knife/v_muerto.mdl", //Вип-нож
"models/just_guns/knife/v_katana.mdl" //Админ-нож
},
{
"" ,
"models/just_guns/knife/p_steels.mdl",
"models/just_guns/knife/p_fantom_1.mdl",
"models/just_guns/knife/p_strong.mdl",
"models/just_guns/knife/p_dagger.mdl",
"models/just_guns/knife/p_kujang.mdl",
"models/just_guns/knife/p_splash.mdl",
"models/just_guns/knife/p_shiner.mdl",
"models/just_guns/knife/p_muerto.mdl",
"models/just_guns/knife/p_katana.mdl"
}
}
static const Sound_List[][] = {
"dr_just/knife/Regen.wav",
"dr_just/knife/Poison.wav",
"dr_just/knife/Freeze.wav",
"dr_just/knife/Unfreeze.wav"
}
public plugin_init() {
register_plugin( NAME, VERSION, AUTHOR )
Knife_Menu = menu_create( "Менеджер ножей:", "Knife_Handle" )
register_clcmd( COMMAND, "Knife_Function", ADMIN_ALL, "G_Knife_Menu" )
register_clcmd( COMMAND1, "Knife_Function", ADMIN_ALL, "G_Knife_Menu" )
register_clcmd( COMMAND2, "Knife_Function", ADMIN_ALL, "G_Knife_Menu" )
register_clcmd( COMMAND3, "Knife_Function", ADMIN_ALL, "G_Knife_Menu" )
register_clcmd( COMMAND4, "Knife_Function", ADMIN_ALL, "G_Knife_Menu" )
register_clcmd( COMMAND5, "Knife_Function", ADMIN_ALL, "G_Knife_Menu" )
register_clcmd( COMMAND6, "Knife_Function", ADMIN_ALL, "G_Knife_Menu" )
Build_Menu()
register_event( "CurWeapon", "Knife_Curweapon", "be", "1=1" )
register_event( "HLTV", "Knife_Round", "a", "1=0", "2=0" )
RegisterHam( Ham_TakeDamage, "player", "Knife_Damage", 0 )
RegisterHam( Ham_Killed, "player", "Knife_Killed", 0 )
RegisterHam( Ham_Item_Deploy, "weapon_knife", "Knife_Deploy", 1 )
RegisterHam( Ham_Player_Jump, "player", "Knife_Jumps" )
RegisterHam( Ham_Player_PostThink, "player", "Knife_Ability" )
}
public plugin_precache() {
for( new a = 1; a < 10; a++ ) {
precache_model( Knife_Models[ 0 ][ a ] )
precache_model( Knife_Models[ 1 ][ a ] )
}
for( new b; b < sizeof Sound_List; b++ ) {
precache_sound( Sound_List[ b ] )
}
Regen_Sprite = precache_model( "sprites/just_guns/knife/Regen.spr" )
Poison_Sprite = precache_model( "sprites/just_guns/knife/Poison.spr" )
Frost_Sprite = precache_model( "sprites/just_guns/knife/Frost.spr" )
Frost_Gibs = precache_model( "models/glassgibs.mdl" )
}
public client_authorized(iPlayer)
{
Choosen_Knife[ iPlayer ] = 1
LoadData(iPlayer)
}
public client_disconnect( iPlayer ) {
Has_Poison[ iPlayer ] = false
Has_Freeze[ iPlayer ] = false
}
public Build_Menu() {
menu_additem( Knife_Menu, "\wSteels \r(\yСкорость\r)", "1" )
menu_additem( Knife_Menu, "\wFantom \r(\yГравитация\r)", "2" )
menu_additem( Knife_Menu, "\wWarhammer \r(\yДвойной Урон\r)", "3" )
menu_additem( Knife_Menu, "\wDagger \r(\yДвойной Прыжок\r)", "4" )
menu_additem( Knife_Menu, "\wKujang \r(\yРегенерация\r)", "5" )
menu_additem( Knife_Menu, "\wSplash \r(\yОтравление\r)", "6" )
menu_additem( Knife_Menu, "\wShiner \r(\yЗаморозка\r)", "7" )
menu_additem( Knife_Menu, "\wMuerto | Вип \r(\yСкорость\d|\yУрон\d|\yПрыжки\d|\yЯд\r)", "8" )
menu_additem( Knife_Menu, "\wSpit | Админ \r(\yВсе Способности\r)", "9" )
menu_setprop( Knife_Menu, MPROP_BACKNAME, "Назад" )
menu_setprop( Knife_Menu, MPROP_NEXTNAME, "Далее" )
menu_setprop( Knife_Menu, MPROP_EXITNAME, "Выход" )
}
public Knife_Function( iPlayer ) {
#if defined DEATHRUN
get_cvar_string( "deathrun_mode", Duel_Mode, 31 )
#endif
if( !is_user_alive( iPlayer ) ) {
Color_Print( iPlayer, "!g[Менеджер Ножей] !yНедоступны для мертвых!" )
return
}
#if defined ZOMBIEPLAGUE
else if( zp_get_user_zombie( iPlayer ) || zp_get_user_nemesis( iPlayer ) || zp_get_user_survivor( iPlayer ) ) {
Color_Print( iPlayer, "!g[Менеджер Ножей] !yНедоступны для выжившего!" )
return
}
#endif
#if defined DEATHRUN
else if( ( equal( Duel_Mode, "DUEL" ) ) ) {
Color_Print( iPlayer, "!g[Менеджер Ножей] !yНедоступны в дуэли!" )
return
}
#endif
else {
menu_display( iPlayer, Knife_Menu, 0 )
}
}
public Knife_Handle( iPlayer, menu, item ) {
if( item < 0 ) {
return PLUGIN_CONTINUE
}
new cmd[ 2 ]
new access, callback
menu_item_getinfo( menu, item, access, cmd,2, _, _, callback )
new choice = str_to_num( cmd )
switch ( choice ) {
case 1: {
Choosen_Knife[ iPlayer ] = 1
Color_Print( iPlayer, "!g[Менеджер Ножей] !yВаша способность: !teamСкорость" )
Play_Anim( iPlayer )
effect_screen(iPlayer)
}
case 2: {
Choosen_Knife[ iPlayer ] = 2
Color_Print( iPlayer, "!g[Менеджер Ножей] !yВаша способность: !teamГравитация" )
Play_Anim( iPlayer )
effect_screen(iPlayer)
}
case 3: {
Choosen_Knife[ iPlayer ] = 3
Color_Print( iPlayer, "!g[Менеджер Ножей] !yВаша способность: !teamУрон" )
Play_Anim( iPlayer )
effect_screen(iPlayer)
}
case 4: {
Choosen_Knife[ iPlayer ] = 4
Color_Print( iPlayer, "!g[Менеджер Ножей] !yВаша способность: !teamДвойной Прыжок" )
Play_Anim( iPlayer )
effect_screen(iPlayer)
}
case 5: {
Choosen_Knife[ iPlayer ] = 5
Color_Print( iPlayer, "!g[Менеджер Ножей] !yВаша способность: !teamРегенерация" )
Play_Anim( iPlayer )
effect_screen(iPlayer)
}
case 6: {
Choosen_Knife[ iPlayer ] = 6
Color_Print( iPlayer, "!g[Менеджер Ножей] !yВаша способность: !teamОтравление" )
Play_Anim( iPlayer )
effect_screen(iPlayer)
}
case 7: {
Choosen_Knife[ iPlayer ] = 7
Color_Print( iPlayer, "!g[Менеджер Ножей] !yВаша способность: !teamЗаморозка" )
Play_Anim( iPlayer )
effect_screen(iPlayer)
}
case 8: {
if( get_user_flags( iPlayer ) & ACCESS_V ) {
Choosen_Knife[ iPlayer ] = 8
Color_Print( iPlayer, "!g[Менеджер Ножей] !yВаши способности: !teamСкорость, Урон, Прыжки, Яд" )
Play_Anim( iPlayer )
effect_screen(iPlayer)
}
else {
Knife_Function( iPlayer )
Color_Print( iPlayer, "!g[Менеджер Ножей] !yСперва купи привелегию !team'V.I.P'!" )
return PLUGIN_HANDLED
}
}
case 9: {
if( get_user_flags( iPlayer ) & ACCESS_A ) {
Choosen_Knife[ iPlayer ] = 9
Color_Print( iPlayer, "!g[Менеджер Ножей] !yВаши способности: !teamВсе Возможные" )
Play_Anim( iPlayer )
effect_screen(iPlayer)
}
else {
Knife_Function( iPlayer )
Color_Print( iPlayer, "!g[Менеджер Ножей] !yСперва купи привелегию !team'Админ'!" )
return PLUGIN_HANDLED
}
}
default: Choosen_Knife[ iPlayer ] = 2
}
SaveData(iPlayer)
return PLUGIN_HANDLED
}
public Knife_Round() {
new iPlayers[ 32 ], iCount, iPlayer
get_players( iPlayers, iCount, "ch" )
for( new i = 0; i < iCount; i++ ) {
iPlayer = iPlayers[ i ]
if( Has_Poison[ iPlayer ] ) {
Has_Poison[ iPlayer ] = false
}
if( Has_Freeze[ iPlayer ] ) {
Has_Freeze[ iPlayer ] = false
}
}
}
public Knife_Curweapon( iPlayer ) {
if( !is_user_alive( iPlayer ) )
return
#if defined ZOMBIEPLAGUE
if( zp_get_user_zombie( iPlayer ) || zp_get_user_nemesis( iPlayer ) || zp_get_user_survivor( iPlayer ) ) {
return
}
#endif
#if defined DEATHRUN
get_cvar_string( "deathrun_mode", Duel_Mode, 31 )
if( ( equal( Duel_Mode, "DUEL" ) ) ) {
return
}
#endif
if( get_user_weapon( iPlayer ) != CSW_KNIFE ) {
Has_Damage[ iPlayer ] = false
Has_Jumps[ iPlayer ] = false
fm_set_user_gravity( iPlayer, GRAVITY_NORMAL )
fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
return
}
switch( Choosen_Knife[ iPlayer ] ) {
case 1: {
Has_Damage[ iPlayer ] = false
Has_Jumps[ iPlayer ] = false
fm_set_user_gravity( iPlayer, GRAVITY_NORMAL )
fm_set_user_maxspeed( iPlayer, SPEED_POWER )
}
case 2: {
Has_Damage[ iPlayer ] = true
Has_Jumps[ iPlayer ] = false
fm_set_user_gravity( iPlayer, GRAVITY_POWER )
fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
}
case 3: {
Has_Damage[ iPlayer ] = true
Has_Jumps[ iPlayer ] = false
fm_set_user_gravity( iPlayer, GRAVITY_NORMAL )
fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
}
case 4: {
Has_Damage[ iPlayer ] = false
Has_Jumps[ iPlayer ] = true
fm_set_user_gravity( iPlayer, GRAVITY_NORMAL )
fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
}
case 5: {
Has_Damage[ iPlayer ] = false
Has_Jumps[ iPlayer ] = false
fm_set_user_gravity( iPlayer, GRAVITY_NORMAL )
fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
}
case 6: {
Has_Damage[ iPlayer ] = true
Has_Jumps[ iPlayer ] = false
fm_set_user_gravity( iPlayer, GRAVITY_NORMAL )
fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
}
case 7: {
Has_Damage[ iPlayer ] = true
Has_Jumps[ iPlayer ] = false
fm_set_user_gravity( iPlayer, GRAVITY_NORMAL )
fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
}
case 8: {
Has_Damage[ iPlayer ] = true
Has_Jumps[ iPlayer ] = true
fm_set_user_gravity( iPlayer, GRAVITY_NORMAL )
fm_set_user_maxspeed( iPlayer, SPEED_POWER )
}
case 9: {
Has_Damage[ iPlayer ] = true
Has_Jumps[ iPlayer ] = true
fm_set_user_gravity( iPlayer, GRAVITY_POWER )
fm_set_user_maxspeed( iPlayer, SPEED_POWER )
}
}
}
public Knife_Deploy( iEnt ) {
if( pev_valid( iEnt ) != 2 )
return HAM_HANDLED
new iPlayer = get_pdata_cbase( iEnt, 41, 4 )
if( !is_user_alive( iPlayer ) )
return HAM_IGNORED
#if defined ZOMBIEPLAGUE
if( zp_get_user_zombie( iPlayer ) || zp_get_user_nemesis( iPlayer ) || zp_get_user_survivor( iPlayer ) ) {
return HAM_IGNORED
}
#endif
#if defined DEATHRUN
get_cvar_string( "deathrun_mode", Duel_Mode, 31 )
if( ( equal( Duel_Mode, "DUEL" ) ) ) {
return HAM_IGNORED
}
#endif
switch( Choosen_Knife[ iPlayer ] ) {
case 1: {
Has_Damage[ iPlayer ] = false
Has_Jumps[ iPlayer ] = false
fm_set_user_gravity( iPlayer, GRAVITY_NORMAL )
fm_set_user_maxspeed( iPlayer, SPEED_POWER )
}
case 2: {
Has_Damage[ iPlayer ] = true
Has_Jumps[ iPlayer ] = false
fm_set_user_gravity( iPlayer, GRAVITY_POWER )
fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
}
case 3: {
Has_Damage[ iPlayer ] = true
Has_Jumps[ iPlayer ] = false
fm_set_user_gravity( iPlayer, GRAVITY_NORMAL )
fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
}
case 4: {
Has_Damage[ iPlayer ] = false
Has_Jumps[ iPlayer ] = true
fm_set_user_gravity( iPlayer, GRAVITY_NORMAL )
fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
}
case 5: {
Has_Damage[ iPlayer ] = false
Has_Jumps[ iPlayer ] = false
fm_set_user_gravity( iPlayer, GRAVITY_NORMAL )
fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
}
case 6: {
Has_Damage[ iPlayer ] = true
Has_Jumps[ iPlayer ] = false
fm_set_user_gravity( iPlayer, GRAVITY_NORMAL )
fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
}
case 7: {
Has_Damage[ iPlayer ] = true
Has_Jumps[ iPlayer ] = false
fm_set_user_gravity( iPlayer, GRAVITY_NORMAL )
fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
}
case 8: {
Has_Damage[ iPlayer ] = true
Has_Jumps[ iPlayer ] = true
fm_set_user_gravity( iPlayer, GRAVITY_NORMAL )
fm_set_user_maxspeed( iPlayer, SPEED_POWER )
}
case 9: {
Has_Damage[ iPlayer ] = true
Has_Jumps[ iPlayer ] = true
fm_set_user_gravity( iPlayer, GRAVITY_POWER )
fm_set_user_maxspeed( iPlayer, SPEED_POWER )
}
}
set_pev( iPlayer, pev_viewmodel2, Knife_Models[ 0 ][ Choosen_Knife[ iPlayer ] ] )
set_pev( iPlayer, pev_weaponmodel2, Knife_Models[ 1 ][ Choosen_Knife[ iPlayer ] ] )
return HAM_IGNORED
}
public Knife_Damage( victim, inflictor, attacker, Float: damage, bits ) {
if( !is_user_connected( attacker ) || get_user_weapon( attacker ) != CSW_KNIFE || get_user_team( victim ) == get_user_team( attacker ) || !is_user_alive( attacker ) )
return HAM_IGNORED
#if defined ZOMBIEPLAGUE
if( zp_get_user_zombie( attacker ) || zp_get_user_nemesis( attacker ) || zp_get_user_survivor( attacker ) ) {
return HAM_IGNORED
}
#endif
#if defined DEATHRUN
get_cvar_string( "deathrun_mode", Duel_Mode, 31 )
if( ( equal( Duel_Mode, "DUEL" ) ) ) {
return HAM_IGNORED
}
#endif
if( Choosen_Knife[ attacker ] == 3 ) {
SetHamParamFloat( 4, damage * DAMAGE_POWER )
}
if( Choosen_Knife[ attacker ] == 6 ) {
if( !Has_Poison[ victim ] ) {
Func_Poison( victim )
}
}
if( Choosen_Knife[ attacker ] == 7 ) {
if( !Has_Freeze[ victim ] ) {
Func_Freeze( victim )
}
}
if( Choosen_Knife[ attacker ] == 8 ) {
SetHamParamFloat( 4, damage * DAMAGE_POWER )
if( !Has_Poison[ victim ] ) {
Func_Poison( victim )
}
}
if( Choosen_Knife[ attacker ] == 9 ) {
SetHamParamFloat( 4, damage * DAMAGE_POWER )
if( !Has_Poison[ victim ] ) {
Func_Poison( victim )
}
if( !Has_Freeze[ victim ] ) {
Func_Freeze( victim )
}
}
return HAM_IGNORED
}
public Func_Poison( victim ) {
Has_Poison[ victim ] = true
Color_Print( victim, "!g[Здоровье] !yВас отравили на !team20 секунд!" )
set_task( POISON_TREATMENT, "Treatment", 7513 + victim )
}
public Func_Freeze( victim ) {
Screen_Fade( victim, 0, 0, 255, 90 )
set_rendering( victim, kRenderFxGlowShell, 0, 100, 200, kRenderNormal, 30 )
if( ~pev( victim, pev_flags ) & FL_FROZEN ) set_pev( victim, pev_flags, pev( victim, pev_flags ) | FL_FROZEN )
new Float: Origin[ 3 ]
pev( victim, pev_origin, Origin )
Origin[ 2 ] -= 35.0
Frost_Effect( Origin )
emit_sound( victim, CHAN_BODY, Sound_List[ 2 ], VOL_NORM, ATTN_NORM, 0, PITCH_NORM )
Has_Freeze[ victim ] = true
Color_Print( victim, "!g[Информация] !yВы заморожены на !team3 секунды!" )
set_task( TIME_FREEZE, "Unfreeze", 7512 + victim )
set_task( TIME_PROTECT, "Protect", 7511 + victim )
}
public Treatment( taskid ) {
new id = taskid - 7513
if( !is_user_alive( id ) ) {
return
}
Has_Poison[ id ] = false
Color_Print( id, "!g[Здоровье] !yДействие !teamяда !yуспешно завершено!" )
}
public Unfreeze( taskid ) {
new id = taskid - 7512
if( !is_user_alive( id ) ) {
return
}
set_rendering( id )
if( pev( id, pev_flags ) & FL_FROZEN ) set_pev( id, pev_flags, pev( id, pev_flags ) & ~FL_FROZEN )
emit_sound( id, CHAN_BODY, Sound_List[ 3 ], VOL_NORM, ATTN_NORM, 0, PITCH_NORM )
Color_Print( id, "!g[Информация] !yВы !teamразморожены !yи снова можете !teamдвигаться!" )
static iOrigin[ 3 ]
get_user_origin( id, iOrigin )
message_begin( MSG_PVS, SVC_TEMPENTITY, iOrigin )
write_byte( TE_BREAKMODEL )
write_coord( iOrigin[ 0 ] )
write_coord( iOrigin[ 1 ] )
write_coord( iOrigin[ 2 ] + 24 )
write_coord( 16 )
write_coord( 16 )
write_coord( 16 )
write_coord( random_num( -50, 50 ) )
write_coord( random_num( -50, 50 ) )
write_coord( 25 )
write_byte( 10 )
write_short( Frost_Gibs )
write_byte( 10 )
write_byte( 25 )
write_byte( 0x01 )
message_end()
}
public Protect( taskid ) {
new id = taskid - 7511
if( !is_user_alive( id ) ) {
return
}
Has_Freeze[ id ] = false
}
public Knife_Killed( victim, attacker, shouldgib ) {
if( Has_Freeze[ victim ] ) {
set_rendering( victim )
if( pev( victim, pev_flags ) & FL_FROZEN ) set_pev( victim, pev_flags, pev( victim, pev_flags ) & ~FL_FROZEN )
Has_Freeze[ victim ] = false
}
if( Has_Poison[ victim ] ) {
Has_Poison[ victim ] = false
}
}
public Knife_Jumps( iPlayer ) {
if( Has_Jumps[ iPlayer ] ) {
#if defined ZOMBIEPLAGUE
if( zp_get_user_zombie( iPlayer ) || zp_get_user_nemesis( iPlayer ) || zp_get_user_survivor( iPlayer ) ) {
return PLUGIN_CONTINUE
}
#endif
#if defined DEATHRUN
get_cvar_string( "deathrun_mode", Duel_Mode, 31 )
if( ( equal( Duel_Mode, "DUEL" ) ) ) {
return PLUGIN_CONTINUE
}
#endif
new szButton = pev( iPlayer, pev_button )
new szOldButton = pev( iPlayer, pev_oldbuttons )
if( ( szButton & IN_JUMP ) && !( pev( iPlayer, pev_flags ) & FL_ONGROUND ) && !( szOldButton & IN_JUMP ) ) {
if( Choosen_Knife[ iPlayer ] == 4 || Choosen_Knife[ iPlayer ] == 8 || Choosen_Knife[ iPlayer ] == 9 ) {
if( Jumps_Amount[ iPlayer ] < 1 ) {
Jumps_Done[ iPlayer ] = true
Jumps_Amount[ iPlayer ]++
Jump_Think_Post( iPlayer )
return PLUGIN_CONTINUE
}
}
}
if( ( szButton & IN_JUMP ) && ( pev( iPlayer, pev_flags) & FL_ONGROUND ) ) {
Jumps_Amount[ iPlayer ] = 0
}
}
return PLUGIN_CONTINUE
}
public Jump_Think_Post( iPlayer ) {
if( Has_Jumps[ iPlayer ] ) {
if( !is_user_alive( iPlayer ) ) {
return PLUGIN_CONTINUE
}
#if defined ZOMBIEPLAGUE
if( zp_get_user_zombie( iPlayer ) || zp_get_user_nemesis( iPlayer ) || zp_get_user_survivor( iPlayer ) ) {
return PLUGIN_CONTINUE
}
#endif
#if defined DEATHRUN
get_cvar_string( "deathrun_mode", Duel_Mode, 31 )
if( ( equal( Duel_Mode, "DUEL" ) ) ) {
return PLUGIN_CONTINUE
}
#endif
if( Jumps_Done[ iPlayer ] ) {
new Float:szVelocity[ 3 ]
pev( iPlayer, pev_velocity, szVelocity )
szVelocity[ 2 ] = random_float( 295.0, 305.0 )
set_pev( iPlayer, pev_velocity, szVelocity )
Jumps_Done[ iPlayer ] = false
return PLUGIN_CONTINUE
}
}
return PLUGIN_CONTINUE
}
public Knife_Ability( iPlayer ) {
if( get_user_weapon( iPlayer ) != CSW_KNIFE ) {
return
}
#if defined ZOMBIEPLAGUE
if( zp_get_user_zombie( iPlayer ) || zp_get_user_nemesis( iPlayer ) || zp_get_user_survivor( iPlayer ) ) {
return
}
#endif
#if defined DEATHRUN
get_cvar_string( "deathrun_mode", Duel_Mode, 31 )
if( ( equal( Duel_Mode, "DUEL" ) ) ) {
return
}
#endif
new Float: gt = get_gametime()
static Float: lim[ 33 ]
if( lim[ iPlayer ] < gt ){
lim[ iPlayer ]= gt + REGEN_TIME
if( Choosen_Knife[ iPlayer ] == 5 || Choosen_Knife[ iPlayer ] == 9 ) {
if( is_user_alive( iPlayer ) ) {
if( get_user_health( iPlayer ) < REGEN_MAXIMAL ) {
fm_set_user_health( iPlayer, get_user_health( iPlayer ) + min( ( REGEN_MAXIMAL - get_user_health( iPlayer ) ), REGEN_AMOUNT ) )
client_cmd( iPlayer, "spk %s", Sound_List[ 0 ] )
Color_Print( iPlayer, "!g[Здоровье] !yВы восстановили !team%d !yздоровья", REGEN_AMOUNT )
Screen_Fade( iPlayer, 0, 255, 20, 50 )
new Float: Origin[ 3 ]
pev( iPlayer, pev_origin, Origin )
Origin[ 2 ] -= 35.0
Regen_Effect( Origin )
}
else {
return
}
}
}
}
new Float: gt2 = get_gametime()
static Float: lim2[ 33 ]
if( lim2[ iPlayer ] < gt2 ){
lim2[ iPlayer ]= gt2 + POISON_TIME
if( Has_Poison[ iPlayer ] ) {
if( is_user_alive( iPlayer ) ) {
if( get_user_health( iPlayer ) > POISON_MINIMAL ) {
fm_set_user_health( iPlayer, get_user_health( iPlayer ) - min( ( get_user_health( iPlayer ) - POISON_MINIMAL ), POISON_AMOUNT ) )
client_cmd( iPlayer, "spk %s", Sound_List[ 1 ] )
Color_Print( iPlayer, "!g[Здоровье] !teamВы отравлены и получаете %d урона от Яда.", POISON_AMOUNT )
Screen_Fade( iPlayer, 255, 70, 20, 50 )
new Float: Origin[ 3 ]
pev( iPlayer, pev_origin, Origin )
Origin[ 2 ] -= 35.0
Poison_Effect( Origin )
}
else {
return
}
}
}
}
}
stock effect_screen(iPlayer)
{
{
new red,green,blue;
new color = random_num(1,7)
switch (color)
{
case 1: //green
{
red = random_num (220, 230)
green = random_num (250, 255)
blue = 0
}
case 2: //orange
{
red = random_num (250, 255)
green = random_num (100, 189)
blue = 0
}
case 3: //blue
{
red = 0
green = random_num (140, 150)
blue = random_num (250, 255)
}
case 4: //yellow
{
red = 0
green = random_num (250, 255)
blue = random_num (250, 255)
}
case 5: //white
{
red = random_num (250, 255)
green = random_num (250, 255)
blue = random_num (250, 255)
}
case 6: //green
{
red = random_num (22, 50)
green = random_num (230, 242)
blue = random_num (120, 130)
}
case 7: //pink
{
red = random_num (220, 255)
green = 0
blue = random_num (220, 255)
}
}
message_begin (MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, iPlayer )
write_short ( 2<<10 ) // Duration
write_short ( 2<<11 ) // Hold Time
write_short ( 0x0000 ) // Fade type
write_byte ( red ) // Red amount
write_byte ( green ) // Green amount
write_byte ( blue ) // Blue amount
write_byte ( random_num ( 50, 100 ) ) // Alpha
message_end ( )
}
}
stock Play_Anim( iPlayer ) {
new iEnt = get_pdata_cbase( iPlayer, 373, 5 )
if( pev_valid( iEnt ) && get_user_weapon( iPlayer ) == CSW_KNIFE ) {
ExecuteHamB( Ham_Item_Deploy, iEnt )
}
}
stock Regen_Effect( Float: origin[ 3 ] ) {
message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
write_byte( TE_SPRITE )
engfunc( EngFunc_WriteCoord, origin[ 0 ] )
engfunc( EngFunc_WriteCoord, origin[ 1 ] )
engfunc( EngFunc_WriteCoord, origin[ 2 ] + 45 )
write_short( Regen_Sprite )
write_byte( 15 )
write_byte( 255 )
message_end()
}
stock Poison_Effect( Float: origin[ 3 ] ) {
message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
write_byte( TE_SPRITE )
engfunc( EngFunc_WriteCoord, origin[ 0 ] )
engfunc( EngFunc_WriteCoord, origin[ 1 ] )
engfunc( EngFunc_WriteCoord, origin[ 2 ] + 45 )
write_short( Poison_Sprite )
write_byte( 15 )
write_byte( 255 )
message_end()
}
SaveData(iPlayer)
{
new authid[32]
get_user_authid(iPlayer, authid, 31)
new vaultkey[64]
new vaultdata[64]
format(vaultkey, 63, "KMOD_%s", authid)
format(vaultdata, 63, "%d", Choosen_Knife[iPlayer])
set_vaultdata(vaultkey, vaultdata)
}
LoadData(iPlayer)
{
new authid[32]
get_user_authid(iPlayer,authid,31)
new vaultkey[64], vaultdata[64]
format(vaultkey, 63, "KMOD_%s", authid)
get_vaultdata(vaultkey, vaultdata, 63)
Choosen_Knife[iPlayer] = str_to_num(vaultdata)
}
stock Frost_Effect( Float: origin[ 3 ] ) {
message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
write_byte( TE_SPRITETRAIL )
engfunc( EngFunc_WriteCoord, origin[ 0 ] )
engfunc( EngFunc_WriteCoord, origin[ 1 ] )
engfunc( EngFunc_WriteCoord, origin[ 2 ] + 45 )
engfunc( EngFunc_WriteCoord, origin[ 0 ] )
engfunc( EngFunc_WriteCoord, origin[ 1 ] )
engfunc( EngFunc_WriteCoord, origin[ 2 ] + 30 )
write_short( Frost_Sprite )
write_byte( 60 )
write_byte( random_num( 25, 30 ) )
write_byte( 2 )
write_byte( 50 )
write_byte( 10 )
message_end()
}
stock Screen_Fade( iPlayer, Red, Green, Blue, Alpha ) {
if( !is_user_connected( iPlayer ) ) {
return
}
message_begin ( MSG_ONE_UNRELIABLE, get_user_msgid ( "ScreenFade" ), { 0, 0, 0 }, iPlayer )
write_short ( 1 << 10 )
write_short ( 1 << 11 )
write_short ( 0x0000 )
write_byte( Red )
write_byte( Green )
write_byte( Blue )
write_byte( Alpha )
message_end()
}
stock Color_Print( const iPlayer, const input[], any:... ) {
new count = 1, players[ 32 ]
static msg[ 191 ]
vformat( msg, 190, input, 3 )
replace_all( msg, 190, "!g", "^4" )
replace_all( msg, 190, "!y", "^1" )
replace_all( msg, 190, "!team", "^3" )
if( iPlayer ) {
players[ 0 ] = iPlayer
}
else {
get_players( players, count, "ch" )
}
for ( new i = 0; i < count; i++ ) {
if (is_user_connected( players[ i ] ) ) {
message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ), _, players[ i ] )
write_byte( players[ i ] )
write_string( msg )
message_end()
}
}
}