Когато от /shop си купя 200HP и направя кил и отново съм на 100HP
Ето Shop и Vampire пългините
Код за потвърждение: Избери целия код
#include < amxmodx >
#include < amxmisc >
#include < cstrike >
#include < fun >
#include < fakemeta >
#include < engine >
#include < hamsandwich >
#include < nvault >
#include < colorchat >
new const PLUGIN[ ] = "BetterPlay Respawn Shop";
new const VERSION[ ] = "1.1";
new const AUTHOR[ ] = "Smiley";
new const PREFIX[ ] = "[Codeine]";
const ITEMS_LEFT = 2;
new const PlayerModels[ ][ ] =
{
"arctic", "leet", "guerilla", "terror", "gign", "urban", "sas", "gsg9"
}
enum gg_data
{
item_name[ 33 ],
item_cost
}
new bool:g_szUsedItem[ 8 ][ 33 ], bool:g_szHeImm[ 33 ];
new const gg_shop[ ][ gg_data ] =
{
//{ "imeto na item-a", cenata },
0,
{ "200 HP + 200 AP", 20 },
{ "HE Immunity [from 5 grenades]", 30 },
{ "Double HE Damage", 30 },
{ "300 Speed", 15 },
{ "Invisible", 25 },
{ "Chameleon", 15 },
{ "Knife Double Damage", 25 }
}
new iHeImmunes[ 33 ];
new g_szPoints[ 33 ], g_szSync, g_szVault, g_szMaxPlayers, bool:g_szAdmin[ 33 ], itemsleft[ 33 ];
public plugin_init( )
{
register_plugin( PLUGIN, VERSION, AUTHOR );
register_concmd( "ggshop_give_points", "GivePoints", ADMIN_RCON, "<name/@all> <points>" );
register_concmd( "ggshop_remove_points", "RemovePoints", ADMIN_RCON, "<name> <points>" );
register_event( "DeathMsg", "EventDeath", "a" );
register_event( "CurWeapon", "eventCurWeapon", "be", "1=1" );
RegisterHam( Ham_Spawn, "player", "fwdPlayerSpawn", 1 );
RegisterHam( Ham_TakeDamage, "player", "fwdPlayerTakeDamage" );
register_clcmd( "say /shop", "clcmdShop" );
register_clcmd( "say_team /shop", "clcmdShop" );
g_szSync = CreateHudSyncObj( );
g_szVault = nvault_open( "RespawnShop_Data" );
g_szMaxPlayers = get_maxplayers( );
//set_task( 60.0, "TaskAdvertising", _, _, _, "b" );
}
public GivePoints( id, level, cid )
{
if( !cmd_access( id, level, cid, 3) ) return PLUGIN_HANDLED;
new arg1[ 64 ], arg2[ 33 ], points;
read_argv( 1, arg1, charsmax( arg1 ) );
read_argv( 2, arg2, charsmax( arg2 ) );
points = str_to_num( arg2 );
if( points <= 0 ) return PLUGIN_HANDLED;
new AdminName[ 64 ];
get_user_name( id, AdminName, charsmax( AdminName ) );
if( equal( arg1, "@all" ) )
{
new iPlayers[ 32 ], iNum, all_index;
get_players( iPlayers, iNum, "ch" );
for( new i = 0; i < iNum; i++ )
{
all_index = iPlayers[ i ];
g_szPoints[ all_index ] += points;
SavePoints( all_index );
}
ColorChat( 0, TEAM_COLOR, "%s^1 ADMIN:^3 %s^1 gave^4 %d^1 Token%s to^3 All Players", PREFIX, AdminName, points, points == 1 ? "" : "s" );
}
else
{
new target = cmd_target( id, arg1, CMDTARGET_NO_BOTS );
if( !target ) return PLUGIN_HANDLED;
g_szPoints[ target ] += points;
SavePoints( target );
new TargetName[ 64 ];
get_user_name( target, TargetName, charsmax( TargetName ) );
ColorChat( 0, TEAM_COLOR, "%s^1 ADMIN:^3 %s^1 gave^4 %d^1 Token%s to^3 %s.", PREFIX, AdminName, points, points == 1 ? "" : "s", TargetName );
}
return PLUGIN_HANDLED;
}
public RemovePoints( id, level, cid )
{
if( !cmd_access( id, level, cid, 3) ) return PLUGIN_HANDLED;
new arg1[ 64 ], arg2[ 33 ], points;
read_argv( 1, arg1, charsmax( arg1 ) );
read_argv( 2, arg2, charsmax( arg2 ) );
new target = cmd_target( id, arg1, CMDTARGET_NO_BOTS );
if( !target ) return PLUGIN_HANDLED;
points = str_to_num( arg2 );
if( points <= 0 ) return PLUGIN_HANDLED;
new AdminName[ 64 ];
get_user_name( id, AdminName, charsmax( AdminName ) );
g_szPoints[ target ] -= points;
SavePoints( target );
new TargetName[ 64 ];
get_user_name( target, TargetName, charsmax( TargetName ) );
ColorChat( 0, TEAM_COLOR, "%s^1 ADMIN:^3 %s^1 removed^4 %d^1 Token%s from^3 %s.", PREFIX, AdminName, points, points == 1 ? "" : "s", TargetName );
return PLUGIN_HANDLED;
}
public client_authorized( id )
{
LoadPoints( id );
g_szAdmin[ id ] = bool:( get_user_flags( id ) & ADMIN_BAN );
}
public client_disconnected( id )
{
SavePoints( id );
g_szAdmin[ id ] = false;
}
public EventDeath( )
{
new killer = read_data( 1 ), victim = read_data( 2 );
if( is_user_connected( killer ) && is_user_alive( killer ) && killer != victim )
{
if( cs_get_user_team( killer ) == cs_get_user_team( victim ) )
{
new lost_points = 20;
g_szPoints[ killer ] -= lost_points;
SavePoints( killer );
ColorChat( killer, TEAM_COLOR, "%s^1 You lost^3 %d^4 token%s^1 for killing^3 teammate^1.", PREFIX, lost_points, lost_points == 1 ? "" : "s" );
lost_points = 0;
}
else
{
new win_points;
if( read_data( 3 ) ) win_points = g_szAdmin[ killer ] ? 4 : 2;
else win_points = g_szAdmin[ killer ] ? 2 : 1;
if( win_points )
{
g_szPoints[ killer ] += win_points;
win_points = 0;
SavePoints( killer );
}
}
}
}
public clcmdShop( id )
{
if( cs_get_user_team( id ) == CS_TEAM_SPECTATOR )
{
return PLUGIN_CONTINUE;
}
if( !itemsleft[ id ] )
{
ColorChat( id, TEAM_COLOR, "%s^1 Please^3 wait^4 next^1 spawn^3 to^4 use^1 the^3 shop^4 again^1.", PREFIX );
return PLUGIN_CONTINUE;
}
if( !is_user_alive( id ) )
{
ColorChat( id, TEAM_COLOR, "%s^1 Need to be^3 alive to^4 use the^1 shop!", PREFIX );
return PLUGIN_CONTINUE;
}
ShowGGShop( id );
return PLUGIN_CONTINUE;
}
public ShowGGShop( id )
{
new iTitle[ 256 ];
formatex( iTitle, charsmax( iTitle ), "\d[ \rBS \d]^nToken%s: %d | Item%s Left: %d", g_szPoints[ id ] == 1 ? "" : "s", g_szPoints[ id ], itemsleft[ id ] == 1 ? "" : "s", itemsleft[ id ] );
new menu = menu_create( iTitle, "GGShopHandler" );
for( new i = 1; i < sizeof( gg_shop ); i++ )
{
new tempid[ 10 ], g_szItem[ 64 ];
num_to_str( i, tempid, charsmax( tempid ) );
if( g_szPoints[ id ] < gg_shop[ i ][ item_cost ] || g_szUsedItem[ i ][ id ] )
{
formatex( g_szItem, charsmax( g_szItem ), "%s [%d token%s]", gg_shop[ i ][ item_name ], gg_shop[ i ][ item_cost ], gg_shop[ i ][ item_cost ] == 1 ? "" : "s" );
}
else
{
formatex( g_szItem, charsmax( g_szItem ), "\y%s \w[\r%d \ytoken%s\w]", gg_shop[ i ][ item_name ], gg_shop[ i ][ item_cost ], gg_shop[ i ][ item_cost ] == 1 ? "" : "s" );
}
menu_additem( menu, g_szItem, tempid, _, menu_makecallback( "GGShopCallback" ) );
}
menu_display( id, menu, 0 );
}
public GGShopCallback( id, menu, item )
{
new g_szAccess, g_szInfo[ 3 ], g_szCallback;
menu_item_getinfo( menu, item, g_szAccess, g_szInfo, charsmax( g_szInfo ), _, _, g_szCallback );
if( g_szPoints[ id ] < gg_shop[ str_to_num( g_szInfo ) ][ item_cost ] || g_szUsedItem[ str_to_num( g_szInfo ) ][ id ] )
{
return ITEM_DISABLED;
}
return ITEM_ENABLED;
}
public GGShopHandler( id, menu, item )
{
if( item == MENU_EXIT )
{
menu_destroy( menu );
return PLUGIN_HANDLED;
}
new iData[ 6 ], iName[ 63 ], iAccess, iCallback;
menu_item_getinfo( menu, item, iAccess, iData, charsmax( iData ), iName, charsmax( iName ), iCallback );
if( !is_user_alive( id ) ) return PLUGIN_HANDLED;
new g_szData = str_to_num( iData );
switch( g_szData )
{
case 1:
{
set_user_health( id, 200 );
cs_set_user_armor( id, 200, CS_ARMOR_VESTHELM );
GGShopData( id, g_szData );
}
case 2:
{
g_szHeImm[ id ] = true;
GGShopData( id, g_szData );
}
case 3: GGShopData( id, g_szData );
case 4:
{
set_user_maxspeed( id, 300.0 );
client_cmd( id, "cl_forwardspeed 300" );
GGShopData( id, g_szData );
}
case 5:
{
set_user_rendering( id, kRenderFxGlowShell, 0, 0, 0, kRenderTransColor, 60 );
GGShopData( id, g_szData );
}
case 6:
{
cs_set_user_model( id, PlayerModels[ cs_get_user_team( id ) == CS_TEAM_CT ? random_num( 0, 3 ) : random_num( 4,7 ) ] );
GGShopData( id, g_szData );
}
case 7: GGShopData( id, g_szData );
}
menu_destroy( menu );
return PLUGIN_HANDLED;
}
stock GGShopData( index, g_Item )
{
itemsleft[ index ]--;
g_szUsedItem[ g_Item ][ index ] = true;
g_szPoints[ index ] -= gg_shop[ g_Item ][ item_cost ];
ColorChat( index, TEAM_COLOR, "%s^3 You^1 bought^4 %s^3.", PREFIX, gg_shop[ g_Item ][ item_name ] );
}
public fwdPlayerSpawn( id )
{
if( is_user_alive( id ) )
{
Reset( id );
}
}
public fwdPlayerTakeDamage( victim, inflictor, attacker, Float:damage, damagebits )
{
if( damagebits & ( 1 << 24 ) )
{
new Float:gOrigin[ 3 ], Float:tOrigin[ 3 ];
pev( inflictor, pev_origin, gOrigin );
pev( victim, pev_origin, tOrigin );
if( vector_distance( gOrigin, tOrigin ) > 260.0 ) return HAM_IGNORED;
if( g_szHeImm[ victim ] && iHeImmunes[ victim ] < 5 )
{
iHeImmunes[ victim ]++;
client_print( victim, print_center, "Immunity from HEGrenades: %d of 5", iHeImmunes[ victim ] );
SetHamParamFloat( 4, 0.0 );
}
else
{
g_szHeImm[ victim ] = false;
}
if( g_szUsedItem[ 3 ][ attacker ] && ( 1 <= attacker <= g_szMaxPlayers ) && victim != attacker )
{
SetHamParamFloat( 4, ( damage * 2 ) );
}
else if( !g_szHeImm[ victim ] && !g_szUsedItem[ 3 ][ attacker ] )
{
new Float:dmg = random_float( 35.0, 75.0 );
SetHamParamFloat( 4, dmg );
}
}
else
{
if( g_szUsedItem[ 7 ][ attacker ] && ( 1 <= attacker <= g_szMaxPlayers ) && victim != attacker && get_user_weapon( attacker ) == CSW_KNIFE )
{
SetHamParamFloat( 4, ( damage * 2 ) );
}
}
return HAM_IGNORED;
}
public eventCurWeapon( id )
{
if( g_szUsedItem[ 4 ][ id ] )
{
set_user_maxspeed( id, 300.0 );
}
}
stock Reset( index )
{
for( new i = 1; i < sizeof( gg_shop ); i++ )
{
g_szUsedItem[ i ][ index ] = false;
}
itemsleft[ index ] = ITEMS_LEFT;
iHeImmunes[ index ] = 0;
g_szHeImm[ index ] = false;
remove_task( index );
set_user_maxspeed( index, 250.0 );
client_cmd( index, "cl_forwardspeed 300" );
set_user_rendering( index, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255 );
cs_reset_user_model( index );
}
public LoadPoints( id )
{
if( !is_user_bot( id ) && !is_user_hltv( id ) )
{
new vaultdata[ 256 ], points[ 33 ], UserName[ 33 ];
get_user_name( id, UserName, charsmax( UserName ) );
format( vaultdata, charsmax( vaultdata ), "%i#", g_szPoints[ id ] );
nvault_get( g_szVault, UserName, vaultdata, 255 );
replace_all( vaultdata, 255, "#", " " );
parse( vaultdata, points, 32 );
g_szPoints[ id ] = str_to_num( points );
}
}
public SavePoints( id )
{
if( !is_user_bot( id ) && !is_user_hltv( id ) )
{
new vaultdata[ 256 ], UserName[ 33 ];
get_user_name( id, UserName, charsmax( UserName ) );
format( vaultdata, charsmax( vaultdata ), "%i#", g_szPoints[ id ] );
nvault_set( g_szVault, UserName, vaultdata );
}
}
public TaskAdvertising( )
{
for( new i = 1; i <= 32; i++ )
{
if( !is_user_connected( i ) ) continue;
ColorChat( i, TEAM_COLOR, "%s^1 Type^4 /shop^1 to buy^3 items^1.", PREFIX );
}
}
Код за потвърждение: Избери целия код
/*
* http://games.qwerty.ru
*
* AmxModX
* Vampire plugin
* by Shalfey
*
* CVars
* amx_vampire_hp - hp add for kill
* amx_vampire_hp_hs - hp add for kill in head
* amx_vampire_max_hp - max player hp
*
* Players gets HP for kills.
*/
#include <amxmodx>
#include <fun>
#define PLUGIN_VERSION "1.0c"
new health_add
new health_hs_add
new health_max
new nKiller
new nKiller_hp
new nHp_add
new nHp_max
public plugin_init()
{
register_plugin("Vampire", PLUGIN_VERSION, "Shalfey")
health_add = register_cvar("amx_vampire_hp", "15")
health_hs_add = register_cvar("amx_vampire_hp_hs", "40")
health_max = register_cvar("amx_vampire_max_hp", "200")
register_event("DeathMsg", "hook_death", "a", "1>0")
}
public hook_death()
{
// Killer id
nKiller = read_data(1)
if ( (read_data(3) == 1) && (read_data(5) == 0) )
{
nHp_add = get_pcvar_num (health_hs_add)
}
else
nHp_add = get_pcvar_num (health_add)
nHp_max = get_pcvar_num (health_max)
// Updating Killer HP
nKiller_hp = get_user_health(nKiller)
nKiller_hp += nHp_add
// Maximum HP check
if (nKiller_hp > nHp_max) nKiller_hp = nHp_max
set_user_health(nKiller, nKiller_hp)
// Hud message "Healed +15/+40 hp"
set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1)
show_hudmessage(nKiller, "Healed +%d hp", nHp_add)
// Screen fading
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, nKiller)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(0)
write_byte(0)
write_byte(200)
write_byte(75)
message_end()
}