Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.
Модераторы: Subb98, liFe iS GoOD
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.
В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.
Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.
DezareD » 21 окт 2017, 13:33
- Код: Выделить всё
new g_iFile = fopen(g_iConfDir, "rb");
if(g_iFile)
{
server_print("===================================");
new g_iText[54];
fgets(g_iFile, g_iText, charsmax(g_iText));
trim(g_iText);
server_print("%s", g_iText);
for(new i=0;i < 7; i++)
{
parse(g_iText, g_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"
0, 0
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
Subb98 » 21 окт 2017, 13:44
Потому, что вы разделяете числа запятой.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
-
Subb98
-
- Сообщения: 5485
- Зарегистрирован: 24 мар 2011, 19:42
- Откуда: г. Пермь
- Благодарил (а): 1329 раз.
- Поблагодарили: 2343 раз.
- Опыт программирования: Больше трех лет
- Языки программирования: PHP
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
Mistrick » 21 окт 2017, 14:38
DezareD, хоть и кинули кусок кода, но и так видны существенные ошибки.
В цикле вы всегда читаете первую часть в строке. Вы ни как не обрезаете исходную строку, чтобы парс переходил к следующей части строки, парс выделил первую единицу и так все итерации цикла.
Вы сохраняете строку в некую переменную и потом эту же строку преобразовываете в целый тип, еще и записываете в себя же. Теперь вопрос: каким образом задан массив g_iGamesDay?
-
Mistrick
-
- Сообщения: 2940
- Зарегистрирован: 04 ноя 2012, 18:15
- Благодарил (а): 43 раз.
- Поблагодарили: 1247 раз.
- Языки программирования: PAWN
С/С++(few above zero)
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
Mistrick » 25 окт 2017, 05:31
DezareD, и как вы в одну ячейку собрались пихать строку?
-
Mistrick
-
- Сообщения: 2940
- Зарегистрирован: 04 ноя 2012, 18:15
- Благодарил (а): 43 раз.
- Поблагодарили: 1247 раз.
- Языки программирования: PAWN
С/С++(few above zero)
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
артист666 » 25 окт 2017, 22:04
- Код: Выделить всё
new mas[] = "^"1^" ^"1^" ^"0^" ^"0^" ^"0^" ^"1^" ^"0^""
new g_num[7]
public plugin_init()
{
new buf[7][3]
parse(mas, buf[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 i = -1
while(++i < 7)
{
g_num[i] = str_to_num(buf[i])
server_print("%i", g_num[i])
}
}
Неизвестное количество аргументов(Правда если делитель 1 пробел):
- Код: Выделить всё
new mas[] = "^"1^" ^"1^" ^"0^" ^"0^" ^"0^" ^"1^" ^"0^""
public plugin_init()
{
new str[64], buf[6]
while(contain(mas, " ") != -1)
{
strtok(mas, buf, charsmax(buf), str, charsmax(str))
formatex(mas, charsmax(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