Форум Pawn.Wiki - Воплоти мечту в реальность!: Ошибки и варнинги в Format - Форум Pawn.Wiki - Воплоти мечту в реальность!

Перейти к содержимому

  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Error + Warning ]
Ошибки и варнинги в Format

#1
Пользователь офлайн   N1ceks 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
Всем привет! У меня появилась проблема.
Писал я значит диалоговое окно для квестов и тут появилась ошибки и варнинги вот код:

420                          new DLG_Str1[1024];
421
422     				format(DLG_Str1, sizeof(DLG_Str1),
423					    "{0000FF}Новое начало\n\n\
424					    {F5F5F5}Привет! Вижу, тебе нужна помощь? Тогда слушай: я так понял, паспорта у тебя нет, как и документов...\n\
425					    Поезжай в ЦНАП и сделай себе документы. Пока хватит паспорта и свидетельства. Там у меня есть товарищ, так что\n\
426					    За деньги не переживай. Арендуй скутер за углом и поезжай в ЦНАП.\n\
427					    {FFBF00}Арендуйте скутер и поезжайте в ЦНАП для того, чтобы сделать паспорт и свидетельство о рождении!\n\
428					    Награда: 400$, 1 EXP.\n\n\
429					    {0000FF}Нажмите \"Далее\" чтобы продолжить."
430					);
431					ShowPlayerDialog(playerid, dSQuest[0], DIALOG_STYLE_MSGBOX, "{FFFFFF}Начальная линия {FF0000}` Новое начало", DLG_Str1, "Далее", "Назад");


Ошибки и варнинги:

C:\Users\rrazt\Desktop\Server\gamemodes\new.pwn(422 -- 428) : error 075: input line too long (after substitutions)
C:\Users\rrazt\Desktop\Server\gamemodes\new.pwn(429) : warning 217: loose indentation
C:\Users\rrazt\Desktop\Server\gamemodes\new.pwn(429) : error 029: invalid expression, assumed zero
C:\Users\rrazt\Desktop\Server\gamemodes\new.pwn(429) : error 029: invalid expression, assumed zero
C:\Users\rrazt\Desktop\Server\gamemodes\new.pwn(429) : error 029: invalid expression, assumed zero
C:\Users\rrazt\Desktop\Server\gamemodes\new.pwn(429) : fatal error 107: too many error messages on one line

0

#2
Пользователь офлайн   M I S T E V 

  • Вставить ник
  • Раскрыть информацию
Тяжёлый случай :facepalm:

Если включить голову, то можно понять, что ошибка такая же, как и в прошлый раз (https://pawn.wiki/in...ema-s-komandoi/) :blush:


Давай вместе подумаем, если это совершенно разный код, но ошибка такая же, в чём именно проблема? Ошибка в том, что у тебя слишком длинная строка. То есть ты не можешь использовать длинные строки в моде. Строка, это то, что в двойных кавычках "текст". Я тебе писал, как решить эту проблему. Если тебе этот вариант не подходит, тогда ты не сможешь использовать длинные строки. Другого варианта не дано.

Компилятор от Zeex исправляет эту проблему и позволяет использовать длинные строки. То, что у тебя после его установки появляются предупреждения, это не повод отказываться от компилятора. Это повод исправить все эти предупреждения. 219 о чём говорит? О том, что у тебя такая функция:

stock Function(text[]) 

А нужно сделать так:

stock Function(const text[]) 

И теперь везде, где у тебя были ошибки с этой функции, пропадут. Вот это сложно.. Проще новую тему на форуме создать, причём подобных тем очень много, в каждой один и тот же ответ. С таким подходом, задавать одни и те же вопросы и игнорировать ответы, тебе просто перестанут помогать :no:
0

#3
Пользователь офлайн   N1ceks 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
Нашел решение.

Проблема была в самой функции
ShowPlayerDialog

А именно в 2 аргументе
dSQuest[0]

P.s.: Видимо нельзя через массивный enum делать диалоговые окна...

И переписал немного систему функции
format
теперь она выглядит немного иначе:

new DLG_Str1[512];

format(DLG_Str1, sizeof(DLG_Str1), "{0000FF}Новое начало\n \n");
format(DLG_Str1, sizeof(DLG_Str1), "{F5F5F5}Привет! Вижу, тебе нужна помощь? Тогда слушай: я так понял, паспорта у тебя нет, как и документов...\n");
format(DLG_Str1, sizeof(DLG_Str1), "Поезжай в ЦНАП и сделай себе документы. Пока хватит паспорта и свидетельства. Там у меня есть товарищ, так что\n");
format(DLG_Str1, sizeof(DLG_Str1), "За деньги не переживай. Арендуй скутер за углом и поезжай в ЦНАП.\n \n");
format(DLG_Str1, sizeof(DLG_Str1), "{FFBF00}Арендуйте скутер и поезжайте в ЦНАП для того, чтобы сделать паспорт и свидетельство о рождении!\n");
format(DLG_Str1, sizeof(DLG_Str1), "Награда: 400$, 1 EXP.\n \n");
format(DLG_Str1, sizeof(DLG_Str1), "{0000FF}Нажмите \" Далее \" чтобы продолжить.");
ShowPlayerDialog(playerid, dNewStart, DIALOG_STYLE_MSGBOX, "{FFFFFF}Начальная линия {FF0000}` Новое начало", DLG_Str1, "Далее", "Назад");


Думаю кому-то поможет :unsure:

Сообщение отредактировал N1ceks: 10 октября 2025 - 17:16

-1

#4
Пользователь офлайн   M I S T E V 

  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияN1ceks (10 октября 2025 - 17:13) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Это не решение, это костыли. То, что ты сделал, называет "объединение строк" :facepalm:
0

#5
Пользователь офлайн   ddrgtagfon 

  • Местный
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияN1ceks (10 октября 2025 - 17:13) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

а для чего тут формат? почему не обойтись \?

"\
text\n\
text\n"

0

#6
Пользователь офлайн   N1ceks 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияM I S T E V (10 октября 2025 - 17:21) писал:

Это не решение, это костыли. То, что ты сделал, называет "объединение строк" :facepalm:


А что плохого в объединение строк?

Просмотр сообщенияddrgtagfon (10 октября 2025 - 18:14) писал:

а для чего тут формат? почему не обойтись \?

"\
text\n\
text\n"


В каком смысле? Типо?
ShowPlayerDialog(playerid, dNewStart, DIALOG_STYLE_MSGBOX, "Текст", "Текст\nТекст\n\
Текст", "Далее", "Назад");

0

#7
Пользователь офлайн   M I S T E V 

  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияN1ceks (10 октября 2025 - 18:55) писал:

А что плохого в объединение строк?


Как минимум, для этого существует функция strcat (ссылка), а не format. Да и подобное решение НЕ НУЖНО, когда есть исправленная версия компилятора. Вместо того, чтобы взять лучшее решение, ты придумываешь себе геморрой :blush:

Советую перечитать это (ссылка), а так обсуждать нечего
0

#8
Пользователь офлайн   N1ceks 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияM I S T E V (10 октября 2025 - 19:02) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]


У меня почему-то этой темы не было :unsure:

Я использую регистрацию от DeimoS ( https://pawn.wiki/in...i-mysql-r39r40/ ) и когда скачиваю компилятор от Zeex то вылетают error`ы и warning`и.

Ладно буду как-то их исправлять, спасибо.

Сообщение отредактировал N1ceks: 10 октября 2025 - 19:10

0

#9
Пользователь офлайн   M I S T E V 

  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияN1ceks (10 октября 2025 - 19:08) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]


Какие именно error'ы? Присылай сюда строки на которые указывает и пару сверху-снизу. Будем решать проблему :wink:
0

#10
Пользователь офлайн   N1ceks 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияM I S T E V (10 октября 2025 - 19:12) писал:

Какие именно error'ы? Присылай сюда строки на которые указывает и пару сверху-снизу. Будем решать проблему :wink:


Раньше были error`ы.. сейчас уже только warning`и:

Зачастую 239, 214, 219 :unsure:

Есть варнинги в ТД:

Phone[10] = TextDrawCreate(554.5834, 372.2592, "LD_BEAT:cring"); // и так во всех ТД


public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
	if(clickedid == Phone[8])
	{
	    new str1[128];
		format(str1, sizeof(str1), "{BA55D3}%s[%d]: положил свой iPhone 7", pInfo[playerid][pName], playerid);
	    ProxDetector(playerid, 5, 0xFFBA55D3, str1, 1.6);
		TextDrawHideForPlayer(playerid, Phone[0]);
		TextDrawHideForPlayer(playerid, Phone[1]);
		TextDrawHideForPlayer(playerid, Phone[2]);
		TextDrawHideForPlayer(playerid, Phone[3]);
		TextDrawHideForPlayer(playerid, Phone[4]);
		TextDrawHideForPlayer(playerid, Phone[5]);
		TextDrawHideForPlayer(playerid, Phone[6]);
		TextDrawHideForPlayer(playerid, Phone[7]); // тут варнинг
		TextDrawHideForPlayer(playerid, Phone[8]);
		TextDrawHideForPlayer(playerid, Phone[9]);
		TextDrawHideForPlayer(playerid, Phone[10]);
		CancelSelectTextDraw(playerid);

	}
	return true;
}


Варнинги в }

public OnPlayerUpdate(playerid)
{
    SaveAccount(playerid);
    return 1;
} // Тут варнинг


Варнинги в DialogRespond:

switch(dialogid)
    {
        case dRegPass:
        {
            if(!response)
            {
                ShowPlayerDialog(playerid, dKickMessage, DIALOG_STYLE_MSGBOX, "Оповещение", "{FFFFFF}Вы были кикнуты с сервера.\n{FF0000}Причина: Отказ от регистрации.\n{FFFFFF}Для выхода с сервера введите \"/q\" в чат", "Выход", "");
                return Kick(playerid);
            }
            if(!strlen(inputtext)) return ShowPlayerDialog(playerid, dRegPass, DIALOG_STYLE_INPUT, "Регистрация нового пользователя", "{FF0000}Ошибка: {FFFFFF}Вы не можете продолжить регистрацию не введя пароль!\nВведите пароль для регистрации нового аккаунта:\n{C0C0C0}Примечание:\n{666666}- Пароль чувствителен к регистру.\n- Пароль должен содержать от 4 до 30 символов.\n- Пароль может содержать латинские/кириллические символы и цифры (aA-zZ, 0-9).", "Регистрация", "Выход");
            else if(strlen(inputtext) < 4) return ShowPlayerDialog(playerid, dRegPass, DIALOG_STYLE_INPUT, "Регистрация нового пользователя", "{FF0000}Ошибка: {FFFFFF}Пароль слишком короткий!\nВведите пароль для регистрации нового аккаунта:\n{C0C0C0}Примечание:\n{666666}- Пароль чувствителен к регистру.\n- Пароль должен содержать от 4 до 30 символов.\n- Пароль может содержать латинские/кириллические символы и цифры (aA-zZ, 0-9).", "Регистрация", "Выход");
            else if(strlen(inputtext) > 30) return ShowPlayerDialog(playerid, dRegPass, DIALOG_STYLE_INPUT, "Регистрация нового пользователя", "{FF0000}Ошибка: {FFFFFF}Пароль слишком длинный!\nВведите пароль для регистрации нового аккаунта:\n{C0C0C0}Примечание:\n{666666}- Пароль чувствителен к регистру.\n- Пароль должен содержать от 4 до 30 символов.\n- Пароль может содержать латинские/кириллические символы и цифры (aA-zZ, 0-9).", "Регистрация", "Выход");
            for(new i = strlen(inputtext)-1; i != -1; i--)
            {
                switch(inputtext[i])
                {
                    case '0'..'9', 'a'..'z', 'A'..'Z': continue;
                    default: return ShowPlayerDialog(playerid, dRegPass, DIALOG_STYLE_INPUT, "Регистрация нового пользователя", "{FF0000}Ошибка: {FFFFFF}Пароль содержит запрещённые символы!\nВведите пароль для регистрации нового аккаунта:\n{C0C0C0}Примечание:\n{666666}- Пароль чувствителен к регистру.\n- Пароль должен содержать от 4 до 30 символов.\n- Пароль может содержать латинские/кириллические символы и цифры (aA-zZ, 0-9).", "Регистрация", "Выход");
                } // Тут варнинг
            }
            pInfo[playerid][pPassword][0] = EOS;
            strins(pInfo[playerid][pPassword], inputtext, 0);
            ShowPlayerDialog(playerid, dRegSex, DIALOG_STYLE_LIST, "{FFFFFF}Регистрация {FF0000}` Выбор пола", "{FF0000}Выберете пол своего персонажа (От пола будет зависить скины и т.д.)\n \n{FFFFFF}Мужской\n{FFFFFF}Женский", "Далее", "Выход");
            return 1;
        }


Итак 108 варнингов

Update 20:03: (Сделал костылем или как скачал старую версию компилятора и прошли все варнинги кроме C:\Users\rrazt\Desktop\Server\gamemodes\new.pwn(805) : warning 219: local variable "Logo" shadows a variable at a preceding level
строка: new Text:Logo[8];)

Сообщение отредактировал N1ceks: 10 октября 2025 - 20:04

0

Поделиться темой:


  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика