Иконка ресурса

Bomb Taker 0.0.2b

Нет прав для скачивания
Сообщения
657
Реакции
562
Предупреждения
8
Помог
9 раз(а)
Пользователь Vaqtincha разместил новый ресурс:

Bomb Taker - Ремейк плагина "C4 Taker " на реапи

Описание из интернета:
Позволяет взять С4 от игрока, направленный на него и нажать клавишу использования. (по умолчанию "Е")
Это особенно полезно при игре с ботами или для игрового процесса.

От себя:
Убрал лишные квары.
Оптимизация кода.
Теперь можно взять у игрока который стоял n секунд бездействие
Узнать больше об этом ресурсе...
 
Сообщения
223
Реакции
146
Помог
4 раз(а)
Из этого можно создать целый режим, под названием "Догони и отбери c4" :D
 
Сообщения
1
Реакции
0
Может кто нибудь подсказать, как сделать "// #define BOT_WAIT_TIME_IGNORE // игнорировать PLAYER_MAX_WAIT_TIME у ботов (от них всегда можно взять бомбу)" тоже самое для админов.
То есть все могут забрать бомбу если человек не двигается 5 сек, а админ может забрать у любого.
Изменив 91 и 92 строку на эти

if(is_user_admin(pPlayer))
return true

и добавив инклуд. #include <amxmisc> не помогло, компилируется без проблем, но вот админ как и другие может забрать бомбу только спустя 5 сек бездействия игрока. Подскажите пожалуйста, как реализовать?
 
Сообщения
8
Реакции
1
Hi! (sry do not speak russian xD) in first test with this plugin, when i aim to a bot and want to take c4 him, server crashes ...

And you can do this only for bots? if a player are afk just drop the c4.
3 Окт 2017
Woops. this crashes are for a bug from Thor Weapon Pickup plugin... sry!
 
Сообщения
94
Реакции
16
Помог
2 раз(а)
немного изменили плагин по моей просьбе, может кому пригодится и понравится.
1. бомбу может забрать в любое время игрок с привилегией! настраивается кваром :
#define ADMIN_FLAG ADMIN_LEVEL_H //игроки с каким флагом могут отбирать бомбу
2. вместо худа пишет в чате обоим игрокам кто отобрал бомбу или у кого отобрал.
#include <amxmodx>
#include <hamsandwich>
#include <reapi>

#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif

#define ADMIN_FLAG ADMIN_LEVEL_H //игроки с каким флагом могут отбирать бомбу

#define PL_VERSION "0.0.1b"

#define PLAYER_USE_RADIUS 75

#define IsUserVip(%1) (get_user_flags(%1) & ADMIN_FLAG)

public plugin_init()
{
register_plugin("Bomb Taker", PL_VERSION, "Vaqtincha")

if(bool:get_member_game(m_bMapHasBombTarget))
{
RegisterHam(Ham_ObjectCaps, "bot", "CBasePlayer_ObjectCaps", .Post = false)
RegisterHam(Ham_ObjectCaps, "player", "CBasePlayer_ObjectCaps", .Post = false)
RegisterHam(Ham_Use, "bot", "CBasePlayer_PlayerUse", .Post = true)
RegisterHam(Ham_Use, "player", "CBasePlayer_PlayerUse", .Post = true)

register_event("StatusValue", "Event_StatusValue_Show", "be", "1=3"/*HEALTH*/, "2>0")

}
else {
pause("ad")
}
}

public CBasePlayer_ObjectCaps(const pPlayer)
{
SetHamReturnInteger(FCAP_ONOFF_USE)
return HAM_SUPERCEDE
}


public CBasePlayer_PlayerUse(const pPlayer, const pActivator, const pCaller, const use_type, const Float:value)
{
new name1[MAX_NAME_LENGTH], name2[MAX_NAME_LENGTH];
if(value == 0.0 || !is_user_alive(pActivator) || get_member(pActivator, m_iTeam) != TEAM_TERRORIST)
return

if(is_user_alive(pPlayer) && CanUseThisPlayer(pPlayer)) {
rg_transfer_c4(pPlayer, pActivator)

get_entvar(pActivator, var_netname, name1, charsmax(name1));
get_entvar(pPlayer, var_netname, name2, charsmax(name2));

client_print_color(pPlayer,0, "^1[^4Сервер^1] ^3%s ^1забрал у вас бомбу", name1);
client_print_color(pActivator,0, "^1[^4Сервер^1] Вы забрали бомбу у ^3%s", name2);
}
}

public Event_StatusValue_Show(const pPlayer)
{
if(get_member(pPlayer, m_iTeam) != TEAM_TERRORIST)
return

new pTarget, iBody
get_user_aiming(pPlayer, pTarget, iBody, PLAYER_USE_RADIUS)

}

stock bool:CanUseThisPlayer(pPlayer)
{
if(!get_member(pPlayer, m_bHasC4) && !IsUserVip(pPlayer))
return false
else
return true
}
 
Сообщения
5
Реакции
1
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
ofanok, у меня не компилируется твой код.

c4_admin.sma(53) : error 017: undefined symbol "MAX_NAME_LENGTH"
c4_admin.sma(53) : error 029: invalid expression, assumed zero
c4_admin.sma(53) : error 017: undefined symbol "name2"
c4_admin.sma(53) : fatal error 107: too many error messages on one line

Можешь скинуть исходник?
 
Сообщения
1,291
Реакции
2,288
Помог
57 раз(а)
pacumka, amxx ниже 1.8.3 не поддерживается, пора бы уже обновиться на 1.9.0
Чтобы процесс пошёл:
Код:
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif
--->
Код:
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#define MAX_NAME_LENGTH 32
#endif
 
Сообщения
5
Реакции
1
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
BlackSignature, спасибо, заработало!

Только вот не работает тема с флагом. Любой игрок может забрать бомбу (хотя установлено, что только с флагом t (admin_level_h) могут отобрать.

Кто знает как пофиксить?

Дублирую код:

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

#if AMXX_VERSION_NUM < 183
#include <colorchat>
#define MAX_NAME_LENGTH 32
#endif

#define ADMIN_FLAG ADMIN_LEVEL_H //игроки с каким флагом могут отбирать бомбу

#define PL_VERSION "0.0.1b"

#define PLAYER_USE_RADIUS 75

#define IsUserVip(%1) (get_user_flags(%1) & ADMIN_FLAG)

public plugin_init()
{
register_plugin("Bomb Taker", PL_VERSION, "Vaqtincha")

if(bool:get_member_game(m_bMapHasBombTarget))
{
RegisterHam(Ham_ObjectCaps, "bot", "CBasePlayer_ObjectCaps", .Post = false)
RegisterHam(Ham_ObjectCaps, "player", "CBasePlayer_ObjectCaps", .Post = false)
RegisterHam(Ham_Use, "bot", "CBasePlayer_PlayerUse", .Post = true)
RegisterHam(Ham_Use, "player", "CBasePlayer_PlayerUse", .Post = true)

register_event("StatusValue", "Event_StatusValue_Show", "be", "1=3"/*HEALTH*/, "2>0")

}
else {
pause("ad")
}
}

public CBasePlayer_ObjectCaps(const pPlayer)
{
SetHamReturnInteger(FCAP_ONOFF_USE)
return HAM_SUPERCEDE
}


public CBasePlayer_PlayerUse(const pPlayer, const pActivator, const pCaller, const use_type, const Float:value)
{
new name1[MAX_NAME_LENGTH], name2[MAX_NAME_LENGTH];
if(value == 0.0 || !is_user_alive(pActivator) || get_member(pActivator, m_iTeam) != TEAM_TERRORIST)
return

if(is_user_alive(pPlayer) && CanUseThisPlayer(pPlayer)) {
rg_transfer_c4(pPlayer, pActivator)

get_entvar(pActivator, var_netname, name1, charsmax(name1));
get_entvar(pPlayer, var_netname, name2, charsmax(name2));

// client_print_color(pPlayer,0, "^1[^4FZM^1] ^3%s ^1забрал у вас бомбу", name1);
// client_print_color(pActivator,0, "^1[^4FZM^1] Вы забрали бомбу у ^3%s", name2);
}
}

public Event_StatusValue_Show(const pPlayer)
{
if(get_member(pPlayer, m_iTeam) != TEAM_TERRORIST)
return

new pTarget, iBody
get_user_aiming(pPlayer, pTarget, iBody, PLAYER_USE_RADIUS)

}

stock bool:CanUseThisPlayer(pPlayer)
{
if(!get_member(pPlayer, m_bHasC4) && !IsUserVip(pPlayer))
return false
else
return true
}
 
Сообщения
1,291
Реакции
2,288
Помог
57 раз(а)
pacumka,
Код:
public CBasePlayer_ObjectCaps(const pPlayer)
{
SetHamReturnInteger(FCAP_ONOFF_USE)
return HAM_SUPERCEDE
}

stock bool:CanUseThisPlayer(pPlayer)
{
if(!get_member(pPlayer, m_bHasC4) && !IsUserVip(pPlayer))
return false
else
return true
}
--->
Код:
public CBasePlayer_ObjectCaps(const pPlayer) {
	if(!IsUserVip(pPlayer)) {
		return HAM_IGNORED
	}

	SetHamReturnInteger(FCAP_ONOFF_USE)
	return HAM_SUPERCEDE
}

stock bool:CanUseThisPlayer(pPlayer) {
	return (get_member(pPlayer, m_bHasC4) && !IsUserVip(pPlayer))
}
 
Сообщения
391
Реакции
106
Помог
2 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Если у тебя бомба и летишь на парашюте (а летел долго так как это была карта rats) то все время полета сам у себя бомбу забираешь))) по умолчанию же и то и то «Е»

Стоит плагин, позволяющий админам забирать у всех.
 
Сообщения
1,291
Реакции
2,288
Помог
57 раз(а)
stalin_alex, Игрок сам себя "юзает" чтоль? Неплохо :)
Добавьте в CBasePlayer_PlayerUse() в самую первую проверку отсев, т.е.
Код:
if(value == 0.0 || !is_user_alive(pActivator) || get_member(pActivator, m_iTeam) != TEAM_TERRORIST)
->
Код:
if(value == 0.0 || pActivator == pPlayer || !is_user_alive(pActivator) || get_member(pActivator, m_iTeam) != TEAM_TERRORIST)
 
Сообщения
391
Реакции
106
Помог
2 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Ребят, помогите поправить новые баги.

1 . В общем если у игрока нет бомбы , и к нему подойти и тыкать на Е , то в чат пишет сообщение, что я забрал бомбу у игрока.. Хотя у игрока её ине было.. Аналогично если у тебя была бомба и я скидываю её.. Подходит ко мне игрок, тыкает на Е и ему пишет, что игрок забрал у меня бомбу...

2. Если игрок ставит бомбу , то у него её можно забрать во время установки.( Правка кода от кого-то выше в этой ветке, для админов, которые могут забрать бомбу у любого НЕ АФК)

3. Сделать задержку на отнимание бомбы, чтобы випы или админы не баловались с отниманием , а так же было такое, что бежишь и случайно нажал на Е , и ты забрал бомбу у впереди идущего... К задержке было бы отличным прикрутить полоску.. такую, которая используется при установке бомбы. Полоса статуса (как закачка)
 

Download all Attachments

Сообщения
1,291
Реакции
2,288
Помог
57 раз(а)
stalin_alex, Давайте начнём с того, что вы приложите исходник, который у вас используется.
 
Сообщения
391
Реакции
106
Помог
2 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
BlackSignature, Извиняюсь, что сразу не приложил. Как я понял плагин уже стал "собирательным" Автор не обновляет, судя по всему с учётом накопившихся правок...

Приложил к предыдущему посту...
 
Сообщения
1,291
Реакции
2,288
Помог
57 раз(а)
stalin_alex, pacumka, ofanok, забирайте. Я особо не тестил, если что. Комбинации настроек не проверялись от слова совсем.
 

Download all Attachments

Сообщения
333
Реакции
290
Помог
9 раз(а)
Как-то "понаворочено".. Все баги из этого поста можно было убрать выносом проверки IsAFK до проверки иммунитета
 
Сообщения
1,291
Реакции
2,288
Помог
57 раз(а)
zhorzh78, Я не баги правил, а переосмысливал логику с целью добавления опций (придания гибкости), так, чтобы они могли сосуществовать в одном исходнике друг другу не мешая. Уверен, сделать можно лучше и проще. Но тут встаёт вопрос, а надо ли оно мне? :)
 
Сообщения
333
Реакции
290
Помог
9 раз(а)
переосмысливал логику
Вот ее-то и пытался найти, особенно в CanUseThisPlayer- не получилось )
Там много вопросов, но что бросается и кусается:

C++:
if(!get_member(iTarget, m_bHasC4)) {
    return false
}
А после этого
Код:
get_member(iActiveItem, m_iId) == WEAPON_C4
 
Сообщения
1,291
Реакции
2,288
Помог
57 раз(а)
zhorzh78, m_bHasC4 true, когда у игрока в инвентаре есть бомба, правильно? Или я путаю, и оно true, когда она в руках? Просто при проверке значения m_bHasC4 я подразумеваю проверку на то, есть ли у игрока бомба вообще, а m_pActiveItem это уже именно активный предмет, который в руках, и пляски с ним производятся для определения того, C4 это, или же нет, и если да, то находится ли это C4 в процессе установки (игрок ставит бомбу).
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу