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

подсчет игроков при новом раунде  [Решено]

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

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

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

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

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

подсчет игроков при новом раунде

Сообщение nemec21 » 08 апр 2017, 11:17

Доброе утро!
Если на сервере один человек все ровно выполняет это условие
Код: Выделить всё
if(g_RoundsCount && check_clients() == 0

хотя должно выполнять следующие
Код: Выделить всё
else if(g_RoundsCount && <= check_clients() <= 8

подскажите, может ошибка в подсчете игроков?
вот сам подсчет
Код: Выделить всё
check_clients() {                                                                                                                                                                                                                    
    for (new 
1<= g_Maxplayersi++) {
                                             
        if (
is_user_connected(i) && !is_user_bot(i) && !is_user_hltv(i))  
            
players_Num++                               
    }                          
    return 
players_Num


код полностью
Код: Выделить всё
#include <amxmodx>    
#include <amxmisc> 

new g_maps[][] =                            
{                                                  
    
"de_dust2_2x2",           
    
"awp_india",                
    
"$2000$"
}                                                                   

new 
map[] = "de_dust2_2x2"                            
new g_curmap[32]                                                                                 
new 
g_RoundsCountg_Maxplayersplayers_Num 
                                             
public plugin_init() {                   
    
register_plugin"[few]players""1.0""[N][E][M][E][C]")
    
    
get_mapname(g_curmapcharsmax(g_curmap))
                                                                                    
    for(new 
isizeof(g_maps); i++) {       
        if(
equali(g_maps[i], g_curmap)) {                           
            
pause("d")
        }   
    }                                                                       
                                                      
    
register_event("HLTV""StartRound""a""1=0""2=0")
    
register_event("TextMsg""RestartRound""a""2=#Game_will_restart_in","2=#Game_Commencing")             

    
g_Maxplayers get_maxplayers()    
}                                           
                                   
public 
EventRestartRound() {                                                                                                                         
    
g_RoundsCount 0               
}                                                                               
                                                       
public 
StartRound() {                     
    
g_RoundsCount++                          
    
    for(new 
1<= g_Maxplayersi++) {            
        if(!
is_user_connected(i) || !(get_user_flags(i) & ADMIN_MENU)) 
            return      
    }                                                     
                                                      
    if(
g_RoundsCount && check_clients() == 0) {          
        
server_cmd("changelevel %s"map)
    }                                          
                                                  
    else if(
g_RoundsCount && <= check_clients() <= 8) {            
        
ChatColor(0"Карта не сответствует de_dust2_2x2, awp_india, $2000$"
    }
}                                                                                                
                                    
check_clients() {                                                                                                                                                                                                                    
    for (new 
1<= g_Maxplayersi++) {
                                             
        if (
is_user_connected(i) && !is_user_bot(i) && !is_user_hltv(i))  
            
players_Num++                               
    }                          
    return 
players_Num
}                                        
                                    
stock ChatColor(const id,const input[],any:...) {                                    
    new 
count 1players[32]
    static 
msg[191]
    
vformat(msg,190,input3)
    
    
replace_all(msg,190,"!g""^4")
    
replace_all(msg,190,"!y""^1")
    
replace_all(msg,190,"!t""^3")
    
    if (
idplayers[0] = id;else get_players(players,count,"ch");{
        for (new 
0;count;i++){
            if (
is_user_connected(players[i])) {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
                
write_byte(players[i])
                
write_string(msg)
                
message_end()
            }
        }                                                    
    }
Аватара пользователя
nemec21
Скриптер
 
Сообщения: 801
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 213 раз.
Поблагодарили: 46 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: подсчет игроков при новом раунде

Сообщение Fedcomp » 08 апр 2017, 12:06

МОЖЕТ быть? а почему бы не проверить самому? почему бы не вывести в консоль сколко он там насчитал? зачем гадать?
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
Аватара пользователя
Fedcomp
Администратор
 
Сообщения: 4936
Зарегистрирован: 28 авг 2009, 20:47
Благодарил (а): 815 раз.
Поблагодарили: 1317 раз.
Языки программирования: =>
pawn / php / python / ruby
javascript / rust

Re: подсчет игроков при новом раунде

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

зачем players_Num глобально? т.е. невижу обнуления players_Num

Добавлено спустя 4 минуты 15 секунд:
Код: Выделить всё
for(new i = 1; i <= g_Maxplayers; i++) {            
        if
(!is_user_connected(i) || !(get_user_flags(i) & ADMIN_MENU)) 
            return      
    


и зачем эта проверка и return в StartRound?

Добавлено спустя 2 минуты 26 секунд:
P.S. вместо того чтобы создавать 3 темы и в итоге написать непонятно что, могли бы лучше нормально описать что вам надо от плагина...

Добавлено спустя 2 минуты 40 секунд:
вообще достаточно погуглить alliedmods и найдете похожий плагин, Вы должны зарегистрироваться, чтобы видеть ссылки.
Аватара пользователя
Garey
 
Сообщения: 85
Зарегистрирован: 24 дек 2010, 03:12
Благодарил (а): 4 раз.
Поблагодарили: 37 раз.

Re: подсчет игроков при новом раунде

Сообщение nemec21 » 08 апр 2017, 14:34

Fedcomp,
Сообщение Fedcomp » Сегодня, 12:06

МОЖЕТ быть? а почему бы не проверить самому? почему бы не вывести в консоль сколко он там насчитал? зачем гадать?

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

Re: подсчет игроков при новом раунде  [Решено]

Сообщение Fedcomp » 08 апр 2017, 14:36

Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
Аватара пользователя
Fedcomp
Администратор
 
Сообщения: 4936
Зарегистрирован: 28 авг 2009, 20:47
Благодарил (а): 815 раз.
Поблагодарили: 1317 раз.
Языки программирования: =>
pawn / php / python / ruby
javascript / rust

Re: подсчет игроков при новом раунде

Сообщение nemec21 » 08 апр 2017, 14:53

Fedcomp, спасибо, действительно не правильный подсчет
Аватара пользователя
nemec21
Скриптер
 
Сообщения: 801
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 213 раз.
Поблагодарили: 46 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6


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

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

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