PDA

View Full Version : [Modify/merge plugins] Image rank system


4ever16
12-25-2016, 23:54
Hello!
Read what i want last! This is what you need or what you can take ideas from.
Download .spr here
http://www61.zippyshare.com/v/7aWK2dsZ/file.html
http://www61.zippyshare.com/v/GSlho6eo/file.html

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <engine>
#include <xs>

#include <hamsandwich>

#define PLUGIN "spriteFixer"
#define VERSION "1.0"
#define AUTHOR "AMXX.PL Team"

#define SPRITES_PER_PLAYER 3
#define MAX_PLAYERS 33

#define AUTH_STEAM 2

new const spriteClass[] = "spriteFix";

new pcv_dp_r_id_provider;

new bool:gbHaveSprite[MAX_PLAYERS];
new giEntsIds[MAX_PLAYERS][SPRITES_PER_PLAYER];
new Float:gfOffset[MAX_PLAYERS][SPRITES_PER_PLAYER][2];
new Float:gfOffsetLen[MAX_PLAYERS][SPRITES_PER_PLAYER];
new Float:gfPosition[MAX_PLAYERS][3];
new Float: fBob[ MAX_PLAYERS ] ,
Float: fBobUp[ MAX_PLAYERS ]


public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);

register_forward(FM_AddToFullPack, "fwAddToFullPack", 0 );

register_think( spriteClass, "fwSpriteThink");

pcv_dp_r_id_provider = get_cvar_pointer("dp_r_id_provider");

if( !pcv_dp_r_id_provider ){
state onlysteam;
}
else {
state dproto;
}
}

public client_disconnect(id){
for(new i=0;i<SPRITES_PER_PLAYER;i++){
if(pev_valid(giEntsIds[id][i])){
remove_entity(giEntsIds[id][i]);
}
giEntsIds[id][i] = 0;
}
}

public client_authorized(id){

checkUserCvars( id );

gbHaveSprite[id] = false;
}

public checkUserCvars( id ){

if( !is_user_steam( id ) ){

fBob[ id ] = 0.01;
fBobUp[ id ] = 0.5;

return PLUGIN_CONTINUE;
}

query_client_cvar( id , "cl_bob" , "clBobResult" )
query_client_cvar( id , "cl_bobup" , "clBobUpResult" )

return PLUGIN_CONTINUE;
}

public clBobResult(id, const cvar[], const value[]){
fBob[ id ] = str_to_float( value );
}

public clBobUpResult(id, const cvar[], const value[]){
fBobUp[ id ] = str_to_float( value );
}

public resetUserCvars( id ){

client_cmd( id , "cl_bob %f" , fBob[ id ] );
client_cmd( id , "cl_bobup %f" , fBobUp[ id ] );

}

public setUserCvars( id ){

client_cmd( id , "cl_bob 0" );
client_cmd( id , "cl_bobup 0" );

}

public plugin_natives(){
register_native("addPlayerSprite","addSprite");

register_native( "setSpriteFX" , "setSpriteFX" , 1 );
register_native( "setSpriteRender" , "setSpriteRender" , 1 );
register_native( "setSpriteColor" , "setSpriteColor" , 1 );
register_native( "setSpriteSequence" , "setSpriteSequence" , 1 );
register_native( "setSpriteScale" , "setSpriteScale" , 1 );
register_native( "setSpriteFrameRate" , "setSpriteFrameRate" , 1 );
register_native( "setSpriteAmount" , "setSpriteAmount" , 1 );

register_native( "setSpriteAngle" , "setSpriteAngle" , 1 );
}

public setSpriteFX( id , indexSprite , fx ){

if( checkSprite( id , indexSprite ) ){

return PLUGIN_CONTINUE;

}

set_pev( giEntsIds[ id ][ indexSprite - 1 ] , pev_renderfx , fx );

return PLUGIN_CONTINUE;
}

public setSpriteRender( id , indexSprite , render ){

if( checkSprite( id , indexSprite ) ){

return PLUGIN_CONTINUE;

}

set_pev( giEntsIds[ id ][ indexSprite - 1 ] , pev_rendermode , render );

return PLUGIN_CONTINUE;

}

public setSpriteColor( id , indexSprite , Float: fColor[ 3 ] ){

if( checkSprite( id , indexSprite ) ){

return PLUGIN_CONTINUE;

}

set_pev( giEntsIds[ id ][ indexSprite - 1 ] , pev_rendercolor , fColor );

return PLUGIN_CONTINUE;
}

public setSpriteSequence( id , indexSprite , iSequence ){

if( checkSprite( id , indexSprite ) ){

return PLUGIN_CONTINUE;

}

set_pev( giEntsIds[ id ][ indexSprite - 1 ] , pev_sequence , iSequence );

return PLUGIN_CONTINUE;
}

public setSpriteScale( id , indexSprite , Float: fScale ){

if( checkSprite( id , indexSprite ) ){

return PLUGIN_CONTINUE;

}

set_pev( giEntsIds[ id ][ indexSprite - 1 ] , pev_scale , fScale );

return PLUGIN_CONTINUE;
}

public setSpriteFrameRate( id , indexSprite , Float: fFrameRate ){

if( checkSprite( id , indexSprite ) ){

return PLUGIN_CONTINUE;

}

set_pev( giEntsIds[ id ][ indexSprite - 1 ] , pev_framerate , fFrameRate );

return PLUGIN_CONTINUE;
}

public setSpriteAmount( id , indexSprite , Float: fAmount ){

if( checkSprite( id , indexSprite ) ){

return PLUGIN_CONTINUE;

}

set_pev( giEntsIds[ id ][ indexSprite - 1 ] , pev_renderamt , fAmount );

return PLUGIN_CONTINUE;
}

public setSpriteAngle( id , indexSprite , Float: fAngle ){

if( checkSprite( id , indexSprite ) ){

return PLUGIN_CONTINUE;

}

gfOffset[id][ indexSprite ][ 0 ] = fAngle;

return PLUGIN_CONTINUE;
}


bool: checkSprite( id , indexSprite ){
return bool: ( indexSprite <= 0 || !pev_valid( giEntsIds[ id ][ indexSprite - 1 ] ) );
}

public addSprite(plugin,params){
if(params < 7){
log_amx("addSprite zbyt malo parametrow!");
return 0;
}
new ent = create_entity("env_sprite");

new id = get_param(1);

set_pev(ent, pev_classname, spriteClass );
set_pev(ent, pev_solid, SOLID_NOT);
set_pev( ent, pev_movetype, MOVETYPE_FLY );

new szModel[256]
get_string(4, szModel, charsmax(szModel));

entity_set_model(ent, szModel);
entity_set_size(ent, Float:{-1.0, -1.0, -1.0}, Float:{1.0, 1.0, 1.0});


set_pev(ent, pev_scale, get_param_f(2));
set_pev(ent, pev_owner, id);
set_pev(ent, pev_framerate, get_param_f(3));

new Float:fLTime = get_param_f(7);

new iIndex = addFixedSprite(id, ent, get_param_f(5), get_param_f(6), get_param_f(8), fLTime);

if( !iIndex ){
remove_entity(ent);
return 0;
}

if( !gbHaveSprite[ id ] ){
setUserCvars( id );
}

gbHaveSprite[id] = true;

if(fLTime >= 0.0){
set_pev(ent, pev_nextthink, get_gametime()+fLTime);
}

return iIndex;
}

public ent_get(id){
for(new i=0;i<SPRITES_PER_PLAYER;i++){
if(giEntsIds[id][i] == 0){
return i;
}
}
return -1;
}

/**
* Dodaje do kolejki nowy byt
*
* @param id Gracz
* @param ent Byt
* @param fOffset Przesuniecie katowe (tarcza zegara)
* @param fOffsetLen Odleglosc od srodka ekranu
* @param fOffsetDistance Odleglosc od gracza
*/
addFixedSprite(id, ent, const Float:fOffset, Float:fOffsetLen, Float:fOffsetDistance, Float:fLTime = -1.0){
new index = ent_get(id);
if(index == -1){
return 0;
}

gfOffset[id][index][0] = fOffset;
gfOffset[id][index][1] = fOffsetLen;

gfOffsetLen[id][index] = fOffsetDistance;
giEntsIds[id][index] = ent;

if(fLTime >= 0.0)
set_pev(ent, pev_ltime, get_gametime()+fLTime);
else
set_pev(ent, pev_ltime, 0.0);

getPosition(id);

return index + 1;
}
removeFixedSprite(id, ent){
new index = -1;
for(new i=0;i<SPRITES_PER_PLAYER;i++){
if(giEntsIds[id][i] == ent){
index = i;
break;
}
}

if(index < 0){
gbHaveSprite[id] = false;

resetUserCvars( id );

return;
}

giEntsIds[id][index] = 0;
gfOffsetLen[id][index] = 0.0;

xs_vec_copy(Float:{0.0,0.0,0.0}, gfOffset[id][index]);
}
public fwAddToFullPack(es_handle, e, ENT, HOST, hostflags, player, set){
if(player || !pev_valid( ENT ) ) return FMRES_IGNORED;

new szClassName[ 64 ];

pev( ENT , pev_classname , szClassName , charsmax( szClassName ) );

if( !equal( szClassName , spriteClass ) ){
return FMRES_IGNORED;
}

for(new i=0;i<SPRITES_PER_PLAYER;i++){

if(giEntsIds[HOST][i] == ENT){

getPosition( HOST );

new Float:fAngles[3];
new Float:fVector[3];

pev(HOST, pev_v_angle, fAngles);

angle_vector(fAngles, ANGLEVECTOR_FORWARD, fVector);
xs_vec_mul_scalar(fVector, gfOffsetLen[HOST][i], fVector);

fAngles[2] = gfOffset[HOST][i][0];
angle_vector(fAngles, ANGLEVECTOR_RIGHT, fAngles);

xs_vec_mul_scalar(fAngles, gfOffset[HOST][i][1], fAngles);

xs_vec_add(gfPosition[HOST], fVector, fVector);
xs_vec_add(fVector, fAngles, fVector);

set_pev(giEntsIds[HOST][i], pev_origin, fVector);

set_es( es_handle , ES_Origin , fVector );

return FMRES_HANDLED;
}

}

set_es( es_handle , ES_Scale , 0.001 );
set_es( es_handle , ES_Origin , { 9999.0 , 9999.0 , 9999.0 } );

return FMRES_HANDLED;
}
public fwSpriteThink(ent){
if(!pev_valid(ent))
return PLUGIN_CONTINUE;

new Float:fNow = get_gametime();
new Float:fLTime;
if(pev(ent, pev_ltime, fLTime) && fLTime > 0.0 && fLTime <= fNow){
removeFixedSprite(pev(ent, pev_owner), ent);
remove_entity(ent);
}
else
set_pev(ent, pev_nextthink, fNow+0.1);
return PLUGIN_CONTINUE;
}
getPosition(id){
pev(id, pev_origin, gfPosition[id]);

static Float:fOffset[3];
pev(id, pev_view_ofs, fOffset);

xs_vec_add(gfPosition[id], fOffset, gfPosition[id]);
}

stock bool: is_user_steam(id) <dproto>
{
if( is_user_bot( id ) ){
return false;
}

server_cmd("dp_clientinfo %d", id);
server_exec();

static uClient;
uClient = get_pcvar_num(pcv_dp_r_id_provider);

if ( uClient == AUTH_STEAM )
return true;

return false;
}

stock bool: is_user_steam(id) <onlysteam>
{
return !is_user_bot( id );

#pragma unused id
}

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

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

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

#define MAXLEVEL 13
#define MAXAUTH 4

native setSpriteRender( id , indexSprite , render );
native addPlayerSprite(id,Float:scale,Float:frameRat e,szModel[],Float:fAngle, Float:fLen, Float:fTime,Float:fDistance , bool: bTransparent );

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

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

new const g_mPlayerData[ ][ mData ] = {
{"MG 1", "sprites/test1.spr", 0},
{"RankName test", "sprites/slowdown3.spr", 50},
{"RankName", "sprites/slowdown3.spr", 200},
{"RankName", "sprites/slowdown3.spr", 350},
{"RankName", "sprites/slowdown3.spr", 600},
{"RankName", "sprites/slowdown3.spr", 1000},
{"RankName", "sprites/slowdown3.spr", 1500},
{"RankName", "sprites/slowdown3.spr", 2500},
{"RankName", "sprites/slowdown3.spr", 5000},
{"RankName", "sprites/slowdown3.spr", 8250},
{"RankName", "sprites/slowdown3.spr", 13500},
{"RankName", "sprites/slowdown3.spr", 20000},
{"RankName", "sprites/slowdown3.spr", 30000},
{"RankName", "sprites/slowdown3.spr", 40000},
{"RankName", "sprites/slowdown3.spr", 50000},
{"RankName", "sprites/slowdown3.spr", 60000},
{"RankName", "sprites/slowdown3.spr", 70000},
{"RankName", "sprites/slowdown3.spr", 100000},
{"RankName", "sprites/slowdown3.spr", 150000}
};

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 .rank", "cmdToggleHud" );
register_clcmd( "say /manage", "cmdManagePlayers" );
register_clcmd("say", "handle_say")
register_clcmd("say_team", "handle_team_say")

set_task(1.0, "taskSprite", _, _, _, "b");
}

public taskSprite(){
for(new i ; i < 33 ; i++ ){
if( ! is_user_alive(i))
continue;
addPlayerSprite(i, 0.02, 10.0, g_mPlayerData[g_iPlayerLevel[i]][m_szRankSprite], 0.0, -10.0, 1.0, 50.0, true);
}
}

public plugin_precache( ) {
precache_sound( g_sLevelUp );
for(new i ; i < sizeof g_mPlayerData ; i++ )
precache_model(g_mPlayerData[i][m_szRankSprite])
}

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 ] += 5;

else if( HeadShot )
g_iPlayerXP[ iKiller ] += 1;

else if( weapon == CSW_KNIFE && !HeadShot )
g_iPlayerXP[ iKiller ] += 1;

else if( weapon != CSW_KNIFE && !HeadShot )
g_iPlayerXP[ iKiller ] += 1;
else
g_iPlayerXP[ iKiller ] += 1;

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.51, 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 ],
get_timeleft( ) / 60,
get_timeleft( ) % 60,
g_mPlayerAuth[ g_iPlayerStatus[ id ] ] );
} else {
show_hudmessage(id, "[ Rank: %s ]^n[ XP: %i / %i ]",
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;
}
}
public handle_say(id){
new chat[192], none[2][32], message[192], name[192]
read_argv(1, chat, sizeof(chat) -1)
formatex(none[0], sizeof(none) -1, ""), formatex(none[1], sizeof(none) -1, " ")

if(!equali(chat, none[0]) && !equali(chat, none[1]))
{
get_user_name(id, name, sizeof(name) -1)
if(!is_user_alive(id))
{
formatex(message, sizeof(message) -1, "!g[%s]!n *DEAD* %s : %s", g_mPlayerData[ g_iPlayerLevel[ id ] ][ m_szRankName ], name, chat)
}
else
{
formatex(message, sizeof(message) -1, "!g[%s]!n %s : %s", g_mPlayerData[ g_iPlayerLevel[ id ] ][ m_szRankName ], name , chat)
}
Color(0, message)
}
return PLUGIN_HANDLED_MAIN;
}
public handle_team_say(id){
new chat[192], none[2][32], message[192], message2[192], name[192]
read_argv(1, chat, sizeof(chat) -1)
formatex(none[0], sizeof(none) -1, ""), formatex(none[1], sizeof(none) -1, " ")

if(!equali(chat, none[0]) && !equali(chat, none[1]))
{
get_user_name(id, name, sizeof(name) -1)
switch(cs_get_user_team(id))
{
case CS_TEAM_CT: {
if(!is_user_alive(id))
formatex(message, sizeof(message) -1, "!g[%s]!n (Counter-Terrorists) *DEAD* %s : %s", g_mPlayerData[ g_iPlayerLevel[ id ] ][ m_szRankName ], name, chat)
else
formatex(message, sizeof(message) -1, "!g[%s]!n (Counter-Terrorists) %s : %s", g_mPlayerData[ g_iPlayerLevel[ id ] ][ m_szRankName ], name, chat)
new iPlayers[32], iNum, iPid
get_players(iPlayers, iNum)
for(new i; i < iNum; i++)
{
iPid = iPlayers[i]
if(cs_get_user_team(iPid) != CS_TEAM_CT)
continue;

Color(iPid, message)
}
}
case CS_TEAM_T: {
if(!is_user_alive(id))
formatex(message2, sizeof(message2) -1, "!g[%s]!n (Terrorists) *DEAD* %s : %s", g_mPlayerData[ g_iPlayerLevel[ id ] ][ m_szRankName ], name, chat)
else
formatex(message2, sizeof(message2) -1, "!g[%s]!n (Terrorists)^3 %s : %s", g_mPlayerData[ g_iPlayerLevel[ id ] ][ m_szRankName ], name, chat)
new iPlayers[32], iNum, iPid
get_players(iPlayers, iNum)
for(new i; i< iNum; i++)
{
iPid = iPlayers[i]
if(cs_get_user_team(iPid) != CS_TEAM_T)
continue

Color(iPid, message2)
}
}
}
return PLUGIN_HANDLED_MAIN;
}
return PLUGIN_CONTINUE;
}

So what do i need?
I need to show all online player ranks instead of everyone only see their own rank.
How it is now.

[Your own Rank: Silver 1] .spr somewhere
[XP: 50/100]

I need the plugin to show like this.

Player nick 1 [Rank: Silver 1] .spr for his rank.
Player nick 2 [Rank: Silver 1] .spr for his rank.
Player nick 3 [Rank: Silver 1] .spr for his rank.
etc...

This should be on and off so it doesnt desturb players.
.liverankon
.liverankoff somethink like that or same command .liverank to on and off.

Do you understand what i want?
Is it possible?

PS! If you are testing these plugins you must have both of them running for it to work!

4ever16
12-26-2016, 00:03
To the left the .smas which i posted and .sprs (.spr is wrong placed but yeah)
To the right an example of what i need/are asking for.

And yes its for pug so max 10 players in the hud message.

https://i.imgsafe.org/0a3f408850.png

mahdi
12-26-2016, 01:08
now who have it i really need it !

4ever16
12-26-2016, 03:55
Here is a video of the existing plugin.
Sry for the quality and all thos hud messages, important thing is the rank system.

As you can see in the video i show you how it works manually.
As i can see it this could BE DONE! Its not impossible!

https://www.youtube.com/watch?v=g95O_ZsTau4

4ever16
02-03-2017, 18:42
If someone is interessted here is a example of a plugin for this.
Yes the sprites move wierd but i know how to fix it.
I cant fix it cause i dont own the .sma files just the .amxx with just couple of ranks and a wierd points system which is fucked up so i cant use it before i get axess to .sma

https://www.youtube.com/watch?v=fgHcI2mDOZw

So if someone want this plugin also pleas contact me.
I know the person whos made it.
So im only searching for people who want to buy this plugin with me so it gets cheaper for me.
I will buy it anyway but want to get it as cheap as possible so lets get togheter an buy it togheter.
The price? Yeah we can take it IN PM!

If you have questions or more please just send me a PM!