ОГРОМНАЯ просьба!

Просмотреть на наличие ошибок. И по возможности протестировать.
(Были следующие ошибки:
1. При выгрузке скрипта текстдравы не прибивались!
2. По словам других админов игроки не могли подконектится и были жуткие тормоза.
Надеюсь исправил!)

Пожалуйста... посмотрите кто способен!

Код:
#include <a_samp>

#define COLOR_MES 0xB2EBE0AA

forward ChangeTime ();

//переменные
new Text:timetextdraw;
new Text:datetextdraw;
new clockw[MAX_PLAYERS] = 0;

//переменные с названиями дат и месяцев

new Dates[32][] = {
"01",
"02",
"03",
"04",
"05",
"06",
"07",
"08",
"09",
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"17",
"18",
"19",
"20",
"21",
"22",
"23",
"24",
"25",
"26",
"27",
"28",
"29",
"30",
"31",
"32"
};

new Months[12][] = {
"JAN",
"FEB",
"MAR",
"APR",
"MAY",
"JUN",
"JUL",
"Aгп",
"SEP",
"OCT",
"NOV",
"DEC"
};


public OnFilterScriptInit()
{
	//Таймер(ы)
	//(Правильные дата и время покажутся только через 3 секунды после загрузки скрипта)
	SetTimer("ChangeTime",3000,1);
	return 1;
}

public OnFilterScriptExit()
{
	for(new i=0; i<MAX_PLAYERS; i++)
	{
if(IsPlayerConnected(i))
{
	TextDrawDestroy(timetextdraw);
	TextDrawDestroy(datetextdraw);
}
	}
	return 1;
}

main()
{
}

public OnPlayerConnect(playerid)
{
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[]) //когда игрок вводит комманду
{
if (strcmp("/clock on", cmdtext, true) == 0)
{
SendClientMessage(playerid,COLOR_MES,"Отображение часов включенно. [выключить /clock off]");
clockw[playerid] = 0;
return 1;
}
if (strcmp("/clock on", cmdtext, true) == 0)
{
SendClientMessage(playerid,COLOR_MES,"Отображение часов включенно. [выключить /clock on]");
clockw[playerid] = 1;
TextDrawHideForPlayer(playerid, datetextdraw);
TextDrawHideForPlayer(playerid, timetextdraw);
return 1;
}
return 0;
}

public ChangeTime()
{
	new string1[256],string2[256]; //стринг1 время стринг2 дата
	new hours,minutes,seconds; //объявляем переменные
	new year,month,date; //объявляем переменные
	for(new i=0; i<MAX_PLAYERS; i++)
	{
if(IsPlayerConnected(i) && clockw[i] == 0)
{
	TextDrawDestroy(datetextdraw);
	TextDrawDestroy(timetextdraw);
}
	}
	for(new i=0; i<MAX_PLAYERS; i++)
	{
if(IsPlayerConnected(i) && clockw[i] == 0)
{

	//Cоздаем переменные,куда записываем время и дату
	gettime(hours,minutes,seconds); //запрашиваем время и приравниваем часы, часам, минуты минутам и секунды секундам
	getdate(year,month,date); // получаем дату и приравниваем переменные

	//эти проверки для того,чтобы время например не отображалось 2:3,а отображалось как 02:03 и выводим
	if(hours>9 && minutes>9)
	{
	format(string1,sizeof(string1),"%d:%d",hours,minutes);
	}
	if(hours<9 && minutes<9)
	{
	format(string1,sizeof(string1),"0%d:0%d",hours,minutes);
	}
	if(hours>9 && minutes<9)
	{
	format(string1,sizeof(string1),"%d:0%d",hours,minutes);
	}
	if(hours<9 && minutes>9)
	{
	format(string1,sizeof(string1),"0%d:%d",hours,minutes);
	}
	format(string2,256,"Date:%s-%s",Months[month-1],Dates[date-1]); //создаем текстовую стоку типа дата:месяц-число

	//Создаем TEXT-DRAW времени в углу экрана
	timetextdraw=TextDrawCreate(549.0,21.7,string1);
	TextDrawSetOutline(timetextdraw,2);         //устанавливаем толщину обводки
	TextDrawFont(timetextdraw,3);//устанавливаем шрифт
	TextDrawUseBox(timetextdraw,0);     	//использовать коробочку-не надо
	TextDrawColor(timetextdraw,0xFFFFFFFF);         //устанавливаем цвет самого TEXT-DRAW'a
	TextDrawLetterSize(timetextdraw,0.57,2.2);          //устанавливаем размеры букв


	//-================Создаем TEXT-DRAW даты и месяца===================-
	datetextdraw=TextDrawCreate(603.0,5.0,string2);
 	TextDrawFont(datetextdraw,3);//устанавливаем шрифт
	TextDrawUseBox(datetextdraw,0);//использовать коробочку-не надо
	TextDrawColor(datetextdraw,0xFFFFFFFF);//устанавливаем цвет самого TEXT-DRAW'a
	TextDrawSetOutline(datetextdraw,1);//устанавливаем толщину обводки
	TextDrawLetterSize(datetextdraw,0.4719,1.8876);//устанавливаем размеры букв
	TextDrawAlignment(datetextdraw,3);//устанавливаем,чтобы центром TEXT-DRAW'a являлся правый край

	//Заставляем TEXT-DRAW'ы появиться на экране

	TextDrawShowForPlayer(i, timetextdraw);
	TextDrawShowForPlayer(i, datetextdraw);
	}
	}
}

В связи с тем что юзается (будет юзатся) совместно со следующим скриптом просьба их расматривать совместно!!!

Код:
#include <a_samp>

#define SLOTS 200
#define COLOR_MES 0xB2EBE0AA

forward UpdateSpeed ();

enum SavePlayerPosEnum {
Float:LastX,
Float:LastY,
Float:LastZ
}

new SavePlayerPos[SLOTS][SavePlayerPosEnum];
new Text:Speedo[SLOTS];
new UpdateSeconds;
new speedw[MAX_PLAYERS] = 0;

new CarName[][] =
{
    "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel",
	"Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana", "Infernus",
	"Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
    "Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection",
	"Hunter", "Premier", "Enforcer", "Securicar", "Banshee", "Predator", "Bus",
	"Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach", "Cabbie",
	"Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral",
	"Squalo", "Seasparrow", "Pizzaboy", "Tram", "Trailer", "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", "Boxvillde", "Benson", "Mesa", "RC Goblin",
	"Hotring Racer A", "Hotring Racer B", "Bloodring Banger", "Rancher", "Super GT",
	"Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster", "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", "Hustler", "Intruder", "Primo",
	"Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite",
	"Windsor", "Monster", "Monster", "Uranus", "Jester", "Sultan", "Stratium",
	"Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito",
    "Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper",
	"Broadway", "Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400",
	"News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club",
	"Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "Police Car",
 	"Police Car", "Police Car", "Police Ranger", "Picador", "S.W.A.T", "Alpha",
 	"Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs", "Boxville",
 	"Tiller", "Utility Trailer"
};

public OnFilterScriptInit() //при загрузке скрипта
{
	print("\n--------------------------------------");
	print("----------FS From http://samp-rus.com/---------");
	print("--------------------------------------\n");
	SetTimer("UpdateSpeed",1000, 1);
	return 1;
}

public OnFilterScriptExit() // при выгрузке
{
	for(new i=0; i<SLOTS; i++)
	{
if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
{
	TextDrawDestroy(Speedo[i]);
}
	}
	return 1;
}

main()
{
}
public OnPlayerConnect(playerid) //когда игрок вошел
{
//Copyleft(playerid);
return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate) //при изменении (сел в машуну, вышел из нее)
{
	if(newstate == PLAYER_STATE_ONFOOT)
	{
    TextDrawHideForPlayer(playerid, Speedo[playerid]);
	}
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[]) //когда игрок вводит комманду
{
if (strcmp("/speed on", cmdtext, true) == 0)
{
SendClientMessage(playerid,COLOR_MES,"Спидометр включен. [выключить /speed off]");
speedw[playerid] = 0;
return 1;
}
if (strcmp("/speed on", cmdtext, true) == 0)
{
SendClientMessage(playerid,COLOR_MES,"Спидометр выключен. [включить /speed on]");
speedw[playerid] = 1;
TextDrawDestroy(Speedo[playerid]);
return 1;
}
return 0;
}

public UpdateSpeed() //само тело спидометра
{
	new Float:x,Float:y,Float:z;
	new Float:distance,value,string[256];
	new Float:health;
	for(new i=0; i<SLOTS; i++)
	{
if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i) && speedw[i] == 0)
{
	TextDrawDestroy(Speedo[i]);
}
	}

	for(new i=0; i<SLOTS; i++)
	{
if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i) && speedw[i] == 0)
{
	GetPlayerPos(i, x, y, z);
	GetVehicleHealth(GetPlayerVehicleID(i), health);
	distance = floatsqroot(floatpower(floatabs(floatsub(x,SavePlayerPos[i][LastX])),2)+floatpower(floatabs(floatsub(y,SavePlayerPos[i][LastY])),2)+floatpower(floatabs(floatsub(z,SavePlayerPos[i][LastZ])),2));
	value = floatround(distance * 5000);
	if(UpdateSeconds > 1)
	{
value = floatround(value / UpdateSeconds);
	}
//	format(string,sizeof(string),"~g~VECHICLE  ~y~%s ~n~~w~%d  ~b~MPH :: ~b~KMH  ~w~%d~n~~r~VECHICLE HEALTH  ~w~%.2f",CarName[GetVehicleModel(GetPlayerVehicleID(i))-400],floatround(value/1600),floatround(value/1000),health);
	format(string,sizeof(string),"~y~%s ~w~%d  ~b~KMH  ~r~HEALTH  ~w~%.0f",CarName[GetVehicleModel(GetPlayerVehicleID(i))-400],floatround(value/1000),health/10);
	Speedo[i] = TextDrawCreate(320.00, 380.00, string);
	TextDrawSetOutline(Speedo[i], 0);
	TextDrawFont(Speedo[i], 3);
	TextDrawSetProportional(Speedo[i], 2);
	TextDrawAlignment(Speedo[i], 2);
	TextDrawShowForPlayer (i, Speedo[i]);
}
SavePlayerPos[i][LastX] = x;
SavePlayerPos[i][LastY] = y;
SavePlayerPos[i][LastZ] = z;
	}
}