Czyli twój sposób normalnie zadziała i bedzie mi aktualizować zabicia od razu tak
Możesz to sprawdzić, wydaje mi się, że zadziała, jednak naoczne ujrzenie efektu to 100% pewność
a mam takie pytanko większość ludzi których pytałem mówilo że ten hud jest zbugowany czy jakbym ci podeslal na pv i wytłumaczyłbym ci jedna rzecz to byłbyś w stanie mnie na coś nakierować lub powiedzieć dlaczego tak jest ?
Chodzi mi dokladnie o awanse tych rang czyli dajmy mam unranked i do silvera 1 potrzebuje 30 zabić i po 30 zabiciach awans sie nie pokazuje tylko potrzeba jeden frag do przodu ;/
Na PW przyjmuję tylko zlecenia płatne. Jeśli chcesz darmowej pomocy to załóż temat na forum. Przypuszczam, że kod odpowiadający za liczenie rang ma buga.
#include <amxmodx>
#include <csx>
#include <cstrike>
#include <fakemeta>
#include <colorchat>
#define PLUGIN "Info Hud I Rangi CsGo", "1.0", "ProToTyp"
#define VERSION "1.0"
#define AUTHOR "ProToTyp"
#define VIP ADMIN_LEVEL_H
#define SVIP ADMIN_LEVEL_G
#define ForArray(%1,%2) for(new %1 = 0; %1 < sizeof %2; %1++)
#define MAX_RANKS 18
#define TASK_DISPLAYHUD 1337
native pobierz_vip(odczydo)
new bool:czas;
new const rankName[MAX_RANKS + 1][] = {
"Unranked",
"Silver I",
"Silver II",
"Silver III",
"Silver IV",
"Silver Elite",
"Silver Elite Master",
"Gold Nova I",
"Gold Nova II",
"Gold Nova III",
"Gold Nova Master",
"Master Guardian I",
"Master Guardian II",
"Master Guardian Elite",
"Distinguished Master Guardian",
"Legendary Eagle",
"Legendary Eagle Master",
"Supreme Master First Class",
"Global Elite"
};
new const rankKills[MAX_RANKS + 1][] = {
{ 0, 29 },
{ 30, 59 },
{ 60, 119 },
{ 120, 209 },
{ 210, 324 },
{ 325, 499 },
{ 500, 729 },
{ 730, 999 },
{ 100, 1399 },
{ 1400, 1849 },
{ 1850, 2299 },
{ 2300, 2899 },
{ 2900, 3549 },
{ 4200, 4999 },
{ 5000, 5899 },
{ 5900, 6899 },
{ 6900, 7999 },
{ 8000, 9299 },
{ 9300, 12000 }
};
new spritesRang[MAX_RANKS + 1];
new const hudToggleCommands[][] = {
"/hud"
};
new hudObject,
hudObject2,
bool:hudEnabled[33];
public plugin_init()
{
register_plugin("P3NER - INFO HUD", "1.0", "ProToTyp - P3NER");
registerCommands(hudToggleCommands, sizeof(hudToggleCommands), "toggleHud");
register_event("StatusValue", "show_icon", "be", "1=2", "2!0");
SprawdzCzas()
hudObject = CreateHudSyncObj();
hudObject2 = CreateHudSyncObj();
register_message(get_user_msgid("SayText"),"handleSayText");
}
public client_putinserver(index)
{
hudEnabled[index] = true;
setHudTask(index);
}
public plugin_precache()
{
spritesRang[1] = precache_model("sprites/dd2_rangi/1.spr");
spritesRang[2] = precache_model("sprites/dd2_rangi/2.spr");
spritesRang[3] = precache_model("sprites/dd2_rangi/3.spr");
spritesRang[4] = precache_model("sprites/dd2_rangi/4.spr");
spritesRang[5] = precache_model("sprites/dd2_rangi/5.spr");
spritesRang[6] = precache_model("sprites/dd2_rangi/6.spr");
spritesRang[7] = precache_model("sprites/dd2_rangi/7.spr");
spritesRang[8] = precache_model("sprites/dd2_rangi/8.spr");
spritesRang[9] = precache_model("sprites/dd2_rangi/9.spr");
spritesRang[10] = precache_model("sprites/dd2_rangi/10.spr");
spritesRang[11] = precache_model("sprites/dd2_rangi/11.spr");
spritesRang[12] = precache_model("sprites/dd2_rangi/12.spr");
spritesRang[13] = precache_model("sprites/dd2_rangi/13.spr");
spritesRang[14] = precache_model("sprites/dd2_rangi/14.spr");
spritesRang[15] = precache_model("sprites/dd2_rangi/15.spr");
spritesRang[16] = precache_model("sprites/dd2_rangi/16.spr");
spritesRang[17] = precache_model("sprites/dd2_rangi/18.spr");
}
public client_disconnected(index)
{
remove_task(index + TASK_DISPLAYHUD);
}
public displayHud(taskIndex)
{
new index = taskIndex - TASK_DISPLAYHUD;
if(!is_user_connected(index) || !hudEnabled[index] || is_user_bot(index))
{
return;
}
new target;
if(!is_user_alive(index))
{
target = pev(index, pev_iuser2);
if(!is_user_alive(target))
{
return;
}
}
else
{
target = index;
}
static userName[33],
requiredKills,
userPosition,
userRankIndex,
userStats[8],
rStats[8],
blank[8];
new konto[20]
if(get_user_flags(target) & SVIP)
konto = "S-VIP"
else if(get_user_flags(target) & VIP)
konto = "VIP"
else
konto = "FREE"
get_user_name(target, userName, charsmax(userName));
userRankIndex = getRankIndex(target);
userPosition = get_user_stats(target, userStats, blank);
get_user_rstats(target, rStats, blank);
userStats[0] += rStats[0]
requiredKills = (userRankIndex + 1 == sizeof(rankKills) ? rankKills[userRankIndex][1] : rankKills[userRankIndex + 1][0]);
set_hudmessage(255, 255, 0, 0.01, 0.13, 0, 1.0, 1.0, 0.1, 0.1);
ShowSyncHudMsg(index, hudObject, "[Nick: %s]^n [Ranga: %s]^n [Zabicia: %i/%i]^n [Ranking: %i/%i]^n [Staty: %i/%i]^n [Konto: %s]^n",
userName, rankName[userRankIndex], userStats[0], requiredKills, userPosition, get_statsnum(), get_user_frags(index), get_user_deaths(index), konto);
new text[256];
new Time[9]
get_time("%H:%M:%S",Time,8)
formatex(text, charsmax(text), "[1Shot4Frags.pl]^n [Godzina: %s]^n [Darmowy VIP: %i:00 - %i:00]",Time,pobierz_vip(1),pobierz_vip(2) )
set_hudmessage(255, 255, 0, -1.0,0.02, 0, 1.0, 1.0, 0.01, 0.01);
ShowSyncHudMsg(index, hudObject2, "%s", text);
}
public show_icon(index)
{
new rank = getRankIndex(index), target = read_data(2);
if(get_user_team(index) == get_user_team(target))
{
create_attachment(index, target, 45, spritesRang[rank], 15);
}
}
getRankIndex(index) {
static userStats[8],
blank[8];
get_user_stats(index, userStats, blank);
if(userStats[0] >= rankKills[sizeof(rankKills) - 1][0])
{
return sizeof(rankKills) - 1;
}
ForArray(i, rankKills) {
if(userStats[0] >= rankKills[i][0])
{
continue;
}
return i - 1;
}
return -1;
}
public toggleHud(index)
{
hudEnabled[index] = !hudEnabled[index]
ColorChat(index, RED, "[HUD]^4 %s", hudEnabled[index]?"Wlaczyles":"Wylaczyles");
if(hudEnabled[index])
{
//wlaczyles
setHudTask(index);
return;
}
//wylaczyles
remove_task(index + TASK_DISPLAYHUD);
}
setHudTask(index) {
set_task(1.0, "displayHud", index + TASK_DISPLAYHUD, .flags = "b");
}
public handleSayText(msgId,msgDest,msgEnt)
{
new id = get_msg_arg_int(1);
if(!is_user_connected(id)) return PLUGIN_CONTINUE;
new szTmp[256],szTmp2[256]
get_msg_arg_string(2,szTmp, charsmax( szTmp ) )
new szPrefix[64]
new param[1]
param[0] = id
static stats[8], body[8]
get_user_stats(id, stats, body)
formatex(szPrefix,charsmax( szPrefix ),"^x04[%s]", rankName[getRankIndex(id)]);
if(!equal(szTmp,"#Cstrike_Chat_All"))
{
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2)," ");
add(szTmp2,charsmax(szTmp2),szTmp);
}
else
{
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2),"^x03 %s:^x01 %s");
}
set_msg_arg_string(2,szTmp2);
return PLUGIN_CONTINUE;
}
public SprawdzCzas(){
new szTime[3] //bool:czas
get_time("%H",szTime,2)
new iTime = str_to_num(szTime)
if(6 <= iTime < 22)
czas=false
else
czas=true
}
stock create_attachment(id, entity, offset, sprite, life)
{
message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, _, id);
write_byte(TE_PLAYERATTACHMENT);
write_byte(entity);
write_coord(offset);
write_short(sprite);
write_short(life);
message_end();
}
stock registerCommands(const array[][], arraySize, function[])
{
#if !defined ForRange
#define ForRange(%1,%2,%3) for(new %1 = %2; %1 <= %3; %1++)
#endif
#if AMXX_VERSION_NUM > 183
ForRange(i, 0, arraySize - 1) {
ForRange(j, 0, 1) {
register_clcmd(fmt("%s %s", !j ? "say" : "say_team", array[i]), function);
}
}
#else
new newCommand[33];
ForRange(i, 0, arraySize - 1) {
ForRange(j, 0, 1) {
formatex(newCommand, charsmax(newCommand), "%s %s", !j ? "say" : "say_team", array[i]);
register_clcmd(newCommand, function);
}
}
#endif
}
Proszę może akurat dasz rade coś zadziałać, chodzi mi o awanse aby je prawidłowo przyznawało według zabić, tak samo sprite nie działaja poprawnie bo przyznaje je losowo nawet gdy mam unranked to daje silver 3