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

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

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

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

Мануал Спидометр

Статус
В этой теме нельзя размещать новые ответы.

#Lymar

Дебютант
Доброго времени суток дорогие пользователи Pawno-Info.Ru
Хочу с вами поделится маленьким спидометром.
Примечание: большая красная полоска играет роль ProgressBar (будет менять размер в соотношении с количеством бензина в баке)
Для тех у кого не грузит скрин:
Для работы нам понадобится

И так начнем.

Добавим инклуд:
​
PHP:
#include <vehicleutil>
Добавим несколько переменных:​
PHP:
enum vinfo
{
	Engine,
 	Light,
 	Float:Fuel = 100.0
};
new VehInfo[MAX_VEHICLES][vinfo];
new PlayerText:SpeedoDraw[13][MAX_PLAYERS];
new SpeedoTimer[MAX_PLAYERS];
new fueltimer[MAX_VEHICLES];
Добавим парочку форвардов:​
PHP:
forward Speedometr(playerid);
forward FuelCheck(vehicleid);
В public OnPlayerConnect(playerid) добавим загрузку TextDraw:​
PHP:
    CreateTextDraws(playerid);
В public OnPlayerStateChange(playerid, newstate, oldstate) добавим вывод спидометра если вы садитесь в машину, прячем спидометр если вы с нее выйдите (у велосипедов спидометра не будет + их не нужно будет заводить):​
PHP:
	new vehicleid = GetPlayerVehicleID(playerid);
    switch(GetVehicleModel(vehicleid))
	{
		case 481, 510, 509: SetEngineState(vehicleid, 1);
		default:
		{
			switch(newstate)
			{
				case PLAYER_STATE_DRIVER:
				{
					for(new i = 0, j = sizeof(SpeedoDraw); i < j; i++) PlayerTextDrawShow(playerid, SpeedoDraw[i][playerid]);
					SpeedoTimer[playerid] = SetTimerEx("Speedometr", 500, true, "i", playerid);
					if(VehInfo[vehicleid][Engine] == 0) 
					{
						SendClientMessage(playerid, 0x33AA33FF, "Нажмите ''2'' что бы завести двигатель.");
						SendClientMessage(playerid, 0x33AA33FF, "Нажмите ''ALT'' что бы включить фары.");
					}
				}
				case PLAYER_STATE_ONFOOT: 
				{
					for(new i = 0, j = sizeof(SpeedoDraw); i < j; i++) PlayerTextDrawHide(playerid, SpeedoDraw[i][playerid]); 
					KillTimer(SpeedoTimer[playerid]);
				}
			}
		}
	}
В public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) добавим события на кнопки 2 и ALT:​
PHP:
	new vehicleid = GetPlayerVehicleID(playerid);
	if(newkeys == KEY_SUBMISSION)
	{
		if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
		{
			switch(GetVehicleModel(vehicleid))
			{
				case 481, 510, 509: return true;
				default:
				{				
					if(VehInfo[vehicleid][Fuel] <= 0) return SendClientMessage(playerid, 0xAA3333FF, "В машине нет бензина!");
					switch(VehInfo[vehicleid][Engine])
					{
						case 1: SetEngineState(vehicleid, 0), KillTimer(fueltimer[vehicleid]);
						default: SetEngineState(vehicleid, 1), fueltimer[vehicleid] = SetTimerEx("FuelCheck", 30000, true, "d", vehicleid);
					}
				}
			}
		}
	}
	if(newkeys == KEY_FIRE)
	{
	    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
		{
			switch(VehInfo[vehicleid][Light])
			{
				case 1: SetLightState(vehicleid, 0);
				default: SetLightState(vehicleid, 1);
			}
		}
	}
Создадим 2 public's(функционал спидометра, и паблик который отвечает за трату бензина):​
PHP:
public Speedometr(playerid)
{
	new Float:fuels[MAX_PLAYERS], str1[16], str2[16], vehicleid = GetPlayerVehicleID(playerid);
	switch(VehInfo[vehicleid][Engine])
	{
		case 1: PlayerTextDrawSetString(playerid, SpeedoDraw[8][playerid],"~g~ENGINE");
		case 0: PlayerTextDrawSetString(playerid, SpeedoDraw[8][playerid],"~r~ENGINE");
	}
	switch(VehInfo[vehicleid][Light])
	{
		case 1: PlayerTextDrawSetString(playerid, SpeedoDraw[9][playerid],"~g~LIGHT");
		case 0: PlayerTextDrawSetString(playerid, SpeedoDraw[9][playerid],"~r~LIGHT");
	}
    format(str1, sizeof(str1), "KM/H~n~%d", GetVehicleSpeed(vehicleid));
	format(str2, sizeof(str2), "FUEL: %.0f", VehInfo[vehicleid][Fuel]);
	PlayerTextDrawSetString(playerid, SpeedoDraw[10][playerid],str1);
	PlayerTextDrawSetString(playerid, SpeedoDraw[12][playerid],str2);
	if(fuels[playerid] > VehInfo[vehicleid][Fuel] || fuels[playerid] < VehInfo[vehicleid][Fuel])
	{
		fuels[playerid] = VehInfo[vehicleid][Fuel];
		PlayerTextDrawTextSize(playerid, SpeedoDraw[11][playerid], (71.500000/100)*VehInfo[vehicleid][Fuel], 18.480005);
		PlayerTextDrawHide(playerid, SpeedoDraw[11][playerid]);
		PlayerTextDrawShow(playerid, SpeedoDraw[11][playerid]);
	}
	return true;
}
public FuelCheck(vehicleid)
{
	if(VehInfo[vehicleid][Engine] == 1) 
	{
		VehInfo[vehicleid][Fuel] -= 1.0;
		if(VehInfo[vehicleid][Fuel] <= 0) SetEngineState(vehicleid, 0), VehInfo[vehicleid][Fuel] = 0;
	}
	return true;
}
В конце мода добавим парочку стоков (облегчающие работу с функциями заводки двигателя и включения фар):​
PHP:
stock SetEngineState(vehicleid, set)
{
	switch(set)
	{
		case 1: VehInfo[vehicleid][Engine] = 1, SetVehicleEngineState(vehicleid, true);
		case 0: VehInfo[vehicleid][Engine] = 0, SetVehicleEngineState(vehicleid, false);
	}
}
stock SetLightState(vehicleid, set)
{
	switch(set)
	{
		case 1: VehInfo[vehicleid][Light] = 1, SetVehicleLightsState(vehicleid, true);
		case 0: VehInfo[vehicleid][Light] = 0, SetVehicleLightsState(vehicleid, false);
	}
}
stock GetVehicleSpeed(vehicleid)
{
	new Float:st1,Float:st2,Float:st3;
	GetVehicleVelocity(vehicleid,st1,st2,st3);
	new Float:st4 = floatsqroot(floatpower(floatabs(st1), 2.0) + floatpower(floatabs(st2), 2.0) + floatpower(floatabs(st3), 2.0)) * 100.3;
	return floatround(st4);
}
И наконец-то в конце мода добавим наш TextDraw:​
PHP:
stock CreateTextDraws(playerid)
{
	SpeedoDraw[0][playerid] = CreatePlayerTextDraw(playerid, 637.000000, 406.939880, "usebox");
	PlayerTextDrawLetterSize(playerid, SpeedoDraw[0][playerid], 0.000000, 3.721110);
	PlayerTextDrawTextSize(playerid, SpeedoDraw[0][playerid], 518.500000, 0.000000);
	PlayerTextDrawAlignment(playerid, SpeedoDraw[0][playerid], 1);
	PlayerTextDrawColor(playerid, SpeedoDraw[0][playerid], 0);
	PlayerTextDrawUseBox(playerid, SpeedoDraw[0][playerid], true);
	PlayerTextDrawBoxColor(playerid, SpeedoDraw[0][playerid], 1195853696);
	PlayerTextDrawSetShadow(playerid, SpeedoDraw[0][playerid], 0);
	PlayerTextDrawSetOutline(playerid, SpeedoDraw[0][playerid], 0);
	PlayerTextDrawFont(playerid, SpeedoDraw[0][playerid], 0);

	SpeedoDraw[1][playerid] = CreatePlayerTextDraw(playerid, 521.000000, 404.879913, "LD_SPAC:white");
	PlayerTextDrawLetterSize(playerid, SpeedoDraw[1][playerid], 0.000000, 0.000000);
	PlayerTextDrawTextSize(playerid, SpeedoDraw[1][playerid], 112.500000, 1.680020);
	PlayerTextDrawAlignment(playerid, SpeedoDraw[1][playerid], 1);
	PlayerTextDrawColor(playerid, SpeedoDraw[1][playerid], -2147483393);
	PlayerTextDrawSetShadow(playerid, SpeedoDraw[1][playerid], 0);
	PlayerTextDrawSetOutline(playerid, SpeedoDraw[1][playerid], 0);
	PlayerTextDrawFont(playerid, SpeedoDraw[1][playerid], 4);

	SpeedoDraw[2][playerid] = CreatePlayerTextDraw(playerid, 521.000000, 441.159759, "LD_SPAC:white");
	PlayerTextDrawLetterSize(playerid, SpeedoDraw[2][playerid], 0.000000, 0.000000);
	PlayerTextDrawTextSize(playerid, SpeedoDraw[2][playerid], 112.500000, 1.680020);
	PlayerTextDrawAlignment(playerid, SpeedoDraw[2][playerid], 1);
	PlayerTextDrawColor(playerid, SpeedoDraw[2][playerid], -2147483393);
	PlayerTextDrawSetShadow(playerid, SpeedoDraw[2][playerid], 0);
	PlayerTextDrawSetOutline(playerid, SpeedoDraw[2][playerid], 0);
	PlayerTextDrawFont(playerid, SpeedoDraw[2][playerid], 4);

	SpeedoDraw[3][playerid] = CreatePlayerTextDraw(playerid, 520.000000, 404.879943, "LD_SPAC:white");
	PlayerTextDrawLetterSize(playerid, SpeedoDraw[3][playerid], 0.000000, 0.000000);
	PlayerTextDrawTextSize(playerid, SpeedoDraw[3][playerid], 1.500000, 38.079986);
	PlayerTextDrawAlignment(playerid, SpeedoDraw[3][playerid], 1);
	PlayerTextDrawColor(playerid, SpeedoDraw[3][playerid], -2147483393);
	PlayerTextDrawSetShadow(playerid, SpeedoDraw[3][playerid], 0);
	PlayerTextDrawSetOutline(playerid, SpeedoDraw[3][playerid], 0);
	PlayerTextDrawFont(playerid, SpeedoDraw[3][playerid], 4);

	SpeedoDraw[4][playerid] = CreatePlayerTextDraw(playerid, 557.500000, 404.759948, "LD_SPAC:white");
	PlayerTextDrawLetterSize(playerid, SpeedoDraw[4][playerid], 0.000000, 0.000000);
	PlayerTextDrawTextSize(playerid, SpeedoDraw[4][playerid], 1.500000, 38.079986);
	PlayerTextDrawAlignment(playerid, SpeedoDraw[4][playerid], 1);
	PlayerTextDrawColor(playerid, SpeedoDraw[4][playerid], -2147483393);
	PlayerTextDrawSetShadow(playerid, SpeedoDraw[4][playerid], 0);
	PlayerTextDrawSetOutline(playerid, SpeedoDraw[4][playerid], 0);
	PlayerTextDrawFont(playerid, SpeedoDraw[4][playerid], 4);

	SpeedoDraw[5][playerid] = CreatePlayerTextDraw(playerid, 633.500000, 404.639953, "LD_SPAC:white");
	PlayerTextDrawLetterSize(playerid, SpeedoDraw[5][playerid], 0.000000, 0.000000);
	PlayerTextDrawTextSize(playerid, SpeedoDraw[5][playerid], 1.500000, 38.079986);
	PlayerTextDrawAlignment(playerid, SpeedoDraw[5][playerid], 1);
	PlayerTextDrawColor(playerid, SpeedoDraw[5][playerid], -2147483393);
	PlayerTextDrawSetShadow(playerid, SpeedoDraw[5][playerid], 0);
	PlayerTextDrawSetOutline(playerid, SpeedoDraw[5][playerid], 0);
	PlayerTextDrawFont(playerid, SpeedoDraw[5][playerid], 4);

	SpeedoDraw[6][playerid] = CreatePlayerTextDraw(playerid, 559.000000, 428.399993, "LD_SPAC:white");
	PlayerTextDrawLetterSize(playerid, SpeedoDraw[6][playerid], 0.000000, 0.000000);
	PlayerTextDrawTextSize(playerid, SpeedoDraw[6][playerid], 74.500000, 1.679992);
	PlayerTextDrawAlignment(playerid, SpeedoDraw[6][playerid], 1);
	PlayerTextDrawColor(playerid, SpeedoDraw[6][playerid], -2147483393);
	PlayerTextDrawSetShadow(playerid, SpeedoDraw[6][playerid], 0);
	PlayerTextDrawSetOutline(playerid, SpeedoDraw[6][playerid], 0);
	PlayerTextDrawFont(playerid, SpeedoDraw[6][playerid], 4);

	SpeedoDraw[7][playerid] = CreatePlayerTextDraw(playerid, 595.500000, 429.520019, "LD_SPAC:white");
	PlayerTextDrawLetterSize(playerid, SpeedoDraw[7][playerid], 0.000000, 0.000000);
	PlayerTextDrawTextSize(playerid, SpeedoDraw[7][playerid], 1.500000, 12.319976);
	PlayerTextDrawAlignment(playerid, SpeedoDraw[7][playerid], 1);
	PlayerTextDrawColor(playerid, SpeedoDraw[7][playerid], -2147483393);
	PlayerTextDrawSetShadow(playerid, SpeedoDraw[7][playerid], 0);
	PlayerTextDrawSetOutline(playerid, SpeedoDraw[7][playerid], 0);
	PlayerTextDrawFont(playerid, SpeedoDraw[7][playerid], 4);

	SpeedoDraw[8][playerid] = CreatePlayerTextDraw(playerid, 577.500000, 430.640014, "ENGINE");
	PlayerTextDrawLetterSize(playerid, SpeedoDraw[8][playerid], 0.268500, 1.079200);
	PlayerTextDrawAlignment(playerid, SpeedoDraw[8][playerid], 2);
	PlayerTextDrawColor(playerid, SpeedoDraw[8][playerid], -1);
	PlayerTextDrawSetShadow(playerid, SpeedoDraw[8][playerid], 0);
	PlayerTextDrawSetOutline(playerid, SpeedoDraw[8][playerid], -1);
	PlayerTextDrawBackgroundColor(playerid, SpeedoDraw[8][playerid], 51);
	PlayerTextDrawFont(playerid, SpeedoDraw[8][playerid], 1);
	PlayerTextDrawSetProportional(playerid, SpeedoDraw[8][playerid], 1);

	SpeedoDraw[9][playerid] = CreatePlayerTextDraw(playerid, 615.500000, 430.640014, "LIGHT");
	PlayerTextDrawLetterSize(playerid, SpeedoDraw[9][playerid], 0.268500, 1.079200);
	PlayerTextDrawAlignment(playerid, SpeedoDraw[9][playerid], 2);
	PlayerTextDrawColor(playerid, SpeedoDraw[9][playerid], -1);
	PlayerTextDrawSetShadow(playerid, SpeedoDraw[9][playerid], 0);
	PlayerTextDrawSetOutline(playerid, SpeedoDraw[9][playerid], -1);
	PlayerTextDrawBackgroundColor(playerid, SpeedoDraw[9][playerid], 51);
	PlayerTextDrawFont(playerid, SpeedoDraw[9][playerid], 1);
	PlayerTextDrawSetProportional(playerid, SpeedoDraw[9][playerid], 1);

	SpeedoDraw[10][playerid] = CreatePlayerTextDraw(playerid, 539.500000, 407.119934, "KM/H");
	PlayerTextDrawLetterSize(playerid, SpeedoDraw[10][playerid], 0.380499, 1.790399);
	PlayerTextDrawAlignment(playerid, SpeedoDraw[10][playerid], 2);
	PlayerTextDrawColor(playerid, SpeedoDraw[10][playerid], -1);
	PlayerTextDrawSetShadow(playerid, SpeedoDraw[10][playerid], 0);
	PlayerTextDrawSetOutline(playerid, SpeedoDraw[10][playerid], -1);
	PlayerTextDrawBackgroundColor(playerid, SpeedoDraw[10][playerid], 51);
	PlayerTextDrawFont(playerid, SpeedoDraw[10][playerid], 1);
	PlayerTextDrawSetProportional(playerid, SpeedoDraw[10][playerid], 1);

	SpeedoDraw[11][playerid] = CreatePlayerTextDraw(playerid, 560.500000, 408.239990, "LD_SPAC:white");
	PlayerTextDrawLetterSize(playerid, SpeedoDraw[11][playerid], 0.000000, 0.000000);
	PlayerTextDrawTextSize(playerid, SpeedoDraw[11][playerid], 71.500000, 18.480005);
	PlayerTextDrawAlignment(playerid, SpeedoDraw[11][playerid], 1);
	PlayerTextDrawColor(playerid, SpeedoDraw[11][playerid], -2147483393);
	PlayerTextDrawSetShadow(playerid, SpeedoDraw[11][playerid], 0);
	PlayerTextDrawSetOutline(playerid, SpeedoDraw[11][playerid], 0);
	PlayerTextDrawFont(playerid, SpeedoDraw[11][playerid], 4);

	SpeedoDraw[12][playerid] = CreatePlayerTextDraw(playerid, 596.500000, 410.479919, "FUEL");
	PlayerTextDrawLetterSize(playerid, SpeedoDraw[12][playerid], 0.315499, 1.443200);
	PlayerTextDrawAlignment(playerid, SpeedoDraw[12][playerid], 2);
	PlayerTextDrawColor(playerid, SpeedoDraw[12][playerid], -1);
	PlayerTextDrawSetShadow(playerid, SpeedoDraw[12][playerid], 0);
	PlayerTextDrawSetOutline(playerid, SpeedoDraw[12][playerid], -1);
	PlayerTextDrawBackgroundColor(playerid, SpeedoDraw[12][playerid], 51);
	PlayerTextDrawFont(playerid, SpeedoDraw[12][playerid], 1);
	PlayerTextDrawSetProportional(playerid, SpeedoDraw[12][playerid], 1);
}
На этом все!!!
Готовый pwn:
​
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу