Доступ к готовым решениям

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Мануал Исправления варнингов и Ерроров (Всё понятно и доступно)

Статус
В этой теме нельзя размещать новые ответы.

Тём4ик

Изучающий
Пользователь
Регистрация
9 Окт 2012
Сообщения
401
Лучшие ответы
0
Репутация
202
Введения
1.YSI использует много макросов, чтобы сделать вещи проще вам нужно послушать меня.Недостатком является то, что возникает много ошибок и предупреждения очень трудных. Этот "Мануал" должен помочь вам исправить данные ошибки .
КОД:
Код:
// Alternate:
//CMD:kickplayer(playerid, params[])
YCMD:kickplayer(playerid, params[], help) // Warning line.
{
    // Some code here.
}
ПРОБЛЕМА
Код:
<path>\errors.pwn(11) : warning 203: symbol is never used: "kickplayer"
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


1 Warning.
Решение
Вы не создали include "YSI\y_commands".
Код:
#include <YSI\y_commands>
2.
КОД
Код:
timer X() // Error line.
{
}
ПРОБЛЕМА
Код:
<path>\errors.pwn(3) : error 010: invalid function or declaration
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


1 Error.
РЕШЕНИЯ
Это недопустимое заявление - нет никакой задержки, заданного таймера.
Код:
timer X[100]()
{
}
3.
КОД
Код:
X[100]() // Error line.
{
}
ПРОБЛЕМА
Код:
<path>\errors.pwn(3) : error 010: invalid function or declaration
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


1 Error.
Очень похожая проблема до последнего, только на этот раз отсутствует параметр "Таймер" ключевое слово вместо времени.
РЕШЕНИЯ
Код:
timer X[100]()
{
}
4.
КОД
Код:
timer X[100](arr[]) // Error line.
{
}
ПРОБЛЕМА
Код:
<path>\errors.pwn(3) : error 010: invalid function or declaration
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


1 Error.
РЕШЕНИЯ
Вы имеете право синтаксиса как с "timer" времени, но вы все равно получите недопустимое заявление. На самом деле это еще одна похожая ошибка . Все массивы на "timer", "global" и функции "remotefunc" должны следовать их длине. Строки НЕ нужно в длину, но вместо этого должен быть объявлен как "string:", в противном случае компилятор не может различить эти два понятия.
Код:
timer X[100](arr[], size)
{
}
Или же
Код:
timer X[100](string:arr[])
{
}
5.
КОД
Код:
main()
{
    new
        Iterator:x<100>; // Warning line.
    foreach (new i : x)
    {
    }
}
ПРОБЛЕМА
Код:
<path>\errors.pwn(6) : warning 203: symbol is never used: "x@YSII_Cg"
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


1 Warning.
РЕШЕНИЯ
Это является одним из более мения,страшным предупреждающих сообщений.
Массив данных называется "<name> @ YSII_Ag", а переменная величина называется "<name> @ YSII_Cg". Если вы получите предупреждение о том, что переменный размер никогда не используется, это означает, что размер не изменяли.
Если это так, то итератор всегда пуст
Если вы получите сообщение, что "<name> @ YSII_Ag" (массив данных) также никогда не используется, то итератор никогда не используется вообще, даже в "foreach" цикла.
Код:
main()
{
    new
        Iterator:x<100>;
    Iter_Add(x, 10);
    foreach (new i : x)
    {
    }
}
6.
КОД
Код:
main()
{
    new
        Iterator:x<100>;
    Iter_Add(x, 10);
    foreach (i : x) // Error line.
    {
    }
}
ПРОБЛЕМА
Код:
<path>\errors.pwn(7) : error 017: undefined symbol "i"
<path>\errors.pwn(7) : warning 206: redundant test: constant expression is non-zero
<path>\errors.pwn(7) : error 017: undefined symbol "i"
<path>\errors.pwn(7) : warning 221: label name "_Y_ITER_C0" shadows tag name
<path>\errors.pwn(7) : warning 225: unreachable code
<path>\errors.pwn(7) : error 017: undefined symbol "i"
<path>\errors.pwn(7) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


4 Errors.
РЕШЕНИЯ
Здесь только первая ошибка-это главное, что все другие вызваны первой. Они могут быть в заблуждение, так как они предоставляют "y_iterate", надо просто не игнорировать их, а и исправить первую ошибку
Код:
main()
{
    new
        Iterator:x<100>;
    Iter_Add(x, 10);
    foreach (new i : x)
    {
    }
}
7.
ПРОБЛЕМА
Компилятор висит.
РЕШЕНИЯ
Существует ряд причин этому, обычно макрос расширяется слишком много кода. Если у вас есть "foreign", "global", "remotefunc" или "timer" такая статья, которая очень большая, подобно:
Код:
timer MyTimer[1000](playerid, string:str[], arr[], size, string:other[], string:final[])
{
}
Приведенный выше код БУДЕТ висеть компилятор. Само по себе это не длинная строка - очень короткая относительно 511 символов максимум, но, как мы знаеем ранее YSI использует много макросов и это расширяет длинный код (эффективное, но долго). Проблема на промежуточных стадиях - код расширяется очень, делаеться очень длинный код, а затем сокращаеться . Попробуйте сократить линию.
Код:
timer MyTimer[1000](p,string:s[],a[],c,string:o[],string:f[])
{
}
Если компилятор по-прежнему висит (и вы убедились, что функция-это проблема, перепробывав все остальные), то вам, возможно, придется прибегнуть к использованию альтернативных методов, таких как basic.Код, сгенерированный "foreign" и "global" настолько велик, что он должен был быть разделен на две части - следовательно, почему эти две ключевые слова были сделаны, чтобы отразить "forward" и "public"
8.
КОД
Код:
main()
{
    inline Func(arr[]) // Error line.
    {
    }
}
ПРОБЛЕМА
Код:
<path>\errors.pwn(7) : error 009: invalid array size (negative, zero or out of bounds)
<path>\errors.pwn(7) : error 001: expected token: ")", but found ";"
<path>\errors.pwn(7) : error 036: empty statement
<path>\errors.pwn(7) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


4 Errors.
РЕШЕНИЯ
Это на самом деле подобная проблема с номером 4, но с разными симптомами. К сожалению встроенные функции не могут иметь массивы вообще, даже если за ним следует их размер. Если вы попробывали включают размер вы получите дополнительный:
Код:
<path>\errors.pwn(7) : warning 215: expression has no effect
Вы можете, однако, все еще добавить строки с префиксом
Код:
main()
{
    inline Func(string:arr[])
    {
    }
}
9.
КОД
Код:
uvar
    gFirst[MAX_PLAYERS][10], // Error line.
    gSecond[MAX_PLAYERS][10];
ОШИБКА
Код:
<path>\errors.pwn(9) : error 010: invalid function or declaration
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


1 Error.
РЕШЕНИЯ
Переменные, объявленные с "new" или "stock" и др.Часто следуют новой строки приведенного выше шаблона примера. По техническим причинам это не может быть сделано с "uvar" и "svar" переменными. Каждый должен находиться на той же строке, что "uvar" или "svar".
Код:
uvar gFirst[MAX_PLAYERS][10];
uvar gSecond[MAX_PLAYERS][10];
10.
КОД
Код:
public DoRead(name[], value[])
{
    INI_String("key", gValue); // Error line.
}
ПРОБЛЕМА
Код:
<path>\errors.pwn(12) : error 017: undefined symbol "INI_String"
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


1 Error.
РЕШЕНИЯ
"INI_String"Существует, он просто дает необычный ошибка, когда последний параметр пропущены. Вы должны вызвать его назначения длины.
Код:
public DoRead(name[], value[])
{
    INI_String("key", gValue, sizeof (gValue));
}
11.
КОД
Код:
#include <YSI\y_commands>
ПРОБЛЕМА
Код:
<include>\YSI\y_debug.inc(367) : error 036: empty statement
<include>\YSI\y_debug.inc(367) : error 036: empty statement
<include>\YSI\y_amx.inc(367) : error 036: empty statement
<include>\YSI\y_amx.inc(367) : error 036: empty statement
<include>\YSI\y_amx.inc(411) : error 036: empty statement
<include>\YSI\y_amx.inc(411) : error 036: empty statement
<include>\YSI\y_amx.inc(646) : error 036: empty statement
<include>\YSI\y_amx.inc(646) : error 036: empty statement
<include>\YSI\y_amx.inc(780) : error 036: empty statement
<include>\YSI\y_amx.inc(780) : error 036: empty statement
<include>\YSI\y_amx.inc(938) : error 036: empty statement
<include>\YSI\y_amx.inc(938) : error 036: empty statement
<include>\YSI\y_amx.inc(958) : error 036: empty statement
<include>\YSI\y_amx.inc(958) : error 036: empty statement
<include>\YSI\internal\y_shortfunc.inc(144) : error 036: empty statement
<include>\YSI\internal\y_shortfunc.inc(144) : error 036: empty statement
<include>\YSI\internal\y_shortfunc.inc(150) : error 036: empty statement
<include>\YSI\internal\y_shortfunc.inc(150) : error 036: empty statement
<include>\YSI\internal\y_shortfunc.inc(159) : error 036: empty statement
<include>\YSI\internal\y_shortfunc.inc(159) : error 036: empty statement
<include>\YSI\internal\y_shortfunc.inc(174) : error 036: empty statement
<include>\YSI\internal\y_shortfunc.inc(174) : error 036: empty statement
<include>\YSI\internal\y_shortfunc.inc(183) : error 036: empty statement
<include>\YSI\internal\y_shortfunc.inc(183) : error 036: empty statement
<include>\YSI\internal\y_dohooks.inc(125) : error 036: empty statement
<include>\YSI\internal\y_dohooks.inc(125) : error 036: empty statement

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


26 Errors.
РЕШЕНИЯ

Когда вы получаете сотни ошибок, как это внутри YSI, он, как правило, вызванные использованием нестандартных редактор (не PAWNO). Нет ничего плохого в других редакторах, некоторые просто созданы с различными умолчанию параметры командной строки для ****** (компилятор). Вы должны убедиться, что вы передаете эти два важных параметра:
Код:
-;+ -(+
12.
КОД
Код:
timer X[100]() // Error line.
{
}
ПРОБЛЕМА
Код:
<path>\errors.pwn(3) : warning 218: old style prototypes used with optional semicolon
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


1 Warning.
РЕШЕНИЯ
Это может быть вызвано с помощью любого мода, которые по какой-то необъяснимой причине решил игнорировать стандарта SA:MP форматирование и удаление точек с запятой. Чтобы это исправить, вам нужно сначала удалить эту строку:
Код:
#pragma semicolon 0
13.
КОД
Код:
hook OnGameModeInit() // Error line.
{
}
ПРОБЛЕМА
Код:
<path>\errors.pwn(3) : error 021: symbol already defined: "@yH_GameModeInit2"
<path>\errors.pwn(3) : error 021: symbol already defined: "@yH_GameModeInit2"
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


1 Warning.
РЕШЕНИЯ
Код:
#include <YSI\y_hooks>
#include <other>

hook OnGameModeInit() // Error line.
{
}
Должно быть
Код:
#include <other>
#include <YSI\y_hooks>

hook OnGameModeInit() // Error line.
{
}
14.
КОД
Код:
pawno\include\YSI/y_ini.inc(161) : fatal error 100: cannot read from file: "internal\y_version"
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


1 Error.
РЕШЕНИЯ
Истинная проблема здесь
Код:
\YSI/y_ini.inc
Где-то в коде, и файл был включен неправильно. ВСЕ файлы YSI ДОЛЖНЫ быть включены символом обратного слэша. Меняем:
Код:
#include <YSI/y_ini>
Особая благодарность Den_Willson
Так же Y_Less
Автор : Тём4ик
На портале похожего урока не видел,решил сделать,всем спасибо,жду критики!
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу