#include <amxmodx>
#include <amxmisc>
#include <csstats>
#include <csx>
#include <hamsandwich>
#include <fakemeta>
new bool:paylastin[33]
#define HUD_INTERVAL 1.0
#define RANK_NOTHING 0
#define RANK_PRIVATE 1
#define RANK_PRIVATE_FIRST_CLASS 2
#define RANK_CORPORAL 3
#define RANK_SERGEANT 4
#define RANK_STAFF_SERGEANT 5
#define RANK_GUNNERY_SERGEANT 6
#define RANK_MASTER_SERGEANT 7
#define RANK_COMMAND_SERGEANT 8
#define RANK_SECOND_LIEUTENANT 9
#define RANK_FIRST_LIEUTENANT 10
#define RANK_COLONEL 11
#define RANK_BRIGADIER_GENERAL 12
#define RANK_MAJOR_GENERAL 13
#define RANK_LIEUTENANT_GENERAL 14
#define RANK_GENERAL 15
#define RANK_GENERAL_OF_THE_ARMY 16
#define MAXRANKS 17
new PlayerRank[33]
#define UPDATE_INTERVAL 0.5
#define TID_TIMER 26642
#define _Set(%1,%2) %1|=1<<%2
#define _UnSet(%1,%2) %1&=~(1<<%2)
#define _Is(%1,%2) (%1&1<<%2)
new _alive, _in_server
new g_max_players
new g_timer_entid
new Float:g_t_time
new g_HSO
new g_team_color
new g_enabled
new g_details
new g_req_flags
new g_dead_only
new g_target[33]
new g_name[33][32]
new g_team[33]
new const rankNames[MAXRANKS][] =
{
"Onbasi",
"Cavus",
"Uzman",
"Astsubay",
"Astegmen",
"Tegmen",
"Ustegmen",
"Yuzbasi",
"Binbasi",
"Yarbay",
"Albay",
"Tuggeneral",
"Tumgeneral",
"Korgeneral",
"Orgeneral",
"GenelKurmay Baskani",
"Maresal"
}
new const rankXP[MAXRANKS] =
{
0, 50, 100, 200, 300, 400, 500, 750, 1000, 1500, 2000, 2500, 3000, 4000, 5000, 10000, 20000
}
public plugin_init()
{
register_plugin("Rank Display", "0.1","gaben")
register_clcmd("say /rp", "rankpaylas")
register_message(get_user_msgid("StatusValue"), "update_target")
register_message(get_user_msgid("Health"), "update_hp")
register_message(get_user_msgid("Battery"), "update_ap")
register_message(get_user_msgid("CurWeapon"), "update_weapon")
register_event("TeamInfo", "join_team","a")
register_event("HLTV", "update_cvars", "a", "1=0", "2=0")
RegisterHam(Ham_Spawn, "player", "Player_Spawn", 1)
RegisterHam(Ham_Killed, "player", "Player_Killed", 1)
g_max_players = get_maxplayers()
g_HSO = CreateHudSyncObj()
create_timer()
}
public client_putinserver(id)
{
set_task(HUD_INTERVAL, "ShowHUD", id)
return PLUGIN_HANDLED
}
public rankpaylas(id)
{
if(paylastin[id] == false){
static stats[8], stats2[4], body[8]
new rank_pos = get_user_stats(id, stats, body);
new max_rank = get_statsnum();
get_user_stats2(id, stats2);
new name[32];
get_user_name(id,name,31)
new currentPlayerRank = 0;
while
(currentPlayerRank < (MAXRANKS - 1))
{
if(stats[0] >= rankXP[currentPlayerRank + 1])
++currentPlayerRank;
else
break;
}
renkli_yazi(0,"!t%s : !nTop15 Siralamam : [ !g%d / %d !n] !g| !nRutbem : [ !g%s !n]",name,rank_pos, max_rank,rankNames[currentPlayerRank])
paylastin[id] = true
set_task(60.0,"paylasabilirsin",id)
}
else
renkli_yazi(id,"!nRank & Rutbe Bilgini !g30 Saniyede !nBir Paylasabilirsin!")
}
public paylasabilirsin(id){
if(is_user_connected(id)){
paylastin[id] = false
}
}
public ShowHUD(id)
{
if(!is_user_connected(id))
return 0
static stats[8], hits[8], name[33]
get_user_stats(id, stats, hits)
get_user_name(id, name, 32)
new currentPlayerRank = 0;
while
(currentPlayerRank < (MAXRANKS - 1))
{
if(stats[0] >= rankXP[currentPlayerRank + 1])
++currentPlayerRank;
else
break;
}
new leftkills = stats[0];
new right = rankXP[currentPlayerRank + 1]
new bodyhits[8],irank
irank = get_user_stats(id,stats,bodyhits)
//I have no idea why you are storing the rank here, maybe you're planning to use it later
PlayerRank[id] = currentPlayerRank;
set_hudmessage(0, 255, 0, -0.1, -0.1, 0, 6.0, 12.0)
show_hudmessage(id, "%s : [Rutben: %s] ^nFrag: [%i / %i] | Rank: [%i]", name, rankNames[currentPlayerRank], leftkills, right,irank)
set_task(HUD_INTERVAL, "ShowHUD", id)
return PLUGIN_HANDLED
}
public create_timer(){
g_timer_entid = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString,"info_target"))
if(pev_valid(g_timer_entid)){
set_pev(g_timer_entid, pev_classname, "ti_timer")
global_get(glb_time, g_t_time)
set_pev(g_timer_entid, pev_nextthink, g_t_time + UPDATE_INTERVAL)
register_forward(FM_Think, "fwd_Think")
}else{
log_amx("Warning: Failed to create timer entity, using task instead.")
set_task(UPDATE_INTERVAL, "timer_cycle", TID_TIMER, "", 0, "b")
}
}
public fwd_Think(Ent){
if(Ent != g_timer_entid)
return FMRES_IGNORED
g_t_time += UPDATE_INTERVAL
set_pev(Ent, pev_nextthink, g_t_time)
timer_cycle()
return FMRES_IGNORED
}
public timer_cycle(){
static id, cache[512], tar, pos
if(!g_enabled)
return
for(id = 1; id<=g_max_players; id++){
if(!_Is(_in_server, id) || (get_user_flags(id)&g_req_flags != g_req_flags))
continue
tar = g_target[id]
if(_Is(_alive, id)){
if(g_dead_only)
continue
}else{
if(pev(id, pev_iuser2) == g_target[id])
tar = g_target[tar]
}
if(tar == 0)
continue
if(g_team_color == 0){
set_hudmessage(250, 150, 50, -1.0, 0.53, 1, _, UPDATE_INTERVAL-0.1, 0.1, 0.1, -1)
}else{
switch(g_team[tar]){
case 1: set_hudmessage(255, 30, 30, -2.0, 0.2, 1, _, UPDATE_INTERVAL-0.1, 0.1, 0.1, -1)
case 2: set_hudmessage(30, 30, 255, -2.0, 0.2, 1, _, UPDATE_INTERVAL-0.1, 0.1, 0.1, -1)
default: set_hudmessage(150, 150, 150, -2.0, 0.2, 1, _, UPDATE_INTERVAL-0.1, 0.1, 0.1, -1)
}
}
new name[32]
get_user_name(id,name,31)
static stats[8], stats2[4], body[8]
new rank_pos = get_user_stats(id, stats, body);
new max_rank = get_statsnum();
get_user_stats2(id, stats2);
new currentPlayerRank = 0;
while
(currentPlayerRank < (MAXRANKS - 1))
{
if(stats[0] >= rankXP[currentPlayerRank + 1])
++currentPlayerRank;
else
break;
}
pos = formatex(cache, 511, "%s", g_name[tar])
if(g_details == 1 || (g_details == 2 && g_team[id] == g_team[tar]))
pos += formatex(cache[pos], 511-pos, "İsim : %s^nTop 15 Siralamasi : %d / %d^nRutbesi : %s",name,rank_pos, max_rank,rankNames[currentPlayerRank])
ShowSyncHudMsg(id, g_HSO, cache)
}
}
/*============================================================
Stocks!
============================================================*/
stock renkli_yazi(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!n", "^x01"); // Default Renk(Sarı)
replace_all(msg, 190, "!g", "^x04"); // Yeşil Renk
replace_all(msg, 190, "!t", "^x03"); // Takım Renk( CT mavi , T kırmızı )
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();
}
}
}
}