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

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

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

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

> Важная информация

Перед тем как создать тему или задать вопрос, ознакомьтесь с данной темой, там собраны наиболее распространенные уязвимости и способы устранения.
Так же не поленитесь воспользоваться поиском, вполне возможно, что ваш вопрос уже поднимался на форуме.
При создании новой темы уделите внимание ее названию, оно должно кратко описывать суть вашего вопроса/проблемы. Все вновь созданные темы с названиями "Помогите", "Объясните", "Подскажите" и т.д. будут удалены, а их авторы наказаны.
2 страниц V   1 2

Баг клонирования бомбы

, 5787 билд
Статус пользователя Yaroslav
сообщение 5.1.2014, 17:36
Сообщение #1


Стаж: 12 лет

Сообщений: 296
Благодарностей: 247
Полезность: 1084

Кто знает как делают и как закрыть? Reconnect и retry закрыты плагином от ConnorMcLeod.
Из управляющих бомбой есть еще afkbombtransfer, но его причастности пока не увидел, посему думаю, что баг стандартный.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя gidroponik
сообщение 5.1.2014, 18:44
Сообщение #2


Стаж: 12 лет

Сообщений: 20
Благодарностей: 47
Полезность: 79

Делаешь цикл, проверяет наличие C4 , если есть, то выдавать, иначе игнорировать.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Metal Messiah
сообщение 5.1.2014, 21:15
Сообщение #3


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

Стаж: 13 лет

Сообщений: 2457
Благодарностей: 1482
Полезность: 770

HostGame.cf
опа, а можно выдать 2 бомбы ???? я пошел писать плагин каждому по бомбе вот эт паника будет ))


Полезные публикации - ссылки у меня в профиле. Ссылка на плагин против спама на сервере StopServerSpam там же.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя cMeeX
сообщение 5.1.2014, 21:25
Сообщение #4
Стаж: 14 лет

Сообщений: 106
Благодарностей: 28
Полезность: 165

Цитата(Metal Messiah @ 5.1.2014, 21:15) *
опа, а можно выдать 2 бомбы ???? я пошел писать плагин каждому по бомбе вот эт паника будет ))


Сделай как в point blank :) бомба вначале игры у всех, но после того как кто то устанавливает она пропадает :) будет прикольно)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 5.1.2014, 21:30
Сообщение #5
Стаж: 12 лет

Сообщений: 945
Благодарностей: 208
Полезность: 0

Цитата(Yaroslav @ 5.1.2014, 18:36) *
Кто знает как делают и как закрыть? Reconnect и retry закрыты плагином от ConnorMcLeod.
Из управляющих бомбой есть еще afkbombtransfer, но его причастности пока не увидел, посему думаю, что баг стандартный.

Бага не имеется такого :3
Возможно, Вы используете такие плагины как VIP или еще что-нибудь, там где при выдаче оружия используется strip_user_weapons(id) :)
Ну, и в 90 % таких плагинов есть выдача weapon_c4 :-)

Отредактировал: Esecman, - 5.1.2014, 21:32
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя coolman
сообщение 5.1.2014, 22:04
Сообщение #6


Стаж: 19 лет
Город: Екатеринбург

Сообщений: 1220
Благодарностей: 218
Полезность: 149

Цитата(gidroponik @ 5.1.2014, 21:44) *
Делаешь цикл, проверяет наличие C4 , если есть, то выдавать, иначе игнорировать.

а можно пример кода, как выдать бомбу и проверку сделать на имеющуюся, хочу приколоться у себя на сервере, когда-то в старые времена попадался такой плагин.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 5.1.2014, 22:09
Сообщение #7
Стаж: 12 лет

Сообщений: 945
Благодарностей: 208
Полезность: 0

Цитата(coolman @ 5.1.2014, 23:04) *
а можно пример кода, как выдать бомбу и проверку сделать на имеющуюся, хочу приколоться у себя на сервере, когда-то в старые времена попадался такой плагин.

код
Код:

В начало добавить:
new g_C4[33]

Ну и в код....

if(get_user_team(id) == 1 && g_C4[id])
{
give_item(id, "weapon_c4")
cs_set_user_plant(id, 1, 1)
}
if(user_has_weapon(id, CSW_C4))
g_C4[id] = true
else
g_C4[id] = false


Отредактировал: Esecman, - 5.1.2014, 22:17
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Yaroslav
сообщение 6.1.2014, 15:12
Сообщение #8


Стаж: 12 лет

Сообщений: 296
Благодарностей: 247
Полезность: 1084

2 Esecman
Точно, но одна странная вещь.
Перед выдачей оружия я:
1. Делаю проверку на с4
Код:
if (user_has_weapon(id, CSW_C4) && get_user_team(id) == 1)
HasC4[id] = true;
else
HasC4[id] = false;

2. Стрипаю весь эквип.
3. Выдаю, что нужно.
4. Выдаю бомбу, если запомнено событие наличия бомбы.
Код:
if (HasC4[id])
{
give_item(id,"weapon_c4")
cs_set_user_plant(id,1,1)
}


Получается, что если бомбу дропнуть перед активацией кода, событие наличия бомбы у юзера запоминается?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 6.1.2014, 15:14
Сообщение #9
Стаж: 12 лет

Сообщений: 945
Благодарностей: 208
Полезность: 0

А вот это нужно проверить :3

Отредактировал: Esecman, - 6.1.2014, 15:15
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Yaroslav
сообщение 6.1.2014, 15:16
Сообщение #10


Стаж: 12 лет

Сообщений: 296
Благодарностей: 247
Полезность: 1084

2 Esecman
Нет мыслей, как залечить?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 6.1.2014, 15:20
Сообщение #11
Стаж: 12 лет

Сообщений: 945
Благодарностей: 208
Полезность: 0

Цитата(Yaroslav @ 6.1.2014, 16:16) *
2 Esecman
Нет мыслей, как залечить?

Я думаю, что нужно воспользоваться ham_spawn
Сделать проверку на if(user_has_weapon(id, CSW_C4))
Ну, и плюс отловить это:
register_event("BombDrop", "function_name","be") - этим воспользоваться :3

Надо собраться с мыслями, нужно подумать :D
Попробую позже кинуть сорс

Отредактировал: Esecman, - 6.1.2014, 15:24
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Yaroslav
сообщение 6.1.2014, 15:26
Сообщение #12


Стаж: 12 лет

Сообщений: 296
Благодарностей: 247
Полезность: 1084

Регистр хам спауна и проверка на наличие сделана, а вот с регистром события дропа бомбы и проверкой на него хорошая идея, спасибо :)
Осталось понять как задать корректное условие проверки на дроп при выдаче бомбы после стрипа :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 6.1.2014, 17:28
Сообщение #13
Стаж: 12 лет

Сообщений: 945
Благодарностей: 208
Полезность: 0

Цитата(Yaroslav @ 6.1.2014, 16:26) *
Регистр хам спауна и проверка на наличие сделана, а вот с регистром события дропа бомбы и проверкой на него хорошая идея, спасибо :)
Осталось понять как задать корректное условие проверки на дроп при выдаче бомбы после стрипа :)

:D
Код выше работает так, как тебе нужно, а именно:
кусок кода из new_year.sma(там используется этот код)
Код
Код:
 
if(is_user_alive(id)) {
if(g_F_counter_user[id] < get_cvar_num("max_use_cmd_user")){
if(user_has_weapon(id, CSW_C4))
g_C4[id] = true
else
g_C4[id] = false
strip_user_weapons(id)
new name[32]
get_user_name(id, name, 31)
give_item(id, "weapon_knife")
give_item(id, "weapon_deagle")
give_item(id, "weapon_m4a1")
cs_set_user_bpammo(id, CSW_M4A1, 90)
cs_set_user_bpammo(id, CSW_DEAGLE, 35)
client_printcolor(0, "^1[^4Happy New Year Палево :D^1] %s, использовал меню ^3o_O", name)
if(get_user_team(id) == 1 && g_C4[id])
{
give_item(id, "weapon_c4")
cs_set_user_plant(id, 1, 1)
}
g_F_counter_user[id]++

}

То есть код проверяет наличие бомбы.
Я сделал так:
Сбросил бомбу и воспользовался пунктом из меню.
Он мне не выдал больше бомбу :3

Ах, да:
отлов c4
Код:
 #include <amxmodx>
#include <hamsandwich>

#define PLUGIN "Unnamed :3"
#define VERSION "1.0"
#define AUTHOR "Esecman"

#define TT 1
#define CT 2

new g_C4[33]

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Spawn,"player","spawn_func")
register_event("BombDrop", "drop_c4","be")
register_event("BombPickup", "pickup_c4","be")
}

public drop_c4(id) {
client_print(id, print_chat, "You have dropped the bomb!")
}

public pickup_c4(id) {
new team = get_user_team(id)
client_print(id, print_chat, "You have picked up the bomb!")
if(team == 1) {
set_task(5.0, "check_bomb", id, _, _, "b")
}
}

public spawn_func(id) {
new team = get_user_team(id)
if(team == 1) {
set_task(5.0, "check_bomb", id, _, _, "b")
}
}

public check_bomb(id) {
new team = get_user_team(id)
if(user_has_weapon(id, CSW_C4) & team == 1) {
g_C4[id] = true
client_print(id, print_chat, "You have c4!")
}
else {
g_C4[id] = false
if(team == 1) {
client_print(id, print_chat, "You don't have c4!")
}
}
}


На здоровье! :-)

UPD

Отредактировал: Esecman, - 7.1.2014, 9:57
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 6.1.2014, 17:33
Сообщение #14


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

Стаж: 16 лет

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

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

какой-то велосипед изобретаете
в начале раунда найти и удалить бомбу, у игроков и на земле

выдать бомбу
вуаля
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 6.1.2014, 17:36
Сообщение #15
Стаж: 12 лет

Сообщений: 945
Благодарностей: 208
Полезность: 0

Цитата(Legenda @ 6.1.2014, 18:33) *
какой-то велосипед изобретаете
в начале раунда найти и удалить бомбу, у игроков и на земле

выдать бомбу
вуаля

Какое удаление? :D
В посте 8
Получается все запоминается при таком коде:
Код при котором будет работать запоминание c4 :D

В начало добавить(в самое) даже перед plugin_init():
Код:
 new g_C4[33] 


Ну и в код....
Код:
 
if(get_user_team(id) == 1 && g_C4[id])
{
give_item(id, "weapon_c4")
cs_set_user_plant(id, 1, 1)
}
if(user_has_weapon(id, CSW_C4))
g_C4[id] = true
else
g_C4[id] = false

А отлов c4 попросили :3(Флудерный правда :D)

Отредактировал: Esecman, - 6.1.2014, 17:46
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Yaroslav
сообщение 7.1.2014, 1:22
Сообщение #16


Стаж: 12 лет

Сообщений: 296
Благодарностей: 247
Полезность: 1084

Результаты теста показали, что при регистрации
Код:
RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)

Условие
Код:
if (user_has_weapon(id, CSW_C4) && get_user_team(id) == 1)

не дает клонирования бомбы при ее выбрасывании
до выполнения
Код:
if (HasC4[id])
{
give_item(id,"weapon_c4")
cs_set_user_plant(id,1,1)
}


Игроки говорят, что при реконнекте с условием, что ты спавнишься с бомбой можно создать ее клон, но реконненкт, ретрай закрыты - спавнят мертвым.
Остается проверить afkbombtransfer
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 7.1.2014, 1:26
Сообщение #17


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

Стаж: 16 лет

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

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

Код:
if (user_has_weapon(id, CSW_C4) && get_user_team(id) == 1)

зачем тут нужно "get_user_team(id) == 1" ?

я понял если бы получали список игроков team1, а потом их проверял на наличие бомбы
но так просто ставить лишнею проверку, смысла не вижу
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Yaroslav
сообщение 7.1.2014, 3:15
Сообщение #18


Стаж: 12 лет

Сообщений: 296
Благодарностей: 247
Полезность: 1084

2 Legenda
Ну делаю и делаю :) Чтобы потом не искать в кодах всех плагинов, где логическая ошибка.
Меня больше интересует вопрос, поставленный мной изначально.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 7.1.2014, 7:52
Сообщение #19
Стаж: 12 лет

Сообщений: 945
Благодарностей: 208
Полезность: 0

Цитата(Legenda @ 7.1.2014, 2:26) *
Код:
if (user_has_weapon(id, CSW_C4) && get_user_team(id) == 1)

зачем тут нужно "get_user_team(id) == 1" ?

я понял если бы получали список игроков team1, а потом их проверял на наличие бомбы
но так просто ставить лишнею проверку, смысла не вижу

проверка на террориста :D
---------------------------------
Ну, а я че говорил :D
Давай исходник плагина ;-)

Отредактировал: Esecman, - 7.1.2014, 8:01
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 7.1.2014, 9:57
Сообщение #20


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

Стаж: 16 лет

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

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

Цитата(Yaroslav @ 7.1.2014, 5:15) *
2 Legenda
Ну делаю и делаю :) Чтобы потом не искать в кодах всех плагинов, где логическая ошибка.
Меня больше интересует вопрос, поставленный мной изначально.

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