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

записать в массив 2 карты  [Решено]

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

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

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

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

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

записать в массив 2 карты

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

Доброе утро всем!
Ребят подскажите что использовать, что бы записать 2 карты

вот на 1 карту
Код: Выделить всё
new map[] = "de_dust2_2x2"
Аватара пользователя
nemec21
Скриптер
 
Сообщения: 802
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 214 раз.
Поблагодарили: 47 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: записать в массив 2 карты

Сообщение Subb98 » 07 апр 2017, 11:12

Двухмерный массив:

Код: Выделить всё
new maps[][] = {"de_dust2_2x2""de_inferno""de_nuke"}; 

Или Array.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: записать в массив 2 карты

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

Subb98, и потом использовать цикл. что бы подставить карту?
так?
Код: Выделить всё
public EventStartRound(ID){
    remove_task(ID+NOONL)
    gl_RoundsCount++ 
    
    if
(gl_RoundsCount % 2){
                                                                                           
        for
(new i = 1; i < maxplayers; i++){             
                                                  
            if
(get_user_flags(i) & ADMIN_MENU)                
                return
                                               
            new currentMap
[32]                                                                             
            new map
[][] = {"de_dust2_2x2", "awp_india"}                                                                  
            get_mapname
(currentMap, 31)
             
            for
(new i; i<2; i++){

                if(check_clients() < 9 && !equali(map[i], currentMap)){              
                    SZtimer 
= 15         
                                             
                    if
(task_exists(ID+NOONL)){      
                        remove_task
(ID+NOONL)           
                    
}
                    set_task(1.0, "NO_online", ID+NOONL, _,_, "b")  
                
}
            }
        }                                    
    
}                                             


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

Re: записать в массив 2 карты

Сообщение flymic24 » 07 апр 2017, 12:07

nemec21,
Код: Выделить всё
new maps[3][16] = {"de_dust2_2x2""de_inferno""de_nuke"}; 


Исходя из этого видно: У тебя 3 ячейки с названием карт, длинной по 16.

Код: Выделить всё
new maps[3][16] = {"de_dust2_2x2""de_inferno""de_nuke"};

// Перебираем ячейки с 0 до 2 включительно.
for(new 0iClientNum check_clients(); 3i++)
{
    
// Проверяем соответсует ли название карты, названию из ячейки
    
if(!equali(map[i], szMaps))
    {              
        
// Code
    
}
Аватара пользователя
flymic24
 
Сообщения: 209
Зарегистрирован: 05 окт 2012, 17:29
Откуда: Bryansk
Благодарил (а): 4 раз.
Поблагодарили: 76 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: записать в массив 2 карты

Сообщение Subb98 » 07 апр 2017, 12:11

flymic24, размер указывать в данном случае не обязательно. И вместо "магических чисел" нужно использовать соотв. операторы, например:

Код: Выделить всё
for(new i; i < sizeof maps; i++) 
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: записать в массив 2 карты

Сообщение nemec21 » 07 апр 2017, 12:18

2 ячейки))))
Код: Выделить всё
public EventStartRound(ID){                                                    
    remove_task
(ID+NOONL)
    gl_RoundsCount++                                                        
                                                                                                  
    if
(gl_RoundsCount % 2){
                                                                                           
        for
(new i = 1; i < maxplayers; i++){             
                                                                        
            if
(get_user_flags(i) & ADMIN_MENU)                                    
                return                                            
                                                                 
            new currentMap
[32]                                                                             
            new map
[2][16] = {"de_dust2_2x2", "awp_india"}                                                                  
            get_mapname
(currentMap, 31)                            
                                                               
            for
(new i = 0; i < 2; i++){      

                if
(check_clients() < 9 && !equali(map[i], currentMap)){              
                    SZtimer 
= 15         
                                             
                    if
(task_exists(ID+NOONL)){      
                        remove_task
(ID+NOONL)           
                    
}
                    set_task(1.0, "NO_online", ID+NOONL, _,_, "b")  
                
}
            } 
        
}                                    
    
}                                             


я же так и делал

Добавлено спустя 3 минуты 3 секунды:
Subb98, и так пробовал :-)

Код: Выделить всё
public EventStartRound(ID){                                                    
    remove_task
(ID+NOONL)
    gl_RoundsCount++                                                        
                                                                                                  
    if
(gl_RoundsCount % 2){
                                                                                           
        for
(new i = 1; i < maxplayers; i++){             
                                                                        
            if
(get_user_flags(i) & ADMIN_MENU)                                    
                return                                            
                                                                 
            new currentMap
[32]                                                                             
            new map
[][] = {"de_dust2_2x2", "awp_india"}                                                                  
            get_mapname
(currentMap, 31)                            
                                                               
            for
(new i = 0; i < sizeof(map); i++){      

                if
(check_clients() < 9 && !equali(map[i], currentMap)){              
                    SZtimer 
= 15         
                                             
                    if
(task_exists(ID+NOONL)){      
                        remove_task
(ID+NOONL)           
                    
}
                    set_task(1.0, "NO_online", ID+NOONL, _,_, "b")  
                
}
            } 
        
}                                    
    
}                                             
}

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

Re: записать в массив 2 карты

Сообщение Subb98 » 07 апр 2017, 12:27

Что значит "всё равно код выполняется"? Напиши, что ты хочешь сделать.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: записать в массив 2 карты

Сообщение nemec21 » 07 апр 2017, 12:30

Subb98, что бы если карты de_dust2_2x2 и awp_india соответствовали карте которая на данный момент, код не выполнялся

Код: Выделить всё
public EventStartRound(ID){                                                    
    remove_task
(ID+NOONL)
    gl_RoundsCount++                                                        
                                                                                                  
    if
(gl_RoundsCount % 2){
                                                                                           
        for
(new i = 1; i < maxplayers; i++){             
                                                                        
            if
(get_user_flags(i) & ADMIN_MENU)                                    
                return                                            
                                                                 
            new currentMap
[32]                                                                             
            new map
[][] = {"de_dust2_2x2", "awp_india"}                                                                  
            get_mapname
(currentMap, 31)                            
                                                               
            for
(new i = 0; i < sizeof(map); i++){      
                
                if
(equali(map[i], currentMap))
                    return
                
                if
(check_clients() < 9){              
                    SZtimer 
= 15         
                                             
                    if
(task_exists(ID+NOONL)){      
                        remove_task
(ID+NOONL)           
                    
}
                    set_task(1.0, "NO_online", ID+NOONL, _,_, "b")  
                
}
            } 
        
}                                    
    
}                                             
}
Аватара пользователя
nemec21
Скриптер
 
Сообщения: 802
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 214 раз.
Поблагодарили: 47 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: записать в массив 2 карты

Сообщение Subb98 » 07 апр 2017, 12:33

Код: Выделить всё
for(new isizeof mapsi++) {
    
// g_curmap содержит имя текущей карты
    
if(equali(maps[i], g_curmap)) return;
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: записать в массив 2 карты

Сообщение flymic24 » 07 апр 2017, 12:34

nemec21,
Код: Выделить всё
if(check_clients() < 9 && !equali(map[i], currentMap))


Проверь эту часть условия
Код: Выделить всё
check_clients() < 9
Аватара пользователя
flymic24
 
Сообщения: 209
Зарегистрирован: 05 окт 2012, 17:29
Откуда: Bryansk
Благодарил (а): 4 раз.
Поблагодарили: 76 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

След.

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

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

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