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

"parse" не парсирует числа

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

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

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

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

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

"parse" не парсирует числа

Сообщение DezareD » 21 окт 2017, 13:33

Код: Выделить всё
new g_iFile fopen(g_iConfDir"rb");
    
    if(
g_iFile)
    {
        
server_print("===================================");
        new 
g_iText[54];
        
        
fgets(g_iFileg_iTextcharsmax(g_iText));
        
trim(g_iText);
        
server_print("%s"g_iText);
            
        
//parse(g_iText, g_iGamesDay[0], 1, g_iGamesDay[1],  1, g_iGamesDay[2],  1, g_iGamesDay[3],  1, g_iGamesDay[4],  1, g_iGamesDay[5],  1, g_iGamesDay[6], 1);
        
for(new i=0;7i++)
        {
            
parse(g_iTextg_iGamesDay[i], 1);
            
g_iGamesDay[i] = str_to_num(g_iGamesDay[i]);
            
server_print("%d, %i"g_iGamesDay[i], g_iGamesDay[i]);
        }
        
fclose(g_iFile);
        
server_print("===================================");
    } 

Код: Выделить всё
===================================
"1" "1" "0" "0" "0" "1" "0"
00
0
0
0
0
0
0
0
0
0
0
0
0
=================================== 

хелп, почему не работает
Аватара пользователя
DezareD
 
Сообщения: 29
Зарегистрирован: 17 апр 2016, 13:13
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: "parse" не парсирует числа

Сообщение Subb98 » 21 окт 2017, 13:44

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

Re: "parse" не парсирует числа

Сообщение DezareD » 21 окт 2017, 13:58

Subb98 писал(а):Потому, что вы разделяете числа запятой.

Причем тут это ? Текст получаю ( "1" "1" "0" "0" "0" "1" "0" )
А после парсинга он не разделяеться на массивы и получается так:
0
0
0
0
0
0
0
а должно так:
1
1
0
0
0
1
0
Аватара пользователя
DezareD
 
Сообщения: 29
Зарегистрирован: 17 апр 2016, 13:13
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: "parse" не парсирует числа

Сообщение Mistrick » 21 окт 2017, 14:38

DezareD, хоть и кинули кусок кода, но и так видны существенные ошибки.
В цикле вы всегда читаете первую часть в строке. Вы ни как не обрезаете исходную строку, чтобы парс переходил к следующей части строки, парс выделил первую единицу и так все итерации цикла.
Вы сохраняете строку в некую переменную и потом эту же строку преобразовываете в целый тип, еще и записываете в себя же. Теперь вопрос: каким образом задан массив g_iGamesDay?
Аватара пользователя
Mistrick
Скриптер
 
Сообщения: 2940
Зарегистрирован: 04 ноя 2012, 18:15
Благодарил (а): 43 раз.
Поблагодарили: 1247 раз.
Языки программирования: PAWN
С/С++(few above zero)

Re: "parse" не парсирует числа

Сообщение DezareD » 24 окт 2017, 21:35

Mistrick писал(а):DezareD, хоть и кинули кусок кода, но и так видны существенные ошибки.
В цикле вы всегда читаете первую часть в строке. Вы ни как не обрезаете исходную строку, чтобы парс переходил к следующей части строки, парс выделил первую единицу и так все итерации цикла.
Вы сохраняете строку в некую переменную и потом эту же строку преобразовываете в целый тип, еще и записываете в себя же. Теперь вопрос: каким образом задан массив g_iGamesDay?

new g_iGamesDay[7]
Аватара пользователя
DezareD
 
Сообщения: 29
Зарегистрирован: 17 апр 2016, 13:13
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: "parse" не парсирует числа

Сообщение Mistrick » 25 окт 2017, 05:31

DezareD, и как вы в одну ячейку собрались пихать строку?
Аватара пользователя
Mistrick
Скриптер
 
Сообщения: 2940
Зарегистрирован: 04 ноя 2012, 18:15
Благодарил (а): 43 раз.
Поблагодарили: 1247 раз.
Языки программирования: PAWN
С/С++(few above zero)

Re: "parse" не парсирует числа

Сообщение DezareD » 25 окт 2017, 20:54

Не понял... Разве при парсинге не так должно быть
К примеру 4 строка
parse(...., g_iGamesDay[4], 1);
? Если не сложно напиши пожалуйста как должно быть, что бы работало, а то я не врубаюсь что-то
Аватара пользователя
DezareD
 
Сообщения: 29
Зарегистрирован: 17 апр 2016, 13:13
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: "parse" не парсирует числа

Сообщение артист666 » 25 окт 2017, 22:04

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

new mas[] = "^"1^" ^"1^" ^"0^" ^"0^" ^"0^" ^"1^" ^"0^""
new g_num[7]

public 
plugin_init()
{
    new 
buf[7][3]
    
    
parse(masbuf[0], charsmax(buf[]), buf[1], charsmax(buf[]), buf[2], charsmax(buf[]), buf[3], charsmax(buf[]), buf[4], charsmax(buf[]), buf[5], charsmax(buf[]), buf[6], charsmax(buf[]))
    
    new 
= -1
    
    
while(++7)
    {
        
g_num[i] = str_to_num(buf[i])
        
server_print("%i"g_num[i])
    }


Неизвестное количество аргументов(Правда если делитель 1 пробел):
Код: Выделить всё
#include <amxmodx>

new mas[] = "^"1^" ^"1^" ^"0^" ^"0^" ^"0^" ^"1^" ^"0^""

public plugin_init()
{
    new 
str[64], buf[6]
    
    while(
contain(mas" ") != -1)
    {
        
strtok(masbufcharsmax(buf), strcharsmax(str))
        
formatex(mascharsmax(mas), str)
        
remove_quotes(buf)
        
server_print(buf)
    }
    
remove_quotes(mas)
    
server_print(mas)
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn


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

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

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