Raised This Month: $51 Target: $400
 12% 

Convert from SourcePawn to AmxxPawn


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
N3v3rM1nd
Junior Member
Join Date: Apr 2021
Old 03-22-2022 , 17:23   Convert from SourcePawn to AmxxPawn
Reply With Quote #1

Hello, can someone convert this plugin to amxx pawn?

https://forums.alliedmods.net/showthread.php?p=2499085
N3v3rM1nd is offline
EFFx
Veteran Member
Join Date: Feb 2016
Location: São Paulo, Brasil
Old 03-22-2022 , 21:24   Re: Convert from SourcePawn to AmxxPawn
Reply With Quote #2

Take a look, untested.

You've got 4 cvars to work with:

dmg_display_attacksonly = default 1: display only players that received/attacked you.
dmg_cmd_alive_only = default 1: .dmg command avaliable only alive.
dmg_cmd_allow = default 1: allows to use .dmg command
dmg_exclude_bots = default 0: removes bot support on the damage display.
Attached Files
File Type: sma Get Plugin or Get Source (roundend_damage.sma - 250 views - 4.3 KB)
__________________
• Ranking System • AutoMix 5vs5 System
• Web Ban System • Plugins for free

____________________________________________
For private works:
• Discord: EFFEXo#8850 • Steam: EFFEXo

Last edited by EFFx; 03-24-2022 at 03:34.
EFFx is offline
N3v3rM1nd
Junior Member
Join Date: Apr 2021
Old 03-23-2022 , 09:38   Re: Convert from SourcePawn to AmxxPawn
Reply With Quote #3

Quote:
Originally Posted by EFFx View Post
Take a look, untested.

You've got 4 cvars to work with:

dmg_display_attacksonly = default 1: display only players that received/attacked you.
dmg_cmd_alive_only = default 1: .dmg command avaliable only alive.
dmg_cmd_allow = default 1: allows to use .dmg command
dmg_exclude_bots = default 0: removes bot support on the damage display.
First of all, thanks! But after every round i get this message, even i killed players and done some damage to others (i tried with 3 players)
HTML Code:
No damage event happened with you

Last edited by N3v3rM1nd; 03-23-2022 at 09:39.
N3v3rM1nd is offline
CrazY.
Veteran Member
Join Date: May 2015
Location: SP, Brazil
Old 03-23-2022 , 10:07   Re: Convert from SourcePawn to AmxxPawn
Reply With Quote #4

Are you testing with bots? If so, the plugin won't work. To get it working with bots, assuming you've amxx 190 or later, replace
Code:
RegisterHam(Ham_TakeDamage, "player", "ham_TakeDamage_Post", 0) RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn", 1)

with

Code:
RegisterHam(Ham_TakeDamage, "player", "ham_TakeDamage_Post", 0, true) RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn", 1, true)


For amxx 182, use this

Code:
#include <amxmodx>
#include <hamsandwich>

#define PLUGIN "Display Damage"
#define VERSION "1.0"
#define AUTHOR "unknown"

#if !defined MAX_PLAYERS
#define MAX_PLAYERS 32
#endif

new pCvarAllowCommand
new pCvarDisplayAttacksOnly
new pCvarAliveOnly
new pCvarExcludeBots

const MAX_HEALTH = 100

new g_iHits[MAX_PLAYERS + 1][MAX_PLAYERS + 1]
new g_iDamage[MAX_PLAYERS + 1][MAX_PLAYERS + 1]

new g_registerHamOnBots = true

public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	pCvarDisplayAttacksOnly = register_cvar("dmg_display_attacksonly", "1")
	pCvarAliveOnly = register_cvar("dmg_cmd_alive_only", "1")
	pCvarAllowCommand = register_cvar("dmg_cmd_allow", "1")
	pCvarExcludeBots = register_cvar("dmg_exclude_bots", "0")

	register_logevent("logevent_roundend",2,"1=Round_End")
	
	register_clcmd("say .dmg", "cmdSayDamage")
	
	RegisterHam(Ham_TakeDamage, "player", "ham_TakeDamage_Post", 1)
	RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn", 1)
}

public client_putinserver(id)
{
	if (is_user_bot(id) && g_registerHamOnBots)
	{
		g_registerHamOnBots = false
		set_task(0.1, "RegisterHamOnBots", id)
	}
}

public RegisterHamOnBots(id)
{
	RegisterHamFromEntity(Ham_TakeDamage, id, "ham_TakeDamage_Post", 1)
	RegisterHamFromEntity(Ham_Spawn, id, "ham_PlayerSpawn", 1)
}

public ham_PlayerSpawn(id)
{
	new iPlayers[MAX_PLAYERS], iNum
	get_players(iPlayers, iNum)	
	for(new i, iPlayer;i < iNum;i++)
	{
		g_iHits[id][(iPlayer = iPlayers[i])] = 0
		g_iDamage[id][iPlayer] = 0
	}
}

public ham_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits)
{
	if(!is_user_connected(iAttacker) || !is_user_connected(iVictim))
		return
		
	g_iHits[iAttacker][iVictim]++
	
	new iDamage = floatround(fDamage), iVictimHealth = get_user_health(iVictim)
	if((iDamage >= iVictimHealth) && !g_iDamage[iAttacker][iVictim])
	{
		g_iDamage[iAttacker][iVictim] = iVictimHealth
	}
	else g_iDamage[iAttacker][iVictim] += iDamage
}

public logevent_roundend()
{
	new iPlayers[MAX_PLAYERS], iNum
	get_players(iPlayers, iNum)	
	for(new i;i < iNum;i++)
	{
		displayDamage(iPlayers[i])
	}
}

public cmdSayDamage(id)
{
	if(!get_pcvar_num(pCvarAllowCommand))
	{
		client_print(id, print_chat,"^x03-->^x01 Command unavaliable.")
		return PLUGIN_HANDLED
	}

	if(!is_user_alive(id) && get_pcvar_num(pCvarAliveOnly))
	{
		client_print(id, print_chat,"^x03-->^x01 You cannot use this command while dead.")
		return PLUGIN_HANDLED
	}
	displayDamage(id)
	return PLUGIN_HANDLED
}	

public displayDamage(id)
{
	new iPlayers[MAX_PLAYERS], iNum, szMessage[192]
	get_players(iPlayers, iNum, get_pcvar_num(pCvarExcludeBots) ? "ech" : "e", (get_user_team(id) == 1) ? "CT" : "TERRORIST")
			
	for(new i, iPlayer, szName[MAX_PLAYERS], iDmg[2],iHit[2];i < iNum;i++)
	{
		if((iPlayer = iPlayers[i]) == id)
			continue
			
		iHit[0] = g_iHits[id][iPlayer] // Hit Done
		iHit[1] = g_iHits[iPlayer][id] // Hit Received
			
		if(get_pcvar_num(pCvarDisplayAttacksOnly) && (!iHit[0] && !iHit[1]))
			continue
			
		iDmg[0] = g_iDamage[id][iPlayer] // Damage Done
		iDmg[1] = g_iDamage[iPlayer][id] // Damage Recived
					
		get_user_name(iPlayer, szName, charsmax(szName))
						
		formatex
		(
			szMessage, 
			charsmax(szMessage), 
			"%s^x01--> (^x04%i^x01 dmg / ^x04%i^x01 hits) to (^x04%i^x01 dmg / ^x04%i^x01 hits) from ^x03%s^x01 (^x04%i^x01 HP)",
			szMessage,
			min(iDmg[0], MAX_HEALTH),
			iHit[0],
			min(iDmg[1], MAX_HEALTH),
			iHit[1],
			szName,
			(is_user_alive(iPlayer) ? get_user_health(iPlayer) : 0))
	}
	
	if(!szMessage[0])
	{
		formatex(szMessage, charsmax(szMessage), "^x03-->^x01 No damage event happened with you.")
	}
	
	ChatColor(id, szMessage)
}

ChatColor(const id, const input[], any:...)
{
	static mMessageSayText
	if(!mMessageSayText)
	{
		mMessageSayText = get_user_msgid("SayText")
	}

        new iCount = 1, iPlayers[MAX_PLAYERS]
        static msg[191]
        vformat(msg, 190, input, 3)

        replace_all(msg, 190, "!g", "^4")
        replace_all(msg, 190, "!y", "^1")
        replace_all(msg, 190, "!t", "^3")

        if(id) iPlayers[0] = id; else get_players(iPlayers, iCount, "ch")
        {
                for (new i, player; i < iCount; i++)
                {
			message_begin(MSG_ONE_UNRELIABLE, mMessageSayText, _, (player = iPlayers[i]))
			write_byte(player)
			write_string(msg)
			message_end()
                }
        }
}
__________________








CrazY. is offline
N3v3rM1nd
Junior Member
Join Date: Apr 2021
Old 03-23-2022 , 10:12   Re: Convert from SourcePawn to AmxxPawn
Reply With Quote #5

Quote:
Originally Posted by CrazY. View Post
Are you testing with bots? If so, the plugin won't work. To get it working with bots, assuming you've amxx 190 or later, replace
Code:
RegisterHam(Ham_TakeDamage, "player", "ham_TakeDamage_Post", 0) RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn", 1)

with

Code:
RegisterHam(Ham_TakeDamage, "player", "ham_TakeDamage_Post", 0, true) RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn", 1, true)


For amxx 182, use this

Code:
#include <amxmodx>
#include <hamsandwich>

#define PLUGIN "Display Damage"
#define VERSION "1.0"
#define AUTHOR "unknown"

#if !defined MAX_PLAYERS
#define MAX_PLAYERS 32
#endif

new pCvarAllowCommand
new pCvarDisplayAttacksOnly
new pCvarAliveOnly
new pCvarExcludeBots

const MAX_HEALTH = 100

new g_iHits[MAX_PLAYERS + 1][MAX_PLAYERS + 1]
new g_iDamage[MAX_PLAYERS + 1][MAX_PLAYERS + 1]

new g_registerHamOnBots = true

public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	pCvarDisplayAttacksOnly = register_cvar("dmg_display_attacksonly", "1")
	pCvarAliveOnly = register_cvar("dmg_cmd_alive_only", "1")
	pCvarAllowCommand = register_cvar("dmg_cmd_allow", "1")
	pCvarExcludeBots = register_cvar("dmg_exclude_bots", "0")

	register_logevent("logevent_roundend",2,"1=Round_End")
	
	register_clcmd("say .dmg", "cmdSayDamage")
	
	RegisterHam(Ham_TakeDamage, "player", "ham_TakeDamage_Post", 1)
	RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn", 1)
}

public client_putinserver(id)
{
	if (is_user_bot(id) && g_registerHamOnBots)
	{
		g_registerHamOnBots = false
		set_task(0.1, "RegisterHamOnBots", id)
	}
}

public RegisterHamOnBots(id)
{
	RegisterHamFromEntity(Ham_TakeDamage, id, "ham_TakeDamage_Post", 1)
	RegisterHamFromEntity(Ham_Spawn, id, "ham_PlayerSpawn", 1)
}

public ham_PlayerSpawn(id)
{
	new iPlayers[MAX_PLAYERS], iNum
	get_players(iPlayers, iNum)	
	for(new i, iPlayer;i < iNum;i++)
	{
		g_iHits[id][(iPlayer = iPlayers[i])] = 0
		g_iDamage[id][iPlayer] = 0
	}
}

public ham_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits)
{
	if(!is_user_connected(iAttacker) || !is_user_connected(iVictim))
		return
		
	g_iHits[iAttacker][iVictim]++
	
	new iDamage = floatround(fDamage), iVictimHealth = get_user_health(iVictim)
	if((iDamage >= iVictimHealth) && !g_iDamage[iAttacker][iVictim])
	{
		g_iDamage[iAttacker][iVictim] = iVictimHealth
	}
	else g_iDamage[iAttacker][iVictim] += iDamage
}

public logevent_roundend()
{
	new iPlayers[MAX_PLAYERS], iNum
	get_players(iPlayers, iNum)	
	for(new i;i < iNum;i++)
	{
		displayDamage(iPlayers[i])
	}
}

public cmdSayDamage(id)
{
	if(!get_pcvar_num(pCvarAllowCommand))
	{
		client_print(id, print_chat,"^x03-->^x01 Command unavaliable.")
		return PLUGIN_HANDLED
	}

	if(!is_user_alive(id) && get_pcvar_num(pCvarAliveOnly))
	{
		client_print(id, print_chat,"^x03-->^x01 You cannot use this command while dead.")
		return PLUGIN_HANDLED
	}
	displayDamage(id)
	return PLUGIN_HANDLED
}	

public displayDamage(id)
{
	new iPlayers[MAX_PLAYERS], iNum, szMessage[192]
	get_players(iPlayers, iNum, get_pcvar_num(pCvarExcludeBots) ? "ech" : "e", (get_user_team(id) == 1) ? "CT" : "TERRORIST")
			
	for(new i, iPlayer, szName[MAX_PLAYERS], iDmg[2],iHit[2];i < iNum;i++)
	{
		if((iPlayer = iPlayers[i]) == id)
			continue
			
		iHit[0] = g_iHits[id][iPlayer] // Hit Done
		iHit[1] = g_iHits[iPlayer][id] // Hit Received
			
		if(get_pcvar_num(pCvarDisplayAttacksOnly) && (!iHit[0] && !iHit[1]))
			continue
			
		iDmg[0] = g_iDamage[id][iPlayer] // Damage Done
		iDmg[1] = g_iDamage[iPlayer][id] // Damage Recived
					
		get_user_name(iPlayer, szName, charsmax(szName))
						
		formatex
		(
			szMessage, 
			charsmax(szMessage), 
			"%s^x01--> (^x04%i^x01 dmg / ^x04%i^x01 hits) to (^x04%i^x01 dmg / ^x04%i^x01 hits) from ^x03%s^x01 (^x04%i^x01 HP)",
			szMessage,
			min(iDmg[0], MAX_HEALTH),
			iHit[0],
			min(iDmg[1], MAX_HEALTH),
			iHit[1],
			szName,
			(is_user_alive(iPlayer) ? get_user_health(iPlayer) : 0))
	}
	
	if(!szMessage[0])
	{
		formatex(szMessage, charsmax(szMessage), "^x03-->^x01 No damage event happened with you.")
	}
	
	ChatColor(id, szMessage)
}

ChatColor(const id, const input[], any:...)
{
	static mMessageSayText
	if(!mMessageSayText)
	{
		mMessageSayText = get_user_msgid("SayText")
	}

        new iCount = 1, iPlayers[MAX_PLAYERS]
        static msg[191]
        vformat(msg, 190, input, 3)

        replace_all(msg, 190, "!g", "^4")
        replace_all(msg, 190, "!y", "^1")
        replace_all(msg, 190, "!t", "^3")

        if(id) iPlayers[0] = id; else get_players(iPlayers, iCount, "ch")
        {
                for (new i, player; i < iCount; i++)
                {
			message_begin(MSG_ONE_UNRELIABLE, mMessageSayText, _, (player = iPlayers[i]))
			write_byte(player)
			write_string(msg)
			message_end()
                }
        }
}
I work on amx 190, tested with some friends, not bots, but how i said, not working but giving me that message instead
N3v3rM1nd is offline
CrazY.
Veteran Member
Join Date: May 2015
Location: SP, Brazil
Old 03-23-2022 , 10:27   Re: Convert from SourcePawn to AmxxPawn
Reply With Quote #6



Seems to be working, tested on a local server.
Check if this work

Code:
#include <amxmodx>
#include <hamsandwich>

#define PLUGIN "Display Damage"
#define VERSION "1.0"
#define AUTHOR "unknown"

#if !defined MAX_PLAYERS
#define MAX_PLAYERS 32
#endif

new pCvarAllowCommand
new pCvarDisplayAttacksOnly
new pCvarAliveOnly
new pCvarExcludeBots

const MAX_HEALTH = 100

new g_iHits[MAX_PLAYERS + 1][MAX_PLAYERS + 1]
new g_iDamage[MAX_PLAYERS + 1][MAX_PLAYERS + 1]

public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	pCvarDisplayAttacksOnly = register_cvar("dmg_display_attacksonly", "1")
	pCvarAliveOnly = register_cvar("dmg_cmd_alive_only", "1")
	pCvarAllowCommand = register_cvar("dmg_cmd_allow", "1")
	pCvarExcludeBots = register_cvar("dmg_exclude_bots", "0")

	register_logevent("logevent_roundend",2,"1=Round_End")
	
	register_clcmd("say .dmg", "cmdSayDamage")
	
	RegisterHam(Ham_TakeDamage, "player", "ham_TakeDamage_Post", 0)
	RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn", 1)
}

public ham_PlayerSpawn(id)
{
	for (new i; i < sizeof g_iHits; i++)
	{
		arrayset(g_iHits[i], 0, sizeof g_iHits[])
	}

	for (new i; i < sizeof g_iDamage; i++)
	{
		arrayset(g_iDamage[i], 0, sizeof g_iDamage[])
	}
}

public ham_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits)
{
	if(!is_user_connected(iAttacker) || !is_user_connected(iVictim))
		return HAM_IGNORED
		
	g_iHits[iAttacker][iVictim]++
	
	new iDamage = floatround(fDamage), iVictimHealth = get_user_health(iVictim)
	if((iDamage >= iVictimHealth) && !g_iDamage[iAttacker][iVictim])
	{
		g_iDamage[iAttacker][iVictim] = iVictimHealth
	}
	else g_iDamage[iAttacker][iVictim] += iDamage
	return HAM_IGNORED
}

public logevent_roundend()
{
	new iPlayers[MAX_PLAYERS], iNum
	get_players(iPlayers, iNum)	
	for(new i;i < iNum;i++)
	{
		displayDamage(iPlayers[i])
	}
}

public cmdSayDamage(id)
{
	if(!get_pcvar_num(pCvarAllowCommand))
	{
		client_print(id, print_chat,"^x03-->^x01 Command unavaliable.")
		return PLUGIN_HANDLED
	}

	if(!is_user_alive(id) && get_pcvar_num(pCvarAliveOnly))
	{
		client_print(id, print_chat,"^x03-->^x01 You cannot use this command while dead.")
		return PLUGIN_HANDLED
	}
	displayDamage(id)
	return PLUGIN_HANDLED
}	

public displayDamage(id)
{
	new iPlayers[MAX_PLAYERS], iNum, szMessage[192]
	//get_players(iPlayers, iNum, get_pcvar_num(pCvarExcludeBots) ? "ech" : "e", (get_user_team(id) == 1) ? "CT" : "TERRORIST")
	if (get_pcvar_num(pCvarExcludeBots))
		get_players(iPlayers, iNum, "ch")
	else
		get_players(iPlayers, iNum, "h")
	
	new team = get_user_team(id)

	for(new i, iPlayer, szName[MAX_PLAYERS], iDmg[2],iHit[2];i < iNum;i++)
	{
		iPlayer = iPlayers[i]

		if(iPlayer == id || get_user_team(iPlayer) == team)
			continue

		iHit[0] = g_iHits[id][iPlayer] // Hit Done
		iHit[1] = g_iHits[iPlayer][id] // Hit Received
			
		if(get_pcvar_num(pCvarDisplayAttacksOnly) && (!iHit[0] && !iHit[1]))
			continue
			
		iDmg[0] = g_iDamage[id][iPlayer] // Damage Done
		iDmg[1] = g_iDamage[iPlayer][id] // Damage Recived
					
		get_user_name(iPlayer, szName, charsmax(szName))
						
		formatex
		(
			szMessage, 
			charsmax(szMessage), 
			"%s^x01--> (^x04%i^x01 dmg / ^x04%i^x01 hits) to (^x04%i^x01 dmg / ^x04%i^x01 hits) from ^x03%s^x01 (^x04%i^x01 HP)",
			szMessage,
			min(iDmg[0], MAX_HEALTH),
			iHit[0],
			min(iDmg[1], MAX_HEALTH),
			iHit[1],
			szName,
			(is_user_alive(iPlayer) ? get_user_health(iPlayer) : 0))
	}
	
	if(!szMessage[0])
	{
		formatex(szMessage, charsmax(szMessage), "^x03-->^x01 No damage event happened with you.")
	}
	
	ChatColor(id, szMessage)
}

ChatColor(const id, const input[], any:...)
{
	static mMessageSayText
	if(!mMessageSayText)
	{
		mMessageSayText = get_user_msgid("SayText")
	}

        new iCount = 1, iPlayers[MAX_PLAYERS]
        static msg[191]
        vformat(msg, 190, input, 3)

        replace_all(msg, 190, "!g", "^4")
        replace_all(msg, 190, "!y", "^1")
        replace_all(msg, 190, "!t", "^3")

        if(id) iPlayers[0] = id; else get_players(iPlayers, iCount, "ch")
        {
                for (new i, player; i < iCount; i++)
                {
			message_begin(MSG_ONE_UNRELIABLE, mMessageSayText, _, (player = iPlayers[i]))
			write_byte(player)
			write_string(msg)
			message_end()
                }
        }
}
__________________








CrazY. is offline
N3v3rM1nd
Junior Member
Join Date: Apr 2021
Old 03-23-2022 , 11:03   Re: Convert from SourcePawn to AmxxPawn
Reply With Quote #7

Quote:
Originally Posted by CrazY. View Post


Seems to be working, tested on a local server.
Check if this work

Code:
#include <amxmodx>
#include <hamsandwich>

#define PLUGIN "Display Damage"
#define VERSION "1.0"
#define AUTHOR "unknown"

#if !defined MAX_PLAYERS
#define MAX_PLAYERS 32
#endif

new pCvarAllowCommand
new pCvarDisplayAttacksOnly
new pCvarAliveOnly
new pCvarExcludeBots

const MAX_HEALTH = 100

new g_iHits[MAX_PLAYERS + 1][MAX_PLAYERS + 1]
new g_iDamage[MAX_PLAYERS + 1][MAX_PLAYERS + 1]

public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	pCvarDisplayAttacksOnly = register_cvar("dmg_display_attacksonly", "1")
	pCvarAliveOnly = register_cvar("dmg_cmd_alive_only", "1")
	pCvarAllowCommand = register_cvar("dmg_cmd_allow", "1")
	pCvarExcludeBots = register_cvar("dmg_exclude_bots", "0")

	register_logevent("logevent_roundend",2,"1=Round_End")
	
	register_clcmd("say .dmg", "cmdSayDamage")
	
	RegisterHam(Ham_TakeDamage, "player", "ham_TakeDamage_Post", 0)
	RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn", 1)
}

public ham_PlayerSpawn(id)
{
	for (new i; i < sizeof g_iHits; i++)
	{
		arrayset(g_iHits[i], 0, sizeof g_iHits[])
	}

	for (new i; i < sizeof g_iDamage; i++)
	{
		arrayset(g_iDamage[i], 0, sizeof g_iDamage[])
	}
}

public ham_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits)
{
	if(!is_user_connected(iAttacker) || !is_user_connected(iVictim))
		return HAM_IGNORED
		
	g_iHits[iAttacker][iVictim]++
	
	new iDamage = floatround(fDamage), iVictimHealth = get_user_health(iVictim)
	if((iDamage >= iVictimHealth) && !g_iDamage[iAttacker][iVictim])
	{
		g_iDamage[iAttacker][iVictim] = iVictimHealth
	}
	else g_iDamage[iAttacker][iVictim] += iDamage
	return HAM_IGNORED
}

public logevent_roundend()
{
	new iPlayers[MAX_PLAYERS], iNum
	get_players(iPlayers, iNum)	
	for(new i;i < iNum;i++)
	{
		displayDamage(iPlayers[i])
	}
}

public cmdSayDamage(id)
{
	if(!get_pcvar_num(pCvarAllowCommand))
	{
		client_print(id, print_chat,"^x03-->^x01 Command unavaliable.")
		return PLUGIN_HANDLED
	}

	if(!is_user_alive(id) && get_pcvar_num(pCvarAliveOnly))
	{
		client_print(id, print_chat,"^x03-->^x01 You cannot use this command while dead.")
		return PLUGIN_HANDLED
	}
	displayDamage(id)
	return PLUGIN_HANDLED
}	

public displayDamage(id)
{
	new iPlayers[MAX_PLAYERS], iNum, szMessage[192]
	//get_players(iPlayers, iNum, get_pcvar_num(pCvarExcludeBots) ? "ech" : "e", (get_user_team(id) == 1) ? "CT" : "TERRORIST")
	if (get_pcvar_num(pCvarExcludeBots))
		get_players(iPlayers, iNum, "ch")
	else
		get_players(iPlayers, iNum, "h")
	
	new team = get_user_team(id)

	for(new i, iPlayer, szName[MAX_PLAYERS], iDmg[2],iHit[2];i < iNum;i++)
	{
		iPlayer = iPlayers[i]

		if(iPlayer == id || get_user_team(iPlayer) == team)
			continue

		iHit[0] = g_iHits[id][iPlayer] // Hit Done
		iHit[1] = g_iHits[iPlayer][id] // Hit Received
			
		if(get_pcvar_num(pCvarDisplayAttacksOnly) && (!iHit[0] && !iHit[1]))
			continue
			
		iDmg[0] = g_iDamage[id][iPlayer] // Damage Done
		iDmg[1] = g_iDamage[iPlayer][id] // Damage Recived
					
		get_user_name(iPlayer, szName, charsmax(szName))
						
		formatex
		(
			szMessage, 
			charsmax(szMessage), 
			"%s^x01--> (^x04%i^x01 dmg / ^x04%i^x01 hits) to (^x04%i^x01 dmg / ^x04%i^x01 hits) from ^x03%s^x01 (^x04%i^x01 HP)",
			szMessage,
			min(iDmg[0], MAX_HEALTH),
			iHit[0],
			min(iDmg[1], MAX_HEALTH),
			iHit[1],
			szName,
			(is_user_alive(iPlayer) ? get_user_health(iPlayer) : 0))
	}
	
	if(!szMessage[0])
	{
		formatex(szMessage, charsmax(szMessage), "^x03-->^x01 No damage event happened with you.")
	}
	
	ChatColor(id, szMessage)
}

ChatColor(const id, const input[], any:...)
{
	static mMessageSayText
	if(!mMessageSayText)
	{
		mMessageSayText = get_user_msgid("SayText")
	}

        new iCount = 1, iPlayers[MAX_PLAYERS]
        static msg[191]
        vformat(msg, 190, input, 3)

        replace_all(msg, 190, "!g", "^4")
        replace_all(msg, 190, "!y", "^1")
        replace_all(msg, 190, "!t", "^3")

        if(id) iPlayers[0] = id; else get_players(iPlayers, iCount, "ch")
        {
                for (new i, player; i < iCount; i++)
                {
			message_begin(MSG_ONE_UNRELIABLE, mMessageSayText, _, (player = iPlayers[i]))
			write_byte(player)
			write_string(msg)
			message_end()
                }
        }
}
This one is working, thanks both of you
N3v3rM1nd is offline
CrazY.
Veteran Member
Join Date: May 2015
Location: SP, Brazil
Old 03-23-2022 , 11:29   Re: Convert from SourcePawn to AmxxPawn
Reply With Quote #8

Cool, just to make it clear to the community what the problem was, get_players with the flag "e" doesn't work as expected, should probably be avoided.

Code:
get_players(iPlayers, iNum, get_pcvar_num(pCvarExcludeBots) ? "ech" : "e", (get_user_team(id) == 1) ? "CT" : "TERRORIST")
__________________








CrazY. is offline
EFFx
Veteran Member
Join Date: Feb 2016
Location: São Paulo, Brasil
Old 03-23-2022 , 11:32   Re: Convert from SourcePawn to AmxxPawn
Reply With Quote #9

Quote:
Originally Posted by CrazY. View Post
Cool, just to make it clear to the community what the problem was, get_players with the flag "e" doesn't work as expected, should probably be avoided.

Code:
get_players(iPlayers, iNum, get_pcvar_num(pCvarExcludeBots) ? "ech" : "e", (get_user_team(id) == 1) ? "CT" : "TERRORIST")
That sucks.
Well, updated mine with your format to get the enemy team.
__________________
• Ranking System • AutoMix 5vs5 System
• Web Ban System • Plugins for free

____________________________________________
For private works:
• Discord: EFFEXo#8850 • Steam: EFFEXo

Last edited by EFFx; 03-24-2022 at 03:36.
EFFx is offline
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 03-23-2022 , 12:12   Re: Convert from SourcePawn to AmxxPawn
Reply With Quote #10

Hence why you should update to 1.9/1.10.
Although I'm pretty sure that problem was caused by get_user_team, not get_players.
__________________

Last edited by OciXCrom; 03-23-2022 at 12:13.
OciXCrom is offline
Send a message via Skype™ to OciXCrom
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 18:59.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode