Доступ к готовым решениям

Переход в группу "Пользователь"

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

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Урок Спидометр

#MISKA

Начинающий
Пользователь
Регистрация
29 Авг 2018
Сообщения
89
Лучшие ответы
0
Репутация
1
Привет, хочу сказать что я делал спидометр с вырезками чего-то из другого мода. А так-же добавлял своё!
Оцените!

Для начала
Вот сам TD - [Ссылка]
В начало мода
PHP:
new PlayerText:Speed_TD[MAX_PLAYERS][21];
new bool:lightscar[MAX_VEHICLES];
enum vehicle
{
	VID,
	Float:VX,
	Float:VY,
	Float:VZ,
	Float:VA,
	bool: VCHECKDELAY,
	bool: VSPAWNED,
	bool: VENGINE,
	Float:VMILEAGE,
	Float:VFUEL,
	Float:VHEALTH,
	VLOCK,
	VAREA,
}
new veh_info[MAX_VEHICLES][vehicle];
new gVehicleDriver[MAX_VEHICLES];
stock SetVehicleParamsExEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective)
{
	if(engine == 1)
	{
		veh_info[vehicleid-1][VENGINE] = true;
	}
	else veh_info[vehicleid-1][VENGINE] = false;
	SetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
}
#define SetVehicleParamsEx SetVehicleParamsExEx
В public OnGameModeInit()

PHP:
	ManualVehicleEngineAndLights();
 	for(new i; i < MAX_VEHICLES; i++)
	{
		gVehicleDriver[i] = INVALID_PLAYER_ID;
		veh_info[i][VOWNERID] = INVALID_PLAYER_ID;
		veh_info[i][VID] = INVALID_VEHICLE_ID;
		veh_info[i][VFUEL] = 40;
  		veh_info[i][VMILEAGE] = 0;
	}
В public OnVehicleSpawn(vehicleid)
PHP:
	GetVehiclePos(vehicleid, veh_info[vehicleid - 1][VX], veh_info[vehicleid - 1][VY], veh_info[vehicleid - 1][VZ]);
	GetVehicleZAngle(vehicleid, veh_info[vehicleid -1][VA]);
	veh_info[vehicleid-1][VCHECKDELAY] = true;
	veh_info[vehicleid-1][VSPAWNED] = true;
	veh_info[vehicleid-1][VFUEL] = 40;
	veh_info[vehicleid-1][VLOCK] = false;
В public OnPlayerStateChange(playerid, newstate, oldstate)
PHP:
	new vehicleid = GetPlayerVehicleID(playerid);
    if(oldstate == PLAYER_STATE_DRIVER)
    {
  		if(temp_info[playerid][CARINFOTIMER] != 0)
		{
			for(new i;i<21; i++)
			{
		        PlayerTextDrawHide(playerid, Speed_TD[playerid][i]);
		    }
			KillTimer(temp_info[playerid][CARINFOTIMER]);
			temp_info[playerid][CARINFOTIMER] = 0;
		}
	}
 	if(newstate == PLAYER_STATE_DRIVER)
	{
		for(new i;i<21; i++)
		{
	        PlayerTextDrawShow(playerid, Speed_TD[playerid][i]);
	    }
  		temp_info[playerid][CARINFOTIMER] = SetTimerEx("UpdateCarInfo",500,true,"iii",playerid,vehicleid,0);
 	}
В public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)

PHP:
if(newkeys & KEY_ACTION)
    {
		if(ToggleEngine(vehicleid) == -1) With(playerid,CWHITE,"• {FF0000}[Ошибка]{FFFFFF} Двигатель не заводится. Вызовите механика {FFFF00}/call");
    }
В конец мода
PHP:
forward UpdateCarInfo(playerid,const vehicleid,speedonly);
public UpdateCarInfo(playerid,const vehicleid,speedonly)
{
	if(!IsPlayerConnected(playerid) || IsKicked(playerid))
	{
		for(new i; i < 21; i ++) PlayerTextDrawHide(playerid, Speed_TD[playerid][i]);
		KillTimer(temp_info[playerid][CARINFOTIMER]);
		temp_info[playerid][CARINFOTIMER] = 0;
		return 1;
	}
	new info[9][40], string[70];
	new Float:X, Float:Y, Float:Z, marks[4];
	marks[0] = 'w';
	marks[1] = 'r';
	marks[2] = 'r';
	marks[3] = 'g';
	new lights, engine;
	engine = GetEngineStatL(vehicleid,lights);
	if(!speedonly)
	{
		GetVehiclePos(vehicleid, X, Y, Z);
		if(X > 10000.0 || Y > 10000.0 || Z > 10000.0 || X < -10000.0 || Y < -10000.0 || Z < -10000.0)
		{
			SendClientMessage(playerid,CWHITE, !"• {FF0000}[Ошибка]{FFFFFF} Вы были кикнуты анти-читом. Если считаете что это была ошибка, напишите жалобу на форум forum.folora-rp.ru");
			NewKick(playerid);
			SetVehicleToRespawnEx(vehicleid);
			return 1;
		}
		if(engine == 1)
		{
			marks[0] = 'g';
			veh_info[vehicleid-1][VFUEL] -= 0.01;
			if(veh_info[vehicleid-1][VFUEL] <= 0.0)
			{
				veh_info[vehicleid-1][VFUEL] = 0.0;
				ToggleEngine(vehicleid);
				SendClientMessage(playerid,CWHITE, !"• {FF0000}[Ошибка]{FFFFFF} В автомобиле закончился бензин. Двигатель заглох!");
			}
			else if(veh_info[vehicleid-1][VHEALTH] <= 300.0)
			{
				veh_info[vehicleid-1][VHEALTH] = 300.0;
				ToggleEngine(vehicleid);
				SendClientMessage(playerid,CWHITE, !"• {FF0000}[Ошибка]{FFFFFF} Автомобиль в критическом состоянии. Двигатель заглох!");
			}
		}
		veh_info[vehicleid-1][VX] = X;
		veh_info[vehicleid-1][VY] = Y;
		veh_info[vehicleid-1][VZ] = Z;
	}
 	GetVehicleVelocity(vehicleid,X,Y,Z);
 	new Float:speed = floatsqroot(floatadd(floatadd(floatpower(X, 2), floatpower(Y, 2)),  floatpower(Z, 2))) * 100.3;
	new lims[64];
	if(temp_info[playerid][SLIMIT])
	{
		format(lims,sizeof(lims),"(%d)",temp_info[playerid][SLIMIT]);
		if(speed > temp_info[playerid][SLIMIT])
		{
			marks[3] = 'r';
			new Float:dif = temp_info[playerid][SLIMIT] / speed;
			SetVehicleVelocity(vehicleid,X*dif,Y*dif,Z);
			speed = temp_info[playerid][SLIMIT];
		}

	}
	format(info[8],20,"%s", GetVehicleName(GetVehicleModel(vehicleid-1)));
	PlayerTextDrawSetString(playerid,Speed_TD[playerid][8],info[8]);
	if(engine == 1)
	{
		veh_info[vehicleid-1][VMILEAGE] += 0.09;
		format(string, sizeof(string), "%06.0f", veh_info[vehicleid-1][VMILEAGE]);
		PlayerTextDrawSetString(playerid, Speed_TD[playerid][16], string);
	}
	if(lightscar[GetPlayerVehicleID(playerid)] == true)//Горят
	{
		PlayerTextDrawColor(playerid,Speed_TD[playerid][5],16711935);//ФАРЫ
        PlayerTextDrawShow(playerid,Speed_TD[playerid][5]);
	}
	else
	{
		PlayerTextDrawColor(playerid,Speed_TD[playerid][5],-16776961);//ФАРЫ
		PlayerTextDrawShow(playerid,Speed_TD[playerid][5]);
	}
	if(engine == 1)
	{
		PlayerTextDrawColor(playerid,Speed_TD[playerid][4],16711935);//Двигатель
		PlayerTextDrawShow(playerid,Speed_TD[playerid][4]);
	}
	else
	{
		PlayerTextDrawColor(playerid,Speed_TD[playerid][4],-16776961);//Двигатель
		PlayerTextDrawShow(playerid,Speed_TD[playerid][4]);
	}
	if(veh_info[vehicleid-1][VLOCK] == 1)
	{
		PlayerTextDrawColor(playerid,Speed_TD[playerid][6],-16776961);//Двери
		PlayerTextDrawShow(playerid,Speed_TD[playerid][6]);
	}
	else
	{
		PlayerTextDrawColor(playerid,Speed_TD[playerid][6],16711935);//Двери
		PlayerTextDrawShow(playerid,Speed_TD[playerid][6]);
	}
	marks[1] = veh_info[vehicleid-1][VLOCK] == 1 ? 'g':'r';
	marks[2] = lights > 0 ? 'g':'l';
	
	format(info[0],20,"%.0fL", veh_info[vehicleid-1][VFUEL]);
	PlayerTextDrawSetString(playerid,Speed_TD[playerid][20],info[0]);//Бенз!!!
	format(info[1],20,"%.0f", speed);
    PlayerTextDrawSetString(playerid,Speed_TD[playerid][15],info[1]);//Скорость!!!
    format(info[6],20,"%.0f%",veh_info[vehicleid-1][VHEALTH]/10);//ХП АВТО
	PlayerTextDrawSetString(playerid,Speed_TD[playerid][19],info[6]);//ХП АВТО
	GetVehicleHealth(vehicleid,veh_info[vehicleid-1][VHEALTH]);
	return 1;
}

stock VehicleSpeed(carid)
{
    new Float:X, Float:Y, Float:Z;
    GetVehicleVelocity(carid, X, Y, Z);
    return floatround( floatsqroot( X * X + Y * Y + Z * Z ) * 180.0 );
}
stock NoShowSpeed(carid)
{
    switch(GetVehicleModel(carid))
	{
    	case 510,509,481: {return true;}
    }
    return false;
}
stock CreateVehicleEx(modelid, Float: X, Float: Y, Float: Z, Float: A, Color1, Color2, SpawnDelay)
{
	new id = CreateVehicle(modelid, X, Y, Z, A, Color1, Color2, SpawnDelay);
	veh_info[id - 1][VCHECKDELAY] = true;
	veh_info[id - 1][VX] = X;
	veh_info[id - 1][XY] = Y;
	veh_info[id - 1][VZ] = Z;
	veh_info[id - 1][VA] = A;
	veh_info[id - 1][VSPAWNED] = true;
	veh_info[id - 1][VCHECKDELAY] = true;
	return id;
}
stock GetEngineStat(vehicleid)
{
	new engine, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
	return engine;
}
stock GetEngineStatL(vehicleid,&lights)
{
	new engine, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
	return engine;
}
stock GetVehicleName(model)
{
 	new name[32];
 	switch(model)
 	{
		case 400: name = "Landstalker";
		case 401: name = "Bravura";
		case 402: name = "Buffalo";
		case 403: name = "Linerunner";
		case 404: name = "Perenniel";
		case 405: name = "Sentinel";
		case 406: name = "Dumper";
		case 407: name = "Firetruck";
		case 408: name = "Trashmaster";
		case 409: name = "Stretch";
		case 410: name = "Manana";
		case 411: name = "Infernus";
		case 412: name = "Voodoo";
		case 413: name = "Pony";
		case 414: name = "Mule";
		case 415: name = "Cheetah";
		case 416: name = "Ambulance";
		case 417: name = "Leviathan";
		case 418: name = "Moonbeam";
		case 419: name = "Esperanto";
		case 420: name = "Taxi";
		case 421: name = "Washington";
		case 422: name = "Bobcat";
		case 423: name = "Mr Whoopee";
		case 424: name = "BF Injection";
		case 425: name = "Hunter";
		case 426: name = "Premier";
		case 427: name = "Enforcer";
		case 428: name = "Securicar";
		case 429: name = "Banshee";
		case 430: name = "Predator";
		case 431: name = "Bus";
		case 432: name = "Rhino";
		case 433: name = "Barracks";
		case 434: name = "Hotknife";
		case 435: name = "Article Trailer";
		case 436: name = "Previon";
		case 437: name = "Coach";
		case 438: name = "Cabbie";
		case 439: name = "Stallion";
		case 440: name = "Rumpo";
		case 441: name = "RC Bandit";
		case 442: name = "Romero";
		case 443: name = "Packer";
		case 444: name = "Monster";
		case 445: name = "Admiral";
		case 446: name = "Squallo";
		case 447: name = "Seasparrow";
		case 448: name = "Pizzaboy";
		case 449: name = "Tram";
		case 450: name = "Article Trailer 2";
		case 451: name = "Turismo";
		case 452: name = "Speeder";
		case 453: name = "Reefer";
		case 454: name = "Tropic";
		case 455: name = "Flatbed";
		case 456: name = "Yankee";
		case 457: name = "Caddy";
		case 458: name = "Solair";
		case 459: name = "Berkley's RC Van";
		case 460: name = "Skimmer";
		case 461: name = "PCJ-600";
		case 462: name = "Faggio";
		case 463: name = "Freeway";
		case 464: name = "RC Baron";
		case 465: name = "RC Raider";
		case 466: name = "Glendale";
		case 467: name = "Oceanic";
		case 468: name = "Sanchez";
		case 469: name = "Sparrow";
		case 470: name = "Patriot";
		case 471: name = "Quad";
		case 472: name = "Coastguard";
		case 473: name = "Dinghy";
		case 474: name = "Hermes";
		case 475: name = "Sabre";
		case 476: name = "Rustler";
		case 477: name = "ZR-350";
		case 478: name = "Walton";
		case 479: name = "Regina";
		case 480: name = "Comet";
		case 481: name = "BMX";
		case 482: name = "Burrito";
		case 483: name = "Camper";
		case 484: name = "Marquis";
		case 485: name = "Baggage";
		case 486: name = "Dozer";
		case 487: name = "Maverick";
		case 488: name = "SAN News Maverick";
		case 489: name = "Rancher";
		case 490: name = "FBI Rancher";
		case 491: name = "Virgo";
		case 492: name = "Greenwood";
		case 493: name = "Jetmax";
		case 494: name = "Hotring Racer";
		case 495: name = "Sandking";
		case 496: name = "Blista Compact";
		case 497: name = "Police Maverick";
		case 498: name = "Boxville";
		case 499: name = "Benson";
		case 500: name = "Mesa";
		case 501: name = "RC Goblin";
		case 502: name = "Hotring Racer";
		case 503: name = "Hotring Racer";
		case 504: name = "Bloodring Banger";
		case 505: name = "Rancher";
		case 506: name = "Super GT";
		case 507: name = "Elegant";
		case 508: name = "Journey";
		case 509: name = "Bike";
		case 510: name = "Mountain Bike";
		case 511: name = "Beagle";
		case 512: name = "Cropduster";
		case 513: name = "Stuntplane";
		case 514: name = "Tanker";
		case 515: name = "Roadtrain";
		case 516: name = "Nebula";
		case 517: name = "Majestic";
		case 518: name = "Buccaneer";
		case 519: name = "Shamal";
		case 520: name = "Hydra";
		case 521: name = "FCR-900";
		case 522: name = "NRG-500";
		case 523: name = "HPV1000";
		case 524: name = "Cement Truck";
		case 525: name = "Towtruck";
		case 526: name = "Fortune";
		case 527: name = "Cadrona";
		case 528: name = "FBI Truck";
		case 529: name = "Willard";
		case 530: name = "Forklift";
		case 531: name = "Tractor";
		case 532: name = "Combine Harvester";
		case 533: name = "Feltzer";
		case 534: name = "Remington";
		case 535: name = "Slamvan";
		case 536: name = "Blade";
		case 537: name = "Freight";
		case 538: name = "Brownstreak";
		case 539: name = "Vortex";
		case 540: name = "Vincent";
		case 541: name = "Bullet";
		case 542: name = "Clover";
		case 543: name = "Sadler";
		case 544: name = "Firetruck LA";
		case 545: name = "Hustler";
		case 546: name = "Intruder";
		case 547: name = "Primo";
		case 548: name = "Cargobob";
		case 549: name = "Tampa";
		case 550: name = "Sunrise";
		case 551: name = "Merit";
		case 552: name = "Utility Van";
		case 553: name = "Nevada";
		case 554: name = "Yosemite";
		case 555: name = "Windsor";
		case 556: name = "Monster A";
		case 557: name = "Monster B";
		case 558: name = "Uranus";
		case 559: name = "Jester";
		case 560: name = "Sultan";
		case 561: name = "Stratum";
		case 562: name = "Elegy";
		case 563: name = "Raindance";
		case 564: name = "RC Tiger";
		case 565: name = "Flash";
		case 566: name = "Tahoma";
		case 567: name = "Savanna";
		case 568: name = "Bandito";
		case 569: name = "Freight Flat Trailer";
		case 570: name = "Streak Trailer";
		case 571: name = "Kart";
		case 572: name = "Mower";
		case 573: name = "Dune";
		case 574: name = "Sweeper";
		case 575: name = "Broadway";
		case 576: name = "Tornado";
		case 577: name = "AT400";
		case 578: name = "DFT-30";
		case 579: name = "Huntley";
		case 580: name = "Stafford";
		case 581: name = "BF-400";
		case 582: name = "Newsvan";
		case 583: name = "Tug";
		case 584: name = "Petrol Trailer";
		case 585: name = "Emperor";
		case 586: name = "Wayfarer";
		case 587: name = "Euros";
		case 588: name = "Hotdog";
		case 589: name = "Club";
		case 590: name = "Freight Box Trailer";
		case 591: name = "Article Trailer 3";
		case 592: name = "Andromada";
		case 593: name = "Dodo";
		case 594: name = "RC Cam";
		case 595: name = "Launch";
		case 596: name = "Police Car (LSPD)";
		case 597: name = "Police Car (SFPD)";
		case 598: name = "Police Car (LVPD)";
		case 599: name = "Police Ranger";
		case 600: name = "Picador";
		case 601: name = "S.W.A.T.";
		case 602: name = "Alpha";
		case 603: name = "Phoenix";
		case 604: name = "Glendale Shit";
		case 605: name = "Sadler Shit";
		case 606: name = "Baggage Trailer A";
		case 607: name = "Baggage Trailer B";
		case 608: name = "Tug Stairs Trailer";
		case 609: name = "Boxville";
		case 610: name = "Farm Trailer";
		case 611: name = "Utility Trailer";
		default:  name = "No-ne";
 	}
 	return name;
}
stock ToggleEngine(vehicleid)
{
	new engine, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
	if(engine <= 0)
	{
		new modelid = GetVehicleModel(vehicleid) - 400;
		if(modelid < 0) return 1;
		if(veh_info[vehicleid-1][VFUEL] <= 0.0 || veh_info[vehicleid-1][VHEALTH] <= 300) return -1;
		else engine = 1;
		engine = 1;
	}
	else if(engine > 0) engine = 0;
    SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
	return engine;
}
stock SetVehicleToRespawnEx(vehid)
{
	SetVehicleToRespawn(vehid);
	veh_info[vehid-1][VFUEL] = 40;
	veh_info[vehid-1][VLOCK] = 0;
}
stock With(playerid, color, message[])
{
    SetPVarInt(playerid,"FloodNewkeys",gettime() + 15);
    SendClientMessage(playerid, color, message);
    return 1;
}
У кого нету временных переменных, держите вставьте в начало мода

PHP:
enum temporary
{
 	CARINFOTIMER,
	SLIMIT
}
new temp_info[MAX_PLAYERS][temporary];
Так-же супер скриптеры, если у меня что-то не так прошу сказать)
Для опыта изучу и буду знать!
 
Последнее редактирование:
Сверху Снизу