Всех приветствую дорогие форумчане
Ко всем 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;
}
в 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
* Так же спидометр можно русифицировать, ну это по вкусу!
Ко всем 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;
}
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
* Так же спидометр можно русифицировать, ну это по вкусу!