- Регистрация
- 9 Окт 2012
- Сообщения
- 401
- Лучшие ответы
- 0
- Репутация
- 202
Введения
1.YSI использует много макросов, чтобы сделать вещи проще вам нужно послушать меня.Недостатком является то, что возникает много ошибок и предупреждения очень трудных. Этот "Мануал" должен помочь вам исправить данные ошибки .
КОД:
ПРОБЛЕМА
Решение
Вы не создали include "YSI\y_commands".
2.
КОД
ПРОБЛЕМА
РЕШЕНИЯ
Это недопустимое заявление - нет никакой задержки, заданного таймера.
3.
КОД
ПРОБЛЕМА
Очень похожая проблема до последнего, только на этот раз отсутствует параметр "Таймер" ключевое слово вместо времени.
РЕШЕНИЯ
4.
КОД
ПРОБЛЕМА
РЕШЕНИЯ
Вы имеете право синтаксиса как с "timer" времени, но вы все равно получите недопустимое заявление. На самом деле это еще одна похожая ошибка . Все массивы на "timer", "global" и функции "remotefunc" должны следовать их длине. Строки НЕ нужно в длину, но вместо этого должен быть объявлен как "string:", в противном случае компилятор не может различить эти два понятия.
Или же
5.
КОД
ПРОБЛЕМА
РЕШЕНИЯ
Это является одним из более мения,страшным предупреждающих сообщений.
Массив данных называется "<name> @ YSII_Ag", а переменная величина называется "<name> @ YSII_Cg". Если вы получите предупреждение о том, что переменный размер никогда не используется, это означает, что размер не изменяли.
Если это так, то итератор всегда пуст
Если вы получите сообщение, что "<name> @ YSII_Ag" (массив данных) также никогда не используется, то итератор никогда не используется вообще, даже в "foreach" цикла.
КОД
ПРОБЛЕМА
РЕШЕНИЯ
Здесь только первая ошибка-это главное, что все другие вызваны первой. Они могут быть в заблуждение, так как они предоставляют "y_iterate", надо просто не игнорировать их, а и исправить первую ошибку
7.
ПРОБЛЕМА
Компилятор висит.
РЕШЕНИЯ
Существует ряд причин этому, обычно макрос расширяется слишком много кода. Если у вас есть "foreign", "global", "remotefunc" или "timer" такая статья, которая очень большая, подобно:
Приведенный выше код БУДЕТ висеть компилятор. Само по себе это не длинная строка - очень короткая относительно 511 символов максимум, но, как мы знаеем ранее YSI использует много макросов и это расширяет длинный код (эффективное, но долго). Проблема на промежуточных стадиях - код расширяется очень, делаеться очень длинный код, а затем сокращаеться . Попробуйте сократить линию.
Если компилятор по-прежнему висит (и вы убедились, что функция-это проблема, перепробывав все остальные), то вам, возможно, придется прибегнуть к использованию альтернативных методов, таких как basic.Код, сгенерированный "foreign" и "global" настолько велик, что он должен был быть разделен на две части - следовательно, почему эти две ключевые слова были сделаны, чтобы отразить "forward" и "public"
8.
КОД
ПРОБЛЕМА
РЕШЕНИЯ
Это на самом деле подобная проблема с номером 4, но с разными симптомами. К сожалению встроенные функции не могут иметь массивы вообще, даже если за ним следует их размер. Если вы попробывали включают размер вы получите дополнительный:
Вы можете, однако, все еще добавить строки с префиксом
9.
КОД
ОШИБКА
РЕШЕНИЯ
Переменные, объявленные с "new" или "stock" и др.Часто следуют новой строки приведенного выше шаблона примера. По техническим причинам это не может быть сделано с "uvar" и "svar" переменными. Каждый должен находиться на той же строке, что "uvar" или "svar".
10.
КОД
ПРОБЛЕМА
РЕШЕНИЯ
"INI_String"Существует, он просто дает необычный ошибка, когда последний параметр пропущены. Вы должны вызвать его назначения длины.
11.
КОД
ПРОБЛЕМА
РЕШЕНИЯ
Когда вы получаете сотни ошибок, как это внутри YSI, он, как правило, вызванные использованием нестандартных редактор (не PAWNO). Нет ничего плохого в других редакторах, некоторые просто созданы с различными умолчанию параметры командной строки для ****** (компилятор). Вы должны убедиться, что вы передаете эти два важных параметра:
12.
КОД
ПРОБЛЕМА
РЕШЕНИЯ
Это может быть вызвано с помощью любого мода, которые по какой-то необъяснимой причине решил игнорировать стандарта SA:MP форматирование и удаление точек с запятой. Чтобы это исправить, вам нужно сначала удалить эту строку:
13.
КОД
ПРОБЛЕМА
РЕШЕНИЯ
Должно быть
14.
КОД
РЕШЕНИЯ
Истинная проблема здесь
Где-то в коде, и файл был включен неправильно. ВСЕ файлы YSI ДОЛЖНЫ быть включены символом обратного слэша. Меняем:
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>
КОД
Код:
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]()
{
}
КОД
Код:
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]()
{
}
КОД
Код:
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[])
{
}
КОД
Код:
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)
{
}
}
КОД
Код:
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)
{
}
}
ПРОБЛЕМА
Компилятор висит.
РЕШЕНИЯ
Существует ряд причин этому, обычно макрос расширяется слишком много кода. Если у вас есть "foreign", "global", "remotefunc" или "timer" такая статья, которая очень большая, подобно:
Код:
timer MyTimer[1000](playerid, string:str[], arr[], size, string:other[], string:final[])
{
}
Код:
timer MyTimer[1000](p,string:s[],a[],c,string:o[],string:f[])
{
}
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[])
{
}
}
КОД
Код:
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];
КОД
Код:
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));
}
КОД
Код:
#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). Нет ничего плохого в других редакторах, некоторые просто созданы с различными умолчанию параметры командной строки для ****** (компилятор). Вы должны убедиться, что вы передаете эти два важных параметра:
Код:
-;+ -(+
КОД
Код:
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
КОД
Код:
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.
{
}
КОД
Код:
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
Код:
#include <YSI/y_ini>
Особая благодарность Den_Willson
Так же Y_Less
Автор : Тём4ик
На портале похожего урока не видел,решил сделать,всем спасибо,жду критики!
На портале похожего урока не видел,решил сделать,всем спасибо,жду критики!
Последнее редактирование: