Member
|
03-23-2022
, 11:03
Re: Convert from SourcePawn to AmxxPawn
|
#7
|
Quote:
Originally Posted by CrazY.
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
|
|