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

zp 4.3 Баг при выходе и обратном заходе на сервер и покупке!  [Решено]

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

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

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

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

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

zp 4.3 Баг при выходе и обратном заходе на сервер и покупке!

Сообщение MrBest » 15 ноя 2019, 20:21

Ку ребят, делал extra items в гл. моде zp 4.3 "бешенство" , "EXTRA_MADNESS" (так же ограничение на покупку)

Вывод сообщения в dhud игроку. (отчет до следующей покупки item)

Код: Выделить всё


public funcCooldown
(id)
{
     if(!is_user_connected(id)) return;
   
     if
(g_iCooldown[id])
     {    
     g_iCooldown
[id]--
     
     set_dhudmessage
(255, 0, 0, 0.005, 0.2, 0, 1.0, 0.2) 
     show_dhudmessage
(id, "Перезарядка: [%d]", g_iCooldown[id])        
     
     set_task
(1.0, "funcCooldown", id); 
     
}
     else
     
{  
     
     set_dhudmessage
(0, 255, 0, 0.005, 0.23, 0, 1.0, 0.4)
     show_dhudmessage(id, "Безумие готово!")
     
     
}     
}


Код extra items

Код: Выделить всё

        
}
        case EXTRA_MADNESS: // Zombie Madness
        {
            if(g_madness_limit[id]>=MADNESS_LIMIT){
                client_cmd(id, "spk ^"%s^"", SND_MENU_OFF)    
                zp_colored_print
(id, "^x04[«Зомби-Подростки®»]^x01 Превышен лимит покупки!                      
            }    
            if(g_iCooldown[id])return; 
            g_madness_limit[id]++    
            g_nodamage[id] = true                
            set_task(0.1, "
zombie_aura", id+TASK_AURA, _, _, "b")
            set_task(get_pcvar_float(cvar_madnessduration), "
madness_over", id+TASK_BLOOD)
            
            static sound[64]
            ArrayGetString(zombie_madness, random_num(0, ArraySize(zombie_madness) - 1), sound, 
            charsmax(sound))
            emit_sound(id, CHAN_VOICE, sound, 1.0, ATTN_NORM, 0, PITCH_NORM)    
            g_iCooldown[id] = 15;    
            funcCooldown(id);    



Проблема в client_disconnect , то есть мой гавно код не работает при выходе игрока во время действия функции и собственно обратном заходе на сервер. То есть идет отчет
Перезарядка: [%d]", g_iCooldown[id]) 
во время выхода игрока до окончания отчета и обратном заходе и собственно последующей покупке "EXTRA_MADNESS" возникает ошибка, функция не выполняется, вывод hud не работает !

Так же во время отчета пока работает "EXTRA_MADNESS" (работает 5 секунд) сам мод выводит в чат
что еще раз данный item купить нельзя , как сделать так же когда функция заканчивается а время остается , а то аммо тратится когда еще раз нажимаешь !
Заранее спасибо , код г , так что не буду против если сделаете по своему !

Сори если фигово объяснил, если что говорите, постараюсь подробней расписать....

Кст , так же коды бралися с этого форума
вот они
1. Обычный отсчет

Код: Выделить всё

func
(id)

{

    if(g_bUsed[id]) return;

    g_bUsed[id] = true;

    //code

    set_task(10.0, "funcCooldown", id);

}

public funcCooldown(id)

{

    g_bUsed[id] = false;

}


2. Отсчет с выводом сообщения в чат

Код: Выделить всё

func
(id)
{

        if(g_iCooldown[id]) return;

        //code

        g_iCooldown[id] = 10;

        funcCooldown(id);

}

public funcCooldown(id)

{

        if(!is_user_connected(id)) return;

        if(g_iCooldown[id])

        {

                client_print(id, print_center, "%d sec.", g_iCooldown[id]--);

                set_task(1.0, "funcCooldown", id);

        }

        else

        
{

                client_print(id, print_center, "You can use func");

        }

}


3. Hud, который и хотел сделать в своем коде

Код: Выделить всё
#include < amxmodx >

 

#define PLUGIN          "New"

#define VERSION         "0.1"

#define AUTHOR          "Opo4uMapy"

 

#define TASK_TIMER              545445

 

new g_timer
[33]

 

public plugin_init
() {

        register_plugin(PLUGIN, VERSION, AUTHOR)

       

        register_clcmd
("say /test", "test")

}

 

public test
(id)

{

        if(g_timer[id] > 0)

                return

               

        client_print
(id, print_chat, "Test: TRUE")

       

        g_timer
[id] = 10

        set_task
(1.0, "timer", id + TASK_TIMER, _, _, "b")

}

 

public timer
(taskid)

{

        new id = taskid - TASK_TIMER

 

        if
(!is_user_alive(id))

        {

                remove_task(id + TASK_TIMER)

                g_timer[id] = 0

                return

        
}

       

        if
(g_timer[id] > 0)

        {

                g_timer[id]--

       

                set_hudmessage
(255, 0, 0, -1.0, 0.5, 0, 6.0, 12.0)

                show_hudmessage(id, "Timer: %d", g_timer[id])

        }

        else remove_task(id + TASK_TIMER)

}

 

public client_disconnect
(id)

{

        if(task_exists(id + TASK_TIMER))

                remove_task(id + TASK_TIMER)

}


Может здесь что нибудь и есть, но как ни пробовал не получается
Аватара пользователя
MrBest
 
Сообщения: 29
Зарегистрирован: 25 сен 2019, 16:17
Благодарил (а): 5 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Pawn , плагины zombie mod

Re: zp 4.3 Баг при выходе и обратном заходе на сервер и поку  [Решено]

Сообщение hren_morjovui » 16 ноя 2019, 10:15

Код: Выделить всё
public client_disconnect(id)
{
    if(
g_nodamage[id])
    {
       
remove_task(id+TASK_AURA);
       
remove_task(id+TASK_BLOOD);

        
g_nodamage[id] = false;
        if(
g_madness_limit[id])
            
g_madness_limit[id]--;
        
g_iCooldown[id] = 0;
    }
}
 
"В этом мире неизбежны три вещи: смерть, налоги и гравитация."
Аватара пользователя
hren_morjovui
 
Сообщения: 258
Зарегистрирован: 29 май 2018, 09:15
Благодарил (а): 88 раз.
Поблагодарили: 22 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn
PHP
jQuery

Re: zp 4.3 Баг при выходе и обратном заходе на сервер и поку

Сообщение MrBest » 16 ноя 2019, 16:14

Спасибо, огромное)
Аватара пользователя
MrBest
 
Сообщения: 29
Зарегистрирован: 25 сен 2019, 16:17
Благодарил (а): 5 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Pawn , плагины zombie mod


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

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

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