Преработка на shop

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

Преработка на shop

Мнение от Fatall » 24 Дек 2019, 16:30

Здравейте ползвам този плъгин но имам малък проблем.
Сървъра ми е respawn и ползвам CSDM и като се спауне играч света със червен цвят за Т и син цвят за ЦТ докато има спаун протект но като активирам този плъгин ми спира glow.

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

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <fakemeta>
#include <cromchat>

new const PLUGIN[] = 	"Respawn Shop";
new const VERSION[] = 	"1.1";
new const AUTHOR[] = 	"author1";

new const PREFIX[] = 	"HDservers";

new const PlayerModels[ ][ ] = 
{
	"arctic", "leet", "guerilla", "terror", "gign", "urban", "sas", "gsg9"
}

const POINTS_HP_ARMOR     =  200;
const POINTS_HE_IMMUNITY  =  5;
const POINTS_SPEED        =  300;
const POINTS_HE_DMG       =  2;
const POINTS_INVISIBLE    =  60;
const POINTS_KNIFE_DMG    =  2;
const POINTS_ITEMS_LEFT   =  2;
const POINTS_ADMIN_KILL   =  2;
const POINTS_ADMIN_HSKL   =  4;
const POINTS_PLAYER_KILL  =  1;
const POINTS_PLAYER_HSKL  =  2;

enum gg_data
{
	item_name[33],
	item_cost
}

new bool:g_szUsedItem[8][33], bool:g_szHeImm[33];
new const gg_shop[][gg_data] =
{
    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_szVault, g_szMaxPlayers, bool:g_szAdmin[33], itemsleft[33];

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
	register_cvar("ShopRespawn", VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	
	register_concmd("hdshop_give_points", "GivePoints", ADMIN_RCON, "<name/@all> <points>");
	register_concmd("hdshop_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")
	register_clcmd("say /shops", "clcmdShop")
	register_clcmd("say_team /shops", "clcmdShop")

	g_szVault = nvault_open("RespawnShop_Data");
	g_szMaxPlayers = get_maxplayers();
}

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);
		}
		
		CC_SendMessage(0, "^4[%s] ^1ADMIN: [^3%s^1] give [^4%d^1] Token%s to ^3All 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));
		
		CC_SendMessage(0, "^4[%s] ^1ADMIN: [^3%s^1] give [^4%d^1] Token%s to [^3%s^1].", 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_LEVEL_H);
}

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 );
			
			CC_SendMessage(killer, "^4[%s] ^1You lost ^3%d ^4token%s ^1for killing ^3teammate^1.", PREFIX, lost_points, lost_points == 1 ? "" : "s" );
			lost_points = 0;
		}
		else
		{
			new win_points;
			if( read_data( 3 ) ) win_points = g_szAdmin[ killer ] ? POINTS_ADMIN_KILL : POINTS_ADMIN_HSKL;
			else win_points = g_szAdmin[ killer ] ? POINTS_PLAYER_KILL : POINTS_PLAYER_HSKL;
			
			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])
	{
		CC_SendMessage(id, "^4[%s] ^1Please ^3wait ^4next ^1spawn ^3to ^4use ^1the ^3 shop ^4again^1.", PREFIX );
		return PLUGIN_CONTINUE;
	}
	
	if(!is_user_alive(id))
	{
		CC_SendMessage(id, "^4[%s] ^1Need to be ^3alive to ^4use the ^1shop!", PREFIX);
		return PLUGIN_CONTINUE;
	}
	
	ShowGGShop(id);
	return PLUGIN_CONTINUE;
}

public ShowGGShop(id)
{
	
	new iTitle[256];
	formatex( iTitle, charsmax( iTitle ), "\r[\w%s\r] \yToken%s: \w[\r%d\w] | \yItem%s Left: \w[\r%d\w]", PREFIX, 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 ), "\d%s - \w[\r%d\w] \ytoken%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 ), "\w%s \w[\r%d\w] \ytoken%s", 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, POINTS_HP_ARMOR );
			cs_set_user_armor( id, POINTS_HP_ARMOR, 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, POINTS_INVISIBLE );
			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 ];
	CC_SendMessage(index, "^4[%s] ^3You ^1bought ^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 ] < POINTS_HE_IMMUNITY )
		{		
			iHeImmunes[ victim ]++;
			client_print( victim, print_center, "Immunity from HEGrenades: %d of POINTS_HE_IMMUNITY", 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 * POINTS_HE_DMG ) );
		}
		
		else if( !g_szHeImm[ victim ] && !g_szUsedItem[ 3 ][ attacker ] )
		{
			new Float:dmg = random_float( 35.0, 75.0 );
		
		}
	}
	else
	{
		if( g_szUsedItem[ 7 ][ attacker ] && ( 1 <= attacker <= g_szMaxPlayers ) && victim != attacker && get_user_weapon( attacker ) == CSW_KNIFE )
		{
			SetHamParamFloat( 4, ( damage * POINTS_KNIFE_DMG ) );
		}
	}
	
	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 ] = 0
	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 SavePoints(id)
{
	if(!is_user_bot(id) && !is_user_hltv(id))
	{
		new vaultdata[256], UserName[33];
		get_user_name(charsmax(UserName));

		format(vaultdata, charsmax(vaultdata), "%i#", g_szPoints[id]);
		nvault_set(g_szVault, UserName, vaultdata);
	}
}
Последно промяна от Fatall на 25 Дек 2019, 22:15, променено общо 5 пъти.

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

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

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Преработка на shop

Мнение от OciXCrom » 24 Дек 2019, 17:01

Нормално е да го спира щом си го закупил от магазина. Премести плъгина над този за respawn за да задейства другият glow след като този го премахне.

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

Преработка на shop

Мнение от Fatall » 24 Дек 2019, 17:34

Без да съм купил нещо и пак го се бъгва ще пробвам да го сложа над респаун плъгина

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

<?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 » 25 Дек 2019, 16:03

Оци не става пробвах блокирва го пак
Според мен тук така трябва да се промени нещо

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

stock Reset(index)
{
	for( new i = 1; i < sizeof( gg_shop ); i++ )
	{
		g_szUsedItem[ i ][ index ] = false;
	}
	
	itemsleft[ index ] = POINTS_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);
}

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

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

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Преработка на shop

Мнение от OciXCrom » 25 Дек 2019, 21:43

set_user_rendering в кода по-горе премахва въпросния glow. Направо махни целия ред щом имаш spawn protection glow.

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

Преработка на shop

Мнение от Fatall » 26 Дек 2019, 12:09

:lock:

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

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

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

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

Кой е на линия

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