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

Запуск скилла по прицелу  [Решено]

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

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

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

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

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

Запуск скилла по прицелу

Сообщение Ewer » 14 фев 2018, 01:56

Ребят, такая проблема... Когда хочу чтобы ульт юзался по кнопке, выдает ошибки. А если в client_damage например прописать, то норм
Вот сделал чтобы при наведении на игрока срабатывало по команде, через get_user_aiming, работает. Но когда в прицеле нет игрока и я нажимаю на запуск, то пишет ошибку. Как сделать чтобы когда в прицеле нету игрока, не запускалось

Код: Выделить всё
public Use_Ult(id)
{
    new 
Victimbody;
    
    if(
use_time_end[id])
    {
        
client_print(id,print_center,"Идёт перезарядка скила...");
    }
    if(
get_user_aiming(idVictimbodyult_radius) && !use_time_end[id])
    {
        if (
get_user_team(id) == get_user_team(Victim))
        return ;
        
        
FM_ULT_Blizzard(idVictim);

        
use_time_end[id] = reload_time;
        
        
set_task(1.0,"task_skill_reload",id,_,_,"a",reload_time);
        
client_printcolor(id"/gВы запустили ультимэйт")
        
Create_StatusIcon(id0"dmg_cold"015250)
    }
}

public 
FM_ULT_BlizzardiCasteriTarget )
{
    
emit_sound(iCasterCHAN_STATICSOUND_BLIZZARD0.5ATTN_NORM0PITCH_NORM );

    new 
vOrigin[3];
    
get_user_originiTargetvOrigin );

    new 
ptStartBlizzard[3], ptEndBlizzard[3];
    
ptStartBlizzard[0] = vOrigin[0];
    
ptStartBlizzard[1] = vOrigin[1];
    
ptStartBlizzard[2] = vOrigin[2] + 600;
    
ptEndBlizzard[0] = vOrigin[0];
    
ptEndBlizzard[1] = vOrigin[1];
    
ptEndBlizzard[2] = vOrigin[2] - 600;

    new 
ptStartIceBolt[3], ptEndIceBolt[3];
    
ptStartIceBolt[0] = vOrigin[0];
    
ptStartIceBolt[1] = vOrigin[1];
    
ptStartIceBolt[2] = vOrigin[2] + 100;
    
ptEndIceBolt[0] = vOrigin[0];
    
ptEndIceBolt[1] = vOrigin[1];
    
ptEndIceBolt[2] = vOrigin[2] + 50;

    
    
ExecuteHamB(Ham_TakeDamageiTarget0iCasteriDamageBlizzardDMG_ACID)

    
Create_TE_BEAMPOINTS(ptStartBlizzardptEndBlizzardBLUE_LIGHTNING,001525502552552552550);

    
//Ледяные болты
    
for(new 16i++) 
        
Create_TE_SPRITETRAIL(ptStartIceBoltptEndIceBoltICE_FROSTBOLT,50random_num(27,30), 1random_num(30,70), 40 )

    new 
team get_user_teamiTarget );
    new 
arrPlayers[32], iNumPlayersvClosestTargetOrigin[3];
    
get_players(arrPlayersiNumPlayers"a");

    
//Повреждения окружающих рассыпанными ледяными болтами
    
for(new 0iNumPlayersi++ )
    {
        if ( 
is_user_alivearrPlayers[i] ) )
        {
            if (
arrPlayers[i] != iTarget)
            {
                if ( 
get_user_teamarrPlayers[i] ) == team )
                {
                    
get_user_originarrPlayers[i], vClosestTargetOrigin );

                    if ( 
get_distancevOriginvClosestTargetOrigin ) <= iDamageBlizzardRadius )
                    {
                        
ExecuteHamB(Ham_TakeDamageiTarget0iCasteriDamageIceBoltDMG_ACID)
                                            
                        
emit_sound(iTargetCHAN_STATICSOUND_BLIZZARD0.5ATTN_NORM0PITCH_NORM );
                    }
                }
            }
        }
    }
    return 
PLUGIN_HANDLED;
Аватара пользователя
Ewer
 
Сообщения: 9
Зарегистрирован: 16 дек 2017, 23:01
Благодарил (а): 2 раз.
Поблагодарили: 2 раз.
Опыт программирования: Меньше недели
Языки программирования: Pawn

Re: Запуск скила по прицелу

Сообщение KOTOKU » 14 фев 2018, 02:59

Проверять Victim является ли игроком.
Аватара пользователя
KOTOKU
 
Сообщения: 766
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 10 раз.
Поблагодарили: 117 раз.

Re: Запуск скилла по прицелу  [Решено]

Сообщение Ewer » 14 фев 2018, 22:16

Я так и думал, не знад как сделать правильно
Сделал через pev_valid(id)
Аватара пользователя
Ewer
 
Сообщения: 9
Зарегистрирован: 16 дек 2017, 23:01
Благодарил (а): 2 раз.
Поблагодарили: 2 раз.
Опыт программирования: Меньше недели
Языки программирования: Pawn


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

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

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