#1
Отправлено 20 мая 2018 — 19:53
-
- Прохожий
-
Вроде все, что нужно стоит…
error 001: expected token: ";", but found "-identifier-"
forward CheckRegistration (playerid); public CheckRegistration (playerid) { new rows cache_get_row_count(rows); if (rows) ShowLogin(playerid); else ShowRegistration(playerid); }
0
#2
Отправлено 20 мая 2018 — 19:59
-
- Новичок
-
nipen (20 мая 2018 — 19:53) писал:
Нажмите сюда, чтобы прочитать это сообщение. [
Показать
]
Вставь это, вместо своего:
public CheckRegistration (playerid) { new rows; cache_get_row_count(rows); if (rows) ShowLogin(playerid); else ShowRegistration(playerid); }
Ты забыл закрыть new rows
Сообщение отредактировал AssaultBreck: 20 мая 2018 — 20:00
0
#3
Отправлено 20 мая 2018 — 20:07
-
- Прохожий
-
AssaultBreck (20 мая 2018 — 19:59) писал:
Нажмите сюда, чтобы прочитать это сообщение. [
Показать
]
Внатуре. Спасибо. Всех благ тебе.
0
Pawno-Info.Ru — Портал о программировании №1
Присоединяйтесь к нам сейчас, чтобы получить доступ ко всем нашим функциям и ответы на все интересующие Вас вопросы. После регистрации Вы сможете создавать темы, публиковать ответы, влиять на репутацию пользователей форума, обмениваться личными сообщениями и многое другое. Это быстро и совершенно бесплатно, так чего же Вы ждете?
Маппинг для сервера
Если вы хотите обновить Ваш сервер новыми доработками — то зайдите в наш раздел. Большой выбор готовых решений от наших пользователей
Моды для сервера
Огромный выбор различных модификаций для Вашего сервера. Пролистайте эти темы! Возможно именно там Вы найдете то, что искали уже давно.
Программы для скриптера
Подборка удобных программ для скриптера
-
Уважаемый Гость.
— Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
— После решения Вашего вопроса (проблемы) — нажмите «Лучший ответ», на сообщении, которое его решило. За игнорирование этого действия — Вы получите соответствующее предупреждение. Мы — стараемся Вам помочь. Уделите 10 секунд — чтобы нажать кнопку. (Если у Вас нет такой возможности — укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
ЗАПРЕЩЕНО:
— Cоздавать темы с названиями «Помогите», «Плиз», «Ошибка», «Не могу найти», «Хелп» и тому подобное;
— Cоздавать темы без детального описания того, что нужно исправить.
— Cоздавать темы из одного скриншота.
За игнор правил форума — Ваша тема будет удалена, а Вы получите системное предупреждение.
-
Автор темы
McKing
-
Дата начала
25 Апр 2021
McKing
Нуль
- Регистрация
- 28 Сен 2018
- Сообщения
- 6
- Лучшие ответы
- 0
- Репутация
- 0
- Возраст
- 24
-
#1
Здравствуйте. Я хочу установить на свой сервер sampvoice. Но при компиляции мода выскакивают ошибки (error) по всём коде:
error 001: expected token: «-identifier-«, but found «forward»
error 010: invalid function or declaration
error 010: invalid function or declaration
error 001: expected token: «-identifier-«, but found «forward»
error 010: invalid function or declaration
error 010: invalid function or declaration
Код:
PHP:
public SV_VOID:OnPlayerActivationKeyPress(SV_UINT:playerid, SV_UINT:keyid)
{
if(keyid == 0x42 && lstream[playerid]) SvAttachSpeakerToStream(lstream[playerid], playerid);
if (keyid == 0x5A && gstream) SvAttachSpeakerToStream(gstream, playerid);
}
public SV_VOID:OnPlayerActivationKeyRelease(SV_UINT:playerid, SV_UINT:keyid)
{
if (keyid == 0x42 && lstream[playerid]) SvDetachSpeakerFromStream(lstream[playerid], playerid);
if (keyid == 0x5A && gstream) SvDetachSpeakerFromStream(gstream, playerid);
}
Мне сказали что нужно добавить forward, но когда добавляю forward он эррорится:
error 010: invalid function or declaration
error 001: expected token: «-identifier-«, but found «forward»
error 010: invalid function or declaration
error 010: invalid function or declaration
error 010: invalid function or declaration
error 001: expected token: «-identifier-«, but found «forward»
error 010: invalid function or declaration
error 010: invalid function or declaration
Код:
PHP:
forward SV_VOID:OnPlayerActivationKeyPress(SV_UINT:playerid, SV_UINT:keyid);
public SV_VOID:OnPlayerActivationKeyPress(SV_UINT:playerid, SV_UINT:keyid)
{
if(keyid == 0x42 && lstream[playerid]) SvAttachSpeakerToStream(lstream[playerid], playerid);
if (keyid == 0x5A && gstream) SvAttachSpeakerToStream(gstream, playerid);
}
forward SV_VOID:OnPlayerActivationKeyRelease(SV_UINT:playerid, SV_UINT:keyid);
public SV_VOID:OnPlayerActivationKeyRelease(SV_UINT:playerid, SV_UINT:keyid)
{
if (keyid == 0x42 && lstream[playerid]) SvDetachSpeakerFromStream(lstream[playerid], playerid);
if (keyid == 0x5A && gstream) SvDetachSpeakerFromStream(gstream, playerid);
}
Помогите пожалуйста
Содержание
- Форум Pawn.Wiki — Воплоти мечту в реальность!: Error 001 — Форум Pawn.Wiki — Воплоти мечту в реальность!
- Исправляем ошибки/предупреждения
- Batka1337
- Error 001 expected token identifier but found forward
- Вопросы
- Форум Pawn.Wiki — Воплоти мечту в реальность!: Все о ошибках и их устранении — Форум Pawn.Wiki — Воплоти мечту в реальность!
Форум Pawn.Wiki — Воплоти мечту в реальность!: Error 001 — Форум Pawn.Wiki — Воплоти мечту в реальность!
- Pawn скриптинг
- Первая помощь
- Проблемы с компилированием
- Правила форума
- Просмотр новых публикаций
- Группа: Пользователи
- Сообщений: 8
- Регистрация: 20 мая 18
Вроде все, что нужно стоит.
- Группа: Активные пользователи
- Сообщений: 70
- Регистрация: 06 июля 16
nipen (20 мая 2018 — 19:53) писал:
Вроде все, что нужно стоит.
Вставь это, вместо своего:
Ты забыл закрыть new rows
Сообщение отредактировал AssaultBreck: 20 мая 2018 — 20:00
- Группа: Пользователи
- Сообщений: 8
- Регистрация: 20 мая 18
AssaultBreck (20 мая 2018 — 19:59) писал:
Источник
Исправляем ошибки/предупреждения
Batka1337
Хацкер-программист
Ошибка: error 001: expected token: «;», but found «бла-бла»
Решение: Идём на строку выше той, что указана в ошибке и ставим в конце ; (точку с запятой).
Ошибка: error 021: symbol already defined: «бла-бла» или warning 219: local variable «бла-бла» shadows a variable at a preceding level
Решение: Ошибка появляется, если вы несколько раз создали одну и ту же переменную,stock,public.Для решения вам просто требуется удалить дубликат.
Ошибка: error 024: «break» or «continue» is out of context
Решение: break,continue используется только в цикле (for), данная ошибка появляется, если вы использовали их не в цикле. Для решения вам нужно просто заменить их.
Ошибка: error 032: array index out of bounds (variable «cartek»)
Решение: Ошибка появляется, если у вас превышен индекс массива. Для решение вам просто надо увеличить ‘число’ в создании массива.
Ошибка: error 040: duplicate «case» label (value %d)
Решение: Ошибка появляется, если вы два раза используете case с одним и тем же параметром.
Ошибка: fatal error 100: cannot read from file: «бла-бла»
Решение: Ошибка появляется, если вы подключили инклуд и не добавили в папку pawno/include. Для решения вам просто надо добавить в папку данный инклуд.
Ошибка: warning 203: symbol is never used: «бла-бла»
Решение: Ошибка появляется, если созданная переменная нигде не используется. Для решения вам просто требуются ещё удалить.
Ошибка: warning 209: function «бла-бла» should return a value
Решение: Для решения проблемы в данной функции/команде вам следует добавить в конец return true/return false.
Ошибка: warning 217: loose indentation
Решение: Для решения проблемы выровняйте строки.
Ошибка: warning 235: public function lacks forward declaration (symbol «бла-бла»)
Решение: Ошибка появляется, если вы создали public,а forward нет. Для решения вам просто надо создать forward к public’y.
По мере возможности тема будет дополняться
Источник
Error 001 expected token identifier but found forward
Вопрос от RASTAMAN , 3 сентября, 2017
Вопросы
- VIP Сообщений: 883
Регистрация: 28.07.2017
КПД: 73%
Ошибка: error 001: expected token: «;», but found «]»(пример)
Решение: Идём на строку выше той, что указана в ошибке и ставим в конце: ;
Ошибка: error 021: symbol already defined: «понятно в общем» или warning 219: local variable «тоже» shadows a variable at a preceding level
Решение: Ошибка появляется, если вы несколько раз создали одну и ту же переменную, stock, public.Для решения вам просто требуется удалить дубликат.
Ошибка: error 024: «break» or «continue» is out of context
Решение: break, continue используется только в цикле (for), данная ошибка появляется, если вы использовали их не в цикле. Для решения вам нужно заменить их.
Ошибка: error 032: array index out of bounds (variable «cartek»)
Решение: Ошибка появляется, если у вас превышен индекс массива. Для решения вам просто надо увеличить число в создании массива.
Ошибка: error 040: duplicate «case» label (value %d)
Решение: Ошибка появляется, если вы два раза используете case с одним и тем же параметром.
Ошибка: fatal error 100: cannot read from file: «понятно»
Решение: Ошибка появляется, если вы подключили инклуд и не добавили в папку pawno/include. Для решения вам просто надо добавить в папку данный инклуд.
Ошибка: warning 203: symbol is never used: «гы»
Решение: Ошибка появляется, если созданная переменная нигде не используется. Для решения вам просто требуются ещё удалить.
Ошибка: warning 209: function «ясно» should return a value
Решение: Для решения проблемы в данной функции/команде вам следует добавить в конец return true/return false.
Ошибка: warning 217: loose indentation
Решение: Для решения проблемы выровняйте строки.
Ошибка: warning 235: public function lacks forward declaration (symbol «ясно»)
Решение: Ошибка появляется, если вы создали public,а forward нет. Для решения вам просто надо создать forward к public’y.
Ошибка: fatal error 107: too many error messages on one line
Решение: Исправьте ошибки, которые даны выше, в частности в 1 строке. Именно поэтому выходит такая ошибка.
Ошибка: fatal error 100: cannot read from file: «%s»
Решение: Возможно вы удалили какую-то строку/файл, которую нужно добавить и проблема будет решена, вместо %s вам будет дана это строка/файл. Насколько я помню
Автор: Transcend
Тему можно дополнять!
Источник
Форум Pawn.Wiki — Воплоти мечту в реальность!: Все о ошибках и их устранении — Форум Pawn.Wiki — Воплоти мечту в реальность!
- Pawn скриптинг
- Школа скриптинга
- Уроки
- Правила форума
- Просмотр новых публикаций
- Группа: Активные пользователи
- Сообщений: 443
- Регистрация: 23 марта 13
Список часто встречаемых ошибок в pawno
Данная тема содержет наиболее распространенные ошибки и предупреждения в pawno при создании скриптов sa-mp
Когда компилятор находит ошибку в файле, то выводится сообщение, в таком порядке:
- Имя файла
- номер строки компилятора были обнаружены ошибки в скобках, непосредственно за именем
- класс error (ошибка, фатальная ошибка или предупреждение)
- номер ошибки
- описание ошибки
Примечание: эта ошибка может быть на линии, над линией, что показано, так как компилятор не всегда может установить ошибку перед проанализировав полное выражение.
Ошибки разделяются на три класса:
Ошибки (errors)
- Описание ситуации когда компилятор не может скомпилировать код
- Ошибки номеруются от 1 до 99
Критические ошибки (Fatal errors)
- Критические ошибки и описание, от которых компилятор не может восстановиться.
- Парсинг прерывается (нет отклика программы).
- Критические ошибки номеруются от 100 до 199.
Предупреждения ( Warings )
- Предупреждения указывают на возможную причину возникновения багов, вылетов.
- Предупреждения номеруются от 200 до 299.
001: expected token (ожидаемый знак)
Обязательный знак отсутствует
002: only a single statement (or expression) can follow each “case” (только одно выражение может быть в одной строке с «case»
В каждом case оператора switch без фигурных скобок может содержаться только один оператор если больше нужно ставить скобки.
Пример:
Так же могут быть еще и предупреждения и дополнительные ошибки:
Вот так это можно исправить:
004: function «x» is not implemented (Функция «x» не используется
Часто бывает что в функции выше пропущена скобка.
025: function heading differs from prototype
Это проиходит когда в функции не совпадают аргументы.
035: argument type mismatch (argument x) (не совпадение типов аргумента(ов)
К примеру когда в место playerid — integer аргумента стоит «playerid» — string или 0.5 — float
046: unknown array size (variable x)
Не указан размер массива.
047: array sizes do not match, or destination array is too small
Размер массива мал или не совпадает.
- Многомерные массивы должны иметь одинаковый размер
- Одномерные массив к которому присваивают(правый должен иметь больше размер чем левый.
В приведенном выше коде размер строки «Hello world!» ровна 12 байт а массив к которому присваиваем имеет размер 8 байт из этого и складывается ошибка.
Если увеличить размер массива destination до 13 байт то ошибка исправится.
055: start of function body without function header
Начало тела функции без функции заголовка.
Критические ошибки (FATAL ERRORS)
Компилятор не может найти или прочитать указанный файл, убедитесь что он находится по адресу ( pawnoinclude).
Пример:
Совет
Не нужно открывать ваш код дважды, не нужно тыкать несколько раз на файл. Откройте сначала редактор, потом ваш проект.
202: number of arguments does not match definition
Описание ошибки довольно понятное, это значит что вы используете слишком мало или слишком много аргументов в функции, обычно это признак того что функция используется не правильно, обратитесь к документации.
Функция GetPlayerHealth согласно официальному источнику wiki.sa-mp.com имеет два аргумента playerid и Float:health ссылка
203: symbol is never used: «symbol»
Вы создали переменную или функцию и она ни где не используется тогда ищите в окне компилятора это предупреждение, это не как не влияет на код и не угражает ему, так что если вы удалите переменную или функцию которая не используется, то вы сэкономите память.
204: symbol is assigned a value that is never used: «symbol»
Это предупреждение аналогично к предыдущему, разница в том что к переменной что то присвоено и оно не как не используется, это безопасно 🙂
209: function should return a value
Функция ничего не возвращает, вы создали её:
Решили её присвоить к чему нибудь к примеру:
Вот так исправить
211: possibly unintended assignment
Если вы введете оператор присваивания в условии и оно не будет в круглых скобках то будет предупреждение
213: tag mismatch ( несовпадение тегов)
Это происходит когда:
- Тип переменной указан не верно или не имеет его
- Выражения по обе стороны бинарного оператора имеют разные теги
- В пременную возвращен не верный тип переменной или не имеющий его.
- Индексирование массива, который требует тегами индекс без тега или неправильное имя тега
Часто это бывает на 3d текстах или тексдравах Text3D, Text
217: loose indentation
Компилятор выдаст ошибку если не соблюдены отступы.
Отступы делаются по нажатью кнопки TAB это практика в программировании для удобного чтения кода.
219: local variable «foo» shadows a variable at a preceding level
Локальная переменная в тени глобальной то есть над локальной переменной создана точно такая же глобальная. В практике программирования префиксом глобальной переменной является «g» в начале переменной к примеру
любыми способами избегайте их.
Решение:
Просто переименуйте локальную переменную team.
225: unreachable code ( недоступный код )
Это происходит тогда когда вы пишите какой нибудь код после return, после return’а код не выполняется и он считается бесполезным
235: public function lacks forward declaration (symbol «symbol»)
Отсутствует forward.
Надеюсь эта статья поможет вам в языке программирования, желаю вам не повторять ошибок дважды и что бы ваш код был быстрым, надежным!
Оставляйте ваши отзывы, ставьте плюсы, пишите недостатки ошибки, недостатки статьи или их недочеты. Удачи в мире PAWNO!
Источник
Ошибка: error 001: expected token: «;», but found «бла-бла»
Решение: Идём на строку выше той, что указана в ошибке и ставим в конце ; (точку с запятой).
Ошибка: error 021: symbol already defined: «бла-бла» или warning 219: local variable «бла-бла» shadows a variable at a preceding level
Решение: Ошибка появляется, если вы несколько раз создали одну и ту же переменную,stock,public.Для решения вам просто требуется удалить дубликат.
Ошибка: error 024: «break» or «continue» is out of context
Решение: break,continue используется только в цикле (for), данная ошибка появляется, если вы использовали их не в цикле. Для решения вам нужно просто заменить их.
Ошибка: error 032: array index out of bounds (variable «cartek»)
Решение: Ошибка появляется, если у вас превышен индекс массива. Для решение вам просто надо увеличить ‘число’ в создании массива.
Ошибка: error 040: duplicate «case» label (value %d)
Решение: Ошибка появляется, если вы два раза используете case с одним и тем же параметром.
Ошибка: fatal error 100: cannot read from file: «бла-бла»
Решение: Ошибка появляется, если вы подключили инклуд и не добавили в папку pawno/include. Для решения вам просто надо добавить в папку данный инклуд.
Ошибка: warning 203: symbol is never used: «бла-бла»
Решение: Ошибка появляется, если созданная переменная нигде не используется. Для решения вам просто требуются ещё удалить.
Ошибка: warning 209: function «бла-бла» should return a value
Решение: Для решения проблемы в данной функции/команде вам следует добавить в конец return true/return false.
Ошибка: warning 217: loose indentation
Решение: Для решения проблемы выровняйте строки.
Ошибка: warning 235: public function lacks forward declaration (symbol «бла-бла»)
Решение: Ошибка появляется, если вы создали public,а forward нет. Для решения вам просто надо создать forward к public’y.
По мере возможности тема будет дополняться
Posts: 262
Threads: 51
Joined: May 2014
Reputation:
0
I don’t see any problem here
Error: error 001: expected token: «;», but found «-identifier-«
pawn Код:
PlayerTextDrawSetString(i, HUD[i][0], szString);
pawn Код:
new PlayerText:HUD[MAX_PLAYERS][1];
Posts: 85
Threads: 17
Joined: Jul 2015
PlayerTextDrawSetString(i, HUD[i], szString);
Posts: 6,242
Threads: 8
Joined: Jun 2008
Quote:
Originally Posted by DeathCore
PlayerTextDrawSetString(i, HUD[i], szString);
Could you explain how you think that works please…
Posts: 262
Threads: 51
Joined: May 2014
Reputation:
0
another problem.
the first one fixed.
When i add this function with a timer or even without a timer the console is closing auto.
pawn Код:
SetTimer("UpdateHud", 2000, 1);
pawn Код:
forward UpdateHud();
public UpdateHud()
{
foreach (new i : Player)
{
if (pInfo[i][pLogged])
{
new
szString[200];
format(szString, sizeof szString, "~w~Cash: ~w~$%d", GetPlayerMoney(i));
PlayerTextDrawSetString(i, Hud[i], szString);
}
}
return 1;
}
Posts: 1,506
Threads: 13
Joined: Jun 2015
Posts: 262
Threads: 51
Joined: May 2014
Reputation:
0
Nothing in the server logs.
The console doesn’t say anything.
Posts: 6,242
Threads: 8
Joined: Jun 2008
I can’t see how you think that the first error got fixed, and yet are now having a crash, resulting from the same area of code…
Posts: 4,885
Threads: 57
Joined: Jun 2012
Reputation:
0
Quote:
Originally Posted by DavidGravelli
another problem.
the first one fixed.
When i add this function with a timer or even without a timer the console is closing auto.
pawn Код:
SetTimer("UpdateHud", 2000, 1);
pawn Код:
forward UpdateHud();
public UpdateHud()
{
foreach (new i : Player)
{
if (pInfo[i][pLogged])
{
new
szString[200];
format(szString, sizeof szString, "~w~Cash: ~w~$%d", GetPlayerMoney(i));
PlayerTextDrawSetString(i, Hud[i], szString);
}
}
return 1;
}
That is counter-intuitive why would you ever need a timer to update that textdraw? You only need to update when a players money actually changes using a timer is silly.
Posts: 47
Threads: 8
Joined: Sep 2017
Reputation:
0
Quote:
Originally Posted by Pottus
That is counter-intuitive why would you ever need a timer to update that textdraw? You only need to update when a players money actually changes using a timer is silly.
Right
Posts: 47
Threads: 8
Joined: Sep 2017
Reputation:
0
Get a serverside money detector and set a textdraw updater
Код HTML:
forward GivePlayerMoneyEx(playerid, amount); public GivePlayerMoneyEx(playerid, amount) // replace all of the native function { new szString[200]; ResetPlayerMoney(playerid); pInfo[playerid][pCash] += amount; GivePlayerMoneyEx(playerid, pInfo[playerid][pCash]); format(szString, sizeof szString, "~w~Cash: ~w~$%d", pInfo[playerid][pCash]); PlayerTextDrawSetString(playerid, Hud[playerid], szString); return 1; } forward GetPlayerMoneyEx(playerid); public GetPlayerMoneyEx(playerid) { return pInfo[playerid][pCash]; } // replace all of the native function
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <fun>
#include <cstrike>
#include <nvault>
#include <sqlx>
#include <fakemeta>
#include <csx>
#pragma tabsize 0
#pragma semicolon 1
#define PLUGIN «EvilArmy»
#define VERSION «1.1»
#define AUTHOR «OverGame» //Оригинал ARCTIC
#define ADM_MENU ADMIN_IMMUNITY
#define RED 64
#define GREEN 64
#define BLUE 64
#define UPDATEINTERVAL 1.0
#define ECHOCMD
#define MAX_SIMBOLS 128
#define SIZE 10
new g_SayText
new g_TranslitSimbol[MAX_SIMBOLS][SIZE];
new g_EngSimbol[MAX_SIMBOLS][SIZE];
new g_SplitSimbol[SIZE];
new gMaxPlayers;
new gCvarOn;
new gCvarImmunity;
new bool:gOnOff[33] = { true, … };
new stats[8],bodyhits[8],irank
new g_vault;
new Handle:g_SqlTuple;
new g_Error[512];
enum _:PlData
{
gId,gExp,gLevel,gTempKey
};
new UserData[33][PlData];
new gMessage[256];
new g_MsgHud,MaxPlayers,levelUp[33],gSayText,gStatusText
new bool:restr_blocked;
new const gRankNames[][] =
{
«I_0»,«I_1»,«I_2»,«I_3»,«I_4»,«I_5»,«I_6»,«I_7»,«I_8»,«I_9»,«I_10»,«I_11»,«I_12»,«I_13»,«I_14»,
«I_15»,«I_16»,«I_17»,«I_18»,«I_19»,«I_20»
};
new const gLevels[] =
{
0,15,30,60,100,180,350,750,999,1500,2200,2800,3200,3900,4500,5000,5500,6000,7000,8000
};
new const gNades[][] =
{
{0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1}
}
new const restrict_bonus[][] =
{
«35hp»,
«most_wanted»,
«ka_wintershank»
};
new gRestrictMaps,gAdminGMsg,gBonusLevel,gFlash,gSmoke,gHe,gHpbylevel,gApbylevel
,gArmyChat,gSaveType,gTableName,gHost,gUser,gPassword,gDbName,gSlash,
gTk,gLostXpTk,gLevelUpmsg,gAllChat,gProgressBar,gBombDefuseXp,gBombPlantXp,gBomb, gMinPlayers
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_cvar(PLUGIN,VERSION,FCVAR_SERVER | FCVAR_SPONLY);
register_cvar(PLUGIN,VERSION,FCVAR_SERVER, 0.0);
register_cvar («amx_client_translit», «1»)
set_cvar_string(PLUGIN,VERSION);
register_dictionary («translit.txt»)
gRestrictMaps = register_cvar( «restrict_maps», «0»);// вкл запрет бонусов на карте.
gBonusLevel = register_cvar( «level_bonus», «0»);// вкл оружие при получении уровня.
gFlash = register_cvar( «flash_nades», «0»);// вкл бонуса флешек
gSmoke = register_cvar( «smoke_nades», «1»);// вкл бонуса дымовых
gHe = register_cvar( «he_nades», «1»);// вкл бонуса осколочных
gHpbylevel = register_cvar( «hp_by_level», «3»);// кол-во хп, которое дается за лвл, если = 0 — то выкл
gApbylevel = register_cvar( «ap_by_level», «5»);// кол-во брони, которое дается за лвл, если = 0 — то выкл
gArmyChat = register_cvar( «army_chat», «1»);// использовать чат плагина, то есть приставка в чате, цвет сообщ. для админа
gAdminGMsg = register_cvar( «admin_color», «1»);// 1 = сообщ.админа зеленое,0 = желтое, 2 = цвета команды
gSaveType = register_cvar( «save_type», «1»);// 0 — nvault, 1- mysql.
gSlash = register_cvar( «slash_messages», «1»);// не отображать команды со слэшем
gTk = register_cvar( «team_kill_lost_xp», «1»);// терять exp при тимкилле
gLostXpTk = register_cvar( «lost_xp_val», «3»);// кол-во теряемых exp при тк
gLevelUpmsg = register_cvar( «level_up_msg», «1»);// сообщение при лвл-апе игрока : 1- вкл (всем), 2 — только игроку
gAllChat = register_cvar( «all_chat», «0»);// 1 — чат для всех(метвые и живые), 0-живые не видят чат мертвых и наоборот
/***/ gProgressBar = register_cvar( «progress_bar_pos», «0»);// расположение данных игрока: 0 — hud(под радаром), 1 — под чатом
gMinPlayers = register_cvar( «min_players», «4»);// мин.кол-во игроков для получения опыта за действия с бомбой
gBomb = register_cvar( «bomb_xp», «1»);// вкл получения опыта над действиями с бомбой
gBombDefuseXp = register_cvar( «bdefuse_xp», «5»);// кол-во получаемых exp при разминировании бомбы
gBombPlantXp = register_cvar( «bplant_xp», «4»);// кол-во получаемых exp при минировании бомбы
gHost = register_cvar( «mysql_host», «localhost»);
gUser = register_cvar( «mysql_user», «root»);
gPassword = register_cvar( «mysql_password», «qwerty»);
gDbName = register_cvar( «mysql_db_name», «database»);
gTableName = register_cvar( «mysql_table_name», «evil_army»);
gCvarOn = register_cvar(«amx_speclist», «1», 0, 0.0);
gCvarImmunity = register_cvar(«amx_speclist_immunity», «1», 0, 0.0);
register_clcmd(«say /speclist», «cmdSpecList», —1, «»);
gMaxPlayers = get_maxplayers();
set_task(UPDATEINTERVAL, «tskShowSpec», 123094, «», 0, «b», 0);
register_logevent( «EventRoundStart», 2, «1=Round_Start» );
register_forward(FM_Sys_Error, «fw_ServerDown»);
register_forward(FM_GameShutdown, «fw_ServerDown»);
register_forward(FM_ServerDeactivate, «fw_ServerDown»);
register_event( «DeathMsg»,«EventDeath»,«a»);
if(get_pcvar_num(gProgressBar) != 0){
set_task(1.0,«StatusText»,_,_,_, «b»);
} else {
set_task(1.0,«Info»,_,_,_, «b»);
}
register_message(get_user_msgid(«SayText»), «msg_SayText»);
gStatusText = get_user_msgid(«StatusText»);
gSayText = get_user_msgid («SayText»);
g_MsgHud = CreateHudSyncObj();
MaxPlayers = get_maxplayers();
register_dictionary(«army.txt» );
if(get_pcvar_num(gRestrictMaps))
{
new szMapName[64];
get_mapname(szMapName,63);
for(new a = 0; a < sizeof restrict_bonus; a++)
{
if(equal(szMapName, restrict_bonus[a]))
{
restr_blocked = true;
log_amx(«[EvilArmy] weapon menu is blocked on map [%s].»,restrict_bonus[a]);
break;
} else {
restr_blocked = false;
}
}
#include < amxmodx >
#include < amxmisc >
#include < fakemeta >
#include < cstrike >
#include < engine >
#include < hamsandwich >
#include < xs >
// #include < dhudmessage >
#define BREAK_COMPUTER 6
#define MAX_PLAYERS 32
#define is_valid_player(%1) ( 1 <= %1 <= gMaxPlayers )
new const gDamageSounds[ ][ ] =
{
"debris/metal1.wav",
"debris/metal2.wav",
"debris/metal3.wav"
};
new const gDispenserClassname[ ] = "NiceDispenser";
new const gDispenserActive[ ] = "error_csdm/dispenser/dispenser.wav";
new const gDispenserMdl[ ] = "models/error_csdm/er_dispenser/dispenser.mdl";
new const gHealingSprite[ ] = "sprites/error_csdm/dispenser/dispenser.spr";
new g_iSPR_Smoke3;
new gHealingBeam;
new gMaxPlayers;
new g_iPlayerDispenser[33]
new ExplSpr
new Float:flood_disptouch[33]
new const d_upgcost[4] = {2500,2500,3000,6000}
new const d_upgcost_vip[4] = {2000,2000,1500,4500}
new const d_enthp[4] = {1000,2000,3000,8000}
new const d_radius[4] = {600,750,900,1100}
new const d_hp[4] = {200,280,350,500}
new const d_ap[4] = {300,400,500,500}
new const Float:d_takehp[4] = {1.0,1.5,2.0,2.5}
new const Float:d_takeap[4] = {1.0,1.5,2.0,2.5}
new bool:bDispenserBuild[ MAX_PLAYERS ];
new touchdisp[33]
//new gPlayerCost, gVipCost
new g_flagVip, g_Nagrada
new g_dips_vip, g_dips_player
public plugin_init( )
{
register_plugin( "Error Dispenser", "1.1", "Error" )
register_event( "TextMsg", "EVENT_TextMsg", "a", "2&#Game_C", "2&#Game_w", "2&#Game_will_restart_in" );
register_logevent( "LOG_RoundEnd", 2, "1=Round_End" );
register_event ( "Spectator", "ev_Spectation", "a" )
register_forward ( FM_TraceLine, "fw_TraceLine_Post", 1 )
RegisterHam( Ham_TakeDamage, "func_breakable", "bacon_TakeDamage", 1 );
RegisterHam( Ham_TakeDamage, "func_breakable", "bacon_TakeDamagePre", 0 );
register_think( gDispenserClassname, "DispenserThink" );
register_touch ( gDispenserClassname, "player", "fw_DispenserTouch" )
register_clcmd( "build_dispenser", "CommandDispenserBuild" );
register_clcmd( "detonate_dispenser", "disppp_menu" );
gMaxPlayers = get_maxplayers( );
g_flagVip = register_cvar("er_dispenser_flag_vip", "u") // Флаг для Vip игрока - Скидка на прокачку и установку раздатчика
g_Nagrada = register_cvar("er_dispenser_nagrada", "3000") // Награда за разрушение раздатчика, игроку.
g_dips_vip = register_cvar("er_dispenser_vip", "2") // Сколько раздатчиков может поставить VIP с флагом выше (er_dispenser_flag_vip)
g_dips_player = register_cvar("er_dispenser_player", "1") // Сколько раздатчиков может поставить простой игрок
}
public disppp_menu(id)
{
if(g_iPlayerDispenser[id] == 0){
ChatColor ( id, "^4У тебя нет раздатчика")
return HAM_IGNORED
}
new szItem[128];
new szItem1[128];
new msentry_item = menu_create("yВыберите раздатчик!", "cl_mendisp")
static ent = -1
while ((ent = find_ent_by_class(ent, gDispenserClassname)))
{
if( pev( ent, pev_iuser2) != id) continue;
if(is_valid_ent(ent))
{
new iLevel = pev ( ent, pev_iuser3 )
new iHealth = pev ( ent, pev_health )
format(szItem, 127, "%d", ent)
format(szItem1, 127, "Уровень r%d w[HP y%dw]", iLevel, iHealth)
menu_additem( msentry_item, szItem1, szItem, 0)
}
}
menu_setprop(msentry_item, MPROP_EXIT, MEXIT_ALL)
menu_setprop(msentry_item, MPROP_EXITNAME, "yВыход")
menu_display(id, msentry_item, 0)
return PLUGIN_HANDLED
}
public cl_mendisp(id, menu, item) {
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new i_Key = str_to_num(s_Data)
menu_destroy(menu)
if(i_Key == 0) return 0
if ( !is_valid_ent ( i_Key ) ) return 0
touchdisp[id] = i_Key
disp_menu_func(id)
return 1
}
public disp_menu_func(id)
{
if(g_iPlayerDispenser[id] == 0){
ChatColor ( id, "^4У тебя нет раздатчика")
return HAM_IGNORED
}
new szItem[128];
new szItem1[128];
new ent = touchdisp[id];
if(ent==0) return PLUGIN_HANDLED
new msentry_item = menu_create("yЧто делать с раздатчиком?!", "cl_mend");
if(is_valid_ent(ent))
{
new iLevel = pev ( ent, pev_iuser3 )
new iHealth = pev ( ent, pev_health )
format(szItem, 127, "%d", ent)
menu_additem( msentry_item, "wУничтожить")
menu_addblank( msentry_item, 0)
menu_addblank( msentry_item, 0)
menu_addblank( msentry_item, 0)
format(szItem1, 127, "wID r%d", ent)
menu_addtext( msentry_item, szItem1)
format(szItem1, 127, "Уровень r%d", iLevel)
menu_addtext( msentry_item, szItem1)
format(szItem1, 127, "w[HP y%dw]", iHealth)
menu_addtext( msentry_item, szItem1)
}
menu_setprop(msentry_item, MPROP_EXIT, MEXIT_ALL)
menu_setprop(msentry_item, MPROP_EXITNAME, "yВыход")
menu_display(id, msentry_item, 0)
return PLUGIN_HANDLED
}
public cl_mend(id, menu, item) {
item++
menu_destroy(menu)
new ent = touchdisp[id]
if(!is_valid_ent(ent)) {
touchdisp[id] = 0
return 0
}
if(item == 0) return 0
if(is_valid_ent(ent) && item == 1){
DeleteEntity( ent )
g_iPlayerDispenser[ id ]--;
}
return 1
}
public DeleteEntity( entity ){
if(is_valid_ent(entity)){
remove_entity(entity)
}
}
public ev_Spectation ()
{
new id = read_data ( 1 )
BreakAllPlayerDispensers(id)
}
public client_connect( id )
{
bDispenserBuild[ id ] = false;
g_iPlayerDispenser[id] = 0
}
public client_disconnected( id )
{
BreakAllPlayerDispensers(id)
g_iPlayerDispenser[id] = 0
}
public plugin_precache( )
{
gHealingBeam = precache_model( gHealingSprite );
g_iSPR_Smoke3 = precache_model("sprites/black_smoke4.spr")
precache_model( gDispenserMdl );
precache_sound( gDispenserActive );
new i;
for( i = 0; i < sizeof gDamageSounds; i++ ) precache_sound( gDamageSounds[ i ] );
ExplSpr = precache_model("sprites/error_csdm/dispenser/gp_1.spr");
}
public fw_TraceLine_Post ( Float:v1[3], Float:v2[3], noMonsters, id )
{
if ( !is_valid_player ( id ) || is_user_bot ( id ) || !is_user_alive ( id ) )
return FMRES_IGNORED
new iHitEnt = get_tr ( TR_pHit )
if ( iHitEnt <= gMaxPlayers || !is_valid_ent ( iHitEnt ) )
return FMRES_IGNORED
new sClassname[32]
pev ( iHitEnt, pev_classname, sClassname, charsmax ( sClassname ) )
if ( !equal ( sClassname, gDispenserClassname ) )
return FMRES_IGNORED
new iTeam = pev ( iHitEnt, pev_iuser4 )
if ( _:cs_get_user_team ( id ) != iTeam )
return FMRES_IGNORED
new iHealth = pev ( iHitEnt, pev_health )
if ( iHealth <= 0 )
return FMRES_IGNORED
new iOwner = pev ( iHitEnt, pev_iuser2 )
if ( !is_user_connected ( iOwner ) )
return FMRES_IGNORED
new sName[33]
get_user_name ( iOwner, sName, charsmax ( sName ) )
new iLevel = pev ( iHitEnt, pev_iuser3 )
set_dhudmessage ( 255, 255, 255, -1.0, 0.80, 0, 0.0, 0.6, 0.0, 0.0 )
show_dhudmessage ( id, "Установил: %s^nHP: %d/%d^nУровень: %d", sName, iHealth, d_enthp[iLevel-1], iLevel )
return FMRES_IGNORED
}
public bacon_TakeDamagePre( ent, idinflictor, idattacker, Float:damage, damagebits )
{
new szClassname[ 32 ];
pev( ent, pev_classname, szClassname, charsmax( szClassname ) );
if( equal( szClassname, gDispenserClassname ) )
{
new iOwner = pev( ent, pev_iuser2 );
if(!is_user_connected(iOwner) || 1 > iOwner > 32 || !is_user_connected(idattacker) || 1 > idattacker > 32)
return HAM_SUPERCEDE
if(cs_get_user_team(iOwner)==cs_get_user_team(idattacker) && idattacker != iOwner)
return HAM_SUPERCEDE
}
return HAM_IGNORED
}
public bacon_TakeDamage( ent, idinflictor, idattacker, Float:damage, damagebits )
{
if ( !is_valid_ent ( ent ) )
return HAM_IGNORED
new szClassname[ 32 ];
pev( ent, pev_classname, szClassname, charsmax( szClassname ) );
if( equal( szClassname, gDispenserClassname ) )
{
new iOwner = pev( ent, pev_iuser2 );
if(!is_user_connected(iOwner) || 1 > iOwner > 32 || !is_user_connected(idattacker) || 1 > idattacker > 32)
return HAM_SUPERCEDE
if(cs_get_user_team(iOwner)==cs_get_user_team(idattacker) && idattacker != iOwner)
return HAM_SUPERCEDE
if( pev( ent, pev_health ) <= 0.0 )
{
new szName[ 32 ];
get_user_name( idattacker, szName, charsmax( szName ) );
if( idattacker == iOwner )
{
ChatColor ( iOwner, "^3[^4Действие^3]^1 Вы уничтожили собственный раздатчик!")
} else {
ChatColor ( iOwner, "^3[^4Действие^3]^1 %s уничтожил ваш раздатчик!", szName)
// Награда за разрушение раздатчика
ChatColor ( idattacker, "^3[^4Действие^3]^1 Награда за разрушение раздатчика %d", get_pcvar_num(g_Nagrada))
cs_set_user_money ( idattacker, ( cs_get_user_money ( idattacker ) + get_pcvar_num(g_Nagrada))
}
}
emit_sound( ent, CHAN_STATIC, gDamageSounds[ random_num( 0, charsmax( gDamageSounds ) ) ], VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
}
return HAM_IGNORED
}
stock create_explosion(Float:origin_[3]) {
new origin[3]
FVecIVec(origin_, origin)
message_begin(MSG_ALL,SVC_TEMPENTITY,{0,0,0})
write_byte(TE_SPRITETRAIL) //Спрайт захвата
write_coord((origin[0]))
write_coord((origin[1]))
write_coord((origin[2])+20)
write_coord((origin[0]))
write_coord((origin[1]))
write_coord((origin[2])+80)
write_short(ExplSpr)
write_byte(20)
write_byte(20)
write_byte(4)
write_byte(20)
write_byte(10)
message_end()
}
public CommandDispenserBuild( id )
{
if( !is_user_alive( id ) )
{
return PLUGIN_CONTINUE;
}
if( !( pev( id, pev_flags ) & FL_ONGROUND ) )
{
ChatColor ( id, "^3[^4Информация^3]^1 Вы можете построить раздатчик только на земле!")
return PLUGIN_HANDLED;
}
if(get_user_flags(id) & get_pcvar_flags(g_flagVip))
{
if ( g_iPlayerDispenser[id] >= get_pcvar_num(g_dips_vip))
{
ChatColor ( id, "^3[^4Информация^3]^1 Вы уже построили 2 раздатчика!")
return PLUGIN_HANDLED;
}
}
else
{
if ( g_iPlayerDispenser[id] >= get_pcvar_num(g_dips_player))
{
ChatColor ( id, "^3[^4Информация^3]^1 Вы уже построили раздатчик")
return PLUGIN_HANDLED;
}
}
new iMoney = cs_get_user_money( id );
if (get_user_flags(id) & get_pcvar_flags(g_flagVip))
{
if( iMoney < d_upgcost_vip[0] )
{
ChatColor ( id, "^3[^4Информация^3]^1 У тебя не хватает денег! (нужно %d$)", d_upgcost_vip[0] )
return PLUGIN_HANDLED;
}
}
else
{
if( iMoney < d_upgcost[0] )
{
ChatColor ( id, "^3[^4Информация^3]^1 У тебя не хватает денег! (нужно %d$)", d_upgcost[0] )
return PLUGIN_HANDLED;
}
}
new Float:playerOrigin[3]
entity_get_vector(id, EV_VEC_origin, playerOrigin)
new Float:vNewOrigin[3]
new Float:vTraceDirection[3]
new Float:vTraceEnd[3]
new Float:vTraceResult[3]
velocity_by_aim(id, 64, vTraceDirection) // get a velocity in the directino player is aiming, with a multiplier of 64...
vTraceEnd[0] = vTraceDirection[0] + playerOrigin[0] // find the new max end position
vTraceEnd[1] = vTraceDirection[1] + playerOrigin[1]
vTraceEnd[2] = vTraceDirection[2] + playerOrigin[2]
trace_line(id, playerOrigin, vTraceEnd, vTraceResult) // trace, something can be in the way, use hitpoint from vTraceResult as new origin, if nothing's in the way it should be same as vTraceEnd
vNewOrigin[0] = vTraceResult[0]// just copy the new result position to new origin
vNewOrigin[1] = vTraceResult[1]// just copy the new result position to new origin
vNewOrigin[2] = playerOrigin[2] // always build in the same height as player.
if (CreateDispanser(vNewOrigin, id))
{
if (get_user_flags(id) & get_pcvar_flags(g_flagVip))
{
cs_set_user_money(id, cs_get_user_money(id) - d_upgcost_vip[0])
//set_bankmoney(id,d_upgcost_vip[0])
g_iPlayerDispenser[id]++
}
else
{
cs_set_user_money(id, cs_get_user_money(id) - d_upgcost[0])
//set_bankmoney(id,d_upgcost[0])
g_iPlayerDispenser[id]++
}
}
else
{
ChatColor ( id, "^3[^4Информация^3]^1 Здесь не получается установить раздатчик!")
}
return PLUGIN_HANDLED;
}
stock bool:CreateDispanser(Float:origin[3], creator)
{
if (point_contents(origin) != CONTENTS_EMPTY || TraceCheckCollides(origin, 35.0))
{
return false
}
new Float:hitPoint[3], Float:originDown[3]
originDown = origin
originDown[2] = -5000.0 // dunno the lowest possible height...
trace_line(0, origin, originDown, hitPoint)
new Float:baDistanceFromGround = vector_distance(origin, hitPoint)
new Float:difference = 20.0 - baDistanceFromGround
if (difference < -1 * 20.0 || difference > 20.0) return false
new iEntity = create_entity( "func_breakable" );
if( !is_valid_ent( iEntity ) )
return false
set_pev( iEntity, pev_classname, gDispenserClassname );
new Float:flAngles[ 3 ];
new Float:flAnglesF[ 3 ];
pev( creator, pev_angles, flAngles );
pev( iEntity, pev_angles, flAnglesF );
flAnglesF[1] = flAngles[1]
set_pev( iEntity, pev_angles, flAnglesF );
engfunc( EngFunc_SetModel, iEntity, gDispenserMdl );
engfunc( EngFunc_SetSize, iEntity, Float:{ -20.0, -10.0, 0.0 }, Float:{ 20.0, 10.0, 50.0 } );
set_pev( iEntity, pev_origin, origin );
set_pev( iEntity, pev_solid, SOLID_BBOX );
set_pev( iEntity, pev_movetype, MOVETYPE_FLY );
set_pev( iEntity, pev_health, float(d_enthp[0]) );
set_pev( iEntity, pev_takedamage, 2.0 );
set_pev( iEntity, pev_iuser1, 0 );
//set_pev( iEntity, pev_fuser1, float(moneytraf[1]) );
//Disp_balance[iEntity] = 1000;
set_pev( iEntity, pev_iuser2, creator );
set_pev( iEntity, pev_iuser3, 1 );
set_pev( iEntity, pev_iuser4, get_user_team(creator) );
set_pev( iEntity, pev_nextthink, get_gametime( ) + 0.1 );
engfunc( EngFunc_DropToFloor, iEntity );
bDispenserBuild[ creator ] = true;
switch( cs_get_user_team( creator ) )
{
case CS_TEAM_T: set_pev(iEntity, pev_body, 3);
case CS_TEAM_CT: set_pev(iEntity, pev_body, 0);
}
emit_sound( iEntity, CHAN_STATIC, gDispenserActive, VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
return true;
}
public DispenserThink( iEnt )
{
if( is_valid_ent( iEnt ) )
{
static iOwner; iOwner = pev( iEnt, pev_iuser2 )
if(get_user_team(iOwner) != pev( iEnt, pev_iuser4) || !is_user_connected ( iOwner )){
BreakAllPlayerDispensers(iOwner)
g_iPlayerDispenser[iOwner] = 0
return PLUGIN_CONTINUE
}
new HP = pev ( iEnt, pev_health )
if( HP <= 0.0 )
{
new Float:origin[3]
entity_get_vector(iEnt, EV_VEC_origin, origin)
DeleteEntity( iEnt )
create_explosion(origin)
g_iPlayerDispenser[iOwner]--
client_cmd( iOwner, "speak ^"vox/bizwarn computer destroyed^"" );
if(g_iPlayerDispenser[iOwner]==0)
bDispenserBuild[ iOwner ] = false;
return PLUGIN_CONTINUE
}
new iLevel = pev ( iEnt, pev_iuser3 )
new Float:origin[ 3 ];
pev( iEnt, pev_origin, origin );
origin[2]+=35.0
for( new id = 1; id <= gMaxPlayers; id++ )
{
if( !is_user_bot(id) && is_user_connected ( id ) && is_user_alive( id ) && cs_get_user_team( id ) == cs_get_user_team( iOwner ))
{
new Float:flOrigin[ 3 ];
pev( id, pev_origin, flOrigin );
if( get_distance_f( origin, flOrigin ) <= d_radius[iLevel-1])
{
new Healing = pev(id, pev_health);
new Armoring = pev(id, pev_armorvalue);
if( UTIL_IsVisible( id, iEnt, origin, flOrigin) && (Healing < d_hp[iLevel - 1] || Armoring < d_ap[iLevel - 1]))
{
if( Healing < d_hp[iLevel - 1] )
set_pev(id, pev_health, floatmin(Healing + d_takehp[iLevel-1], float(d_hp[iLevel - 1])));
if( Armoring < d_ap[iLevel - 1] )
set_pev(id, pev_armorvalue, floatmin(Armoring + d_takeap[iLevel-1], float(d_ap[iLevel - 1])));
UTIL_BeamEnts( flOrigin, origin);
}
}
}
}
if(HP<=600.0){
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_SMOKE)
engfunc(EngFunc_WriteCoord, origin[0]+random_float(-8.0, 8.0))
engfunc(EngFunc_WriteCoord, origin[1]+random_float(-8.0, 8.0))
engfunc(EngFunc_WriteCoord, origin[2]+random_float(25.0, 35.0))
write_short(g_iSPR_Smoke3)
write_byte(random_num(3,7))
write_byte(30)
message_end()
}
set_pev( iEnt, pev_nextthink, get_gametime( ) + 0.1 );
}
return PLUGIN_CONTINUE;
}
public fw_DispenserTouch ( ent, id )
{
new iLevel = pev ( ent, pev_iuser3 );
static Float:time;time=get_gametime()
if(flood_disptouch[id] > time)
return
flood_disptouch[id] = time+2.0
if ( !is_valid_ent ( ent ) )
return
if ( !is_user_connected ( id ) || !is_user_alive ( id ) )
return
if ( pev ( ent, pev_iuser4 ) != _:cs_get_user_team ( id ) )
return
if(iLevel == 3)
return
new iOwner = pev ( ent, pev_iuser2 )
new money = cs_get_user_money ( id )
if (get_user_flags(id) & get_pcvar_flags(g_flagVip) && money < d_upgcost_vip[iLevel])
{
ChatColor ( id, "^3[^4Информация^3]^1 У тебя не хватает денег! (нужно %d$)", d_upgcost_vip[iLevel] )
return;
}
else if( money < d_upgcost[iLevel] )
{
ChatColor ( id, "^3[^4Информация^3]^1 У тебя не хватает денег! (нужно %d$)", d_upgcost[iLevel] )
return;
}
if ( !is_user_connected ( iOwner ) )
return
if (get_user_flags(id) & get_pcvar_flags(g_flagVip))
{
cs_set_user_money(id, money - d_upgcost_vip[iLevel-1])
}
else
{
cs_set_user_money(id, money - d_upgcost[iLevel-1])
}
new sUpgraderName[32]
get_user_name ( id, sUpgraderName, charsmax ( sUpgraderName ) )
client_print ( iOwner, print_center, "%s прокачал твой раздатчик", sUpgraderName )
fw_DispenserTouchTwo(ent)
}
public fw_DispenserTouchTwo (ent){
new iLevel = pev ( ent, pev_iuser3 );
iLevel++
set_pev ( ent, pev_iuser3, iLevel )
set_pev ( ent, pev_health, float ( d_enthp[iLevel-1] ) )
engfunc( EngFunc_SetModel, ent, gDispenserMdl )
engfunc( EngFunc_SetSize, ent, Float:{ -20.0, -10.0, 0.0 }, Float:{ 20.0, 10.0, 50.0 } )
emit_sound( ent, CHAN_STATIC, gDispenserActive, VOL_NORM, ATTN_NORM, 0, PITCH_NORM )
switch( pev ( ent, pev_iuser4 ) )
{
case CS_TEAM_T:
{
switch(iLevel)
{
case 2: set_pev(ent, pev_body, 4);
case 3: set_pev(ent, pev_body, 5);
}
}
case CS_TEAM_CT:
{
switch(iLevel)
{
case 2: set_pev(ent, pev_body, 1);
case 3: set_pev(ent, pev_body, 2);
}
}
}
}
public EVENT_TextMsg( )
{
UTIL_DestroyDispensers( );
}
public LOG_RoundEnd( )
{
UTIL_DestroyDispensers( );
}
stock UTIL_DestroyDispensers( )
{
new iEnt = FM_NULLENT;
while( ( iEnt = find_ent_by_class( iEnt, gDispenserClassname ) ) )
{
if(is_valid_ent ( iEnt )){
new iOwner = pev( iEnt, pev_iuser2 );
bDispenserBuild[ iOwner ] = false;
g_iPlayerDispenser[ iOwner ]--;
DeleteEntity( iEnt )
}
}
}
stock UTIL_BeamEnts(Float:flStart[ 3 ], Float:flEnd[ 3 ])
{
engfunc( EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, flStart );
write_byte(TE_BEAMPOINTS);
engfunc( EngFunc_WriteCoord, flStart[ 0 ] );
engfunc( EngFunc_WriteCoord, flStart[ 1 ] );
engfunc( EngFunc_WriteCoord, flStart[ 2 ] );
engfunc( EngFunc_WriteCoord, flEnd[ 0 ] );
engfunc( EngFunc_WriteCoord, flEnd[ 1 ] );
engfunc( EngFunc_WriteCoord, flEnd[ 2 ] );
write_short( gHealingBeam );
write_byte( 5 );
write_byte( 2 );
write_byte( 1 );
write_byte( 20 );
write_byte( 3 );
write_byte( 0 );
write_byte( 255 );
write_byte( 0 );
write_byte( 130 );
write_byte( 30 );
message_end( );
}
stock bool:UTIL_IsVisible( index, entity, Float:origin[3], Float:flStart[ 3 ]) {
new Float:flDest[ 3 ];
pev( index, pev_view_ofs, flDest );
xs_vec_add( flStart, flDest, flStart );
engfunc( EngFunc_TraceLine, flStart, origin, 0, index, 0 );
new Float:flFraction;
get_tr2( 0, TR_flFraction, flFraction );
if( flFraction == 1.0 || get_tr2( 0, TR_pHit) == entity ) return true;
return false;
}
public BreakAllPlayerDispensers(id)
{
static ent = -1
while ((ent = find_ent_by_class(ent, gDispenserClassname)))
{
if(pev( ent, pev_iuser2 ) != id)
continue
if(is_valid_ent(ent))
{
DeleteEntity( ent )
}
}
bDispenserBuild[ id ] = false;
g_iPlayerDispenser[ id ] = 0;
}
bool:TraceCheckCollides(Float:origin[3], const Float:BOUNDS)
{
new Float:traceEnds[8][3], Float:traceHit[3], hitEnt
traceEnds[0][0] = origin[0] - BOUNDS
traceEnds[0][1] = origin[1] - BOUNDS
traceEnds[0][2] = origin[2] - BOUNDS
traceEnds[1][0] = origin[0] - BOUNDS
traceEnds[1][1] = origin[1] - BOUNDS
traceEnds[1][2] = origin[2] + BOUNDS
traceEnds[2][0] = origin[0] + BOUNDS
traceEnds[2][1] = origin[1] - BOUNDS
traceEnds[2][2] = origin[2] + BOUNDS
traceEnds[3][0] = origin[0] + BOUNDS
traceEnds[3][1] = origin[1] - BOUNDS
traceEnds[3][2] = origin[2] - BOUNDS
traceEnds[4][0] = origin[0] - BOUNDS
traceEnds[4][1] = origin[1] + BOUNDS
traceEnds[4][2] = origin[2] - BOUNDS
traceEnds[5][0] = origin[0] - BOUNDS
traceEnds[5][1] = origin[1] + BOUNDS
traceEnds[5][2] = origin[2] + BOUNDS
traceEnds[6][0] = origin[0] + BOUNDS
traceEnds[6][1] = origin[1] + BOUNDS
traceEnds[6][2] = origin[2] + BOUNDS
traceEnds[7][0] = origin[0] + BOUNDS
traceEnds[7][1] = origin[1] + BOUNDS
traceEnds[7][2] = origin[2] - BOUNDS
for (new i = 0; i < 8; i++)
{
if (point_contents(traceEnds[i]) != CONTENTS_EMPTY)
return true
hitEnt = trace_line(0, origin, traceEnds[i], traceHit)
if (hitEnt != 0)
return true
for (new j = 0; j < 3; j++)
{
if (traceEnds[i][j] != traceHit[j])
return true
}
}
return false
}
stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!team", "^3") // Team Color
replace_all(msg, 190, "!team2", "^0") // Team2 Color
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}
Hello coders! I’m trying to make message from rows defined in array, but getting error 001: expected token: «]», but found «-identifier-«.
Can someone help me to fix it?
Here’s problem code:
PHP Code:
new const BHP2_HEADER[] = "^n* Possible arguments:^n"
new const BHP2_HELP[][128] = {
"* help - show this message^n",
"* toggle - toggle bhop^n",
"* autojump <1 | 0> - toggle autojump^n",
"* list - show bhop users list^n" }
new const BHP2_FOOTER[] = "***"
new xbh_help_msg[1024]
public
xbhop_help(id)
{
new i
format(xbh_help_msg, charsmax(xbh_help_msg), "%s", BHP2_HEADER)
for(
i=0; i < 3; i++)
{
// PROMBLEM CODE IS BELOW
add(xbh_help_msg, charsmax(xbh_help_msg), BHP2_HELP[i], charsmax(BHP2_HELP[i])) //ERROR COMES HERE
// PROMBLEM CODE IS ABOVE
}
add(xbh_help_msg, charsmax(xbh_help_msg), BHP2_FOOTER, charsmax(BHP2_FOOTER))
client_print(id, print_console, xbh_help_msg)
return
PLUGIN_HANDLED
}
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 - количество аргументов не совпадает с объявленными в функции;