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

Где нужно обнулить переменную за бросок гранаты flash

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

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

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

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

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

Re: Где нужно обнулить переменную за бросок гранаты flash

Сообщение NEoMASTERR » 21 мар 2017, 12:34

Код: Выделить всё
public event_blinded(const ID)           
{   
    
fleshBan 0

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

Re: Где нужно обнулить переменную за бросок гранаты flash

Сообщение nemec21 » 21 мар 2017, 12:36

NEoMASTERR,
в этом событии??
Код: Выделить всё
register_event(TEMPENTITY"event_flashsmokepuff""a""1=5""6=25""7=6"
Аватара пользователя
nemec21
 
Сообщения: 799
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 212 раз.
Поблагодарили: 44 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: Где нужно обнулить переменную за бросок гранаты flash

Сообщение NEoMASTERR » 21 мар 2017, 12:42

Тут
Код: Выделить всё
public forward_setmodel(const ENTITYmodel[])
{
    if(!
equal(model"models/w_flashbang.mdl"))
        return 
FMRES_IGNORED

    
new owner pev(ENTITYpev_owner)            
    if (
owner == 0)
        return 
FMRES_IGNORED          

    set_task
(FLASH_TIMER"get_flasher"524627+owner)
                                                           
    return 
FMRES_IGNORED
Аватара пользователя
NEoMASTERR
 
Сообщения: 832
Зарегистрирован: 05 янв 2015, 16:38
Благодарил (а): 43 раз.
Поблагодарили: 188 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Где нужно обнулить переменную за бросок гранаты flash

Сообщение nemec21 » 21 мар 2017, 12:45

NEoMASTERR,можно вопрос по оформлению?
Аватара пользователя
nemec21
 
Сообщения: 799
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 212 раз.
Поблагодарили: 44 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: Где нужно обнулить переменную за бросок гранаты flash

Сообщение NEoMASTERR » 21 мар 2017, 12:47

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

Re: Где нужно обнулить переменную за бросок гранаты flash

Сообщение nemec21 » 21 мар 2017, 12:48

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

Нужен тут или нет?
Код: Выделить всё
public event_flashsmokepuff()
{
                                                                 
    set_task
(0.1,"reset_flasher")                                                
    return PLUGIN_CONTINUE   
}


в целом все тут хорошо или есть еще недочеты?
Код: Выделить всё
#include <amxmodx> 
#include <amxmisc>
#include <fakemeta> 
#include <fun>
#include <hamsandwich>
          
#define TEMPENTITY    "23"             
                                                  
new Float
:FLASH_TIMER = 1.52 
                                        
new g_flasher 
= 0                  
new fleshBan 
= 0            

public plugin_init
()
{
 
    register_plugin
( "Team Flash", "1.0", "none")  
                                        
    register_event
("ScreenFade", "event_blinded", "be", "4=255", "5=255", "6=255", "7>199")
    register_event(TEMPENTITY, "event_flashsmokepuff", "a", "1=5", "6=25", "7=6")                    
    register_forward
(FM_SetModel, "forward_setmodel")        
}                                                                                                                                

public event_blinded
(const ID)           
{                                                                            
    if
(is_user_alive(ID))                                        
    
{        
        if
(get_user_team(ID) == get_user_team(g_flasher) && ID != g_flasher)
        {                                                                                               
            new flasher
[32]                                      
            get_user_name
(g_flasher, flasher, 31)
          
            ChatColor
(ID, "^3[ ^4Immortal_classic 18+ ^3] ^1тебя ослепил: ^3%s", g_flasher)           
            fleshBan
++                                                                         
                                                                                    
            if
(fleshBan >= 2)                      
            
{                                                                
                new player_name
[32]                                 
                get_user_name
(g_flasher, player_name, 31)             
               
                server_cmd
("kick %s ^"научись кидать FLASH grenades^"", player_name) 
            
} 
        
}
    }                                                 
}                                                      
                                                                        
public event_flashsmokepuff
()
{
                                                                 
    set_task
(0.1,"reset_flasher")                                                
    return PLUGIN_CONTINUE   
}
                                     
public reset_flasher
()                  
    g_flasher 
= 0 
                                                                   
public get_flasher
(id)
    g_flasher = (id - 524627)  

public forward_setmodel
(const ENTITY, model[])
{
   
    fleshBan 
= 0 
    
    if
(!equal(model, "models/w_flashbang.mdl"))
        return FMRES_IGNORED

    new owner 
= pev(ENTITY, pev_owner)
    
    if 
(owner == 0)
        return FMRES_IGNORED          

    set_task
(FLASH_TIMER, "get_flasher", 524627+owner)                                                      
    return FMRES_IGNORED
}                               

stock ChatColor
(const id, const input[], any:...) 
{
    new count = 1, players[32]
    static msg[191]
    vformat(msg, 190, input, 3)
    
    replace_all
(msg, 190, "!g", "^4")
    replace_all(msg, 190, "!y", "^1")
    replace_all(msg, 190, "!t", "^3")
    
    if 
(id) players[0] = id; else get_players(players, count, "ch")
    {                                 
        for 
(new i = 0; i < count; i++)
        {
            if (is_user_connected(players[i]))
            {
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
                write_byte(players[i])
                write_string(msg)       
                message_end
()
            }
        }                                                    
    
}                                                                                                        
}
Аватара пользователя
nemec21
 
Сообщения: 799
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 212 раз.
Поблагодарили: 44 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: Где нужно обнулить переменную за бросок гранаты flash

Сообщение NEoMASTERR » 21 мар 2017, 13:02

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

Функция и так наверн что то да возвращает. Так что разницы нет, разве только сам результат.

Есть моменты которые я бы изменил. Включая логику плагина. Допустим если ослепил 4 соперника и всего 2 своих которые вылезли невовремя, то тут считаю игрок молодец и не надо его кикать.

Добавлено спустя 3 минуты:
Код: Выделить всё
if(fleshBan >= 2)                      
{                                                                
    new player_name
[32]                                 
    get_user_name
(g_flasher, player_name, 31)             

    server_cmd
("kick %s ^"научись кидать FLASH grenades^"", player_name) 
}

==>
Код: Выделить всё
if(fleshBan >= 2)                      
{
    server_cmd("kick #%d ^"научись кидать FLASH grenades^"", get_user_userid(g_flasher)) 
}


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

Re: Где нужно обнулить переменную за бросок гранаты flash

Сообщение nemec21 » 21 мар 2017, 13:21

NEoMASTERR,
заменить только на это?
if(fleshBan >= 2)
{
server_cmd("kick #%d ^"научись кидать FLASH grenades^"", get_user_userid(g_flasher))
}


Добавлено спустя 41 секунду:
и как узнать кто сам вылез?)))))))))

Добавлено спустя 43 секунды:
NEoMASTERR, надо проверить на коннект?
И нет обработки g_flasher, игрок мог кинуть флешку и выйти


Добавлено спустя 4 минуты 37 секунд:
так
Код: Выделить всё
public get_flasher(id)
{
                         
    if
(!is_user_alive(id)) 
        return
    
    g_flasher 
= (id - 524627)
}


Добавлено спустя 7 минут 44 секунды:
знаешь что то переделал а при ослеплении нет никаких действий

Добавлено спустя 26 секунд:
Код: Выделить всё
#include <amxmodx> 
#include <amxmisc>
#include <fakemeta> 
#include <fun>
#include <hamsandwich>
          
#define TEMPENTITY    "23"             
                                                  
new Float
:FLASH_TIMER = 1.52 
                                        
new g_flasher 
= 0                  
new fleshBan 
= 0            

public plugin_init
()
{
 
    register_plugin
( "Team Flash", "1.0", "none")  
                                        
    register_event
("ScreenFade", "event_blinded", "be", "4=255", "5=255", "6=255", "7>199")
    register_event(TEMPENTITY, "event_flashsmokepuff", "a", "1=5", "6=25", "7=6")                    
    register_forward
(FM_SetModel, "forward_setmodel")        
}                                                                                                                                

public event_blinded
(const ID)           
{                                                                            
    if
(is_user_alive(ID))                                        
    
{        
        if
(get_user_team(ID) == get_user_team(g_flasher) && ID != g_flasher)
        {                                                                                               
            new flasher
[32]                                      
            get_user_name
(g_flasher, flasher, 31)
          
            ChatColor
(ID, "^3[ ^4Immortal_classic 18+ ^3] ^1тебя ослепил: ^3%s", g_flasher)           
            fleshBan
++                                                                         
            
            if
(fleshBan >= 2) 

            
{                                                                            
                server_cmd
("kick #%d ^"научись кидать FLASH grenades^"", get_user_userid(g_flasher)) 
            
} 
        
}                    
    
}                                                 
}                                                      
                                                                        
public event_flashsmokepuff
()
{
                                                                 
    set_task
(0.1,"reset_flasher")                                                   
}
                                     
public reset_flasher
()
    g_flasher = 0 

                                                                   
public get_flasher
(id)
{
                         
    if
(!is_user_alive(id)) 
        return
    
    g_flasher 
= (id - 524627)
}
   
               
public forward_setmodel
(const ENTITY, model[])
{
   
    fleshBan 
= 0 
    
    if
(!equal(model, "models/w_flashbang.mdl"))
        return FMRES_IGNORED

    new owner 
= pev(ENTITY, pev_owner)
    
    if 
(owner == 0)
        return FMRES_IGNORED          

    set_task
(FLASH_TIMER, "get_flasher", 524627+owner)                                                      
    return FMRES_IGNORED
}                               

stock ChatColor
(const id, const input[], any:...) 
{
    new count = 1, players[32]
    static msg[191]
    vformat(msg, 190, input, 3)
    
    replace_all
(msg, 190, "!g", "^4")
    replace_all(msg, 190, "!y", "^1")
    replace_all(msg, 190, "!t", "^3")
    
    if 
(id) players[0] = id; else get_players(players, count, "ch")
    {                                 
        for 
(new i = 0; i < count; i++)
        {
            if (is_user_connected(players[i]))
            {
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
                write_byte(players[i])
                write_string(msg)       
                message_end
()
            }
        }                                                    
    
}                                                                                                        
}


Добавлено спустя 2 минуты 3 секунды:
не там проверку подставил()))))))))
Аватара пользователя
nemec21
 
Сообщения: 799
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 212 раз.
Поблагодарили: 44 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: Где нужно обнулить переменную за бросок гранаты flash

Сообщение NEoMASTERR » 21 мар 2017, 13:26

Код: Выделить всё
public event_blinded(const ID)           
{                                                                            
    if
(is_user_alive(ID))                                        
    
{        
        if
(get_user_team(ID) == get_user_team(g_flasher) && ID != g_flasher)
        {                                                                                               
            new flasher
[32]                                      
            get_user_name
(g_flasher, flasher, 31)


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

Re: Где нужно обнулить переменную за бросок гранаты flash

Сообщение nemec21 » 21 мар 2017, 13:29

NEoMASTERR,
Код: Выделить всё
if(is_user_alive(ID) || is_user_alive(g_flasher))
Аватара пользователя
nemec21
 
Сообщения: 799
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 212 раз.
Поблагодарили: 44 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Пред.След.

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

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

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