XP Rank System

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
ANT.
Извън линия
Потребител
Потребител
Мнения: 61
Регистриран на: 23 Сеп 2017, 17:02

XP Rank System

Мнение от ANT. » 09 Ное 2017, 18:58

Как да направя така че ранка да го има и в чата ?
Пример :
[Mayor] Player : Hi all
Също искам да махна hostname , timeleft и status от плъгина
Да пише само ранк и xp

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

/*
	Blizzards Plugins Comply With GNU General Public License

	Rank Mod is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.
	
	Under no circumstances are you allowed to redistribute and/or modify
	it claming that you are the original author of such plugin/modification.
	
	Rank Mod is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.
	
	You should have received a copy of the GNU General Public License
	along with this program.  If not, see <http://www.gnu.org/licenses/>.
	
*/

#include < amxmodx >
#include < amxmisc >
#include < fun >
#include < nvault >
#include < hamsandwich >

#pragma semicolon 1

#define PLUGIN "Rank Mod"
#define VERSION "1.0"
#define AUTHOR "Blizzard"

#define cm(%0)		( sizeof(%0) - 1 )

#define MAXLEVEL 13
#define MAXAUTH 4

enum _:mData {
	m_szRankName[ 32 ],
	m_iRankXP
};

enum {
	STANDARD = 0,
	MOD,
	ADMIN,
	LEADER
};

new const g_mPlayerData[ ][ mData ] = {
	{ "Private", 0 },
	{ "Specialist", 50 },
	{ "Corporal", 200 },
	{ "Sargeant", 350 },
	{ "Staff Sargeant", 600 },
	{ "Warrant Officer", 1000 },
	{ "Chief Warrant Officer", 1500 },
	{ "Second Lieutenant", 2500 },
	{ "First Lieutenant", 5000 },
	{ "Captain", 8250 },
	{ "Major", 13500 },
	{ "Colonel", 20000 },
	{ "General", 30000 },
	{ "General of The Army", 45000 }
};

new const g_mPlayerAuth[  ][  ] = {
	"Standard", "Moderator", "Admin", "Leader"
};

new const g_sLevelUp[ ] = { "RankMod/Rank-Mod-LvlUp.mp3" };

// Integers	
new g_iPlayerXP[ 33 ] = 0;
new g_iPlayerLevel[ 33 ] = 0;
new g_iPlayerStatus[ 33 ] = 3;

// Booleans
new g_bToggleHud[ 33 ] = true;	
new g_bAdvertSeen[ 33 ] = false;

// Strings
new g_szHostName[ 64 ];	

// Cvars
new g_Vault;

public plugin_init() {
	register_plugin( PLUGIN, VERSION, AUTHOR );
	
	// Register Events
	register_event( "DeathMsg", "Event_DeathMsg", "a" );
	
	// Register Messages
	register_message( get_user_msgid( "StatusValue" ), "msgStatusValue" );
	
	// Register Ham
	RegisterHam( Ham_Spawn, "player", "CBase_PlayerPost_Spawn", 1 );
	
	// Register Client Commands
	register_clcmd( "say /hud", "cmdToggleHud" );
	register_clcmd( "say /manage", "cmdManagePlayers" );
}

public plugin_precache( ) {
	precache_sound( g_sLevelUp );
}

public plugin_cfg( ) {
	get_cvar_string( "hostname", g_szHostName, cm( g_szHostName ) );
	g_Vault = nvault_open( "Rank-Mod" );
}

public client_authorized( id ) {
	if( has_flag( id, "a" ) )
		g_iPlayerStatus[ id ] = LEADER;
	else if( has_flag( id, "b" ) )
		g_iPlayerStatus[ id ] = ADMIN;
	else if( has_flag( id, "c" ) )
		g_iPlayerStatus[ id ] = MOD;
	else if( has_flag( id, "z" ) )
		g_iPlayerStatus[ id ] = STANDARD;
}

public client_putinserver( id ) {
	g_bToggleHud[ id ] = true;
	g_bAdvertSeen[ id ] = false;
	set_task( 0.9, "ShowHud", id, _, _, "b" );
	LoadData( id );
}

public CBase_PlayerPost_Spawn( id ) {
	if( !g_bAdvertSeen[ id ] ) {
		Color( id, "!nWelcome !g%s!n, This Server Is Running !g%s v%s!n By !g%s!n", get_nick( id ), PLUGIN, VERSION, AUTHOR );
		g_bAdvertSeen[ id ] = true;
	}
}

public client_disconnect( id ) {
	SaveData( id );
}

public Event_DeathMsg( ) {
	new iKiller = read_data( 1 );
	new iVictim = read_data( 2 );
	new HeadShot = read_data( 3 );
	
	new clip, ammo, weapon = get_user_weapon( iKiller, clip, ammo );
	
	if( iVictim != iKiller ) {
		if( HeadShot && weapon == CSW_KNIFE )
			g_iPlayerXP[ iKiller ] += 30;
		
		else if( HeadShot ) 
			g_iPlayerXP[ iKiller ] += 10;
		
		else if( weapon == CSW_KNIFE && !HeadShot )
			g_iPlayerXP[ iKiller ] += 30;
		
		else if( weapon != CSW_KNIFE && !HeadShot )
			g_iPlayerXP[ iKiller ] += 5;
		else  
			g_iPlayerXP[ iKiller ] += 5;
		
		if( g_iPlayerLevel[ iKiller ] < MAXLEVEL ) {
			if( g_iPlayerXP[ iKiller ] >= g_mPlayerData[ g_iPlayerLevel[ iKiller ] + 1 ][ m_iRankXP ] ) {
				g_iPlayerLevel[ iKiller ]++;
				set_dhudmessage( 0, 255, 0, -1.0, 0.60, 1, 3.0, 3.0, 1.5, 1.5 );
				show_dhudmessage( iKiller, "You Have Been Promoted To^n^n-= %s =-", g_mPlayerData[ g_iPlayerLevel[ iKiller ] ][ m_szRankName ] );
				client_cmd( iKiller, "mp3 play sound/%s", g_sLevelUp );
			}
		}
	}
}
		
// Toggle Showing Hud Message On / Off
public cmdToggleHud( id ) {
	g_bToggleHud[ id ] = !g_bToggleHud[ id ];
	return PLUGIN_HANDLED;
}

// Shows The Rank Information Message
public ShowHud( id ) {
	if( g_bToggleHud[ id ] ) {
		set_hudmessage(0, 255, 0, 0.01, 0.18, 0, 6.0, 1.0, 0.0, 0.0, -1 );
		if( g_iPlayerLevel[ id ] < MAXLEVEL ) {
			show_hudmessage(id, "[ %s ]^n^n[ Rank: -= %s =- ]^n[ XP: %i / %i ]^n^n[ TimeLeft: %d:%02d ]^n^n[ Status: %s ]",
			g_szHostName,
			g_mPlayerData[ g_iPlayerLevel[ id ] ][ m_szRankName ],
			g_iPlayerXP[ id ],
			g_mPlayerData[ g_iPlayerLevel[ id ] + 1 ][ m_iRankXP ],
			get_timeleft( ) / 60,
			get_timeleft( ) % 60,
			g_mPlayerAuth[ g_iPlayerStatus[ id ] ] );
		} else {
			show_hudmessage(id, "[ %s ]^n^n[ Rank: -= %s =- ]^n[ XP: %i ]^n^n[ TimeLeft: %d:%02d ]^n^n[ Status: %s ]",
			g_szHostName,
			g_mPlayerData[ g_iPlayerLevel[ id ] ][ m_szRankName ],
			g_iPlayerXP[ id ],
			get_timeleft( ) / 60,
			get_timeleft( ) % 60,
			g_mPlayerAuth[ g_iPlayerStatus[ id ] ] );
		}
	}
}

////////////////////
// StatusValueMsg //
////////////////////
public msgStatusValue( msgid, dest, id ) {
	new flag, value;
	flag = get_msg_arg_int( 1 );
	value = get_msg_arg_int( 2 );
	
	if( !value ) {
		return PLUGIN_CONTINUE;
	}
	
	if( flag == 2 ) {
		new text[ 128 ];
		
		if( get_user_team( value ) == get_user_team( id ) )
			formatex( text, charsmax( text ), "1 %%p2 HP: %d ( %s )", get_user_health( value ), g_mPlayerData[ g_iPlayerLevel[ value ] ][ m_szRankName ]  );
		else 
			formatex( text, charsmax( text ), "1 %%p2 ( %s )", g_mPlayerData[ g_iPlayerLevel[ value ] ][ m_szRankName ]  );
		
		message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "StatusText" ), _, id );
		write_byte( 0 );
		write_string( text );
		message_end( );
	}
	return PLUGIN_CONTINUE;
}

//////////////////////////////////
/*	MANAGE PLAYERS RANKS 	*/
//////////////////////////////////
public cmdManagePlayers( id ) {
	if( !has_flag( id, "a" ) )
		return PLUGIN_HANDLED;
	
	new menu = menu_create( "Manage Player Ranks:", "Players_Handler" );
	
	new iPlayers[ 32 ], iNum, i, Players;
	new szUserID[ 32 ], szName[ 64 ];
	get_players( iPlayers, iNum );
	for( i = 0; i < iNum; i++ ) {
		Players = iPlayers[ i ];
		
		formatex( szName, cm( szName ), "%s ( \r%s\w )", get_nick( Players ), g_mPlayerData[ g_iPlayerLevel[ Players ] ][ m_szRankName ] );
		formatex( szUserID, cm( szUserID ), "%d", get_user_userid( Players ) );
		menu_additem( menu, szName, szUserID );
	}
	
	menu_display( id, menu );
	return PLUGIN_HANDLED;
}

public Players_Handler( id, menu, item ) {
	if( item == MENU_EXIT ) {
		menu_destroy( menu );
		return PLUGIN_HANDLED;
	}
	
	new item_access, callback;
	new info[ 64 ], name[ 32 ];
	
	menu_item_getinfo( menu, item, item_access, info, cm( info ), name, cm( name ), callback );
	
	new userid = str_to_num( info );
	
	new player = find_player( "k", userid );

	ChoosePlayerRank( id, player );
	
	return PLUGIN_HANDLED;
}

public ChoosePlayerRank( index, Choosen ) {
	new szTitle[ 101 ], szChoosen[ 5 ];
	formatex( szTitle, cm( szTitle ), "Change \r%s\y Rank To:", get_nick( Choosen ) );
	new menu = menu_create( szTitle, "PlayerRank_Handler" );
	
	num_to_str( Choosen, szChoosen, cm( szChoosen ) );	
	
	for( new i = 0; i < sizeof( g_mPlayerData ); i++ )
		menu_additem( menu, g_mPlayerData[ i ][ m_szRankName ], szChoosen );

	menu_display( index, menu );
	return PLUGIN_HANDLED;
}

public PlayerRank_Handler( id, menu, item ) {
	if( item == MENU_EXIT ) {
		menu_destroy( menu );
		return PLUGIN_HANDLED;
	}
	
	new item_access, callback;
	new info[ 64 ], name[ 32 ];
	
	menu_item_getinfo( menu, item, item_access, info, cm( info ), name, cm( name ), callback );
	
	new player = str_to_num( info );
	
	g_iPlayerXP[ player ] = g_mPlayerData[ item ][ m_iRankXP ];
	g_iPlayerLevel[ player ] = item;
	
	set_dhudmessage( 0, random( 256 ), 0, -1.0, 0.60, 1, 3.0, 3.0, 1.5, 1.5 );
	show_dhudmessage( player, "ADMIN: %s Has Changed Your Rank To^n^n-= %s =-",
	get_nick( id ),
	g_mPlayerData[ g_iPlayerLevel[ player ] ][ m_szRankName ] );
	client_cmd( player, "mp3 play sound/%s", g_sLevelUp );
	
	menu_destroy( menu );
	return PLUGIN_HANDLED;
}	
	
public plugin_end( ) {
	nvault_close( g_Vault );
}

///////////////////////////////////
/* 	STOCKS			 */
///////////////////////////////////
stock Color( id, String[ ], any:... ) {
	static szMsg[ 192 ];
	vformat( szMsg, charsmax( szMsg ), String, 3 );
	
	replace_all( szMsg, charsmax( szMsg ), "!n", "^1" );
	replace_all( szMsg, charsmax( szMsg ), "!t", "^3" );
	replace_all( szMsg, charsmax( szMsg ), "!g", "^4" );
	
	static msgSayText = 0;
	if( !msgSayText ) msgSayText = get_user_msgid( "SayText" );
	
	new Players[ 32 ], iNum = 1, i; 
	
	if( id ) Players[ 0 ] = id;    
	else get_players( Players, iNum, "ch" );
	
	for( --iNum; iNum >= 0; iNum-- ) {
		i = Players[ iNum ];
		
		message_begin( MSG_ONE_UNRELIABLE, msgSayText, _, i );
		write_byte( i );
		write_string( szMsg );
		message_end( );
	}
} 

stock get_nick( index ) {
	new szName[ 32 ]; get_user_name( index, szName, cm( szName ) );
	return szName;
}

//////////////////////////////////////////
/* 	DHUD MESSAGE STOCKS		*/
//////////////////////////////////////////
stock __dhud_color;
stock __dhud_x;
stock __dhud_y;
stock __dhud_effect;
stock __dhud_fxtime;
stock __dhud_holdtime;
stock __dhud_fadeintime;
stock __dhud_fadeouttime;
stock __dhud_reliable;

stock set_dhudmessage( red = 0, green = 160, blue = 0, Float:x = -1.0, Float:y = 0.65, effects = 2, Float:fxtime = 6.0, Float:holdtime = 3.0, Float:fadeintime = 0.1, Float:fadeouttime = 1.5, bool:reliable = false )
{
    #define clamp_byte(%1)       ( clamp( %1, 0, 255 ) )
    #define pack_color(%1,%2,%3) ( %3 + ( %2 << 8 ) + ( %1 << 16 ) )

    __dhud_color       = pack_color( clamp_byte( red ), clamp_byte( green ), clamp_byte( blue ) );
    __dhud_x           = _:x;
    __dhud_y           = _:y;
    __dhud_effect      = effects;
    __dhud_fxtime      = _:fxtime;
    __dhud_holdtime    = _:holdtime;
    __dhud_fadeintime  = _:fadeintime;
    __dhud_fadeouttime = _:fadeouttime;
    __dhud_reliable    = _:reliable;

    return 1;
}

stock show_dhudmessage( index, const message[], any:... )
{
    new buffer[ 128 ];
    new numArguments = numargs();

    if( numArguments == 2 )
    {
        send_dhudMessage( index, message );
    }
    else if( index || numArguments == 3 )
    {
        vformat( buffer, charsmax( buffer ), message, 3 );
        send_dhudMessage( index, buffer );
    }
    else
    {
        new playersList[ 32 ], numPlayers;
        get_players( playersList, numPlayers, "ch" );

        if( !numPlayers )
        {
            return 0;
        }

        new Array:handleArrayML = ArrayCreate();

        for( new i = 2, j; i < numArguments; i++ )
        {
            if( getarg( i ) == LANG_PLAYER )
            {
                while( ( buffer[ j ] = getarg( i + 1, j++ ) ) ) {}
                j = 0;

                if( GetLangTransKey( buffer ) != TransKey_Bad )
                {
                    ArrayPushCell( handleArrayML, i++ );
                }
            }
        }

        new size = ArraySize( handleArrayML );

        if( !size )
        {
            vformat( buffer, charsmax( buffer ), message, 3 );
            send_dhudMessage( index, buffer );
        }
        else
        {
            for( new i = 0, j; i < numPlayers; i++ )
            {
                index = playersList[ i ];

                for( j = 0; j < size; j++ )
                {
                    setarg( ArrayGetCell( handleArrayML, j ), 0, index );
                }

                vformat( buffer, charsmax( buffer ), message, 3 );
                send_dhudMessage( index, buffer );
            }
        }

        ArrayDestroy( handleArrayML );
    }

    return 1;
}

stock send_dhudMessage( const index, const message[] )
{
    message_begin( __dhud_reliable ? ( index ? MSG_ONE : MSG_ALL ) : ( index ? MSG_ONE_UNRELIABLE : MSG_BROADCAST ), SVC_DIRECTOR, _, index );
    {
        write_byte( strlen( message ) + 31 );
        write_byte( DRC_CMD_MESSAGE );
        write_byte( __dhud_effect );
        write_long( __dhud_color );
        write_long( __dhud_x );
        write_long( __dhud_y );
        write_long( __dhud_fadeintime );
        write_long( __dhud_fadeouttime );
        write_long( __dhud_holdtime );
        write_long( __dhud_fxtime );
        write_string( message );
    }
    message_end();
}


//////////////////////////////////
/* 	SAVE/LOAD STOCKS	*/
//////////////////////////////////
stock SaveData( index ) {
	new szAuthID[ 35 ], szData[ 64 ];
	get_user_authid( index, szAuthID, cm( szAuthID ) );
	formatex( szData, cm( szData ), "%i %i", g_iPlayerXP[ index ], g_iPlayerLevel[ index ] );
	
	nvault_set( g_Vault, szAuthID, szData );
}

stock LoadData( index ) {
	new szAuthID[ 35 ], szData[ 64 ];
	get_user_authid( index, szAuthID, cm( szAuthID ) );
	new XP[ 32 ], LVL[ 15 ];
	
	if( nvault_get( g_Vault, szAuthID, szData, cm( szData ) ) &&
	parse( szData, XP, 31, LVL, 14 ) ) {
		g_iPlayerXP[ index ] = str_to_num( XP );
		g_iPlayerLevel[ index ] = str_to_num( LVL );
	} else {
		g_iPlayerXP[ index ] = 0;
		g_iPlayerLevel[ index ] = 0;
	}
}

Аватар
Nikolow
Извън линия
Потребител
Потребител
Мнения: 196
Регистриран на: 27 Ное 2016, 13:02
Местоположение: Варна
Се отблагодари: 7 пъти
Получена благодарност: 79 пъти
Обратна връзка:

XP Rank System

Мнение от Nikolow » 12 Ное 2017, 21:33

Гледам плъгина запазва данните по steamid, което теб едва ли ще те устройва, освен ако не имаш STEAM ONLY сървър.
Ако е така се извинявам и ще върна нещата. Понеже по-добрата алтернатива на steam-id е ip, но там нещата са кофти по ред причини.
Правя го по nick (Име) и те съветвам да си сложиш един No/Block Change Name плъгин (в интернет много такива).
Чат не съм добавял, защото е трудоемка задача и си е повече занимаване.

Ето и версията без тези неща, които ти поиска.

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

#include < amxmodx >
#include < amxmisc >
#include < fun >
#include < nvault >
#include < hamsandwich >

#pragma semicolon 1

#define PLUGIN "Rank Mod"
#define VERSION "1.0"
#define AUTHOR "Blizzard"

#define cm(%0)		( sizeof(%0) - 1 )

#define MAXLEVEL 13
#define MAXAUTH 4

enum _:mData {
	m_szRankName[ 32 ],
	m_iRankXP
};

enum {
	STANDARD = 0,
	MOD,
	ADMIN,
	LEADER
};

new const g_mPlayerData[ ][ mData ] = {
	{ "Private", 0 },
	{ "Specialist", 50 },
	{ "Corporal", 200 },
	{ "Sargeant", 350 },
	{ "Staff Sargeant", 600 },
	{ "Warrant Officer", 1000 },
	{ "Chief Warrant Officer", 1500 },
	{ "Second Lieutenant", 2500 },
	{ "First Lieutenant", 5000 },
	{ "Captain", 8250 },
	{ "Major", 13500 },
	{ "Colonel", 20000 },
	{ "General", 30000 },
	{ "General of The Army", 45000 }
};

// В момента не го ползваме, но за чата най-вероятно ще го ползваме.. (евентуално..)
//new const g_mPlayerAuth[  ][  ] = { "Standard", "Moderator", "Admin", "Leader" };

new const g_sLevelUp[ ] = { "RankMod/Rank-Mod-LvlUp.mp3" };

// Integers	
new g_iPlayerXP[ 33 ] = 0;
new g_iPlayerLevel[ 33 ] = 0;
new g_iPlayerStatus[ 33 ] = 3;

// Booleans
new g_bToggleHud[ 33 ] = true;	
new g_bAdvertSeen[ 33 ] = false;

// Cvars
new g_Vault;

public plugin_init() {
	register_plugin( PLUGIN, VERSION, AUTHOR );
	
	// Register Events
	register_event( "DeathMsg", "Event_DeathMsg", "a" );
	
	// Register Messages
	register_message( get_user_msgid( "StatusValue" ), "msgStatusValue" );
	
	// Register Ham
	RegisterHam( Ham_Spawn, "player", "CBase_PlayerPost_Spawn", 1 );
	
	// Register Client Commands
	register_clcmd( "say /hud", "cmdToggleHud" );
	register_clcmd( "say /manage", "cmdManagePlayers" );
}

public plugin_precache( ) {
	precache_sound( g_sLevelUp );
}

public plugin_cfg( )
	g_Vault = nvault_open( "Rank-Mod" );

public client_authorized( id ) {
	if( has_flag( id, "a" ) )
		g_iPlayerStatus[ id ] = LEADER;
	else if( has_flag( id, "b" ) )
		g_iPlayerStatus[ id ] = ADMIN;
	else if( has_flag( id, "c" ) )
		g_iPlayerStatus[ id ] = MOD;
	else if( has_flag( id, "z" ) )
		g_iPlayerStatus[ id ] = STANDARD;
}

public client_putinserver( id ) {
	g_bToggleHud[ id ] = true;
	g_bAdvertSeen[ id ] = false;
	set_task( 0.9, "ShowHud", id, _, _, "b" );
	LoadData( id );
}

public CBase_PlayerPost_Spawn( id ) {
	if( !g_bAdvertSeen[ id ] ) {
		Color( id, "!nWelcome !g%s!n, This Server Is Running !g%s v%s!n By !g%s!n", get_nick( id ), PLUGIN, VERSION, AUTHOR );
		g_bAdvertSeen[ id ] = true;
	}
}

public client_disconnected( id ) {
	SaveData( id );
}

public Event_DeathMsg( ) {
	new iKiller = read_data( 1 );
	new iVictim = read_data( 2 );
	new HeadShot = read_data( 3 );
	
	new clip, ammo, weapon = get_user_weapon( iKiller, clip, ammo );
	
	if( iVictim != iKiller ) {
		if( HeadShot && weapon == CSW_KNIFE )
			g_iPlayerXP[ iKiller ] += 30;
		
		else if( HeadShot ) 
			g_iPlayerXP[ iKiller ] += 10;
		
		else if( weapon == CSW_KNIFE && !HeadShot )
			g_iPlayerXP[ iKiller ] += 30;
		
		else if( weapon != CSW_KNIFE && !HeadShot )
			g_iPlayerXP[ iKiller ] += 5;
		else  
			g_iPlayerXP[ iKiller ] += 5;
		
		if( g_iPlayerLevel[ iKiller ] < MAXLEVEL ) {
			if( g_iPlayerXP[ iKiller ] >= g_mPlayerData[ g_iPlayerLevel[ iKiller ] + 1 ][ m_iRankXP ] ) {
				g_iPlayerLevel[ iKiller ]++;
				set_dhudmessage( 0, 255, 0, -1.0, 0.60, 1, 3.0, 3.0, 1.5, 1.5 );
				show_dhudmessage( iKiller, "You Have Been Promoted To^n^n-= %s =-", g_mPlayerData[ g_iPlayerLevel[ iKiller ] ][ m_szRankName ] );
				client_cmd( iKiller, "mp3 play sound/%s", g_sLevelUp );
			}
		}
	}
}
		
// Toggle Showing Hud Message On / Off
public cmdToggleHud( id ) {
	g_bToggleHud[ id ] = !g_bToggleHud[ id ];
	return PLUGIN_HANDLED;
}

// Shows The Rank Information Message
public ShowHud( id ) {
	if( g_bToggleHud[ id ] ) {
		set_hudmessage(0, 255, 0, 0.01, 0.18, 0, 6.0, 1.0, 0.0, 0.0, -1 );
		if( g_iPlayerLevel[ id ] < MAXLEVEL ) {
			show_hudmessage(id, "[ Rank: -= %s =- ]^n[ XP: %i / %i ]",
			g_mPlayerData[ g_iPlayerLevel[ id ] ][ m_szRankName ],
			g_iPlayerXP[ id ],
			g_mPlayerData[ g_iPlayerLevel[ id ] + 1 ][ m_iRankXP ]);
		} else {
			show_hudmessage(id, "[ Rank: -= %s =- ]^n[ XP: %i ]^n^n[ TimeLeft: %d:%02d ]",
			g_mPlayerData[ g_iPlayerLevel[ id ] ][ m_szRankName ],
			g_iPlayerXP[ id ] );
		}
	}
}

////////////////////
// StatusValueMsg //
////////////////////
public msgStatusValue( msgid, dest, id ) {
	new flag, value;
	flag = get_msg_arg_int( 1 );
	value = get_msg_arg_int( 2 );
	
	if( !value ) {
		return PLUGIN_CONTINUE;
	}
	
	if( flag == 2 ) {
		new text[ 128 ];
		
		if( get_user_team( value ) == get_user_team( id ) )
			formatex( text, charsmax( text ), "1 %%p2 HP: %d ( %s )", get_user_health( value ), g_mPlayerData[ g_iPlayerLevel[ value ] ][ m_szRankName ]  );
		else 
			formatex( text, charsmax( text ), "1 %%p2 ( %s )", g_mPlayerData[ g_iPlayerLevel[ value ] ][ m_szRankName ]  );
		
		message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "StatusText" ), _, id );
		write_byte( 0 );
		write_string( text );
		message_end( );
	}
	return PLUGIN_CONTINUE;
}

//////////////////////////////////
/*	MANAGE PLAYERS RANKS 	*/
//////////////////////////////////
public cmdManagePlayers( id ) {
	if( !has_flag( id, "a" ) )
		return PLUGIN_HANDLED;
	
	new menu = menu_create( "Manage Player Ranks:", "Players_Handler" );
	
	new iPlayers[ 32 ], iNum, i, Players;
	new szUserID[ 32 ], szName[ 64 ];
	get_players( iPlayers, iNum );
	for( i = 0; i < iNum; i++ ) {
		Players = iPlayers[ i ];
		
		formatex( szName, cm( szName ), "%s ( \r%s\w )", get_nick( Players ), g_mPlayerData[ g_iPlayerLevel[ Players ] ][ m_szRankName ] );
		formatex( szUserID, cm( szUserID ), "%d", get_user_userid( Players ) );
		menu_additem( menu, szName, szUserID );
	}
	
	menu_display( id, menu );
	return PLUGIN_HANDLED;
}

public Players_Handler( id, menu, item ) {
	if( item == MENU_EXIT ) {
		menu_destroy( menu );
		return PLUGIN_HANDLED;
	}
	
	new item_access, callback;
	new info[ 64 ], name[ 32 ];
	
	menu_item_getinfo( menu, item, item_access, info, cm( info ), name, cm( name ), callback );
	
	new userid = str_to_num( info );
	
	new player = find_player( "k", userid );

	ChoosePlayerRank( id, player );
	
	return PLUGIN_HANDLED;
}

public ChoosePlayerRank( index, Choosen ) {
	new szTitle[ 101 ], szChoosen[ 5 ];
	formatex( szTitle, cm( szTitle ), "Change \r%s\y Rank To:", get_nick( Choosen ) );
	new menu = menu_create( szTitle, "PlayerRank_Handler" );
	
	num_to_str( Choosen, szChoosen, cm( szChoosen ) );	
	
	for( new i = 0; i < sizeof( g_mPlayerData ); i++ )
		menu_additem( menu, g_mPlayerData[ i ][ m_szRankName ], szChoosen );

	menu_display( index, menu );
	return PLUGIN_HANDLED;
}

public PlayerRank_Handler( id, menu, item ) {
	if( item == MENU_EXIT ) {
		menu_destroy( menu );
		return PLUGIN_HANDLED;
	}
	
	new item_access, callback;
	new info[ 64 ], name[ 32 ];
	
	menu_item_getinfo( menu, item, item_access, info, cm( info ), name, cm( name ), callback );
	
	new player = str_to_num( info );
	
	g_iPlayerXP[ player ] = g_mPlayerData[ item ][ m_iRankXP ];
	g_iPlayerLevel[ player ] = item;
	
	set_dhudmessage( 0, random( 256 ), 0, -1.0, 0.60, 1, 3.0, 3.0, 1.5, 1.5 );
	show_dhudmessage( player, "ADMIN: %s Has Changed Your Rank To^n^n-= %s =-",
	get_nick( id ),
	g_mPlayerData[ g_iPlayerLevel[ player ] ][ m_szRankName ] );
	client_cmd( player, "mp3 play sound/%s", g_sLevelUp );
	
	menu_destroy( menu );
	return PLUGIN_HANDLED;
}	
	
public plugin_end( ) {
	nvault_close( g_Vault );
}

///////////////////////////////////
/* 	STOCKS			 */
///////////////////////////////////
stock Color( id, String[ ], any:... ) {
	static szMsg[ 192 ];
	vformat( szMsg, charsmax( szMsg ), String, 3 );
	
	replace_all( szMsg, charsmax( szMsg ), "!n", "^1" );
	replace_all( szMsg, charsmax( szMsg ), "!t", "^3" );
	replace_all( szMsg, charsmax( szMsg ), "!g", "^4" );
	
	static msgSayText = 0;
	if( !msgSayText ) msgSayText = get_user_msgid( "SayText" );
	
	new Players[ 32 ], iNum = 1, i; 
	
	if( id ) Players[ 0 ] = id;    
	else get_players( Players, iNum, "ch" );
	
	for( --iNum; iNum >= 0; iNum-- ) {
		i = Players[ iNum ];
		
		message_begin( MSG_ONE_UNRELIABLE, msgSayText, _, i );
		write_byte( i );
		write_string( szMsg );
		message_end( );
	}
} 

stock get_nick( index ) {
	new szName[ 32 ]; get_user_name( index, szName, cm( szName ) );
	return szName;
}

//////////////////////////////////
/* 	SAVE/LOAD STOCKS	*/
//////////////////////////////////
stock SaveData( index ) {
	new /*szAuthID[ 35 ], */szData[ 64 ];
	//get_user_authid( index, szAuthID, cm( szAuthID ) );
	
	new szName[ 32 ]; 
	get_user_name( index, szName, cm( szName ) );
	
	formatex( szData, cm( szData ), "%i %i", g_iPlayerXP[ index ], g_iPlayerLevel[ index ] );
	
	nvault_set( g_Vault, szName, szData );
}

stock LoadData( index ) {
	new /*szAuthID[ 35 ],*/ szData[ 64 ];
	//get_user_authid( index, szAuthID, cm( szAuthID ) );
	
	new szName[ 32 ]; 
	get_user_name( index, szName, cm( szName ) );
	
	new XP[ 32 ], LVL[ 15 ];
	
	if( nvault_get( g_Vault, szName, szData, cm( szData ) ) &&
	parse( szData, XP, 31, LVL, 14 ) ) {
		g_iPlayerXP[ index ] = str_to_num( XP );
		g_iPlayerLevel[ index ] = str_to_num( LVL );
	} else {
		g_iPlayerXP[ index ] = 0;
		g_iPlayerLevel[ index ] = 0;
	}
}
Съветвам те да компилираш с 1.8.3 компилатор.
Tired and retired...

Аватар
cgozzie
Извън линия
Потребител
Потребител
Мнения: 1319
Регистриран на: 13 Окт 2016, 22:10
Местоположение: Варна
Се отблагодари: 245 пъти
Получена благодарност: 43 пъти

XP Rank System

Мнение от cgozzie » 12 Ное 2017, 21:53

Онлайн с 1.8.3 се пробвах да го компелирам но дава тези грешка.
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team

rank_system.sma(142) : error 017: undefined symbol "set_dhudmessage"
rank_system.sma(143) : error 017: undefined symbol "show_dhudmessage"
rank_system.sma(275) : error 017: undefined symbol "set_dhudmessage"
rank_system.sma(276) : error 017: undefined symbol "show_dhudmessage"

4 Errors.
Could not locate output file rank_system.amx (compile failed).
Изображение

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

XP Rank System

Мнение от OciXCrom » 12 Ное 2017, 22:02

Онлайн с 1.8.3 се пробвах да го компелирам но дава тези грешка.
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Ъ... Иначе #include <dhudmessage> трябва да се добави.

Аватар
cgozzie
Извън линия
Потребител
Потребител
Мнения: 1319
Регистриран на: 13 Окт 2016, 22:10
Местоположение: Варна
Се отблагодари: 245 пъти
Получена благодарност: 43 пъти

XP Rank System

Мнение от cgozzie » 12 Ное 2017, 22:37

Мда батка прав си както винаги.
Изображение

Аватар
metamod
Извън линия
Потребител
Потребител
Мнения: 63
Регистриран на: 07 Апр 2018, 11:06
Се отблагодари: 4 пъти
Обратна връзка:

XP Rank System

Мнение от metamod » 07 Апр 2018, 15:53

Здравейте,възможно ли е някой да направи и за чата да излиза пред името кой ранк си ?
CS-DOWN.bg # RespawN IP: 93.123.18.42:27015

Аватар
ElitePower
Извън линия
Потребител
Потребител
Мнения: 547
Регистриран на: 13 Окт 2016, 14:20
Се отблагодари: 7 пъти
Получена благодарност: 13 пъти

XP Rank System

Мнение от ElitePower » 07 Апр 2018, 16:57

Този плъгин ще ти свърши работа -> https://blog.4vendeta.com/ranks-admin-prefix/

Аватар
metamod
Извън линия
Потребител
Потребител
Мнения: 63
Регистриран на: 07 Апр 2018, 11:06
Се отблагодари: 4 пъти
Обратна връзка:

XP Rank System

Мнение от metamod » 08 Апр 2018, 15:01

Ще можели да ми кажете какви са cvar-ите на този плъгин който е постнал @Nikolow със който се променят на убийство колко XP да дава?
CS-DOWN.bg # RespawN IP: 93.123.18.42:27015

Аватар
illusion
Извън линия
Developer
Developer
Мнения: 1810
Регистриран на: 27 Ное 2016, 17:47
Местоположение: CraftVision
Се отблагодари: 151 пъти
Получена благодарност: 370 пъти
Обратна връзка:

XP Rank System

Мнение от illusion » 08 Апр 2018, 17:16

metamod написа: 08 Апр 2018, 15:01 Ще можели да ми кажете какви са cvar-ите на този плъгин който е постнал @Nikolow със който се променят на убийство колко XP да дава?
Няма такива cvar-ове тук..

Аватар
Red
Извън линия
Потребител
Потребител
Мнения: 31
Регистриран на: 07 Апр 2018, 10:02
Местоположение: България
Обратна връзка:

XP Rank System

Мнение от Red » 08 Апр 2018, 18:21

metamod написа: 08 Апр 2018, 15:01 Ще можели да ми кажете какви са cvar-ите на този плъгин който е постнал @Nikolow със който се променят на убийство колко XP да дава?
Ти прочете ли този линк който ти го даде @ElitePower? - Явно не си го прочел..
Нищо аз ще ти го постна тук ето ти линк за изтегляне.

CVARS:

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

xp_points_kill „1“ – колко точки да дава на нормално убийство
xp_points_hs „2“ – колко точки да дава на убийство с глава
xp_points_he „3“ – колко точки да дава на убийство с граната
xp_points_knife „5“ – колко точки да дава на убийство с нож

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

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

Кой е на линия

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