shape1
shape2
shape3
shape4
shape7
shape8

Спидометр


Статус
Закрыто для дальнейших ответов.

Kostyaev

Магистр
Пользователь
19.07.2014
1 123
274
0
26
Всех приветствую дорогие форумчане 

b896baa12061.png


Ко всем new:

new Text:SBox;
new Text:SBox1;
new PlayerText:CarSpeed[MAX_PLAYERS];
new PlayerText:CarFuel[MAX_PLAYERS];
new PlayerText:CarMilliage[MAX_PLAYERS];
new PlayerText:CarLights[MAX_PLAYERS];
new PlayerText:CarEngine[MAX_PLAYERS];

Переменные созданы, теперь создадим функции для создания самих текстдравов!

Теперь stock

stock CreateGlobalTextDraws()
{

SBox = TextDrawCreate(626.000000, 384.540008, "usebox");
TextDrawLetterSize(SBox, 0.000000, 5.905555);
TextDrawTextSize(SBox, 430.799987, 0.000000);
TextDrawAlignment(SBox, 1);
TextDrawColor(SBox, 0);
TextDrawUseBox(SBox, true);
TextDrawBoxColor(SBox, 102);
TextDrawSetShadow(SBox, 0);
TextDrawSetOutline(SBox, 0);
TextDrawFont(SBox, 0);

SBox1 = TextDrawCreate(601.875000, 383.250061, "LD_SPAC:white");
TextDrawLetterSize(SBox1, 0.000000, 0.000000);
TextDrawTextSize(SBox1, 21.250000, 57.166625);
TextDrawAlignment(SBox1, 1);
TextDrawColor(SBox1, 255);
TextDrawSetShadow(SBox1, 0);
TextDrawSetOutline(SBox1, 0);
TextDrawFont(SBox1, 4);
return 1;
}

Код:
stock CreatePlayersTextDraw(playerid)
{
        
        CarSpeed[playerid] = CreatePlayerTextDraw(playerid, 442.399963, 386.026580, "SPEED: 100");
        PlayerTextDrawLetterSize(playerid, CarSpeed[playerid], 0.401249, 1.430832);
        PlayerTextDrawAlignment(playerid, CarSpeed[playerid], 1);
        PlayerTextDrawColor(playerid, CarSpeed[playerid], -1);
        PlayerTextDrawSetShadow(playerid, CarSpeed[playerid], 0);
        PlayerTextDrawSetOutline(playerid, CarSpeed[playerid], 1);
        PlayerTextDrawBackgroundColor(playerid, CarSpeed[playerid], 51);
        PlayerTextDrawFont(playerid, CarSpeed[playerid], 1);
        PlayerTextDrawSetProportional(playerid, CarSpeed[playerid], 1);

        CarFuel[playerid] = CreatePlayerTextDraw(playerid, 442.149963, 401.026672, "FUEL: 1000");
        PlayerTextDrawLetterSize(playerid, CarFuel[playerid], 0.401249, 1.430832);
        PlayerTextDrawAlignment(playerid, CarFuel[playerid], 1);
        PlayerTextDrawColor(playerid, CarFuel[playerid], -1);
        PlayerTextDrawSetShadow(playerid, CarFuel[playerid], 0);
        PlayerTextDrawSetOutline(playerid, CarFuel[playerid], 1);
        PlayerTextDrawBackgroundColor(playerid, CarFuel[playerid], 51);
        PlayerTextDrawFont(playerid, CarFuel[playerid], 1);
        PlayerTextDrawSetProportional(playerid, CarFuel[playerid], 1);

        CarMilliage[playerid] = CreatePlayerTextDraw(playerid, 441.899963, 416.610015, "MILLIAGE: 10000");
        PlayerTextDrawLetterSize(playerid, CarMilliage[playerid], 0.401249, 1.430832);
        PlayerTextDrawAlignment(playerid, CarMilliage[playerid], 1);
        PlayerTextDrawColor(playerid, CarMilliage[playerid], -1);
        PlayerTextDrawSetShadow(playerid, CarMilliage[playerid], 0);
        PlayerTextDrawSetOutline(playerid, CarMilliage[playerid], 1);
        PlayerTextDrawBackgroundColor(playerid, CarMilliage[playerid], 51);
        PlayerTextDrawFont(playerid, CarMilliage[playerid], 1);
        PlayerTextDrawSetProportional(playerid, CarMilliage[playerid], 1);

        CarLights[playerid] = CreatePlayerTextDraw(playerid, 608.125000, 386.166625, "L");
        PlayerTextDrawLetterSize(playerid, CarLights[playerid], 0.449999, 1.600000);
        PlayerTextDrawAlignment(playerid, CarLights[playerid], 1);
        PlayerTextDrawColor(playerid, CarLights[playerid], -1);
        PlayerTextDrawSetShadow(playerid, CarLights[playerid], 0);
        PlayerTextDrawSetOutline(playerid, CarLights[playerid], 1);
        PlayerTextDrawBackgroundColor(playerid, CarLights[playerid], 51);
        PlayerTextDrawFont(playerid, CarLights[playerid], 1);
        PlayerTextDrawSetProportional(playerid, CarLights[playerid], 1);

        CarEngine[playerid] = CreatePlayerTextDraw(playerid, 609.125000, 413.416778, "E");
        PlayerTextDrawLetterSize(playerid, CarEngine[playerid], 0.449999, 1.600000);
        PlayerTextDrawAlignment(playerid, CarEngine[playerid], 1);
        PlayerTextDrawColor(playerid, CarEngine[playerid], -1);
        PlayerTextDrawSetShadow(playerid, CarEngine[playerid], 0);
        PlayerTextDrawSetOutline(playerid, CarEngine[playerid], 1);
        PlayerTextDrawBackgroundColor(playerid, CarEngine[playerid], 51);
        PlayerTextDrawFont(playerid, CarEngine[playerid], 1);
        PlayerTextDrawSetProportional(playerid, CarEngine[playerid], 1);
        return 1;
}
в OnGameModeInit:

CreateGlobalTextDraws();

в OnPlayerConnect:

CreatePlayersTextDraw();

в OnPlayerStateChange:

if(newstate == PLAYER_STATE_DRIVER)
{
if(!noeng(GetPlayerVehicleID(playerid)))
{
new v = GetPlayerVehicleID(playerid);
VehicleInfo[v][vFuel] = 50.0;
GetPlayerPos(playerid, VehicleInfo[v][vPosx],VehicleInfo[v][vPosy],VehicleInfo[v][vPosz]);
TextDrawShowForPlayer(playerid, SBox);
TextDrawShowForPlayer(playerid, SBox1);
PlayerTextDrawShow(playerid, CarSpeed[playerid]);
PlayerTextDrawShow(playerid, CarFuel[playerid]);
PlayerTextDrawShow(playerid, CarMilliage[playerid]);
PlayerTextDrawShow(playerid, CarLights[playerid]);
PlayerTextDrawShow(playerid, CarEngine[playerid]);
SpeedTimer[playerid] = SetTimerEx("UpdateSpeed",200,1,"d",playerid);
return 1;
}
}
if(oldstate == PLAYER_STATE_DRIVER)
{
TextDrawHideForPlayer(playerid, SBox);
TextDrawHideForPlayer(playerid, SBox1);
PlayerTextDrawHide(playerid, CarSpeed[playerid]);
PlayerTextDrawHide(playerid, CarFuel[playerid]);
PlayerTextDrawHide(playerid, CarMilliage[playerid]);
PlayerTextDrawHide(playerid, CarLights[playerid]);
PlayerTextDrawHide(playerid, CarEngine[playerid]);
KillTimer(SpeedTimer[playerid]);
return 1;
}

теперь в начале мода, нам нужно создать массив для хранения характеристик авто

enum vInfo
{
vEngine,
Float:vFuel,
Float:vMilliage,
vLights,
Float:vPosx,Float:vPosy,Float:vPosz
};
new VehicleInfo[MAX_VEHICLES][vInfo];

Теперь создадим переменную для таймера, а также паблик самого таймера:

new SpeedTimer[MAX_PLAYERS];

и создадим паблик:

forward UpdateSpeed(playerid);
public UpdateSpeed(playerid)
{
new string[256];
new v = GetPlayerVehicleID(playerid);
format(string,sizeof(string),"SPEED: %d",SpeedVehicle(playerid));
PlayerTextDrawSetString(playerid, CarSpeed[playerid], string);
format(string,sizeof(string),"FUEL: %d",floatround(VehicleInfo[v][vFuel]));
PlayerTextDrawSetString(playerid, CarFuel[playerid], string);
format(string,sizeof(string),"MILLIAGE: %d",floatround(VehicleInfo[v][vMilliage]));
PlayerTextDrawSetString(playerid, CarMilliage[playerid], string);
switch(VehicleInfo[v][vLights])
{
case 0: PlayerTextDrawSetString(playerid, CarLights[playerid], "~w~L");
case 1: PlayerTextDrawSetString(playerid, CarLights[playerid], "~b~L");
}
if(VehicleInfo[v][vEngine]) PlayerTextDrawSetString(playerid, CarEngine[playerid], "~b~E");
else PlayerTextDrawSetString(playerid, CarEngine[playerid],"~w~E");
if(VehicleInfo[v][vFuel] <= 0)
{
VehicleInfo[v][vEngine] = 0;
VehicleInfo[v][vFuel] = 0.0;
SetVehicleParamsEx(v, VehicleInfo[v][vEngine], VehicleInfo[v][vLights],0,0,0,0,0);
}
if(GetPlayerDistanceFromPoint(playerid, VehicleInfo[v][vPosx], VehicleInfo[v][vPosy], VehicleInfo[v][vPosz]) > 50.0)
{
VehicleInfo[v][vMilliage] += 0.1;
VehicleInfo[v][vFuel] -= 0.05;
GetPlayerPos(playerid, VehicleInfo[v][vPosx],VehicleInfo[v][vPosy],VehicleInfo[v][
vPosz]);
}
return 1;
}

Теперь сделаем заводку двигателя:

в OnPlayerKeyStateChange:

if(newkeys & KEY_ACTION)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
new v = GetPlayerVehicleID(playerid);
if(!noeng(v))
{
if(!VehicleInfo[v][vFuel]) return 1;
if(!VehicleInfo[v][vEngine]) VehicleInfo[v][vEngine] = 1;
else VehicleInfo[v][vEngine] = 0;
SetVehicleParamsEx(v, VehicleInfo[v][vEngine], VehicleInfo[v][vLights], 0, 0, 0, 0, 0);
return 1;
}
}
}

и функция вычисления скорости

stock noeng(carid)
{
new model = GetVehicleModel(carid);
if(model == 462||model == 448||model == 509|| model == 510||model == 481||model==468||model == 471 ||
model == 511 || model == 512||model == 593||model == 520||model == 577||model == 476||model == 519 ||
model == 460 || model == 513||model == 472||model==473||model == 493||model == 595 || model == 484 ||
model == 430 || model == 453||model == 452||model == 446||model == 454 ||model == 548 ||model == 425||
model == 417||model == 487||model == 488||model == 497||model == 563||model == 447||model == 469||model == 553) return 1;
return 0;
}
stock SpeedVehicle(playerid)
{
new Float:ST[4];
if(IsPlayerInAnyVehicle(playerid))
GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
else GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]);
ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 100.3;
return floatround(ST[3]);
}

Автор:wAx

Так же спидометр можно русифицировать, ну это по вкусу!
 

Gleen

Освоившийся
Пользователь
27.12.2014
393
30
0
28
На какую кнопочку заводится ?

 
Статус
Закрыто для дальнейших ответов.