Написание плагинов. Жизненно ли?

Danyas

Участник
Сообщения
2,173
Реакции
1,072
Оффтоп Нет. Так ещё только ограничил переменную от 1 до "бесконечности". А раньше было от -1 до -"бесконечности" или от 1 до...

Но ведь мне и нужно что бы юзерид был положительным числом)
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
нужно что бы юзерид был положительным числом)
Он итак будет всегда положительным) 0 вернёт, когда не валиден. Отрицательных чисел не возвращает. Это тебе не оффсет, например, который вернёт -1 в случае неудачи.
 

Серый™

CS:S Server
Сообщения
2,925
Реакции
1,376
Вот моё про ошибки
C-подобный:
 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) - Неправильный размер массива. Отрицательное значение или ноль; 
 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) - Не точка входа; 
 error 014: invalid statement; not in switch - Неверная команда; 
 error 015: "default" case must be the last case in switch statement - Оператор "default" должен быть последним; 
 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" - ошибочное название символа (начинается с цифры, например); 
 error 021: symbol already defined: %s" - символ уже определён (дважды встречается new одного и того же символа); 
 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) - Аргумент не имеет начального значения; 
 error 035: argument type mismatch (argument %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") - Неизвестный размер массива %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" ; 
 error 061: "#elseif" directive follows an "#else" directive - "#elseif" перед "#else"; 
 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) - В этой функции может быть только один аргумент %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") - Переменная %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 pattern 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 " - Функция использует два "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") - ; 
 error 085: no states are defined for function "%s" - Ни одно состояние не определено для функции %s; 
 error 086: unknown automaton "%s" - Неизвестная автоматизация %s; 
 error 087: unknown state "%s" for automaton "%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 символа (укоротите название переменной %s); 
 warning 201: redefinition of constant/macro (symbol "%s") - двойное определение одинаковой константы (смотреть #define); 
 warning 202: number of arguments does not match definition - несовпадение количества аргументов; 
 warning 203: symbol is never used: "%" - символ "%" никогда не используется; 
 warning 204: symbol is assigned a value that is never used: "%s" - символ создан, ему ставится значение, но далее он не используется. 
 warning 209: function "%s" should return a value - функция %s должна возвращать какое-либо значение (return 1; к примеру); 
 warning 211: possibly unintended assignment - в условии использовано не сравнение, а присвоение; 
 warning 213: tag mismatch - несовпадение аргументов в функции; 
 warning 215: expression has no effect - выражение не имеет эффекта; 
 warning 216: nested comment - вложенный комментарий (вынесите его за функцию); 
 warning 217: loose indentation - невыровненная строка (return должен быть строго под телом функции по левому краю, либо можно добавить в начало мода строку #pragma tabsize 0, но это не рекомендуется, так как иногда может не понимать и не прочитывать скобки "{" и "}"); 
 warning 219: local variable "%s" shadows a variable at a preceding level - переменная дважды объявлена; 
 warning 224: indeterminate array size in "sizeof" expression (symbol "%s") - должен быть определён размер массива %s (если определён статиком, заменить дефайном); 
 warning 225: unreachable code - невалидный код; 
 warning 235: public function lacks forward declaration (symbol "%s") - необходим форвард функции %s (перед функцией пишем forward(%s);
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #44
AlmazON, ковырялся в см. Заодно решил глянуть насчет HookEvent и HookEventEx

Вот:
PHP:
static cell_t sm_HookEvent(IPluginContext *pContext, const cell_t *params)
{
	char *name;
	IPluginFunction *pFunction;

	pContext->LocalToString(params[1], &name);
	pFunction = pContext->GetFunctionById(params[2]);

	if (!pFunction)
	{
		return pContext->ThrowNativeError("Invalid function id (%X)", params[2]);
	}

	if (g_EventManager.HookEvent(name, pFunction, static_cast<EventHookMode>(params[3])) == EventHookErr_InvalidEvent)
	{
		return pContext->ThrowNativeError("Game event \"%s\" does not exist", name);
	}

	return 1;
}

static cell_t sm_HookEventEx(IPluginContext *pContext, const cell_t *params)
{
	char *name;
	IPluginFunction *pFunction;

	pContext->LocalToString(params[1], &name);
	pFunction = pContext->GetFunctionById(params[2]);

	if (!pFunction)
	{
		return pContext->ThrowNativeError("Invalid function id (%X)", params[2]);
	}

	if (g_EventManager.HookEvent(name, pFunction, static_cast<EventHookMode>(params[3])) == EventHookErr_InvalidEvent)
	{
		return 0;
	}

	return 1;
}

Вот и вся разница. Как я и говорил он просто не выдает ошибку в случае если события не существует.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Как я и говорил он просто не выдает ошибку в случае если события не существует
Он выдаёт false вместо ошибки, в случае, если события не существует - так, если быть точным. Я знаю.
"Внутренности" не смотрел, но знаю и использую очень широко.
 
Сверху Снизу