Error 021 symbol already defined isvalidclient

Error 021 symbol already defined isvalidclient Ни одного зарегистрированного пользователя не просматривает данную страницу Похожий контент Кто знает как пофиксить? C:UsersUserDesktopsliv4ikgamemodesNVEGM.pwn(13206) : warning 202: number of arguments does not match definition C:UsersUserDesktopsliv4ikgamemodesNVEGM.pwn(13206) : warning 202: number of arguments does not match definition C:UsersUserDesktopsliv4ikgamemodesNVEGM.pwn(33802) : warning 215: expression has no effect C:UsersUserDesktopsliv4ikgamemodesNVEGM.pwn(38135) : warning 204: […]

Содержание

  1. Error 021 symbol already defined isvalidclient
  2. Похожий контент
  3. Error 021 symbol already defined isvalidclient
  4. Форум Pawn.Wiki — Воплоти мечту в реальность!: error 021: symbol already defined (cmd_get) — Форум Pawn.Wiki — Воплоти мечту в реальность!
  5. error 021: symbol already defined (cmd_get) Помогите исправить)
  6. Форум Pawn.Wiki — Воплоти мечту в реальность!: error 021: symbol already defined — Форум Pawn.Wiki — Воплоти мечту в реальность!
  7. error 021: symbol already defined
  8. Форум Pawn.Wiki — Воплоти мечту в реальность!: 021 — Форум Pawn.Wiki — Воплоти мечту в реальность!

Error 021 symbol already defined isvalidclient

Ни одного зарегистрированного пользователя не просматривает данную страницу

Похожий контент

Кто знает как пофиксить?

C:UsersUserDesktopsliv4ikgamemodesNVEGM.pwn(13206) : warning 202: number of arguments does not match definition
C:UsersUserDesktopsliv4ikgamemodesNVEGM.pwn(13206) : warning 202: number of arguments does not match definition
C:UsersUserDesktopsliv4ikgamemodesNVEGM.pwn(33802) : warning 215: expression has no effect
C:UsersUserDesktopsliv4ikgamemodesNVEGM.pwn(38135) : warning 204: symbol is assigned a value that is never used: «region_index»
C:UsersUserDesktopsliv4ikgamemodesNVEGM.pwn(38550) : warning 203: symbol is never used: «IsCopCar»
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
Header size: 19980 bytes
Code size: 2184936 bytes
Data size: 30086780 bytes
Stack/heap size: 72000 bytes; estimated max. usage=1780 cells (7120 bytes)
Total requirements:32363696 bytes
5 Warnings.

Работает на IPS Community Suite 4
2017 — н.в. PAWNO-RUS.RU
При копировании материалов с сайта ссылка на наш форум обязательна!

Вы видите это сообщение, так как вы не вошли или не зарегистрировались. Чтобы получить более расширенные возможности войдите или зарегистрируйтесь.

Однако без регистрации Вы также сможете пользоваться форумом.

Источник

Error 021 symbol already defined isvalidclient

Hi, I was edit that plugin (https://forums.alliedmods.net/showthread.php?t=257911) that plugin was show just aimed player’s name than @m_bNightstalker was helped me. plugin show player’s name and HP someone can add. Aimed player is Friend or a enemy and whan aimed to space display in hud just ‘.’ like that;

HUD;
Playername
100 HP (Enemy)
HUD Aimed on space;
.

#include
#include
#include

#define PLUGIN_VERSION «1.0»

public Plugin:myinfo =
<
name = «Show nickname on HUD»,
author = «Graffiti»,
description = «Show nickname on HUD for CSGO»,
version = PLUGIN_VERSION,
url = «http://www.sourcemod.net/»
>;

public OnPluginStart()
<
CreateConVar(«sm_show_nickname_on_hud_version», PLUGIN_VERSION, «Show nickname on HUD», FCVAR_PLUGIN | FCVAR_SPONLY | FCVAR_DONTRECORD | FCVAR_NOTIFY);
CreateTimer(0.5, Timer, _, TIMER_REPEAT);
>

stock TraceClientViewEntity(client)
<
new Float:m_vecOrigin[3];
new Float:m_angRotation[3];

GetClientEyePosition(client, m_vecOrigin);
GetClientEyeAngles(client, m_angRotation);

new Handle:tr = TR_TraceRayFilterEx(m_vecOrigin, m_angRotation, MASK_VISIBLE, RayType_Infinite, TRDontHitSelf, client);
new pEntity = -1;

if (TR_DidHit(tr))
<
pEntity = TR_GetEntityIndex(tr);
CloseHandle(tr);
return pEntity;
>

if(tr != INVALID_HANDLE)
<
CloseHandle(tr);
>

public bool:TRDontHitSelf(entity, mask, any:data)
<
return (1 0 && target

Hi, I found that plugin (https://forums.alliedmods.net/showthread.php?t=257911) but this plugin just show nick name on HUD but i want show player HP too on HUD .somebody can edit it for me? (sory for my bad english:( )

like that; (paint master :):) )

#include
#include
#include

#define PLUGIN_VERSION «1.0»

public Plugin:myinfo =
<
name = «Show nickname on HUD»,
author = «Graffiti»,
description = «Show nickname on HUD for CSGO»,
version = PLUGIN_VERSION,
url = «http://www.sourcemod.net/»
>;

public OnPluginStart()
<
CreateConVar(«sm_show_nickname_on_hud_version», PLUGIN_VERSION, «Show nickname on HUD», FCVAR_PLUGIN | FCVAR_SPONLY | FCVAR_DONTRECORD | FCVAR_NOTIFY);
CreateTimer(0.5, Timer, _, TIMER_REPEAT);
>

stock TraceClientViewEntity(client)
<
new Float:m_vecOrigin[3];
new Float:m_angRotation[3];

GetClientEyePosition(client, m_vecOrigin);
GetClientEyeAngles(client, m_angRotation);

new Handle:tr = TR_TraceRayFilterEx(m_vecOrigin, m_angRotation, MASK_VISIBLE, RayType_Infinite, TRDontHitSelf, client);
new pEntity = -1;

if (TR_DidHit(tr))
<
pEntity = TR_GetEntityIndex(tr);
CloseHandle(tr);
return pEntity;
>

if(tr != INVALID_HANDLE)
<
CloseHandle(tr);
>

public bool:TRDontHitSelf(entity, mask, any:data)
<
return (1 0 && target

Источник

Форум Pawn.Wiki — Воплоти мечту в реальность!: error 021: symbol already defined (cmd_get) — Форум Pawn.Wiki — Воплоти мечту в реальность!

  • Pawn скриптинг
  • Первая помощь
  • Проблемы с компилированием
  • Правила форума
  • Просмотр новых публикаций

error 021: symbol already defined (cmd_get) Помогите исправить)

  • Группа: Пользователи
  • Сообщений: 9
  • Регистрация: 15 июня 16

Сообщение отредактировал Sound: 18 июня 2016 — 11:51

  • Группа: Vip
  • Сообщений: 4 001
  • Регистрация: 10 апреля 15

Сообщение отредактировал Pa4enka: 17 июня 2016 — 16:28

  • Группа: Vip
  • Сообщений: 5 581
  • Регистрация: 09 января 13

Знал бы что скрывается под . может и по лучше сделал

Сообщение отредактировал m1n1vv: 17 июня 2016 — 16:35

  • Группа: Пользователи
  • Сообщений: 9
  • Регистрация: 15 июня 16

m1n1vv (17 июня 2016 — 16:30) писал:

  • Группа: Vip
  • Сообщений: 5 581
  • Регистрация: 09 января 13

ANDRRR10 (17 июня 2016 — 16:34) писал:

  • Группа: Пользователи
  • Сообщений: 9
  • Регистрация: 15 июня 16

m1n1vv (17 июня 2016 — 16:30) писал:

Знал бы что скрывается под . может и по лучше сделал

  • Группа: Vip
  • Сообщений: 5 581
  • Регистрация: 09 января 13

  • Группа: Пользователи
  • Сообщений: 9
  • Регистрация: 15 июня 16

m1n1vv (17 июня 2016 — 16:42) писал:

(23610) : error 017: undefined symbol «sqlcmd»
(23611) : error 017: undefined symbol «var»
(23611) : error 022: must be lvalue (non-constant)
(23611) : error 017: undefined symbol «var»
(23611) : fatal error 107: too many error messages on one line
Теперь эти ошибки.

Вместо «». » высвечиваются «Дата регистрации, ИП (рег), Номер аккаунта» и тд

Источник

Форум Pawn.Wiki — Воплоти мечту в реальность!: error 021: symbol already defined — Форум Pawn.Wiki — Воплоти мечту в реальность!

  • Pawn скриптинг
  • Первая помощь
  • Вопросы по скриптингу
  • Правила форума
  • Просмотр новых публикаций

error 021: symbol already defined

  • Группа: Активные пользователи
  • Сообщений: 161
  • Регистрация: 30 ноября 16

Ошибки указывают на строку for()

  • Группа: Vip
  • Сообщений: 4 001
  • Регистрация: 10 апреля 15

  • Группа: Активные пользователи
  • Сообщений: 161
  • Регистрация: 30 ноября 16

Pa4enka (01 апреля 2017 — 17:39) писал:

  • Группа: Vip
  • Сообщений: 4 001
  • Регистрация: 10 апреля 15

Сообщение отредактировал Pa4enka: 01 апреля 2017 — 17:44

Источник

Форум Pawn.Wiki — Воплоти мечту в реальность!: 021 — Форум Pawn.Wiki — Воплоти мечту в реальность!

  • Pawn скриптинг
  • Первая помощь
  • Проблемы с компилированием
  • Правила форума
  • Просмотр новых публикаций

  • Группа: Активные пользователи
  • Сообщений: 560
  • Регистрация: 26 июня 13

Выдает ошибку,что делать?:

  • Группа: Vip
  • Сообщений: 1 944
  • Регистрация: 17 января 13

DeViLsS (02 октября 2013 — 18:02) писал:

Выдает ошибку,что делать?:

DeViLsS (02 октября 2013 — 11:04) писал:

Источник

1mpulse

1mpulse

node index.js

Сообщения
120
Реакции
166


  • Автор ресурса
  • #1

1mpulse добавил(а) новый ресурс:

NCRPG Классы / Classes / Роли — NCRPG Addon / Дополнение

Большое дополнение к РПГ-системе «NCRPG«.

Дает игроку выбрать себе класс, в зависимости от уровня игрока.
У каждого класса имеется своя «сверхспособность».

Все меню, способности и т.п., переведено на 2 языка. RU и EN
Addon полностью мультиязычен.

В: Для чего способности на RPG сервере?
О: Просто для того, чтобы внести в гемплей изюменку:ROFLMAO:

Уровень, с кого и по какой, указывается в модулях (в исходном коде).

Данный addon писал для себя, но по скольку…

Узнать больше об этом ресурсе…

  • #2

Не могу скомпилировать плагин, выбивает ошибку

/ ncrpg_class_support.sp
//
// D:servercsgocsgoaddonssourcemodscriptingncrpg_class_support.sp(64) : error 021: symbol already defined: «IsValidClient»
//

  • #3

Не могу скомпилировать плагин, выбивает ошибку

/ ncrpg_class_support.sp
//
// D:servercsgocsgoaddonssourcemodscriptingncrpg_class_support.sp(64) : error 021: symbol already defined: «IsValidClient»
//

Такая же ошибка

Сообщения автоматически склеены: 9 Ноя 2021

Удалил класс саппорт и все скомпилировалось. В sm plugins всё есть, но не понятно как пользоваться плагином
. Никакой инструкции, непонятно где выбрать класс и тд

Последнее редактирование: 9 Ноя 2021

Nekro

Nekro

Терра инкогнита

Сообщения
3,115
Реакции
1,444


  • #4

Функция дважды повторяется, одну закомментируйте

  • #5

Ок, с этим допустим понятно. Но вообще не понял как вызвать меню классов или где их выбирать. Полазил по коду, но особо продвижений нету

  • #6

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

  • #7

Какая комманда на выбор класса?


View Full Version : [REQUEST] Player Info display on HUD


spancer35

06-12-2015, 05:39

Hi, I was edit that plugin (https://forums.alliedmods.net/showthread.php?t=257911) that plugin was show just aimed player’s name than @m_bNightstalker was helped me. plugin show player’s name and HP someone can add. Aimed player is Friend or a enemy and whan aimed to space display in hud just ‘.’ like that;

HUD;
Playername
100 HP (Enemy)
HUD Aimed on space;
.

http://img.prntscr.com/img?url=http://i.imgur.com/CQXDzPT.png

#include <sourcemod>
#include <sdktools>
#include <cstrike>

#define PLUGIN_VERSION «1.0»

public Plugin:myinfo =
{
name = «Show nickname on HUD»,
author = «Graffiti»,
description = «Show nickname on HUD for CSGO»,
version = PLUGIN_VERSION,
url = «http://www.sourcemod.net/»
};

public OnPluginStart()
{
CreateConVar(«sm_show_nickname_on_hud_version», PLUGIN_VERSION, «Show nickname on HUD», FCVAR_PLUGIN | FCVAR_SPONLY | FCVAR_DONTRECORD | FCVAR_NOTIFY);
CreateTimer(0.5, Timer, _, TIMER_REPEAT);
}

stock TraceClientViewEntity(client)
{
new Float:m_vecOrigin[3];
new Float:m_angRotation[3];

GetClientEyePosition(client, m_vecOrigin);
GetClientEyeAngles(client, m_angRotation);

new Handle:tr = TR_TraceRayFilterEx(m_vecOrigin, m_angRotation, MASK_VISIBLE, RayType_Infinite, TRDontHitSelf, client);
new pEntity = -1;

if (TR_DidHit(tr))
{
pEntity = TR_GetEntityIndex(tr);
CloseHandle(tr);
return pEntity;
}

if(tr != INVALID_HANDLE)
{
CloseHandle(tr);
}

return -1;
}

public bool:TRDontHitSelf(entity, mask, any:data)
{
return (1 <= entity <= MaxClients && entity != data);
}

public Action:Timer(Handle:timer)
{
for(new i = 1; i <= MaxClients; i++)
{
if (IsClientInGame(i))
{
new target = TraceClientViewEntity(i);
if(target > 0 && target <= MaxClients && IsClientInGame(target) && IsPlayerAlive(target))
{
PrintHintText(i, «»%N /n %i HP»», target, GetClientHealth(target));
}
}
}
return Plugin_Continue;
}


m_bNightstalker

06-12-2015, 07:22

Hi, I found that plugin (https://forums.alliedmods.net/showthread.php?t=257911) but this plugin just show nick name on HUD but i want show player HP too on HUD .somebody can edit it for me? (sory for my bad english:( )

like that; (paint master :):) )

#include <sourcemod>
#include <sdktools>
#include <cstrike>

#define PLUGIN_VERSION «1.0»

public Plugin:myinfo =
{
name = «Show nickname on HUD»,
author = «Graffiti»,
description = «Show nickname on HUD for CSGO»,
version = PLUGIN_VERSION,
url = «http://www.sourcemod.net/»
};

public OnPluginStart()
{
CreateConVar(«sm_show_nickname_on_hud_version», PLUGIN_VERSION, «Show nickname on HUD», FCVAR_PLUGIN | FCVAR_SPONLY | FCVAR_DONTRECORD | FCVAR_NOTIFY);
CreateTimer(0.5, Timer, _, TIMER_REPEAT);
}

stock TraceClientViewEntity(client)
{
new Float:m_vecOrigin[3];
new Float:m_angRotation[3];

GetClientEyePosition(client, m_vecOrigin);
GetClientEyeAngles(client, m_angRotation);

new Handle:tr = TR_TraceRayFilterEx(m_vecOrigin, m_angRotation, MASK_VISIBLE, RayType_Infinite, TRDontHitSelf, client);
new pEntity = -1;

if (TR_DidHit(tr))
{
pEntity = TR_GetEntityIndex(tr);
CloseHandle(tr);
return pEntity;
}

if(tr != INVALID_HANDLE)
{
CloseHandle(tr);
}

return -1;
}

public bool:TRDontHitSelf(entity, mask, any:data)
{
return (1 <= entity <= MaxClients && entity != data);
}

public Action:Timer(Handle:timer)
{
for(new i = 1; i <= MaxClients; i++)
{
if (IsClientInGame(i))
{
new target = TraceClientViewEntity(i);
if(target > 0 && target <= MaxClients && IsClientInGame(target) && IsPlayerAlive(target))
{
PrintHintText(i, «Player: «%N»», target);
}
}
}
return Plugin_Continue;
}

Please don’t create multiple threads about the same thing…and you couldn’t wait a full day, there is a edit button, please!

anyway thats what you need:
PrintHintText(i, «HP: «%d»», GetClientHealth(target));


spancer35

03-14-2016, 14:22

up


up

Please don’t create multiple threads about the same thing…and you couldn’t wait a full day, there is a edit button, please!

anyway thats what you need:
PrintHintText(i, «HP: «%d»», GetClientHealth(target));


Try this plugin.
CVar: sm_player_hint_info — 0 — Not show info, 1 — Show HP to all, 2 — Show HP only to allies


spancer35

03-16-2016, 16:13

Try this plugin.
CVar: sm_player_hint_info — 0 — Not show info, 1 — Show HP to all, 2 — Show HP only to allies

Thank you Grey83! Can you add a cvar as sm_hint_info_alive 1/0 for alive players use this too?

and

HUD will show when player Aimed to space; .


HUD will show when player Aimed to spaceWhat is the meaning of this action?:shock:

In v1.0.1 added CVars: sm_hint_info_alive — 0 — Show info only to dead, 1 — Show info to all
sm_hint_info_wtf — 1 — Show dot if aim is not directed at the player, 0 — Don’t show dot


spancer35

03-16-2016, 17:51

What is the meaning of this action?:shock:

In v1.0.1 added CVars: sm_hint_info_alive — 0 — Show info only to dead, 1 — Show info to all
sm_hint_info_wtf — 1 — Show dot if aim is not directed at the player, 0 — Don’t show dot

Ahahahahahah. I like the cvar name :):) My english is soooo bad im so sorry about this. Then about plugin. I think now it’s ok. :):) i’ll try then i’ll report here.


Try this. Maybe this is what you wanted


The latest version can be found here: GitHub (https://github.com/Grey83/SourceMod-plugins/tree/master/%5BCSGO%5D%20Player%20Hint%20Info)


May i have that plugin but for COunter strike source?


Natasha, this plugin should work in CS:S. It’s just that in CS:S the hint looks a little different and does not support html text formatting.


Natasha, this plugin should work in CS:S. It’s just that in CS:S the hint looks a little different and does not support html text formatting.
I added this plugin to my server , it did not show anything .
i need plugin for zombie reloaded sourcemod CS:S . that shows the real HP of zombie players «Team @T» . so it shows the real HP of Enemies . i had one but it was deleted by mistake and now i can not find one for this, if you have plugin for this that would be alot helpful


Natasha, perhaps fixing the translation file would be enough.


Natasha, perhaps fixing the translation file would be enough.
Hey my friend
https://streamable.com/nkdgnf
this video shows how the HP plugin works on CSS. it does not. i have the player_hint_info 1.0.1.smx
and i have the translations file i found it on the link of github you sent , and still now HP shows.
and in this video you will notice, after kill the zombie, any enemy player , the round will «draw» , do you have any idea about how to fix it?


and this plugin i used before, it was working before i update my Sourcemod . now it does not work anymore


Natasha, you compiled this plugin using SM1.11.0.6516. What version of SM is currently used on the server?
It may be necessary to recompile the plugin with the version of SM that is used on the server.


C:Program FilesCounter-Strike Sourcecstrikeaddonssourcemodscripting>spcomp RealHP
SourcePawn Compiler 1.11.0.6911
Copyright (c) 1997-2006 ITB CompuPhase
Copyright (c) 2004-2021 AlliedModders LLC

RealHP.sp(51) : warning 239: ‘void’ is an illegal tag; use void as a type
RealHP.sp(65) : warning 239: ‘void’ is an illegal tag; use void as a type
RealHP.sp(90) : warning 239: ‘void’ is an illegal tag; use void as a type
RealHP.sp(98) : warning 239: ‘void’ is an illegal tag; use void as a type
RealHP.sp(98) : error 021: symbol already defined: «__ext_core_SetNTVOptional»

1 Error.

C:Program FilesCounter-Strike Sourcecstrikeaddonssourcemodscripting>

>>> I’m not good with these . also i know nothing about editing a plugin to fix this
.my sourcemod version : version
SourceMod 1.11.0.6911, by AlliedModders LLC
could you compile it?


this the correct scripting file .


this the correct scripting file .This is not the correct source. It’s just a decompiled plugin.


This is correct source:#pragma semicolon 1

#include <sdktools_entoutput>

public Plugin myinfo =
{
name = «[ZR] RealHP»,
version = «1.2.1»,
description = «Display remaining health of enemies and breakable props»,
author = «ire.»
}

public void OnPluginStart()
{
HookEvent(«player_hurt», Event_PlayerHurt);

HookEntityOutput(«func_breakable», «OnHealthChanged», Entity_HealthChanged);

LoadTranslations(«realhp.phrases»);
}

public void Event_PlayerHurt(Event event, const char[] name, bool dontBroadcast)
{
int client = GetClientOfUserId(event.GetInt(«attacker»));
if(!IsValidPlayer(client)) return;

int team = GetClientTeam(client);
if(team < 2) return;

int victim = GetClientOfUserId(event.GetInt(«userid»));
if(victim == client || !IsValidClient(victim)) return;

int hp = GetClientHealth(victim);
if(hp < 1) return;

if(team == 3)
{
if(GetClientTeam(victim) == 2) PrintCenterText(client, «%t», «PlayerDamage», victim, hp);
}
else if(GetClientTeam(victim) == 3) PrintCenterText(client, «%t», «Infected», victim);
}

public void Entity_HealthChanged(const char[] output, int entity, int client, float delay)
{
if(IsValidPlayer(client) && IsValidEntity(entity))
{
int hp = GetEntProp(entity, Prop_Data, «m_iHealth»);
if(hp > 0) PrintCenterText(client, «%t», «PropDamage», hp);
}
}

stock bool IsValidPlayer(int client)
{
return IsValidClient(client) && !IsFakeClient(client);
}

stock bool IsValidClient(int client)
{
return 0 < client && client <= MaxClients && IsClientInGame(client);
}


THis the plugin , i do not have the source of the plugin , i just found it online , it was working before but now no..
also, any idea about the «round Draw» on the video? kill anyone = round restart


wow this is so cool Sir Thx


vBulletin® v3.8.7, Copyright ©2000-2023, vBulletin Solutions, Inc.


#1

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

Отправлено 01 апреля 2015 — 22:36

  • Знаток

Подключил инклюд streamer , всё есть в папке pawno >> include также в папке plugins
Вот что выдало при компиляции:

Цитата

streamer.inc(77) : error 021: symbol already defined: «Streamer_TickRate»
streamer.inc(78) : error 021: symbol already defined: «Streamer_MaxItems»
streamer.inc(79) : error 021: symbol already defined: «Streamer_VisibleItems»
streamer.inc(80) : error 021: symbol already defined: «Streamer_CellDistance»
streamer.inc(81) : error 021: symbol already defined: «Streamer_CellSize»
streamer.inc(85) : error 021: symbol already defined: «Streamer_Update»
streamer.inc(86) : error 021: symbol already defined: «Streamer_UpdateEx»
streamer.inc(90) : error 021: symbol already defined: «Streamer_GetFloatData»
streamer.inc(91) : error 021: symbol already defined: «Streamer_SetFloatData»
streamer.inc(92) : error 021: symbol already defined: «Streamer_GetIntData»
streamer.inc(93) : error 021: symbol already defined: «Streamer_SetIntData»
streamer.inc(94) : error 021: symbol already defined: «Streamer_IsInArrayData»
streamer.inc(95) : error 021: symbol already defined: «Streamer_AppendArrayData»
streamer.inc(96) : error 021: symbol already defined: «Streamer_RemoveArrayData»
streamer.inc(97) : error 021: symbol already defined: «Streamer_GetUpperBound»
streamer.inc(101) : error 021: symbol already defined: «Streamer_IsItemVisible»
streamer.inc(102) : error 021: symbol already defined: «Streamer_DestroyAllVisibleItems»
streamer.inc(103) : error 021: symbol already defined: «Streamer_CountVisibleItems»
streamer.inc(107) : error 021: symbol already defined: «CreateDynamicObject»
streamer.inc(108) : error 021: symbol already defined: «DestroyDynamicObject»
streamer.inc(109) : error 021: symbol already defined: «IsValidDynamicObject»
streamer.inc(110) : error 021: symbol already defined: «SetDynamicObjectPos»
streamer.inc(111) : error 021: symbol already defined: «GetDynamicObjectPos»
streamer.inc(112) : error 021: symbol already defined: «SetDynamicObjectRot»
streamer.inc(113) : error 021: symbol already defined: «GetDynamicObjectRot»
streamer.inc(114) : error 021: symbol already defined: «MoveDynamicObject»

Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

26 Errors.

Буду очень рад за помощь!

0



#2

Отправлено 02 апреля 2015 — 04:33

  • Прохожий

Может быть глупо с моей стороны, но ты вверху написал:

#include <streamer>

А если написал, то значит там ещё какой-то плагин надо подключить, а чтобы это сделать, нужно добавить этот плагин в папку plugins и в server.cfg добавить строку:

plugins streamer

А, и ещё, у плагинов разрешение не inc, a dll
Надеюсь помог.

Сообщение отредактировал pika4y: 02 апреля 2015 — 04:34

0



#3

Отправлено 02 апреля 2015 — 17:00

  • Знаток

Просмотр сообщенияpika4y (02 апреля 2015 — 04:33) писал:

Может быть глупо с моей стороны, но ты вверху написал:

#include <streamer>

А если написал, то значит там ещё какой-то плагин надо подключить, а чтобы это сделать, нужно добавить этот плагин в папку plugins и в server.cfg добавить строку:

plugins streamer

А, и ещё, у плагинов разрешение не inc, a dll
Надеюсь помог.

это есть

0



#4

Отправлено 02 апреля 2015 — 17:06

  • Благодетель

Добавь в шапку инклуда:

#if defined _streamer_included
	#endinput
#endif
#define _streamer_included

1



#5

Отправлено 02 апреля 2015 — 22:29

  • Знаток

Просмотр сообщенияSwipoStyle (02 апреля 2015 — 17:06) писал:

Добавь в шапку инклуда:

#if defined _streamer_included
	#endinput
#endif
#define _streamer_included

Спасибо поставил +

0



#6

Отправлено 19 мая 2015 — 17:08

  • Новичок

Вот это добавь.

#if defined _streamer_included
#endinput
#endif
#define _streamer_included

0


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

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


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

Aleksandr100297

Регистрация
25 Июн 2020
Сообщения
46
Лучшие ответы
0
Репутация
3

  • #1

Ошибки:
error 021: symbol already defined: «GetPlayer2DZone»
symbol is never used: «GetCityName»
symbol is never used: «GetZonaName»
Сам код >

Код:

GetPlayer2DZone(playerid, zone[], len)
{
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    for(new i = 0; i != sizeof(gSAZones); i++ )
    {
        if(x >= gSAZones[SAZONE_AREA][0] && x <= gSAZones[SAZONE_AREA][3] && y >= gSAZones[SAZONE_AREA][1] && y <= gSAZones[SAZONE_AREA][4]) return format(zone, len, gSAZones[SAZONE_NAME], 0);
    }
    return false;
}
GetZonaName  ( Float: x,  Float: y )
{
    for ( new i = 0; i != sizeof ( gSAZones ); i++ )
    {
        if ( x >= gSAZones[SAZONE_AREA][0] && x <= gSAZones[SAZONE_AREA][3] && y >= gSAZones[SAZONE_AREA][1] && y <= gSAZones[SAZONE_AREA][4]) return i;
    }
    return true;
}
GetCityName ( Float: x,  Float: y)
{
    for ( new i = 0; i != sizeof ( gSAZonesCity ); i++ )
    {
        if ( x >= gSAZonesCity[SAZONE_AREA][0] && x <= gSAZonesCity[SAZONE_AREA][3] && y >= gSAZonesCity[SAZONE_AREA][1] && y <= gSAZonesCity[SAZONE_AREA][4] ) return i;
    }
    return true;
}

Последнее редактирование модератором: 10 Дек 2020

Компиляция: 
C:UsersÀäìèíDesktopenerhygamemodesevolution.pwn(57653) : error 021: symbol already defined: «pc_cmd_goadminka»
C:UsersÀäìèíDesktopenerhygamemodesevolution.pwn(57654) : warning 211: possibly unintended assignment
C:UsersÀäìèíDesktopenerhygamemodesevolution.pwn(57665) : loose indentation
C:UsersÀäìèíDesktopenerhygamemodesevolution.pwn(57669) : loose indentation
Нашел команду сделал в мод, поменял пару параметров. Вылазит эта ошибка.
Код:

new adminkaon[MAX_PLAYERS];
new adminka;
cmd:adminkaon(playerid, params[])
{
        new adminaa[64];
        if(PlayerInfo[playerid][pAlcoInvenxua] <= 12) return SendClientMessage(playerid, 0xBFC0C2FF, "Òû íå ìîæåøü èñïîëüçîâàòü ýòó êîìàíäó!");
        if(sscanf(params,"i",params[0])) return SendClientMessage(playerid, -1, "Ââåäèòå /adminkaon [óðîâåíü]");
        SetTimer("adminkaoon", 3000, 0);
        adminka = params[0];
        SendClientMessage(playerid, 0xFF0000, "Âû óñïåøíî çàïóñòèëè ðàçäà÷ó àäìèíêè");
        format(adminaa,sizeof(adminaa),"Âíèìàíèå! Ðàçäà÷à àäìèíêè %s óðîâíÿ íà÷àëàñü!",params[0]);
        SendClientMessageToAll(0xFFAAAA,adminaa);
        return 1;
}
cmd:goadminka(playerid, params[])
{
        if(adminkaon[playerid] = 0) return 1;
        PlayerInfo[playerid][pAlcoInvenxua] = adminka;
        SendClientMessage(playerid, 0xFF0000, "Ïîçäðàâëÿåì! Âû ïîëó÷èëè àäìèíêó. Ââåäèòå /alogin!");
        return 1;
}
forward adminkaoon(playerid);
public adminkaoon(playerid)
{
        for(new p; p < GetMaxPlayers(); p++)
        {
                if(!IsPlayerConnected(p))continue;
        {
                        adminkaon[playerid] = 1;
                }
        }
    return 1;
}

Отредактировано 23 июня, 2021 пользователем keyl

Заметка от

keyl
, создано 23 июня, 2021

3.2. Код больше 10 строк необходимо брать в теги «Код» и «Спойлер». Как это сделать рассказано в разделе «FAQ».

Устное предупреждение.

Ошибка: 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.

По мере возможности тема будет дополняться

You must be using some flags or parameters to compile the code. Else you’d get this.

Pawn compiler 3.10.7                    Copyright (c) 1997-2006, ITB CompuPhase

Usage:   pawncc <filename> [filename...] [options]

Options:
         -A<num>  alignment in bytes of the data segment and the stack
         -a       output assembler code
         -C[+/-]  compact encoding for output file (default=+)
         -c<name> codepage name or number; e.g. 1252 for Windows Latin-1
         -Dpath   active directory path
         -d<num>  debugging level (default=-d1)
             0    no symbolic information, no run-time checks
             1    run-time checks, no symbolic information
             2    full debug information and dynamic checking
             3    same as -d2, but implies -O0
         -e<name> set name of error file (quiet compile)
         -i<name> path for include files
         -l       create list file (preprocess only)
         -o<name> set base name of (P-code) output file
         -O<num>  optimization level (default=-O1)
             0    no optimization
             1    JIT-compatible optimizations only
             2    full optimizations
         -p<name> set name of "prefix" file
         -R[+/-]  add detailed recursion report with call chains (default=-)
         -r[name] write cross reference report to console or to specified file
         -S<num>  stack/heap size in cells (default=4096)
         -s<num>  skip lines from the input file
         -t<num>  TAB indent size (in character positions, default=8)
         -v<num>  verbosity level; 0=quiet, 1=normal, 2=verbose (default=1)
         -w<num>  disable a specific warning by its number
         -X<num>  abstract machine size limit in bytes
         -XD<num> abstract machine data/stack size limit in bytes
         -Z[+/-]  run in compatibility mode (default=-)
         -E[+/-]  turn warnings in to errors
         -       use '' for escape characters
         -^       use '^' for escape characters
         -;[+/-]  require a semicolon to end each statement (default=-)
         -([+/-]  require parantheses for function invocation (default=-)
         sym=val  define constant "sym" with value "val"
         sym=     define constant "sym" with value 0

Options with a value may optionally separate the value from the option letter
with a colon (":") or an equal sign ("="). That is, the options "-d0", "-d=0"
and "-d:0" are all equivalent.

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <colorchat>

#define PLUGIN "ProKreedz Hook"
#define VERSION "v2.3"
#define AUTHOR "vato loco [GE-S] & p4ddY"

#define KZ_ACCESS ADMIN_LEVEL_G
#define RANDOM_NUM random_num(0,255)
#define RED 255
#define GREEN 99
#define BLUE 71

enum color {normal = 1, green, team}
enum {HOOK_OFF, HOOK_RELEASE, HOOK_ON}

new is_plr_connected[33]
new bool:g_bCanUseHook[33]
new g_bIsHooked[33]
new g_iHookOrigin[33][3]
new g_bPlayerIsAdmin[33]
new g_SpriteBeam
new g_SpriteLaser
new g_SayText
new g_iMaxPlayers
new g_kz_tag

new bool:has_used_hook[33]

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

register_forward(FM_Think, "fw_ThinkEnt")
register_clcmd("+hook", "HookOn", KZ_ACCESS)
register_clcmd("-hook", "HookOff", KZ_ACCESS)
register_clcmd("kz_hook", "cmd_give_hook", KZ_ACCESS ,"<name|#userid|steamid|@ALL> <on/off>")

register_dictionary("prokreedz_v2.3.txt")
g_kz_tag = register_cvar("kz_tag", "[ProKreedz]")

new iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString , "info_target"))
set_pev(iEnt, pev_classname, "hook_think")
set_pev(iEnt, pev_nextthink, get_gametime() + 0.1)

g_SayText = get_user_msgid("SayText")
g_iMaxPlayers = get_maxplayers()
}

public plugin_precache()
{
precache_sound("weapons/ric2.wav")
g_SpriteBeam = engfunc(EngFunc_PrecacheModel, "sprites/zbeam1.spr")
g_SpriteLaser = engfunc(EngFunc_PrecacheModel,"sprites/zbeam1.spr")
}

public client_putinserver(id)
{
is_plr_connected[id] = true
g_bIsHooked[id] = HOOK_OFF
if(get_user_flags(id) & KZ_ACCESS)
g_bPlayerIsAdmin[id] = true

has_used_hook[id] = false
}

public client_disconnect(id)
{
is_plr_connected[id] = false
g_bIsHooked[id] = HOOK_OFF
if(g_bPlayerIsAdmin[id])
g_bPlayerIsAdmin[id] = false

has_used_hook[id] = false
}

public kz_prize_hook(id, status[])
{
switch(status[0])
{
case '0': g_bCanUseHook[id] = false

case '1':
{
g_bCanUseHook[id] = true
kz_colorchat(id, green, "%L", id, "PKU_PRIZE_HOOK")
}
}
}

public cmd_give_hook(id,level,cid)
{
if(!cmd_access(id,level,cid,3))
return PLUGIN_HANDLED

new name[32]
get_user_name(id,name,31)

new szarg1[32], szarg2[8], bool:mode
read_argv(1,szarg1,31)
read_argv(2,szarg2,7)
if(equal(szarg2,"on"))
mode = true

if(equal(szarg1,"@ALL"))
{
for(new i = 1; i <= g_iMaxPlayers; i++)
{
if(is_plr_connected[i] && is_user_alive(i))
{
g_bCanUseHook[i] = mode
if(mode)
kz_colorchat(i, green, "%L", i, "PKU_HOOK_AT_ALL", name)
else
kz_colorchat(i, green, "%L", i, "PKU_HOOK_TAKE_ALL", name)
}
}
}
else
{
new pid = cmd_target(id,szarg1,2)
if(pid > 0)
{
g_bCanUseHook[pid] = mode
if(mode)
kz_colorchat(pid, green, "%L", pid, "PKU_HOOK_AT_TARGET", name)
else
kz_colorchat(pid, green, "%L", pid, "PKU_HOOK_TAKE_TARGET", name)
}
}
return PLUGIN_HANDLED
}

public HookOn(id)
{
if(!has_used_hook[id])
{

if(!g_bCanUseHook[id] && !g_bPlayerIsAdmin[id])
return PLUGIN_HANDLED

if(is_plr_connected[id] && is_user_alive(id))
{
get_user_origin(id, g_iHookOrigin[id], 3)

if(callfunc_begin("DetectCheat","ProKreedz_v2.3.amxx") == 1)
{
callfunc_push_int(id)
callfunc_push_str("Hook")
callfunc_end()
}
g_bIsHooked[id] = HOOK_ON
emit_sound(id, CHAN_STATIC, "weapons/ric2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)

has_used_hook[id] = true
set_task(4.0, "activate", id)
}
return PLUGIN_HANDLED
}
}

public activate(id)
{
has_used_hook[id] = false
ColorChat(id, TEAM_COLOR, "^3[ iFRAG.ru ]^1 Паутинка вновь активна.")
}

public HookOff(id)
{
g_bIsHooked[id] = HOOK_RELEASE
return PLUGIN_HANDLED
}

public fw_ThinkEnt(iEnt)
{
if (pev_valid(iEnt))
{
static ClassName[33]
pev(iEnt, pev_classname, ClassName, 32)

if(equal(ClassName, "hook_think"))
{
fw_HookThink()
set_pev(iEnt, pev_nextthink, get_gametime() + 0.1)
}
}
}

public fw_HookThink()
{
static id, origin[3], Float:velocity[3], distance
for(id = 1; id <= g_iMaxPlayers; id++)
{
if(g_bIsHooked[id] == HOOK_ON)
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(1) // TE_BEAMENTPOINT
write_short(id) // entid
write_coord(g_iHookOrigin[id][0]) // origin
write_coord(g_iHookOrigin[id][1]) // origin
write_coord(g_iHookOrigin[id][2]) // origin
if(g_bPlayerIsAdmin[id])
{
write_short(g_SpriteBeam) // sprite index
write_byte(0) // start frame
write_byte(0) // framerate
write_byte(2) // life
write_byte(30) // width
write_byte(0)
write_byte(RANDOM_NUM) // r
write_byte(RANDOM_NUM) // g
write_byte(RANDOM_NUM) // b
}
else
{
write_short(g_SpriteLaser) // sprite index
write_byte(0) // start frame
write_byte(0) // framerate
write_byte(2) // life
write_byte(30) // width
write_byte(0)
write_byte(RED) // r
write_byte(GREEN) // g
write_byte(BLUE) // b
}
write_byte(500) // brightness
write_byte(0) // speed
message_end()

get_user_origin(id, origin)
distance = get_distance(g_iHookOrigin[id], origin)
if(distance > 25)
{
velocity[0] = (g_iHookOrigin[id][0] - origin[0]) * (2.0 * 350 / distance)
velocity[1] = (g_iHookOrigin[id][1] - origin[1]) * (2.0 * 350 / distance)
velocity[2] = (g_iHookOrigin[id][2] - origin[2]) * (2.0 * 350 / distance)
set_pev(id, pev_velocity, velocity)
}
}
else if(g_bIsHooked[id] == HOOK_RELEASE)
{
g_bIsHooked[id] = HOOK_OFF
}
}
}

kz_colorchat(id, color:type, const msg[], {Float,Sql,Result,_}:...) {

static message[256], pkmsg[180], changed[8], argscount,j
argscount = numargs()

switch(type)
{
case normal: message[0] = 0x01

case green: message[0] = 0x04

default: message[0] = 0x03

}
new pktag[32]
get_pcvar_string(g_kz_tag, pktag, 31)

if(id)
{
if(is_plr_connected[id])
{
vformat(pkmsg, 179, msg, 4)
formatex(message[1], 255, "%s %s", pktag, pkmsg)
message[192] = '^0'

replace_all(message, 191, "!g", "^x04")
replace_all(message, 191, "!n", "^x01")
replace_all(message, 191, "!t", "^x03")
kz_print_msg(id, message)
}
}
else
{
for(new i = 1; i <= g_iMaxPlayers; i++)
{
if(is_plr_connected[i])
{
new changedcount = 0

for(j = 2; j < argscount; j++)
{
if(getarg(j) == LANG_PLAYER)
{
setarg(j, 0, i);
changed[changedcount++] = j;
}
}
vformat(pkmsg, 179, msg, 4)
formatex(message[1], 255, "%s %s", pktag, pkmsg)
message[192] = '^0'

replace_all(message, 191, "!g", "^x04")
replace_all(message, 191, "!n", "^x01")
replace_all(message, 191, "!t", "^x03")
kz_print_msg(i, message)

for(j = 0; j < changedcount; j++)
{
setarg(changed[j], 0, LANG_PLAYER)
}
}
}
}
}

stock kz_print_msg(id, const msg[])
{
message_begin(MSG_ONE_UNRELIABLE, g_SayText, _, id)
write_byte(id)
write_string(msg)
message_end()
}

when I compile this filter script I get that error. Actually it is not defined anywhere else what I know

Код:

//----------------------------------------------------------
//
//  GRAND LARCENY  1.0
//  A freeroam gamemode for SA-MP 0.3
//
//----------------------------------------------------------

#include <irc>
#include <a_samp>
#include <core>
#include <ircfs>
#include <float>
#include <YSIy_ini>
#include <streamer>
#include <sscanf2>
#include <ZCMD> //Like so!
#include <DynamicRadioStations>
#include "../include/gl_common.inc"
#include "../include/gl_spawns.inc"

#pragma tabsize 0

//----------------------------------------------------------

#define COLOR_WHITE         0xFFFFFFFF
#define COLOR_NORMAL_PLAYER 0xFFBB7777
#define COLOR_RED 0xFF444499
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_GREEN 0xB1FB44FF

#define loop(%1,%2) for (new %1 = 0; %1 < %2; %1++) // loop (used for gamemode)

#define CITY_LOS_SANTOS     0
#define CITY_SAN_FIERRO     1
#define CITY_LAS_VENTURAS   2
#define Skinid 1
#define Money 2
#define Faction 3
#define irc
#define STREAMER_TYPE_OBJECT (0)
#define STREAMER_TYPE_PICKUP (1)
#define STREAMER_TYPE_CP (2)
#define STREAMER_TYPE_RACE_CP (3)
#define STREAMER_TYPE_MAP_ICON (4)
#define STREAMER_TYPE_3D_TEXT_LABEL (5)
#define STREAMER_TYPE_AREA (6)

#define STREAMER_AREA_TYPE_CIRCLE (0)
#define STREAMER_AREA_TYPE_RECTANGLE (1)
#define STREAMER_AREA_TYPE_SPHERE (2)
#define STREAMER_AREA_TYPE_CUBE (3)
#define STREAMER_AREA_TYPE_POLYGON (4)

#define STREAMER_OBJECT_TYPE_GLOBAL (0)
#define STREAMER_OBJECT_TYPE_PLAYER (1)
#define STREAMER_OBJECT_TYPE_DYNAMIC (2)

#define GAMETEXT_COLOR 2 //Change this to change the color of the text. 0 = yellow(default), 1 = blue, 2 = green, 3 = red, 4 = purple, 5 = white, 6 = black.

#define COL_WHITE "{FFFFFF}"
#define COL_RED "{F81414}"
#define COL_GREEN "{00FF22}"

// Name that everyone will see
#define BOT_1_NICKNAME "Julius95Bot"
// Name that will only be visible in a whois
#define BOT_1_REALNAME "Julius95Bot"
// Name that will be in front of the hostname (username@hostname)
#define BOT_1_USERNAME "Julius95Bot"

#define BOT_2_NICKNAME "AdrenalineBot"
#define BOT_2_REALNAME "AdrenalineBot"
#define BOT_2_USERNAME "AdrenalineBot"

#define IRC_SERVER "exnet.fr.irc.tl"
#define IRC_PORT (6667)
#define IRC_CHANNEL "#Julius95"
#define IRC_CHANNEL2 "#Julius95" // IRC Channel #2

// If your bot names are registered put a password here to identify them with
#define IRC_PASSWORD "password"
#define IRC_PASSWORD "password"

// Maximum number of bots in the filterscript
#define MAX_BOTS (2)

#define PLUGIN_VERSION "1.4.3"

new Text:welcomeText;

new gBotID[MAX_BOTS], gGroupID;

new szString[32];

new DialogText5[1024];

new total_vehicles_from_files=0;

new botIDs[MAX_BOTS], groupID;

// Class selection globals
new gPlayerCitySelection[MAX_PLAYERS];
new gPlayerHasCitySelected[MAX_PLAYERS];
new gPlayerLastCitySelectionTick[MAX_PLAYERS];

enum zoneinfo {
	zone_name[256],
    Float:zone_minx,
    Float:zone_miny,
    Float:zone_minz,
    Float:zone_maxx,
    Float:zone_maxy,
    Float:zone_maxz
}

new Float:zones[][zoneinfo] = {
{ "The Big Ear'",                -410.00,  1403.30,    -3.00,  -137.90,  1681.20,   200.00},
{ "Aldea Malvada",               -1372.10,  2498.50,     0.00, -1277.50,  2615.30,   200.00},
{ "Angel Pine",                  -2324.90, -2584.20,    -6.10, -1964.20, -2212.10,   200.00},
{ "Arco del Oeste",               -901.10,  2221.80,     0.00,  -592.00,  2571.90,   200.00},
{ "Avispa Country Club",         -2646.40,  -355.40,     0.00, -2270.00,  -222.50,   200.00},
{ "Avispa Country Club",         -2831.80,  -430.20,    -6.10, -2646.40,  -222.50,   200.00},
{ "Avispa Country Club",         -2361.50,  -417.10,     0.00, -2270.00,  -355.40,   200.00},
{ "Avispa Country Club",         -2667.80,  -302.10,   -28.80, -2646.40,  -262.30,    71.10},
{ "Avispa Country Club",         -2470.00,  -355.40,     0.00, -2270.00,  -318.40,    46.10},
{ "Avispa Country Club",         -2550.00,  -355.40,     0.00, -2470.00,  -318.40,    39.70},
{ "Back o Beyond",               -1166.90, -2641.10,     0.00,  -321.70, -1856.00,   200.00},
{ "Battery Point",               -2741.00,  1268.40,    -4.50, -2533.00,  1490.40,   200.00},
{ "Bayside",                     -2741.00,  2175.10,     0.00, -2353.10,  2722.70,   200.00},
{ "Bayside Marina",              -2353.10,  2275.70,     0.00, -2153.10,  2475.70,   200.00},
{ "Beacon Hill",                  -399.60, -1075.50,    -1.40,  -319.00,  -977.50,   198.50},
{ "Blackfield",                    964.30,  1203.20,   -89.00,  1197.30,  1403.20,   110.90},
{ "Blackfield",                    964.30,  1403.20,   -89.00,  1197.30,  1726.20,   110.90},
{ "Blackfield Chapel",            1375.60,   596.30,   -89.00,  1558.00,   823.20,   110.90},
{ "Blackfield Chapel",            1325.60,   596.30,   -89.00,  1375.60,   795.00,   110.90},
{ "Blackfield Intersection",      1197.30,  1044.60,   -89.00,  1277.00,  1163.30,   110.90},
{ "Blackfield Intersection",      1166.50,   795.00,   -89.00,  1375.60,  1044.60,   110.90},
{ "Blackfield Intersection",      1277.00,  1044.60,   -89.00,  1315.30,  1087.60,   110.90},
{ "Blackfield Intersection",      1375.60,   823.20,   -89.00,  1457.30,   919.40,   110.90},
{ "Blueberry",                     104.50,  -220.10,     2.30,   349.60,   152.20,   200.00},
{ "Blueberry",                      19.60,  -404.10,     3.80,   349.60,  -220.10,   200.00},
{ "Blueberry Acres",              -319.60,  -220.10,     0.00,   104.50,   293.30,   200.00},
{ "Caligula's Palace",            2087.30,  1543.20,   -89.00,  2437.30,  1703.20,   110.90},
{ "Caligula's Palace",            2137.40,  1703.20,   -89.00,  2437.30,  1783.20,   110.90},
{ "Calton Heights",              -2274.10,   744.10,    -6.10, -1982.30,  1358.90,   200.00},
{ "Chinatown",                   -2274.10,   578.30,    -7.60, -2078.60,   744.10,   200.00},
{ "City Hall",                   -2867.80,   277.40,    -9.10, -2593.40,   458.40,   200.00},
{ "Come-A-Lot",                   2087.30,   943.20,   -89.00,  2623.10,  1203.20,   110.90},
{ "Commerce",                     1323.90, -1842.20,   -89.00,  1701.90, -1722.20,   110.90},
{ "Commerce",                     1323.90, -1722.20,   -89.00,  1440.90, -1577.50,   110.90},
{ "Commerce",                     1370.80, -1577.50,   -89.00,  1463.90, -1384.90,   110.90},
{ "Commerce",                     1463.90, -1577.50,   -89.00,  1667.90, -1430.80,   110.90},
{ "Commerce",                     1583.50, -1722.20,   -89.00,  1758.90, -1577.50,   110.90},
{ "Commerce",                     1667.90, -1577.50,   -89.00,  1812.60, -1430.80,   110.90},
{ "Conference Center",            1046.10, -1804.20,   -89.00,  1323.90, -1722.20,   110.90},
{ "Conference Center",            1073.20, -1842.20,   -89.00,  1323.90, -1804.20,   110.90},
{ "Cranberry Station",           -2007.80,    56.30,     0.00, -1922.00,   224.70,   100.00},
{ "Creek",                        2749.90,  1937.20,   -89.00,  2921.60,  2669.70,   110.90},
{ "Dillimore",                     580.70,  -674.80,    -9.50,   861.00,  -404.70,   200.00},
{ "Doherty",                     -2270.00,  -324.10,    -0.00, -1794.90,  -222.50,   200.00},
{ "Doherty",                     -2173.00,  -222.50,    -0.00, -1794.90,   265.20,   200.00},
{ "Downtown",                    -1982.30,   744.10,    -6.10, -1871.70,  1274.20,   200.00},
{ "Downtown",                    -1871.70,  1176.40,    -4.50, -1620.30,  1274.20,   200.00},
{ "Downtown",                    -1700.00,   744.20,    -6.10, -1580.00,  1176.50,   200.00},
{ "Downtown",                    -1580.00,   744.20,    -6.10, -1499.80,  1025.90,   200.00},
{ "Downtown",                    -2078.60,   578.30,    -7.60, -1499.80,   744.20,   200.00},
{ "Downtown",                    -1993.20,   265.20,    -9.10, -1794.90,   578.30,   200.00},
{ "Downtown Los Santos",          1463.90, -1430.80,   -89.00,  1724.70, -1290.80,   110.90},
{ "Downtown Los Santos",          1724.70, -1430.80,   -89.00,  1812.60, -1250.90,   110.90},
{ "Downtown Los Santos",          1463.90, -1290.80,   -89.00,  1724.70, -1150.80,   110.90},
{ "Downtown Los Santos",          1370.80, -1384.90,   -89.00,  1463.90, -1170.80,   110.90},
{ "Downtown Los Santos",          1724.70, -1250.90,   -89.00,  1812.60, -1150.80,   110.90},
{ "Downtown Los Santos",          1370.80, -1170.80,   -89.00,  1463.90, -1130.80,   110.90},
{ "Downtown Los Santos",          1378.30, -1130.80,   -89.00,  1463.90, -1026.30,   110.90},
{ "Downtown Los Santos",          1391.00, -1026.30,   -89.00,  1463.90,  -926.90,   110.90},
{ "Downtown Los Santos",          1507.50, -1385.20,   110.90,  1582.50, -1325.30,   335.90},
{ "East Beach",                   2632.80, -1852.80,   -89.00,  2959.30, -1668.10,   110.90},
{ "East Beach",                   2632.80, -1668.10,   -89.00,  2747.70, -1393.40,   110.90},
{ "East Beach",                   2747.70, -1668.10,   -89.00,  2959.30, -1498.60,   110.90},
{ "East Beach",                   2747.70, -1498.60,   -89.00,  2959.30, -1120.00,   110.90},
{ "East Los Santos",              2421.00, -1628.50,   -89.00,  2632.80, -1454.30,   110.90},
{ "East Los Santos",              2222.50, -1628.50,   -89.00,  2421.00, -1494.00,   110.90},
{ "East Los Santos",              2266.20, -1494.00,   -89.00,  2381.60, -1372.00,   110.90},
{ "East Los Santos",              2381.60, -1494.00,   -89.00,  2421.00, -1454.30,   110.90},
{ "East Los Santos",              2281.40, -1372.00,   -89.00,  2381.60, -1135.00,   110.90},
{ "East Los Santos",              2381.60, -1454.30,   -89.00,  2462.10, -1135.00,   110.90},
{ "East Los Santos",              2462.10, -1454.30,   -89.00,  2581.70, -1135.00,   110.90},
{ "Easter Basin",                -1794.90,   249.90,    -9.10, -1242.90,   578.30,   200.00},
{ "Easter Basin",                -1794.90,   -50.00,    -0.00, -1499.80,   249.90,   200.00},
{ "Easter Bay Airport",          -1499.80,   -50.00,    -0.00, -1242.90,   249.90,   200.00},
{ "Easter Bay Airport",          -1794.90,  -730.10,    -3.00, -1213.90,   -50.00,   200.00},
{ "Easter Bay Airport",          -1213.90,  -730.10,     0.00, -1132.80,   -50.00,   200.00},
{ "Easter Bay Airport",          -1242.90,   -50.00,     0.00, -1213.90,   578.30,   200.00},
{ "Easter Bay Airport",          -1213.90,   -50.00,    -4.50,  -947.90,   578.30,   200.00},
{ "Easter Bay Airport",          -1315.40,  -405.30,    15.40, -1264.40,  -209.50,    25.40},
{ "Easter Bay Airport",          -1354.30,  -287.30,    15.40, -1315.40,  -209.50,    25.40},
{ "Easter Bay Airport",          -1490.30,  -209.50,    15.40, -1264.40,  -148.30,    25.40},
{ "Easter Bay Chemicals",        -1132.80,  -768.00,     0.00,  -956.40,  -578.10,   200.00},
{ "Easter Bay Chemicals",        -1132.80,  -787.30,     0.00,  -956.40,  -768.00,   200.00},
{ "El Castillo del Diablo",       -464.50,  2217.60,     0.00,  -208.50,  2580.30,   200.00},
{ "El Castillo del Diablo",       -208.50,  2123.00,    -7.60,   114.00,  2337.10,   200.00},
{ "El Castillo del Diablo",       -208.50,  2337.10,     0.00,     8.40,  2487.10,   200.00},
{ "El Corona",                    1812.60, -2179.20,   -89.00,  1970.60, -1852.80,   110.90},
{ "El Corona",                    1692.60, -2179.20,   -89.00,  1812.60, -1842.20,   110.90},
{ "El Quebrados",                -1645.20,  2498.50,     0.00, -1372.10,  2777.80,   200.00},
{ "Esplanade East",              -1620.30,  1176.50,    -4.50, -1580.00,  1274.20,   200.00},
{ "Esplanade East",              -1580.00,  1025.90,    -6.10, -1499.80,  1274.20,   200.00},
{ "Esplanade East",              -1499.80,   578.30,   -79.60, -1339.80,  1274.20,    20.30},
{ "Esplanade North",             -2533.00,  1358.90,    -4.50, -1996.60,  1501.20,   200.00},
{ "Esplanade North",             -1996.60,  1358.90,    -4.50, -1524.20,  1592.50,   200.00},
{ "Esplanade North",             -1982.30,  1274.20,    -4.50, -1524.20,  1358.90,   200.00},
{ "Fallen Tree",                  -792.20,  -698.50,    -5.30,  -452.40,  -380.00,   200.00},
{ "Fallow Bridge",                 434.30,   366.50,     0.00,   603.00,   555.60,   200.00},
{ "Fern Ridge",                    508.10,  -139.20,     0.00,  1306.60,   119.50,   200.00},
{ "Financial",                   -1871.70,   744.10,    -6.10, -1701.30,  1176.40,   300.00},
{ "Fisher's Lagoon",              1916.90,  -233.30,  -100.00,  2131.70,    13.80,   200.00},
{ "Flint Intersection",           -187.70, -1596.70,   -89.00,    17.00, -1276.60,   110.90},
{ "Flint Range",                  -594.10, -1648.50,     0.00,  -187.70, -1276.60,   200.00},
{ "Fort Carson",                  -376.20,   826.30,    -3.00,   123.70,  1220.40,   200.00},
{ "Foster Valley",               -2270.00,  -430.20,    -0.00, -2178.60,  -324.10,   200.00},
{ "Foster Valley",               -2178.60,  -599.80,    -0.00, -1794.90,  -324.10,   200.00},
{ "Foster Valley",               -2178.60, -1115.50,     0.00, -1794.90,  -599.80,   200.00},
{ "Foster Valley",               -2178.60, -1250.90,     0.00, -1794.90, -1115.50,   200.00},
{ "Frederick Bridge",             2759.20,   296.50,     0.00,  2774.20,   594.70,   200.00},
{ "Gant Bridge",                 -2741.40,  1659.60,    -6.10, -2616.40,  2175.10,   200.00},
{ "Gant Bridge",                 -2741.00,  1490.40,    -6.10, -2616.40,  1659.60,   200.00},
{ "Ganton",                       2222.50, -1852.80,   -89.00,  2632.80, -1722.30,   110.90},
{ "Ganton",                       2222.50, -1722.30,   -89.00,  2632.80, -1628.50,   110.90},
{ "Garcia",                      -2411.20,  -222.50,    -0.00, -2173.00,   265.20,   200.00},
{ "Garcia",                      -2395.10,  -222.50,    -5.30, -2354.00,  -204.70,   200.00},
{ "Garver Bridge",               -1339.80,   828.10,   -89.00, -1213.90,  1057.00,   110.90},
{ "Garver Bridge",               -1213.90,   950.00,   -89.00, -1087.90,  1178.90,   110.90},
{ "Garver Bridge",               -1499.80,   696.40,  -179.60, -1339.80,   925.30,    20.30},
{ "Glen Park",                    1812.60, -1449.60,   -89.00,  1996.90, -1350.70,   110.90},
{ "Glen Park",                    1812.60, -1100.80,   -89.00,  1994.30,  -973.30,   110.90},
{ "Glen Park",                    1812.60, -1350.70,   -89.00,  2056.80, -1100.80,   110.90},
{ "Green Palms",                   176.50,  1305.40,    -3.00,   338.60,  1520.70,   200.00},
{ "Greenglass College",            964.30,  1044.60,   -89.00,  1197.30,  1203.20,   110.90},
{ "Greenglass College",            964.30,   930.80,   -89.00,  1166.50,  1044.60,   110.90},
{ "Hampton Barns",                 603.00,   264.30,     0.00,   761.90,   366.50,   200.00},
{ "Hankypanky Point",             2576.90,    62.10,     0.00,  2759.20,   385.50,   200.00},
{ "Harry Gold Parkway",           1777.30,   863.20,   -89.00,  1817.30,  2342.80,   110.90},
{ "Hashbury",                    -2593.40,  -222.50,    -0.00, -2411.20,    54.70,   200.00},
{ "Hilltop Farm",                  967.30,  -450.30,    -3.00,  1176.70,  -217.90,   200.00},
{ "Hunter Quarry",                 337.20,   710.80,  -115.20,   860.50,  1031.70,   203.70},
{ "Idlewood",                     1812.60, -1852.80,   -89.00,  1971.60, -1742.30,   110.90},
{ "Idlewood",                     1812.60, -1742.30,   -89.00,  1951.60, -1602.30,   110.90},
{ "Idlewood",                     1951.60, -1742.30,   -89.00,  2124.60, -1602.30,   110.90},
{ "Idlewood",                     1812.60, -1602.30,   -89.00,  2124.60, -1449.60,   110.90},
{ "Idlewood",                     2124.60, -1742.30,   -89.00,  2222.50, -1494.00,   110.90},
{ "Idlewood",                     1971.60, -1852.80,   -89.00,  2222.50, -1742.30,   110.90},
{ "Jefferson",                    1996.90, -1449.60,   -89.00,  2056.80, -1350.70,   110.90},
{ "Jefferson",                    2124.60, -1494.00,   -89.00,  2266.20, -1449.60,   110.90},
{ "Jefferson",                    2056.80, -1372.00,   -89.00,  2281.40, -1210.70,   110.90},
{ "Jefferson",                    2056.80, -1210.70,   -89.00,  2185.30, -1126.30,   110.90},
{ "Jefferson",                    2185.30, -1210.70,   -89.00,  2281.40, -1154.50,   110.90},
{ "Jefferson",                    2056.80, -1449.60,   -89.00,  2266.20, -1372.00,   110.90},
{ "Julius Thruway East",          2623.10,   943.20,   -89.00,  2749.90,  1055.90,   110.90},
{ "Julius Thruway East",          2685.10,  1055.90,   -89.00,  2749.90,  2626.50,   110.90},
{ "Julius Thruway East",          2536.40,  2442.50,   -89.00,  2685.10,  2542.50,   110.90},
{ "Julius Thruway East",          2625.10,  2202.70,   -89.00,  2685.10,  2442.50,   110.90},
{ "Julius Thruway North",         2498.20,  2542.50,   -89.00,  2685.10,  2626.50,   110.90},
{ "Julius Thruway North",         2237.40,  2542.50,   -89.00,  2498.20,  2663.10,   110.90},
{ "Julius Thruway North",         2121.40,  2508.20,   -89.00,  2237.40,  2663.10,   110.90},
{ "Julius Thruway North",         1938.80,  2508.20,   -89.00,  2121.40,  2624.20,   110.90},
{ "Julius Thruway North",         1534.50,  2433.20,   -89.00,  1848.40,  2583.20,   110.90},
{ "Julius Thruway North",         1848.40,  2478.40,   -89.00,  1938.80,  2553.40,   110.90},
{ "Julius Thruway North",         1704.50,  2342.80,   -89.00,  1848.40,  2433.20,   110.90},
{ "Julius Thruway North",         1377.30,  2433.20,   -89.00,  1534.50,  2507.20,   110.90},
{ "Julius Thruway South",         1457.30,   823.20,   -89.00,  2377.30,   863.20,   110.90},
{ "Julius Thruway South",         2377.30,   788.80,   -89.00,  2537.30,   897.90,   110.90},
{ "Julius Thruway West",          1197.30,  1163.30,   -89.00,  1236.60,  2243.20,   110.90},
{ "Julius Thruway West",          1236.60,  2142.80,   -89.00,  1297.40,  2243.20,   110.90},
{ "Juniper Hill",                -2533.00,   578.30,    -7.60, -2274.10,   968.30,   200.00},
{ "Juniper Hollow",              -2533.00,   968.30,    -6.10, -2274.10,  1358.90,   200.00},
{ "K.A.C.C. Military Fuels",      2498.20,  2626.50,   -89.00,  2749.90,  2861.50,   110.90},
{ "Kincaid Bridge",              -1339.80,   599.20,   -89.00, -1213.90,   828.10,   110.90},
{ "Kincaid Bridge",              -1213.90,   721.10,   -89.00, -1087.90,   950.00,   110.90},
{ "Kincaid Bridge",              -1087.90,   855.30,   -89.00,  -961.90,   986.20,   110.90},
{ "King's",                      -2329.30,   458.40,    -7.60, -1993.20,   578.30,   200.00},
{ "King's",                      -2411.20,   265.20,    -9.10, -1993.20,   373.50,   200.00},
{ "King's",                      -2253.50,   373.50,    -9.10, -1993.20,   458.40,   200.00},
{ "LVA Freight Depot",            1457.30,   863.20,   -89.00,  1777.40,  1143.20,   110.90},
{ "LVA Freight Depot",            1375.60,   919.40,   -89.00,  1457.30,  1203.20,   110.90},
{ "LVA Freight Depot",            1277.00,  1087.60,   -89.00,  1375.60,  1203.20,   110.90},
{ "LVA Freight Depot",            1315.30,  1044.60,   -89.00,  1375.60,  1087.60,   110.90},
{ "LVA Freight Depot",            1236.60,  1163.40,   -89.00,  1277.00,  1203.20,   110.90},
{ "Las Barrancas",                -926.10,  1398.70,    -3.00,  -719.20,  1634.60,   200.00},
{ "Las Brujas",                   -365.10,  2123.00,    -3.00,  -208.50,  2217.60,   200.00},
{ "Las Colinas",                  1994.30, -1100.80,   -89.00,  2056.80,  -920.80,   110.90},
{ "Las Colinas",                  2056.80, -1126.30,   -89.00,  2126.80,  -920.80,   110.90},
{ "Las Colinas",                  2185.30, -1154.50,   -89.00,  2281.40,  -934.40,   110.90},
{ "Las Colinas",                  2126.80, -1126.30,   -89.00,  2185.30,  -934.40,   110.90},
{ "Las Colinas",                  2747.70, -1120.00,   -89.00,  2959.30,  -945.00,   110.90},
{ "Las Colinas",                  2632.70, -1135.00,   -89.00,  2747.70,  -945.00,   110.90},
{ "Las Colinas",                  2281.40, -1135.00,   -89.00,  2632.70,  -945.00,   110.90},
{ "Las Payasadas",                -354.30,  2580.30,     2.00,  -133.60,  2816.80,   200.00},
{ "Las Venturas Airport",         1236.60,  1203.20,   -89.00,  1457.30,  1883.10,   110.90},
{ "Las Venturas Airport",         1457.30,  1203.20,   -89.00,  1777.30,  1883.10,   110.90},
{ "Las Venturas Airport",         1457.30,  1143.20,   -89.00,  1777.40,  1203.20,   110.90},
{ "Las Venturas Airport",         1515.80,  1586.40,   -12.50,  1729.90,  1714.50,    87.50},
{ "Last Dime Motel",              1823.00,   596.30,   -89.00,  1997.20,   823.20,   110.90},
{ "Leafy Hollow",                -1166.90, -1856.00,     0.00,  -815.60, -1602.00,   200.00},
{ "Lil' Probe Inn",                -90.20,  1286.80,    -3.00,   153.80,  1554.10,   200.00},
{ "Linden Side",                  2749.90,   943.20,   -89.00,  2923.30,  1198.90,   110.90},
{ "Linden Station",               2749.90,  1198.90,   -89.00,  2923.30,  1548.90,   110.90},
{ "Linden Station",               2811.20,  1229.50,   -39.50,  2861.20,  1407.50,    60.40},
{ "Little Mexico",                1701.90, -1842.20,   -89.00,  1812.60, -1722.20,   110.90},
{ "Little Mexico",                1758.90, -1722.20,   -89.00,  1812.60, -1577.50,   110.90},
{ "Los Flores",                   2581.70, -1454.30,   -89.00,  2632.80, -1393.40,   110.90},
{ "Los Flores",                   2581.70, -1393.40,   -89.00,  2747.70, -1135.00,   110.90},
{ "Los Santos International",     1249.60, -2394.30,   -89.00,  1852.00, -2179.20,   110.90},
{ "Los Santos International",     1852.00, -2394.30,   -89.00,  2089.00, -2179.20,   110.90},
{ "Los Santos International",     1382.70, -2730.80,   -89.00,  2201.80, -2394.30,   110.90},
{ "Los Santos International",     1974.60, -2394.30,   -39.00,  2089.00, -2256.50,    60.90},
{ "Los Santos International",     1400.90, -2669.20,   -39.00,  2189.80, -2597.20,    60.90},
{ "Los Santos International",     2051.60, -2597.20,   -39.00,  2152.40, -2394.30,    60.90},
{ "Marina",                        647.70, -1804.20,   -89.00,   851.40, -1577.50,   110.90},
{ "Marina",                        647.70, -1577.50,   -89.00,   807.90, -1416.20,   110.90},
{ "Marina",                        807.90, -1577.50,   -89.00,   926.90, -1416.20,   110.90},
{ "Market",                        787.40, -1416.20,   -89.00,  1072.60, -1310.20,   110.90},
{ "Market",                        952.60, -1310.20,   -89.00,  1072.60, -1130.80,   110.90},
{ "Market",                       1072.60, -1416.20,   -89.00,  1370.80, -1130.80,   110.90},
{ "Market",                        926.90, -1577.50,   -89.00,  1370.80, -1416.20,   110.90},
{ "Market Station",                787.40, -1410.90,   -34.10,   866.00, -1310.20,    65.80},
{ "Martin Bridge",                -222.10,   293.30,     0.00,  -122.10,   476.40,   200.00},
{ "Missionary Hill",             -2994.40,  -811.20,     0.00, -2178.60,  -430.20,   200.00},
{ "Montgomery",                   1119.50,   119.50,    -3.00,  1451.40,   493.30,   200.00},
{ "Montgomery",                   1451.40,   347.40,    -6.10,  1582.40,   420.80,   200.00},
{ "Montgomery Intersection",      1546.60,   208.10,     0.00,  1745.80,   347.40,   200.00},
{ "Montgomery Intersection",      1582.40,   347.40,     0.00,  1664.60,   401.70,   200.00},
{ "Mulholland",                   1414.00,  -768.00,   -89.00,  1667.60,  -452.40,   110.90},
{ "Mulholland",                   1281.10,  -452.40,   -89.00,  1641.10,  -290.90,   110.90},
{ "Mulholland",                   1269.10,  -768.00,   -89.00,  1414.00,  -452.40,   110.90},
{ "Mulholland",                   1357.00,  -926.90,   -89.00,  1463.90,  -768.00,   110.90},
{ "Mulholland",                   1318.10,  -910.10,   -89.00,  1357.00,  -768.00,   110.90},
{ "Mulholland",                   1169.10,  -910.10,   -89.00,  1318.10,  -768.00,   110.90},
{ "Mulholland",                    768.60,  -954.60,   -89.00,   952.60,  -860.60,   110.90},
{ "Mulholland",                    687.80,  -860.60,   -89.00,   911.80,  -768.00,   110.90},
{ "Mulholland",                    737.50,  -768.00,   -89.00,  1142.20,  -674.80,   110.90},
{ "Mulholland",                   1096.40,  -910.10,   -89.00,  1169.10,  -768.00,   110.90},
{ "Mulholland",                    952.60,  -937.10,   -89.00,  1096.40,  -860.60,   110.90},
{ "Mulholland",                    911.80,  -860.60,   -89.00,  1096.40,  -768.00,   110.90},
{ "Mulholland",                    861.00,  -674.80,   -89.00,  1156.50,  -600.80,   110.90},
{ "Mulholland Intersection",      1463.90, -1150.80,   -89.00,  1812.60,  -768.00,   110.90},
{ "North Rock",                   2285.30,  -768.00,     0.00,  2770.50,  -269.70,   200.00},
{ "Ocean Docks",                  2373.70, -2697.00,   -89.00,  2809.20, -2330.40,   110.90},
{ "Ocean Docks",                  2201.80, -2418.30,   -89.00,  2324.00, -2095.00,   110.90},
{ "Ocean Docks",                  2324.00, -2302.30,   -89.00,  2703.50, -2145.10,   110.90},
{ "Ocean Docks",                  2089.00, -2394.30,   -89.00,  2201.80, -2235.80,   110.90},
{ "Ocean Docks",                  2201.80, -2730.80,   -89.00,  2324.00, -2418.30,   110.90},
{ "Ocean Docks",                  2703.50, -2302.30,   -89.00,  2959.30, -2126.90,   110.90},
{ "Ocean Docks",                  2324.00, -2145.10,   -89.00,  2703.50, -2059.20,   110.90},
{ "Ocean Flats",                 -2994.40,   277.40,    -9.10, -2867.80,   458.40,   200.00},
{ "Ocean Flats",                 -2994.40,  -222.50,    -0.00, -2593.40,   277.40,   200.00},
{ "Ocean Flats",                 -2994.40,  -430.20,    -0.00, -2831.80,  -222.50,   200.00},
{ "Octane Springs",                338.60,  1228.50,     0.00,   664.30,  1655.00,   200.00},
{ "Old Venturas Strip",           2162.30,  2012.10,   -89.00,  2685.10,  2202.70,   110.90},
{ "Palisades",                   -2994.40,   458.40,    -6.10, -2741.00,  1339.60,   200.00},
{ "Palomino Creek",               2160.20,  -149.00,     0.00,  2576.90,   228.30,   200.00},
{ "Paradiso",                    -2741.00,   793.40,    -6.10, -2533.00,  1268.40,   200.00},
{ "Pershing Square",              1440.90, -1722.20,   -89.00,  1583.50, -1577.50,   110.90},
{ "Pilgrim",                      2437.30,  1383.20,   -89.00,  2624.40,  1783.20,   110.90},
{ "Pilgrim",                      2624.40,  1383.20,   -89.00,  2685.10,  1783.20,   110.90},
{ "Pilson Intersection",          1098.30,  2243.20,   -89.00,  1377.30,  2507.20,   110.90},
{ "Pirates in Men's Pants",       1817.30,  1469.20,   -89.00,  2027.40,  1703.20,   110.90},
{ "Playa del Seville",            2703.50, -2126.90,   -89.00,  2959.30, -1852.80,   110.90},
{ "Prickle Pine",                 1534.50,  2583.20,   -89.00,  1848.40,  2863.20,   110.90},
{ "Prickle Pine",                 1117.40,  2507.20,   -89.00,  1534.50,  2723.20,   110.90},
{ "Prickle Pine",                 1848.40,  2553.40,   -89.00,  1938.80,  2863.20,   110.90},
{ "Prickle Pine",                 1938.80,  2624.20,   -89.00,  2121.40,  2861.50,   110.90},
{ "Queens",                      -2533.00,   458.40,     0.00, -2329.30,   578.30,   200.00},
{ "Queens",                      -2593.40,    54.70,     0.00, -2411.20,   458.40,   200.00},
{ "Queens",                      -2411.20,   373.50,     0.00, -2253.50,   458.40,   200.00},
{ "Randolph Industrial Estate",   1558.00,   596.30,   -89.00,  1823.00,   823.20,   110.90},
{ "Redsands East",                1817.30,  2011.80,   -89.00,  2106.70,  2202.70,   110.90},
{ "Redsands East",                1817.30,  2202.70,   -89.00,  2011.90,  2342.80,   110.90},
{ "Redsands East",                1848.40,  2342.80,   -89.00,  2011.90,  2478.40,   110.90},
{ "Redsands West",                1236.60,  1883.10,   -89.00,  1777.30,  2142.80,   110.90},
{ "Redsands West",                1297.40,  2142.80,   -89.00,  1777.30,  2243.20,   110.90},
{ "Redsands West",                1377.30,  2243.20,   -89.00,  1704.50,  2433.20,   110.90},
{ "Redsands West",                1704.50,  2243.20,   -89.00,  1777.30,  2342.80,   110.90},
{ "Regular Tom",                  -405.70,  1712.80,    -3.00,  -276.70,  1892.70,   200.00},
{ "Richman",                       647.50, -1118.20,   -89.00,   787.40,  -954.60,   110.90},
{ "Richman",                       647.50,  -954.60,   -89.00,   768.60,  -860.60,   110.90},
{ "Richman",                       225.10, -1369.60,   -89.00,   334.50, -1292.00,   110.90},
{ "Richman",                       225.10, -1292.00,   -89.00,   466.20, -1235.00,   110.90},
{ "Richman",                        72.60, -1404.90,   -89.00,   225.10, -1235.00,   110.90},
{ "Richman",                        72.60, -1235.00,   -89.00,   321.30, -1008.10,   110.90},
{ "Richman",                       321.30, -1235.00,   -89.00,   647.50, -1044.00,   110.90},
{ "Richman",                       321.30, -1044.00,   -89.00,   647.50,  -860.60,   110.90},
{ "Richman",                       321.30,  -860.60,   -89.00,   687.80,  -768.00,   110.90},
{ "Richman",                       321.30,  -768.00,   -89.00,   700.70,  -674.80,   110.90},
{ "Robada Intersection",         -1119.00,  1178.90,   -89.00,  -862.00,  1351.40,   110.90},
{ "Roca Escalante",               2237.40,  2202.70,   -89.00,  2536.40,  2542.50,   110.90},
{ "Roca Escalante",               2536.40,  2202.70,   -89.00,  2625.10,  2442.50,   110.90},
{ "Rockshore East",               2537.30,   676.50,   -89.00,  2902.30,   943.20,   110.90},
{ "Rockshore West",               1997.20,   596.30,   -89.00,  2377.30,   823.20,   110.90},
{ "Rockshore West",               2377.30,   596.30,   -89.00,  2537.30,   788.80,   110.90},
{ "Rodeo",                          72.60, -1684.60,   -89.00,   225.10, -1544.10,   110.90},
{ "Rodeo",                          72.60, -1544.10,   -89.00,   225.10, -1404.90,   110.90},
{ "Rodeo",                         225.10, -1684.60,   -89.00,   312.80, -1501.90,   110.90},
{ "Rodeo",                         225.10, -1501.90,   -89.00,   334.50, -1369.60,   110.90},
{ "Rodeo",                         334.50, -1501.90,   -89.00,   422.60, -1406.00,   110.90},
{ "Rodeo",                         312.80, -1684.60,   -89.00,   422.60, -1501.90,   110.90},
{ "Rodeo",                         422.60, -1684.60,   -89.00,   558.00, -1570.20,   110.90},
{ "Rodeo",                         558.00, -1684.60,   -89.00,   647.50, -1384.90,   110.90},
{ "Rodeo",                         466.20, -1570.20,   -89.00,   558.00, -1385.00,   110.90},
{ "Rodeo",                         422.60, -1570.20,   -89.00,   466.20, -1406.00,   110.90},
{ "Rodeo",                         466.20, -1385.00,   -89.00,   647.50, -1235.00,   110.90},
{ "Rodeo",                         334.50, -1406.00,   -89.00,   466.20, -1292.00,   110.90},
{ "Royal Casino",                 2087.30,  1383.20,   -89.00,  2437.30,  1543.20,   110.90},
{ "San Andreas Sound",            2450.30,   385.50,  -100.00,  2759.20,   562.30,   200.00},
{ "Santa Flora",                 -2741.00,   458.40,    -7.60, -2533.00,   793.40,   200.00},
{ "Santa Maria Beach",             342.60, -2173.20,   -89.00,   647.70, -1684.60,   110.90},
{ "Santa Maria Beach",              72.60, -2173.20,   -89.00,   342.60, -1684.60,   110.90},
{ "Shady Cabin",                 -1632.80, -2263.40,    -3.00, -1601.30, -2231.70,   200.00},
{ "Shady Creeks",                -1820.60, -2643.60,    -8.00, -1226.70, -1771.60,   200.00},
{ "Shady Creeks",                -2030.10, -2174.80,    -6.10, -1820.60, -1771.60,   200.00},
{ "Sobell Rail Yards",            2749.90,  1548.90,   -89.00,  2923.30,  1937.20,   110.90},
{ "Spinybed",                     2121.40,  2663.10,   -89.00,  2498.20,  2861.50,   110.90},
{ "Starfish Casino",              2437.30,  1783.20,   -89.00,  2685.10,  2012.10,   110.90},
{ "Starfish Casino",              2437.30,  1858.10,   -39.00,  2495.00,  1970.80,    60.90},
{ "Starfish Casino",              2162.30,  1883.20,   -89.00,  2437.30,  2012.10,   110.90},
{ "Temple",                       1252.30, -1130.80,   -89.00,  1378.30, -1026.30,   110.90},
{ "Temple",                       1252.30, -1026.30,   -89.00,  1391.00,  -926.90,   110.90},
{ "Temple",                       1252.30,  -926.90,   -89.00,  1357.00,  -910.10,   110.90},
{ "Temple",                        952.60, -1130.80,   -89.00,  1096.40,  -937.10,   110.90},
{ "Temple",                       1096.40, -1130.80,   -89.00,  1252.30, -1026.30,   110.90},
{ "Temple",                       1096.40, -1026.30,   -89.00,  1252.30,  -910.10,   110.90},
{ "The Camel's Toe",              2087.30,  1203.20,   -89.00,  2640.40,  1383.20,   110.90},
{ "The Clown's Pocket",           2162.30,  1783.20,   -89.00,  2437.30,  1883.20,   110.90},
{ "The Emerald Isle",             2011.90,  2202.70,   -89.00,  2237.40,  2508.20,   110.90},
{ "The Farm",                    -1209.60, -1317.10,   114.90,  -908.10,  -787.30,   251.90},
{ "The Four Dragons Casino",      1817.30,   863.20,   -89.00,  2027.30,  1083.20,   110.90},
{ "The High Roller",              1817.30,  1283.20,   -89.00,  2027.30,  1469.20,   110.90},
{ "The Mako Span",                1664.60,   401.70,     0.00,  1785.10,   567.20,   200.00},
{ "The Panopticon",               -947.90,  -304.30,    -1.10,  -319.60,   327.00,   200.00},
{ "The Pink Swan",                1817.30,  1083.20,   -89.00,  2027.30,  1283.20,   110.90},
{ "The Sherman Dam",              -968.70,  1929.40,    -3.00,  -481.10,  2155.20,   200.00},
{ "The Strip",                    2027.40,   863.20,   -89.00,  2087.30,  1703.20,   110.90},
{ "The Strip",                    2106.70,  1863.20,   -89.00,  2162.30,  2202.70,   110.90},
{ "The Strip",                    2027.40,  1783.20,   -89.00,  2162.30,  1863.20,   110.90},
{ "The Strip",                    2027.40,  1703.20,   -89.00,  2137.40,  1783.20,   110.90},
{ "The Visage",                   1817.30,  1863.20,   -89.00,  2106.70,  2011.80,   110.90},
{ "The Visage",                   1817.30,  1703.20,   -89.00,  2027.40,  1863.20,   110.90},
{ "Unity Station",                1692.60, -1971.80,   -20.40,  1812.60, -1932.80,    79.50},
{ "Valle Ocultado",               -936.60,  2611.40,     2.00,  -715.90,  2847.90,   200.00},
{ "Verdant Bluffs",                930.20, -2488.40,   -89.00,  1249.60, -2006.70,   110.90},
{ "Verdant Bluffs",               1073.20, -2006.70,   -89.00,  1249.60, -1842.20,   110.90},
{ "Verdant Bluffs",               1249.60, -2179.20,   -89.00,  1692.60, -1842.20,   110.90},
{ "Verdant Meadows",                37.00,  2337.10,    -3.00,   435.90,  2677.90,   200.00},
{ "Verona Beach",                  647.70, -2173.20,   -89.00,   930.20, -1804.20,   110.90},
{ "Verona Beach",                  930.20, -2006.70,   -89.00,  1073.20, -1804.20,   110.90},
{ "Verona Beach",                  851.40, -1804.20,   -89.00,  1046.10, -1577.50,   110.90},
{ "Verona Beach",                 1161.50, -1722.20,   -89.00,  1323.90, -1577.50,   110.90},
{ "Verona Beach",                 1046.10, -1722.20,   -89.00,  1161.50, -1577.50,   110.90},
{ "Vinewood",                      787.40, -1310.20,   -89.00,   952.60, -1130.80,   110.90},
{ "Vinewood",                      787.40, -1130.80,   -89.00,   952.60,  -954.60,   110.90},
{ "Vinewood",                      647.50, -1227.20,   -89.00,   787.40, -1118.20,   110.90},
{ "Vinewood",                      647.70, -1416.20,   -89.00,   787.40, -1227.20,   110.90},
{ "Whitewood Estates",             883.30,  1726.20,   -89.00,  1098.30,  2507.20,   110.90},
{ "Whitewood Estates",            1098.30,  1726.20,   -89.00,  1197.30,  2243.20,   110.90},
{ "Willowfield",                  1970.60, -2179.20,   -89.00,  2089.00, -1852.80,   110.90},
{ "Willowfield",                  2089.00, -2235.80,   -89.00,  2201.80, -1989.90,   110.90},
{ "Willowfield",                  2089.00, -1989.90,   -89.00,  2324.00, -1852.80,   110.90},
{ "Willowfield",                  2201.80, -2095.00,   -89.00,  2324.00, -1989.90,   110.90},
{ "Willowfield",                  2541.70, -1941.40,   -89.00,  2703.50, -1852.80,   110.90},
{ "Willowfield",                  2324.00, -2059.20,   -89.00,  2541.70, -1852.80,   110.90},
{ "Willowfield",                  2541.70, -2059.20,   -89.00,  2703.50, -1941.40,   110.90},
{ "Yellow Bell Station",          1377.40,  2600.40,   -21.90,  1492.40,  2687.30,    78.00},
// Main Zones
{ "Los Santos",                     44.60, -2892.90,  -242.90,  2997.00,  -768.00,   900.00},
{ "Las Venturas",                  869.40,   596.30,  -242.90,  2997.00,  2993.80,   900.00},
{ "Bone County",                  -480.50,   596.30,  -242.90,   869.40,  2993.80,   900.00},
{ "Tierra Robada",               -2997.40,  1659.60,  -242.90,  -480.50,  2993.80,   900.00},
{ "Tierra Robada",               -1213.90,   596.30,  -242.90,  -480.50,  1659.60,   900.00},
{ "San Fierro",                  -2997.40, -1115.50,  -242.90, -1213.90,  1659.60,   900.00},
{ "Red County",                  -1213.90,  -768.00,  -242.90,  2997.00,   596.30,   900.00},
{ "Flint County",                -1213.90, -2892.90,  -242.90,    44.60,  -768.00,   900.00},
{ "Whetstone",                   -2997.40, -2892.90,  -242.90, -1213.90, -1115.50,   900.00}
};

new VehicleNames[212][] = {
{"Landstalker"},{"Bravura"},{"Buffalo"},{"Linerunner"},{"Perrenial"},{"Sentinel"},{"Dumper"},
{"Firetruck"},{"Trashmaster"},{"Stretch"},{"Manana"},{"Infernus"},{"Voodoo"},{"Pony"},{"Mule"},
{"Cheetah"},{"Ambulance"},{"Leviathan"},{"Moonbeam"},{"Esperanto"},{"Taxi"},{"Washington"},
{"Bobcat"},{"Mr Whoopee"},{"BF Injection"},{"Hunter"},{"Premier"},{"Enforcer"},{"Securicar"},
{"Banshee"},{"Predator"},{"Bus"},{"Rhino"},{"Barracks"},{"Hotknife"},{"Trailer 1"},{"Previon"},
{"Coach"},{"Cabbie"},{"Stallion"},{"Rumpo"},{"RC Bandit"},{"Romero"},{"Packer"},{"Monster"},
{"Admiral"},{"Squalo"},{"Seasparrow"},{"Pizzaboy"},{"Tram"},{"Trailer 2"},{"Turismo"},
{"Speeder"},{"Reefer"},{"Tropic"},{"Flatbed"},{"Yankee"},{"Caddy"},{"Solair"},{"Berkley's RC Van"},
{"Skimmer"},{"PCJ-600"},{"Faggio"},{"Freeway"},{"RC Baron"},{"RC Raider"},{"Glendale"},{"Oceanic"},
{"Sanchez"},{"Sparrow"},{"Patriot"},{"Quad"},{"Coastguard"},{"Dinghy"},{"Hermes"},{"Sabre"},
{"Rustler"},{"ZR-350"},{"Walton"},{"Regina"},{"Comet"},{"BMX"},{"Burrito"},{"Camper"},{"Marquis"},
{"Baggage"},{"Dozer"},{"Maverick"},{"News Chopper"},{"Rancher"},{"FBI Rancher"},{"Virgo"},{"Greenwood"},
{"Jetmax"},{"Hotring"},{"Sandking"},{"Blista Compact"},{"Police Maverick"},{"Boxville"},{"Benson"},
{"Mesa"},{"RC Goblin"},{"Hotring Racer A"},{"Hotring Racer B"},{"Bloodring Banger"},{"Rancher"},
{"Super GT"},{"Elegant"},{"Journey"},{"Bike"},{"Mountain Bike"},{"Beagle"},{"Cropdust"},{"Stunt"},
{"Tanker"}, {"Roadtrain"},{"Nebula"},{"Majestic"},{"Buccaneer"},{"Shamal"},{"Hydra"},{"FCR-900"},
{"NRG-500"},{"HPV1000"},{"Cement Truck"},{"Tow Truck"},{"Fortune"},{"Cadrona"},{"FBI Truck"},
{"Willard"},{"Forklift"},{"Tractor"},{"Combine"},{"Feltzer"},{"Remington"},{"Slamvan"},
{"Blade"},{"Freight"},{"Streak"},{"Vortex"},{"Vincent"},{"Bullet"},{"Clover"},{"Sadler"},
{"Firetruck LA"},{"Hustler"},{"Intruder"},{"Primo"},{"Cargobob"},{"Tampa"},{"Sunrise"},{"Merit"},
{"Utility"},{"Nevada"},{"Yosemite"},{"Windsor"},{"Monster A"},{"Monster B"},{"Uranus"},{"Jester"},
{"Sultan"},{"Stratum"},{"Elegy"},{"Raindance"},{"RC Tiger"},{"Flash"},{"Tahoma"},{"Savanna"},
{"Bandito"},{"Freight Flat"},{"Streak Carriage"},{"Kart"},{"Mower"},{"Duneride"},{"Sweeper"},
{"Broadway"},{"Tornado"},{"AT-400"},{"DFT-30"},{"Huntley"},{"Stafford"},{"BF-400"},{"Newsvan"},
{"Tug"},{"Trailer 3"},{"Emperor"},{"Wayfarer"},{"Euros"},{"Hotdog"},{"Club"},{"Freight Carriage"},
{"Trailer 3"},{"Andromada"},{"Dodo"},{"RC Cam"},{"Launch"},{"Police Car (LSPD)"},{"Police Car (SFPD)"},
{"Police Car (LVPD)"},{"Police Ranger"},{"Picador"},{"S.W.A.T. Van"},{"Alpha"},{"Phoenix"},{"Glendale"},
{"Sadler"},{"Luggage Trailer A"},{"Luggage Trailer B"},{"Stair Trailer"},{"Boxville"},{"Farm Plow"},
{"Utility Trailer"}
};

new VehicleModel[MAX_PLAYERS];
new CFCTimer;
forward CheckForChange(playerid);
forward ShowGameTextForPlayer(playerid);


forward update_zones(playerid);

new zoneupdates[MAX_PLAYERS];
new player_zone[MAX_PLAYERS];
new zoneupdate;

new Text:txtClassSelHelper;
new Text:txtLosSantos;
new Text:txtSanFierro;
new Text:txtLasVenturas;




//----------------------------------------------------------

main()
{
    print("n---------------------------------------");
    print("Running Julius95's servern");
    print("---------------------------------------n");
}

//----------------------------------------------------------


public OnPlayerConnect(playerid)
{
if(!IsPlayerConnected(playerid)) return 1;
	printf("Passed");
	SendDeathMessage(INVALID_PLAYER_ID,playerid,200);
	printf("Passed");

		new joinMsg[128], name[MAX_PLAYER_NAME];
        GetPlayerName(playerid, name, sizeof(name));
        format(joinMsg, sizeof(joinMsg), "02[%d] 03*** %s has joined the server.", playerid, name);
        IRC_GroupSay(groupID, IRC_CHANNEL, joinMsg);
       

	TextDrawShowForPlayer(playerid,welcomeText);

    // class selection init vars
    gPlayerCitySelection[playerid] = -1;
    gPlayerHasCitySelected[playerid] = 0;
    gPlayerLastCitySelectionTick[playerid] = GetTickCount();

    //SetPlayerColor(playerid,COLOR_NORMAL_PLAYER);

    /*
    Removes vending machines
    RemoveBuildingForPlayer(playerid, 1302, 0.0, 0.0, 0.0, 6000.0);
    RemoveBuildingForPlayer(playerid, 1209, 0.0, 0.0, 0.0, 6000.0);
    RemoveBuildingForPlayer(playerid, 955, 0.0, 0.0, 0.0, 6000.0);
    RemoveBuildingForPlayer(playerid, 1775, 0.0, 0.0, 0.0, 6000.0);
    RemoveBuildingForPlayer(playerid, 1776, 0.0, 0.0, 0.0, 6000.0);
    */

    /*
    new ClientVersion[32];
    GetPlayerVersion(playerid, ClientVersion, 32);
    printf("Player %d reports client version: %s", playerid, ClientVersion);*/

    return 1;
}

//----------------------------------------------------------

public OnPlayerDisconnect(playerid, reason)
{
SendDeathMessage(INVALID_PLAYER_ID, playerid, 201);
        new leaveMsg[128], name[MAX_PLAYER_NAME], reasonMsg[8];
        switch(reason)
        {
                case 0: reasonMsg = "Timeout";
                case 1: reasonMsg = "Leaving";
                case 2: reasonMsg = "Kicked";
        }
        GetPlayerName(playerid, name, sizeof(name));
        format(leaveMsg, sizeof(leaveMsg), "02[%d] 03*** %s has left the server. (%s)", playerid, name, reasonMsg);
        IRC_GroupSay(groupID, IRC_CHANNEL, leaveMsg);
       
        
        zoneupdates[playerid] = 0;
		player_zone[playerid] = -1;
}



//----------------------------------------------------------

public OnPlayerSpawn(playerid)
{
    if(IsPlayerNPC(playerid)) return 1;

    new randSpawn = 0;

	zoneupdates[playerid] = 1;
	player_zone[playerid] = -1;
	if(!zoneupdate) zoneupdate = SetTimer("update_zones",1000,4);
	SetPlayerInterior(playerid,0);
    TogglePlayerClock(playerid,0);
    
    if(CITY_LOS_SANTOS == gPlayerCitySelection[playerid]) {
        randSpawn = random(sizeof(gRandomSpawns_LosSantos));
        SetPlayerPos(playerid,
         gRandomSpawns_LosSantos[randSpawn][0],
         gRandomSpawns_LosSantos[randSpawn][1],
         gRandomSpawns_LosSantos[randSpawn][2]);
        SetPlayerFacingAngle(playerid,gRandomSpawns_LosSantos[randSpawn][3]);
    }
    else if(CITY_SAN_FIERRO == gPlayerCitySelection[playerid]) {
        randSpawn = random(sizeof(gRandomSpawns_SanFierro));
        SetPlayerPos(playerid,
         gRandomSpawns_SanFierro[randSpawn][0],
         gRandomSpawns_SanFierro[randSpawn][1],
         gRandomSpawns_SanFierro[randSpawn][2]);
        SetPlayerFacingAngle(playerid,gRandomSpawns_SanFierro[randSpawn][3]);
    }
    else if(CITY_LAS_VENTURAS == gPlayerCitySelection[playerid]) {
        randSpawn = random(sizeof(gRandomSpawns_LasVenturas));
        SetPlayerPos(playerid,
         gRandomSpawns_LasVenturas[randSpawn][0],
         gRandomSpawns_LasVenturas[randSpawn][1],
         gRandomSpawns_LasVenturas[randSpawn][2]);
        SetPlayerFacingAngle(playerid,gRandomSpawns_LasVenturas[randSpawn][3]);
    }

    //SetPlayerColor(playerid,COLOR_NORMAL_PLAYER);

    

    GivePlayerWeapon(playerid,WEAPON_COLT45,100);
    GivePlayerWeapon(playerid,WEAPON_MP5,100);
    TogglePlayerClock(playerid, 0);

    return 1;
}

//----------------------------------------------------------

public OnPlayerDeath(playerid, killerid, reason)
{
SendDeathMessage(killerid, playerid, reason);
    
new msg[128], killerName[MAX_PLAYER_NAME], reasonMsg[32], playerName[MAX_PLAYER_NAME];
        GetPlayerName(killerid, killerName, sizeof(killerName));
        GetPlayerName(playerid, playerName, sizeof(playerName));
        if (killerid != INVALID_PLAYER_ID)
        {
                switch (reason)
                {
                        case 0: reasonMsg = "Unarmed";
                        case 1: reasonMsg = "Brass Knuckles";
                        case 2: reasonMsg = "Golf Club";
                        case 3: reasonMsg = "Night Stick";
                        case 4: reasonMsg = "Knife";
                        case 5: reasonMsg = "Baseball Bat";
                        case 6: reasonMsg = "Shovel";
                        case 7: reasonMsg = "Pool Cue";
                        case 8: reasonMsg = "Katana";
                        case 9: reasonMsg = "Chainsaw";
                        case 10: reasonMsg = "Dildo";
                        case 11: reasonMsg = "Dildo";
                        case 12: reasonMsg = "Vibrator";
                        case 13: reasonMsg = "Vibrator";
                        case 14: reasonMsg = "Flowers";
                        case 15: reasonMsg = "Cane";
                        case 22: reasonMsg = "Pistol";
                        case 23: reasonMsg = "Silenced Pistol";
                        case 24: reasonMsg = "Desert Eagle";
                        case 25: reasonMsg = "Shotgun";
                        case 26: reasonMsg = "Sawn-off Shotgun";
                        case 27: reasonMsg = "Combat Shotgun";
                        case 28: reasonMsg = "MAC-10";
                        case 29: reasonMsg = "MP5";
                        case 30: reasonMsg = "AK-47";
                        case 31: reasonMsg = "M4";
                        case 32: reasonMsg = "TEC-9";
                        case 33: reasonMsg = "Country Rifle";
                        case 34: reasonMsg = "Sniper Rifle";
                        case 37: reasonMsg = "Fire";
                        case 38: reasonMsg = "Minigun";
                        case 41: reasonMsg = "Spray Can";
                        case 42: reasonMsg = "Fire Extinguisher";
                        case 49: reasonMsg = "Vehicle Collision";
                        case 50: reasonMsg = "Vehicle Collision";
                        case 51: reasonMsg = "Explosion";
                        default: reasonMsg = "Unknown";
                }
                format(msg, sizeof(msg), "04*** %s killed %s. (%s)", killerName, playerName, reasonMsg);
        }
        else
        {
                switch (reason)
                {
                        case 53: format(msg, sizeof(msg), "04*** %s died. (Drowned)", playerName);
                        case 54: format(msg, sizeof(msg), "04*** %s died. (Collision)", playerName);
                        default: format(msg, sizeof(msg), "04*** %s died.", playerName);
                }
        }
        IRC_GroupSay(groupID, IRC_CHANNEL, msg);
       

	new playercash;

    // if they ever return to class selection make them city
    // select again first
    gPlayerHasCitySelected[playerid] = 0;

    if(killerid == INVALID_PLAYER_ID) {
        ResetPlayerMoney(playerid);
    } else {
        playercash = GetPlayerMoney(playerid);
        if(playercash > 0)  {
            GivePlayerMoney(killerid, playercash);
            ResetPlayerMoney(playerid);
        }
    }
    return 1;
}

//----------------------------------------------------------

ClassSel_SetupCharSelection(playerid)
{
    if(gPlayerCitySelection[playerid] == CITY_LOS_SANTOS) {
        SetPlayerInterior(playerid,11);
        SetPlayerPos(playerid,508.7362,-87.4335,998.9609);
        SetPlayerFacingAngle(playerid,0.0);
        SetPlayerCameraPos(playerid,508.7362,-83.4335,998.9609);
        SetPlayerCameraLookAt(playerid,508.7362,-87.4335,998.9609);
    }
    else if(gPlayerCitySelection[playerid] == CITY_SAN_FIERRO) {
        SetPlayerInterior(playerid,3);
        SetPlayerPos(playerid,-2673.8381,1399.7424,918.3516);
        SetPlayerFacingAngle(playerid,181.0);
        SetPlayerCameraPos(playerid,-2673.2776,1394.3859,918.3516);
        SetPlayerCameraLookAt(playerid,-2673.8381,1399.7424,918.3516);
    }
    else if(gPlayerCitySelection[playerid] == CITY_LAS_VENTURAS) {
        SetPlayerInterior(playerid,3);
        SetPlayerPos(playerid,349.0453,193.2271,1014.1797);
        SetPlayerFacingAngle(playerid,286.25);
        SetPlayerCameraPos(playerid,352.9164,194.5702,1014.1875);
        SetPlayerCameraLookAt(playerid,349.0453,193.2271,1014.1797);
    }

}

//----------------------------------------------------------
// Used to init textdraws of city names

ClassSel_InitCityNameText(Text:txtInit)
{
    TextDrawUseBox(txtInit, 0);
    TextDrawLetterSize(txtInit,1.25,3.0);
    TextDrawFont(txtInit, 0);
    TextDrawSetShadow(txtInit,0);
    TextDrawSetOutline(txtInit,1);
    TextDrawColor(txtInit,0xEEEEEEFF);
    TextDrawBackgroundColor(txtClassSelHelper,0x000000FF);
}

//----------------------------------------------------------

ClassSel_InitTextDraws()
{
    // Init our observer helper text display
    txtLosSantos = TextDrawCreate(10.0, 380.0, "Los Santos");
    ClassSel_InitCityNameText(txtLosSantos);
    txtSanFierro = TextDrawCreate(10.0, 380.0, "San Fierro");
    ClassSel_InitCityNameText(txtSanFierro);
    txtLasVenturas = TextDrawCreate(10.0, 380.0, "Las Venturas");
    ClassSel_InitCityNameText(txtLasVenturas);

    // Init our observer helper text display
    txtClassSelHelper = TextDrawCreate(10.0, 415.0,
       " Press ~b~~k~~GO_LEFT~ ~w~or ~b~~k~~GO_RIGHT~ ~w~to switch cities.~n~ Press ~r~~k~~PED_FIREWEAPON~ ~w~to select.");
    TextDrawUseBox(txtClassSelHelper, 1);
    TextDrawBoxColor(txtClassSelHelper,0x222222BB);
    TextDrawLetterSize(txtClassSelHelper,0.3,1.0);
    TextDrawTextSize(txtClassSelHelper,400.0,40.0);
    TextDrawFont(txtClassSelHelper, 2);
    TextDrawSetShadow(txtClassSelHelper,0);
    TextDrawSetOutline(txtClassSelHelper,1);
    TextDrawBackgroundColor(txtClassSelHelper,0x000000FF);
    TextDrawColor(txtClassSelHelper,0xFFFFFFFF);
}

//----------------------------------------------------------

ClassSel_SetupSelectedCity(playerid)
{
    if(gPlayerCitySelection[playerid] == -1) {
        gPlayerCitySelection[playerid] = CITY_LOS_SANTOS;
    }

    if(gPlayerCitySelection[playerid] == CITY_LOS_SANTOS) {
        SetPlayerInterior(playerid,0);
        SetPlayerCameraPos(playerid,1630.6136,-2286.0298,110.0);
        SetPlayerCameraLookAt(playerid,1887.6034,-1682.1442,47.6167);

        TextDrawShowForPlayer(playerid,txtLosSantos);
        TextDrawHideForPlayer(playerid,txtSanFierro);
        TextDrawHideForPlayer(playerid,txtLasVenturas);
    }
    else if(gPlayerCitySelection[playerid] == CITY_SAN_FIERRO) {
        SetPlayerInterior(playerid,0);
        SetPlayerCameraPos(playerid,-1300.8754,68.0546,129.4823);
        SetPlayerCameraLookAt(playerid,-1817.9412,769.3878,132.6589);

        TextDrawHideForPlayer(playerid,txtLosSantos);
        TextDrawShowForPlayer(playerid,txtSanFierro);
        TextDrawHideForPlayer(playerid,txtLasVenturas);
    }
    else if(gPlayerCitySelection[playerid] == CITY_LAS_VENTURAS) {
        SetPlayerInterior(playerid,0);
        SetPlayerCameraPos(playerid,1310.6155,1675.9182,110.7390);
        SetPlayerCameraLookAt(playerid,2285.2944,1919.3756,68.2275);

        TextDrawHideForPlayer(playerid,txtLosSantos);
        TextDrawHideForPlayer(playerid,txtSanFierro);
        TextDrawShowForPlayer(playerid,txtLasVenturas);
    }
}

//----------------------------------------------------------

ClassSel_SwitchToNextCity(playerid)
{
    gPlayerCitySelection[playerid]++;
    if(gPlayerCitySelection[playerid] > CITY_LAS_VENTURAS) {
        gPlayerCitySelection[playerid] = CITY_LOS_SANTOS;
    }
    PlayerPlaySound(playerid,1052,0.0,0.0,0.0);
    gPlayerLastCitySelectionTick[playerid] = GetTickCount();
    ClassSel_SetupSelectedCity(playerid);
}

//----------------------------------------------------------

ClassSel_SwitchToPreviousCity(playerid)
{
    gPlayerCitySelection[playerid]--;
    if(gPlayerCitySelection[playerid] < CITY_LOS_SANTOS) {
        gPlayerCitySelection[playerid] = CITY_LAS_VENTURAS;
    }
    PlayerPlaySound(playerid,1053,0.0,0.0,0.0);
    gPlayerLastCitySelectionTick[playerid] = GetTickCount();
    ClassSel_SetupSelectedCity(playerid);
}

//----------------------------------------------------------

ClassSel_HandleCitySelection(playerid)
{
    new Keys,ud,lr;
    GetPlayerKeys(playerid,Keys,ud,lr);

    if(gPlayerCitySelection[playerid] == -1) {
        ClassSel_SwitchToNextCity(playerid);
        return;
    }

    // only allow new selection every ~500 ms
    if( (GetTickCount() - gPlayerLastCitySelectionTick[playerid]) < 500 ) return;

    if(Keys & KEY_FIRE) {
        gPlayerHasCitySelected[playerid] = 1;
        TextDrawHideForPlayer(playerid,txtClassSelHelper);
        TextDrawHideForPlayer(playerid,txtLosSantos);
        TextDrawHideForPlayer(playerid,txtSanFierro);
        TextDrawHideForPlayer(playerid,txtLasVenturas);
        TogglePlayerSpectating(playerid,0);
        return;
    }

    if(lr > 0) {
       ClassSel_SwitchToNextCity(playerid);
    }
    else if(lr < 0) {
       ClassSel_SwitchToPreviousCity(playerid);
    }
}

//----------------------------------------------------------

public OnPlayerRequestClass(playerid, classid)
{
    if(IsPlayerNPC(playerid)) return 1;

    if(gPlayerHasCitySelected[playerid]) {
        ClassSel_SetupCharSelection(playerid);
        return 1;
    } else {
        if(GetPlayerState(playerid) != PLAYER_STATE_SPECTATING) {
            TogglePlayerSpectating(playerid,1);
            TextDrawShowForPlayer(playerid, txtClassSelHelper);
            gPlayerCitySelection[playerid] = -1;
        }
    }
    zoneupdates[playerid] = 0;
	player_zone[playerid] = -1;

    return 0;
}

//----------------------------------------------------------

public OnGameModeInit()
{

        // Connect the first bot
        botIDs[0] = IRC_Connect(IRC_SERVER, IRC_PORT, BOT_1_NICKNAME, BOT_1_REALNAME, BOT_1_USERNAME);
        // Set the connect delay for the first bot to 20 seconds
        IRC_SetIntData(botIDs[0], E_IRC_CONNECT_DELAY, 20);
        // Connect the second bot
        botIDs[1] = IRC_Connect(IRC_SERVER, IRC_PORT, BOT_2_NICKNAME, BOT_2_REALNAME, BOT_2_USERNAME);
        // Set the connect delay for the second bot to 30 seconds
        IRC_SetIntData(botIDs[1], E_IRC_CONNECT_DELAY, 30);
        // Create a group (the bots will be added to it upon connect)
        groupID = IRC_CreateGroup();


#define USE_TEXTDRAW_SET 1
AddRadioStation("Radio Julius", "http://78.72.181.195:8000/listen.pls", 1);
AddRadioStation("Vinylgodis", "http://93.182.176.123/listen.pls", 1);
AddRadioStation("Radio Seven", "http://www.radioseven.se/128.pls", 1);
AddRadioStation("Dansbandskanalen", "http://www.guldkanalen.se/static/streamDBK/128MP3.pls", 1);
AddRadioStation("Din Gata", "http://sverigesradio.se/topsy/direkt/2576-hi-mp3.pls", 1);
AddRadioStation("Big R Radio", "http://yp.shoutcast.com/sbin/tunein-station.pls?id=73131", 1);
AddRadioStation("Radio AF", "http://webradio.af.lu.se:8000/listen.pls", 1);
AddRadioStation("Reggae141.com", "http://yp.shoutcast.com/sbin/tunein-station.pls?id=85742", 1);
AddRadioStation("Hit Radio N1", "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1277314", 1);
AddRadioStation("The 1920s Radio Network", "http://64.5.130.43/listen.pls", 1);
AddRadioStation("LAs HOT Country", "http://46.21.151.98:8000/listen.pls", 1);
AddRadioStation("Fade FM", "http://37.59.61.51/listen.pls", 1);
AddRadioStation("Grand Theft Auto San Andreas", "http://listen.radionomy.com/grand-theft-auto-san-andreas.m3u", 1);
AddRadioStation("Radio Off", "", 1);




    SetGameModeText("Free Mode, stunts, races etc.");
    ShowPlayerMarkers(PLAYER_MARKERS_MODE_GLOBAL);
    ShowNameTags(1);
    SetNameTagDrawDistance(40.0);
    EnableStuntBonusForAll(0);
    DisableInteriorEnterExits();
    SetWeather(2);
    SetWorldTime(11);

    //UsePlayerPedAnims();
    //ManualVehicleEngineAndLights();
    //LimitGlobalChatRadius(300.0);

    ClassSel_InitTextDraws();

    // Player Class
    AddPlayerClass(281,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(282,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(283,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(284,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(285,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(286,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(287,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(288,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(289,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(265,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(266,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(267,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(268,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(269,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(270,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(1,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(2,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(3,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(4,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(5,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(6,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(8,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(42,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(65,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(74,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(86,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(119,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(149,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(208,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(273,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(289,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);

    AddPlayerClass(47,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(48,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(49,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(50,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(51,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(52,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(53,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(54,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(55,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(56,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(57,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(58,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(68,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(69,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(70,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(71,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(72,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(73,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(75,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(76,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(78,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(79,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(80,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(81,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(82,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(83,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(84,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(85,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(87,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(88,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(89,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(91,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(92,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(93,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(95,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(96,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(97,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(98,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(99,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
    AddPlayerClass(281,2385.7600,-1281.1403,24.4851,115.8818,0,0,0,0,0,0); //

    //AddVehicles
    AddStaticVehicle(600,2461.7532,-1656.6047,13.0208,90.0551,43,8); // car0
    AddStaticVehicle(439,-1766.9050,613.7802,28.0963,90.1726,79,78); // car1
    AddStaticVehicle(549,-1997.1497,701.7988,45.0459,0.2772,14,14); // car2
    AddStaticVehicle(480,-1997.1570,696.1385,45.1418,0.9108,127,8); // car3
    AddStaticVehicle(555,-1997.1226,690.4085,45.0497,0.4574,58,1); // car4
    AddStaticVehicle(533,-1997.1150,684.5101,45.0449,0.7273,7,1); // car5
    AddStaticVehicle(518,-1997.1124,678.0267,44.9521,1.0255,8,0); // car6
    AddStaticVehicle(542,-1997.1284,671.6221,44.1768,0.8896,45,92); // car7
    AddStaticVehicle(419,-1997.0178,664.9196,42.9615,0.3890,1,76); // car8
    AddStaticVehicle(502,-1944.3131,585.5934,35.0131,0.5602,36,88); // car9
    AddStaticVehicle(451,-1947.4026,585.6334,34.7825,0.5844,1,36); // car10
    AddStaticVehicle(506,-1950.4606,585.7036,34.8199,1.4687,126,52); // car 11
    AddStaticVehicle(477,-1938.2062,585.5255,34.8710,359.9006,65,1); // car12
    AddStaticVehicle(602,-1953.4102,585.8502,34.8846,359.4462,94,1); // car 13
    AddStaticVehicle(496,-1956.5023,585.9746,34.7861,0.1029,2,6); // car14
    AddStaticVehicle(402,-1959.3685,585.6564,34.9014,359.6677,86,110); // car15
    AddStaticVehicle(541,-1935.3408,585.7760,34.7403,0.0132,126,6); // car16
    AddStaticVehicle(415,-1932.3533,585.5296,34.8907,0.0465,119,1); // car17
    AddStaticVehicle(587,-1929.2599,586.0511,34.8377,359.7012,0,1); // car18
    AddStaticVehicle(504,-1926.2498,585.7791,34.9114,359.2645,45,29); // car19
    AddStaticVehicle(598,-1616.6740,651.2231,6.9347,0.8125,0,1); // car20
    AddStaticVehicle(601,-1628.8429,651.0104,6.9463,359.6806,1,1); // car21
    AddStaticVehicle(427,-1605.2008,651.7350,7.3193,359.6695,0,1); // car22
    AddStaticVehicle(596,-1599.6945,651.1352,6.9087,359.4665,0,1); // car23
    AddStaticVehicle(514,-1658.1969,449.0964,7.7671,213.6456,25,1); // car24
    AddStaticVehicle(432,-1450.3162,458.0264,7.1965,358.0674,43,0); // car25
    AddStaticVehicle(596,-1587.6300,651.6120,6.9087,358.3333,0,1); // car26
    AddStaticVehicle(596,-1581.8977,651.7803,6.9078,359.2933,0,1); // car27
    AddStaticVehicle(598,-1594.4235,673.0942,6.9332,179.1243,0,1); // car28
    AddStaticVehicle(598,-1600.0331,673.0317,6.9328,179.5085,0,1); // car29
    AddStaticVehicle(490,-1574.2876,714.2642,-5.1145,89.0129,0,0); // car30
    AddStaticVehicle(490,-1574.2661,710.3427,-5.1147,89.1375,0,0); // car31
    AddStaticVehicle(490,-1574.1755,706.1642,-5.1146,90.7530,0,0); // car32
    AddStaticVehicle(596,-1573.6791,722.1187,-5.5211,90.6117,0,1); // car33
    AddStaticVehicle(596,-1573.8575,730.6639,-5.5217,89.7573,0,1); // car34
    AddStaticVehicle(596,-1573.5385,734.4633,-5.5220,88.8792,0,1); // car35
    AddStaticVehicle(596,-1573.4248,739.0908,-5.5221,90.4690,0,1); // car36
    AddStaticVehicle(596,-1573.2230,742.5228,-5.5208,89.2028,0,1); // car37
    AddStaticVehicle(598,-1600.3463,749.7092,-5.4954,180.3100,0,1); // car38
    AddStaticVehicle(598,-1604.2474,749.6938,-5.4956,179.8932,0,1); // car39
    AddStaticVehicle(598,-1608.4534,749.6821,-5.4960,180.4397,0,1); // car40
    AddStaticVehicle(598,-1612.7340,749.6252,-5.4962,181.2642,0,1); // car41
    AddStaticVehicle(598,-1616.6920,749.7081,-5.4970,179.9954,0,1); // car41
    AddStaticVehicle(598,-1592.1154,749.6444,-5.4973,179.6934,0,1); // car43
    AddStaticVehicle(598,-1587.9971,749.8513,-5.4958,178.9971,0,1); // car44
    AddStaticVehicle(598,-1583.9622,749.8259,-5.4954,179.3184,0,1); // car45
    AddStaticVehicle(598,-1579.9960,749.7203,-5.4958,179.3284,0,1); // car46
    AddStaticVehicle(597,-1622.7053,649.7056,-5.4738,88.5598,0,1); // car47
    AddStaticVehicle(596,-1639.5427,674.1429,-5.5225,269.2240,0,1); // car48
    AddStaticVehicle(596,-1639.6805,682.0773,-5.5206,270.4482,0,1); // car49
    AddStaticVehicle(597,-1639.7576,686.4487,-5.4733,271.0222,0,1); // car50
    AddStaticVehicle(597,-1639.8285,669.9292,-5.4740,269.2921,0,1); // car51
    AddStaticVehicle(596,-1639.7863,666.1780,-5.5219,269.8799,0,1); // car52
    AddStaticVehicle(597,-1639.9882,661.8076,-5.4729,269.4359,0,1); // car53
    AddStaticVehicle(596,-1639.7858,657.7263,-5.5219,270.1051,0,1); // car54
    AddStaticVehicle(597,-1639.8157,653.7025,-5.4737,268.7205,0,1); // car55
    AddStaticVehicle(596,-1639.5710,649.8344,-5.5219,269.4172,0,1); // car56
    AddStaticVehicle(598,-1595.6241,694.0532,-5.4961,180.6208,0,1); // car57
    AddStaticVehicle(598,-1600.1334,693.9891,-5.4959,179.8698,0,1); // car58
    AddStaticVehicle(598,-1604.2416,693.9874,-5.4968,179.3441,0,1); // car59
    AddStaticVehicle(598,-1608.5326,694.0151,-5.4969,179.8332,0,1); // car60
    AddStaticVehicle(598,-1612.3291,694.0125,-5.4954,180.4067,0,1); // car61
    AddStaticVehicle(598,-1616.5938,694.0545,-5.4963,180.0018,0,1); // car62
    AddStaticVehicle(598,-1620.7970,694.0438,-5.4966,179.2025,0,1); // car63
    AddStaticVehicle(598,-1624.8109,693.9700,-5.4957,177.9268,0,1); // car64
    AddStaticVehicle(598,-1628.9708,693.9097,-5.4965,179.0654,0,1); // car65
    AddStaticVehicle(598,-1632.7097,693.9340,-5.4964,178.4928,0,1); // car66
    AddStaticVehicle(427,-1596.4033,678.2721,-5.1103,1.2281,0,1); // car67
    AddStaticVehicle(427,-1611.6322,733.2242,-5.1102,358.4313,0,1); // car68
    AddStaticVehicle(601,-1603.5253,733.0418,-5.4757,0.2952,1,1); // car69
    AddStaticVehicle(601,-1607.4572,732.7892,-5.4819,359.0168,1,1); // car70
    AddStaticVehicle(601,-1590.8903,718.8868,-5.4834,271.2448,1,1); // car71
    AddStaticVehicle(601,-1590.8268,714.7463,-5.4834,268.9313,1,1); // car72
    AddStaticVehicle(601,-1604.3324,676.1072,-5.4834,1.0470,1,1); // car73
    AddStaticVehicle(601,-1608.3807,675.8729,-5.4834,0.8872,1,1); // car74
    AddStaticVehicle(601,-1640.4934,690.0363,-5.4834,267.7431,1,1); // car75
    AddStaticVehicle(601,-1636.2931,694.5077,-5.4834,186.3782,1,1); // car76
    AddStaticVehicle(601,-1622.6899,657.6486,-5.4834,89.5577,1,1); // car77
    AddStaticVehicle(601,-1622.5437,661.3481,-5.4834,88.2688,1,1); // car78
    AddStaticVehicle(601,-1571.8530,745.8903,-5.4834,89.7020,1,1); // car79
    AddStaticVehicle(601,-1576.2029,749.3005,-5.4835,173.8618,1,1); // car80
    AddStaticVehicle(497,-1632.6996,671.5107,7.3643,268.2399,0,1); // car81
    AddStaticVehicle(449,-1857.2998,603.2500,35.4973,270.0000,1,74); // tram82
    AddStaticVehicle(411,1911.1893,-2279.0786,13.4614,179.2485,123,1); // lol1
	AddStaticVehicle(445,1907.7418,-2279.5120,13.6094,179.8117,35,35); // lol2
	AddStaticVehicle(504,1904.7721,-2279.1318,13.5269,179.3161,57,38); // lol3
	AddStaticVehicle(401,1901.4082,-2279.2578,13.5139,180.0869,47,47); // lol4
	AddStaticVehicle(518,1898.2179,-2279.1873,13.4053,180.2076,56,29); // lol5
	AddStaticVehicle(542,1894.9795,-2279.2842,13.4777,180.0437,32,92); // lol6
	AddStaticVehicle(507,1891.8937,-2279.1143,13.5598,179.7240,42,42); // lol8
	AddStaticVehicle(562,1888.6708,-2279.1792,13.3937,179.5717,17,1); // lol7
	AddStaticVehicle(558,1885.4453,-2279.1008,13.3649,179.9285,116,1); // lol9
	AddStaticVehicle(585,1882.3105,-2278.6233,13.3206,179.4485,42,42); // lol10
	AddStaticVehicle(419,1878.8553,-2279.2100,13.5319,179.2855,47,76); // lol11
	AddStaticVehicle(526,1875.7548,-2279.3730,13.5010,179.3397,9,39); // lol12
	AddStaticVehicle(480,1911.1173,-2287.7908,13.5075,359.5498,46,46); // lol13
	AddStaticVehicle(587,1907.8986,-2288.0244,13.4612,0.5045,101,1); // 14
	AddStaticVehicle(434,1904.6763,-2288.2078,13.6972,359.9930,12,12); // 15
	AddStaticVehicle(502,1901.3320,-2288.2546,13.6262,359.5880,79,62); // 17
	AddStaticVehicle(603,1898.3413,-2288.2791,13.5726,359.3993,69,1); // 19
	AddStaticVehicle(506,1895.0903,-2288.1157,13.4389,359.9139,6,6); // lol20
	AddStaticVehicle(451,1891.8843,-2288.2788,13.4408,359.4118,16,16); // lol21
	AddStaticVehicle(529,1888.6558,-2288.2527,13.3676,359.2263,42,42); // lol22
	AddStaticVehicle(421,1885.5139,-2288.0940,13.6169,359.4807,30,1); // lol23
	AddStaticVehicle(540,1882.1724,-2288.2661,13.5956,359.5057,7,7); // lol24
	AddStaticVehicle(550,1878.9658,-2288.3044,13.5483,0.0715,11,11); // lol25
	AddStaticVehicle(560,1875.8556,-2288.1931,13.4395,359.4767,33,0); // lol27
	AddStaticVehicle(580,1923.8180,-2269.1038,13.5305,359.8271,81,81); // lol28
	AddStaticVehicle(458,1920.7224,-2269.0457,13.6129,359.4567,101,1); // lol29
	AddStaticVehicle(405,1917.4686,-2268.8232,13.6094,358.7858,24,1); // lol30
	AddStaticVehicle(442,1914.3392,-2269.3115,13.5632,359.4727,36,0); // lol31
	AddStaticVehicle(479,1911.1680,-2269.1724,13.5300,359.4114,49,23); // lol33
	AddStaticVehicle(547,1908.0110,-2269.2039,13.4693,359.9124,10,1); // lol34
	AddStaticVehicle(426,1904.7115,-2268.9585,13.4777,359.8541,62,62); // lol35
	AddStaticVehicle(420,1901.5040,-2269.0149,13.5146,359.4012,6,1); // lol36
	AddStaticVehicle(597,1898.0305,-2268.9377,13.5027,358.3706,0,1); // lol37
	AddStaticVehicle(596,1895.1246,-2268.8660,13.4557,359.2520,0,1); // lol38
	AddStaticVehicle(598,1891.8759,-2269.0061,13.4802,359.5250,0,1); // lol39
	AddStaticVehicle(467,1888.6821,-2269.2686,13.4743,359.0755,22,1); // lol40
	AddStaticVehicle(516,1885.5570,-2269.2581,13.5683,359.8004,116,1); // lol41
	AddStaticVehicle(551,1882.3090,-2269.2805,13.5350,359.5113,91,1); // lol42
	AddStaticVehicle(546,1878.9924,-2268.9438,13.4587,359.6487,3,87); // lol43
	AddStaticVehicle(492,1875.7860,-2269.0564,13.5162,359.0539,77,26); // lol44
	AddStaticVehicle(466,1872.6475,-2269.1812,13.4762,358.6961,16,76); // lol45
	AddStaticVehicle(585,1869.4386,-2269.1697,13.3187,359.1321,62,62); // lol46
	AddStaticVehicle(602,1866.0898,-2268.8457,13.5410,359.1708,34,1); // lol47
	AddStaticVehicle(402,1862.9867,-2269.0178,13.5661,359.9218,30,30); // lol48
	AddStaticVehicle(429,1859.9293,-2269.0386,13.4141,0.0943,12,12); // lol49
	AddStaticVehicle(541,1856.7625,-2274.5742,13.3593,89.5916,51,1); // lol50
	AddStaticVehicle(415,1856.9264,-2277.6211,13.5063,88.5767,20,1); // lol51
	AddStaticVehicle(431,1862.0280,-2304.1050,13.6462,270.0306,59,83); // lol52
	AddStaticVehicle(437,1873.7074,-2304.0161,13.6802,269.9991,95,16); // lol53
	AddStaticVehicle(554,1856.9506,-2280.5718,13.8178,89.4800,65,32); // lol54
	AddStaticVehicle(478,1856.6708,-2283.6772,13.7288,89.6596,66,1); // lol55
	AddStaticVehicle(495,1856.7122,-2286.5811,14.0823,89.3343,119,122); // lol56
	AddStaticVehicle(422,1856.6270,-2289.3911,13.7232,89.2235,97,25); // lol57
	AddStaticVehicle(543,1856.7506,-2292.5146,13.5551,89.6668,43,8); // lol58
	AddStaticVehicle(489,1859.7606,-2298.5264,13.8834,179.9259,14,123); // lol59
	AddStaticVehicle(599,1863.0787,-2298.5251,13.9349,178.6234,0,1); // lol60
	AddStaticVehicle(490,1866.3394,-2298.1189,13.8696,179.5494,0,0); // lol61
	AddStaticVehicle(601,1869.4817,-2297.9785,13.5007,179.2839,1,1); // lol62
	AddStaticVehicle(528,1872.7810,-2299.0559,13.7821,179.4620,0,0); // lol63
	AddStaticVehicle(427,1875.7861,-2298.1174,13.8663,179.8300,0,1); // lol64
	AddStaticVehicle(433,1879.0906,-2296.8906,14.1710,179.9041,43,0); // lol67
	AddStaticVehicle(579,1882.2793,-2298.7673,13.6687,179.2489,11,11); // lol68
	AddStaticVehicle(400,1885.5701,-2299.2480,13.8267,179.4204,4,1); // lol69
	AddStaticVehicle(500,1888.7135,-2298.7749,13.8403,179.5145,28,119); // lol70
	AddStaticVehicle(444,1891.5771,-2298.2197,14.1174,179.4028,32,36); // lol71
	AddStaticVehicle(470,1895.1737,-2299.0354,13.7274,179.7490,43,0); // lol73
	AddStaticVehicle(600,1898.1533,-2298.6555,13.4504,179.4988,32,8); // lol74
	AddStaticVehicle(536,1901.3976,-2298.9766,13.4717,179.8836,12,1); // lol75
	AddStaticVehicle(534,1904.6555,-2298.5073,13.4587,179.1104,42,42); // lol76
	AddStaticVehicle(575,1907.9175,-2299.1719,13.3361,178.8462,51,96); // lol77
	AddStaticVehicle(567,1910.9651,-2298.3127,13.6028,179.3204,102,114); // lol78
	AddStaticVehicle(561,1914.3330,-2298.5879,13.5480,179.2602,25,78); // lol79
	AddStaticVehicle(559,1917.4224,-2298.8337,13.3907,179.8719,36,8); // lol80
	AddStaticVehicle(566,1920.6310,-2298.8464,13.5141,179.8326,52,8); // lol81
	AddStaticVehicle(576,1923.8184,-2298.8926,13.3433,179.0500,76,8); // lol82








	//Objects
	CreateObject(13592, 1966.19921875, -2460.3994140625, 21.60000038147, 0, 0, 0);
	CreateObject(13592, 1965.4000244141, -2466.6000976563, 21.200000762939, 0, 0, 0);
	CreateObject(634, 1892.5, -2414.1999511719, 12.5, 0, 0, 0);
	CreateObject(655, 1902.4000244141, -2409, 12.5, 0, 0, 0);
	CreateObject(671, 1914.5999755859, -2414.6999511719, 12.5, 0, 0, 0);
	CreateObject(680, 1910.6999511719, -2414.1000976563, 12.5, 0, 0, 0);
	CreateObject(687, 1911.5, -2414.6000976563, 12.5, 0, 0, 0);
	CreateObject(710, 1916.9000244141, -2417.3000488281, 28.10000038147, 0, 0, 0);
	CreateObject(777, 1876.0999755859, -2415, 12.60000038147, 0, 0, 0);
	CreateObject(18270, 1836.0999755859, -2403.3999023438, 19.39999961853, 0, 0, 0);
	CreateObject(1634, 1986.5999755859, -2344.1000976563, 17.60000038147, 0, 0, 300);
	CreateObject(1634, 1979.8000488281, -2348.1000976563, 13.800000190735, 0, 0, 300);
	CreateObject(1634, 2025.3000488281, -2332.6000976563, 24.5, 0, 0, 180);
	CreateObject(18478, 1856.0999755859, -2516, 40.299999237061, 0, 30, 0);
	CreateObject(18478, 1725.0999755859, -2515.8000488281, 75.400001525879, 0, 0, 0);
	CreateObject(13592, 1982.0999755859, -2528.3000488281, 22.60000038147, 0, 0, 0);
	CreateObject(13590, 2034.1999511719, -2526.1999511719, 13.5, 0, 0, 270);
	CreateObject(5754, 1586.0999755859, -2515.5, 82.800003051758, 0, 0, 90);
	CreateObject(6449, 1458.0999755859, -2499.8000488281, 96.199996948242, 0, 0, 90);
	CreateObject(13592, 1966.1999511719, -2460.3999023438, 21.60000038147, 0, 0, 0);
	CreateObject(13592, 1965.4000244141, -2466.6000976563, 21.200000762939, 0, 0, 0);
	CreateObject(634, 1892.5, -2414.1999511719, 12.5, 0, 0, 0);
	CreateObject(655, 1902.4000244141, -2409, 12.5, 0, 0, 0);
	CreateObject(671, 1914.5999755859, -2414.6999511719, 12.5, 0, 0, 0);
	CreateObject(680, 1910.6999511719, -2414.1000976563, 12.5, 0, 0, 0);
	CreateObject(687, 1911.5, -2414.6000976563, 12.5, 0, 0, 0);
	CreateObject(710, 1916.9000244141, -2417.3000488281, 28.10000038147, 0, 0, 0);
	CreateObject(777, 1876.0999755859, -2415, 12.60000038147, 0, 0, 0);
	CreateObject(18270, 1836.0999755859, -2403.3999023438, 19.39999961853, 0, 0, 0);
	CreateObject(1634, 1986.5999755859, -2344.1000976563, 17.60000038147, 0, 0, 300);
	CreateObject(1634, 1979.8000488281, -2348.1000976563, 13.800000190735, 0, 0, 300);
	CreateObject(1634, 2025.3000488281, -2332.6000976563, 24.5, 0, 0, 180);
	CreateObject(18478, 1856.0999755859, -2516, 40.299999237061, 0, 30, 0);
	CreateObject(18478, 1725.099609375, -2515.7998046875, 75.400001525879, 0, 0, 0);
	CreateObject(13592, 1982.0999755859, -2528.3000488281, 22.60000038147, 0, 0, 0);
	CreateObject(13590, 2034.1999511719, -2526.1999511719, 13.5, 0, 0, 270);
	CreateObject(5754, 1586.0999755859, -2515.5, 82.800003051758, 0, 0, 90);
	CreateObject(6449, 1458.0999755859, -2499.8000488281, 96.199996948242, 0, 0, 90);
	CreateObject(5314, 1597, -1196, 343.10000610352, 0, 0, 90);
	CreateObject(615, 1566.5999755859, -1305.5999755859, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1582.4000244141, -1304.6999511719, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1566.1999511719, -1286.6999511719, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1582.1999511719, -1283.9000244141, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1566.3000488281, -1273.6999511719, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1566.1999511719, -1244, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1566, -1262.4000244141, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1582, -1274.5, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1565.6999511719, -1259.3000488281, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1582.6999511719, -1244.4000244141, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1567.5999755859, -1224.8000488281, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1583.0999755859, -1224.9000244141, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1568.5999755859, -1211.0999755859, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1583, -1210.5999755859, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1567.3000488281, -1195.9000244141, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1581.8000488281, -1194.9000244141, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1565.6999511719, -1182.8000488281, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1582.8000488281, -1182.4000244141, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1568.4000244141, -1168.4000244141, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1582.9000244141, -1168.1999511719, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1569.1999511719, -1153.4000244141, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1584.5, -1158.4000244141, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1573.9000244141, -1143.5999755859, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1588.3000488281, -1149.9000244141, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1577.4000244141, -1133.0999755859, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1591, -1139.3000488281, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1582.9000244141, -1123.5, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1597, -1131.4000244141, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1590.4000244141, -1115.0999755859, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1602.6999511719, -1122.3000488281, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1597.1999511719, -1105, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1609, -1115.4000244141, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1606.5999755859, -1095.6999511719, 343.20001220703, 0, 0, 0);
	CreateObject(615, 1615.9000244141, -1106.5999755859, 343.20001220703, 0, 0, 0);
	CreateObject(13592, 1966.1999511719, -2460.3999023438, 21.60000038147, 0, 0, 0);
	CreateObject(13592, 1965.4000244141, -2466.6000976563, 21.200000762939, 0, 0, 0);
	CreateObject(634, 1892.5, -2414.1999511719, 12.5, 0, 0, 0);
	CreateObject(655, 1902.4000244141, -2409, 12.5, 0, 0, 0);
	CreateObject(671, 1914.5999755859, -2414.6999511719, 12.5, 0, 0, 0);
	CreateObject(680, 1910.6999511719, -2414.1000976563, 12.5, 0, 0, 0);
	CreateObject(687, 1911.5, -2414.6000976563, 12.5, 0, 0, 0);
	CreateObject(710, 1916.9000244141, -2417.3000488281, 28.10000038147, 0, 0, 0);
	CreateObject(777, 1876.0999755859, -2415, 12.60000038147, 0, 0, 0);
	CreateObject(18270, 1836.0999755859, -2403.3999023438, 19.39999961853, 0, 0, 0);
	CreateObject(1634, 1986.5999755859, -2344.1000976563, 17.60000038147, 0, 0, 300);
	CreateObject(1634, 1979.8000488281, -2348.1000976563, 13.800000190735, 0, 0, 300);
	CreateObject(1634, 2025.3000488281, -2332.6000976563, 24.5, 0, 0, 180);
	CreateObject(18478, 1856.099609375, -2516, 40.299999237061, 0, 29.998168945313, 0);
	CreateObject(18478, 1725.0999755859, -2515.8000488281, 75.400001525879, 0, 0, 0);
	CreateObject(13592, 1982.0999755859, -2528.3000488281, 22.60000038147, 0, 0, 0);
	CreateObject(13590, 2034.1999511719, -2526.1999511719, 13.5, 0, 0, 270);
	CreateObject(5754, 1586.0999755859, -2515.5, 82.800003051758, 0, 0, 90);
	CreateObject(6449, 1458.0999755859, -2499.8000488281, 96.199996948242, 0, 0, 90);
	CreateObject(17300, -1387.5999755859, -276.79998779297, 46.200000762939, 351.98559570313, 0, 315);
	CreateObject(17300, -1548, -463.29998779297, 83.800003051758, 1, 0, 315);
	CreateObject(17300, -1699.8000488281, -639.90002441406, 113, 355, 0, 315);
	CreateObject(18483, -1803.5999755859, -760, 130.89999389648, 0, 0, 48);
	CreateObject(1634, -1297.5, -176, 14.39999961853, 0, 0, 315);
	CreateObject(1634, -1300.5, -173.10000610352, 14.39999961853, 0, 0, 315);
	CreateObject(5112, -970.40002441406, 514.90002441406, 9.6999998092651, 0, 0, 40);
	CreateObject(5112, -858.5, 617.29998779297, 10, 0, 0, 45);
	CreateObject(1632, -786.79998779297, 695.20001220703, 17.39999961853, 0, 0, 135);
	CreateObject(4710, -1178, 424.5, 13.39999961853, 0, 0, 160);
	CreateObject(4148, -1283.3000488281, 470.70001220703, 6.3000001907349, 353, 0, 70);
	CreateObject(8040, 1648.1999511719, -1064.6999511719, 343.89999389648, 0, 0, 225);
	CreateObject(4150, 1576.6999511719, -1368.4000244141, 343.10000610352, 0, 0, 0);
	CreateObject(4150, 1576.6999511719, -1484.4000244141, 322.60000610352, 20, 0, 0);
	CreateObject(4150, 1576.9000244141, -1572.8000488281, 290.5, 20, 0, 0);
	CreateObject(4150, 1577.0999755859, -1681.5999755859, 245.39999389648, 25, 0, 0);
	CreateObject(4150, 1577.0999755859, -1787.8000488281, 194.73950195313, 26, 0, 0);
	CreateObject(13641, 1578.5, -1845.8000488281, 169.80000305176, 0, 0, 270);
	CreateObject(13641, 1572.0999755859, -1845.9000244141, 169.80000305176, 0, 0, 270);
	CreateObject(13641, 1478.5999755859, -2567.3999023438, 14.5, 0, 0, 0);
	CreateObject(13641, 1477.5999755859, -2552.5, 12.5, 0, 0, 0);
	CreateObject(13640, 1511.3000488281, -2533.6999511719, 13.60000038147, 0, 0, 0);
	CreateObject(13592, 1543.9000244141, -2529.5, 22.700000762939, 0, 0, 5);
	CreateObject(1634, 1775.5999755859, -2569.6000976563, 13.800000190735, 0, 0, 0);
	CreateObject(1634, 1774.5, -2518.8999023438, 13.800000190735, 0, 0, 180);
	CreateObject(3567, 1777, -2455.8000488281, 13.39999961853, 0, 0, 0);
	CreateObject(12932, 1802.5999755859, -2436.6999511719, 15.89999961853, 0, 0, 0);
	CreateObject(7515, 1727.8000488281, -2459.1999511719, 18.5, 0, 0, 0);
	CreateObject(3625, 1557.9000244141, -2460.8000488281, 15.39999961853, 0, 0, 0);
	CreateObject(8302, 1593.5, -2445.3000488281, 14.60000038147, 0, 0, 0);
	CreateObject(8040, 1893.0999755859, -2283.8999023438, 13.5, 0, 0, 0);
	CreateObject(13666, 1929.6999511719, -2343.6999511719, 18.299999237061, 0, 0, 0);
	CreateObject(9076, 1889.4000244141, -2675, 43.400001525879, 0, 0, 270);
	CreateObject(16778, 1896.9000244141, -2449.3999023438, 12.5, 0, 0, 0);
	CreateObject(16776, 1936.5, -2428.8000488281, 12.5, 0, 0, 0);
	CreateObject(13562, 1810.8000488281, -2646.3999023438, 24.10000038147, 0, 0, 0);
	CreateObject(13667, 1841.5, -2641.6999511719, 38.599998474121, 0, 0, 95);
	CreateObject(14608, 1823.5, -2641.3000488281, 27.60000038147, 0, 0, 325);
	CreateObject(16776, 1754.3000488281, -2647.3999023438, 25.39999961853, 0, 0, 180);
	CreateObject(1634, 1970.5999755859, -2428.3999023438, 13.800000190735, 0, 0, 90);
	CreateObject(18483, 2476.5, -1659.0999755859, 12, 0, 329.13635253906, 0);
	CreateObject(18483, 2541.6999511719, -1659, 31, 0, 358.17993164063, 0);
	CreateObject(18483, 2575.1999511719, -1659, 32.099998474121, 0, 330, 0);
	CreateObject(18483, 2605.3999023438, -1659, 49.5, 0, 330, 0);
	CreateObject(18483, 2624.8000488281, -1659.0999755859, 60.700000762939, 0, 330, 0);
	CreateObject(18483, 2655.1000976563, -1659.4000244141, 78.099998474121, 0, 330, 0);
	CreateObject(17300, 2809.8994140625, -1658.69921875, 102.80000305176, 3.8397216796875, 0, 85.995483398438);
	CreateObject(13139, 172.80000305176, 109.5, 492.70001220703, 0, 0, 0);
	CreateObject(17062, 3026.1000976563, -1656.5999755859, 163.5, 331.5, 0, 87);
	CreateObject(8420, 3161.1999511719, -1644.5999755859, 217.69999694824, 346, 0, 19);
	CreateObject(13641, 2369.3999023438, -1658.8000488281, 12.39999961853, 0, 0, 178);

    // SPECIAL
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/trains.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/pilots.txt");

    // LAS VENTURAS
     total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/lv_law.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/lv_airport.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/lv_gen.txt");

    // SAN FIERRO
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/sf_law.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/sf_airport.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/sf_gen.txt");

    // LOS SANTOS
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/ls_law.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/ls_airport.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/ls_gen_inner.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/ls_gen_outer.txt");

    // OTHER AREAS
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/whetstone.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/bone.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/flint.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/tierra.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/red_county.txt");


    printf("Total vehicles from files: %d",total_vehicles_from_files);

    
    
    welcomeText = TextDrawCreate(240.0,580.0,"Welcome to Julius95's server!");
    return 0;
}



//----------------------------------------------------------


public OnPlayerUpdate(playerid)
{
    if(!IsPlayerConnected(playerid)) return 0;
    if(IsPlayerNPC(playerid)) return 1;

    // changing cities by inputs
    if( !gPlayerHasCitySelected[playerid] &&
        GetPlayerState(playerid) == PLAYER_STATE_SPECTATING ) {
        ClassSel_HandleCitySelection(playerid);
        return 1;
    }

    // No weapons in interiors
    if(GetPlayerInterior(playerid) != 0 && GetPlayerWeapon(playerid) != 0) {
        SetPlayerArmedWeapon(playerid,0); // fists
        return 0; // no syncing until they change their weapon
    }

    // Don't allow minigun
    if(GetPlayerWeapon(playerid) == WEAPON_MINIGUN) {
        Kick(playerid);
        return 0;
    }

    /* No jetpacks allowed
    if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_USEJETPACK) {
        Kick(playerid);
        return 0;
    }*/

    /* For testing animations
    new msg[128+1];
    new animlib[32+1];
    new animname[32+1];

    thisanimid = GetPlayerAnimationIndex(playerid);
    if(lastanimid != thisanimid)
    {
        GetAnimationName(thisanimid,animlib,32,animname,32);
        format(msg, 128, "anim(%d,%d): %s %s", lastanimid, thisanimid, animlib, animname);
        lastanimid = thisanimid;
        SendClientMessage(playerid, 0xFFFFFFFF, msg);
    }*/

    return 1;
}

//----------------------------------------------------------

enum
{
    E_STREAMER_ATTACHED_OBJECT,
    E_STREAMER_ATTACHED_PLAYER,
    E_STREAMER_ATTACHED_VEHICLE,
    E_STREAMER_ATTACH_OFFSET_X,
    E_STREAMER_ATTACH_OFFSET_Y,
    E_STREAMER_ATTACH_OFFSET_Z,
    E_STREAMER_ATTACH_R_X,
    E_STREAMER_ATTACH_R_Y,
    E_STREAMER_ATTACH_R_Z,
    E_STREAMER_ATTACH_X,
    E_STREAMER_ATTACH_Y,
    E_STREAMER_ATTACH_Z,
    E_STREAMER_COLOR,
    E_STREAMER_DRAW_DISTANCE,
    E_STREAMER_EXTRA_ID,
    E_STREAMER_INTERIOR_ID,
    E_STREAMER_MAX_X,
    E_STREAMER_MAX_Y,
    E_STREAMER_MAX_Z,
    E_STREAMER_MIN_X,
    E_STREAMER_MIN_Y,
    E_STREAMER_MIN_Z,
    E_STREAMER_MODEL_ID,
    E_STREAMER_MOVE_R_X,
    E_STREAMER_MOVE_R_Y,
    E_STREAMER_MOVE_R_Z,
    E_STREAMER_MOVE_SPEED,
    E_STREAMER_MOVE_X,
    E_STREAMER_MOVE_Y,
    E_STREAMER_MOVE_Z,
    E_STREAMER_NEXT_X,
    E_STREAMER_NEXT_Y,
    E_STREAMER_NEXT_Z,
    E_STREAMER_PLAYER_ID,
    E_STREAMER_R_X,
    E_STREAMER_R_Y,
    E_STREAMER_R_Z,
    E_STREAMER_SIZE,
    E_STREAMER_STREAM_DISTANCE,
    E_STREAMER_STYLE,
    E_STREAMER_TEST_LOS,
    E_STREAMER_TYPE,
    E_STREAMER_WORLD_ID,
    E_STREAMER_X,
    E_STREAMER_Y,
    E_STREAMER_Z
}

//----------------------------------------------------------

CMD:healme(playerid, params[])
{
    SetPlayerHealth(playerid, 100);
    SendClientMessage(playerid, 0xFFFFFFFF, "Julius95Bot: You have successfully healed yourself!");
    SendClientMessage(playerid, 0xFFFFFFFF, "Julius95Bot: Don't abuse this command for example during fights or you may get kicked and banned!");
    return 1;
}

CMD:fix(playerid, params[])
{
        if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0xFFFFFFFF, "SpyBot: You are not in a vehicle!");
    RepairVehicle(GetPlayerVehicleID(playerid));
    SendClientMessage(playerid, 0xFFFFFFFF, "SpyBot: Your vehicle has been successfully repaired!");
    return 1;
}

CMD:flip(playerid, params[])
{
        if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0xFFFFFFFF, "AdrenalineBot: You are not in a vehicle!");
    new currentveh;
    new Float:angle;
    currentveh = GetPlayerVehicleID(playerid);
    GetVehicleZAngle(currentveh, angle);
    SetVehicleZAngle(currentveh, angle);
    SendClientMessage(playerid, 0xFFFFFFFF, "AdrenalineBot: Your vehicle has been successfully flipped!");
    return 1;
}

new fixtimer[MAX_PLAYERS],bool:actived[MAX_PLAYERS];
CMD:autofix(playerid)
{
    if(actived[playerid]) return SendClientMessage(playerid,-1,"TestBot: You have disabled autofix!"),KillTimer(fixtimer[playerid]),actived[playerid] = false;
    fixtimer[playerid] = SetTimerEx("fixt",1000,true,"i",playerid);
    actived[playerid] = true;
    SendClientMessage(playerid,-1,"TestBot: You have enabled autofix! Don't abuse this command.");
    return 1;
}
forward fixt(playerid);
public fixt(playerid)
{
    if(!IsPlayerInAnyVehicle(playerid)) return 0;
    RepairVehicle(GetPlayerVehicleID(playerid));
    return 1;
}
new lastpm[MAX_PLAYERS][128];
CMD:pm(playerid, params[]) {
    new id, message[1024];
	if(sscanf(params,"ds[1024]",id,message))return SendClientMessage(playerid, COLOR_RED, "USAGE: /pm <playerid> <message>");
  	if (!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_RED, "ERROR: Player is not connected.");
    if(playerid != id) {
        new PlayerName[MAX_PLAYER_NAME];
		GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
	    new ReturnName[MAX_PLAYER_NAME];
	    GetPlayerName(id, ReturnName, sizeof(ReturnName));
	    format(szString,sizeof(szString), ">> PM To %s (ID:%d): %s", ReturnName, id, message);
	    SendClientMessage(playerid, 0xFFCC2299, szString);
	    format(szString,sizeof(szString),"<< PM From %s (ID:%d): %s",PlayerName, playerid, message);
	    SendClientMessage(id, 0xFFFF22AA, szString);
	    PlayerPlaySound(id, 1085, 0.0, 0.0, 0.0);
	   	format(szString, sizeof(szString), "5*** [PM] From %s (ID:%d) To %s (ID:%d): %s",PlayerName,playerid,ReturnName,id,message);
        IRC_GroupSay(gGroupID, IRC_CHANNEL2, szString);
	}
 	else {
        SendClientMessage(playerid, COLOR_RED, "ERROR: You cannot PM yourself");
    }
	return 1;
}

CMD:paint(playerid, params[]) {
	new PlayerName[MAX_PLAYER_NAME];
	GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
    new car1,car2;
    if(IsPlayerInAnyVehicle(playerid)) {
        if(sscanf(params, "dd",car1,car2))
            return SendClientMessage(playerid, COLOR_RED,"USAGE: /paint number number");
        ChangeVehicleColor(GetPlayerVehicleID(playerid), car1,car2);
        format(szString, sizeof(szString), "WinampBot: You have changed your car colors to /paint %d %d", car1, car2);
        SendClientMessage(playerid, COLOR_YELLOW, szString);
		format(szString, sizeof(szString), "WinampBot: [CAR] %s (ID:%d) changed their color to /paint %d %d", PlayerName, playerid, car1, car2);
		IRC_GroupSay(gGroupID, IRC_CHANNEL2, szString);
    }
    else {
        SendClientMessage(playerid, COLOR_RED, "ERROR: You're not in any Vehicle!");
    }
    return 1;
}

CMD:lock(playerid, params[]) {
    if (!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "ERROR: You must be in a vehicle to use this command!");
    if (GetPlayerState(playerid) == PLAYER_STATE_PASSENGER) return SendClientMessage(playerid, COLOR_RED, "ERROR: You must be the driver of a vehicle to use this command");
	new vID = GetPlayerVehicleID(playerid);
	new PlayerName[MAX_PLAYER_NAME];
	GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
	loop(i, MAX_PLAYERS) {
        if (IsPlayerConnected(i) && i != playerid) {
            SetVehicleParamsForPlayer(vID, i, 0, 1);
        }
	}
    SetVehicleParamsForPlayer(vID, playerid, 0, 0);
    SendClientMessage(playerid, COLOR_GREEN, "HelpBot: Your vehicle is now locked.");
	format(szString, sizeof(szString), "HelpBot: [LOCK] %s (ID:%d) locked his vehicle.", PlayerName, playerid);
	IRC_GroupSay(gGroupID, IRC_CHANNEL2, szString);
    return 1;
}


CMD:unlock(playerid, params[]) {
    if (!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "ERROR: You must be in a vehicle to use this command!");
    if (GetPlayerState(playerid) == PLAYER_STATE_PASSENGER) return SendClientMessage(playerid, COLOR_RED, "ERROR: You must be the driver of a vehicle to use this command");
	new vID = GetPlayerVehicleID(playerid);
	new PlayerName[MAX_PLAYER_NAME];
	GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
	loop(i, MAX_PLAYERS) {
        if (IsPlayerConnected(i)) {
            SetVehicleParamsForPlayer(vID, i, 0, 0);
        }
    }
    SetVehicleParamsForPlayer(vID, playerid, 0, 0);
    SendClientMessage(playerid, COLOR_GREEN, "Julius95Bot: Your vehicle is now unlocked.");
	format(szString, sizeof(szString), "Julius95Bot: [UNLOCK] %s (ID:%d) has unlocked his vehicle.", PlayerName, playerid);
	IRC_GroupSay(gGroupID, IRC_CHANNEL2, szString);
    return 1;
}

CMD:spray(playerid, params[]) {
    new PlayerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
		if(IsPlayerInAnyVehicle(playerid) == 1) {
		    new vID = GetPlayerVehicleID(playerid);
			SetVehiclePos(vID, -1905.0388,267.0628,40.7519);
			SetVehicleZAngle(vID, 360.0000);
			PutPlayerInVehicle(playerid, vID, 0);
			format(szString, sizeof(szString), "* (/spray) %s (ID:%d) has teleported to the Pay 'N Spray.", PlayerName, playerid);
  			SendClientMessageToAll(0x6B96EFFF, szString);
			format(szString, sizeof(szString), "TestBot: [TELEPORT] (/spray) %s (ID:%d) has teleported to the Pay 'N Spray.", PlayerName, playerid);
  			IRC_GroupSay(gGroupID, IRC_CHANNEL2, szString);
		}
		else {
		    SetPlayerPos(playerid, -1905.0388,267.0628,40.7519);
		    SetPlayerFacingAngle(playerid, 360.0000);
			format(szString, sizeof(szString), "* (/spray) %s (ID:%d) has teleported to the Pay 'N Spray.", PlayerName, playerid);
  			SendClientMessageToAll(0x6B96EFFF, szString);
			format(szString, sizeof(szString), "TestBot: [TELEPORT] (/spray) %s (ID:%d) has teleported to the Pay 'N Spray.", PlayerName, playerid);
  			IRC_GroupSay(gGroupID, IRC_CHANNEL2, szString);
  			return 1;
  }
 }
 

CMD:getid(playerid, params[]) {
    if(sscanf(params, "s[35]",params)) return SendClientMessage(playerid, COLOR_RED, "USAGE:/getid <partofname>");
    new matches;
    format(szString, sizeof(szString), "Matches:");
    loop(i, MAX_PLAYERS) {
        if (IsPlayerConnected(i)) {
			new PlayerName[MAX_PLAYER_NAME];
			GetPlayerName(i, PlayerName, sizeof(PlayerName));
            if (!strfind(PlayerName, params, true)) {
                matches++;
                format(szString, sizeof(szString), "%s %s(%d)", szString, PlayerName, i);
            }
        }
    }

    if (matches == 0) {
        SendClientMessage(playerid, COLOR_RED, "ERROR: No matches found");
    }
    else {
        SendClientMessage(playerid, COLOR_GREEN, szString);
    }
    return 1;
}

CMD:rules(playerid, params[]) {
	ShowPlayerDialog(playerid, 5, DIALOG_STYLE_MSGBOX, "{FFFF00}Ultimate Stunting Rules List", DialogText5,"Okay","Cancel");
	return 1;
}

//----------------------------------------------------------

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys & KEY_FIRE)
    {
        new veh = GetPlayerVehicleID(playerid);
        AddVehicleComponent(veh,1010);
        return 1;
    }
    return 1;
}


//----------------------------------------------------------

public OnPlayerText(playerid, text[])
{
        new name[MAX_PLAYER_NAME], ircMsg[256];
        GetPlayerName(playerid, name, sizeof(name));
        format(ircMsg, sizeof(ircMsg), "02[%d] 07%s: %s", playerid, name, text);
        IRC_GroupSay(groupID, IRC_CHANNEL, ircMsg);
        return 1;
}


//----------------------------------------------------------

public IRC_OnConnect(botid, ip[], port)
{
        printf("*** IRC_OnConnect: Bot ID %d connected to %s:%d", botid, ip, port);
        // Join the channel
        IRC_JoinChannel(botid, IRC_CHANNEL);
        // Add the bot to the group
        IRC_AddToGroup(groupID, botid);
new str[60];
format(str, 60, "nickserv identify %s", IRC_PASSWORD);
IRC_SendRaw(botid, str);
		return 1;

}

/*
        This callback is executed whenever a current connection is closed. The
        plugin may automatically attempt to reconnect per user settings. IRC_Quit
        may be called at any time to stop the reconnection process.
*/

public IRC_OnDisconnect(botid, ip[], port, reason[])
{


		printf("*** IRC_OnDisconnect: Bot ID %d disconnected from %s:%d (%s)", botid, ip, port, reason);
        // Remove the bot from the group
        IRC_RemoveFromGroup(groupID, botid);
        return 1;
}

/*
        This callback is executed whenever a connection attempt begins. IRC_Quit may
        be called at any time to stop the reconnection process.
*/

public IRC_OnConnectAttempt(botid, ip[], port)
{
        printf("*** IRC_OnConnectAttempt: Bot ID %d attempting to connect to %s:%d...", botid, ip, port);
	    return 1;
}

/*
        This callback is executed whenever a connection attempt fails. IRC_Quit may
        be called at any time to stop the reconnection process.
*/

public IRC_OnConnectAttemptFail(botid, ip[], port, reason[])
{
        printf("*** IRC_OnConnectAttemptFail: Bot ID %d failed to connect to %s:%d (%s)", botid, ip, port, reason);
        return 1;
}

/*
        This callback is executed whenever a bot joins a channel.
*/

public IRC_OnJoinChannel(botid, channel[])
{
        printf("*** IRC_OnJoinChannel: Bot ID %d joined channel %s", botid, channel);
        return 1;
}

/*
        This callback is executed whenevever a bot leaves a channel.
*/

public IRC_OnLeaveChannel(botid, channel[], message[])
{
        printf("*** IRC_OnLeaveChannel: Bot ID %d left channel %s (%s)", botid, channel, message);
        return 1;
}

/*
        This callback is executed whenevever a bot is invited to a channel.
*/

public IRC_OnInvitedToChannel(botid, channel[], invitinguser[], invitinghost[])
{
        printf("*** IRC_OnInvitedToChannel: Bot ID %d invited to channel %s by %s (%s)", botid, channel, invitinguser, invitinghost);
        IRC_JoinChannel(botid, channel);
        return 1;
}

/*
        This callback is executed whenevever a bot is kicked from a channel. If the
        bot cannot immediately rejoin the channel (in the event, for example, that
        the bot is kicked and then banned), you might want to set up a timer here
        for rejoin attempts.
*/

public IRC_OnKickedFromChannel(botid, channel[], oppeduser[], oppedhost[], message[])
{
        printf("*** IRC_OnKickedFromChannel: Bot ID %d kicked by %s (%s) from channel %s (%s)", botid, oppeduser, oppedhost, channel, message);
        IRC_JoinChannel(botid, channel);
        return 1;
}

public IRC_OnUserDisconnect(botid, user[], host[], message[])
{
        printf("*** IRC_OnUserDisconnect (Bot ID %d): User %s (%s) disconnected (%s)", botid, user, host, message);
        return 1;
}

public IRC_OnUserJoinChannel(botid, channel[], user[], host[])
{
        printf("*** IRC_OnUserJoinChannel (Bot ID %d): User %s (%s) joined channel %s", botid, user, host, channel);
        return 1;
}

public IRC_OnUserLeaveChannel(botid, channel[], user[], host[], message[])
{
        printf("*** IRC_OnUserLeaveChannel (Bot ID %d): User %s (%s) left channel %s (%s)", botid, user, host, channel, message);
        return 1;
}

public IRC_OnUserKickedFromChannel(botid, channel[], kickeduser[], oppeduser[], oppedhost[], message[])
{
        printf("*** IRC_OnUserKickedFromChannel (Bot ID %d): User %s kicked by %s (%s) from channel %s (%s)", botid, kickeduser, oppeduser, oppedhost, channel, message);
}

public IRC_OnUserNickChange(botid, oldnick[], newnick[], host[])
{
        printf("*** IRC_OnUserNickChange (Bot ID %d): User %s (%s) changed his/her nick to %s", botid, oldnick, host, newnick);
        return 1;
}

public IRC_OnUserSetChannelMode(botid, channel[], user[], host[], mode[])
{
        printf("*** IRC_OnUserSetChannelMode (Bot ID %d): User %s (%s) on %s set mode: %s", botid, user, host, channel, mode);
        return 1;
}

public IRC_OnUserSetChannelTopic(botid, channel[], user[], host[], topic[])
{
        printf("*** IRC_OnUserSetChannelTopic (Bot ID %d): User %s (%s) on %s set topic: %s", botid, user, host, channel, topic);
        return 1;
}

public IRC_OnUserSay(botid, recipient[], user[], host[], message[])
{
        printf("*** IRC_OnUserSay (Bot ID %d): User %s (%s) sent message to %s: %s", botid, user, host, recipient, message);
        // Someone sent the first bot a private message

       if(strcmp(user,BOT_1_NICKNAME) && strcmp(user,BOT_2_NICKNAME)) // just to check if user that have said anything is not a bot lol, bot_2_name is second bot name if u have any
       {
          new msg[256];
          format(msg, sizeof(msg), "%s: %s", user, message);
          SendClientMessageToAll(0xFFFFFFFF, msg);
       }
        if (!strcmp(recipient, BOT_1_NICKNAME))
        {
                IRC_Say(botid, user, "You sent me a PM!");
        }

        return 1;
}

public IRC_OnUserNotice(botid, recipient[], user[], host[], message[])
{
        printf("*** IRC_OnUserNotice (Bot ID %d): User %s (%s) sent notice to %s: %s", botid, user, host, recipient, message);
        // Someone sent the second bot a notice (probably a network service)
        if (!strcmp(recipient, BOT_2_NICKNAME))
        {
                IRC_Notice(botid, user, "You sent me a notice!");
        }
        return 1;
}

public IRC_OnUserRequestCTCP(botid, user[], host[], message[])
{
        printf("*** IRC_OnUserRequestCTCP (Bot ID %d): User %s (%s) sent CTCP request: %s", botid, user, host, message);
        // Someone sent a CTCP VERSION request
        if (!strcmp(message, "VERSION"))
        {
                IRC_ReplyCTCP(botid, user, "VERSION SA-MP IRC Plugin v" #PLUGIN_VERSION "");
        }
        return 1;
}

public IRC_OnUserReplyCTCP(botid, user[], host[], message[])
{
        printf("*** IRC_OnUserReplyCTCP (Bot ID %d): User %s (%s) sent CTCP reply: %s", botid, user, host, message);
        return 1;
}

/*
        This callback is useful for logging, debugging, or catching error messages
        sent by the IRC server.
*/

public IRC_OnReceiveRaw(botid, message[])
{
        new File:file;
        if (!fexist("irc_log.txt"))
        {
                file = fopen("irc_log.txt", io_write);
        }
        else
        {
                file = fopen("irc_log.txt", io_append);
        }
        if (file)
        {
                fwrite(file, message);
                fwrite(file, "rn");
                fclose(file);
        }
        return 1;
}

/*
        Some examples of channel commands are here. You can add more very easily;
        their implementation is identical to that of ZeeX's zcmd.
*/

IRCCMD:say(botid, channel[], user[], host[], params[])
{
        // Check if the user has at least voice in the channel
        if (IRC_IsVoice(botid, channel, user))
        {
                // Check if the user entered any text
                if (!isnull(params))
                {
                        new msg[128];
                        // Echo the formatted message
                        format(msg, sizeof(msg), "02*** %s on IRC: %s", user, params);
                        IRC_GroupSay(groupID, channel, msg);
                        format(msg, sizeof(msg), "*** %s on IRC: %s", user, params);
                        SendClientMessageToAll(0x0000FFFF, msg);
                }
        }
        return 1;
}

IRCCMD:kick(botid, channel[], user[], host[], params[])
{
        // Check if the user is at least a halfop in the channel
        if (IRC_IsHalfop(botid, channel, user))
        {
                new playerid, reason[64];
                // Check if the user at least entered a player ID
                if (sscanf(params, "dS(No reason)[64]", playerid, reason))
                {
                        return 1;
                }
                // Check if the player is connected
                if (IsPlayerConnected(playerid))
                {
                        // Echo the formatted message
                        new msg[128], name[MAX_PLAYER_NAME];
                        GetPlayerName(playerid, name, sizeof(name));
                        format(msg, sizeof(msg), "02*** %s has been kicked by %s on IRC. (%s)", name, user, reason);
                        IRC_GroupSay(groupID, channel, msg);
                        format(msg, sizeof(msg), "*** %s has been kicked by %s on IRC. (%s)", name, user, reason);
                        SendClientMessageToAll(0x0000FFFF, msg);
                        // Kick the player
                        Kick(playerid);
                }
        }
        return 1;
}

IRCCMD:ban(botid, channel[], user[], host[], params[])
{
        // Check if the user is at least an op in the channel
        if (IRC_IsOp(botid, channel, user))
        {
                new playerid, reason[64];
                // Check if the user at least entered a player ID
                if (sscanf(params, "dS(No reason)[64]", playerid, reason))
                {
                        return 1;
                }
                // Check if the player is connected
                if (IsPlayerConnected(playerid))
                {
                        // Echo the formatted message
                        new msg[128], name[MAX_PLAYER_NAME];
                        GetPlayerName(playerid, name, sizeof(name));
                        format(msg, sizeof(msg), "02*** %s has been banned by %s on IRC. (%s)", name, user, reason);
                        IRC_GroupSay(groupID, channel, msg);
                        format(msg, sizeof(msg), "*** %s has been banned by %s on IRC. (%s)", name, user, reason);
                        SendClientMessageToAll(0x0000FFFF, msg);
                        // Ban the player
                        BanEx(playerid, reason);
                }
        }
        return 1;
}

IRCCMD:rcon(botid, channel[], user[], host[], params[])
{
        // Check if the user is at least an op in the channel
        if (IRC_IsOp(botid, channel, user))
        {
                // Check if the user entered any text
                if (!isnull(params))
                {
                        // Check if the user did not enter any invalid commands
                        if (strcmp(params, "exit", true) != 0 && strfind(params, "loadfs irc", true) == -1)
                        {
                                // Echo the formatted message
                                new msg[128];
                                format(msg, sizeof(msg), "RCON command %s has been executed.", params);
                                IRC_GroupSay(groupID, channel, msg);
                                // Send the command
                                SendRconCommand(params);
                        }
                }
        }
        return 1;
}

//----------------------------------------------------------

public update_zones() {

	new
		line1[10],
	    line2[10];

	for(new i=0; i<MAX_PLAYERS; i++) {
		if(IsPlayerConnected(i) && zoneupdates[i] == 1) {
			if(IsPlayerInZone(i,player_zone[i])) {
			}
			else {
				new
					player_zone_before;

				player_zone_before = player_zone[i];
				player_zone[i] = -1;

				for(new j=0; j<sizeof(zones);j++) {
					if(IsPlayerInZone(i,j) && player_zone[i] == -1) {
						if(player_zone_before == -1) GameTextForPlayer(i,zones[j][zone_name],1500,1);
						else if(strcmp(zones[j][zone_name],zones[player_zone_before][zone_name],true) != 0) GameTextForPlayer(i,zones[j][zone_name],1500,1);

						player_zone[i] = j;
						format(line1,10,"p%dzone",i);
						format(line2,10,"%d",j);
						
					}
				}
				if(player_zone[i] == -1) player_zone[i] = player_zone_before;
			}
		}
	}
}

IsPlayerInZone(playerid, zoneid) {
	if(zoneid == -1) return 0;

	new
		Float:x,
		Float:y,
		Float:z;

	GetPlayerPos(playerid,x,y,z);

	if(x >= zones[zoneid][zone_minx] && x < zones[zoneid][zone_maxx]
	&& y >= zones[zoneid][zone_miny] && y < zones[zoneid][zone_maxy]
	&& z >= zones[zoneid][zone_minz] && z < zones[zoneid][zone_maxz]
	&& z < 900.0) return 1;

	return 0;
}


//----------------------------------------------------------

public OnPlayerStateChange(playerid, newstate, oldstate) //checks when the player gets in a vehicle
{
        if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
        {
            VehicleModel[playerid] = GetVehicleModel(GetPlayerVehicleID(playerid));
            ShowGameTextForPlayer(playerid);
                return 1;
        }
        if(newstate != PLAYER_STATE_DRIVER && (oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER)) KillTimer(CFCTimer); //kills timer that checks for left vehicle if player exits vehicle
        return 1;
}
public CheckForChange(playerid) //Checks if the player has changed vehicles.
{
        if(GetVehicleModel(GetPlayerVehicleID(playerid)) != VehicleModel[playerid]) //makes sure the new vehicle isn't the same as old vehicle
        {
            VehicleModel[playerid] = GetVehicleModel(GetPlayerVehicleID(playerid));
        ShowGameTextForPlayer(playerid);
        }
        return 1;
}
public ShowGameTextForPlayer(playerid) //optimised code here :D
{
        new string[32];
        switch(GAMETEXT_COLOR) //sets the text's color
    {
                case 0: format(string,sizeof(string),"%s",VehicleNames[VehicleModel[playerid]-400]); //yellow
            case 1: format(string,sizeof(string),"~b~%s",VehicleNames[VehicleModel[playerid]-400]); //blue
            case 2: format(string,sizeof(string),"~g~%s",VehicleNames[VehicleModel[playerid]-400]); //green
            case 3: format(string,sizeof(string),"~r~%s",VehicleNames[VehicleModel[playerid]-400]); //red
            case 4: format(string,sizeof(string),"~p~%s",VehicleNames[VehicleModel[playerid]-400]); //purple
            case 5: format(string,sizeof(string),"~w~%s",VehicleNames[VehicleModel[playerid]-400]); //white
            case 6: format(string,sizeof(string),"%~|~s",VehicleNames[VehicleModel[playerid]-400]); //black
        }
        GameTextForPlayer(playerid,string,2000,1); //shows the text
        CFCTimer = SetTimerEx("CheckForChange",1000,true,"i",playerid); //starts timer to check if player has changed vehicles
        return 1;
}
	strcat(DialogText5, "{FF0A00}* No cheating or modifications of any kind that give you advantages over other players!(BANNABLE)nn* No flaming, racism or any sort of discrimination towards any other player!(BANNABLE)nn* No spamming/flooding chat for any reason!nn* Avoid the unnecessary use of sexual language (pussy, dick, etc.)!nn");
	strcat(DialogText5, "* The abuse of server bugs, such as RPG Bug is forbidden!(BANNABLE)nn* Spawn kill is allowed as long as it is not done with a Sea-Sparrow...nn ...In any race Spawn killing is strictly forbidden!n");
	strcat(DialogText5, "n* Use /report [ID/first letters of the offender's name] [reason] to report a cheater!nn{FFD200}Play Fair & Have Fun!");

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Error 021 pawno
  • Error 0200 failure fixed disk 0 что делать
  • Error 020 terminal specific forward carrier lookup is ongoing
  • Error 020 invalid symbol name
  • Error 02 троян скачать fb2 бесплатно полностью

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии