Доброго времени суток, форумчане.
Сразу скажу - я пользовался поиском, гуглил, толкового ничего не нашел.
у меня есть плагин damager.amxx , который меня устраивает:
Код
#include <amxmodx>
#include <fakemeta>
new const PLUGIN[] = "Damager"
new const VERSION[] = "2.0"
new const AUTHOR[] = "Prayer"
new g_MsgSync
new g_MsgSync2
new pid
new damage
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("Damage", "EVENT_Damage", "b", "2!0", "3=0", "4!0")
g_MsgSync = CreateHudSyncObj()
g_MsgSync2 = CreateHudSyncObj()
}
public EVENT_Damage(id)
{
if(pev_valid(id))
{
pid = get_user_attacker(id)
damage = read_data(2)
set_hudmessage(255, 0, 0, 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1)
ShowSyncHudMsg(id, g_MsgSync2, "%i", damage)
if(pev(pid, pev_flags) & FL_CLIENT)
{
set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
ShowSyncHudMsg(pid, g_MsgSync, "%i", damage)
}
}
}
но изза него в логах есть ошибка :
Цитата
L 12/03/2012 - 17:16:24: Start of error session.
L 12/03/2012 - 17:16:24: Info (map "de_aztec") (file "addons/amxmodx/logs/error_20121203.log")
L 12/03/2012 - 17:16:24: [FAKEMETA] Invalid entity
L 12/03/2012 - 17:16:24: [AMXX] Displaying debug trace (plugin "damager.amxx")
L 12/03/2012 - 17:16:24: [AMXX] Run time error 10: native error (native "pev")
L 12/03/2012 - 17:16:24: [AMXX] [0] damager.sma::EVENT_Damage (line 34)
на одном из сайтов предложили поменять строку
if(pev_valid(id)) на
if(!pev_valid(ent))я в скриптинге не силен, но плагин после этого не компилируется.
так же, ктото писал, что дело в этой строке:
if(pev(pid, pev_flags) & FL_CLIENT) ну так то и я понимаю, что дело в ней, ибо это и есть та самая 34 строка. но что именно тут не так?
на другом форуме преложили другой код этого плагина:
Код
#include <amxmodx>
#define PLUGIN "Damager"
#define AUTHOR "2.0"
#define VERSION "Prayer"
#define MAX_PLAYERS 32
new const Float:g_flCoords[][] =
{
{0.50, 0.40},
{0.56, 0.44},
{0.60, 0.50},
{0.56, 0.56},
{0.50, 0.60},
{0.44, 0.56},
{0.40, 0.50},
{0.44, 0.44}
}
new g_iPlayerPos[MAX_PLAYERS+1]
new g_iMaxPlayers
new g_pCvarEnabled
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
g_pCvarEnabled = register_cvar("bullet_damage", "1")
register_event("Damage", "Event_Damage", "b", "2>0", "3=0")
g_iMaxPlayers = get_maxplayers()
}
public Event_Damage( iVictim )
{
if( get_pcvar_num(g_pCvarEnabled) && (read_data(4) || read_data(5) || read_data(6)) )
{
new id = get_user_attacker(iVictim)
if( (1 <= id <= g_iMaxPlayers) && is_user_connected(id) )
{
new iPos = ++g_iPlayerPos[id]
if( iPos == sizeof(g_flCoords) )
{
iPos = g_iPlayerPos[id] = 0
}
set_hudmessage(0, 40, 80, Float:g_flCoords[iPos][0], Float:g_flCoords[iPos][1], 0, 0.1, 2.5, 0.02, 0.02, -1)
show_hudmessage(id, "%d", read_data(2))
}
}
}
по поводу ошибок ничего сказать не могу, т.к. пол часа назад его поставил, но отображение урона мне там вообще не нравится. в первом варианте отображение намного лучше и удобнее.
вопрос:
1. можно ли как-то исправить первый код. чтобы не было ошибки про которую я написал
2. или же во второй плагин запихать ту часть кода , которая отвечает за отображение урона, в первом плагине.
всем кто помог, заранее спасибо!