Русское сообщество по скриптингу

Имитация смерти от гранаты

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Имитация смерти от гранаты

Сообщение Grushka » 18 апр 2017, 21:42

Здравствуйте, не получается сделать так, чтобы наносился урон, как от гранаты

Пытался так:
Код: Выделить всё
public CreateDamageInRadius(ent, Float:damage, Float:radius)
{
    new owner = pev(ent, pev_owner);
    
    new Float
:origin[3]
    pev(ent, pev_origin, origin)
    
    new victim 
= -1;
    
    while
((victim = engfunc(EngFunc_FindEntityInSphere, victim, origin, radius))) // Поиск энтити в радиусе 100.0 относительно себя
    {
        if (!is_user_alive( victim ))    // Проверка на валидность
            continue;
        
        if 
(cs_get_user_team(victim) == cs_get_user_team(owner))    // Проверка на команду, что бы не наносило урон членам по команде
            continue;
        
        
        new GrenadeId 
= create_entity("grenade")
        set_pev(GrenadeId, pev_owner, owner)
        ExecuteHamB(Ham_TakeDamage, victim, GrenadeId, owner, damage, (1<<24))
        set_pev(GrenadeId, pev_flags, pev(ent, pev_flags) | FL_KILLME)
    }


Но в другом плагине функция не видит wpnindex == CSW_HEGRENADE
Код: Выделить всё
public client_death(Killer, Victim, wpnindex, hitplace, TK)
{
    if(wpnindex == CSW_HEGRENADE)
    {
        if(!is_user_connected(Killer) || !is_user_connected(Victim) || Killer == Victim)
            return PLUGIN_HANDLED
        
        new NameKiller
[33], NameVictim[33]
        get_user_name(Killer, NameKiller, charsmax(NameKiller))
        get_user_name(Victim, NameVictim, charsmax(NameVictim))
        set_dhudmessage(0, 255, 255, -1.0, 0.25, 1, 6.0, 4.0, 0.2, 3.0, true)
        show_dhudmessage(0, "%s подорвал %s!", NameKiller, NameVictim); 
    
}
    return PLUGIN_HANDLED
}
:-)
Аватара пользователя
Grushka
 
Сообщения: 84
Зарегистрирован: 13 июн 2013, 22:06
Благодарил (а): 35 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6

Re: Имитация смерти от гранаты

Сообщение NEoMASTERR » 18 апр 2017, 22:21

Код: Выделить всё
set_pev(GrenadeIdpev_classname"grenade"

Если не поможет
Код: Выделить всё
#define XO_WEAPON 4
const m_iId 43
set_pdata_int
(GrenadeIdm_iIdCSW_HEGRENADEXO_WEAPON
Аватара пользователя
NEoMASTERR
 
Сообщения: 832
Зарегистрирован: 05 янв 2015, 16:38
Благодарил (а): 43 раз.
Поблагодарили: 188 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Имитация смерти от гранаты

Сообщение Grushka » 19 апр 2017, 13:09

NEoMASTERR писал(а):
Код: Выделить всё
set_pev(GrenadeId, pev_classname, "grenade")

Если не поможет
Код: Выделить всё
#define XO_WEAPON 4
const m_iId = 43
set_pdata_int
(GrenadeId, m_iId, CSW_HEGRENADE, XO_WEAPON)


Не ловит всё равно
Код: Выделить всё
#define XO_WEAPON 4
const m_iId = 43
new GrenadeId 
= create_entity("grenade")
set_pev(GrenadeId, pev_classname, "grenade")
set_pdata_int(GrenadeId, m_iId, CSW_HEGRENADE, XO_WEAPON)         
set_pev
(GrenadeId, pev_owner, owner)
ExecuteHamB(Ham_TakeDamage, victim, GrenadeId, owner, damage, (1<<24))
set_pev(GrenadeId, pev_flags, pev(GrenadeId, pev_flags) | FL_KILLME


Добавлено спустя 47 минут 37 секунд:
Код: Выделить всё
public client_death(Killer, Victim, wpnindex, hitplace, TK)
{
    log_to_file("addons/amxmodx/ent.txt", "Killer %d, Victim %d, wpnindex %d, hitplace %d, TK %d", Killer, Victim, wpnindex, hitplace, TK);

Код: Выделить всё
ExecuteHamB(Ham_TakeDamage, victim, GrenadeId, owner, damage, (1<<24))
log_to_file("addons/amxmodx/ent.txt", "ExecuteHamB(Ham_TakeDamage, victim %d, GrenadeId %d, owner %d, damage %f, (1<<24))", victim, ent, owner, damage);



Сделал логи, видно что Killer меняется почему-то, wpnindex тоже
L 04/19/2017 - 11:57:13: ExecuteHamB(Ham_TakeDamage, victim 15, GrenadeId 200, owner 10, damage 24.999999, (1<<24))
L 04/19/2017 - 11:57:13: ExecuteHamB(Ham_TakeDamage, victim 15, GrenadeId 200, owner 10, damage 50.000000, (1<<24))
L 04/19/2017 - 11:57:13: ExecuteHamB(Ham_TakeDamage, victim 15, GrenadeId 200, owner 10, damage 74.999999, (1<<24))
L 04/19/2017 - 11:57:13: Killer 15, Victim 15, wpnindex 6, hitplace 0, TK 0

L 04/19/2017 - 11:47:30: ExecuteHamB(Ham_TakeDamage, victim 8, GrenadeId 135, owner 3, damage 24.999999, (1<<24))
L 04/19/2017 - 11:47:30: ExecuteHamB(Ham_TakeDamage, victim 8, GrenadeId 135, owner 3, damage 50.000000, (1<<24))
L 04/19/2017 - 11:47:30: ExecuteHamB(Ham_TakeDamage, victim 8, GrenadeId 135, owner 3, damage 74.999999, (1<<24))
L 04/19/2017 - 11:47:30: Killer 8, Victim 8, wpnindex 6, hitplace 0, TK 0

По wpnindex 6 это CSW_C4
И жертва становится киллером
Последний раз редактировалось Grushka 19 апр 2017, 13:25, всего редактировалось 1 раз.
:-)
Аватара пользователя
Grushka
 
Сообщения: 84
Зарегистрирован: 13 июн 2013, 22:06
Благодарил (а): 35 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6

Re: Имитация смерти от гранаты

Сообщение NEoMASTERR » 19 апр 2017, 13:16

Плагин выше по списку стоит?
Аватара пользователя
NEoMASTERR
 
Сообщения: 832
Зарегистрирован: 05 янв 2015, 16:38
Благодарил (а): 43 раз.
Поблагодарили: 188 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Имитация смерти от гранаты

Сообщение Grushka » 19 апр 2017, 13:24

NEoMASTERR писал(а):Плагин выше по списку стоит?

Какой надо выше поставить? Сейчас стоит выше тот, который ловит смерть
:-)
Аватара пользователя
Grushka
 
Сообщения: 84
Зарегистрирован: 13 июн 2013, 22:06
Благодарил (а): 35 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6

Re: Имитация смерти от гранаты

Сообщение Ronna Riva » 19 апр 2017, 14:51

А надо наоборот :)
Аватара пользователя
Ronna Riva
 
Сообщения: 34
Зарегистрирован: 13 фев 2017, 11:36
Забанен
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
Опыт программирования: Больше трех лет
Языки программирования: Objective-C
C++

Re: Имитация смерти от гранаты

Сообщение Grushka » 19 апр 2017, 17:03

Ronna Riva писал(а):А надо наоборот :)

Поменял местами:
L 04/19/2017 - 16:03:09: ExecuteHamB(Ham_TakeDamage, victim 6, GrenadeId 155, owner 4, damage 24.999999, (1<<24))
L 04/19/2017 - 16:03:09: ExecuteHamB(Ham_TakeDamage, victim 6, GrenadeId 155, owner 4, damage 50.000000, (1<<24))
L 04/19/2017 - 16:03:09: ExecuteHamB(Ham_TakeDamage, victim 6, GrenadeId 155, owner 4, damage 74.999999, (1<<24))
L 04/19/2017 - 16:03:09: Killer 6, Victim 6, wpnindex 6, hitplace 0, TK 0
:-)
Аватара пользователя
Grushka
 
Сообщения: 84
Зарегистрирован: 13 июн 2013, 22:06
Благодарил (а): 35 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6

Re: Имитация смерти от гранаты

Сообщение KOTOKU » 19 апр 2017, 17:59

Вообще-то при ExecuteHamB нет разницы где стоит плагин, отлов будет происходить
Да и если ты не ловишь урон, то используй ExecuteHam, а смерть игрока и без HamB форварды обработают
И зачем постоянно создавать Entity и удалять? Создай глобальную и используй его ID
Да и проблема в client_death если не ошибаюсь, используй для отлова смерти либо DeathMsg, либо Ham функцию с Enable/Disable, я бы в твоем случае и хамом обошелся
Аватара пользователя
KOTOKU
 
Сообщения: 766
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 10 раз.
Поблагодарили: 117 раз.

Re: Имитация смерти от гранаты

Сообщение NEoMASTERR » 19 апр 2017, 18:51

Grushka, это мод? Если да то какой?
Аватара пользователя
NEoMASTERR
 
Сообщения: 832
Зарегистрирован: 05 янв 2015, 16:38
Благодарил (а): 43 раз.
Поблагодарили: 188 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Имитация смерти от гранаты

Сообщение Grushka » 19 апр 2017, 22:42

NEoMASTERR писал(а):Grushka, это мод? Если да то какой?

Отправил в личку
:-)
Аватара пользователя
Grushka
 
Сообщения: 84
Зарегистрирован: 13 июн 2013, 22:06
Благодарил (а): 35 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6

След.

Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 13

cron