Sourcepawn error 017

Error 017 Undefined symbol "Client_InfoPanel" + others Scripting
Author

Message

Member

Old

03-30-2019

, 17:07

 

Error 017 Undefined symbol «Client_InfoPanel» + others

Reply With Quote

#1


Getting back into coding for SP and am confused by this error, in my mind there should be no error here because these do not need to be defined. This was an old sp, so it might be a simple thing that sourcemod updated and it requires a different method for this now. I’m kinda stuck on it and am looking for some info on how to fix. Any more info can be provided, and it’s my first post so sorry for not providing enough information.

Code:

	RegConsoleCmd("sm_showkeys", Client_InfoPanel, "on/off speed/showkeys center panel");
	RegConsoleCmd("sm_speed", Client_InfoPanel, "on/off speed/showkeys center panel");
	RegConsoleCmd("sm_sync", Client_StrafeSync,"on/off strafe sync in chat");
	RegConsoleCmd("sm_stats", Client_Stats,"on/off strafe sync in chat");
	RegConsoleCmd("sm_sound", Client_QuakeSounds,"on/off quake sounds");
	RegConsoleCmd("sm_ljblock", Client_Ljblock,"registers a lj block");
	RegConsoleCmd("sm_colorchat", Client_Colorchat, "on/off jumpstats messages of others in chat");
	RegConsoleCmd("sm_jumptop", Client_Top, "jump top");		
	RegAdminCmd("sm_resetallstats", Admin_DropPlayerJump, ADMIN_LEVEL, "[JS] Resets jump stats - requires z flag");	
	RegAdminCmd("sm_resetallljrecords", Admin_ResetAllLjRecords, ADMIN_LEVEL, "[JS] Resets all lj records - requires z flag");
	RegAdminCmd("sm_resetallljblockrecords", Admin_ResetAllLjBlockRecords, ADMIN_LEVEL, "[JS] Resets all lj block records - requires z flag");
	RegAdminCmd("sm_resetallwjrecords", Admin_ResetAllWjRecords, ADMIN_LEVEL, "[JS] Resets all wj records - requires z flag");
	RegAdminCmd("sm_resetallbhoprecords", Admin_ResetAllBhopRecords, ADMIN_LEVEL, "[JS] Resets all bhop records - requires z flag");
	RegAdminCmd("sm_resetalldropbhopecords", Admin_ResetAllDropBhopRecords, ADMIN_LEVEL, "[JS] Resets all drop bjop records - requires z flag");
	RegAdminCmd("sm_resetallmultibhoprecords", Admin_ResetAllMultiBhopRecords, ADMIN_LEVEL, "[JS] Resets all multi bhop records - requires z flag");
	RegAdminCmd("sm_resetljrecord", Admin_ResetLjRecords, ADMIN_LEVEL, "[JS] Resets lj record for given steamid - requires z flag");
	RegAdminCmd("sm_resetljblockrecord", Admin_ResetLjBlockRecords, ADMIN_LEVEL, "[JS] Resets lj block record for given steamid - requires z flag");
	RegAdminCmd("sm_resetbhoprecord", Admin_ResetBhopRecords, ADMIN_LEVEL, "[JS] Resets bhop record for given steamid - requires z flag");	
	RegAdminCmd("sm_resetdropbhoprecord", Admin_ResetDropBhopRecords, ADMIN_LEVEL, "[JS] Resets drop bhop record for given steamid - requires z flag");
	RegAdminCmd("sm_resetwjrecord", Admin_ResetWjRecords, ADMIN_LEVEL, "[JS] Resets wj record for given steamid - requires z flag");	
	RegAdminCmd("sm_resetmultibhoprecord", Admin_ResetMultiBhopRecords, ADMIN_LEVEL, "[JS] Resets multi bhop record for given steamid - requires z flag");
	RegAdminCmd("sm_resetplayer", Admin_ResetPlayerJumpstats, BASIC_ADMIN_LEVEL, "[JS] Resets jump stats for given steamid - requires z flag");

Errors I get are —

Code:

C:UsershiiamuAppDataLocalTempamuJS.sp(348) : error 017: undefined symbol "Client_InfoPanel"
C:UsershiiamuAppDataLocalTempamuJS.sp(349) : error 017: undefined symbol "Client_InfoPanel"
C:UsershiiamuAppDataLocalTempamuJS.sp(350) : error 017: undefined symbol "Client_StrafeSync"
C:UsershiiamuAppDataLocalTempamuJS.sp(351) : error 017: undefined symbol "Client_Stats"
C:UsershiiamuAppDataLocalTempamuJS.sp(352) : error 017: undefined symbol "Client_QuakeSounds"
C:UsershiiamuAppDataLocalTempamuJS.sp(353) : error 017: undefined symbol "Client_Ljblock"
C:UsershiiamuAppDataLocalTempamuJS.sp(354) : error 017: undefined symbol "Client_Colorchat"
C:UsershiiamuAppDataLocalTempamuJS.sp(355) : error 017: undefined symbol "Client_Top"
C:UsershiiamuAppDataLocalTempamuJS.sp(356) : error 017: undefined symbol "Admin_DropPlayerJump"
C:UsershiiamuAppDataLocalTempamuJS.sp(357) : error 017: undefined symbol "Admin_ResetAllLjRecords"
C:UsershiiamuAppDataLocalTempamuJS.sp(358) : error 017: undefined symbol "Admin_ResetAllLjBlockRecords"
C:UsershiiamuAppDataLocalTempamuJS.sp(359) : error 017: undefined symbol "Admin_ResetAllWjRecords"
C:UsershiiamuAppDataLocalTempamuJS.sp(360) : error 017: undefined symbol "Admin_ResetAllBhopRecords"
C:UsershiiamuAppDataLocalTempamuJS.sp(361) : error 017: undefined symbol "Admin_ResetAllDropBhopRecords"
C:UsershiiamuAppDataLocalTempamuJS.sp(362) : error 017: undefined symbol "Admin_ResetAllMultiBhopRecords"
C:UsershiiamuAppDataLocalTempamuJS.sp(363) : error 017: undefined symbol "Admin_ResetLjRecords"
C:UsershiiamuAppDataLocalTempamuJS.sp(364) : error 017: undefined symbol "Admin_ResetLjBlockRecords"
C:UsershiiamuAppDataLocalTempamuJS.sp(365) : error 017: undefined symbol "Admin_ResetBhopRecords"
C:UsershiiamuAppDataLocalTempamuJS.sp(366) : error 017: undefined symbol "Admin_ResetDropBhopRecords"
C:UsershiiamuAppDataLocalTempamuJS.sp(367) : error 017: undefined symbol "Admin_ResetWjRecords"
C:UsershiiamuAppDataLocalTempamuJS.sp(368) : error 017: undefined symbol "Admin_ResetMultiBhopRecords"
C:UsershiiamuAppDataLocalTempamuJS.sp(369) : error 017: undefined symbol "Admin_ResetPlayerJumpstats"

hiiamu is offline

  • Команда форума
  • #1

[SourcePawn] Урок 2Установка и компиляция плагинов

<- К содержанию

  • Установка плагинов:

    Типы файлов:

    • .smx— Сам плагин после компилирования (нужен для работы).
      Расположение: addons/sourcemod/plugins/
    • .sp — Файл с исходным кодом (исходник нужен для компиляции, не нужен для работы).
      Расположение: addons/sourcemod/scripting/
    • .phrases.txt — Файл перевода (нужен для работы).
      Расположение: addons/sourcemod/translations/
    • .inc — Файл, в котором хранятся функции плагина (нужен для компиляции, не нужен для работы).
      Расположение: addons/sourcemod/scripting/include/
    • .cfg — Файл конфигурации плагина (нужен для работы).
      Расположение зависит от плагина. Часто генерируется по пути cfg/sourcemod/
    • .txt — Может быть использован как конфиг или как языковой файл (нужен для работы).
      Расположение зависит от плагина.
    • .ini — Конфигурационный файл (нужен для работы).
      Расположение зависит от плагина.

    Для установки плагина нужно разложить все файлы плагина по папкам указанным выше.

    Чтобы проверить работу плагина:

    Запускаем сервер, заходим в его консоль и пишем sm plugins list . В консоли появиться список работающих плагинов:

    upload_2016-9-5_17-40-35.png

    Проверяем есть ли в списке установленный Вами плагин, если он там есть, значит Вы сделали все правильно.

    • Команды SourceMod для работы с плагинами:
      sm plugins команда
      Команды:

      • info — Information about a plugin/Показывает информацию о плагине
      • list — Show loaded plugins/Выводит список установленных плагинов
      • load — Load a plugin/Загружает указанный плагин
      • load_lock — Prevents any more plugins from being loaded/Блокирует загрузку плагинов
      • load_unlock — Re-enables plugin loading/Снимает блокировку загрузки плагинов
      • refresh — Reloads/refreshes all plugins in the plugins folder/Обновляет/перезагружает загруженные плагины
      • reload — Reloads a plugin/Перезагружает указанный плагин
      • unload — Unload a plugin/Выгружает указанный плагин
      • unload_all — Unloads all plugins/Выгружает все плагины
  • Компиляция плагинов:

    Для редактирования исходников плагинов рекомендую использовать редактор Notepad++ (кликабельно)

    • Если у вас код не в файле .sp, а например, с форума то:
      • Создайте новый файл с расширением .sp
      • Откройте его с помощь notepad++ (см. выше)
      • Установите для него кодировку UTF-8 без BOM

        upload_2016-9-5_20-1-13.png

      • Скопируйте в него нужный код
      • Сохраните изменения
      • Произведите компиляцию (см. ниже)
    • Компиляция на Windows

      Скачайте SourceMod и распакуйте файлы из архива (в частности папку addons/sourcemod/scripting/ со всем её содержимым) в любое место, например, на рабочий стол. Будем называть её «папкой компилятора«. Из всего её содержимого необходимы только 2 файла: compile.exe, spcomp.exe и папка include.
      Затем положите в папку компилятора исходники вашего плагина (файлы с расширением *.sp и если есть файлы *.inc в папку include/).
      Отредактируйте исходник как вам нужно и затем

      перетащите главный файл .sp на сompile.exe — вы увидите черное окно с отчетом о компиляции.
      Если все в порядке и ошибок нет закройте это окно и можете забирать *.smx файл из папки compiled/.

      upload_2016-9-5_17-47-18.png

      Если у вас возникли ошибки при компиляции — необходимо их исправить.

    • Компиляция на Linux

      Чтобы скомпилировать плагин в unix системах:

      1. Откройте терминал (консоль)
      2. Перейдите в директорию /addons/sourcemod/scripting/ с помощью команды cd
      3. Скопируйте файл содержащий исходный код плагина (имеет расширение *.sp) в эту директорию командой cp
      4. Для компиляции некоторых плагинов нужны *.inc файлы которые нужно копировать в папку addons/sourcemod/scripting/include и затем компилировать плагин
      5. Выполните команду:
        ./compile.sh имя_плагина.sp

        Плагин должен скомпилироваться.

    Внимание! Нет разницы на какой OC компилировать плагины. Если ваш сервер работает на Linux, то плагины скомпилированные на Windows там так же будут работать.

    Если при компиляции возникли ошибки вам сюда -> Ошибки и предупреждения при компиляции

    Часть информации взята здесь.

Последнее редактирование: 21 Июл 2017

  • Команда форума
  • #2

Возможные ошибки при компиляции

Для начала разберём разницу между ошибкой (error) и предупреждением (warning).

  • Предупреждение — то, что может выдать Вам компилятор в случае «некритичной ошибки» (По мнению компилятора) допущенной в исходном коде плагина. Такая ошибка не будет влиять на работу плагина (Под сомнением), но лучше писать так, чтобы компилятор не ругался.
  • Ошибка — ситуация, в которой компилятор «откажет» Вам в компилировании плагина, т.е. он не будет компилировать Ваш плагин, пока Вы не устраните ошибку в исходном коде.

Обычно, когда компилятор предупреждает или выдаёт ошибку, он указывает строку в которой допущена ошибка (или в которой компилятор «

сомневается

«)

Коды ошибок

  • 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») — не могу принять тег в качестве значения по умолчанию для индексированного параметра-массива (символ «% 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») — Кофликт state(функция созданий структур):одна из state уже создана в другом месте(символ %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 — количество аргументов не совпадает с объявленными в функции;

Коды «Фатальных ошибок»

  • fatal error 100: cannot read from file: «%s» — невозможно прочитать из файла «%s»;
  • fatal error 107: too many error messages on one line — слишком много сообщений об ошибке в одной строке;

Коды предупреждений

  • 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 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 234: symbol «%s» is marked as deprecated: Do not use this function — Функция не рекомендуется к использованию;;
  • warning 235: public function lacks forward declaration (symbol «%s») — у public функции отсутствует forward (символ «%s»);

Последнее редактирование: 6 Сен 2016

  • #3

Обычно, когда компилятор предупреждает или выдаёт ошибку, он указывает строку в которой допущена ошибка (или в которой компилятор «сомневается»)

Я бы пример добавил:
Например если ошибка на 37 строке:
/home/home/GIT/addons/sourcemod/scripting/my_plugin.sp(37) : error 017: undefined symbol «EventHookM»

+ ещё стоит написать что если даже при компиляции не возникло ошибок и предупреждений, то нужно проверить /addons/sourcemod/logs/errors<сегодняшнее число>.log после того как плагин немного поработает.

  • #4

Возможные ошибки при компиляции

Для начала разберём разницу между ошибкой (error) и предупреждением (warning).

  • Предупреждение — то, что может выдать Вам компилятор в случае «некритичной ошибки» (По мнению компилятора) допущенной в исходном коде плагина. Такая ошибка не будет влиять на работу плагина (Под сомнением), но лучше писать так, чтобы компилятор не ругался.
    Ошибка — ситуация, в которой компилятор «откажет» Вам в компилировании плагина, т.е. он не будет компилировать Ваш плагин, пока Вы не устраните ошибку в исходном коде.

Обычно, когда компилятор предупреждает или выдаёт ошибку, он указывает строку в которой допущена ошибка (или в которой компилятор «

сомневается

«)

Коды ошибок

  • 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») — не могу принять тег в качестве значения по умолчанию для индексированного параметра-массива (символ «% 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») — Кофликт state(функция созданий структур):одна из state уже создана в другом месте(символ %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 — количество аргументов не совпадает с объявленными в функции;

Коды «Фатальных ошибок»

  • fatal error 100: cannot read from file: «%s» — невозможно прочитать из файла «%s»;
    fatal error 107: too many error messages on one line — слишком много сообщений об ошибке в одной строке;

Коды предупреждений

  • 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 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 234: symbol «%s» is marked as deprecated: Do not use this function — Функция не рекомендуется к использованию;;
    warning 235: public function lacks forward declaration (symbol «%s») — у public функции отсутствует forward (символ «%s»);

Мой пост :D

  • Команда форума
  • #5

Я нашел в базе своего старого форума, решил что будет полезно

  • #6

Я нашел в базе своего старого форума, решил что будет полезно

Я знаю, поэтому и улыбнуло)

  • Команда форума
  • #7

@Антон Облаков, spcomp.exe так же обязан лежать в папке с компилятором.

  • #9

Ещё было бы прекрасней, по пару примеров исправления ошибок и предупреждений =).
Оффтоп

  • Команда форума
  • #10

@alexmy, разве перевода не достаточно? Как по мне — вполне.

  • Команда форума
  • #11

Ещё было бы прекрасней, по пару примеров исправления ошибок и предупреждений =).

Что именно интересует? Могу написать.

  • #12

пару примеров исправления ошибок и предупреждений

Можно создать основную тему по исправлению

error/warning

, по мере наполнения базы вопросов/ответов, рядом с ‘Кодом №’ — сделать отсылки на примерное решение.

В самой теме перед реквестом, обязательное прочтение (‘Кодом №’) на уже готовые более-менее решения.

  • #13

Смысл такой, есть вообщем старые плагины и синтаксис там соответственно древний :D. А при компиляции под новым синтаксисом, соответственно ошибок куча. Меня интересует сама «корректировка» под новый синтаксис. Вот плагин [L4D(2)] MultiSlots — AlliedModders куча ошибок, меня интересует сами части исправления. В интернете нечего подобного нету попадает хлам всякий и не более.

  • Команда форума
  • #14

@alexmy, оно даже под 1.7 не компилится.
upload_2017-3-3_18-56-10.png

  • #15

@alexmy, оно даже под 1.7 не компилится.
Посмотреть вложение 21768

И такого хлама все больше и больше будет с обновлением SM :D. Вот хотелось бы хотя бы простые примеры с исправление. не обязательно с этим плагином.

  • Команда форума
  • #16

@alexmy, тут проблема вовсе не в СМ.
Ошибка 017 (она же «Undefined symbol») сигнализирует о том, что есть вызов функции или применение переменной, которая не существует.

  • #17

@alexmy, тут проблема вовсе не в СМ.
Ошибка 017 (она же «Undefined symbol») сигнализирует о том, что есть вызов функции или применение переменной, которая не существует.

Ну вот я пробовал компилятором 1.5.3 почему то не выдает не одной ошибки и не предупреждение. Вот ошибка с плагина по ссылке

error 017: undefined symbol "SpawnFakeClientAndTeleport"

Вот это часть:
Оффтоп
тут её не должно быть… по сути или я что то не понимаю или компилятор в другой части когда находит это ошибку и бьет по всем SpawnFakeClientAndTeleport

  • #18

старые плагины и синтаксис там соответственно древний :D. А при компиляции под новым синтаксисом, соответственно ошибок куча. Меня интересует сама «корректировка» под новый синтаксис.

Ошибки ввида ‘error 147: new-style declarations are required’ при ‘#pragma newdecls required’ лучше преобрести отдельную тему ‘new-style SourcePawn Transitional Syntax’ , например если @R1KO согласится, то за основу содержания ‘Темы Сообщения’ — перевода на новый синтаксис, можно взять Ядро плагина — [VIP] Core (либо другой, где присутствует множество функций) — [Shop] Core, Ядро плагина — [Shop] Core (Fork).

Что имеем:
#a. некоторый разбор перевода new-style.
#b. перевод большого выбранного ядра.
#c. возможное нахождение трудно замечаемых ошибок/недочетов.
#d. отсутствующие примеры функций будут позже в комментариях.

Если с выходом нового sm — старый синтаксис будет обратно

не совместим

, то к этому времени у большенства будет имется некий опыт, для перевода

не

обновляемых

нужных

плагинов, на актуальный sm.

Чем больше придерживаются к актуальному, прежде всего стабильному sm — тем ошибки идентичные, которые легче найти/отписать решение, либо иначе самому написать в BugReport т.к. ситуация позволяет.

P.S.:
для (v34) старее sm_1.7- есть обновляемая тема [CS:S v34] SourceMod 1.6.x/1.7.x/1.8.x.

Если создавать эти темы, то лучше именно обладателю ядра @R1KO, @FrozDark, …, т.к. может быть будет не приятно, если будут иные «ковырять» код.
И если согласятся, то думаю другие тоже подключаться.

Или просто написать гайд по переводу Ru:Introduction to SourcePawn 1.7, SourcePawn Transitional Syntax и простеньких «побольше» примеров.

Последнее редактирование: 3 Мар 2017

  • Команда форума
  • #19

@DarklSide, у меня уже есть отдельная версия, которую я буду переводить. можно на её примере

  • #20

@R1KO, тогда могу присоединится, т.к. большенство действий является «однотипное» для большого кол-ва кода.
При этом

пометить

места, которые могут войти в содержание темы.


#1

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

Отправлено 03 июля 2017 — 17:44

  • Прохожий

При компиляции ошибка:

1) error 017: undefined symbol "SetViewModel"
2) error 017: undefined symbol "SetWorldModel"

Строки:

1) SetViewModel(weaponIndex, ZP_GetClientViewModel(clientIndex), iViewModel);
2) SetWorldModel(weaponIndex, iWorldModel);

Сообщение отредактировал San1xon: 03 июля 2017 — 17:44

0


#2

Отправлено 12 июля 2017 — 18:57

  • Новичок

Не поняла код. Что должны делать данные функции? Может так пойму…

0


#3

Отправлено 13 июля 2017 — 12:48

  • Worst
1) error 017: undefined symbol "SetViewModel"
2) error 017: undefined symbol "SetWorldModel"

undefined symbol — символ не найден, тоесть у тебя скорее всего просто напросто нету функций в моде.
Что делать если не знаешь значение error’ов (клик)

Сообщение отредактировал Skiffi: 13 июля 2017 — 12:51

0

#1

Отправлено 28 Апрель 2020 — 18:49

Доброе времени суток!

Можете помочь с ошибками плагина 

Прикрепленные файлы

  • Прикрепленный файл
     Hell.sp   23,13К
      20 Количество загрузок:

Сообщение отредактировал Lider99: 28 Апрель 2020 — 18:49

  • Наверх

#2


DenMarko

DenMarko

    Новичок

  • Пользователь
  • Pip

  • 35 сообщений

Отправлено 28 Апрель 2020 — 22:07

Доброе времени суток!

Можете помочь с ошибками плагина 

а ето что за квар SetConVarBounds(FindConVar(«survival_max_specials»), ConVarBound_Upper, true, 32.0); его нет в базе

и еще можна зделать так

new Handle:max_player_z = INVALID_HANDLE;

if((max_player_z = FindConVar(«z_max_player_zombies»)) != INVALID_HANDLE)

SetConVarBounds(max_player_z, ConVarBound_Upper, true, 32.0);

new Handle:z_minion = INVALID_HANDLE;

if((z_minion = FindConVar(«z_minion_limit»)) != INVALID_HANDLE)

SetConVarBounds(z_minion, ConVarBound_Upper, true, 32.0);

new Handle:surv_lim = INVALID_HANDLE;

if((surv_lim = FindConVar(«survivor_limit»)) != INVALID_HANDLE)

SetConVarBounds(surv_lim, ConVarBound_Upper, true, 32.0);

new Handle:surv_max_spec = INVALID_HANDLE;

if((surv_max_spec = FindConVar(«survival_max_specials»)) != INVALID_HANDLE)

SetConVarBounds(surv_max_spec, ConVarBound_Upper, true, 32.0);

Сообщение отредактировал DenMarko: 28 Апрель 2020 — 22:17

  • Lider99 это нравится
  • Наверх

#3


Lider99

Отправлено 28 Апрель 2020 — 22:32

а ето что за квар SetConVarBounds(FindConVar(«survival_max_specials»), ConVarBound_Upper, true, 32.0); его нет в базе

и еще можна зделать так

new Handle:max_player_z = INVALID_HANDLE;

if((max_player_z = FindConVar(«z_max_player_zombies»)) != INVALID_HANDLE)

SetConVarBounds(max_player_z, ConVarBound_Upper, true, 32.0);

new Handle:z_minion = INVALID_HANDLE;

if((z_minion = FindConVar(«z_minion_limit»)) != INVALID_HANDLE)

SetConVarBounds(z_minion, ConVarBound_Upper, true, 32.0);

new Handle:surv_lim = INVALID_HANDLE;

if((surv_lim = FindConVar(«survivor_limit»)) != INVALID_HANDLE)

SetConVarBounds(surv_lim, ConVarBound_Upper, true, 32.0);

new Handle:surv_max_spec = INVALID_HANDLE;

if((surv_max_spec = FindConVar(«survival_max_specials»)) != INVALID_HANDLE)

SetConVarBounds(surv_max_spec, ConVarBound_Upper, true, 32.0);

Как вы заметили плагин предназначен для L4D2.
я не могу настроит это для L4D1 

  • Наверх

#4


Lider99

Отправлено 09 Май 2020 — 5:20

Объясните пожалуйста в чем ошибка плагина ?
как это исправить ?

  • Наверх

#5


dragokas

Отправлено 10 Май 2020 — 20:34

Не найден (не создан) квар, на который ссылается переменная в 276 строке.

  • Наверх

#6


Lider99

Отправлено 10 Май 2020 — 20:43

Не найден (не создан) квар, на который ссылается переменная в 276 строке.

а как его создать?
есть инструкции ? ;)

  • Наверх

#7


dragokas

Отправлено 10 Май 2020 — 20:50

Если не можешь самостоятельно проследить, куда ссылается переменная, то зачем тебе это знать.

Скинь исходник и за тебя всё исправят.

  • Lider99 это нравится
  • Наверх

#8


Lider99

Отправлено 10 Май 2020 — 22:17

Если не можешь самостоятельно проследить, куда ссылается переменная, то зачем тебе это знать.

Скинь исходник и за тебя всё исправят.

Хороший вопрос .

научится же стоит , я же не буду каждый раз к вам обращаться .

если есть инструкции буду благороден) 
 

  • Наверх

#9


dragokas

Отправлено 10 Май 2020 — 22:59

Скопировать название переменной, и Ctrl + F поиск в обратном направлении =)

Инcтрукцию к Notepad++ надеюсь прикладывать не придётся? :)

В найденной строке, вдумчиво смотреть и анализировать, скорее всего там просто квар стоит которого нет в L4d1, если я правильно понял то, что ты делаешь.

  • Lider99 это нравится
  • Наверх

#10


Lider99

Отправлено 10 Май 2020 — 23:58

Скопировать название переменной, и Ctrl + F поиск в обратном направлении =)

Инcтрукцию к Notepad++ надеюсь прикладывать не придётся? :)

ахаха , нет ,Блокнотам умею пользоваться :D

Спасибо  :lol:

И кст исходник есть на первом посте 

Сообщение отредактировал Lider99: 10 Май 2020 — 23:59

  • Наверх

#11


Pringles

Отправлено 11 Май 2020 — 22:25

Добрый вечер. Другой плагин — но тема под стать. Можно ли исправить эти ошибки?

Сообщение отредактировал Pringles: 11 Май 2020 — 22:26

  • Наверх

#12


Lider99

Отправлено 11 Май 2020 — 23:53

Добрый вечер. Другой плагин — но тема под стать. Можно ли исправить эти ошибки?

у тебя 3 ошибки в одном строке , 2 из них так я понял что то неправильно написано или пропущено .
ну это мои догадки  :D 
может другие помогут  

  • Наверх

#13


BloodyBlade

Отправлено 12 Май 2020 — 0:04

Добрый вечер. Другой плагин — но тема под стать. Можно ли исправить эти ошибки?

А исходник то, собственно, где?

  • Наверх

#14


Pringles

Отправлено 12 Май 2020 — 17:06

А исходник то, собственно, где?

Слона то я и не заметил  :D  Сор забыл

Вот обычный baseban только без лишних функции — привык к нему, хотя и не часто пользуюсь.

|0>

Сообщение отредактировал Pringles: 12 Май 2020 — 17:08

  • Наверх

#15


DenMarko

DenMarko

    Новичок

  • Пользователь
  • Pip

  • 35 сообщений

Отправлено 12 Май 2020 — 20:52

Слона то я и не заметил  :D  Сор забыл

Вот обычный baseban только без лишних функции — привык к нему, хотя и не часто пользуюсь.

|0>

Ето только часть плагинв baseban ищи остальное, а в ошибке идется что не найден символ «g_BanTargetUserId» его обявляли в другой части кода

  • Pringles это нравится
  • Наверх

#16


Pringles

Отправлено 13 Май 2020 — 17:21

Ето только часть плагинв baseban ищи остальное, а в ошибке идется что не найден символ «g_BanTargetUserId» его обявляли в другой части кода

Странно, но раньше мне удавалось его компилировать. Наверно потому то SM обновился… Спасибо.

  • Наверх

#17


Lider99

Отправлено 14 Май 2020 — 23:33

Здравствуйте,
пожалуйста помогите решит проблему  

так я узнал что проблема связен с чатом , но как это решить ??

Сообщение отредактировал Lider99: 14 Май 2020 — 23:32

  • Наверх

#18


AlexMy

Отправлено 15 Май 2020 — 6:09

Здравствуйте,
пожалуйста помогите решит проблему  

так я узнал что проблема связен с чатом , но как это решить ??

  • Lider99 это нравится
  • Наверх

#19


Lider99

Отправлено 15 Май 2020 — 8:38

Здравствуйте,
пожалуйста помогите решит проблему  

так я узнал что проблема связен с чатом , но как это решить ??

Эм спасибо AlexMy.
можешь объяснить как ты это сделал , ну если не лень конечно )

Сообщение отредактировал Lider99: 15 Май 2020 — 8:39

  • Наверх

#20


Lider99

Отправлено 15 Май 2020 — 12:50

Здравствуйте,
пожалуйста помогите решит проблему  

так я узнал что проблема связен с чатом , но как это решить ??

Оххх как закалебало меня это 

  • Наверх

Maps Menu error 017: undefined symbol «MAX_PLAYERS»

Модераторы: Subb98, liFe iS GoOD

  • Список форумов AMX Mod X Скриптинг

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела «Болтовня».
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

  • Ответить с цитатой

Maps Menu error 017: undefined symbol «MAX_PLAYERS»

Ошибка 017 max_players в 19,23,24,100 строчках

Код: Выделить всё
// vim: set ts=4 sw=4 tw=99 noet:
//
// AMX Mod X, based on AMX Mod by Aleksander Naszko ("OLO").
// Copyright (C) The AMX Mod X Development Team.
//
// This software is licensed under the GNU General Public License, version 3 or higher.
// Additional exceptions apply. For full license details, see LICENSE.txt or visit:
//     https://alliedmods.net/amxmodx-license

//
// Maps Menu Plugin
//

#include <amxmisc>
#include <cstrike>

new Array:g_mapName;
new 
g_mapNums
new g_menuPosition[MAX_PLAYERS 1]

new 

g_voteCount[5]

new 

g_voteSelected[MAX_PLAYERS 1][4]
new 
g_voteSelectedNum[MAX_PLAYERS 1]

new 

g_coloredMenusnew g_choosedpublic plugin_init()
{
    
register_plugin("Maps Menu"AMXX_VERSION_STR"AMXX Dev Team")
    
register_dictionary("mapsmenu.txt")
    
register_dictionary("common.txt")
    
register_clcmd("amx_mapmenu""cmdMapsMenu"ADMIN_MAP"- displays changelevel menu")
    
register_clcmd("amx_votemapmenu""cmdVoteMapMenu"ADMIN_VOTE"- displays votemap menu")register_menucmd(register_menuid("Changelevel Menu"), 1023"actionMapsMenu")
    
register_menucmd(register_menuid("Which map do you want?"), 527"voteCount")
    
register_menucmd(register_menuid("Change map to"), 527"voteCount")
    
register_menucmd(register_menuid("Votemap Menu"), 1023"actionVoteMapMenu")
    
register_menucmd(register_menuid("The winner: "), 3"actionResult")g_mapName=ArrayCreate(32);

        new 

maps_ini_file[64];
    
get_configsdir(maps_ini_filecharsmax(maps_ini_file));
    
format(maps_ini_filecharsmax(maps_ini_file), "%s/maps.ini"maps_ini_file);

    if (!

file_exists(maps_ini_file))
        
get_cvar_string("mapcyclefile"maps_ini_filecharsmax(maps_ini_file));

            if (!

file_exists(maps_ini_file))
        
format(maps_ini_filecharsmax(maps_ini_file), "mapcycle.txt")load_settings(maps_ini_file)g_coloredMenus colored_menus()
}

public 

autoRefuse()
{
    
log_amx("Vote: %L""en""RESULT_REF")
    
client_print(0print_chat"%L"LANG_PLAYER"RESULT_REF")
}

public 

actionResult(idkey)
{
    
remove_task(4545454)

        switch (

key)
    {
        case 
0:
        {
            new 
_modName[10]
            
get_modname(_modNamecharsmax(_modName))

                        if (!

equal(_modName"zp"))
            {
                
message_begin(MSG_ALLSVC_INTERMISSION)
                
message_end()
            }

            new 

tempMap[32];
            
ArrayGetString(g_mapNameg_choosedtempMapcharsmax(tempMap));set_task(2.0"delayedChange"0tempMapstrlen(tempMap) + 1)
            
log_amx("Vote: %L""en""RESULT_ACC")
            
client_print(0print_chat"%L"LANG_PLAYER"RESULT_ACC")
        }
        case 
1autoRefuse()
    }

        return 

PLUGIN_HANDLED
}

public 

checkVotes(id)
{
    
id -= 34567
    
new numppl[MAX_PLAYERS], 0

        get_players

(pplnum"c")
    if (
num == 0num 1
    g_choosed 
= -1for (new 0g_voteSelectedNum[id]; ++i)
        if (
g_voteCount[a] < g_voteCount[i])
            
inew votesNum g_voteCount[0] + g_voteCount[1] + g_voteCount[2] + g_voteCount[3] + g_voteCount[4]
    new 
iRatio votesNum floatround(get_cvar_float("amx_votemap_ratio") * float(votesNum), floatround_ceil) : 1
    
new iResult g_voteCount[a]

    if (

iResult >= iRatio)
    {
        
g_choosed g_voteSelected[id][a]
        new 
tempMap[32];
        
ArrayGetString(g_mapNameg_choosedtempMapcharsmax(tempMap));
        
client_print(0print_chat"%L %s"LANG_PLAYER"VOTE_SUCCESS"tempMap);
        
log_amx("Vote: %L %s""en""VOTE_SUCCESS"tempMap);
    }

        if (

g_choosed != -1)
    {
        if (
is_user_connected(id))
        {
            new 
menuBody[512]
            new 
tempMap[32];
            
ArrayGetString(g_mapNameg_choosedtempMapcharsmax(tempMap));
            new 
len format(menuBodycharsmax(menuBody), g_coloredMenus "y%L: w%s^n^n" "%L: %s^n^n"id"THE_WINNER"tempMap)len += format(menuBody[len], charsmax(menuBody) - leng_coloredMenus "y%L^nw" "%L^n"id"WANT_CONT")
            
format(menuBody[len], charsmax(menuBody) - len"^n1. %L^n2. %L"id"YES"id"NO")show_menu(id0x03menuBody10"The winner: ")
            
set_task(10.0"autoRefuse"4545454)
        } else {
            new 
_modName[10]
            
get_modname(_modNamecharsmax(_modName))

                        if (!

equal(_modName"zp"))
            {
                
message_begin(MSG_ALLSVC_INTERMISSION)
                
message_end()
            }
            new 
tempMap[32];
            
ArrayGetString(g_mapNameg_choosedtempMapcharsmax(tempMap));
            
set_task(2.0"delayedChange"0tempMapstrlen(tempMap) + 1)
        }
    } else {
        
client_print(0print_chat"%L"LANG_PLAYER"VOTE_FAILED")
        
log_amx("Vote: %L""en""VOTE_FAILED")
    }
remove_task(34567 id)
}

public 

voteCount(idkey)
{
    if (
key 3)
    {
        
client_print(0print_chat"%L"LANG_PLAYER"VOT_CANC")
        
remove_task(34567 id)
        
set_cvar_float("amx_last_voting"get_gametime())
        
log_amx("Vote: Cancel vote session")

                return 

PLUGIN_HANDLED
    
}

        if (

get_cvar_float("amx_vote_answers"))
    {
        new 
name[MAX_NAME_LENGTH]get_user_name(idnamecharsmax(name))
        
client_print(0print_chat"%L"LANG_PLAYER"X_VOTED_FOR"namekey 1)
    }

        ++

g_voteCount[key]

        return 

PLUGIN_HANDLED
}isMapSelected(idpos)
{
    for (new 
0g_voteSelectedNum[id]; ++a)
        if (
g_voteSelected[id][a] == pos)
            return 
1
    
return 0
}displayVoteMapsMenu(idpos)
{
    if (
pos 0)
        return

    new 

menuBody[512], 0start pos 7if (start >= g_mapNums)
        
start pos g_menuPosition[id] = 0new len format(menuBodycharsmax(menuBody), g_coloredMenus "y%LR%d/%d^nw^n" "%L %d/%d^n^n"id"VOTEMAP_MENU"pos 1, (g_mapNums + ((g_mapNums 7) ? 0)))
    new 
end start 7keys MENU_KEY_0if (end g_mapNums)
        
end g_mapNumsnew tempMap[32];
    for (new 
startend; ++a)
    {
        
ArrayGetString(g_mapNameatempMapcharsmax(tempMap));
        if (
g_voteSelectedNum[id] == || isMapSelected(idpos b))
        {
            ++
b
            
if (g_coloredMenus)
                
len += format(menuBody[len], charsmax(menuBody) - len"d%d. %s^nw"btempMap)
            else
                
len += format(menuBody[len], charsmax(menuBody) - len"#. %s^n"tempMap)
        } else {
            
keys |= (1<<b)
            
len += format(menuBody[len], charsmax(menuBody) - len"%d. %s^n", ++btempMap)
        }
    }

    if (

g_voteSelectedNum[id])
    {
        
keys |= MENU_KEY_8
        len 
+= format(menuBody[len], charsmax(menuBody) - len"^n8. %L^n"id"START_VOT")
    }
    else
        
len += format(menuBody[len], charsmax(menuBody) - leng_coloredMenus "^nd8. %L^nw" "^n#. %L^n"id"START_VOT")

    if (

end != g_mapNums)
    {
        
len += format(menuBody[len], charsmax(menuBody) - len"^n9. %L...^n0. %L^n"id"MORE"idpos "BACK" "EXIT")
        
keys |= MENU_KEY_9
    
}
    else
        
len += format(menuBody[len], charsmax(menuBody) - len"^n0. %L^n"idpos "BACK" "EXIT")

    if (

g_voteSelectedNum[id])
        
len += format(menuBody[len], charsmax(menuBody) - leng_coloredMenus "^ny%L:^nw" "^n%L:^n"id"SEL_MAPS")
    else
        
len += format(menuBody[len], charsmax(menuBody) - len"^n^n")

    for (new 

04c++)
    {
        if (
g_voteSelectedNum[id])
        {
            
ArrayGetString(g_mapNameg_voteSelected[id][c], tempMapcharsmax(tempMap));
            
len += format(menuBody[len], charsmax(menuBody) - len"%s^n"tempMap)
        }
        else
            
len += format(menuBody[len], charsmax(menuBody) - len"^n")
    }

    new 

menuName[64]
    
format(menuNamecharsmax(menuName), "%L""en""VOTEMAP_MENU")show_menu(idkeysmenuBody, -1menuName)
}

public 

cmdVoteMapMenu(idlevelcid)
{
    if (!
cmd_access(idlevelcid1))
        return 
PLUGIN_HANDLEDif (get_cvar_float("amx_last_voting") > get_gametime())
    {
        
client_print(idprint_chat"%L"id"ALREADY_VOT")
        return 
PLUGIN_HANDLED
    
}g_voteSelectedNum[id] = 0if (g_mapNums)
    {
        
displayVoteMapsMenu(idg_menuPosition[id] = 0)
    } else {
        
console_print(id"%L"id"NO_MAPS_MENU")
        
client_print(idprint_chat"%L"id"NO_MAPS_MENU")
    }

    return 

PLUGIN_HANDLED
}

public 

cmdMapsMenu(idlevelcid)
{
    if (!
cmd_access(idlevelcid1))
        return 
PLUGIN_HANDLEDif (g_mapNums)
    {
        
displayMapsMenu(idg_menuPosition[id] = 0)
    } else {
        
console_print(id"%L"id"NO_MAPS_MENU")
        
client_print(idprint_chat"%L"id"NO_MAPS_MENU")
    }

    return 

PLUGIN_HANDLED
}

public 

delayedChange(mapname[])
{
    
engine_changelevel(mapname)
}

public 

actionVoteMapMenu(idkey)
{
    new 
tempMap[32];
    switch (
key)
    {
        case 
7:
        {
            new 
Float:voting get_cvar_float("amx_last_voting")

                    if (

voting get_gametime())
            {
                
client_print(idprint_chat"%L"id"ALREADY_VOT")
                return 
PLUGIN_HANDLED
            
}

            if (

voting && voting get_cvar_float("amx_vote_delay") > get_gametime())
            {
                
client_print(idprint_chat"%L"id"VOT_NOW_ALLOW")
                return 
PLUGIN_HANDLED
            
}g_voteCount = {00000}

                        new 

Float:vote_time get_cvar_float("amx_vote_time") + 2.0
            set_cvar_float
("amx_last_voting"get_gametime() + vote_time)
            new 
iVoteTime floatround(vote_time)set_task(vote_time"checkVotes"34567 id)

            new 

menuBody[512]
            new 
players[MAX_PLAYERS]
            new 
pnumkeyslen

            get_players

(playerspnum)

            if (

g_voteSelectedNum[id] > 1)
            {
                
len format(menuBodycharsmax(menuBody), g_coloredMenus "y%L^nw^n" "%L^n^n"id"WHICH_MAP")

                                for (new 

0g_voteSelectedNum[id]; ++c)
                {
                    
ArrayGetString(g_mapNameg_voteSelected[id][c], tempMapcharsmax(tempMap));
                    
len += format(menuBody[len], charsmax(menuBody) - len"%d. %s^n"1tempMap)
                    
keys |= (1<<c)
                }
keys |= (1<<8)
                
len += format(menuBody[len], charsmax(menuBody) - len"^n9. %L^n"id"NONE")
            } else {
                
ArrayGetString(g_mapNameg_voteSelected[id][0], tempMapcharsmax(tempMap));
                
len format(menuBodycharsmax(menuBody), g_coloredMenus "y%L^n%s?^nw^n1. %L^n2. %L^n" "%L^n%s?^n^n1. %L^n2. %L^n"id"CHANGE_MAP_TO"tempMapid"YES"id"NO")
                
keys MENU_KEY_1|MENU_KEY_2
            
}

            new 

menuName[64]
            
format(menuNamecharsmax(menuName), "%L""en""WHICH_MAP")

            for (new 

0pnum; ++b)
                if (
players[b] != id)
                    
show_menu(players[b], keysmenuBodyiVoteTimemenuName)format(menuBody[len], charsmax(menuBody), "^n0. %L"id"CANC_VOTE")
            
keys |= MENU_KEY_0
            show_menu
(idkeysmenuBodyiVoteTimemenuName)

            new 

authid[32], name[MAX_NAME_LENGTH]get_user_authid(idauthidcharsmax(authid))
            
get_user_name(idnamecharsmax(name))show_activity_key("ADMIN_V_MAP_1""ADMIN_V_MAP_2"name);

            new 

tempMapA[32];
            new 
tempMapB[32];
            new 
tempMapC[32];
            new 
tempMapD[32];
            if (
g_voteSelectedNum[id] > 0)
            {
                
ArrayGetString(g_mapNameg_voteSelected[id][0], tempMapAcharsmax(tempMapA));
            }
            else
            {
                
copy(tempMapAcharsmax(tempMapA), "");
            }
            if (
g_voteSelectedNum[id] > 1)
            {
                
ArrayGetString(g_mapNameg_voteSelected[id][1], tempMapBcharsmax(tempMapB));
            }
            else
            {
                
copy(tempMapBcharsmax(tempMapB), "");
            }
            if (
g_voteSelectedNum[id] > 2)
            {
                
ArrayGetString(g_mapNameg_voteSelected[id][2], tempMapCcharsmax(tempMapC));
            }
            else
            {
                
copy(tempMapCcharsmax(tempMapC), "");
            }
            if (
g_voteSelectedNum[id] > 3)
            {
                
ArrayGetString(g_mapNameg_voteSelected[id][3], tempMapDcharsmax(tempMapD));
            }
            else
            {
                
copy(tempMapDcharsmax(tempMapD), "");
            }
log_amx("Vote: ^"%s<%d><%s><>^" vote maps (map#1 ^"%s^") (map#2 ^"%s^") (map#3 ^"%s^") (map#4 ^"%s^")"
                    
nameget_user_userid(id), authid
                    
tempMapAtempMapBtempMapCtempMapD)
        }
        case 
8displayVoteMapsMenu(id, ++g_menuPosition[id])
        case 
9displayVoteMapsMenu(id, --g_menuPosition[id])
        default:
        {
            
g_voteSelected[id][g_voteSelectedNum[id]++] = g_menuPosition[id] * key
            displayVoteMapsMenu
(idg_menuPosition[id])
        }
    }

    return 

PLUGIN_HANDLED
}

public 

actionMapsMenu(idkey)
{
    switch (
key)
    {
        case 
8displayMapsMenu(id, ++g_menuPosition[id])
        case 
9displayMapsMenu(id, --g_menuPosition[id])
        default:
        {
            new 
g_menuPosition[id] * key
            
new _modName[10]get_modname(_modNamecharsmax(_modName))
            if (!
equal(_modName"zp"))
            {
                
message_begin(MSG_ALLSVC_INTERMISSION)
                
message_end()
            }

                        new 

authid[32], name[MAX_NAME_LENGTH]get_user_authid(idauthidcharsmax(authid))
            
get_user_name(idnamecharsmax(name))

            new 

tempMap[32];
            
ArrayGetString(g_mapNameatempMapcharsmax(tempMap));show_activity_key("ADMIN_CHANGEL_1""ADMIN_CHANGEL_2"nametempMap);log_amx("Cmd: ^"%s<%d><%s><>^" changelevel ^"%s^""nameget_user_userid(id), authidtempMap)
            
set_task(2.0"delayedChange"0tempMapstrlen(tempMap) + 1)
            
/* displayMapsMenu(id, g_menuPosition[id]) */
        
}
    }

        return 

PLUGIN_HANDLED
}displayMapsMenu(idpos)
{
    if (
pos 0)
        return

    new 

menuBody[512]
    new 
tempMap[32]
    new 
start pos 8
    
new 0if (start >= g_mapNums)
        
start pos g_menuPosition[id] = 0new len format(menuBodycharsmax(menuBody), g_coloredMenus "y%LR%d/%d^nw^n" "%L %d/%d^n^n"id"CHANGLE_MENU"pos 1, (g_mapNums + ((g_mapNums 8) ? 0)))
    new 
end start 8
    
new keys MENU_KEY_0if (end g_mapNums)
        
end g_mapNumsfor (new startend; ++a)
    {
        
keys |= (1<<b)
        
ArrayGetString(g_mapNameatempMapcharsmax(tempMap));
        
len += format(menuBody[len], charsmax(menuBody) - len"%d. %s^n", ++btempMap)
    }

    if (

end != g_mapNums)
    {
        
format(menuBody[len], charsmax(menuBody) - len"^n9. %L...^n0. %L"id"MORE"idpos "BACK" "EXIT")
        
keys |= MENU_KEY_9
    
}
    else
        
format(menuBody[len], charsmax(menuBody) - len"^n0. %L"idpos "BACK" "EXIT")

    new 

menuName[64]
    
format(menuName63"%L""en""CHANGLE_MENU")show_menu(idkeysmenuBody, -1menuName)
}
stock bool:ValidMap(mapname[])
{
    if ( 
is_map_valid(mapname) )
    {
        return 
true;
    }
    
// If the is_map_valid check failed, check the end of the string
    
new len strlen(mapname) - 4;// The mapname was too short to possibly house the .bsp extension
    
if (len 0)
    {
        return 
false;
    }
    if ( 
equali(mapname[len], ".bsp") )
    {
        
// If the ending was .bsp, then cut it off.
        // the string is byref'ed, so this copies back to the loaded text.
        
mapname[len] = '^0';// recheck
        
if ( is_map_valid(mapname) )
        {
            return 
true;
        }
    }

        return 

false;
}
load_settings(filename[])
{
    new 
fp fopen(filename"r");

        if (!

fp)
    {
        return 
0;
    }

            new 

text[256];
    new 
tempMap[32];

        while (!

feof(fp))
    {
        
fgets(fptextcharsmax(text));

                if (

text[0] == ';')
        {
            continue;
        }
        if (
parse(texttempMapcharsmax(tempMap)) < 1)
        {
            continue;
        }
        if (!
ValidMap(tempMap))
        {
            continue;
        }
ArrayPushString(g_mapNametempMap);
        
g_mapNums++;
    }
fclose(fp);

    return 

1;
}

public 

plugin_end()
{
    
ArrayDestroy(g_mapName)

Название темы скорректировано // Subb98

Последний раз редактировалось Subb98 24 фев 2018, 09:15, всего редактировалось 1 раз.

Причина: Для вставки исходного кода используйте кнопку «Код / Исходник»

Аватара пользователя

vendorfx

 
Сообщения: 3
Зарегистрирован: 11 янв 2018, 11:59
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

  • Ответить с цитатой

Re: Ошибка. error 017: undefined symbol «MAX_PLAYERS»

Сообщение Mandar1n » 24 фев 2018, 00:35

Ты бы лучше файл прикрепил или в код засунул, а не в спойлер

Аватара пользователя

Mandar1n

 
Сообщения: 133
Зарегистрирован: 08 дек 2013, 14:08
Благодарил (а): 38 раз.
Поблагодарили: 4 раз.
Языки программирования: Counter-Strike 1.6

  • Ответить с цитатой

Re: Maps Menu error 017: undefined symbol «MAX_PLAYERS»

Сообщение Subb98 » 24 фев 2018, 09:16

Добавьте в начало кода:

Код: Выделить всё
#if AMXX_VERSION_NUM < 183
#define MAX_PLAYERS 32
#endif 

«Очень хорошо. Лучше вы, чем я» © Donald J. Trump

Аватара пользователя

Subb98

Модератор
 
Сообщения: 5483
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1323 раз.
Поблагодарили: 2341 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 2

Понравилась статья? Поделить с друзьями:
  • Source sdk engine error
  • Source obj error lnk2019
  • Source folder name is empty eclipse как исправить
  • Source error что это значит
  • Source error хамстер