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

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

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

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

2 страниц V   1 2

Простой код с бомбой

, Никогда не работал с бомбой не смогу сам написать
Статус пользователя xSav
сообщение 8.9.2013, 9:28
Сообщение #1
Стаж: 16 лет

Сообщений: 1131
Благодарностей: 174
Полезность: 126

Сам не работал с бомбой нужна помощь.
Дайте знающие люди код, при котором если КТ убил ТТ с бомбой (соответственно выпала бомба на землю) то игроку убившему ТТ выдать любое сообщение. А дальше я уже сам сделаю под себя.
Благодарю откликнувшегося
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 8.9.2013, 16:03
Сообщение #2
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

xSav,
http://amxxmodx.ru/core/amxmodxinc/78-regi...yh-sobytiy.html
http://amxxmodx.ru/csx/csxinc/393-client_d...ok-umiraet.html
http://amxxmodx.ru/cstrike/238-cs_get_user...ande-igrok.html

Отредактировал: Orty_Hart, - 8.9.2013, 16:03
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя xSav
сообщение 8.9.2013, 16:49
Сообщение #3
Стаж: 16 лет

Сообщений: 1131
Благодарностей: 174
Полезность: 126

Orty_Hart,

Мне это мало чем поможет. Я это читал, но не сообразив правильное решение - написал тут
Хотя б последовательность действий подскажите
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mittagswind
сообщение 8.9.2013, 17:09
Сообщение #4


Стаж: 13 лет

Сообщений: 102
Благодарностей: 14
Полезность: 112

вот ссылка:
https://forums.alliedmods.net/showthread.php?t=40164
вот код проверки оттуда - есть ли у игрока бомба:
Код:
// Is given player has the bomb?
if (user_has_weapon(id, CSW_C4)) // method #1
if (pev(id, pev_weapons) & (1<<CSW_C4)) // method #2
if (fm_find_ent_by_owner(-1, "weapon_c4", id)) // method #3


но у мервых игроков бомбы нет. я бы сделал так - отлавливал событие урона игрокам (например, Ham_TakeDamage из hamsandwich или client_damage из csx), в нем бы определял у кого бомба и сохранял id игрока в какую-нибудь глобальную переменную. обнулял бы ее при отключении/самоубийстве игрока. а в client_death (csx) уже находил бы того, кто убил сохраненный id игрока с бомбой.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 8.9.2013, 18:35
Сообщение #5
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

xSav,
1. (теоретически)
Ловим событие client_death()
и у игрока который умер, проверяем чтоб он был с бомбой
если есть, делаем что нао и т.д. Но тут 1 НО! это теоретически.... может быть такое, что функция не словит.... Т.е. игрок уже будет мертв и без бомбы а мы только проверяем....

2. С помощью Ham_Killed
http://amxxmodx.ru/hamsandwich/ham_constin...oka-obekta.html
ловим события ДО смерти, провеярем бомбу... и делаем что нужно.

примерно код будет такой

Скрытый текст
Код
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>

public plugin_init()
{
    register_plugin("HamSandWich killed", "1.0", "Admin")
    RegisterHam(Ham_Killed, "player", "ham_player_kill", 0)
}

public ham_player_kill(victim, attacker)
{
    if(pev(victim, pev_weapons) & (1 << CSW_C4)) //если у жертвы есть C4
        engclient_cmd(victim, "drop", "weapon_c4")
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя xSav
сообщение 8.9.2013, 19:49
Сообщение #6
Стаж: 16 лет

Сообщений: 1131
Благодарностей: 174
Полезность: 126

Не догнал это вывод сообщения о падении бомбы убийце ?
engclient_cmd(victim, "drop", "weapon_c4")
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 8.9.2013, 21:10
Сообщение #7
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

xSav,
Код
public plugin_init()
{
    register_plugin("HamSandWich killed", "1.0", "Admin") //Регистрируем имя, версию и автора плагина
    RegisterHam(Ham_Killed, "player", "ham_player_kill", 0)  //ловим события убийства (0 - до события 1 - после (т.е. когда игрока убили)) после перенаправляем в ham_player_kill()
}

public ham_player_kill(victim, attacker) // создаем и ловим в public убийцу и жертву
{
    if(pev(victim, pev_weapons) & (1 << CSW_C4)) //проверяем есть-ли у жертвы в "кормане" C4
        engclient_cmd(victim, "drop", "weapon_c4") // если результат проверку true выбрасываем C4
}


http://amxxmodx.ru/core/amxmodxinc/365-eng...ya-klientu.html

https://c-s.net.ua/forum/ipb.html?s=&sh...st&p=472664
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя xSav
сообщение 8.9.2013, 21:45
Сообщение #8
Стаж: 16 лет

Сообщений: 1131
Благодарностей: 174
Полезность: 126

Перепутал victim c attaker
вечно приставка vict меня тянет на победителя то есть атакера ))
Завтра проверю
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя xSav
сообщение 9.9.2013, 8:47
Сообщение #9
Стаж: 16 лет

Сообщений: 1131
Благодарностей: 174
Полезность: 126

добавил простую проверку
Код:

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>

public plugin_init()
{
register_plugin("HamSandWich killed", "1.0", "Admin")
RegisterHam(Ham_Killed, "player", "ham_player_kill", 0)
}

public ham_player_kill(victim, attacker)
{
if(pev(victim, pev_weapons) & (1 << CSW_C4)) //если у жертвы есть C4
engclient_cmd(victim, "drop", "weapon_c4")

if(is_user_alive(attacker) && get_user_team(attacker) == 2)
client_print(attacker, print_console, "терр уронил бомбу")
}

в итоге сообщение выводится если убит любой террорист. то есть подход не сработал (

Походу я не проснулся и два условия разделил хотя надо было в одном все сделать щас исправлю

Отредактировал: xSav, - 9.9.2013, 9:01
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
cs-portal
сообщение 9.9.2013, 9:00
Сообщение #10
Стаж: 16 лет

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

Код:

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>

public plugin_init()
{
register_plugin("HamSandWich killed", "1.0", "Admin")
RegisterHam(Ham_Killed, "player", "ham_player_kill", 0)
}

public ham_player_kill(victim, attacker)
{
if(pev(victim, pev_weapons) & (1 << CSW_C4) && get_user_team(attacker) == 2) {
engclient_cmd(victim, "drop", "weapon_c4")
client_print(attacker, print_console, "терр уронил бомбу")
}



}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Dasister
сообщение 9.9.2013, 9:01
Сообщение #11
Стаж: 17 лет

Сообщений: 90
Благодарностей: 42
Полезность: 150

Вторая проверка у тебя выполняется в любом случае. Тебе-же нужно сделать так, дабы она производилась только тогда, когда у игрока была бомба.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя xSav
сообщение 9.9.2013, 9:06
Сообщение #12
Стаж: 16 лет

Сообщений: 1131
Благодарностей: 174
Полезность: 126

cs-portal,
нафига там цикл по всем игрокам, вот так вполне работает
Код:
public ham_player_kill(victim, attacker)
{
if(pev(victim, pev_weapons) & (1 << CSW_C4)) //если у жертвы есть C4
//engclient_cmd(victim, "drop", "weapon_c4")
{
if(is_user_alive(attacker) && get_user_team(attacker) == 2)
client_print(attacker, print_console, "терр уронил бомбу")
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 9.9.2013, 17:04
Сообщение #13
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

xSav,
cs-portal,
что за бред? зачем проверять команду игрока?
если у игрока есть С4 значить он аналогично КТ + и конектнут.
а значит, что простой проверки

Код
if(pev(victim, pev_weapons) & (1 << CSW_C4))


будет ОЧЕНЬ хватать...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя xSav
сообщение 9.9.2013, 19:50
Сообщение #14
Стаж: 16 лет

Сообщений: 1131
Благодарностей: 174
Полезность: 126

Будет хватать для чего ?
Мне надо вывести КТ который убил Т что террорист обронил бомбу.
Еще есть три варианта когда Т несущего бомбу убивает Т, второй вариант когда Т несущего бомбу убивает КТ и одновремено себя же например гранатой. И еще есть суицид. Мне эти три случая ни к чему, для этого и проверка

Отредактировал: xSav, - 9.9.2013, 19:52
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 10.9.2013, 18:14
Сообщение #15
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

xSav,
я ещё раз повторяю. если у жертвы есть С4 значить она уже есть командой Т
темболее если она есть, она выпадает...

не утруждайте свой плагин, вам хватит

Код
if(pev(victim, pev_weapons) & (1 << CSW_C4))
{
//результат будет true, если у жертвы есть С4 (и он команды Т есть автоматом.)
//убийца может быть любой... Т КТ хоть сам сервер...
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя xSav
сообщение 10.9.2013, 21:00
Сообщение #16
Стаж: 16 лет

Сообщений: 1131
Благодарностей: 174
Полезность: 126

Нет давайте разберемся. При таком варианте который был еще дан ранее, при самоубийстве информация выводилась самому террористу, а мне оно зачем ? Мне надо только КТ
Ну сами посудите что ваша проверка дает? Только что игрок с бомбой умер. И все. А дальше рассортировать условие как ? Кому что выводить при таком раскладе. Или я чего то не понимаю
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 11.9.2013, 15:12
Сообщение #17
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

xSav,
Цитата
Дайте знающие люди код, при котором если КТ убил ТТ с бомбой


всё... надоело... у вас код есть, делайте что хотите.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя xSav
сообщение 11.9.2013, 18:33
Сообщение #18
Стаж: 16 лет

Сообщений: 1131
Благодарностей: 174
Полезность: 126

нет ну разжуйте плизз.. я же сказал что я возможно чего-то непонимаю
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
cs-portal
сообщение 11.9.2013, 18:54
Сообщение #19
Стаж: 16 лет

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

он сказал что бомба может быть у террориста только. значит команду проверять его не надо .... ( по факту через амхх можно бомбу и кт выдать) ( насчет цикла, я тогда уже засыпал)

то есть

if(pev(victim, pev_weapons) & (1 << CSW_C4))
игрок по сути уже терр с бомбой и уже жертва, так что лишних телодвижений здесь не надо
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя xSav
сообщение 11.9.2013, 20:38
Сообщение #20
Стаж: 16 лет

Сообщений: 1131
Благодарностей: 174
Полезность: 126

Хорошо пойдем через задний проход. Видимо я тормоз

Согласно вам обоим если игрока с бомбой убил контр террорист кода приведенного ниже хватит чтобы ему вывести сообщение о том что он убил игрока с бомбой. Я правильно понял ?
Код:

public ham_player_kill(victim, attacker)
{
if(pev(victim, pev_weapons) & (1 << CSW_C4))
client_print(attacker, print_chat, "терр уронил бомбу")
}


Тогда еще несколько вопросов
1. Будет ли этот код выводить сообщение террористу с бомбой о том что он уронил бомбу если он совершит самоубийство (прыжок с высоты)
2. Будет ли этот код выводить сообщение террористу который убьет террориста с бомбой (случайно)
3. Будет ли этот код выводить мертвому КТ который взорвет себя и террориста с бомбой к примеру гранатой (случайно)

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