промяна на fragcounter

Ако имате затруднения при изработката/преработката на даден плъгин - пишете тук, ще се опитаме да ви помогнем!
Аватар
trasha
Извън линия
Потребител
Потребител
Мнения: 91
Регистриран на: 26 Дек 2022, 22:45
Се отблагодари: 10 пъти
Получена благодарност: 2 пъти

промяна на fragcounter

Мнение от trasha » 20 Яну 2023, 18:34

Здравейте.
Ползвам fragcounter плугин ,който отброява във HUDa направените килове, но спира стигайки до 9.
Въпросът ми е възможно ли е да се увеличи броят им , или самия код не позволява двуцифрени числа?
П.П. Ето sma

Код за потвърждение: Избери целия код

/*AMX MOD X script
**************************************************************************
 * 		FragCounter   V    1.01		by	Scarzzurs
 *
 *
 *  *******************************************************************************
 *  
 *	Ported By KingPin( [email protected] ). I take no responsibility 
 *	for this file in any way. Use at your own risk. No warranties of any kind. 
 *
 *  ********************************************************************************
 *
 **********************************************************************************/

#include <amxmodx>

new pfrags[33]
new top
new gmsgStatusIcon

public playerspawn(id){
	pfrags[id]=0
	top = 0
	calculate_time(id,pfrags[id])
}

public death(){
	new killer = read_data(1)
	pfrags[killer]=pfrags[killer]+1
	if (pfrags[killer]==9 && file_exists("sound/misc/monsterkill.wav")==1)
		emit_sound(killer,CHAN_STATIC, "misc/monsterkill.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
	topplayer()
	new players[32]
	new player_num
	get_players(players, player_num)
	for (new i = 0; i < player_num; i++)
		calculate_time(players[i],pfrags[players[i]])
	return PLUGIN_CONTINUE
}

public topplayer(){
	new score
	new players[32]
	new player_num
	get_players(players, player_num)
	for (new i = 0; i < player_num; i++){
		if (pfrags[players[i]]>score){
			score=pfrags[players[i]]
			top=players[i]
		}
		else if (pfrags[players[i]]==score)
			top = 0
	}
}

public calculate_time(id,num){
	switch(num){
		case 0:{
			showtimer(id,"number_1",0)
			showtimer(id,"number_2",0)
			showtimer(id,"number_3",0)
			showtimer(id,"number_4",0)
			showtimer(id,"number_5",0)
			showtimer(id,"number_6",0)
			showtimer(id,"number_7",0)
			showtimer(id,"number_8",0)
			showtimer(id,"number_9",0)
		}
		case 1:{
			showtimer(id,"number_1",1)
			showtimer(id,"number_2",0)
			showtimer(id,"number_3",0)
			showtimer(id,"number_4",0)
			showtimer(id,"number_5",0)
			showtimer(id,"number_6",0)
			showtimer(id,"number_7",0)
			showtimer(id,"number_8",0)
			showtimer(id,"number_9",0)
		}
		case 2:{
			showtimer(id,"number_1",0)
			showtimer(id,"number_2",1)
			showtimer(id,"number_3",0)
			showtimer(id,"number_4",0)
			showtimer(id,"number_5",0)
			showtimer(id,"number_6",0)
			showtimer(id,"number_7",0)
			showtimer(id,"number_8",0)
			showtimer(id,"number_9",0)
		}
		case 3:{
			showtimer(id,"number_1",0)
			showtimer(id,"number_2",0)
			showtimer(id,"number_3",1)
			showtimer(id,"number_4",0)
			showtimer(id,"number_5",0)
			showtimer(id,"number_6",0)
			showtimer(id,"number_7",0)
			showtimer(id,"number_8",0)
			showtimer(id,"number_9",0)
		}
		case 4:{
			showtimer(id,"number_1",0)
			showtimer(id,"number_2",0)
			showtimer(id,"number_3",0)
			showtimer(id,"number_4",1)
			showtimer(id,"number_5",0)
			showtimer(id,"number_6",0)
			showtimer(id,"number_7",0)
			showtimer(id,"number_8",0)
			showtimer(id,"number_9",0)
		}
		case 5:{
			showtimer(id,"number_1",0)
			showtimer(id,"number_2",0)
			showtimer(id,"number_3",0)
			showtimer(id,"number_4",0)
			showtimer(id,"number_5",1)
			showtimer(id,"number_6",0)
			showtimer(id,"number_7",0)
			showtimer(id,"number_8",0)
			showtimer(id,"number_9",0)
		}
		case 6:{
			showtimer(id,"number_1",0)
			showtimer(id,"number_2",0)
			showtimer(id,"number_3",0)
			showtimer(id,"number_4",0)
			showtimer(id,"number_5",0)
			showtimer(id,"number_6",1)
			showtimer(id,"number_7",0)
			showtimer(id,"number_8",0)
			showtimer(id,"number_9",0)
		}
		case 7:{
			showtimer(id,"number_1",0)
			showtimer(id,"number_2",0)
			showtimer(id,"number_3",0)
			showtimer(id,"number_4",0)
			showtimer(id,"number_5",0)
			showtimer(id,"number_6",0)
			showtimer(id,"number_7",1)
			showtimer(id,"number_8",0)
			showtimer(id,"number_9",0)
		}
		case 8:{
			showtimer(id,"number_1",0)
			showtimer(id,"number_2",0)
			showtimer(id,"number_3",0)
			showtimer(id,"number_4",0)
			showtimer(id,"number_5",0)
			showtimer(id,"number_6",0)
			showtimer(id,"number_7",0)
			showtimer(id,"number_8",1)
			showtimer(id,"number_9",0)
		}
		case 9:{
			showtimer(id,"number_1",0)
			showtimer(id,"number_2",0)
			showtimer(id,"number_3",0)
			showtimer(id,"number_4",0)
			showtimer(id,"number_5",0)
			showtimer(id,"number_6",0)
			showtimer(id,"number_7",0)
			showtimer(id,"number_8",0)
			showtimer(id,"number_9",1)
		}
	}
}

public showtimer(id,number[10],onoff){
	if (is_user_connected(id)){
		if (id == top && onoff == 1)
			onoff = 2
		message_begin( MSG_ONE, gmsgStatusIcon, {0,0,0}, id )
		write_byte( onoff ) // status
		write_string( number ) // sprite name
		write_byte( 0 ) // red
		write_byte( 255 ) // green
		write_byte( 0 ) // blue
		message_end()
	}
}
/*
public roundend(){
	if (top != 0){
		new sname[32]
		get_user_name(top,sname,32)
		set_hudmessage(0, 255, 0, -1.0, 0.3, 0, 1.0, 5.0, 0.1, 0.2, 5)
		show_hudmessage(0,"Best player of the round: %s",sname)
	}
}*/

public plugin_init(){
	register_plugin("FragCounter","1.01","Scarzzurs")
	gmsgStatusIcon = get_user_msgid("StatusIcon")
	register_event("DeathMsg","death","a")
	register_event("ResetHUD","playerspawn","b")
	//register_event("SendAudio","roundend","a","2=%!MRAD_terwin","2=%!MRAD_ctwin","2=%!MRAD_rounddraw")
}

public plugin_precache()
	if (file_exists("sound/misc/monsterkill.wav")==1)
		precache_sound("misc/monsterkill.wav")
Изображение
FORUM DISCORD
45.144.155.153:27019

Аватар
zolfeca
Извън линия
Администратор
Администратор
Мнения: 417
Регистриран на: 10 Окт 2016, 23:48
Се отблагодари: 24 пъти
Получена благодарност: 92 пъти

Re: промяна на fragcounter

Мнение от zolfeca » 20 Яну 2023, 19:41

С този плъгин - не.
Пробвай този

Код за потвърждение: Избери целия код

#include <amxmodx>

#if AMXX_VERSION_NUM < 183 || !defined set_dhudmessage
    #tryinclude <dhudmessage>

    #if !defined _dhudmessage_included
        #error "dhudmessage.inc" is missing in your "scripting/include" folder. Download it from: "https://amxx-bg.info/inc/"
    #endif
#endif

#if !defined MAX_PLAYERS
const MAX_PLAYERS = 32
#endif

#if !defined client_disconnected
    #define client_disconnected client_disconnect
#endif

#define COUNTER_COLOR 0, 255, 0
#define COUNTER_POSITION -1.0, 0.1

const Float:COUNTER_REFRESH = 1.0

enum _:FragInfo { Frags, Headshots }

new g_iFrags[MAX_PLAYERS + 1][FragInfo]

public plugin_init()
{
    register_plugin("Frag Counter", "1.1", "OciXCrom")
    register_event("DeathMsg", "OnPlayerKilled", "a")
    register_logevent("OnRoundStart", 2, "0=World triggered", "1=Round_Start")
}

public OnRoundStart()
{
    new iPlayers[MAX_PLAYERS], iPnum
    get_players(iPlayers, iPnum)

    for(new i; i < iPnum; i++)
    {
        reset_counter(iPlayers[i])
    }
}

public client_putinserver(id)
{
    reset_counter(id)
    set_task(COUNTER_REFRESH, "display_frags", id, .flags = "b")
}

public client_disconnected(id)
{
    remove_task(id)
}

public display_frags(id)
{
    if(is_user_alive(id) && g_iFrags[id][Frags])
    {
        set_dhudmessage(COUNTER_COLOR, COUNTER_POSITION, .holdtime = COUNTER_REFRESH)
        show_dhudmessage(id, "%i (%i HS)", g_iFrags[id][Frags], g_iFrags[id][Headshots])
    }
}

public OnPlayerKilled()
{
    new iAttacker = read_data(1)

    if(is_user_connected(iAttacker) && iAttacker != read_data(2))
    {
        g_iFrags[iAttacker][Frags]++

        if(read_data(3))
        {
            g_iFrags[iAttacker][Headshots]++
        }
    }
}

reset_counter(id)
{
    g_iFrags[id][Frags] = 0
    g_iFrags[id][Headshots] = 0
}

Аватар
trasha
Извън линия
Потребител
Потребител
Мнения: 91
Регистриран на: 26 Дек 2022, 22:45
Се отблагодари: 10 пъти
Получена благодарност: 2 пъти

Re: промяна на fragcounter

Мнение от trasha » 13 Фев 2023, 20:34

zolfeca написа: 20 Яну 2023, 19:41 С този плъгин - не.
Пробвай този

Код за потвърждение: Избери целия код

#include <amxmodx>

#if AMXX_VERSION_NUM < 183 || !defined set_dhudmessage
    #tryinclude <dhudmessage>

    #if !defined _dhudmessage_included
        #error "dhudmessage.inc" is missing in your "scripting/include" folder. Download it from: "https://amxx-bg.info/inc/"
    #endif
#endif

#if !defined MAX_PLAYERS
const MAX_PLAYERS = 32
#endif

#if !defined client_disconnected
    #define client_disconnected client_disconnect
#endif

#define COUNTER_COLOR 0, 255, 0
#define COUNTER_POSITION -1.0, 0.1

const Float:COUNTER_REFRESH = 1.0

enum _:FragInfo { Frags, Headshots }

new g_iFrags[MAX_PLAYERS + 1][FragInfo]

public plugin_init()
{
    register_plugin("Frag Counter", "1.1", "OciXCrom")
    register_event("DeathMsg", "OnPlayerKilled", "a")
    register_logevent("OnRoundStart", 2, "0=World triggered", "1=Round_Start")
}

public OnRoundStart()
{
    new iPlayers[MAX_PLAYERS], iPnum
    get_players(iPlayers, iPnum)

    for(new i; i < iPnum; i++)
    {
        reset_counter(iPlayers[i])
    }
}

public client_putinserver(id)
{
    reset_counter(id)
    set_task(COUNTER_REFRESH, "display_frags", id, .flags = "b")
}

public client_disconnected(id)
{
    remove_task(id)
}

public display_frags(id)
{
    if(is_user_alive(id) && g_iFrags[id][Frags])
    {
        set_dhudmessage(COUNTER_COLOR, COUNTER_POSITION, .holdtime = COUNTER_REFRESH)
        show_dhudmessage(id, "%i (%i HS)", g_iFrags[id][Frags], g_iFrags[id][Headshots])
    }
}

public OnPlayerKilled()
{
    new iAttacker = read_data(1)

    if(is_user_connected(iAttacker) && iAttacker != read_data(2))
    {
        g_iFrags[iAttacker][Frags]++

        if(read_data(3))
        {
            g_iFrags[iAttacker][Headshots]++
        }
    }
}

reset_counter(id)
{
    g_iFrags[id][Frags] = 0
    g_iFrags[id][Headshots] = 0
}

Много закъснял отговор , но имам няколко проблема със плъгина.
1во. Позицията е горе-център , би било добре да бъде ляво-център
2ро. Начина на показване "6(2HS) , било добре да е KILLS 6 (2 HS)
3то. Понеже го ползвам на респаун , забелязах ,че след като ме убият отчитането не се занулява.

Може ли да се преработи или да се насоча към друг плъгин!?
Благодаря предварително!
Изображение
FORUM DISCORD
45.144.155.153:27019

Аватар
zolfeca
Извън линия
Администратор
Администратор
Мнения: 417
Регистриран на: 10 Окт 2016, 23:48
Се отблагодари: 24 пъти
Получена благодарност: 92 пъти

Re: промяна на fragcounter

Мнение от zolfeca » 13 Фев 2023, 21:26

Позицията си я сменяш от #define COUNTER_POSITION -1.0, 0.1

Код за потвърждение: Избери целия код

#include <amxmodx>

#if AMXX_VERSION_NUM < 183 || !defined set_dhudmessage
    #tryinclude <dhudmessage>

    #if !defined _dhudmessage_included
        #error "dhudmessage.inc" is missing in your "scripting/include" folder. Download it from: "https://amxx-bg.info/inc/"
    #endif
#endif

#if !defined MAX_PLAYERS
const MAX_PLAYERS = 32
#endif

#if !defined client_disconnected
    #define client_disconnected client_disconnect
#endif

#define COUNTER_COLOR 0, 255, 0
#define COUNTER_POSITION -1.0, 0.1

const Float:COUNTER_REFRESH = 1.0

enum _:FragInfo { Frags, Headshots }

new g_iFrags[MAX_PLAYERS + 1][FragInfo]

public plugin_init()
{
    register_plugin("Frag Counter", "1.1", "OciXCrom")
    register_event("DeathMsg", "OnPlayerKilled", "a")
    register_logevent("OnRoundStart", 2, "0=World triggered", "1=Round_Start")
}

public OnRoundStart()
{
    new iPlayers[MAX_PLAYERS], iPnum
    get_players(iPlayers, iPnum)

    for(new i; i < iPnum; i++)
    {
        reset_counter(iPlayers[i])
    }
}

public client_putinserver(id)
{
    reset_counter(id)
    set_task(COUNTER_REFRESH, "display_frags", id, .flags = "b")
}

public client_disconnected(id)
{
    remove_task(id)
}

public display_frags(id)
{
    if(is_user_alive(id) && g_iFrags[id][Frags])
    {
        set_dhudmessage(COUNTER_COLOR, COUNTER_POSITION, .holdtime = COUNTER_REFRESH)
        show_dhudmessage(id, "KILLS %i (%i HS)", g_iFrags[id][Frags], g_iFrags[id][Headshots])
    }
}

public OnPlayerKilled()
{
    new iAttacker = read_data(1), iVictim = read_data(2)

	reset_counter(iVictim)
	
    if(is_user_connected(iAttacker) && iAttacker != read_data(2))
    {
        g_iFrags[iAttacker][Frags]++

        if(read_data(3))
        {
            g_iFrags[iAttacker][Headshots]++
        }
    }
	
}

reset_counter(id)
{
    g_iFrags[id][Frags] = 0
    g_iFrags[id][Headshots] = 0
}

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Помощ в скриптирането”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 21 госта