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

SentryGun баг с овнером

Все вопросы по работе и настройке AMXX и его плагинов.

Модератор: liFe iS GoOD

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

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

SentryGun баг с овнером

Сообщение f0Re3t » 05 фев 2019, 19:14

Привет всем. Пишу свои пушки по сурсам которые есть в паблике. Заметил одну проблему - если владелец пушки наводит прицел на основание пушки - не выводится информация о ней, а так же урон по основанию не проходит. Если же навести на саму пушку - все работает. Все стабильно работает если наводить и стрелять по пушкам врага или союзников.

Вы должны зарегистрироваться, чтобы видеть ссылки.
Вы должны зарегистрироваться, чтобы видеть ссылки.

Код урона по пушке и нацеливание прикладываю.

Код: Выделить всё
public fw_TraceLine_Post(Float:start[3], Float:end[3], noMonsters, id)
{
    if(!is_valid_player(id) || is_user_bot(id) || !is_user_alive(id))
        return FMRES_IGNORED
        
    new iHitEnt 
= get_tr(TR_pHit)
    
    if
(iHitEnt <= g_iMaxPlayers)
        return FMRES_IGNORED
        
    new sClassName
[11], sentry, base
    
    pev
(iHitEnt, pev_classname, sClassName, charsmax(sClassName))
    
    if
(equal(sClassName, "sentrybase"))
    {
        base = iHitEnt
        sentry 
= entity_get_edict(iHitEnt, BASE_ENT_SENTRY)
    }
    else if(equal(sClassName, "sentry"))
    {
        sentry = iHitEnt
        base 
= entity_get_edict(sentry, SENTRY_ENT_BASE)
    }
    
    if
(!pev_valid(sentry) || !pev_valid(base))
        return FMRES_IGNORED
        
    if
(GetSentryFiremode(sentry) == SENTRY_FIREMODE_NUTS)
        return FMRES_IGNORED
        
    new Float
:health = entity_get_float(sentry, EV_FL_health)
    
    if
(health <= 0)
        return FMRES_IGNORED
        
    new Float
:basehealth = entity_get_float(base, EV_FL_health)
    
    if
(basehealth <= 0)
        return FMRES_IGNORED
        
    new team 
= GetSentryTeam(sentry)
    
    if
(team != _:cs_get_user_team(id))
        return FMRES_IGNORED
        
    new level 
= GetSentryLevel(sentry)
    
    static tempStatusBuffer
[192], tempStatusBuffer2[192]
    
    new OwnName
[33]
    get_user_name(GetSentryPeople(sentry, OWNER), OwnName, 32)
    
    formatex
(tempStatusBuffer, charsmax(tempStatusBuffer), "Установил: %s^nЗдоровье верхней части: %d из %d", OwnName, floatround(health), floatround(g_HEALTHS[level]))
    formatex(tempStatusBuffer2, charsmax(tempStatusBuffer2), "^n^nЗдоровье основания: %d из %d^nУровень: %d", floatround(basehealth), floatround(g_HEALTHSLOWER[level]), level + 1)
    
    set_dhudmessage
(_:team == 1 ? 150 : 0, 0, _:team == 2 ? 150 : 0, -1.0, 0.35, 0, 0.0, 0.6, 0.0, 0.0)
    show_dhudmessage(id, tempStatusBuffer)
    show_dhudmessage(id, tempStatusBuffer2)
    
    return FMRES_IGNORED
}


Код: Выделить всё
public fw_TakeDamage(ent, idinflictor, idattacker, Float:damage, damagebits)
{
    if(!pev_valid(ent))
        return HAM_IGNORED
        
    new sClassname
[11], sentry, base
    entity_get_string
(ent, EV_SZ_classname, sClassname, charsmax(sClassname))
    
    if
(equal(sClassname, "sentrybase"))
    {
        base = ent
        sentry 
= entity_get_edict(base, BASE_ENT_SENTRY)
    }
    else if(equal(sClassname, "sentry"))
    {
        sentry = ent
        base 
= entity_get_edict(sentry, SENTRY_ENT_BASE)
    }
    
    if
(pev_valid(sentry))
    {
        new iOwner = GetSentryPeople(sentry, OWNER)
        
        if
(!is_user_connected(iOwner) || !is_valid_player(iOwner) || !is_user_connected(idattacker) || !is_valid_player(idattacker))
            return HAM_IGNORED
            
        if
(cs_get_user_team(iOwner) == cs_get_user_team(idattacker) && idattacker != iOwner)
            return HAM_SUPERCEDE
    
}
    return HAM_IGNORED
}
Аватара пользователя
f0Re3t
 
Сообщения: 3
Зарегистрирован: 18 авг 2014, 20:30
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6

Re: SentryGun баг с овнером

Сообщение NightFury » 05 фев 2019, 20:18

А основание и сама пушка это разве не 2 ентити? Скручивай модель в одну и работай анимацией, сетсайз будет один
Подпись: NightFury/406
Поддержка: vk.com/mashakrylova406
Аватара пользователя
NightFury
 
Сообщения: 85
Зарегистрирован: 10 авг 2016, 12:22
Благодарил (а): 8 раз.
Поблагодарили: 24 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn, C, C++

Re: SentryGun баг с овнером

Сообщение f0Re3t » 05 фев 2019, 20:24

Да, пушка и основание разделено на 2 ентити. Возможно ли как-то обойтись без скручивания в единую модель, ибо для союзников и врагов же работает отлично?
Аватара пользователя
f0Re3t
 
Сообщения: 3
Зарегистрирован: 18 авг 2014, 20:30
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6

Re: SentryGun баг с овнером

Сообщение NightFury » 05 фев 2019, 21:56

ну это бредово создавать пушки на пару ентить, лучше сразу нарисовать хорошую модель и написать хороший код, а то опять велосипед выйдет
Подпись: NightFury/406
Поддержка: vk.com/mashakrylova406
Аватара пользователя
NightFury
 
Сообщения: 85
Зарегистрирован: 10 авг 2016, 12:22
Благодарил (а): 8 раз.
Поблагодарили: 24 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn, C, C++

Re: SentryGun баг с овнером

Сообщение f0Re3t » 05 фев 2019, 22:00

велосипед и так уже написан)) осталось только вот это как-то поправить, а на хорошую модель и код как нибудь потом время найду... так что, это никак что ли не исправить на таком варианте?
Аватара пользователя
f0Re3t
 
Сообщения: 3
Зарегистрирован: 18 авг 2014, 20:30
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6

Re: SentryGun баг с овнером

Сообщение NightFury » 06 фев 2019, 00:54

вешай один и тот же класснейм и к каждой создавай сетсайз, худ можешь дублировать с оного, можешь делить как некоторые по типу хп пенька и хп пухи
Подпись: NightFury/406
Поддержка: vk.com/mashakrylova406
Аватара пользователя
NightFury
 
Сообщения: 85
Зарегистрирован: 10 авг 2016, 12:22
Благодарил (а): 8 раз.
Поблагодарили: 24 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn, C, C++


Вернуться в Вопросы по AMXX и его плагинам

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

cron