Заявка за shop отстъпка

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
Fatall
Извън линия
Потребител
Потребител
Мнения: 295
Регистриран на: 30 Авг 2018, 09:35
Местоположение: София
Се отблагодари: 26 пъти
Получена благодарност: 17 пъти
Обратна връзка:

Заявка за shop отстъпка

Мнение от Fatall » 06 Яну 2022, 07:29

Може ли на този плъгин да се добави 20% отстъпка за админ и вип

Код за потвърждение: Избери целия код

#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 );
	}
}
[code]

Код за потвърждение: Избери целия код

<?php
   $error_msg = "Database error in [page].php / ";
   $error_msg .= mysqli_error ( $link )." / ";
   $error_msg .= $query;
   UpdateLog ( $error_msg , DB_ERROR_LOG_FILE );
?>

Аватар
petr0w
Извън линия
Потребител
Потребител
Мнения: 222
Регистриран на: 31 Окт 2016, 02:38
Се отблагодари: 5 пъти
Получена благодарност: 14 пъти
Обратна връзка:

Заявка за shop отстъпка

Мнение от petr0w » 06 Яну 2022, 17:16

Аз само да попитам малко по-напредналите.
Понеже автора не е дал някакви флагове тук може ли да играе ролята if user_flags != "z" или по добре ще е с една булева ?
Bulgarska Trewa -91.132.63.63:27015

Аватар
Fatall
Извън линия
Потребител
Потребител
Мнения: 295
Регистриран на: 30 Авг 2018, 09:35
Местоположение: София
Се отблагодари: 26 пъти
Получена благодарност: 17 пъти
Обратна връзка:

Заявка за shop отстъпка

Мнение от Fatall » 06 Яну 2022, 17:44

petr0w написа: 06 Яну 2022, 17:16 Аз само да попитам малко по-напредналите.
Понеже автора не е дал някакви флагове тук може ли да играе ролята if user_flags != "z" или по добре ще е с една булева ?
Флаг - t = VIP
Флаг - n = Admin

Мисля, че този код ще стане само трябва да се вмъкне.

Код за потвърждение: Избери целия код

if(get_user_flags(id) & ADMIN_LEVEL_H) item_cost  /= 2

Код за потвърждение: Избери целия код

<?php
   $error_msg = "Database error in [page].php / ";
   $error_msg .= mysqli_error ( $link )." / ";
   $error_msg .= $query;
   UpdateLog ( $error_msg , DB_ERROR_LOG_FILE );
?>

Аватар
rago12
Извън линия
Потребител
Потребител
Мнения: 63
Регистриран на: 10 Апр 2017, 15:23
Получена благодарност: 34 пъти

Заявка за shop отстъпка

Мнение от rago12 » 11 Яну 2022, 19:30

Код за потвърждение: Избери целия код

#include < amxmodx >
#include < amxmisc >
#include < cstrike >
#include < fun >
#include < fakemeta >
#include < engine >
#include < hamsandwich >
#include < nvault >
#include <cromchat>

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,
	item_cost_admin
}

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, 15 },
	{ "HE Immunity [from 5 grenades]", 30, 25 },
	{ "Double HE Damage", 30, 25 },
	{ "300 Speed", 15, 10 },
	{ "Invisible", 25, 20 },
	{ "Chameleon", 15, 10 },
	{ "Knife Double Damage", 25, 20 }
}

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 ], get_user_flags(id) & ADMIN_LEVEL_H? gg_shop[i][item_cost_admin] : 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 ], get_user_flags(id) & ADMIN_LEVEL_H? gg_shop[i][item_cost_admin] : 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;
	
	if(get_user_flags(index) & ADMIN_LEVEL_H)
	{
		g_szPoints[ index ] -= gg_shop[ g_Item ][ item_cost_admin ];
	}else{
		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 );
	}
}
Не съм обръщал много внимание на кода, пробвай

Аватар
Fatall
Извън линия
Потребител
Потребител
Мнения: 295
Регистриран на: 30 Авг 2018, 09:35
Местоположение: София
Се отблагодари: 26 пъти
Получена благодарност: 17 пъти
Обратна връзка:

Заявка за shop отстъпка

Мнение от Fatall » 11 Яну 2022, 19:47

Ще пробвам Благодаря много:)

Код за потвърждение: Избери целия код

<?php
   $error_msg = "Database error in [page].php / ";
   $error_msg .= mysqli_error ( $link )." / ";
   $error_msg .= $query;
   UpdateLog ( $error_msg , DB_ERROR_LOG_FILE );
?>

Аватар
Fatall
Извън линия
Потребител
Потребител
Мнения: 295
Регистриран на: 30 Авг 2018, 09:35
Местоположение: София
Се отблагодари: 26 пъти
Получена благодарност: 17 пъти
Обратна връзка:

Заявка за shop отстъпка

Мнение от Fatall » 12 Яну 2022, 07:05

Може ли и на този плъгин да се добави

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <dhudmessage>


#define PLUGIN_NAME  "GP Golden Shop"
#define PLUGIN_VERSION "1.1"
#define PLUGIN_AUTHOR  "OciXCrom"

#define NO_WEAPON -1

enum _:ItemInfo
{
	Name[32],
	Price,
	Weapon[16],
	Ammo,
	Csw,
	VModel[328],
	PModel[328]
}

new const g_eItems[][ItemInfo] = 
{
	{ "Golden AK47", 	10000, 	"weapon_ak47", 		90, 	CSW_AK47, 		"models/fatall_shop/v_goldenak.mdl", 		"models/fatall_shop/p_goldenak.mdl"},
	{ "Golden M4A1", 	10000, 	"weapon_m4a1", 		90, 	CSW_M4A1, 		"models/fatall_shop/v_gold_m4.mdl", 		"models/fatall_shop/p_gold_m4.mdl"},
	{ "Golden AWP", 	16000, 	"weapon_awp", 		30, 	CSW_AWP, 		"models/fatall_shop/v_gold_awp.mdl", 		"models/fatall_shop/p_gold_awp.mdl"}
}

new g_iWeapon[33]
new g_iSprite

public plugin_init()
{
	register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
	register_cvar("GPGoldenShop", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	register_event("CurWeapon", "OnChangeWeapon", "be", "1=1")
	RegisterHam(Ham_Spawn, "player", "OnPlayerSpawn", 1)
	RegisterHam(Ham_TakeDamage, "player", "PreTakeDamage", 0)
	register_clcmd("chooseteam", "Cmd_Shop")
	register_clcmd("say /gold", "Cmd_Shop")
	register_clcmd("say_team /gold", "Cmd_Shop")
	
	g_iSprite = get_user_msgid("ScreenFade");
}

public plugin_precache()
{
	precache_sound("items/gunpickup2.wav")
	g_iSprite = precache_model("sprites/smoke.spr");
	for(new i; i < sizeof(g_eItems); i++)
	{
		if(g_eItems[i][VModel][0])
			precache_model(g_eItems[i][VModel])
			
		if(g_eItems[i][PModel][0])
			precache_model(g_eItems[i][PModel])
	}
}

public client_putinserver(id)
	g_iWeapon[id] = NO_WEAPON
	
public OnPlayerSpawn(id)
	g_iWeapon[id] = NO_WEAPON
	
public PreTakeDamage(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits)
{
	if(g_iWeapon[iAttacker] != NO_WEAPON)
		SetHamParamFloat(4, fDamage * 3)
}


public OnChangeWeapon(id)
{
	if(g_iWeapon[id] == NO_WEAPON || read_data(2) != g_eItems[g_iWeapon[id]][Csw])
		return
		
	if(g_eItems[g_iWeapon[id]][VModel])
		set_pev(id, pev_viewmodel2, g_eItems[g_iWeapon[id]][VModel])
		
	if(g_eItems[g_iWeapon[id]][PModel])
		set_pev(id, pev_weaponmodel2, g_eItems[g_iWeapon[id]][PModel])
}

public Cmd_Shop(id)
{
	if(!is_user_alive(id))
		ColorMessage(id, "^4[GamePlay] ^1You need to be ^4alive^1!")
	else
	{
		new iMenu = menu_create("\r[\wGamePlay\r] \yGolden Shop", "Shop_Handler")
		new szItem[64], iMoney = cs_get_user_money(id)
		
		for(new i=0; i < sizeof(g_eItems); i++)
		{
			if(g_iWeapon[id] == i)
				formatex(szItem, charsmax(szItem), "\d%s \w[\rOWNED\w]", g_eItems[i][Name])
			else
				formatex(szItem, charsmax(szItem), "%s%s \w[\r%i$\w]", iMoney >= g_eItems[i][Price] ? "\w" : "\d", g_eItems[i][Name], g_eItems[i][Price])
					
			menu_additem(iMenu, szItem)
		}
		
		menu_display(id, iMenu)
		}
	
	return PLUGIN_HANDLED
}

public Shop_Handler(id, iMenu, iItem)
{
		
	if(iItem != MENU_EXIT && is_user_alive(id))
	{
	
		if(g_iWeapon[id] == iItem)
			ColorMessage(id, "^4[GamePlay] ^1You already have a [^4%s^1]!", g_eItems[iItem][Name])
		else
		{
			new iMoney = cs_get_user_money(id)
			if(iMoney < g_eItems[iItem][Price])
				ColorMessage(id, "^4[GamePlay] ^1You need [^4%i$^1] to purchase this!", g_eItems[iItem][Price])
			else
			{
				cs_set_user_money(id, iMoney - g_eItems[iItem][Price])
				cs_set_user_armor(id, get_user_armor(id) + 50, CS_ARMOR_NONE)
				ColorMessage(id, "^4[GamePlay] ^1You have bought [^3%s] ^1for [^4%i$]", g_eItems[iItem][Name], g_eItems[iItem][Price])
				set_user_health(id, get_user_health(id) + 50)
				set_user_screenfade(id, 255, 255, 0, 140)
				set_user_rendering(id, kRenderFxGlowShell, 255, 215, 0, kRenderNormal, 10)
				emit_sound(id, CHAN_ITEM, "items/gunpickup2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
				g_iWeapon[id] = iItem
				give_item(id, g_eItems[iItem][Weapon])
				cs_set_user_bpammo(id, g_eItems[iItem][Csw], g_eItems[iItem][Ammo])
				OnChangeWeapon(id)
			}
		}
	}

	menu_destroy(iMenu)
	return PLUGIN_HANDLED
}

stock set_user_screenfade(id, r, g, b, brig)
{
    message_begin(id ? MSG_ONE : MSG_BROADCAST, g_iSprite, _, id );
    write_short(4096);
    write_short(4096);
    write_short(0);
    write_byte(r); 
    write_byte(g);
    write_byte(b); 
    write_byte(brig);
    message_end();    
}

stock ColorMessage(const id, const input[], any:...)
{
   new count = 1, players[32];
   static msg[ 191 ];
   vformat(msg, 190, input, 3);
   if (id) players[0] = id; 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();}}}
}

Код за потвърждение: Избери целия код

<?php
   $error_msg = "Database error in [page].php / ";
   $error_msg .= mysqli_error ( $link )." / ";
   $error_msg .= $query;
   UpdateLog ( $error_msg , DB_ERROR_LOG_FILE );
?>

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 9 госта