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

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

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

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

> Правила раздела

Перед созданием новой темы убедитесь, не искал ли кто-нибудь подобный плагин до вас, для этого следует воспользоваться поиском.

Все вновь созданные темы, с названием типа "Помогите найти", "А что это за плагин", "Ищу плагин", "Нужен плагин", "Подскажите пожалуйста название плагина" - будут удалены.
При создании темы постарайтесь максимально понятно сформулировать её заголовок так, чтобы он соответствовал функциям плагина который Вы ищите. В том случае, если Вам не удается сформулировать мысль и правильно расписать всё в теме, воспользуйтесь графическим редактором, к примеру Paint, что бы примерно изобразить функции нужного Вам плагина.

friendly fire

Статус пользователя SooM
сообщение 14.5.2014, 16:07
Сообщение #1


Стаж: 17 лет

Сообщений: 76
Благодарностей: 5
Полезность: 56

Привет всем. Вот такой вопрос, нужен ли отдельный плагин, если да то какой. Чтобы когда стреляешь и попадаешь по своему, у тебя отнимало хп, а не у своего.

i
Уведомление:
В данном разделе обсуждаются вопросы, связанные с клиентской частью.
Перемещено.


Отредактировал: Bloo, - 28.5.2014, 10:51
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Bloo
сообщение 14.5.2014, 16:10
Сообщение #2


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

SooM, atac с этим справляется. Miror damage называется квар.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя SooM
сообщение 14.5.2014, 18:38
Сообщение #3


Стаж: 17 лет

Сообщений: 76
Благодарностей: 5
Полезность: 56

Смотрю большой плагин. Много чего настраивать нужно. Мне нужно только чтобы при стрельбе по своим, отнимало хп у тебя.
А остальное ненужно.
Как бы лучше настроить тогда данный плаг?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 14.5.2014, 18:51
Сообщение #4


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

SooM, если вам только это нужно то советую обратится к скриптерам с просьбой выделить данный функционал из это плагина в отдельный. Он вроде тут
atac_ta.sma
Код:
/* ATAC Team Attack Addon
*
* Copyright © 2006-2007, ATAC Team
*
* This file is provided as is (no warranties).
*
*/

#include <amxmodx>
#include <fakemeta>
#include <atac>

#define PLUGIN "Team Attack"
#define VERSION "1.0"
#define AUTHOR "ATAC Team"

new bool:gRestart
new gmsgHealth
new gCVARRestart
new gCVARTeamAttacks
new gCVARAdminsImmune

new gCVARSlapAttacker
new gCVARSlayonMaxattacks
new gCVARHealthRestore
new gCVARMirrorDamage
new gCVARNoattackWithin

new no_attack[ 33 ]

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event( "ResetHUD", "Event_ResetHUD", "be" )
register_event( "TextMsg", "RestartGame", "a", "2=#Game_will_restart_in" )
atac_register_addon()

gmsgHealth = get_user_msgid( "Health" )
gCVARRestart = get_cvar_pointer( "sv_restart" )
gCVARTeamAttacks = get_cvar_pointer( "atac_team_attacks" )
gCVARAdminsImmune = get_cvar_pointer( "atac_admins_immune" )
gCVARSlapAttacker = register_cvar( "atac_slap_attacker", "0" )
gCVARSlayonMaxattacks = register_cvar( "atac_slayon_maxattacks", "0" )
gCVARHealthRestore = register_cvar( "atac_health_restore", "0" )
gCVARMirrorDamage = register_cvar( "atac_mirror_damage", "0" )
gCVARNoattackWithin = register_cvar( "atac_noattack_within", "5" )
}

public RestartGame()
{
gRestart = true
set_task( float( get_pcvar_num( gCVARRestart ) ) - 0.2, "ResetGame" )
}

public ResetGame()
{
gRestart = false
}

public Event_ResetHUD( id )
{
if ( !gRestart && get_pcvar_num( gCVARNoattackWithin ) )
no_attack[ id ] = floatround( get_gametime() + get_pcvar_num( gCVARNoattackWithin ) )
}

public atac_team_attack( attacker, victim, damage )
{
if ( get_pcvar_num( gCVARAdminsImmune ) > 1 && get_user_flags( attacker ) & ADMIN_IMMUNITY )
return PLUGIN_CONTINUE

static health

if ( get_pcvar_num( gCVARSlapAttacker ) )
user_slap( attacker, 0 )

if ( get_pcvar_num( gCVARSlayonMaxattacks ) )
{
if ( get_atac_attacks( attacker ) >= get_pcvar_num( gCVARTeamAttacks ) )
user_kill( attacker )
}
if ( get_pcvar_num( gCVARHealthRestore ) )
{
health = get_user_health( victim ) + damage
update_health( victim, health )
}
if ( get_pcvar_num( gCVARMirrorDamage ) )
{
health = get_user_health( attacker ) - damage

if ( health <= 0 )
user_kill( attacker )
else
update_health( attacker, health )
}
if ( get_pcvar_num( gCVARNoattackWithin ) && no_attack[ victim ] >= floatround( get_gametime() ) )
user_kill( attacker )

return PLUGIN_CONTINUE
}

update_health( id, health ) // Special Health Updater so that ATAC can deal with adding/subtracting health in the same frame
{
set_pev( id, pev_dmg_inflictor, 0 ) // zero inflictor pointer
set_pev( id, pev_health, float( health ) ) // set health
emessage_begin( MSG_ONE_UNRELIABLE, gmsgHealth, _, id ) // resend health message
ewrite_byte( health )
emessage_end()
}

Возможно даже отдельно будет работать данный плагин без изменений.

Отредактировал: Bloo, - 14.5.2014, 18:52
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя nsgenn
сообщение 14.5.2014, 18:54
Сообщение #5


Стаж: 13 лет

Сообщений: 885
Благодарностей: 561
Полезность: 667

Bloo,
инклуда тут нету: <atac>
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 14.5.2014, 18:58
Сообщение #6


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

nsgenn, ах да, я что то не посмотрел даже на инклуды...
Код:
/* ATAC Functions
*
* Copyright © 2006-2008, ATAC Team
*
* This file is provided as is (no warranties).
*
*/

#if defined _atac_included
#endinput
#endif
#define _atac_included

#pragma reqlib atac

// The following two define how many plugins can hook into ATAC.
// remember: atac.sma will need to be recompiled if you change these values!
#define MAX_PUNISHMENTS 32
#define MAX_ADDONS 8

#define ATAC_HOOK_CONTINUE 0
#define ATAC_HOOK_SPAWNED 1
#define ATAC_HOOK_RESET 2

// Register a punishment returns -1 on failure. Allows hooking any forward from [Punishments]
native atac_register_punishment();

// Called when ATAC builds it's Team Kill Menu. You must return with EngFunc_AllocString! [Punishments]
forward atac_punishment_name(victim);

// Called when a punishment is chosen. [Punishments]
forward atac_player_punish(killer, victim);

// Called when a player dies and just before a player respawns. [Punishments]
forward atac_player_reset(killer, victim);

// Called when a player (re)spawns. [Punishments]
forward atac_player_spawn(killer, victim);


// Register a addon returns -1 on failure. Allows hooking any forward from [Addons]
native atac_register_addon();

// Called when a team attack occurs. [Addons]
forward atac_team_attack(attacker, victim, damage);

// Called when a team kill occurs. [Addons]
forward atac_team_kill(killer, victim);

// Called when a team kill increment occurs. This forward can supercede ATAC's banning system by: return PLUGIN_HANDLED [Addons]
forward atac_punished(killer, const name[], const authid[], bantype);

// Called when a punishment activates. [Addons]
forward atac_punishment_activated(punishment_id, killer, victim);


// Returns -1 on failure or plugin index if punishment is valid.
native is_punishment_valid(index);

// Returns maximum amount of punishments registered.
native get_maxpunishments();

// Gets the amount of Team Attacks done by a player.
native get_atac_attacks(id);

// Sets the amount of Team Attacks done by a player. If attacker & victim teams match, Team Attack is simulated.
native set_atac_attacks(attacker, victim, amount=-1);

// Gets the amount of Team Kills done by a player.
native get_atac_kills(id);

// Sets the amount of Team Kills done by a player.
/* special:
-1 - No action
0 - Simulate a real team kill longs the killer & victim teams match!
1 - Fun Menu
2+ - Activate a specific punishment
*/
native set_atac_kills(killer, victim, amount=-1, special=-1);
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Surf
сообщение 14.5.2014, 19:13
Сообщение #7


Стаж: 14 лет

Сообщений: 1089
Благодарностей: 501
Полезность: 583

Использует стандартный квар mp_mirrordamage

Код:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "TA - Mirror Damage"
#define VERSION "0.0.1"
#define AUTHOR "Flash"

#pragma semicolon 1
#pragma ctrlchar '\'

const m_iPlayerTeam = 114;

new g_p_mp_friendlyfire;
new g_p_mp_mirrordamage;

new MaxPlayers;

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);

RegisterHam(Ham_TakeDamage, "player", "fwHamTakeDamagePre", false);

g_p_mp_friendlyfire = get_cvar_pointer("mp_friendlyfire");
g_p_mp_mirrordamage = get_cvar_pointer("mp_mirrordamage");

MaxPlayers = get_maxplayers();
}

public fwHamTakeDamagePre(iVictim, iInflictor, iAttacker, Float:flDamage, iDamageBits)
{
if (iAttacker != iVictim && 1 <= iAttacker <= MaxPlayers && get_pcvar_num(g_p_mp_friendlyfire) && get_pcvar_num(g_p_mp_mirrordamage) && get_pdata_int(iVictim, m_iPlayerTeam) == get_pdata_int(iAttacker, m_iPlayerTeam))
{
//SetHamParamFloat(4, flDamage * 0.8);
SetHamParamEntity(1, iAttacker);
}
}


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