Pawno error 052 multi dimensional arrays must be fully initialized

Кто может помочь с решение проблемы в Pawno? Я скачал готовый мод, начал его редактировать.. Дошёл до правил сервера, которые высвечиваются в начале ...


#1

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

Отправлено 16 декабря 2013 — 11:05

  • Прохожий

Кто может помочь с решение проблемы в Pawno? Я скачал готовый мод, начал его редактировать.. Дошёл до правил сервера, которые высвечиваются в начале игры, поменял их под свои и тут ошибка …(1725) : error 052: multi-dimensional arrays must be fully initialized начал искать решение в интернете — нигде не нашёл! Помогите пожалуйста, а то я не пойму как исправлять эту ошибку… :unsure: :facepalm:

0



#2

Отправлено 16 декабря 2013 — 16:44

  • Профессионал

Код религия не позволяет показать?

0



#3

Отправлено 16 декабря 2013 — 16:52

  • Потерявшийся.

Во-первых, проблема с многомерными массивами. Мы же не знаем, что у тебя в коде.

Вот приведу пример:

new var[5][2] = {"T", "E", "S", "T"}; 

Размер массива var равен 5. Но в слове «TEST» у нас 4 буквы. От сюда, нужно либо дописать:

new var[5][2] = {"T", "E", "S", "T", "1"};

либо сделать размер двумерного массива var — меньше:

 new var[4][2] = {"T", "E", "S", "T"};

0



#4

Отправлено 16 декабря 2013 — 17:42

  • Прохожий

Просмотр сообщенияLuppy (16 декабря 2013 — 16:52) писал:

Во-первых, проблема с многомерными массивами. Мы же не знаем, что у тебя в коде.

Вот приведу пример:

new var[5][2] = {"T", "E", "S", "T"}; 

Размер массива var равен 5. Но в слове «TEST» у нас 4 буквы. От сюда, нужно либо дописать:

new var[5][2] = {"T", "E", "S", "T", "1"};

либо сделать размер двумерного массива var — меньше:

 new var[4][2] = {"T", "E", "S", "T"};

Ну так давай я пришлю тебе, что у меня там? Посмотришь точно! ;)

0



#5

Отправлено 16 декабря 2013 — 17:53

  • Прохожий

Просмотр сообщенияLuppy (16 декабря 2013 — 16:52) писал:

Во-первых, проблема с многомерными массивами. Мы же не знаем, что у тебя в коде.

Вот приведу пример:

new var[5][2] = {"T", "E", "S", "T"}; 

Размер массива var равен 5. Но в слове «TEST» у нас 4 буквы. От сюда, нужно либо дописать:

;

new var[5][2] = {"T", "E", "S", "T", "1"};

либо сделать размер двумерного массива var — меньше:

 new var[4][2] = {"T", "E", "S", "T"};

Вот что у меня за код (это правила на сервере):
new RulesMSGG[22][] = {
{«3. Чатn»},
{«Запрещено:n»},
{«- Угрозы игрокам баном, либо связями с администрацией.n»},
{«- Писать одно и тоже сообщение слишком часто (флуд).n»},
{«- Писать в чат объявлений сообщения не относящихся к Role Play.n»},
{«- Обсуждать, критиковать действия главного администратора.n»},
{«- Реклама сторонних ресурсов.nn»},
{«4. Администрация сервераn»},
{«- Сообщать администрации о каких либо нарушениях из данных правил.n»},
{«- Администрация самостоятельно выбирает штрафные санкции для каждого из случаев.n»},
{«- Решение администрации является окончательным и не подлежит обсуждению.n»},
{«Запрещено:n»},
{«- Препятствовать администрации в работе.nn»},
{«5. Торговля.n»},
{«Запрещено:n»},
{«- Любые денежные махинации без ведома администрации.n»},
{«- Продажа / покупка чего либо, за реальные деньги без ведома администрации.n»},
{«- Обмен чего либо между игровыми серверами.n»},
{«- Продажа / передача аккаунтов без ведома администрации.nn»}
};

0



#6

Отправлено 16 декабря 2013 — 18:30

  • Потерявшийся.

Размер массива RulesMSGG сделай 19.

new RulesMSGG[19][] ={…

0



#7

Отправлено 16 декабря 2013 — 18:39

  • Прохожий

Просмотр сообщенияLuppy (16 декабря 2013 — 18:30) писал:

Размер массива RulesMSGG сделай 19.

new RulesMSGG[19][] ={…

Делаю, этой ошибки нету, но вылазит следующая:

.pwn(11502 -- 11503) : error 032: array index out of bounds (variable "RulesMSGG")

0



#8

Отправлено 16 декабря 2013 — 19:47

  • Потерявшийся.

Просмотр сообщенияJohn Sharp (16 декабря 2013 — 18:39) писал:

Делаю, этой ошибки нету, но вылазит следующая:

.pwn(11502 -- 11503) : error 032: array index out of bounds (variable "RulesMSGG")

В показ диалога: RulesMSGG[18] а не RulesMSGG[19].

0



#9

Отправлено 16 декабря 2013 — 20:09

  • Прохожий

Просмотр сообщенияLuppy (16 декабря 2013 — 19:47) писал:

В показ диалога: RulesMSGG[18] а не RulesMSGG[19].

Вот… :sad: :sad: :sad: :blush:

.pwn(1723) : error 018: initialization data exceeds declared size
.pwn(1725) : error 010: invalid function or declaration
.pwn(11502 -- 11503) : error 032: array index out of bounds (variable "RulesMSGG")

Просмотр сообщенияLuppy (16 декабря 2013 — 19:47) писал:

В показ диалога: RulesMSGG[18] а не RulesMSGG[19].

Вот что на 11502-й и 11503-й строчке

format(rulesdialogg,sizeof(rulesdialogg), "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
RulesMSGG[0],RulesMSGG[1],RulesMSGG[2],RulesMSGG[3],RulesMSGG[4]
,RulesMSGG[5],RulesMSGG[6],RulesMSGG[7],RulesMSGG[8],RulesMSGG[9]
,RulesMSGG[10],RulesMSGG[11],RulesMSGG[12],RulesMSGG[13],RulesMSGG[
14],RulesMSGG[15],RulesMSGG[16],RulesMSGG[17],RulesMSGG[18],RulesMSGG[
19],RulesMSGG[20],RulesMSGG[21]);

0



#10

Отправлено 16 декабря 2013 — 21:30

  • Потерявшийся.

А так пробуй.

format(rulesdialogg,sizeof(rulesdialogg), "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
RulesMSGG[0],RulesMSGG[1],RulesMSGG[2],RulesMSGG[3],RulesMSGG[4]

,RulesMSGG[5],RulesMSGG[6],RulesMSGG[7],RulesMSGG[8],RulesMSGG[9]

,RulesMSGG[10],RulesMSGG[11],RulesMSGG[12],RulesMSGG[13],RulesMSGG[

14],RulesMSGG[15],RulesMSGG[16],RulesMSGG[17],RulesMSGG[18]);

Еще вариант сделать через strcat.

Пример:

new var[25];
strcat(var, "Текстn");
strcat(var, "Текст2n");
strcat(var, "Текст3 и т.д.n");
ShowPlayerDialog(playerid,ID DIALOG,STYLE_DIALOG,"Заголовок",var,"Ок","Не");

Правда, в твоем случае тут будет размер массива огромный.

Сообщение отредактировал Luppy: 16 декабря 2013 — 21:31

0


  • ← Предыдущая тема
  • Проблемы с компилированием
  • Следующая тема →

  • Вы не можете создать новую тему
  • Тема закрыта


1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей

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

Если вы хотите обновить Ваш сервер новыми доработками — то зайдите в наш раздел. Большой выбор готовых решений от наших пользователей

Огромный выбор различных модификаций для Вашего сервера. Пролистайте эти темы! Возможно именно там Вы найдете то, что искали уже давно.

———- Сообщение добавлено в 20:29 ———- Предыдущее сообщение добавлено в 20:27 ———-

в самой последней строке ошибка. Это должен был быть маршрут автобусникам.

Уважаемый Гость.
Пожалуйста — воздержитесь от любых комментариев на форуме относительно ситуации в мире.
В личных сообщениях, в темах и где бы то не было.
Помните — это закончится в любом случае, а слова, сказанные (или написанные) Вами — не забудутся никогда.
МЫ ЗА МИР.
(Любые сообщения относительно ситуации в мире(не важно с каким смыслом) буду удаляться. А пользователи — блокироваться безвозвратно. )

Источник

Error 052 multi dimensional arrays must be fully initialized pawno

    Команда форума Сообщений: 3 021
    Регистрация: 14.07.2017
  • IP: 127.0.0.1:8904
  • Занятия: Скриптер

Из названия все ясно. ИД’ы всех ошибок, фатальных ошибок, а также предупреждений в 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) — Неправильный размер массива. Отрицательное значение или ноль;

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 — составной оператор не закрыт в конце файла, поставить return 1;> в конец мода;

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 — описание функции без заголовка (пропущен public(. ));

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 %s must start with an alphabetic character — макрос %s должен начинаться с букв;

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 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») — для функции %s уже определенна данная state;

error 085: no states are defined for function «%s» — не определенна ни одна state для функции %s;

error 086: unknown automaton «%s» — Неизвестная автоматизация %s;

error 087: unknown state «%s» for automaton «%s» — не определен state %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 символа (укоротите название переменной %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 208: function with tag result used before definition, forcing reparse — функция с типовым результатом используется перед объявлением

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;

Пояснение: «%s — имя переменной/макроса/аргумента функции».

Авторы: OKStyle, webserfer, Kaza40k, [Nos]B[R]aiN[L], Ym[0]n, _volk_, ДениСыч, Roman1us.

При копировании на другие ресурсы, обязательно указывайте авторов, не зря ведь люди старались

Отредактировано 27 июля, 2017 пользователем stibs
Причина: bb код

Источник

Error 052 multi dimensional arrays must be fully initialized pawno

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

Покупка дает возможность:

Маппинг для сервера

Если вы хотите обновить Ваш сервер новыми доработками — то зайдите в наш раздел. Большой выбор готовых решений от наших пользователей

Моды для сервера

Огромный выбор различных модификаций для Вашего сервера. Пролистайте эти темы! Возможно именно там Вы найдете то, что искали уже давно.

Программы для скриптера

Подборка удобных программ для скриптера

Mr_David

Мастер

Помогите сегодня столкнулся с проблемой error 052: multi-dimensional arrays must be fully initialized
Вот сама строчка две
/*23*/ <«[10] DriveBy — Убийство машиной или с разстрел с водительского места;nn»>
>;

Статистика форума

Created by Giness

Уважаемый Гость.
Пожалуйста — воздержитесь от любых комментариев на форуме относительно ситуации в мире.
В личных сообщениях, в темах и где бы то не было.
Помните — это закончится в любом случае, а слова, сказанные (или написанные) Вами — не забудутся никогда.
МЫ ЗА МИР.
(Любые сообщения относительно ситуации в мире(не важно с каким смыслом) буду удаляться. А пользователи — блокироваться безвозвратно. )

Источник

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 - количество аргументов не совпадает с объявленными в функции;

Posts: 340
Threads: 56
Joined: Jul 2012

Reputation:

0

Getting that error on this line:

pawn Код:

new ItemName[MAX_ITEMS][11] = {"Wood", "Stone", "Steel", "Gun powder", "Plastic", "Flint", "Rubber", "Tin", "Cloth", "Skin", "Meat", "Fish", "Aspirin", "Antibiotic", "Flask", "Alcohol"};

My first time to use such arrays, usually I used stock which would return name so may someone tell me what’s wrong?

Posts: 71
Threads: 2
Joined: May 2014

Reputation:

0

show me the MAX_ITEMS define

Posts: 340
Threads: 56
Joined: Jul 2012

Reputation:

0

Posts: 766
Threads: 66
Joined: Feb 2014

Reputation:

0

Maybe try this?

pawn Код:

new ItemName[MAX_ITEMS][] = {
{"Wood"},
{"Stone"},
{"Steel"},
{"Gun powder"},
{"Plastic"},
{"Flint"},
{"Rubber"},
{"Tin"},
{"Cloth"},
{"Skin"},
{"Meat"},
{"Fish"},
{"Aspirin"},
{"Antibiotic"},
{"Flask"},
{"Alcohol"}
};

Posts: 71
Threads: 2
Joined: May 2014

Reputation:

0

ok so basically you are defining the array but not using storing the values in it

a short example with enum:

PHP код:



enum itemInfo {  // enums used for the items
    
iname[256]
}; 




PHP код:



new ItemName[][itemInfo] = { // you left the items unlimited as you can see i haven't enter any value in []{"Wood"}, 
{
"Stone"}, 
{
"Steel"

}; 




here i have entered 3 rows with only 1 column , which was iname(itemname) under iteminfo enum
where you are trying to use array for 18 rows and 11 columns

Must be somthing like

PHP код:



new ItemName[MAX_ITEMS][11] = {
{
0,1,2,3,4,5,6,7,8,9,10}, // row 1
{0,1,2,3,4,5,6,7,8,9,10}, // row 2
{0,1,2,3,4,5,6,7,8,9,10}, // row 3
.
.
.
{
0,1,2,3,4,5,6,7,8,9,10// row n
}; 




Posts: 71
Threads: 2
Joined: May 2014

Reputation:

0

Quote:

Originally Posted by biker122
Посмотреть сообщение

Maybe try this?

pawn Код:

new ItemName[MAX_ITEMS][] = {
{"Wood"},
{"Stone"},
{"Steel"},
{"Gun powder"},
{"Plastic"},
{"Flint"},
{"Rubber"},
{"Tin"},
{"Cloth"},
{"Skin"},
{"Meat"},
{"Fish"},
{"Aspirin"},
{"Antibiotic"},
{"Flask"},
{"Alcohol"}
};

As this guy showed you the perfect code, but still there’s something wrong with it
you have defined 18 values in MAX_Items, and this code is useing 16..
you will face error

Posts: 766
Threads: 66
Joined: Feb 2014

Reputation:

0

I don’t know what and how, I just tried to compile his given code in my script and I didn’t recieve any warnings/errors.
And yeah, I just noticed that out, Fred1993!

Posts: 340
Threads: 56
Joined: Jul 2012

Reputation:

0

11 was supposed to be string size for it
Gun powder has 10 letters along with antibiotic so I made size for it 11 as bigger isn’t needed yet

Posts: 71
Threads: 2
Joined: May 2014

Reputation:

0

Quote:

Originally Posted by LocMax
Посмотреть сообщение

11 was supposed to be string size for it

If you want to add string size, use the enum method i explained. that will help.
just add MAX_ITEMS in []

Example:

PHP код:



enum itemInfo {  // enums used for the items

    
iname[256]

};

new 
ItemName[MAX_ITEMS][itemInfo] = { 

{"Wood"}, 

{
"Stone"}, 

{
"Steel"}  //add your items name here

}; 




Posts: 340
Threads: 56
Joined: Jul 2012

Reputation:

0

@PawnMan,

Я в общем, кажется понял свою ошибку.
У меня там было что-то типо такого:

static const stock Fraction_Rang[MAX_FRACTIONS][MAX_RANGS][32] = {
{«Нет»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»},
{«»,»Водитель»,»Охранник»,»Начальник охраны»,»Адвокат»,»Гл.Адвокат»,»Министр МВД»,»Министр МЗ»,»Депутат»,»Зам.Мэра»,»Мэр»,»»,»»,»»,»»,»»,»»},
{«»,»Рядовой»,»Сержант»,»Старший Сержант»,»Лейтенант»,»Ст.Лейтенант»,»Капитан»,»Майор»,»Подполковник»,»Полковник»,»Генерал»,»»,»»,»»,»»,»»,»»},
{«»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»},
{«»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»},
{«»,»Интерн»,»Санитар»,»Медбрат»,»Спасатель»,»Нарколог»,»Доктор»,»Психолог»,»Хирург»,»Заместитель главного врача»,»Главный врач»,»»,»»,»»,»»,»»,»»},
{«»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»},
{«»,»Плейя»,»Хастла»,»Килла»,»Юонг»,»Гангста»,»О.Г.»,»Мобста»,»Де Кинг»,»Легенд»,»Мэд Дог»,»»,»»,»»,»»,»»,»»},
{«»,»Блайд»,»Бастер»,»Крекер»,»Гун Бро»,»Ап Бро»,»Ганкстер»,»Федерал Блок»,»Фолкс»,»Райч Нига»,»Биг Вилли»,»»,»»,»»,»»,»»,»»},
{«»,»Раро»,»Эстраньо»,»Навато»,»Ординарио»,»Эстимадро»,»Латино»,»Амиго»,»Криминаль»,»Проксимо»,»Падре»,»»,»»,»»,»»,»»,»»},
{«»,»Перро»,»Тирадор»,»Геттор»,»Лас Герас»,»Мирандо»,»Сабио»,»Инвасор»,»Тессореро»,»Нестро»,»Падре»,»»,»»,»»,»»,»»,»»},
{«»,»Новато»,»Ординарио»,»Локал»,»Вирификадо»,»V.E.G.»,»Ассесино»,»Бандито»,»Лидер V.E.G.»,»Проксимо»,»Падре»,»»,»»,»»,»»,»»,»»},
{«»,»Рядовой»,»Младший сержант»,»Сержант»,»Старшина»,»Лейтенант»,»Капитан»,»Майор»,»Подполковник»,»Полковник»,»Генерал»,»»,»»,»»,»»,»»,»»},
{«»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»},
{«»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»},
{«»,»Новицио»,»Ассосиато»,»Сомбаттенте»,»Солдато»,»Боец»,»Сотто-Капо»,»Капо»,»Босс»,»Консильере»,»Дон»,»»,»»,»»,»»,»»,»»},
{«»,»Вакасю»,»Кедай»,»Сятейгасира»,»Вакагасира»,»Со-хобунтё»,»Камбу»,»Оядзи»,»Сайко комон»,»Оябун-кобун»,»Кумите»,»»,»»,»»,»»,»»,»»},
{«»,»Щипач»,»Браток»,»Шнырь»,»Фраер»,»Барыга»,»Сторожила»,»Жиган»,»Свояк»,»Авторитет»,»Вор в законе»,»»,»»,»»,»»,»»,»»},
{«»,»Стажер»,»Звукооператор»,»Звукорежиссер»,»Репортёр»,»Ведущий»,»Редактор»,»Гл.Редактор»,»Тех.Редактор»,»Программный редактор»,»Директор»,»»,»»,»»,»»,»»,»»},
{«»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»},
{«»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»},
{«»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»},
{«»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»},
{«»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»},
{«»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»},
{«»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»,»»}
}; 
Ну и я подумал, что это все лишнее, и убрал все незанятые ранги. Ну ты понял
Сорян


Here you go

Code:

/****************************
 * HnS: Cash Mod - V0.0.8
 * by ReCon aka NiQu
 * 
 * Based Of Version: 0.0.7
 * 
 * Do not try to add items/abilities/skills without
 * the knowledge of how to do it.
 *
 * Original ^2HerrCashMod Made by Herr | Lille^3
 *
 *
 * Thanks to TandborsteN for laserbeam.
 ****************************/

native add_user_immune( iPlayer );
native remove_user_immune( iPlayer );

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#include <engine>
#include <fakemeta>
#include <nvault>

#define PLUGIN "HnS: Cash Mod"
#define VERSION "0.0.7"
#define AUTHOR "ReCon"
#define PREFIX "CashMod"

#define XTRA_OFS_PLAYER            5
#define m_flNextAttack            83
#define m_afButtonPressed        246
#define m_iFOV                    363

const MAX_CLIENTS = 33;

new g_first_time[33];

enum _:g_iWeapCount
{
	WEAPON_FS,
	WEAPON_DEAGLE,
	WEAPON_AWP,
	WEAPON_SHOTGUN,
	SPACE,
	HE_GRENADE,
	SPACE,
	BULLET_FS,
	BULLET_DEAGLE,
	BULLET_AWP,
	BULLET_SHOTGUN,
         WEAPON_M4A1,
         BULLET_M4A1 }	
new const g_iWeapons [g_iWeapCount] [] =
{        "Five Seven",
	"Deagle",
	"AWP",
	"SHOTGUN",
	"M4A1",
	"",
	"HE Grenade",
	"",
	"Five Seven Bullet",
	"Deagle Bullet",
	"AWP Bullet",
	"SHOTGUN Bullet",
         "M4A1 Bullet"	
};
new const g_iFirstWCost[g_iWeapCount] =
{
	2000, //Cost of first level of Five Seven
	3500, //Cost of first level of Deagle
	8000, //Cost of first level of AWP
	6500, //Cost of first level of M3
	4000, //cost of first level of M4A1
	1,
	400, //Cost of first level of HE Grenade
	1,
	2500, //Cost of first level of Five Seven Bullet
	4000, //Cost of first level of Deagle Bullet
	8500, //Cost of first level of AWP Bullet
	7000, //Cost of first level of M3 Bullet
         4500 //Cost of first level of M4A1 Bullet
}

new const g_iWeapShort [g_iWeapCount] [] =
{
	"%",
	"%",
	"%",
	"%",
	"%",
	"%",
	"Bullets",
	"Bullets",
	"Bullets",
	"Bullets",
	"Bullets"	
}
new const g_iWeapMaxVal[g_iWeapCount] =
{
	60,
	60,
	25,
	25,
	1,
	80,
	1,
	3,
	3,
	2,
	2
}

new g_iWeapMaxLevel[g_iWeapCount] =
{
	6,
	6,
	5,
	6,
	1,
	8,
	1,
	3,
	3,
	2,
	2
}

new g_iWeapClass [g_iWeapCount] =
{
	CSW_FIVESEVEN,
	CSW_DEAGLE,
	CSW_AWP,
	CSW_M3,
	CSW_M4A1, 
	2, //Space,
	CSW_HEGRENADE,
	2, //Space,
	1, //Bullet,
	1, //Bullet,
	1, //Bullet,
	1, //Bullet	
}
new const g_iWeapName [g_iWeapCount] [] =
{
	"weapon_fiveseven",
	"weapon_deagle",
	"weapon_awp",
	"weapon_m3",
	"weapon_m4a1",
	"",
	"weapon_hegrenade",
	""
};
enum _:g_iItemCount
{
	HEALTH,
	ARMOR,
	RESPAWN_CHANCE,
	FALL_DMG_REDUCE,
	STEALTH,
	FASTER_RUNNING,
	EXTRA_DAMAGE,
	NO_FOOTSTEPS,
	NO_FLASH,
	SCOPE,
	NO_PAIN,
	UNDER_COVER_SUITE,
	ANTI_FROSTNADE,
	Laserbeam,
	Heatseek_HE
}

new const g_iItems[g_iItemCount][] =
{
	"Extra Health",
	"Extra Armor",
	"Respawn Chance",
	"Fall Damage Reducer",
	"Stealth",
	"Faster Running",
	"Extra Damage",
	"No Footsteps",
	"No Flash",
	"Deagle Scope",
	"No Pain Shock",
	"Camofluage",
	"Anti-Frostnade",
	"LaserBeam",
	"Heeatseeking Grenade"
}

new const g_iFirstCost[g_iItemCount] =
{
	1000, //Cost of first level of Health
	750, //Cost of first level of Armor
	5000, //Cost of first level of Respawn Chance
	1500, //Cost of first level of Fall Damage Reducer
	5000, //Cost of first level of Stealth
	3000, //Cost of first level of Faster Running
	3000, //Cost of first level of Extra Damage
	1500, //Cost of No Footsteps
	20000, //Cost of No Flash
	10000, //Cost of Deagle Scope
	30000, //Cost of No Pain Shock
	45000, //Cost of Camofluage
	40000, //Cost of Anti Frostnade
	15000, //Cost of first level of LaserBeam
	25000 //Cost of Heatseeking Grenade
}

new const g_iItemShort[g_iItemCount][] =
{
	" HP",
	" AP",
	"%",
	"%",
	"%",
	"%",
	" DMG",
	"CT Only",
	"CT Only",
	"CT & T",
	"CT & T",
	"%",
	"CT & T",
	"CT & T",
	"CT & T"
}

new const g_iItemMaxVal[g_iItemCount] =
{
	150,
	150,
	60,
	50,
	60,
	8,
	45,
	1,
	1,
	1,
	1,
	1,
	1,
	3,
	1
}

new const g_iItemMaxLevel[g_iItemCount] =
{
	6,
	6,
	6,
	5,
	6,
	4,
	5,
	1,
	1,
	1,
	1,
	1,
	1,
	3,
	1
}

new g_iCash[MAX_CLIENTS + 1];
new g_iItemLevel[MAX_CLIENTS + 1][g_iItemCount];
new g_iWeapLevel[MAX_CLIENTS + 1][g_iWeapCount];
new g_iAuthID[33][36];
new bool:g_iRevivedOnce[32];
new Float:g_gametime;
new Float:g_gametime2;
new grenade[32];
new bool:g_track[33];
new bool:g_track_enemy;
new g_vault;
new g_msgScreenFade;
new g_sync_check_data;
new last;
new g_Admin[33];
new g_LoggedIn[32];
new g_serverType;
new sLaserShooterUsed[32];
new sLaserNextUse[33];
new hook_to[33][3];
new const sShootSound[] = "weapons/rocketfire1.wav";
new beamsprite;
new bool:gHasHe[33];

public plugin_precache()
{
	beamsprite = precache_model("sprites/dot.spr");
	precache_sound( sShootSound );
}

public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	//Register Spawn
	RegisterHam( Ham_Spawn, "player", "FwdPlayerSpawn", 1 );
	
	//Open MainMenu
	new command[]			= "Cash_StartMenu";
	register_clcmd( "say /mm", command );
	register_clcmd( "say /cash", command );
	register_clcmd( "say /cashmod", command );
	register_clcmd( "say /hnsc", command );
	register_clcmd( "say /hnscash", command );
	
	//Register Death
	register_event( "DeathMsg", "Event_DeathMsg", "a" );
	
	//Register Round Start
	register_logevent( "eRound_start", 2, "1=Round_Start" );
	
	//Register Kill
	RegisterHam(Ham_Killed, "player", "FwdPlayerDeath", 1);
	
	//Register Take Damage
	RegisterHam(Ham_TakeDamage, "player", "FwdPlayerTakeDMG", 1);
	
	//Register PostThink for scope
	RegisterHam(Ham_Player_PostThink, "player", "Player_PostThink");
	
	//Register PreThink
	RegisterHam(Ham_Player_PreThink, "player", "Player_PreThink");
	
	//Register Weapon Switch
	register_event( "CurWeapon" , "fw_EvCurWeapon" , "be" , "1=1" );
	
	register_forward(FM_Think, "fwdThink", 0);
	
	//Get user screenfade
	g_msgScreenFade = get_user_msgid("ScreenFade");
	
	//Register ScreenFade
	register_event("ScreenFade", "eventFlash", "be", "4=255", "5=255", "6=255", "7>199");
	
	//Registers two different TextMSG
	register_event("TextMsg", "fire_in_the_hole", "b", "2&#Game_radio", "4&#Fire_in_the_hole");
	register_event("TextMsg", "fire_in_the_hole2", "b", "3&#Game_radio", "5&#Fire_in_the_hole");
	
	//Register when someone/something throws grenade
	register_event("99", "grenade_throw2", "b");
	
	//Register Commands
	register_concmd("cm_givecash", "CmdGiveCash", ADMIN_RCON, "<nick, #userid, authid> <cash>");
	register_concmd("cm_removecash", "CmdRemoveCash", ADMIN_RCON, "<nick, #userid, authid> <cash>");
	
	//Open nvault
	g_vault = nvault_open("cashmod_recon");
    
	if( g_vault == INVALID_HANDLE )
	{
		set_fail_state( "Error opening nVault" );
	}
}

public plugin_end()
{
	nvault_close(g_vault);
}

public plugin_natives()
{
	register_library("cashmod");
	
	register_native("cm_get_user_cash", "_get_cash");
	register_native("cm_set_user_cash", "_set_cash");
	register_native("cm_get_user_admin", "_get_user_admin");
	register_native("cm_save", "_save");
	register_native("cm_load", "_load");
	register_native("cm_first_time", "_first_time");
	register_native("cm_has_user_nofrost", "_has_user_nofrost");
}

public _has_user_nofrost(iPlugin, iParams)
{
	new client = get_param(1);
	if(g_iItemLevel[client][ANTI_FROSTNADE] != 0)
	{
		return true;
	}
	else{
		return false;
	}
	return PLUGIN_CONTINUE;	
}
public _get_health_level(iPlugin, iParams)
{
	return g_iItemLevel[get_param(1)][HEALTH];
}

public _first_time(iPlugin, iParams)
{
	return g_first_time[get_param(1)];
}

public _save(iPlugin, iParams)
{
	Save(get_param(1));
}

public _load(iPlugin, iParams)
{
	Load(get_param(1));
}

public _set_server_type(iPlugin, iParams)
{	
	g_serverType = max(0, get_param(1));
	return g_serverType;
}

public _get_server_type(iPlugin, iParams)
{
	return g_serverType;
}

public _set_cash(iPlugin, iParams)
{		
	new iPlayer = get_param(1);
	if( !iPlayer )
		return PLUGIN_CONTINUE;
	
	g_iCash[iPlayer] = max(0, get_param(2));
	return g_iCash[iPlayer];
}

public _get_cash(iPlugin, iParams)
{
	return g_iCash[get_param(1)];
}

public _set_user_status(iPlugin, iParams)
{
	new iPlayer = get_param(1);
	if( !iPlayer )
		return PLUGIN_CONTINUE;
		
	g_LoggedIn[iPlayer] = max(0, get_param(2));
	return g_LoggedIn[iPlayer];
}

public _get_user_status(iPlugin, iParams)
{
	return g_LoggedIn[get_param(1)];
}

public _get_user_admin(iPlugin, iParams)
{
	return g_Admin[get_param(1)];
}

public Player_PostThink(id)
{
	DoZoom2(id);
}

public fwdThink(entid)
{
	static szClassname[33];
	pev(entid, pev_classname, szClassname, 32);
	
	static szModel[23];
	pev(entid, pev_model, szModel, 22);
	
	if( equali(szClassname, "grenade", 0)
	&& equali(szModel, "models/w_hegrenade.mdl", 0) &&
	g_iItemLevel[pev(entid, pev_owner)][Heatseek_HE] >= 1)
	{
		static Float:vOrigin[3];
		pev(entid, pev_origin, vOrigin);
		
		set_pev(entid, pev_renderfx, kRenderFxGlowShell);
		set_pev(entid, pev_rendercolor, {148.0, 0.0, 211.0});
		set_pev(entid, pev_rendermode, kRenderNormal);
		set_pev(entid, pev_renderamt, 100);
		
		static player;
		player = 0;
		static Float:vClosest[3];
		vClosest = Float:{4096.0, 4096.0, 4096.0};
		while( (player = engfunc(EngFunc_FindEntityInSphere, player, vOrigin, 512.0)) )
		{
			if( !is_user_alive(player) )
			{
				continue;
			}
				
			pev(player, pev_classname, szClassname, 6);
			if( equali(szClassname, "player", 0) )
			{
				if( get_user_team(player) != get_user_team(pev(entid, pev_owner)) )
				{
					static Float:vOrigin2[3];
					pev(player, pev_origin, vOrigin2);
					
					static hitplayer;
					hitplayer = fnTraceLine(entid, vOrigin, vOrigin2);
					
					if( vector_distance(vOrigin, vOrigin2)
					<
					vector_distance(vOrigin, vClosest)
					&& hitplayer == player )
					{
						vClosest = vOrigin2;
					}
				}
			}
		}
		if( vClosest[0] != 4096.0 )
		{
			entity_set_follow_origin(entid, vClosest, 350.0);
		}
	}
}

fnTraceLine(ignoreEnt, const Float:vStart[3], const Float:vEnd[3], Float:vReturn[3]={0.0, 0.0, 0.0})
{
	engfunc(EngFunc_TraceLine, vStart, vEnd, ignoreEnt == -1 ? 1 : 0, ignoreEnt);
	
	new ent = global_get(glb_trace_ent);
	global_get(glb_trace_endpos, vReturn);

	return pev_valid(ent) ? ent : 0;
}

stock entity_set_follow_origin(entity, Float:Origin[3], Float:speed)
{
	if(!pev_valid(entity)) return 0;
	
	new Float:entity_origin[3];
	pev(entity, pev_origin, entity_origin);
	
	new Float:diff[3];
	diff[0] = Origin[0] - entity_origin[0];
	diff[1] = Origin[1] - entity_origin[1];
	diff[2] = Origin[2] - entity_origin[2];
	
	new Float:length = floatsqroot(floatpower(diff[0], 2.0) + floatpower(diff[1], 2.0) + floatpower(diff[2], 2.0));
	
	new Float:Velocity[3];
	Velocity[0] = diff[0] * (speed / length);
	Velocity[1] = diff[1] * (speed / length);
	Velocity[2] = diff[2] * (speed / length);
	
	set_pev(entity, pev_velocity, Velocity);
	
	return 1;
}

public Player_PreThink(id)
{
	new nbut = pev(id, pev_button);
	new obut = pev(id, pev_oldbuttons);
	if((nbut & IN_RELOAD) && !(obut & IN_RELOAD))
	{
		if( sLaserShooterUsed[id] != 0 && is_user_alive(id) && sLaserNextUse[id])
		{
			hook_to[id][0]=999999;
			new player, body;
			get_user_aiming(id, player, body);
			if(is_user_connected(id) && is_user_connected(player))
			{
				sLaserShooterUsed[id] -= 1;
					
				//Get Id's origin
				static origin1[3];
				get_user_origin(id,origin1);
				
				if(hook_to[id][0]==999999)
				{
					static origin2[3];
					get_user_origin(id,origin2,3);
					hook_to[id][0]=origin2[0];
					hook_to[id][1]=origin2[1];
					hook_to[id][2]=origin2[2];
				}
				//Create RED beam
				message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
				write_byte(1);		//TE_BEAMENTPOINT
				write_short(id);	// start entity
				write_coord(hook_to[id][0]);
				write_coord(hook_to[id][1]);
				write_coord(hook_to[id][2]);
				write_short(beamsprite);
				write_byte(1);		// framestart
				write_byte(1);		// framerate
				write_byte(2);		// life in 0.1's
				write_byte(40);		// width
				write_byte(0);		// noise
				write_byte(255);	// red
				write_byte(0);		// green
				write_byte(0);		// blue
				write_byte(200);	// brightness
				write_byte(40);		// speed
				message_end();
				new CurrentHealth[32];
				CurrentHealth[player] = get_user_health(player);
				new Randnum = random_num(45, 99);
				new TakenHealth = CurrentHealth[player] - Randnum;
				new AttackerName[33];
				get_user_name(id, AttackerName, 31);
				emit_sound( id, CHAN_BODY, sShootSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
				sLaserNextUse[id] = false;
				set_task(0.5, "tskLaserNextUse", 10000 + id);
				if(is_user_alive(player))
				{
					if( CurrentHealth[player] < Randnum)
					{
						new GivenFrags = get_user_frags(id) + 1;
						set_user_frags(id, GivenFrags);
						g_iCash[id] += 20;
						
						Print(id, "^x03 You have been given^x04 20^x03 Cash for killing^x04 '%s'^x03 with a^x04 Laserbeam!", player);
						Print(player, "^x01 You have been killed by %s with a laserbeam!", AttackerName);
						make_deathmsg(id, player, 0, "Laser Beam");
						user_silentkill(player);
					}
					else{
						set_user_health(player, TakenHealth);
						Print(player, "^x03 You have been hurted for^x04 %i HP^x03 from^x04 %s's^x03 Laserbeam!", Randnum, AttackerName);
						Print(id, "^x04 You have hurted %s for ^x04 %i HP", player, Randnum);
					}
				}
			}
		}
	}
}

public tskLaserNextUse(id)
{
	id -= 10000;
	
	sLaserNextUse[id] = true;
}

public client_authorized( iPlayer )
{
	get_user_authid(iPlayer, g_iAuthID[ iPlayer ] , charsmax( g_iAuthID[] ) );
	Load(iPlayer);
	
	if ( access(iPlayer, ADMIN_LEVEL_A) )
		g_Admin[iPlayer] = true;
}

public client_disconnect( iPlayer )
{	
	Save(iPlayer);
}

public Load(iPlayer)
{
	static data[256], timestamp;
	if( nvault_lookup(g_vault, g_iAuthID[iPlayer], data, sizeof(data) - 1, timestamp) )
	{
		ParseLoadData(iPlayer, data);
	}
	else
	{
		NewUser(iPlayer);
	}
}

public NewUser(iPlayer)
{
	g_first_time[iPlayer] = 1;
	
	g_iCash[iPlayer] = 200;
	
	for( new iItem = 0; iItem < g_iItemCount; iItem++ )
	{
		g_iItemLevel[iPlayer][iItem] = 0;
	}
	for( new iWeap = 0; iWeap < g_iWeapCount; iWeap++ )
	{
		g_iWeapLevel[iPlayer][iWeap] = 0;
	}
}

ParseLoadData(iPlayer, data[256])
{
	static num[6];
	strbreak(data, num, sizeof(num) - 1, data, sizeof(data) - 1);
	
	g_iCash[iPlayer] = str_to_num(num);
	
	for( new iItem = 0; iItem < g_iItemCount; iItem++ )
	{
		strbreak(data, num, sizeof(num) - 1, data, sizeof(data) - 1);
		g_iItemLevel[iPlayer][iItem] = clamp(str_to_num(num), 0, g_iItemMaxLevel[iItem]);
	}
	
	for( new iWeap = 0; iWeap < g_iWeapCount; iWeap++ )
	{
		strbreak(data, num, sizeof(num) - 1, data, sizeof(data) - 1);
		g_iWeapLevel[iPlayer][iWeap] = clamp(str_to_num(num), 0, g_iWeapMaxLevel[iWeap]);
	}
}

public Save(iPlayer)
{
	static data[256];
	new len = formatex(data, sizeof(data) - 1, "%i", g_iCash[iPlayer]);
	
	for( new iItem = 0; iItem < g_iItemCount; iItem++ )
	{
		len += formatex(data[len], sizeof(data) - len - 1, " %i", g_iItemLevel[iPlayer][iItem]);
	}
	
	for( new iWeap = 0; iWeap < g_iWeapCount; iWeap++ )
	{
		len += formatex(data[len], sizeof(data) - len - 1, " %i", g_iWeapLevel[iPlayer][iWeap]);
	}
	
	nvault_set(g_vault, g_iAuthID[ iPlayer ], data);
}

public fw_EvCurWeapon( iPlayer )
{
	//If player bought faster running
	if( g_iItemLevel[iPlayer][FASTER_RUNNING] >= 1 )
	{
		//Call a function to set speed
		Set_Speed(iPlayer);
	}
}

public FwdPlayerTakeDMG(iPlayer, inflictor, attacker, Float:damage, damagebits)
{
	//If player is alive and the damage is done by falling
	if(is_user_alive(iPlayer) && (damagebits & DMG_FALL) )
	{
		//If player is either ct or T
		new CsTeams:team = cs_get_user_team(iPlayer);
		if( team == CS_TEAM_CT || team == CS_TEAM_T ) 
		{	
			//Percentage Calculation
			new iPercent = g_iItemMaxVal[FALL_DMG_REDUCE] * g_iItemLevel[iPlayer][FALL_DMG_REDUCE] / g_iItemMaxLevel[FALL_DMG_REDUCE];
			
			//Fall Damage Reducer
			SetHamParamFloat(4, damage * (1.0 - (float(iPercent) / 100.0)));
		}
	}
	
	if( ( 1 <= attacker <= get_maxplayers() && iPlayer != attacker ) )
	{
		new Float:fMultiplier = g_iItemLevel[iPlayer][EXTRA_DAMAGE] * 0.10 + 1.0;
		SetHamParamFloat( 4, damage * fMultiplier );
	}
	
	if( g_iItemLevel[iPlayer][NO_PAIN] >= 1 )
	{
		set_pdata_float(iPlayer, 108, 1.0);
	}
	return HAM_HANDLED;
}

public FwdPlayerDeath(iPlayer, Killer, Shouldgib)
{
	//If the player hasnt already been respawned
	if( !g_iRevivedOnce[iPlayer] )
	{
		//If player is either ct or t
		new CsTeams:team = cs_get_user_team(iPlayer);
		if( team == CS_TEAM_T || team == CS_TEAM_CT )
		{
			//Percentage Calculation
			new iPercent = g_iItemMaxVal[RESPAWN_CHANCE] * g_iItemLevel[iPlayer][RESPAWN_CHANCE] / g_iItemMaxLevel[RESPAWN_CHANCE];
			
			//Percentage Usage
			if( random_num(1, 100) <= iPercent )
			{
				//Set respwan in 1 second
				set_task(1.0, "Task_Respawn", iPlayer);
			}
		}
	}
}

public Task_Respawn(iPlayer)
{
	//Respawn Player
	ExecuteHamB(Ham_CS_RoundRespawn, iPlayer);
	
	//Print to the player that he/she got respawned
	Print(iPlayer, "^x03You got respawned!");
	
	//Disable respawn until next round
	g_iRevivedOnce[iPlayer] = true;
}

public eRound_start()
{
	//Bunc of variables
	new iPlayers[32], iNum, iPid;
	
	//Get all players
	get_players( iPlayers, iNum, "a" );
	
	//Browse through all players
	for( new i; i < iNum; i++ )
	{
		iPid = iPlayers[i];
		
		//Enable respawn
		g_iRevivedOnce[iPid] = false;
	}
}


public Event_DeathMsg()
{
	//Get the killer
	new killer = read_data(1);
	
	//Get the victim + a variable
	new victim = read_data(2);
	new vic_name[128];
	new format_text[128];
	get_user_name(victim, vic_name, 127);
	
	
	//Make sure that the killer exists
	if( 1 <= killer <= get_maxplayers() )
	{
		//If victim is not killer
		if( victim != killer )
		{
			//If victim is not a teammate of killer
			if( cs_get_user_team( victim ) != cs_get_user_team( killer ) )
			{
				//If killer is still alive
				if( is_user_alive( killer ) )
				{
					//Add cash to the killer
					if( g_Admin[killer] && g_iCash[killer] < 99938 )
					{
						g_iCash[killer] += 60;
						formatex(format_text, sizeof(format_text) - 1, "^x03You recieved 60 cash for killing^x04 %s", vic_name);
					}
					else
					{
						g_iCash[killer] += 40;
						formatex(format_text, sizeof(format_text) - 1, "^x03You recieved 40 cash for killing^x04 %s", vic_name);
					}
					//Get the victims name
					get_user_name(victim, vic_name, 127);
					
					//Print out" to the player that he/she got cash
					Print(killer, format_text, vic_name);
				}
				
			}
			
		}
		
	}
	
}

public Cash_StartMenu(iPlayer)
{
	//Menu Title
	new title[512]; formatex(title, sizeof(title) - 1, "r%s w- yMain Menu w- yBy rReCon & TandborsteN ^nYour Cash: %i", PREFIX, g_iCash[iPlayer]);
	
	//Create the menu
	new menu = menu_create(title, "StartMenu_Handle");
	
	//Create Items Menu
	menu_additem(menu, "wInfo", "1", 0);
	menu_additem(menu, "wPlayer Info", "2", 0);
	menu_addblank(menu, 0);
	menu_additem(menu, "wWeapon Shop", "3", 0);
	menu_additem(menu, "wItem Shop", "4", 0);
	menu_addblank(menu, 1);
	menu_addblank(menu, 1);
	menu_addblank(menu, 1);
	
	//Display the menu
	menu_display(iPlayer, menu, 0);
}

public StartMenu_Handle(iPlayer, menu, item)
{
	if( item == MENU_EXIT )
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	new data[6], iName[64];
	new access, callback;
	
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
	
	new key = str_to_num(data);
	switch(key)
	{
		case 1:
		{
			show_motd(iPlayer, "cashmod/info.motd", "CashMod Info");
		}
		case 2:
		{
			Cash_PlayerMenu(iPlayer);
		}
		case 3:
		{
			Cash_WeaponMenu(iPlayer);
		}
		case 4:
		{
			Cash_MainMenu(iPlayer);
		}
	}
	return PLUGIN_HANDLED;
}

public Cash_PlayerMenu(iPlayer)
{
	new title[170]; formatex(title, sizeof(title) - 1, "r%s - w yPlayer Menu", PREFIX);
	new menu = menu_create(title, "Cash_PlayerHandle");
	
	new players[32], pnum, tempid;
	new szName[32], szTempid[10];
    
	get_players(players, pnum);
	
	for( new i; i<pnum; i++ )
	{
		tempid = players[i];
		
		get_user_name(tempid, szName, 31);
		num_to_str(tempid, szTempid, 9);
		
		menu_additem(menu, szName, szTempid, 0);
	}
	
	menu_display(iPlayer, menu, 0);
}

public Cash_PlayerHandle(iPlayer, menu, item)
{
	if( item == MENU_EXIT )
	{
		menu_destroy(menu);
		Cash_StartMenu(iPlayer);
		return PLUGIN_HANDLED;
	}
	
	new data[6], iName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
	
	new tempid = str_to_num(data);
	new tempname[32]; get_user_name(tempid, tempname, 31);
	
	static motd[2500];
	new len = formatex(motd, sizeof(motd) - 1,	"<html>");
	len += format(motd[len], sizeof(motd) - len - 1,	"<body style=^"background-color:#030303; color:#FF8F00^">");
	len += format(motd[len], sizeof(motd) - len - 1,	"<p align=^"center^">");
	len += format(motd[len], sizeof(motd) - len - 1,	"Player Info for %s.<br><br>", tempname);
	len += format(motd[len], sizeof(motd) - len - 1,	"Player Cash: %i.<br><br>", g_iCash[tempid]);
	len += format(motd[len], sizeof(motd) - len - 1,	"<b>Weapon Chance</b>:<br>");
	for( new iWeap = 0; iWeap < g_iWeapCount; iWeap++ )
	{
		if( g_iWeapClass[iWeap] != 2 )
		{
			len += format(motd[len], sizeof(motd) - len - 1,	"%s  -  Level: %i/%i <br>", g_iWeapons[iWeap], g_iWeapLevel[tempid][iWeap], g_iWeapMaxLevel[iWeap]);
		}
	}
	
	len += format(motd[len], sizeof(motd) - len - 1,	"<br><br><b>Other Items:</b><br>");
	for( new iItem = 0; iItem < g_iItemCount; iItem++ )
	{
		len += format(motd[len], sizeof(motd) - len - 1,	"%s  -  Level: %i/%i <br>", g_iItems[iItem], g_iItemLevel[tempid][iItem], g_iItemMaxLevel[iItem]);
	}
	len += format(motd[len], sizeof(motd) - len - 1,	"</p>");
	len += format(motd[len], sizeof(motd) - len - 1,	"</body>");
	len += format(motd[len], sizeof(motd) - len - 1,	"</html>");
	
	show_motd(iPlayer, motd, "Player Info");
	
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public Cash_WeaponMenu(iPlayer)
{
	//Menu Title
	new title[170]; formatex(title, sizeof(title) - 1, "r%s w- yWeapon Menu w- yBy rReCon ^nYour Cash: %i", PREFIX, g_iCash[iPlayer]);
	
	//Create the menu
	new menu = menu_create(title, "WeaponMenu_Handle");
	new iNumber[5], iCost, szOption[80], Amount, Level, Level2;
	
	
	//Browse through all menu items
	for( new iWeap = 0; iWeap < g_iWeapCount; iWeap++ )
	{
		//Bunch of variables
		num_to_str(iWeap, iNumber, 4);
		Level = g_iWeapLevel[iPlayer][iWeap];
		Level2 = g_iWeapLevel[iPlayer][iWeap] + 1;
		iCost = g_iFirstWCost[iWeap] * (1 << (Level2 - 1));
		Amount = g_iWeapMaxVal[iWeap] * g_iWeapLevel[iPlayer][iWeap] / g_iWeapMaxLevel[iWeap];
		
		//If the player already have maxlevel
		if( g_iWeapLevel[iPlayer][iWeap] >= g_iWeapMaxLevel[iWeap] )
		{
			if( g_iWeapClass[iWeap] == 2 )
			{
				formatex(szOption, 79, "");
			}
			else
			{
				formatex(szOption, 79, "y%s: wLevel %i r(%i%s)", g_iWeapons[iWeap], Level, Amount, g_iWeapShort[iWeap]);
			}
		}
		//If the player cant afford the item
		else if( g_iCash[iPlayer] < iCost )
		{
			if( g_iWeapClass[iWeap] == 2 )
			{
				formatex(szOption, 79, "");
			}
			else
			{
				formatex(szOption, 79, "d%s: wLevel %i r(%i%s) y%i Cash", g_iWeapons[iWeap], Level, Amount, g_iWeapShort[iWeap], iCost);
			}
		}
		//If the player has not maxed out the item
		else if( g_iWeapLevel[iPlayer][iWeap] < g_iWeapMaxLevel[iWeap] )
		{
			if( g_iWeapClass[iWeap] == 2 )
			{
				formatex(szOption, 79, "");
			}
			else
			{
				formatex(szOption, 79, "r%s: wLevel %i r(%i%s) y%i Cash", g_iWeapons[iWeap], Level, Amount, g_iWeapShort[iWeap], iCost);
			}
		}
		
		//Add all the menu items
		if( g_iWeapClass[iWeap] == 2 )
		{
			menu_addblank(menu, 0);
		}
		else
		{
			menu_additem(menu, szOption, iNumber);
		}
	}
	
	//Display the menu
	menu_display(iPlayer, menu, 0);
}

public WeaponMenu_Handle(iPlayer, menu, item)
{
	//Get the menu data
	if( item == MENU_EXIT )
	{
		menu_destroy(menu);
		Cash_StartMenu(iPlayer);
		return PLUGIN_HANDLED;
	}
	
	//Bunc of variables
	new data[6], iName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
	
	new iWeap = str_to_num( data ), iCost, Level;
	Level = g_iWeapLevel[iPlayer][iWeap] + 1;
	iCost = g_iFirstWCost[iWeap] * (1 << (Level - 1));
	
	if( iWeap == BULLET_FS && g_iWeapLevel[iPlayer][WEAPON_FS] <= 0 || iWeap == BULLET_DEAGLE && g_iWeapLevel[iPlayer][WEAPON_DEAGLE] <= 0 || iWeap == BULLET_AWP && g_iWeapLevel[iPlayer][WEAPON_AWP] <= 0  || iWeap == BULLET_M4A1 && g_iWeapLevel[iPlayer][WEAPON_M4A1] <= 0 )
	{
		Print(iPlayer, "^x03You don't have this weapons!");
		Cash_WeaponMenu(iPlayer);
		return PLUGIN_HANDLED;
	}
	
	//If player has maxed out the item
	if( g_iWeapLevel[iPlayer][iWeap] == g_iWeapMaxLevel[iWeap] )
	{
		Print(iPlayer, "^x03You have the max level of %s!", g_iWeapons[iWeap]);
	}
	//If the player cant afford the item
	else if( g_iCash[iPlayer] < iCost )
	{
		Print(iPlayer, "^x03You dont have enough cash to buy %s Level: %i", g_iWeapons[iWeap], Level);
	}
	//Take Cash, Print and give level
	else
	{
		//Take cash
		g_iCash[iPlayer] -= iCost;
		
		//Give a level
		g_iWeapLevel[iPlayer][iWeap] += 1;
		
		//Print out to the player that he/she bought an item with corresponding level
		Print(iPlayer, "^x03You bought %s Level: %i", g_iWeapons[iWeap], Level);
	}
	
	Cash_WeaponMenu(iPlayer);
	return PLUGIN_HANDLED;
}

public Cash_MainMenu(iPlayer)
{
	//Menu Title
	new title[70]; formatex(title, sizeof(title) - 1, "r%s w- yMain Menu w- yBy rReCon^nYour Cash: %i", PREFIX, g_iCash[iPlayer]);
	
	//Create the menu
	new menu = menu_create(title, "MainMenu_Handle");
	new iNumber[5], iCost, szOption[80], Amount, Level, Level2;
	
	
	//Browse through all menu items
	for( new iItem = 0; iItem < g_iItemCount; iItem++ )
	{
		//Bunch of variables
		num_to_str(iItem, iNumber, 4);
		Level = g_iItemLevel[iPlayer][iItem];
		Level2 = g_iItemLevel[iPlayer][iItem] + 1;
		iCost = g_iFirstCost[iItem] * (1 << (Level2 - 1));
		Amount = g_iItemMaxVal[iItem] * g_iItemLevel[iPlayer][iItem] / g_iItemMaxLevel[iItem];
		
		if( iItem == EXTRA_DAMAGE && g_serverType == 1 )
		{
			return PLUGIN_CONTINUE;
		}
		
		//If the player already have maxlevel
		if( g_iItemLevel[iPlayer][iItem] >= g_iItemMaxLevel[iItem] )
		{
			if( iItem == NO_FOOTSTEPS || iItem == NO_FLASH || iItem == SCOPE || iItem == NO_PAIN || iItem == ANTI_FROSTNADE || iItem == Laserbeam )
			{
				formatex(szOption, 79, "y%s: dLevel %i r(%s)", g_iItems[iItem], Level, g_iItemShort[iItem]);
			}
			else
			{
				formatex(szOption, 79, "y%s: dLevel %i r(%i%s)", g_iItems[iItem], Level, Amount, g_iItemShort[iItem]);
			}
		}
		//If the player cant afford the item
		else if( g_iCash[iPlayer] < iCost )
		{
			if( iItem == NO_FOOTSTEPS || iItem == NO_FLASH || iItem == SCOPE || iItem == NO_PAIN || iItem == ANTI_FROSTNADE || iItem == Laserbeam )
			{
				formatex(szOption, 79, "d%s: wLevel %i r(%s) y%i Cash", g_iItems[iItem], Level, g_iItemShort[iItem], iCost);
			}
			else
			{
				formatex(szOption, 79, "d%s: wLevel %i r(%i%s) y%i Cash", g_iItems[iItem], Level, Amount, g_iItemShort[iItem], iCost);
			}
		}
		//If the player has not maxed out the item
		else if( g_iItemLevel[iPlayer][iItem] < g_iItemMaxLevel[iItem] )
		{
			if( iItem == NO_FOOTSTEPS || iItem == NO_FLASH || iItem == SCOPE || iItem == NO_PAIN || iItem == ANTI_FROSTNADE || iItem == Laserbeam )
			{
				formatex(szOption, 79, "r%s: wLevel %i r(%s) y%i Cash", g_iItems[iItem], Level, g_iItemShort[iItem], iCost);
			}
			else
			{
				formatex(szOption, 79, "r%s: wLevel %i r(%i%s) y%i Cash", g_iItems[iItem], Level, Amount, g_iItemShort[iItem], iCost);
			}
		}
		
		//Add all the menu items
		menu_additem(menu, szOption, iNumber);
	}
	
	//Display the menu
	menu_display(iPlayer, menu, 0);
	
	return PLUGIN_HANDLED;
}

public MainMenu_Handle(iPlayer, menu, item)
{
	//Get the menu data
	if( item == MENU_EXIT )
	{
		menu_destroy(menu);
		Cash_StartMenu(iPlayer);
		return PLUGIN_HANDLED;
	}
	
	//Bunc of variables
	new data[6], iName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
	
	new iItem = str_to_num( data ), iCost, Level;
	Level = g_iItemLevel[iPlayer][iItem] + 1;
	iCost = g_iFirstCost[iItem] * (1 << (Level - 1));
	
	//If player has maxed out the item
	if( g_iItemLevel[iPlayer][iItem] == g_iItemMaxLevel[iItem] )
	{
		Print(iPlayer, "^x03You have the max level of %s!", g_iItems[iItem]);
	}
	//If the player cant afford the item
	else if( g_iCash[iPlayer] < iCost )
	{
		Print(iPlayer, "^x03You dont have enough cash to buy %s Level: %i", g_iItems[iItem], Level);
	}
	//Take Cash, Print and give level
	else
	{
		//Take cash
		g_iCash[iPlayer] -= iCost;
		
		//Give a level
		g_iItemLevel[iPlayer][iItem] += 1;
		
		//Print out to the player that he/she bought an item with corresponding level
		Print(iPlayer, "^x03You bought %s Level: %i", g_iItems[iItem], Level);
	}
	
	Cash_MainMenu(iPlayer);
	return PLUGIN_HANDLED;
}

public FwdPlayerSpawn(iPlayer)
{
	//If player is alive when spawned
	if( is_user_alive(iPlayer) )
	{

			//If player has bought extra health
			if( g_iItemLevel[iPlayer][HEALTH] >= 1 )
			{
				//Set health to its self and add the extra health
				set_user_health(iPlayer, get_user_health(iPlayer) + g_iItemMaxVal[HEALTH] * g_iItemLevel[iPlayer][HEALTH] / g_iItemMaxLevel[HEALTH]);
			}
			//If player has bought extra armor
			if( g_iItemLevel[iPlayer][ARMOR] >= 1 )
			{
				//Set armor to its self and add the extra armor
				set_user_armor(iPlayer, g_iItemMaxVal[ARMOR] * g_iItemLevel[iPlayer][ARMOR] / g_iItemMaxLevel[ARMOR]);
			}
			//If player has bought stealth
			if( g_iItemLevel[iPlayer][STEALTH] >= 1 )
			{
				//Call a function to set stealth
				Set_Stealth(iPlayer);
				
			}
			//If player has bought faster running
			if( g_iItemLevel[iPlayer][FASTER_RUNNING] >= 1 )
			{
				//Call a function to set speed
				Set_Speed(iPlayer);
			}
			//If player has bought no footsteps
			if( g_iItemLevel[iPlayer][NO_FOOTSTEPS] >= 1 )
			{
				set_user_footsteps(iPlayer, 1);
			}
			//If player has bought undercover suite
			if( g_iItemLevel[iPlayer][UNDER_COVER_SUITE] >= 1 )
			{
				remove_task(iPlayer);
				set_task(9.0, "Set_Undercover", iPlayer);
			}
			//If player has bought Antifrost nade
			if( g_iItemLevel[iPlayer][ANTI_FROSTNADE] >= 1 )
			{
				add_user_immune(iPlayer)
			}
			else
			{
				remove_user_immune(iPlayer);
			}
			//If player has bought Laserbeam
			if( g_iItemLevel[iPlayer][Laserbeam] >= 1 )
			{
				sLaserShooterUsed[iPlayer] = g_iItemLevel[iPlayer][Laserbeam];
				sLaserNextUse[iPlayer] = true;
			}
			
			//Give weapons, the check if the player bought is in the function
			remove_task(iPlayer);
			set_task(10.0, "Set_Weapons", iPlayer);
	}
}

public Set_Undercover(iPlayer)
{
	//Percentage Calculation
	new iPercent = g_iItemMaxVal[UNDER_COVER_SUITE] * g_iItemLevel[iPlayer][UNDER_COVER_SUITE] / g_iItemMaxLevel[UNDER_COVER_SUITE];
	
	//Get Players Team
	new CsTeams:team = cs_get_user_team(iPlayer);
	
	//Percentage Usage
	if( random_num(1, 100) <= iPercent )
	{
		//If player is alive
		if( is_user_alive(iPlayer) )
			{
			if(team == CS_TEAM_CT)
			{
				cs_set_user_model(iPlayer, "leet");
				Print(iPlayer, "^x03You  look like a Terrorist");
			}
			else if(team == CS_TEAM_T)
			{
				cs_set_user_model(iPlayer, "gign");
				Print(iPlayer, "^x03You look like a Counter-Terrorist!");
			}
		}
	}
}

public Set_Stealth(iPlayer)
{		
	new StealthAmt = g_iItemLevel[iPlayer][STEALTH] * 25;
	new NewStealth = 255 - StealthAmt;
			
	set_user_rendering( iPlayer, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, NewStealth );
}

public Set_Speed(iPlayer)
{
	//Percentage Calculation
	new iPercent = g_iItemMaxVal[FASTER_RUNNING] * g_iItemLevel[iPlayer][FASTER_RUNNING] / g_iItemMaxLevel[FASTER_RUNNING];
	
	//Speed Calculation
	new iSpeed = iPercent * 250 / 100;
	
	//Set Speed
	set_user_maxspeed(iPlayer, 250.0 + iSpeed);
}

public calc_value(const level, const max_level, const max_value)
{
	return (max_value * level / max_level);
}

public Set_Weapons(iPlayer)
{
	//Browse through all menu items
	new iNumber[5];
	for( new iWeap = 0; iWeap < g_iWeapCount; iWeap++ )
	{
		//Bunch of variables
		num_to_str(iWeap, iNumber, 4);
		
		//Bullets
		new iBullets;
		
		if( iWeap == WEAPON_FS && g_iWeapLevel[iPlayer][BULLET_FS] >= 1 )
		{
			iBullets = g_iWeapLevel[iPlayer][BULLET_FS] + 1;
		}
		else if( iWeap == WEAPON_DEAGLE && g_iWeapLevel[iPlayer][BULLET_DEAGLE] >= 1 )
		{
			iBullets = g_iWeapLevel[iPlayer][BULLET_DEAGLE] + 1;
		}
		else if( iWeap == WEAPON_AWP && g_iWeapLevel[iPlayer][BULLET_AWP] >= 1 )
		{
			iBullets = g_iWeapLevel[iPlayer][BULLET_AWP] + 1;	
		}
		else if ( iWeap == WEAPON_SHOTGUN && g_iWeapLevel[iPlayer][BULLET_SHOTGUN] >= 1 )
	         {
			iBullets = g_iWeapLevel[iPlayer][BULLET_SHOTGUN] +1;
	         }
                  else if ( iWeap == WEAPON_M4A1 && g_iWeapLevel[iPlayer][BULLET_M4A1] >= 1 )
		{
			iBullets = g_iWeapLevel[iPlayer][BULLET_M4A1] + 1;	
		}
		if( iBullets == 0 )
		{
			iBullets = 1;
		}
		
		if( g_iWeapLevel[iPlayer][iWeap] >= 1 )
		{
			static percent;
			percent = calc_value(g_iWeapLevel[iPlayer][iWeap], g_iWeapMaxLevel[iWeap], g_iWeapMaxVal[iWeap]);
			
			//new Chance = g_iWeapLevel[iPlayer][iWeap] * g_iWeapMaxVal[iWeap];
			//new randonnumb = random_num(1, 100);
			
			new message[72];
			
			if(is_user_connected(iPlayer))
			{
				if( percent > 0 && (percent == 100 || random_num(1, 100) <= percent ) )
				{
					if( iWeap == HE_GRENADE && !user_has_weapon(iPlayer, g_iWeapClass[HE_GRENADE]) )
					{	
						give_item(iPlayer, g_iWeapName[HE_GRENADE]);
						formatex(message, sizeof(message) - 1, "^x03You recieved a HE Grenade ^x04[%i%%%%].", percent);
						
						if(g_iItemLevel[iPlayer][Heatseek_HE] >= 1)
						{
							gHasHe[iPlayer] = true;
						}
					}
					else
					{
						give_item(iPlayer, g_iWeapName[iWeap]);
						cs_set_weapon_ammo(find_ent_by_owner(iPlayer, g_iWeapName[iWeap], iPlayer), iBullets);
						cs_set_user_bpammo(iPlayer, g_iWeapClass[iWeap], 0);
						formatex(message, sizeof(message) - 1, "^x03You recieved a %s with %i bullets ^x04[%i%%%%].", g_iWeapons[iWeap], iBullets, percent);
					}
					Print(iPlayer, message);
				}
			}
		}
	}
	return PLUGIN_HANDLED;
}

//The following functions are used to give and remove, dont touch!
public CmdGiveCash(iPlayer, level, cid)
{
	if( !cmd_access(iPlayer, level, cid, 3) ) return PLUGIN_HANDLED;
	
	static arg[35];
	read_argv(1, arg, sizeof(arg) - 1);
	
	new target = cmd_target(iPlayer, arg, CMDTARGET_NO_BOTS);
	if( !target ) return PLUGIN_HANDLED;
	
	read_argv(2, arg, sizeof(arg) - 1);
	new CASH = str_to_num(arg);
	
	if( CASH <= 0 )
	{
		console_print(iPlayer, "Not enough cash!");
		if( CASH < 0 )
		{
			console_print(iPlayer, "Use cm_removecash instead!");
		}
		return PLUGIN_HANDLED;
	}
	
	if( CASH >= 99999 )
	{
		console_print(iPlayer, "To much cash!");
		return PLUGIN_HANDLED;
	}
	
	g_iCash[target] += CASH;
	
	static name[2][32];
	get_user_name(iPlayer, name[0], sizeof(name[]) - 1);
	get_user_name(target, name[1], sizeof(name[]) - 1);
	
	client_print(iPlayer, print_console, "%s You gave %s %i cash!", PREFIX, name[1], CASH);
	
	static steamid[2][35];
	get_user_authid(iPlayer, steamid[0], sizeof(steamid[]) - 1);
	get_user_authid(target, steamid[1], sizeof(steamid[]) - 1);
	
	log_amx("%s (%s) gave %i XP to %s (%s)", name[0], steamid[0], CASH, name[1], steamid[1]);
	
	return PLUGIN_HANDLED;
}

public CmdRemoveCash(iPlayer, level, cid)
{
	if ( !cmd_access(iPlayer, level, cid, 3) ) return PLUGIN_HANDLED;
	
	static arg[35];
	read_argv(1, arg, sizeof(arg) - 1);
	
	new target = cmd_target(iPlayer, arg, CMDTARGET_OBEY_IMMUNITY|CMDTARGET_NO_BOTS|CMDTARGET_ALLOW_SELF);
	if( !target ) return PLUGIN_HANDLED;
	
	read_argv(2, arg, sizeof(arg) - 1);
	new Cash = str_to_num(arg);
	
	if ( Cash <= 0 ) return PLUGIN_HANDLED;
	g_iCash[target] -= Cash;
	
	new t_name[60];
	get_user_name(target, t_name, 59);

	client_print(iPlayer, print_console, "%s You removed %i cash from %s!", PREFIX, Cash, t_name);
	
	return PLUGIN_CONTINUE;
}

public bad_fix2() {
	new Float:gametime = get_gametime();
	if(gametime - g_gametime2 > 2.5)
		for(new i = 0; i < 32; i++)
			grenade[i] = 0;
}

public eventFlash( id ) {
	new Float:gametime = get_gametime();
	if(gametime != g_gametime) { 
		g_gametime = gametime;
		for(new i = 0; i < 33; i++) 
			g_track[i] = false;
		g_track_enemy = false;
	}    
	if(g_iItemLevel[id][NO_FLASH] >= 1) {
		g_track_enemy = true;

		message_begin(MSG_ONE, g_msgScreenFade, {0,0,0}, id);
		write_short(1);
		write_short(1);
		write_short(1);
		write_byte(0);
		write_byte(0);
		write_byte(0);
		write_byte(255);
		message_end();
	}
}

public flash_delay() {
	if(g_track_enemy == false) {
		for(new i = 0; i < 33; i++) {
			if(g_track[i] == true && is_user_connected(i)) {
				message_begin(MSG_ONE, g_msgScreenFade, {0,0,0}, i) ;
				write_short(1);
				write_short(1);
				write_short(1);
				write_byte(0);
				write_byte(0);
				write_byte(0);
				write_byte(255);
				message_end();
			}
		}
	}
}

public grenade_throw2() {
	if(g_sync_check_data == 0)
		return PLUGIN_CONTINUE;
	g_sync_check_data--;
	if(read_datanum() < 2)
		return PLUGIN_HANDLED_MAIN;

	if(read_data(1) == 11 && (read_data(2) == 0 || read_data(2) == 1))
		add_grenade_owner(last);

	return PLUGIN_CONTINUE;
}

public fire_in_the_hole() {
	new name[32];
	read_data(3, name, 31);
	new temp_last = get_user_index(name);
	new junk;
	if((temp_last == 0) || (!is_user_connected(temp_last)))
		return PLUGIN_CONTINUE;
	if(get_user_weapon(temp_last,junk,junk) == CSW_FLASHBANG) {
		last = temp_last;
		g_sync_check_data = 2; 
	}
	return PLUGIN_CONTINUE;
}

public fire_in_the_hole2() {
	new name[32];
	read_data(4, name, 31);
	new temp_last = get_user_index(name);
	new junk;
	if((temp_last == 0) || (!is_user_connected(temp_last)))
		return PLUGIN_CONTINUE;
	if(get_user_weapon(temp_last,junk,junk) == CSW_FLASHBANG) {    
		last = temp_last;
		g_sync_check_data = 2;
	}
	return PLUGIN_CONTINUE;
}

public add_grenade_owner(owner)
{
	new Float:gametime = get_gametime();
	g_gametime2 = gametime;
	for(new i = 0; i < 32; i++)
	{
		if(grenade[i] == 0)
		{
			grenade[i] = owner;
			return;
		}
	}
}

// from XxAvalanchexX "Flashbang Dynamic Light"
public fw_emitsound(entity,channel,const sample[],Float:volume,Float:attenuation,fFlags,pitch) {
	if(!equali(sample,"weapons/flashbang-1.wav") && !equali(sample,"weapons/flashbang-2.wav"))
		return FMRES_IGNORED;

	new Float:gametime = get_gametime();

	//in case no one got flashed, the sound happens after all the flashes, same game time
	if(gametime != g_gametime) {
		return FMRES_IGNORED;
	}
	return FMRES_IGNORED;
}
// NoFlash Blinding - End

public DoZoom2(id)
{
	
	if(	!is_user_alive(id)
	||	get_pdata_float(id, m_flNextAttack, XTRA_OFS_PLAYER) >= 0.0
	||	~get_pdata_int(id, m_afButtonPressed, XTRA_OFS_PLAYER) & IN_ATTACK2
	&&	g_iItemLevel[id][SCOPE] <= 0 )
	{
		return 0;
	}
	else if(pev(id,pev_button) & IN_ATTACK2 && get_user_weapon(id) == CSW_DEAGLE && g_iItemLevel[id][SCOPE] >= 1)
	{
		
		new iFov
		switch( get_pdata_int(id, m_iFOV, XTRA_OFS_PLAYER) )
		{
			case 40:iFov = 15
			case 15:iFov = 0
			default:iFov = 40
		}
	
		set_pev(id, pev_fov, iFov)
		set_pdata_int(id, m_iFOV, iFov, XTRA_OFS_PLAYER)
		
		set_pdata_float(id, m_flNextAttack, 0.25)
		emit_sound(id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100)
	}
	return PLUGIN_CONTINUE;
}

Print(iPlayer, const sMsg[], any:...)
{
	static i; i = iPlayer ? iPlayer : get_Player();
	if ( !i ) return;
	
	new sMessage[256];
	new len = formatex(sMessage, sizeof(sMessage) - 1, "^x04%s ", PREFIX);
	vformat(sMessage[len], sizeof(sMessage) - 1 - len, sMsg, 3);
	sMessage[192] = '^0';
		
	static msgid_SayText;
	if ( !msgid_SayText ) msgid_SayText = get_user_msgid("SayText");
	
	new const team_Names[][] =
	{
		"",
		"TERRORIST",
		"CT",
		"SPECTATOR"
	};
		
	new sTeam = get_user_team(i);
	
	team_Info(i, iPlayer, team_Names[0]);
		
	message_begin(iPlayer ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgid_SayText, _, iPlayer);
	write_byte(i);
	write_string(sMessage);
	message_end();
		
	team_Info(i, iPlayer, team_Names[sTeam]);
}

team_Info(receiver, sender, sTeam[])
{
	static msgid_TeamInfo;
	if ( !msgid_TeamInfo ) msgid_TeamInfo = get_user_msgid("TeamInfo");
	
	message_begin(sender ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgid_TeamInfo, _, sender);
	write_byte(receiver);
	write_string(sTeam);
	message_end();
}

get_Player()
{
	for ( new iPlayer = 1; iPlayer <= get_maxplayers(); iPlayer++ )
	{
		return iPlayer;
	}
	
	return 0;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\ rtf1\ ansi\ deff0{\ fonttbl{\ f0\ fnil Tahoma;}}n\ viewkind4\ uc1\ pard\ lang1053\ f0\ fs16 n\ par }
*/

Last edited by SkatInfinity; 09-11-2012 at 02:46.

Понравилась статья? Поделить с друзьями:
  • Pawno error 036 empty statement
  • Pawno error 035 argument type mismatch argument 2
  • Pawno error 032
  • Pawno error 027 invalid character constant
  • Pawncc системная ошибка