Помогите сделать что бы урон по своим проходил
Код:
#include <amxmodx>
#include <cstrike>
#include <hamsandwich>
#define MAX_WARNING 3 // Количество предупреждений после которых игрок будет наказан.
#define MAX_WARNING_HIT 10 // Сколько раз нужно попасть по своим, чтобы получить 1 предупреждение.
#define MAX_PLAYERS 32
#define MSG_SAY_TEXT 76
#define MSG_TEXT_MSG 77
#define MSG_SEND_AUDIO 100
new g_iWarning[MAX_PLAYERS + 1], g_iWarningHit[MAX_PLAYERS + 1], g_iUserTeam[MAX_PLAYERS + 1];
new g_iMaxPlayers;
public plugin_init()
{
register_plugin("FF Control", "0.2", "Freedo.m");
RegisterHam(Ham_TakeDamage, "player", "Ham_TakeDamage_Pre", 0);
RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1);
RegisterHam(Ham_Killed, "player", "Ham_PlayerKilled_Post", 1);
register_message(MSG_TEXT_MSG, "Message_TextMsg");
server_cmd("mp_friendlyfire 1");
g_iMaxPlayers = get_maxplayers() + 1;
}
public Message_TextMsg(iMsgId, iMsgDest, iReceiver)
{
if(iMsgDest != 1) return PLUGIN_CONTINUE;
static szArg2[32];
get_msg_arg_string(2, szArg2, charsmax(szArg2));
if(equal(szArg2, "#Game_teammate_attack")) return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
public client_putinserver(id) g_iUserTeam[id] = 0;
public client_disconnect(id) g_iUserTeam[id] = 0;
public Ham_TakeDamage_Pre(iVictim, iInflictor, iAttacker, Float:fDamage, iBitDamage)
{
if(0 < iAttacker < g_iMaxPlayers && g_iUserTeam[iVictim] == g_iUserTeam[iAttacker] && iVictim != iAttacker)
{
if(++g_iWarningHit[iAttacker] >= MAX_WARNING_HIT)
{
g_iWarningHit[iAttacker] = 0;
switch(++g_iWarning[iAttacker])
{
case 0: {} //empty
case MAX_WARNING:
{
server_cmd("kick #%d Вы слишком увлеклись стрельбой по своим.", get_user_userid(iAttacker));
}
default:
{
SendAudio(iAttacker, "events/friend_died.wav");
PrintMsg(iAttacker, "!g|FF|!y В своих можно попасть (HP не отнимается), но не увлекайтесь:: !g%i/%i", g_iWarning[iAttacker], MAX_WARNING);
}
}
}
SetHamParamFloat(4, 0.0);
}
}
public Ham_PlayerSpawn_Post(id)
{
if(is_user_alive(id))
{
g_iWarning[id] = 0;
g_iWarningHit[id] = 0;
g_iUserTeam[id] = _:cs_get_user_team(id);
}
}
public Ham_PlayerKilled_Post(id) g_iUserTeam[id] = 0;
stock SendAudio(id, szDirSound[])
{
message_begin(MSG_ONE_UNRELIABLE, MSG_SEND_AUDIO, _, id);
write_byte(id);
write_string(szDirSound);
write_short(100);
message_end();
}
stock PrintMsg(const id, const szMessage[], any:...)
{
if(!is_user_connected(id)) return;
new szMsg[190];
vformat(szMsg, charsmax(szMsg), szMessage, 3);
while(replace(szMsg, charsmax(szMsg), "!y", "^1")) {}
while(replace(szMsg, charsmax(szMsg), "!t", "^3")) {}
while(replace(szMsg, charsmax(szMsg), "!g", "^4")) {}
message_begin(MSG_ONE_UNRELIABLE, MSG_SAY_TEXT, _, id);
write_byte(id);
write_string(szMsg);
message_end();
}
Отредактировал: Kasper55, - 12.5.2014, 16:14