Witam, czy mógłby ktoś mi pomóc w przeróbce pluginu tak, aby w pluginie odpowiadajacym za informacje na Hudzie byly rowniez informacje o aktualnej randze gracza, oraz poniżej postęp do następnej rangi?
HUD:
Spoiler
#include <amxmodx>
#include <amxmisc>
#include <csx>
#define PLUGIN "HUD"
#define AUTHOR "glut"
#define VERSION "1.0"
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
}
public pokaz_hud(id)
{
new izStats[ 8 ], izBody[ 8 ];
new hp = get_user_health(id)
new name [33]
get_user_name(id,name,32)
new rank = get_user_stats( id, izStats, izBody )
if(is_user_connected(id))
{
set_hudmessage(255, 0, 255, 0.05, 0.17, 0, 6.0, 12.0)
show_hudmessage(id, "Nick: %s^nHP: %i^nRank: %i^nForum: -----",name,hp,rank)
}
else
{
remove_task(id)
}
return PLUGIN_HANDLED
}
public client_putinserver(id)
{
set_task(1.0, "pokaz_hud", id,_,_,"b");
}
Rangi:
Spoiler
#include <amxmodx>
#include <csx>
#define AUTHOR "aSior - amxx.pl/user/60210-asior/"
new const ConfigFilePath[] = "addons/amxmodx/configs/RanksConfig.ini";
new Array:RankName,
Array:RankMinimumFrags,
Array:RankMaximumFrags,
UserRank[33],
RanksCount,
PlayerName[33];
new const RankListMenuCommands[][] =
{
"say /rangi",
"say_team /rangi",
"say /ranga",
"say_team /ranga",
"say /listarang",
"say_team /listarang"
};
public plugin_init()
{
register_plugin("x", "v0.1", AUTHOR);
register_message(get_user_msgid("SayText"),"handleSayText");
for(new i=0; i < sizeof RankListMenuCommands; i++)
register_clcmd(RankListMenuCommands[i], "MainMenu");
}
public client_authorized(index)
GetUserRank(index);
public GetUserRank(index)
{
if(RanksCount == 0)
return;
static stats[8], body[8]
get_user_stats(index, stats, body);
for(new i=0; i < ArraySize(RankName); i++)
{
if(stats[0] >= ArrayGetCell(RankMinimumFrags, i) && stats[0] <= ArrayGetCell(RankMaximumFrags, i))
{
UserRank[index] = i;
return;
}
}
return;
}
public plugin_precache()
LoadConfigFile();
public LoadConfigFile()
{
RankName = ArrayCreate(33, 1);
RankMinimumFrags = ArrayCreate(1, 1);
RankMaximumFrags = ArrayCreate(1, 1);
new LineText[60], Length, DataRead[4][64], Key[33], Value[64];
for(new i=0; read_file(ConfigFilePath, i, LineText, charsmax(LineText), Length); i++)
{
if(LineText[0] == '/' || LineText[0] == ';' || LineText[0] == ' ' || !LineText[0])
continue;
parse(LineText, DataRead[0], charsmax(DataRead[]));
strtok(LineText, Key, charsmax(Key), Value, charsmax(Value), '=');
trim(Value);
strtok(Value, DataRead[1], charsmax(DataRead[]), DataRead[2], charsmax(DataRead[]), '-');
ArrayPushString(RankName, DataRead[0]);
ArrayPushCell(RankMinimumFrags, str_to_num(DataRead[1]));
ArrayPushCell(RankMaximumFrags, str_to_num(DataRead[2]));
RanksCount++;
}
if(RanksCount > 0)
log_amx("Zaladowano: %i rang(i) w zakresie (%i - %i).", RanksCount, ArrayGetCell(RankMinimumFrags, 0), ArrayGetCell(RankMaximumFrags, ArraySize(RankName)-1));
}
public MainMenu(index)
{
new MenuIndex, MenuTitle[64], Item[64], TempRank[64];
ArrayGetString(RankName, UserRank[index], TempRank, charsmax(TempRank));
formatex(MenuTitle, charsmax(MenuTitle), "Twoja ranga: %s (%i / %i)^nLista rang:", TempRank, UserRank[index]+1, ArraySize(RankName));
MenuIndex = menu_create(MenuTitle, "MainMenu_handler");
for(new i=0; i < ArraySize(RankName); i++)
{
ArrayGetString(RankName, i, TempRank, charsmax(TempRank));
formatex(Item, charsmax(Item), "%s (Od: %i || Do: %i)", TempRank, ArrayGetCell(RankMinimumFrags, i), ArrayGetCell(RankMaximumFrags, i));
menu_additem(MenuIndex, Item);
}
menu_display(index, MenuIndex);
return PLUGIN_HANDLED;
}
public MainMenu_handler(index, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public handleSayText(msgId, msgDest, msgEnt)
{
new index = get_msg_arg_int(1);
if(!is_user_connected(index))
return PLUGIN_CONTINUE;
new TempString[2][192], ChatPrefix[33];
get_msg_arg_string(2, TempString[0], charsmax(TempString[]));
ArrayGetString(RankName, UserRank[index], ChatPrefix, charsmax(ChatPrefix));
format(ChatPrefix, charsmax(ChatPrefix), "^x03[^x04%s^x03]", ChatPrefix);
if(!equal(TempString[0], "#Cstrike_Chat_All"))
{
add(TempString[1], charsmax(TempString[]), "^x01");
add(TempString[1], charsmax(TempString[]), ChatPrefix);
add(TempString[1], charsmax(TempString[]), " ");
add(TempString[1], charsmax(TempString[]), TempString[0]);
}
else
{
get_user_name(index, PlayerName, charsmax(PlayerName));
get_msg_arg_string(4, TempString[0], charsmax(TempString[]));
set_msg_arg_string(4, "");
add(TempString[1], charsmax(TempString[]), "^x01");
add(TempString[1], charsmax(TempString[]), ChatPrefix);
add(TempString[1], charsmax(TempString[]), "^x03 ");
add(TempString[1], charsmax(TempString[]), PlayerName);
add(TempString[1], charsmax(TempString[]), "^x01 : ");
add(TempString[1], charsmax(TempString[]), TempString[0])
}
set_msg_arg_string(2, TempString[1]);
return PLUGIN_CONTINUE;
}
ranks.ini:
Spoiler
"Silver I" = 0-19
"Silver II" = 20-49
"Silver III" = 50-99
"Silver IV" = 100-159
"Silver Elite" = 160-259
"Silver Elite Master" = 260-399
"Gold I" = 400-499
"Gold II" = 500-599
"Gold III" = 600-699
"Gold Master" = 700-849
"Master Guardian I" = 850-999
"Master Guardian II" = 1000-1169
"Master Guardian Elite" = 1170-1349
"Distinguished Master Guardian" = 1350-1539
"Legendary Eagle" = 1540-1699
"Legendarz Eagle Master" = 1700-1849
"Supreme Master" = 1850-1999
"The Global Elite" = 1999-2199
"Elita Serwera!" = 2200-5000
Użytkownik AloneInTheDark edytował ten post 13.08.2018 21:54