Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

ff_control

Kasper55
сообщение 12.5.2014, 15:50
Сообщение #1
Стаж: 16 лет

Сообщений: 1145
Благодарности: выкл.

Помогите сделать что бы урон по своим проходил

Код:
#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
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Kasper55
сообщение 12.5.2014, 17:15
Сообщение #2
Стаж: 16 лет

Сообщений: 1145
Благодарности: выкл.

правильно я думаю что это надо вырезать ?

RegisterHam(Ham_TakeDamage, "player", "Ham_TakeDamage_Pre", 0)

Отредактировал: Kasper55, - 12.5.2014, 17:15
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя default1k
сообщение 12.5.2014, 17:57
Сообщение #3
Стаж: 12 лет

Сообщений: 718
Благодарностей: 180
Полезность: 153

И это:
Код:

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);
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 12.5.2014, 18:08
Сообщение #4


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

ша?
вырубить плагин
и использовать mp_friendlyfire 1/0
тогда точно урон будет проходить по своим
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Kasper55
сообщение 12.5.2014, 18:26
Сообщение #5
Стаж: 16 лет

Сообщений: 1145
Благодарности: выкл.

Цитата(Legenda @ 12.5.2014, 18:08) *
ша?
вырубить плагин
и использовать mp_friendlyfire 1/0
тогда точно урон будет проходить по своим

подумав я так и сделал , зря только сюда писал , извените
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: