Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

[Hud] - Pomoc


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
5 odpowiedzi w tym temacie

#1 P3neR

    Zaawansowany

  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:80
  • Imię:Dawid
  • Lokalizacja:Zalesie
Offline

Napisano 14.12.2020 21:04

Pomógłby ktoś lub wytłumaczyłby jak zrobić aby zabicia się aktualizowały natychmiastowo a nie po rundzie, jeżeli bedzie trzeba podać więcej kodu to proszę o napisanie. 

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],
	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);        
	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);
}

  • +
  • -
  • 0

#2 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 14.12.2020 21:57

Wydaje mi się, że wystarczy zrobić coś takiego:

	static userName[33],
	requiredKills,
	userPosition,
	userRankIndex,
	userStats[8],
	rStats[8],
	blank[8];
	
	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]);

moduł CSX udostępnia taki fajny natyw, który pozwala pobrać statystyki z danej rundy get_user_rstats

Wydaje mi się, że wystarczy tak zrobić, że pobierać bazowe staty i dodawać do nich te z rundy. Oczywiście tu zrobiłem tylko dla pierwszego indeksu czyli liczby zabić, dla innych trzeba by dodać w analogiczny sposób lub pętlą.

o get_user_stats polecam poczytać też tu: get_user_stats

 

Swoją drogą zawsze śmieszyły mnie takie statystyki co są w hud, a odświeżają się po rundzie...


  • +
  • -
  • 0

#3 P3neR

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:80
  • Imię:Dawid
  • Lokalizacja:Zalesie
Offline

Napisano 14.12.2020 22:16

Wydaje mi się, że wystarczy zrobić coś takiego:

	static userName[33],
	requiredKills,
	userPosition,
	userRankIndex,
	userStats[8],
	rStats[8],
	blank[8];
	
	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]);

moduł CSX udostępnia taki fajny natyw, który pozwala pobrać statystyki z danej rundy get_user_rstats

Wydaje mi się, że wystarczy tak zrobić, że pobierać bazowe staty i dodawać do nich te z rundy. Oczywiście tu zrobiłem tylko dla pierwszego indeksu czyli liczby zabić, dla innych trzeba by dodać w analogiczny sposób lub pętlą.

o get_user_stats polecam poczytać też tu: get_user_stats

 

Swoją drogą zawsze śmieszyły mnie takie statystyki co są w hud, a odświeżają się po rundzie...

Czyli twój sposób normalnie zadziała i bedzie mi aktualizować zabicia od razu tak, 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 ;/ 


  • +
  • -
  • 0

#4 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 14.12.2020 22:36


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.


Rivit (14.12.2020 22:43):
Polecam kod wstawiać w załączniku, jeśli jest on przydługawy :)

  • +
  • -
  • 0

#5 P3neR

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:80
  • Imię:Dawid
  • Lokalizacja:Zalesie
Offline

Napisano 14.12.2020 22:40

 


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


  • +
  • -
  • 0

#6 TafiT

    Zaawansowany

  • Użytkownik

Reputacja: 19
Początkujący

  • Postów:80
  • Imię:Dawid
  • Lokalizacja:Trzebnica
Offline

Napisano 15.12.2020 11:43

Pomógłbym Ci ale sprzedajesz moje paczki i piszesz, że sam zrobiłeś to se sam radź jak taki dobry jesteś w te klocki  :D


dasiek (15.12.2020 14:28):
A my czasem nie mamy tematu w tej sprawie? Proszę bez spamu.

  • +
  • -
  • -2

Pomogłem?

Daj +

ponieważ walczę ze znikającą reputacją na tym forum!





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych