Список часто встречаемых ошибок в pawno
Данная тема содержет наиболее распространенные ошибки и предупреждения в pawno при создании скриптов sa-mp
Когда компилятор находит ошибку в файле, то выводится сообщение, в таком порядке:
- Имя файла
- номер строки компилятора были обнаружены ошибки в скобках, непосредственно за именем
- класс error (ошибка, фатальная ошибка или предупреждение)
- номер ошибки
- описание ошибки
Например:
hello.pwn(3) : error 001: expected token: ";", but found "{"
Примечание: эта ошибка может быть на линии, над линией, что показано, так как компилятор не всегда может установить ошибку перед проанализировав полное выражение.
Категории ошибок
Ошибки разделяются на три класса:
Ошибки (errors)
- Описание ситуации когда компилятор не может скомпилировать код
- Ошибки номеруются от 1 до 99
Критические ошибки (Fatal errors)
- Критические ошибки и описание, от которых компилятор не может восстановиться.
- Парсинг прерывается (нет отклика программы).
- Критические ошибки номеруются от 100 до 199.
Предупреждения ( Warings )
- Предупреждения указывают на возможную причину возникновения багов, вылетов.
- Предупреждения номеруются от 200 до 299.
Распространенные ошибки
001: expected token (ожидаемый знак)
Обязательный знак отсутствует
Пример:
error 001: expected token: ";", but found "return" main() { print("test") // тут должна быть точка с запятой ";" return 1; }
002: only a single statement (or expression) can follow each “case” (только одно выражение может быть в одной строке с «case»
В каждом case оператора switch без фигурных скобок может содержаться только один оператор если больше нужно ставить скобки.
Пример:
error 002: only a single statement (or expression) can follow each "case"
main() { switch(x) { case 0: print("hello"); print("hello"); } return 1; }
Так же могут быть еще и предупреждения и дополнительные ошибки:
error 002: only a single statement (or expression) can follow each "case" warning 215: expression has no effect error 010: invalid function or declaration
Вот так это можно исправить:
main() { switch(x) { case 0: { print("hello"); print("hello"); } } return 1; }
004: function «x» is not implemented (Функция «x» не используется
Часто бывает что в функции выше пропущена скобка.
025: function heading differs from prototype
Это проиходит когда в функции не совпадают аргументы.
К примеру:
forward MyFunction(playerid); public MyFunction(player, vehicleid);
Исправляем:
forward MyFunction(playerid, vehicleid); public MyFunction(playerid, vehicleid);
035: argument type mismatch (argument x) (не совпадение типов аргумента(ов)
К примеру когда в место playerid — integer аргумента стоит «playerid» — string или 0.5 — float
Пример:
error 035: argument type mismatch (argument 1)
Kick("playerid"); // Как видите в место целого числа (integer) стоит строка
Исправляем:
Kick(playerid);
046: unknown array size (variable x)
Не указан размер массива.
Пример:
new string[]; string = "pawno";
Исправляем:
new string[6]; string = "pawno";
047: array sizes do not match, or destination array is too small
Размер массива мал или не совпадает.
- Многомерные массивы должны иметь одинаковый размер
- Одномерные массив к которому присваивают(правый должен иметь больше размер чем левый.
new destination[8]; new msg[] = "Hello World!"; destination = msg;
В приведенном выше коде размер строки «Hello world!» ровна 12 байт а массив к которому присваиваем имеет размер 8 байт из этого и складывается ошибка.
Если увеличить размер массива destination до 13 байт то ошибка исправится.
new destination[13]; new msg[] = "Hello World!"; destination = msg;
055: start of function body without function header
Начало тела функции без функции заголовка.
Критические ошибки (FATAL ERRORS)
100: cannot read from file: "<file>"
Компилятор не может найти или прочитать указанный файл, убедитесь что он находится по адресу (<папка с сервером>pawnoinclude).
Пример:
#include <a_sam>
Исправляем:
#include <a_samp>
Совет
Не нужно открывать ваш код дважды, не нужно тыкать несколько раз на файл. Откройте сначала редактор, потом ваш проект.
Предупреждения( Warnings )
202: number of arguments does not match definition
Описание ошибки довольно понятное, это значит что вы используете слишком мало или слишком много аргументов в функции, обычно это признак того что функция используется не правильно, обратитесь к документации.
Функция GetPlayerHealth согласно официальному источнику wiki.sa-mp.com имеет два аргумента playerid и Float:health ссылка
Пример:
GetPlayerHealth(playerid);
Исправляем:
new Float:health; GetPlayerHealth(playerid, health);
203: symbol is never used: «symbol»
Вы создали переменную или функцию и она ни где не используется тогда ищите в окне компилятора это предупреждение, это не как не влияет на код и не угражает ему, так что если вы удалите переменную или функцию которая не используется, то вы сэкономите память.
Пример:
stock SomeFunction() { // Blah }
204: symbol is assigned a value that is never used: «symbol»
Это предупреждение аналогично к предыдущему, разница в том что к переменной что то присвоено и оно не как не используется, это безопасно
209: function should return a value
Функция ничего не возвращает, вы создали её:
SomeFunction() { // Blah }
Решили её присвоить к чему нибудь к примеру:
new result = SomeFunction(); // ожидает 1
Вот так исправить
SomeFunction() { // Blah return 1; }
211: possibly unintended assignment
Если вы введете оператор присваивания в условии и оно не будет в круглых скобках то будет предупреждение
if(vehicle = GetPlayerVehicleID(playerid)) // ошибка if(vehicle == GetPlayerVehicleID(playerid)) // все норм if((vehicle = GetPlayerVehicleID(playerid))) // все норм, так значение функции присвоится к переменной потом выражение вычесляется { то есть это как if(IsPlayerConnected(playerid)}
213: tag mismatch ( несовпадение тегов)
Это происходит когда:
- Тип переменной указан не верно или не имеет его
- Выражения по обе стороны бинарного оператора имеют разные теги
- В пременную возвращен не верный тип переменной или не имеющий его.
- Индексирование массива, который требует тегами индекс без тега или неправильное имя тега
Часто это бывает на 3d текстах или тексдравах Text3D, Text
Не правильно:
new health; GetPlayerHealth(playerid, health);
Правильно:
new Float:health; GetPlayerHealth(playerid, health);
217: loose indentation
Компилятор выдаст ошибку если не соблюдены отступы.
Правильно:
if(condition) { action(); result(); }
Не правильно:
if(condition) { action(); result(); }
Отступы делаются по нажатью кнопки TAB это практика в программировании для удобного чтения кода.
219: local variable «foo» shadows a variable at a preceding level
Локальная переменная в тени глобальной то есть над локальной переменной создана точно такая же глобальная. В практике программирования префиксом глобальной переменной является «g» в начале переменной к примеру
new gPlayerMoney
любыми способами избегайте их.
К примеру:
new team[MAX_PLAYERS]; // объявляем глобальную переменную function(playerid) { new team[MAX_PLAYERS]; // создаем еще одну, и получаем статью 219 кодекса ошибок :D team[playerid] = random(5); }
Решение:
Просто переименуйте локальную переменную team.
225: unreachable code ( недоступный код )
Это происходит тогда когда вы пишите какой нибудь код после return, после return’а код не выполняется и он считается бесполезным
Пример:
#include <zcmd.inc>
CMD:jetpack(playerid, params[]) { #pragma unused params if(IsPlayerAdmin(playerid)) { SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USEJETPACK); return 1; // завершаем процесс } else { SendClientMessage(playerid, -1, "Вы не администратор"); return 1; // завершаем процесс } SendClientMessage(playerid, -1, "Вы ввели команду /jp"); // Этот код не доступен он не будет выполнятся. }
Решение:
CMD:jetpack(playerid, params[]) { #pragma unused params if(IsPlayerAdmin(playerid)) { SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USEJETPACK); } else { SendClientMessage(playerid, -1, "Вы не администратор"); } SendClientMessage(playerid, -1, "Вы ввели команду /jp"); // этот код запустится return 1; // завершаем процесс }
235: public function lacks forward declaration (symbol «symbol»)
Отсутствует forward.
Не правильно:
public MyFunction() { }
Правильно:
forward MyFunction(); public MyFunction() { }
Надеюсь эта статья поможет вам в языке программирования, желаю вам не повторять ошибок дважды и что бы ваш код был быстрым, надежным!
Оставляйте ваши отзывы, ставьте плюсы, пишите недостатки ошибки, недостатки статьи или их недочеты. Удачи в мире PAWNO!
error 001: expected token: "%s", but found "%s" - ожидался символ: "%s", но был найден "%s";
error 002: only a single statement (or expression) can follow each "case" - только одно заявление (или выражение) могут следовать за "case";
error 003: declaration of a local variable must appear in a compound block - объявленная локальная переменная должна использоваться в этом же блоке;
error 004: function "%s" is not implemented - функция %s не реализована;
error 005: function may not have arguments - функция не имеет аргументов;
error 006: must be assigned to an array - должен быть присвоен массив;
error 007: operator cannot be redefined - оператор не может быть установлен еще раз;
error 008: must be a constant expression; assumed zero - должно быть постоянным выражением; равным нулю;
error 009: invalid array size (negative or zero) - неверный размер массива (отрицательный или 0);
error 010: invalid function or declaration - неизвестная функция или декларация;
error 011: invalid outside functions - неверно вне функции;
error 012: invalid function call, not a valid address - неверный вызов функции, неверный адрес;
error 013: no entry point (no public functions) - нет точки входа (не public функция);
error 014: invalid statement; not in switch - неверный оператор; не в switch;
error 015: "default" case must be the last case in switch statement - "default" должен быть последним условием в switch;
error 016: multiple defaults in "switch" - несколько "default" в switch;
error 017: undefined symbol "%s" - неизвестный символ "%s";
error 018: initialization data exceeds declared size - данные массива превышают его размер;
error 019: not a label: %s" - не метка "%s";
error 020: invalid symbol name "%s" - неверное имя символа "%s";
error 021: symbol already defined: %s" - символ уже объявлен: "%s";
error 022: must be lvalue (non-constant) - должно быть левосторонним (нет постоянной);
error 023: array assignment must be simple assignment - назначение массива должно быть простым;
error 024: "break" or "continue" is out of context - "break" или "continue" вне контекста;
error 025: function heading differs from prototype - функция заголовка отличается от прототипа;
error 026: no matching "#if..." - не найдено "#if...";
error 027: invalid character constant - недопустимый символ в постоянной;
error 028: invalid subscript (not an array or too many subscripts): "%s" - неверный индекс (это не массив или слишком много индексов): "%s";
error 029: invalid expression, assumed zero - неверное выражение, нет результата;
error 030: compound statement not closed at the end of file - составной оператор не закрыт в конце файла;
error 031: unknown directive - неизвестная директива;
error 032: array index out of bounds (variable "%s") - индекс массива превышен;
error 033: array must be indexed (variable "%s") - массив должен быть проиндексирован;
error 034: argument does not have a default value (argument %d) - аргумент не имеет начального значения (аргумент %d);
error 035: argument type mismatch (argument %d) - несоответствие типа аргумента (аргумент %d);
error 036: empty statement - пустой оператор;
error 037: invalid string (possibly non-terminated string) - неправильная строка;
error 038: extra characters on line - лишние символы в строке;
error 039: constant symbol has no size - символьная константа не имеет размера;
error 040: duplicate "case" label (value %d) - несколько раз объявлен "case" с одним тем же параметром;
error 041: invalid ellipsis, array size is not known - размер массива неизвестен;
error 042: invalid combination of class specifiers - недопустимое сочетание класса;
error 043: character constant exceeds range for packed string - символьная константа превышает размер строки;
error 044: positional parameters must precede all named parameters - позиционные параметры должны предшествовать всем именованным параметрам;
error 045: too many function arguments - слишком много аргументов у функции;
error 046: unknown array size (variable "%s") - неизвестный размер массива;
error 047: array sizes do not match, or destination array is too small - размеры массива конфликтуют, либо целевой массив слишком маленький;
error 048: array dimensions do not match - размеры массива не совпадают;
error 049: invalid line continuation - неправильное продолжение строки;
error 050: invalid range - неверный диапазон;
error 051: invalid subscript, use "[ ]" operators on major dimensions - неправильный индекс, используйте "[]";
error 052: multi-dimensional arrays must be fully initialized - много-размерные массивы должны быть полностью определены;
error 053: exceeding maximum number of dimensions - превышение максимального числа измерений;
error 054: unmatched closing brace - не найдена закрывающаяся скобка;
error 055: start of function body without function header - начало функции без заголовка;
error 056: arrays, local variables and function arguments cannot be public (variable "%s") - массивы, локальные переменные и аргументы функции не могут быть общедоступными;
error 057: unfinished expression before compiler directive - незавершенное выражение для компилятора;
error 058: duplicate argument; same argument is passed twice - дублирование аргумента; Аргумент передается несколько раз;
error 059: function argument may not have a default value (variable "%s") - аргумент не может иметь значение по-умолчанию;
error 060: multiple "#else" directives between "#if ... #endif" - Несколько "#else" между "#if ... #endif" - несколько "#else" между "#if и #endif";
error 061: "#elseif" directive follows an "#else" directive - "#else" перед "#elseif";
error 062: number of operands does not fit the operator - количество операндов не соответствует оператору;
error 063: function result tag of operator "%s" must be "%s" - Результат функции %s должен быть %s;
error 064: cannot change predefined operators - невозможно изменить уже определенные операторы;
error 065: function argument may only have a single tag (argument %d) - в этой функции может быть только один аргумент;
error 066: function argument may not be a reference argument or an array (argument "%s") - аргумент функции не может быть ссылкой или массивом;
error 067: variable cannot be both a reference and an array (variable "%s") - Переменная не может быть как массив или ссылка;
error 068: invalid rational number precision in #pragma - неверное число в #pragma;
error 069: rational number format already defined - формат рационального числа уже определен;
error 070: rational number support was not enabled - рациональное число не поддерживается;
error 071: user-defined operator must be declared before use (function "%s") - объявленный оператор должен быть перед использованием;
error 072: "sizeof" operator is invalid on "function" symbols - оператор "sizeof" не может быть использован для символов функции;
error 073: function argument must be an array (argument "%s") - аргумент %s должен быть массивом;
error 074: #define %s must start with an alphabetic character - #define должен начинаться с буквы;
error 075: input line too long (after substitutions - введенная строка слишком длинная;
error 076: syntax *error in the expression, or invalid function call - неправильный синтаксис или неправильный вызов функции;
error 077: malformed UTF-8 encoding, or corrupted file: %s - плохая кодировка UTF-8 или плохой файл: %s;
error 078: function uses both "return" and "return <value>" - функция использует "return" и "return <значение>";
error 079: inconsistent return types (array & non-array) - несовместимость типов возвращенных результатов;
error 080: unknown symbol, or not a constant symbol (symbol "%s") - неизвестный или непостоянный символ: %s;
error 081: cannot take a tag as a default value for an indexed array parameter (symbol "%s") - не может принимать тег в качестве значения по умолчанию для параметра индексированного массива;
error 082: user-defined operators and native functions may not have states - созданные функции или операторы не имеют состояния;
error 083: a function may only belong to a single automaton (symbol "%s") - функция может принадлежать только к одной автоматизации;
error 084: state conflict: one of the states is already assigned to another implementation (symbol "%s") - конфликт состояния: одно из состояний уже назначено на другую реализацию;
error 085: no states are defined for function "%s" - нет состояний, определенных для функции "%s";
error 086: unknown automaton "%s" - неизвестная автоматизация "%s";
error 087: unknown state "%s" for automaton "%s" - неизвестное состояние "%s" в автоматизации "%s";
error 088: number of arguments does not match definition - количество аргументов не совпадает с объявленными в функции;
- 0
Вопросы
Спойлер
(4280) : warning 219: local variable "AdminInfo" shadows a variable at a preceding level (36712) : warning 219: local variable "AdminInfo" shadows a variable at a preceding level (39539) : error 017: undefined symbol "Player@YSII_Ag" (39539) : error 017: undefined symbol "Player@YSII_Ag" (39539) : error 029: invalid expression, assumed zero (39539) : 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.
Спойлер
public OnPlayerConnect(playerid) { if(ServerRestart[0]) { SendClientMessage(playerid,0xffcc00ff,"Сейчас происходит рестарт сервера!"); SendClientMessage(playerid,0xffcc00ff,"Пожалуйста, дождитесь его завершения"); return KickEx(playerid); } SetSpawnInfo(playerid, 0, 0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0); Players[RealOnline++]=playerid; for(new pInfo:i; i < pInfo; i ++) PlayerInfo[playerid][i] = 0; for(new tempInfo:i; i < tempInfo; i ++) pTemp[playerid][i] = 0; PreloadAllAnims(playerid); GetPlayerName(playerid, PlayerInfo[playerid][pNames], 24); new AdminInfo[128]; format(AdminInfo,sizeof(AdminInfo),"[A] Игрок %s [%i] зашел на сервер", PlayerInfo[playerid][pNames],playerid); tforeach(i) { if(PlayerInfo[i][bAdmin] >= 1 && GetPVarInt(i, "ConnectInfo")) SCM(i, COLOR_GREY, AdminInfo); } GetPlayerIp(playerid,PlayerInfo[playerid][pIP],16); LoadPlayerDraws(playerid); Show_RaceTDLocal(playerid); NewTextDrawsLoad(playerid); PlayerInfo[playerid][pTime] = unix; ObjectRemovedBuilding(playerid); ClearAnimations(playerid); SetPlayerDataToDefault(playerid); RemoveBuildingForPlayer(playerid, 4625, 1453.6016, -989.4844, 34.4375, 0.25); RemoveBuildingForPlayer(playerid, 4753, 1451.6172, -966.3828, 57.4453, 0.25); RemoveBuildingForPlayer(playerid, 1261, 1495.3906, -945.6328, 48.8125, 0.25); RemoveBuildingForPlayer(playerid, 1266, 1405.2969, -982.5313, 55.4766, 0.25); RemoveBuildingForPlayer(playerid, 1266, 1475.6016, -990.9453, 55.6250, 0.25); RemoveBuildingForPlayer(playerid, 1260, 1405.2969, -982.5313, 55.4766, 0.25); RemoveBuildingForPlayer(playerid, 4734, 1451.6172, -966.3828, 57.4453, 0.25); RemoveBuildingForPlayer(playerid, 4600, 1453.6016, -989.4844, 34.4375, 0.25); RemoveBuildingForPlayer(playerid, 1260, 1475.6016, -990.9453, 55.6250, 0.25); RemoveBuildingForPlayer(playerid, 1267, 1495.3906, -945.6328, 48.8125, 0.25); return 1; }
Спойлер
CMD:re(playerid,params[]) { if(PlayerInfo[playerid][bAdmin] < 1) return 1; if(!strcmp(params[0],"off",true)) { if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING && GetPVarInt(playerid, "Spectate")) return TogglePlayerSpectating(playerid,false); } if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, -1, ""#information"Используйте /re(con) [ид игрока]"); if(!IsPlayerConnected(params[0])) return 1; if(PlayerInfo[params[0]][bAdmin] >= 14) return SendClientMessage(playerid, -1,""#net"Вы не можете следить за администратором 14-го уровня."); PlayerTextDrawDestroy(playerid,PlayerText:ReconPlayerText[playerid][0]); PlayerTextDrawDestroy(playerid,PlayerText:ReconPlayerText[playerid][1]); ReconPlayerText[playerid][0] = CreatePlayerTextDraw(playerid,589.00, 145.00, "Nik Anson~n~ID: 666"); PlayerTextDrawAlignment(playerid,ReconPlayerText[playerid][0], 2); PlayerTextDrawLetterSize(playerid,ReconPlayerText[playerid][0], 0.240000, 0.899999); ReconPlayerText[playerid][1] = CreatePlayerTextDraw(playerid,578.00, 165.00, "1 : 1 / 8~n~0~n~0~n~50~n~0~n~0 / 0~n~86~n~0 : 0 ~n~0 / 0 : 0%~n~0 / 0 : 0%~n~23 : 0"); PlayerTextDrawLetterSize(playerid,ReconPlayerText[playerid][1], 0.199999, 0.899999); for(new x=0x0; x < 2; x ++) { PlayerTextDrawBackgroundColor(playerid,ReconPlayerText[playerid][x], 255); PlayerTextDrawFont(playerid,ReconPlayerText[playerid][x], 1); PlayerTextDrawColor(playerid,ReconPlayerText[playerid][x], -1); PlayerTextDrawSetOutline(playerid,ReconPlayerText[playerid][x], 1); PlayerTextDrawSetProportional(playerid,ReconPlayerText[playerid][x], 1); PlayerTextDrawSetShadow(playerid,ReconPlayerText[playerid][x],0); } if(!GetPVarInt(playerid, "Spectate")) { GetPlayerPos(playerid, gPlayerPosition[playerid][0],gPlayerPosition[playerid][1],gPlayerPosition[playerid][2]); gPlayerInformation[playerid][0] = GetPlayerInterior(playerid); gPlayerInformation[playerid][1] = GetPlayerVirtualWorld(playerid); } TogglePlayerSpectating(playerid, true); SetPlayerInterior(playerid,GetPlayerInterior(params[0])); SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(params[0])); if(IsPlayerInAnyVehicle(params[0])) PlayerSpectateVehicle(playerid, VehicleEnters[params[0]]); else PlayerSpectatePlayer(playerid, params[0]); for(new x; x < 2; x ++) PlayerTextDrawShow(playerid, PlayerText:ReconPlayerText[playerid][x]); TextDrawShowForPlayer(playerid, ReconText); SetPVarInt(playerid, "Spectate", true); SetPVarInt(playerid, "SpectateID", params[0]); new AdminInfo[128]; format(AdminInfo,sizeof(AdminInfo),"[A] %s [%i] начал следить за %s [%i]", PlayerInfo[playerid][pNames],playerid,PlayerInfo[params[0]][pNames],params[0]); ABroadCast(COLOR_GREY,AdminInfo,1); SendClientMessage(playerid, COLOR_SERVER, "Для того чтобы закочить слежку за игроком, нажмите клавишу "WHITE"''ПРОБЕЛ''"); SendClientMessage(playerid, COLOR_SERVER, "Чтобы переключаться между игроками, нажимайте клавиши "WHITE"NUM4 - назад | NUM6 - вперед"); SendClientMessage(playerid, COLOR_SERVER, "Чтобы перепоказать игрока нажмите клавишу "WHITE"''Y''"); return 1; }
Спойлер
publics: setcmd_SQL_callback(playerid, Name[], CMD_i, CMD_allow) { if (cache_get_row_count()<1) return SendClientMessage(playerid, COLOR_WHITE, "• {FFC800}[Подсказка] {ffffff}Введённое имя игрока отсутствует в БД"); new CMDaccess[CMD_NUM+1]; cache_get_field_content(0, "CMDaccess", CMDaccess, connects, sizeof(CMDaccess)); new CMDaccess_i_new=CMD_allow ? '1' : '0'; new changed=CMDaccess[CMD_i]!=CMDaccess_i_new; if (changed) { CMDaccess[CMD_i]=CMDaccess_i_new; mysql_format(connects, qwerty228, sizeof(qwerty228), "UPDATE `admin` SET `CMDaccess` = '%s' WHERE `Name` = '%s'", CMDaccess, Name); mysql_empty(connects, qwerty228); foreach(new i: Player) { if (!IsPlayerConnected(i) || !PlayerInfo[i][bAdmin]) continue; if (strcmp(PlayerInfo[i][pNames], Name, true)!=0) continue; AdminInfo[i][aiCMDaccess][CMD_i]=CMD_allow ? '1' : '0'; qwerty228=""; if (CMD_allow) format(qwerty228, sizeof(qwerty228), "Тебе дали команду %s.", CMD_names[CMD_i]); else format(qwerty228, sizeof(qwerty228), "У тебя забрали команду %s.", CMD_names[CMD_i]); SendClientMessage(i, COLOR_WHITE, qwerty228); break; } } qwerty228=""; if (changed) { if (CMD_allow) format(qwerty228, sizeof(qwerty228), "• {FFC800}Вы выдали команду %s игроку %s.", CMD_names[CMD_i], Name); else format(qwerty228, sizeof(qwerty228), "• {FFC800}Вы забрали команду %s у игрока %s.", CMD_names[CMD_i], Name); }else { if (CMD_allow) format(qwerty228, sizeof(qwerty228), "• {FFC800}Команда %s уже доступна игроку %s.", CMD_names[CMD_i], Name); else format(qwerty228, sizeof(qwerty228), "• {FFC800}Команда %s уже недоступна игроку %s.", CMD_names[CMD_i], Name); } return SendClientMessage(playerid, COLOR_WHITE, qwerty228); }
Помогите исправить ошибки, в долгу не останусь… И дам +СИК!:)
Заметка от
Гость
, создано 2 октября, 2017
Большой код нужно брать еще и под спойлер.
Как это сделать?
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
Лучший ответ
Опубликовал
Гость stibs
,Опубликовано 3 октября, 2017
Если эти строки были раннее, то и ошибка была бы тоже раннее. Попробуйте их заменить:
for(new pInfo:i; i < pInfo; i ++) PlayerInfo[playerid][pInfo] = 0;//Ошибка
for(new tempInfo:i; i < tempInfo; i ++) pTemp[playerid][tempInfo] = 0;//Ошибка
25 ответов на этот вопрос
- Сортировать по голосам
- Сортировать по дате
-
- 0
Если эти строки были раннее, то и ошибка была бы тоже раннее. Попробуйте их заменить:
for(new pInfo:i; i < pInfo; i ++) PlayerInfo[playerid][pInfo] = 0;//Ошибка for(new tempInfo:i; i < tempInfo; i ++) pTemp[playerid][tempInfo] = 0;//Ошибка
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
Строки 42800 и 36712 удалить.
Подключите и установите библиотеку YSI. Найти можно в интернете.
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
@stibs Скроки 42800 у меня нету
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
@stibs
Спойлер
(4281) : error 048: array dimensions do not match
(4285) : error 048: array dimensions do not match
(36713) : error 048: array dimensions do not match
(36714) : error 048: array dimensions do not match
(39539) : error 017: undefined symbol «Player@YSII_Ag»
(39539) : error 017: undefined symbol «Player@YSII_Ag»
(39539) : error 029: invalid expression, assumed zero
(39539) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
8 Errors.
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
@FENRIS Опять же, не превый день на форуме, строки сразу нужно скидывать с ошибками вместе, И пометьте строки, на которых ошибки.
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
@stibs
Спойлер
public OnPlayerConnect(playerid)
{
if(ServerRestart[0])
{
SendClientMessage(playerid,0xffcc00ff,»Сейчас происходит рестарт сервера!»);
SendClientMessage(playerid,0xffcc00ff,»Пожалуйста, дождитесь его завершения»);
return KickEx(playerid);
}
SetSpawnInfo(playerid, 0, 0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
Players[RealOnline++]=playerid;
for(new pInfo:i; i < pInfo; i ++) PlayerInfo[playerid] = 0;
for(new tempInfo:i; i < tempInfo; i ++) pTemp[playerid] = 0;
PreloadAllAnims(playerid);
GetPlayerName(playerid, PlayerInfo[playerid][pNames], 24);
//new AdminInfo[128];
format(AdminInfo,sizeof(AdminInfo),»[A] Игрок %s [%i] зашел на сервер», PlayerInfo[playerid][pNames],playerid);//Ошибка тут!
tforeach(i)
{
if(PlayerInfo[bAdmin] >= 1 && GetPVarInt(i, «ConnectInfo»))
SCM(i, COLOR_GREY, AdminInfo);//И тут тоже ошибка
}
GetPlayerIp(playerid,PlayerInfo[playerid][pIP],16);
LoadPlayerDraws(playerid);
Show_RaceTDLocal(playerid);
NewTextDrawsLoad(playerid);
PlayerInfo[playerid][pTime] = unix;
ObjectRemovedBuilding(playerid);
ClearAnimations(playerid);
SetPlayerDataToDefault(playerid);
RemoveBuildingForPlayer(playerid, 4625, 1453.6016, -989.4844, 34.4375, 0.25);
RemoveBuildingForPlayer(playerid, 4753, 1451.6172, -966.3828, 57.4453, 0.25);
RemoveBuildingForPlayer(playerid, 1261, 1495.3906, -945.6328, 48.8125, 0.25);
RemoveBuildingForPlayer(playerid, 1266, 1405.2969, -982.5313, 55.4766, 0.25);
RemoveBuildingForPlayer(playerid, 1266, 1475.6016, -990.9453, 55.6250, 0.25);
RemoveBuildingForPlayer(playerid, 1260, 1405.2969, -982.5313, 55.4766, 0.25);
RemoveBuildingForPlayer(playerid, 4734, 1451.6172, -966.3828, 57.4453, 0.25);
RemoveBuildingForPlayer(playerid, 4600, 1453.6016, -989.4844, 34.4375, 0.25);
RemoveBuildingForPlayer(playerid, 1260, 1475.6016, -990.9453, 55.6250, 0.25);
RemoveBuildingForPlayer(playerid, 1267, 1495.3906, -945.6328, 48.8125, 0.25);
return 1;
}
Спойлер
CMD:re(playerid,params[])
{
if(PlayerInfo[playerid][bAdmin] < 1) return 1;
if(!strcmp(params[0],»off»,true))
{
if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING && GetPVarInt(playerid, «Spectate»)) return TogglePlayerSpectating(playerid,false);
}
if(sscanf(params, «u», params[0])) return SendClientMessage(playerid, -1, «»#information»Используйте /re(con) [ид игрока]»);
if(!IsPlayerConnected(params[0])) return 1;
if(PlayerInfo[params[0]][bAdmin] >= 14) return SendClientMessage(playerid, -1,»»#net»Вы не можете следить за администратором 14-го уровня.»);
PlayerTextDrawDestroy(playerid,PlayerText:ReconPlayerText[playerid][0]);
PlayerTextDrawDestroy(playerid,PlayerText:ReconPlayerText[playerid][1]);
ReconPlayerText[playerid][0] = CreatePlayerTextDraw(playerid,589.00, 145.00, «Nik Anson~n~ID: 666»);
PlayerTextDrawAlignment(playerid,ReconPlayerText[playerid][0], 2);
PlayerTextDrawLetterSize(playerid,ReconPlayerText[playerid][0], 0.240000, 0.899999);
ReconPlayerText[playerid][1] = CreatePlayerTextDraw(playerid,578.00, 165.00, «1 : 1 / 8~n~0~n~0~n~50~n~0~n~0 / 0~n~86~n~0 : 0 ~n~0 / 0 : 0%~n~0 / 0 : 0%~n~23 : 0»);
PlayerTextDrawLetterSize(playerid,ReconPlayerText[playerid][1], 0.199999, 0.899999);
for(new x=0x0; x < 2; x ++)
{
PlayerTextDrawBackgroundColor(playerid,ReconPlayerText[playerid][x], 255);
PlayerTextDrawFont(playerid,ReconPlayerText[playerid][x], 1);
PlayerTextDrawColor(playerid,ReconPlayerText[playerid][x], -1);
PlayerTextDrawSetOutline(playerid,ReconPlayerText[playerid][x], 1);
PlayerTextDrawSetProportional(playerid,ReconPlayerText[playerid][x], 1);
PlayerTextDrawSetShadow(playerid,ReconPlayerText[playerid][x],0);
}
if(!GetPVarInt(playerid, «Spectate»))
{
GetPlayerPos(playerid, gPlayerPosition[playerid][0],gPlayerPosition[playerid][1],gPlayerPosition[playerid][2]);
gPlayerInformation[playerid][0] = GetPlayerInterior(playerid);
gPlayerInformation[playerid][1] = GetPlayerVirtualWorld(playerid);
}
TogglePlayerSpectating(playerid, true);
SetPlayerInterior(playerid,GetPlayerInterior(params[0]));
SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(params[0]));
if(IsPlayerInAnyVehicle(params[0])) PlayerSpectateVehicle(playerid, VehicleEnters[params[0]]);
else PlayerSpectatePlayer(playerid, params[0]);
for(new x; x < 2; x ++) PlayerTextDrawShow(playerid, PlayerText:ReconPlayerText[playerid][x]);
TextDrawShowForPlayer(playerid, ReconText);
SetPVarInt(playerid, «Spectate», true);
SetPVarInt(playerid, «SpectateID», params[0]);
//new AdminInfo[128];
format(AdminInfo,sizeof(AdminInfo),»[A] %s [%i] начал следить за %s [%i]», PlayerInfo[playerid][pNames],playerid,PlayerInfo[params[0]][pNames],params[0]);//Тут тоже ошибка
ABroadCast(COLOR_GREY,AdminInfo,1);
SendClientMessage(playerid, COLOR_SERVER, «Для того чтобы закочить слежку за игроком, нажмите клавишу «WHITE»»ПРОБЕЛ»»);
SendClientMessage(playerid, COLOR_SERVER, «Чтобы переключаться между игроками, нажимайте клавиши «WHITE»NUM4 — назад | NUM6 — вперед»);
SendClientMessage(playerid, COLOR_SERVER, «Чтобы перепоказать игрока нажмите клавишу «WHITE»»Y»»);
return 1;
}
Спойлер
publics: setcmd_SQL_callback(playerid, Name[], CMD_i, CMD_allow) {
if (cache_get_row_count()<1) return SendClientMessage(playerid, COLOR_WHITE, «• {FFC800}[Подсказка] {ffffff}Введённое имя игрока отсутствует в БД«);
new CMDaccess[CMD_NUM+1];
cache_get_field_content(0, «CMDaccess», CMDaccess, connects, sizeof(CMDaccess));
new CMDaccess_i_new=CMD_allow ? ‘1’ : ‘0’;
new changed=CMDaccess[CMD_i]!=CMDaccess_i_new;
if (changed) {
CMDaccess[CMD_i]=CMDaccess_i_new;
mysql_format(connects, qwerty228, sizeof(qwerty228), «UPDATE `admin` SET `CMDaccess` = ‘%s’ WHERE `Name` = ‘%s'», CMDaccess, Name);
mysql_empty(connects, qwerty228);
foreach(new i: Player)//Ошибка!
{
if (!IsPlayerConnected(i) || !PlayerInfo[bAdmin]) continue;
if (strcmp(PlayerInfo[pNames], Name, true)!=0) continue;
AdminInfo[aiCMDaccess][CMD_i]=CMD_allow ? ‘1’ : ‘0’;
qwerty228=»»;
if (CMD_allow) format(qwerty228, sizeof(qwerty228), «Тебе дали команду %s.», CMD_names[CMD_i]);
else format(qwerty228, sizeof(qwerty228), «У тебя забрали команду %s.», CMD_names[CMD_i]);
SendClientMessage(i, COLOR_WHITE, qwerty228);
break;
}
}
qwerty228=»»;
if (changed) {
if (CMD_allow) format(qwerty228, sizeof(qwerty228), «• {FFC800}Вы выдали команду %s игроку %s.», CMD_names[CMD_i], Name);
else format(qwerty228, sizeof(qwerty228), «• {FFC800}Вы забрали команду %s у игрока %s.», CMD_names[CMD_i], Name);
}else {
if (CMD_allow) format(qwerty228, sizeof(qwerty228), «• {FFC800}Команда %s уже доступна игроку %s.», CMD_names[CMD_i], Name);
else format(qwerty228, sizeof(qwerty228), «• {FFC800}Команда %s уже недоступна игроку %s.», CMD_names[CMD_i], Name);
}
return SendClientMessage(playerid, COLOR_WHITE, qwerty228);
}
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
@FENRIS Подключите инклуд foreach в мод, или если уже есть, обновите его. А те два кода замените:
Спойлер
public OnPlayerConnect(playerid) { if(ServerRestart[0]) { SendClientMessage(playerid,0xffcc00ff,"Сейчас происходит рестарт сервера!"); SendClientMessage(playerid,0xffcc00ff,"Пожалуйста, дождитесь его завершения"); return KickEx(playerid); } SetSpawnInfo(playerid, 0, 0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0); Players[RealOnline++]=playerid; for(new pInfo:i; i < pInfo; i ++) PlayerInfo[playerid] = 0; for(new tempInfo:i; i < tempInfo; i ++) pTemp[playerid] = 0; PreloadAllAnims(playerid); GetPlayerName(playerid, PlayerInfo[playerid][pNames], 24); new AdminInfos[128]; format(AdminInfos,sizeof(AdminInfos),"[A] Игрок %s [%i] зашел на сервер", PlayerInfo[playerid][pNames],playerid); tforeach(i) { if(PlayerInfo[bAdmin] >= 1 && GetPVarInt(i, "ConnectInfo")) SCM(i, COLOR_GREY, AdminInfos); } GetPlayerIp(playerid,PlayerInfo[playerid][pIP],16); LoadPlayerDraws(playerid); Show_RaceTDLocal(playerid); NewTextDrawsLoad(playerid); PlayerInfo[playerid][pTime] = unix; ObjectRemovedBuilding(playerid); ClearAnimations(playerid); SetPlayerDataToDefault(playerid); RemoveBuildingForPlayer(playerid, 4625, 1453.6016, -989.4844, 34.4375, 0.25); RemoveBuildingForPlayer(playerid, 4753, 1451.6172, -966.3828, 57.4453, 0.25); RemoveBuildingForPlayer(playerid, 1261, 1495.3906, -945.6328, 48.8125, 0.25); RemoveBuildingForPlayer(playerid, 1266, 1405.2969, -982.5313, 55.4766, 0.25); RemoveBuildingForPlayer(playerid, 1266, 1475.6016, -990.9453, 55.6250, 0.25); RemoveBuildingForPlayer(playerid, 1260, 1405.2969, -982.5313, 55.4766, 0.25); RemoveBuildingForPlayer(playerid, 4734, 1451.6172, -966.3828, 57.4453, 0.25); RemoveBuildingForPlayer(playerid, 4600, 1453.6016, -989.4844, 34.4375, 0.25); RemoveBuildingForPlayer(playerid, 1260, 1475.6016, -990.9453, 55.6250, 0.25); RemoveBuildingForPlayer(playerid, 1267, 1495.3906, -945.6328, 48.8125, 0.25); return 1; }
Спойлер
CMD:re(playerid,params[]) { if(PlayerInfo[playerid][bAdmin] < 1) return 1; if(!strcmp(params[0],"off",true)) { if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING && GetPVarInt(playerid, "Spectate")) return TogglePlayerSpectating(playerid,false); } if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, -1, ""#information"Используйте /re(con) [ид игрока]"); if(!IsPlayerConnected(params[0])) return 1; if(PlayerInfo[params[0]][bAdmin] >= 14) return SendClientMessage(playerid, -1,""#net"Вы не можете следить за администратором 14-го уровня."); PlayerTextDrawDestroy(playerid,PlayerText:ReconPlayerText[playerid][0]); PlayerTextDrawDestroy(playerid,PlayerText:ReconPlayerText[playerid][1]); ReconPlayerText[playerid][0] = CreatePlayerTextDraw(playerid,589.00, 145.00, "Nik Anson~n~ID: 666"); PlayerTextDrawAlignment(playerid,ReconPlayerText[playerid][0], 2); PlayerTextDrawLetterSize(playerid,ReconPlayerText[playerid][0], 0.240000, 0.899999); ReconPlayerText[playerid][1] = CreatePlayerTextDraw(playerid,578.00, 165.00, "1 : 1 / 8~n~0~n~0~n~50~n~0~n~0 / 0~n~86~n~0 : 0 ~n~0 / 0 : 0%~n~0 / 0 : 0%~n~23 : 0"); PlayerTextDrawLetterSize(playerid,ReconPlayerText[playerid][1], 0.199999, 0.899999); for(new x=0x0; x < 2; x ++) { PlayerTextDrawBackgroundColor(playerid,ReconPlayerText[playerid][x], 255); PlayerTextDrawFont(playerid,ReconPlayerText[playerid][x], 1); PlayerTextDrawColor(playerid,ReconPlayerText[playerid][x], -1); PlayerTextDrawSetOutline(playerid,ReconPlayerText[playerid][x], 1); PlayerTextDrawSetProportional(playerid,ReconPlayerText[playerid][x], 1); PlayerTextDrawSetShadow(playerid,ReconPlayerText[playerid][x],0); } if(!GetPVarInt(playerid, "Spectate")) { GetPlayerPos(playerid, gPlayerPosition[playerid][0],gPlayerPosition[playerid][1],gPlayerPosition[playerid][2]); gPlayerInformation[playerid][0] = GetPlayerInterior(playerid); gPlayerInformation[playerid][1] = GetPlayerVirtualWorld(playerid); } TogglePlayerSpectating(playerid, true); SetPlayerInterior(playerid,GetPlayerInterior(params[0])); SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(params[0])); if(IsPlayerInAnyVehicle(params[0])) PlayerSpectateVehicle(playerid, VehicleEnters[params[0]]); else PlayerSpectatePlayer(playerid, params[0]); for(new x; x < 2; x ++) PlayerTextDrawShow(playerid, PlayerText:ReconPlayerText[playerid][x]); TextDrawShowForPlayer(playerid, ReconText); SetPVarInt(playerid, "Spectate", true); SetPVarInt(playerid, "SpectateID", params[0]); new AdminInfoss[128]; format(AdminInfoss,sizeof(AdminInfoss),"[A] %s [%i] начал следить за %s [%i]", PlayerInfo[playerid][pNames],playerid,PlayerInfo[params[0]][pNames],params[0]);//Тут тоже ошибка ABroadCast(COLOR_GREY,AdminInfoss,1); SendClientMessage(playerid, COLOR_SERVER, "Для того чтобы закочить слежку за игроком, нажмите клавишу "WHITE"''ПРОБЕЛ''"); SendClientMessage(playerid, COLOR_SERVER, "Чтобы переключаться между игроками, нажимайте клавиши "WHITE"NUM4 - назад | NUM6 - вперед"); SendClientMessage(playerid, COLOR_SERVER, "Чтобы перепоказать игрока нажмите клавишу "WHITE"''Y''"); return 1; }
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
Спойлер
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(470) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(474) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(586) : warning 224: indeterminate array size in «sizeof» expression (symbol «»)
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(591) : warning 224: indeterminate array size in «sizeof» expression (symbol «»)
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(594) : warning 224: indeterminate array size in «sizeof» expression (symbol «»)
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(642) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(647) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(648) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(681) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(683) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(686) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(691) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(692) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(694) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(746) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(747) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(750) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(754) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(756) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(757) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(790) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(792) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(795) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(800) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(801) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(803) : error 017: undefined symbol «MAX_PLAYERS»
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(872) : warning 224: indeterminate array size in «sizeof» expression (symbol «»)
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(877) : warning 224: indeterminate array size in «sizeof» expression (symbol «»)
C:UsersИлюхаDesktopsglpawnoincludeforeach.inc(880) : warning 224: indeterminate array size in «sizeof» expression (symbol «»)
C:UsersИлюхаDesktopsglgamemodesind.pwn(4276) : error 033: array must be indexed (variable «PlayerInfo»)
C:UsersИлюхаDesktopsglgamemodesind.pwn(4277) : error 033: array must be indexed (variable «pTemp»)
C:UsersИлюхаDesktopsglgamemodesind.pwn(4281) : warning 217: loose indentation
C:UsersИлюхаDesktopsglgamemodesind.pwn(4282) : warning 217: loose indentation
C:UsersИлюхаDesktopsglgamemodesind.pwn(4284) : error 033: array must be indexed (variable «PlayerInfo»)
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
Спойлер
public OnPlayerConnect(playerid)
{
if(ServerRestart[0])
{
SendClientMessage(playerid,0xffcc00ff,»Сейчас происходит рестарт сервера!»);
SendClientMessage(playerid,0xffcc00ff,»Пожалуйста, дождитесь его завершения»);
return KickEx(playerid);
}
SetSpawnInfo(playerid, 0, 0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
Players[RealOnline++]=playerid;
for(new pInfo:i; i < pInfo; i ++) PlayerInfo[playerid] = 0;//Ошибка
for(new tempInfo:i; i < tempInfo; i ++) pTemp[playerid] = 0;//Ошибка
PreloadAllAnims(playerid);
GetPlayerName(playerid, PlayerInfo[playerid][pNames], 24);
new AdminInfos[128];
format(AdminInfos,sizeof(AdminInfos),»[A] Игрок %s [%i] зашел на сервер», PlayerInfo[playerid][pNames],playerid);//Ошибка
tforeach(i)//Ошибка
{
if(PlayerInfo[bAdmin] >= 1 && GetPVarInt(i, «ConnectInfo»))//Ошибка
SCM(i, COLOR_GREY, AdminInfos);
}
GetPlayerIp(playerid,PlayerInfo[playerid][pIP],16);
LoadPlayerDraws(playerid);
Show_RaceTDLocal(playerid);
NewTextDrawsLoad(playerid);
PlayerInfo[playerid][pTime] = unix;
ObjectRemovedBuilding(playerid);
ClearAnimations(playerid);
SetPlayerDataToDefault(playerid);
RemoveBuildingForPlayer(playerid, 4625, 1453.6016, -989.4844, 34.4375, 0.25);
RemoveBuildingForPlayer(playerid, 4753, 1451.6172, -966.3828, 57.4453, 0.25);
RemoveBuildingForPlayer(playerid, 1261, 1495.3906, -945.6328, 48.8125, 0.25);
RemoveBuildingForPlayer(playerid, 1266, 1405.2969, -982.5313, 55.4766, 0.25);
RemoveBuildingForPlayer(playerid, 1266, 1475.6016, -990.9453, 55.6250, 0.25);
RemoveBuildingForPlayer(playerid, 1260, 1405.2969, -982.5313, 55.4766, 0.25);
RemoveBuildingForPlayer(playerid, 4734, 1451.6172, -966.3828, 57.4453, 0.25);
RemoveBuildingForPlayer(playerid, 4600, 1453.6016, -989.4844, 34.4375, 0.25);
RemoveBuildingForPlayer(playerid, 1260, 1475.6016, -990.9453, 55.6250, 0.25);
RemoveBuildingForPlayer(playerid, 1267, 1495.3906, -945.6328, 48.8125, 0.25);
return 1;
}
Там foreach все ошибки не стал скидавать, я думаю они не чем не помогут, но я его установил, если что то надо до кинуть напишите.
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
@FENRIS покажите список подключенных инклудов именно в моде
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
@stibs
#include a_samp
#include foreach
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
@FENRIS поставьте foreach самым последним, а лучше вообще, на строку 25 его поставьте.
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
@stibs Вы были правы, нужно было в самый них, остались такие ошибки:
Спойлер
(4276) : error 033: array must be indexed (variable «PlayerInfo»)
(4277) : error 033: array must be indexed (variable «pTemp»)
(4281) : warning 217: loose indentation
(4282) : warning 217: loose indentation
(4284) : error 033: array must be indexed (variable «PlayerInfo»)
(36712) : warning 217: loose indentation
(36714) : warning 217: loose indentation
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
3 Errors.
for(new pInfo:i; i < pInfo; i ++) PlayerInfo[playerid] = 0;
for(new tempInfo:i; i < tempInfo; i ++) pTemp[playerid] = 0;
Отредактировано 2 октября, 2017 пользователем FENRIS
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
@FENRIS PlayerInfo замените на свою переменную хранения, возможно у вас PI, Player или PLAYER_DATA.
Там где 217 варнинг выравнивайте код лесенкой, можно через программму табулятор, есть в файловом архиве.
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
@stibs Переменная у меня «PlayerInfo» все правильно но ошибка
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
@FENRIS строчки скиньте с ошибкой PlayerInfo и как объявлена PlayerInfo тоже покажите.
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
@stibs
Спойлер
public OnPlayerConnect(playerid)
{
if(ServerRestart[0])
{
SendClientMessage(playerid,0xffcc00ff,»Сейчас происходит рестарт сервера!»);
SendClientMessage(playerid,0xffcc00ff,»Пожалуйста, дождитесь его завершения»);
return KickEx(playerid);
}
SetSpawnInfo(playerid, 0, 0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
Players[RealOnline++]=playerid;
for(new pInfo:i; i < pInfo; i ++) PlayerInfo[playerid] = 0;//Ошибка
for(new tempInfo:i; i < tempInfo; i ++) pTemp[playerid] = 0;//Ошибка
PreloadAllAnims(playerid);
GetPlayerName(playerid, PlayerInfo[playerid][pNames], 24);
new AdminInfos[128];
format(AdminInfos,sizeof(AdminInfos),»[A] Игрок %s [%i] зашел на сервер», PlayerInfo[playerid][pNames],playerid);
tforeach(i)
{
if(PlayerInfo[bAdmin] >= 1 && GetPVarInt(i, «ConnectInfo»))
SCM(i, COLOR_GREY, AdminInfos);
}
GetPlayerIp(playerid,PlayerInfo[playerid][pIP],16);
LoadPlayerDraws(playerid);
Show_RaceTDLocal(playerid);
NewTextDrawsLoad(playerid);
PlayerInfo[playerid][pTime] = unix;
ObjectRemovedBuilding(playerid);
ClearAnimations(playerid);
SetPlayerDataToDefault(playerid);
RemoveBuildingForPlayer(playerid, 4625, 1453.6016, -989.4844, 34.4375, 0.25);
RemoveBuildingForPlayer(playerid, 4753, 1451.6172, -966.3828, 57.4453, 0.25);
RemoveBuildingForPlayer(playerid, 1261, 1495.3906, -945.6328, 48.8125, 0.25);
RemoveBuildingForPlayer(playerid, 1266, 1405.2969, -982.5313, 55.4766, 0.25);
RemoveBuildingForPlayer(playerid, 1266, 1475.6016, -990.9453, 55.6250, 0.25);
RemoveBuildingForPlayer(playerid, 1260, 1405.2969, -982.5313, 55.4766, 0.25);
RemoveBuildingForPlayer(playerid, 4734, 1451.6172, -966.3828, 57.4453, 0.25);
RemoveBuildingForPlayer(playerid, 4600, 1453.6016, -989.4844, 34.4375, 0.25);
RemoveBuildingForPlayer(playerid, 1260, 1475.6016, -990.9453, 55.6250, 0.25);
RemoveBuildingForPlayer(playerid, 1267, 1495.3906, -945.6328, 48.8125, 0.25);
return 1;
}
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
1 минуту назад, FENRIS сказал:
for(new pInfo:i; i < pInfo; i ++) PlayerInfo[playerid] = 0;//Ошибка
for(new tempInfo:i; i < tempInfo; i ++) pTemp[playerid] = 0;//Ошибка
В этих двух строках не хватает аргументов. Я не знаю что задумал здесь автор. Какая система-то хоть?
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
@stibs Систему я вырезал из другого мода, она позволяет блокировать администратору команды такие как /ban /kick /warn и т.д по списку в моде по команде /setcmd
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
@FENRIS если этих двух строк раньше не было в моде, удалите их.
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
@stibs Да как раз то они и были эти строки, и не было с ними ошибок до того как я не начал вырезать систему
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
@FENRIS сколько у вас new PlayerInfo в моде? Скиньте их
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
@stibs Всм сколько? Их там наверно много…
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
@FENRIS я имел ввиду new PlayerInfo скиньте все, которые есть new PlayerInfo.
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
- 0
@stibs
new PlayerInfo[MAX_PLAYERS][pInfo];
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты
Эта тема закрыта для публикации ответов.
-
Последние посетители
0 пользователей онлайн
Ни одного зарегистрированного пользователя не просматривает данную страницу
-
Похожий контент
-
От
good1luuck
Здравствуйте, есть ли система в интернете связанная с блокировкой прав по gpci? Ну тобишь, если меняется имя пользователя в винде (gpci vrode) и игрок заходит на сервер, ему к примеру не доступна команда /ban, ему нужно разблокировать права через определенную команду.
Если нет, то можете подсказать или кинуть готовое решение? Очень нужно) Спасибо.
-
Pawno-Info.Ru — Портал о программировании №1
Присоединяйтесь к нам сейчас, чтобы получить доступ ко всем нашим функциям и ответы на все интересующие Вас вопросы. После регистрации Вы сможете создавать темы, публиковать ответы, влиять на репутацию пользователей форума, обмениваться личными сообщениями и многое другое. Это быстро и совершенно бесплатно, так чего же Вы ждете?
Маппинг для сервера
Если вы хотите обновить Ваш сервер новыми доработками — то зайдите в наш раздел. Большой выбор готовых решений от наших пользователей
Моды для сервера
Огромный выбор различных модификаций для Вашего сервера. Пролистайте эти темы! Возможно именно там Вы найдете то, что искали уже давно.
Программы для скриптера
Подборка удобных программ для скриптера
-
Уважаемый Гость.
— Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
— После решения Вашего вопроса (проблемы) — нажмите «Лучший ответ», на сообщении, которое его решило. За игнорирование этого действия — Вы получите соответствующее предупреждение. Мы — стараемся Вам помочь. Уделите 10 секунд — чтобы нажать кнопку. (Если у Вас нет такой возможности — укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
ЗАПРЕЩЕНО:
— Cоздавать темы с названиями «Помогите», «Плиз», «Ошибка», «Не могу найти», «Хелп» и тому подобное;
— Cоздавать темы без детального описания того, что нужно исправить.
— Cоздавать темы из одного скриншота.
За игнор правил форума — Ваша тема будет удалена, а Вы получите системное предупреждение.
- Статус
- В этой теме нельзя размещать новые ответы.
- Регистрация
- 17 Янв 2012
- Сообщения
- 3,658
- Лучшие ответы
- 2
- Репутация
- 530
-
#1
Добрый день Уважаемые пользователи портала. Все, особенно начинающие «скриптеры» сталкиваются c error‘ми и warning‘ами. Ниже представленны все ошибки при компиляции с которыми вы можете столкнуться и что они обозначают.
ID ошибок
PHP:
error 001: expected token: "%s", but found "%s" - ожидался символ: "%s", но был найден "%s";
error 002: only a single statement (or expression) can follow each "case" - только одно заявление (или выражение) могут следовать за "case";
error 003: declaration of a local variable must appear in a compound block - объявленная локальная переменная должна использоваться в этом же блоке;
error 004: function "%s" is not implemented - функция %s не реализована;
error 005: function may not have arguments - функция не имеет аргументов;
error 006: must be assigned to an array - должен быть присвоен массив;
error 007: operator cannot be redefined - оператор не может быть установлен еще раз;
error 008: must be a constant expression; assumed zero - должно быть постоянным выражением; равным нулю;
error 009: invalid array size (negative or zero) - неверный размер массива (отрицательный или 0);
error 010: invalid function or declaration - неизвестная функция или декларация;
error 011: invalid outside functions - неверно вне функции;
error 012: invalid function call, not a valid address - неверный вызов функции, неверный адрес;
error 013: no entry point (no public functions) - нет точки входа (не public функция);
error 014: invalid statement; not in switch - неверный оператор; не в switch;
error 015: "default" case must be the last case in switch statement - "default" должен быть последним условием в switch;
error 016: multiple defaults in "switch" - несколько "default" в switch;
error 017: undefined symbol "%s" - неизвестный символ "%s";
error 018: initialization data exceeds declared size - данные массива превышают его размер;
error 019: not a label: %s" - не метка "%s";
error 020: invalid symbol name "%s" - неверное имя символа "%s";
error 021: symbol already defined: %s" - символ уже объявлен: "%s";
error 022: must be lvalue (non-constant) - должно быть левосторонним (нет постоянной);
error 023: array assignment must be simple assignment - назначение массива должно быть простым;
error 024: "break" or "continue" is out of context - "break" или "continue" вне контекста;
error 025: function heading differs from prototype - функция заголовка отличается от прототипа;
error 026: no matching "#if..." - не найдено "#if...";
error 027: invalid character constant - недопустимый символ в постоянной;
error 028: invalid subscript (not an array or too many subscripts): "%s" - неверный индекс (это не массив или слишком много индексов): "%s";
error 029: invalid expression, assumed zero - неверное выражение, нет результата;
error 030: compound statement not closed at the end of file - составной оператор не закрыт в конце файла;
error 031: unknown directive - неизвестная директива;
error 032: array index out of bounds (variable "%s") - индекс массива превышен;
error 033: array must be indexed (variable "%s") - массив должен быть проиндексирован;
error 034: argument does not have a default value (argument %d) - аргумент не имеет начального значения (аргумент %d);
error 035: argument type mismatch (argument %d) - несоответствие типа аргумента (аргумент %d);
error 036: empty statement - пустой оператор;
error 037: invalid string (possibly non-terminated string) - неправильная строка;
error 038: extra characters on line - лишние символы в строке;
error 039: constant symbol has no size - символьная константа не имеет размера;
error 040: duplicate "case" label (value %d) - несколько раз объявлен "case" с одним тем же параметром;
error 041: invalid ellipsis, array size is not known - размер массива неизвестен;
error 042: invalid combination of class specifiers - недопустимое сочетание класса;
error 043: character constant exceeds range for packed string - символьная константа превышает размер строки;
error 044: positional parameters must precede all named parameters - позиционные параметры должны предшествовать всем именованным параметрам;
error 045: too many function arguments - слишком много аргументов у функции;
error 046: unknown array size (variable "%s") - неизвестный размер массива;
error 047: array sizes do not match, or destination array is too small - размеры массива конфликтуют, либо целевой массив слишком маленький;
error 048: array dimensions do not match - размеры массива не совпадают;
error 049: invalid line continuation - неправильное продолжение строки;
error 050: invalid range - неверный диапазон;
error 051: invalid subscript, use "[ ]" operators on major dimensions - неправильный индекс, используйте "[]";
error 052: multi-dimensional arrays must be fully initialized - много-размерные массивы должны быть полностью определены;
error 053: exceeding maximum number of dimensions - превышение максимального числа измерений;
error 054: unmatched closing brace - не найдена закрывающаяся скобка;
error 055: start of function body without function header - начало функции без заголовка;
error 056: arrays, local variables and function arguments cannot be public (variable "%s") - массивы, локальные переменные и аргументы функции не могут быть общедоступными;
error 057: unfinished expression before compiler directive - незавершенное выражение для компилятора;
error 058: duplicate argument; same argument is passed twice - дублирование аргумента; Аргумент передается несколько раз;
error 059: function argument may not have a default value (variable "%s") - аргумент не может иметь значение по-умолчанию;
error 060: multiple "#else" directives between "#if ... #endif" - Несколько "#else" между "#if ... #endif" - несколько "#else" между "#if и #endif";
error 061: "#elseif" directive follows an "#else" directive - "#else" перед "#elseif";
error 062: number of operands does not fit the operator - количество операндов не соответствует оператору;
error 063: function result tag of operator "%s" must be "%s" - Результат функции %s должен быть %s;
error 064: cannot change predefined operators - невозможно изменить уже определенные операторы;
error 065: function argument may only have a single tag (argument %d) - в этой функции может быть только один аргумент;
error 066: function argument may not be a reference argument or an array (argument "%s") - аргумент функции не может быть ссылкой или массивом;
error 067: variable cannot be both a reference and an array (variable "%s") - Переменная не может быть как массив или ссылка;
error 068: invalid rational number precision in #pragma - неверное число в #pragma;
error 069: rational number format already defined - формат рационального числа уже определен;
error 070: rational number support was not enabled - рациональное число не поддерживается;
error 071: user-defined operator must be declared before use (function "%s") - объявленный оператор должен быть перед использованием;
error 072: "sizeof" operator is invalid on "function" symbols - оператор "sizeof" не может быть использован для символов функции;
error 073: function argument must be an array (argument "%s") - аргумент %s должен быть массивом;
error 074: #define %s must start with an alphabetic character - #define должен начинаться с буквы;
error 075: input line too long (after substitutions - введенная строка слишком длинная;
error 076: syntax *error in the expression, or invalid function call - неправильный синтаксис или неправильный вызов функции;
error 077: malformed UTF-8 encoding, or corrupted file: %s - плохая кодировка UTF-8 или плохой файл: %s;
error 078: function uses both "return" and "return <value>" - функция использует "return" и "return <значение>";
error 079: inconsistent return types (array & non-array) - несовместимость типов возвращенных результатов;
error 080: unknown symbol, or not a constant symbol (symbol "%s") - неизвестный или непостоянный символ: %s;
error 081: cannot take a tag as a default value for an indexed array parameter (symbol "%s") - не может принимать тег в качестве значения по умолчанию для параметра индексированного массива;
error 082: user-defined operators and native functions may not have states - созданные функции или операторы не имеют состояния;
error 083: a function may only belong to a single automaton (symbol "%s") - функция может принадлежать только к одной автоматизации;
error 084: state conflict: one of the states is already assigned to another implementation (symbol "%s") - конфликт состояния: одно из состояний уже назначено на другую реализацию;
error 085: no states are defined for function "%s" - нет состояний, определенных для функции "%s";
error 086: unknown automaton "%s" - неизвестная автоматизация "%s";
error 087: unknown state "%s" for automaton "%s" - неизвестное состояние "%s" в автоматизации "%s";
error 088: number of arguments does not match definition - количество аргументов не совпадает с объявленными в функции;
PHP:
fatal error 100: cannot read from file: "%s" - невозможно прочитать из файла "%s";
fatal error 107: too many error messages on one line - слишком много сообщений об ошибке в одной строке;
PHP:
warning 200: symbol "%s" is truncated to 31 characters - название переменной "%s" обрезано до 31 символа;
warning 201: redefinition of constant/macro (symbol "%s") - повторно установлена постоянная/макро (переменная "%s");
warning 202: number of arguments does not match definition - несовпадение количества аргументов;
warning 203: symbol is never used: "%s" - переменная никогда не использовалась: "%s";
warning 204: symbol is assigned a value that is never used: "%s" - переменной установлено значение которое никогда не использовалось: "%s".
warning 208: function with tag result used before definition, forcing reparse - функция с результатом тега используется перед определением, заставляя повторный анализ
warning 209: function "%s" should return a value - функция "%s" ничего не возвращает;
warning 211: possibly unintended assignment - в условии использовано не сравнение, а присвоение;
warning 213: tag mismatch - несоответствие аргументов;
warning 215: expression has no effect - выражение не имеет смысла;
warning 216: nested comment - вложенный комментарий (вынесите его за функцию);
warning 217: loose indentation - не выровненная строка;
warning 219: local variable "%s" shadows a variable at a preceding level - локальная переменная "%s" встречается на предыдущем уровне;
warning 224: indeterminate array size in "sizeof" expression (symbol "%s") - неопределенный размер массива в "sizeof" выражении (переменная "%s");
warning 225: unreachable code - невыполнимый код;
warning 227: more initiallers than enum fields - больше инициализаторов, чем полей перечисления;
warning 235: public function lacks forward declaration (symbol "%s") - у public функции отсутствует forward (символ "%s");
Так же: Добавлю ссылку на Wiki: >> Кликабельно <<
Последнее редактирование модератором: 25 Июн 2022
- Статус
- В этой теме нельзя размещать новые ответы.
Список часто встречаемых ошибок в pawno
Данная тема содержет наиболее распространенные ошибки и предупреждения в pawno при создании скриптов sa-mp
Когда компилятор находит ошибку в файле, то выводится сообщение, в таком порядке:
- Имя файла
- номер строки компилятора были обнаружены ошибки в скобках, непосредственно за именем
- класс error (ошибка, фатальная ошибка или предупреждение)
- номер ошибки
- описание ошибки
Например:
hello.pwn(3) : error 001: expected token: ";", but found "{"
Примечание: эта ошибка может быть на линии, над линией, что показано, так как компилятор не всегда может установить ошибку перед проанализировав полное выражение.
Категории ошибок
Ошибки разделяются на три класса:
Ошибки (errors)
- Описание ситуации когда компилятор не может скомпилировать код
- Ошибки номеруются от 1 до 99
Критические ошибки (Fatal errors)
- Критические ошибки и описание, от которых компилятор не может восстановиться.
- Парсинг прерывается (нет отклика программы).
- Критические ошибки номеруются от 100 до 199.
Предупреждения ( Warings )
- Предупреждения указывают на возможную причину возникновения багов, вылетов.
- Предупреждения номеруются от 200 до 299.
Распространенные ошибки
001: expected token (ожидаемый знак)
Обязательный знак отсутствует
Пример:
error 001: expected token: ";", but found "return" main() { print("test") // тут должна быть точка с запятой ";" return 1; }
002: only a single statement (or expression) can follow each “case” (только одно выражение может быть в одной строке с «case»
В каждом case оператора switch без фигурных скобок может содержаться только один оператор если больше нужно ставить скобки.
Пример:
error 002: only a single statement (or expression) can follow each "case"
main() { switch(x) { case 0: print("hello"); print("hello"); } return 1; }
Так же могут быть еще и предупреждения и дополнительные ошибки:
error 002: only a single statement (or expression) can follow each "case" warning 215: expression has no effect error 010: invalid function or declaration
Вот так это можно исправить:
main() { switch(x) { case 0: { print("hello"); print("hello"); } } return 1; }
004: function «x» is not implemented (Функция «x» не используется
Часто бывает что в функции выше пропущена скобка.
025: function heading differs from prototype
Это проиходит когда в функции не совпадают аргументы.
К примеру:
forward MyFunction(playerid); public MyFunction(player, vehicleid);
Исправляем:
forward MyFunction(playerid, vehicleid); public MyFunction(playerid, vehicleid);
035: argument type mismatch (argument x) (не совпадение типов аргумента(ов)
К примеру когда в место playerid — integer аргумента стоит «playerid» — string или 0.5 — float
Пример:
error 035: argument type mismatch (argument 1)
Kick("playerid"); // Как видите в место целого числа (integer) стоит строка
Исправляем:
Kick(playerid);
046: unknown array size (variable x)
Не указан размер массива.
Пример:
new string[]; string = "pawno";
Исправляем:
new string[6]; string = "pawno";
047: array sizes do not match, or destination array is too small
Размер массива мал или не совпадает.
- Многомерные массивы должны иметь одинаковый размер
- Одномерные массив к которому присваивают(правый должен иметь больше размер чем левый.
new destination[8]; new msg[] = "Hello World!"; destination = msg;
В приведенном выше коде размер строки «Hello world!» ровна 12 байт а массив к которому присваиваем имеет размер 8 байт из этого и складывается ошибка.
Если увеличить размер массива destination до 13 байт то ошибка исправится.
new destination[13]; new msg[] = "Hello World!"; destination = msg;
055: start of function body without function header
Начало тела функции без функции заголовка.
Критические ошибки (FATAL ERRORS)
100: cannot read from file: "<file>"
Компилятор не может найти или прочитать указанный файл, убедитесь что он находится по адресу (<папка с сервером>pawnoinclude).
Пример:
#include <a_sam>
Исправляем:
#include <a_samp>
Совет
Не нужно открывать ваш код дважды, не нужно тыкать несколько раз на файл. Откройте сначала редактор, потом ваш проект.
Предупреждения( Warnings )
202: number of arguments does not match definition
Описание ошибки довольно понятное, это значит что вы используете слишком мало или слишком много аргументов в функции, обычно это признак того что функция используется не правильно, обратитесь к документации.
Функция GetPlayerHealth согласно официальному источнику wiki.sa-mp.com имеет два аргумента playerid и Float:health ссылка
Пример:
GetPlayerHealth(playerid);
Исправляем:
new Float:health; GetPlayerHealth(playerid, health);
203: symbol is never used: «symbol»
Вы создали переменную или функцию и она ни где не используется тогда ищите в окне компилятора это предупреждение, это не как не влияет на код и не угражает ему, так что если вы удалите переменную или функцию которая не используется, то вы сэкономите память.
Пример:
stock SomeFunction() { // Blah }
204: symbol is assigned a value that is never used: «symbol»
Это предупреждение аналогично к предыдущему, разница в том что к переменной что то присвоено и оно не как не используется, это безопасно
209: function should return a value
Функция ничего не возвращает, вы создали её:
SomeFunction() { // Blah }
Решили её присвоить к чему нибудь к примеру:
new result = SomeFunction(); // ожидает 1
Вот так исправить
SomeFunction() { // Blah return 1; }
211: possibly unintended assignment
Если вы введете оператор присваивания в условии и оно не будет в круглых скобках то будет предупреждение
if(vehicle = GetPlayerVehicleID(playerid)) // ошибка if(vehicle == GetPlayerVehicleID(playerid)) // все норм if((vehicle = GetPlayerVehicleID(playerid))) // все норм, так значение функции присвоится к переменной потом выражение вычесляется { то есть это как if(IsPlayerConnected(playerid)}
213: tag mismatch ( несовпадение тегов)
Это происходит когда:
- Тип переменной указан не верно или не имеет его
- Выражения по обе стороны бинарного оператора имеют разные теги
- В пременную возвращен не верный тип переменной или не имеющий его.
- Индексирование массива, который требует тегами индекс без тега или неправильное имя тега
Часто это бывает на 3d текстах или тексдравах Text3D, Text
Не правильно:
new health; GetPlayerHealth(playerid, health);
Правильно:
new Float:health; GetPlayerHealth(playerid, health);
217: loose indentation
Компилятор выдаст ошибку если не соблюдены отступы.
Правильно:
if(condition) { action(); result(); }
Не правильно:
if(condition) { action(); result(); }
Отступы делаются по нажатью кнопки TAB это практика в программировании для удобного чтения кода.
219: local variable «foo» shadows a variable at a preceding level
Локальная переменная в тени глобальной то есть над локальной переменной создана точно такая же глобальная. В практике программирования префиксом глобальной переменной является «g» в начале переменной к примеру
new gPlayerMoney
любыми способами избегайте их.
К примеру:
new team[MAX_PLAYERS]; // объявляем глобальную переменную function(playerid) { new team[MAX_PLAYERS]; // создаем еще одну, и получаем статью 219 кодекса ошибок :D team[playerid] = random(5); }
Решение:
Просто переименуйте локальную переменную team.
225: unreachable code ( недоступный код )
Это происходит тогда когда вы пишите какой нибудь код после return, после return’а код не выполняется и он считается бесполезным
Пример:
#include <zcmd.inc>
CMD:jetpack(playerid, params[]) { #pragma unused params if(IsPlayerAdmin(playerid)) { SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USEJETPACK); return 1; // завершаем процесс } else { SendClientMessage(playerid, -1, "Вы не администратор"); return 1; // завершаем процесс } SendClientMessage(playerid, -1, "Вы ввели команду /jp"); // Этот код не доступен он не будет выполнятся. }
Решение:
CMD:jetpack(playerid, params[]) { #pragma unused params if(IsPlayerAdmin(playerid)) { SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USEJETPACK); } else { SendClientMessage(playerid, -1, "Вы не администратор"); } SendClientMessage(playerid, -1, "Вы ввели команду /jp"); // этот код запустится return 1; // завершаем процесс }
235: public function lacks forward declaration (symbol «symbol»)
Отсутствует forward.
Не правильно:
public MyFunction() { }
Правильно:
forward MyFunction(); public MyFunction() { }
Надеюсь эта статья поможет вам в языке программирования, желаю вам не повторять ошибок дважды и что бы ваш код был быстрым, надежным!
Оставляйте ваши отзывы, ставьте плюсы, пишите недостатки ошибки, недостатки статьи или их недочеты. Удачи в мире PAWNO!
Содержание
- Добро пожаловать!
- Решено При компиляции ошибка 029
- Ruman
- Форум Pawn.Wiki — Воплоти мечту в реальность!: Error 029 — — Форум Pawn.Wiki — Воплоти мечту в реальность!
- Форум Pawn.Wiki — Воплоти мечту в реальность!: Error 001 , 003 , 029 , 076 — Форум Pawn.Wiki — Воплоти мечту в реальность!
- Pawno error 029 что это
- Маппинг для сервера
- Моды для сервера
- Программы для скриптера
- EnfreyGodScripter
- Статистика форума
- Форум Pawn.Wiki — Воплоти мечту в реальность!: error 029 invalid expression assumed zero pawno — Форум Pawn.Wiki — Воплоти мечту в реальность!
Добро пожаловать!
Зарегистрировавшись у нас, вы сможете обсуждать, делиться и отправлять личные сообщения другим участникам нашего сообщества.
Решено При компиляции ошибка 029
Ruman
Новичок
И так, я сейчас только вот не давно как то раз начал заниматься созданием мода для SA:MP. Пока что пишу систему регистрации, только после диалогов уже планирую писать записывание данных в базу. Остановился на написании диалога Email но в один момент когда я хочу компиляцию сделать, пишет вот это:
C:UsersRumanDesktopTime RPgamemodesproject.pwn(337) : error 029: invalid expression, assumed zero
Code:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
<
switch(dialogid)
<
case DLG_REG:
<
if(response)
<
if(!strlen(inputtext))
<
ShowRegistration(playerid);
return SCM(playerid, COLOR_RED, «[Îøèáêà] Ââåäèòå ïàðîëü â ïîëå íèæå.»);
>
if(strlen(inputtext) 32)
<
ShowRegistration(playerid);
return SCM(playerid, COLOR_RED, «[Îøèáêà] Ïàðîëü äîëæåí áûòü îò 8-ìè äî 32-óõ ñèìâîëîâ»);
>
new regex:rg_passwordcheck = regex_new(«^[a-zA-Z0-9]<1,>$»);
if(regex_check(inputtext, rg_passwordcheck))
<
strmid(player_info[playerid][PASSWORD], inputtext, 0, strlen(inputtext), 32);
SPD(playerid, DLG_REGMAIL, DIALOG_STYLE_INPUT, «Ðåãèñòðàöèÿ > <00ffff>Email»,
«Ââåäèòå âàø íàñòîÿùèé Email àäðåñn
 ñëó÷àè åñëè âû ïîòåðÿåòå äîñòóï ê àêêàóíòó òî âû ñìîæåòå âîññòàíîâèòü åãî ÷åðåç Emailn
Ââåäèòå åãî â ïîëå íèæå è íàæìèòå »Äàëåå»»,
«Äàëåå», «»);
>
else
<
ShowRegistration(playerid);
return SCM(playerid, COLOR_RED, «[Îøèáêà] Ïàðîëü äîëæåí ñîñòîÿòü èç ëàòèíñêèõ ñèìâîëîâ è ÷èñåë»);
>
regex_delete(rg_passwordcheck);
>
else
<
SCM(playerid, COLOR_WHITE, «Èñïîëüçóéòå êîìàíäó /q ÷òîáû âûéòè èç GTA. Îòêðûòü ÷àò: êëàâèøà T»);
SPD(playerid, -1, 0, » «, » «, » «, «»);
return Kick(playerid);
>
>
case DLG_REGMAIL:
<
if(!strlen(inputtext))
SPD(playerid, DLG_REGMAIL, DIALOG_STYLE_INPUT, «Ðåãèñòðàöèÿ > <00ffff>Email»,
«Ââåäèòå âàø íàñòîÿùèé Email àäðåñn
 ñëó÷àè åñëè âû ïîòåðÿåòå äîñòóï ê àêêàóíòó òî âû ñìîæåòå âîññòàíîâèòü ÷åðåç Emailn
Ââåäèòå åãî â ïîëå íèæå è íàæìèòå »Äàëåå»»,
«Äàëåå», «»);
return SCM(playerid, COLOR_RED, «[Îøèáêà] Ââåäèòå Email â ïîëå íèæå.»);
new regex:rg_emailcheck = regex_new(«^[a-zA-Z0-9.-_]<1,43>@[a-zA-Z]<1,12>.[a-zA-Z]<1,8>$»);
if(regex_check(inputtext, rg_emailcheck))
> // ЖАЛУЕТСЯ НА ЭТУ СТРОКУ 337
>
>
return 1;
>
Источник
Форум Pawn.Wiki — Воплоти мечту в реальность!: Error 029 — — Форум Pawn.Wiki — Воплоти мечту в реальность!
- Pawn скриптинг
- Первая помощь
- Проблемы с компилированием
- Правила форума
- Просмотр новых публикаций
- Группа: Пользователи
- Сообщений: 3
- Регистрация: 10 июля 17
Ошибка 029, хелп
Ошибка появилась как только я случайно задел букву «D» в названии DOSTON, когда вернул ее — появилась ошибка.
Не знаю почему
- Группа: Пользователи
- Сообщений: 6
- Регистрация: 10 июля 17
Сообщение отредактировал Zell: 10 июля 2017 — 17:27
- Группа: Пользователи
- Сообщений: 3
- Регистрация: 10 июля 17
Zell (10 июля 2017 — 17:26) писал:
Zell (10 июля 2017 — 17:26) писал:
Там написано 4 строчка, может это из-за нее?
Источник
Форум Pawn.Wiki — Воплоти мечту в реальность!: Error 001 , 003 , 029 , 076 — Форум Pawn.Wiki — Воплоти мечту в реальность!
- Pawn скриптинг
- Первая помощь
- Проблемы с компилированием
- Правила форума
- Просмотр новых публикаций
- Группа: Пользователи
- Сообщений: 15
- Регистрация: 12 января 13
Я не со всем нубло в Pawno , но по стравнению с вами мастерами)) . Все уже перепробывал , ничего не могу(
- Группа: Активные пользователи
- Сообщений: 134
- Регистрация: 14 января 13
Ты написал одной строкой?
если да то делай так,
.
Ну если же тебе хочется в одну строку то.
Источник
Pawno error 029 что это
Быстрый переход в группу «Пользователи», без надобности написания постов и ожидания.
Покупка дает возможность:
Маппинг для сервера
Если вы хотите обновить Ваш сервер новыми доработками — то зайдите в наш раздел. Большой выбор готовых решений от наших пользователей
Моды для сервера
Огромный выбор различных модификаций для Вашего сервера. Пролистайте эти темы! Возможно именно там Вы найдете то, что искали уже давно.
Программы для скриптера
Подборка удобных программ для скриптера
EnfreyGodScripter
Здарсте. Проблема. Я взял мод,значит что-бы поменять маппинг надо было зайти в library и т.д. Дам маппинг автовокзала написан так
А я когда сохранил мап в МТА. Ведь я делал его там он написан так —
и так далее. И там только одна CreateVehicle. В начале!
компелирую мод — пишит это —
Статистика форума
Created by Giness
Уважаемый Гость.
Пожалуйста — воздержитесь от любых комментариев на форуме относительно ситуации в мире.
В личных сообщениях, в темах и где бы то не было.
Помните — это закончится в любом случае, а слова, сказанные (или написанные) Вами — не забудутся никогда.
МЫ ЗА МИР.
(Любые сообщения относительно ситуации в мире(не важно с каким смыслом) буду удаляться. А пользователи — блокироваться безвозвратно. )
Источник
Форум Pawn.Wiki — Воплоти мечту в реальность!: error 029 invalid expression assumed zero pawno — Форум Pawn.Wiki — Воплоти мечту в реальность!
- Pawn скриптинг
- Первая помощь
- Проблемы с компилированием
- Правила форума
- Просмотр новых публикаций
- Группа: Пользователи
- Сообщений: 2
- Регистрация: 08 июля 17
Этих ошибок несколько. Помогите исправить их с командой /tpcor на dc_cmd
C:Users. DownloadsDrift servergamemodesgrandlarc.pwn(791) : error 029: invalid expression, assumed zero
C:Users. DownloadsDrift servergamemodesgrandlarc.pwn(791) : error 017: undefined symbol «cmd_tpcor»
C:Users. DownloadsDrift servergamemodesgrandlarc.pwn(791) : error 029: invalid expression, assumed zero
C:Users. DownloadsDrift servergamemodesgrandlarc.pwn(791) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase
4 Errors.
Вот сама команда.
CMD:tpcor(playerid,params[])
<
new Float:x,Float:z,Float:y;
if(sscanf(params,»fff»,x,y,z)) return SendClientMessage(playerid,-1,»• [Совет] Используйте /tpcor [x] [y] [z]»);
J_SetPlayerPos(playerid,Float:x,Float:y,Float:z);
return 1;
>
Источник