DimaBDV
Умник
Префикс мануал добавьте, а то мне недоступен
Ребят, когда я ставил к себе Бензин v.2 мягко говоря е***ся с YSI и самим кодом.
Использовалась система ZCMD
Теперь переделанный код:
1. Подготовка
Сначало, в верх мода
Далее, ко всем new
Затем, в OnGameModeInt() в самый низ
И добавим команду включения / выключения движка (командой и кнопкой)
В любое место мода (не в паблик и не в калбек!)
а так же в public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
если переменная
используется, значит в неё просто засунуть
И ещё при коннекте добавим текстдравы(я не стал их дорабатывать, со временем, но они немного нагружают серв)
2. И собственно сама система бензика (её тело)
Вопервых, таймер, который можно оптимизировать (он и нагружает серв, исправлю со временем), это приборная панелька
Далее, система опустошения бака 
И естественно проверочка на включенный движок (какж без неё)
Автор урока: Frapsy
Доработчик и дебагер: DimaBDV
Прошу не минусовать, но YSI и те первоначальные баги мне непонравились
Ds™
Ребят, когда я ставил к себе Бензин v.2 мягко говоря е***ся с YSI и самим кодом.
Использовалась система ZCMD
Теперь переделанный код:
1. Подготовка
Сначало, в верх мода
PHP:
#include <ZCMD>
PHP:
new Text:FuelDraw[MAX_PLAYERS];
new Text:SpeedDraw[MAX_PLAYERS];//bonus
new Text:HealthDraw[MAX_PLAYERS];//bonus
new FuelCar[MAX_VEHICLES];
PHP:
SetTimer("SecondTimer",1000,1);
SetTimer("FuelSys",60000,1);
for(new i=0; i < MAX_VEHICLES; i++) {
SetVehicleParamsEx(i,false,false,false,false,false,false,false);
FuelCar[i] = 50;
if(i == MAX_VEHICLES) {break;}
}
В любое место мода (не в паблик и не в калбек!)
PHP:
CMD:en(playerid)
{
new string[60];
new vid = GetPlayerVehicleID(playerid);
new engine,lights,alarm,doors,bonnet,boot,objective;
engine = 0;
GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
if(IsPlayerInVehicle(playerid,vid))
{
if(engine == 0)
{
SetVehicleParamsEx(vid,1,1,alarm,doors,bonnet,boot,objective);
format(string, sizeof(string), "*%s заводит двигатель.", GetPlayerNameEx(playerid));//у кого на это ругается можите удалить
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,0,0);//у кого на это ругается можите удалить
}
if(engine == 1)
{
SetVehicleParamsEx(vid,0,0,alarm,doors,bonnet,boot,objective);
format(string, sizeof(string), "*%s глушит двигатель.", GetPlayerNameEx(playerid));//у кого на это ругается можите удалить
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,0,0);//у кого на это ругается можите удалить
}
}
return 1;
}
PHP:
if (newkeys == 512)
{
return cmd_en(playerid);
}
return 1;
}
PHP:
if (newkeys == 512)
PHP:
return cmd_en(playerid);
PHP:
public OnPlayerConnect(playerid)
{
HealthDraw[playerid] = TextDrawCreate(15.0,280.0," ");
TextDrawColor(HealthDraw[playerid],0xF5DEB3AA);
TextDrawFont(HealthDraw[playerid],1);
TextDrawSetShadow(HealthDraw[playerid],0);
TextDrawSetOutline(HealthDraw[playerid],1);
TextDrawShowForPlayer(playerid,HealthDraw[playerid]);
FuelDraw[playerid] = TextDrawCreate(15.0,292.0," ");
TextDrawColor(FuelDraw[playerid],0xF5DEB3AA);
TextDrawFont(FuelDraw[playerid],1);
TextDrawSetShadow(FuelDraw[playerid],0);
TextDrawSetOutline(FuelDraw[playerid],1);
TextDrawShowForPlayer(playerid,FuelDraw[playerid]);
SpeedDraw[playerid] = TextDrawCreate(15.0,304.0," ");
TextDrawColor(SpeedDraw[playerid],0xF5DEB3AA);
TextDrawFont(SpeedDraw[playerid],1);
TextDrawSetShadow(SpeedDraw[playerid],0);
TextDrawSetOutline(SpeedDraw[playerid],1);
TextDrawShowForPlayer(playerid,SpeedDraw[playerid]);
}
Вопервых, таймер, который можно оптимизировать (он и нагружает серв, исправлю со временем), это приборная панелька
PHP:
forward SecondTimer();
public SecondTimer () {
new Float:speed_x,Float:speed_y,Float:speed_z,Float:final_speed,speed_string[256],final_speed_int;//vehicleid,
new Float:vehicle_health,final_vehicle_health,health_string[256],str3[128];
for(new i=0;i<GetMaxPlayers();i++)
{
if(GetPlayerVehicleID(i) != 0) {
GetVehicleVelocity(GetPlayerVehicleID(i),speed_x,speed_y,speed_z);
final_speed = floatsqroot(((speed_x*speed_x)+(speed_y*speed_y))+(speed_z*speed_z))*250.666667;
final_speed_int = floatround(final_speed,floatround_round);
format(speed_string,256,"Speed: %i kh/h",final_speed_int);
TextDrawSetString(SpeedDraw[i], speed_string);
GetVehicleHealth(GetPlayerVehicleID(i),vehicle_health);
final_vehicle_health = floatround(floatround(vehicle_health - 250)/ 7.5);
format(health_string,256,"Health: %i HP", final_vehicle_health);
TextDrawSetString(HealthDraw[i], health_string);
format(str3,sizeof(str3),"Fuel: %i L",FuelCar[GetPlayerVehicleID(i)]);
TextDrawSetString(FuelDraw[i],str3);
for(new h=0; h != MAX_VEHICLES; h++) //если бензы нет то и далеко неуедем :) ну разве что до ближайшей заправки
{
if(FuelCar[h] == 0)
{
SetVehicleParamsEx(h,false,false,false,false,false,false,false);
}
}
}
else {
TextDrawSetString(SpeedDraw[i], " ");
TextDrawSetString(HealthDraw[i], " ");
TextDrawSetString(FuelDraw[i], " ");
}
}
}
PHP:
forward FuelSys();
public FuelSys ()
{
for(new i=0; i != MAX_VEHICLES; i++)
{
if(CheckEngine(i) && FuelCar[i] != 0)
{
FuelCar[i]--;
}
}
}
PHP:
stock CheckEngine(veh) {
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(veh,engine,lights,alarm,doors,bonnet,boot,objective);
if(engine) {
return 1;
}
return 0;
}
PHP:
#include <a_samp>
#include <ZCMD>
#pragma tabsize 0
new Text:FuelDraw[MAX_PLAYERS];
new Text:SpeedDraw[MAX_PLAYERS];//bonus
new Text:HealthDraw[MAX_PLAYERS];//bonus
new FuelCar[MAX_VEHICLES];
public OnGameModeInit()
{
SetTimer("SecondTimer",1000,1);
SetTimer("FuelSys",60000,1);
ManualVehicleEngineAndLights();
for(new i=0; i < MAX_VEHICLES; i++) {
SetVehicleParamsEx(i,false,false,false,false,false,false,false);
FuelCar[i] = 50;
if(i == MAX_VEHICLES) {break;}
}
}
CMD:en(playerid)
{
new string[60];
new vid = GetPlayerVehicleID(playerid);
new engine,lights,alarm,doors,bonnet,boot,objective;
engine = 0;
GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
if(IsPlayerInVehicle(playerid,vid))
{
if(engine == 0)
{
SetVehicleParamsEx(vid,1,1,alarm,doors,bonnet,boot,objective);
format(string, sizeof(string), "*%s заводит двигатель.", GetPlayerNameEx(playerid));//у кого на это ругается можите удалить
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,0,0);//у кого на это ругается можите удалить
}
if(engine == 1)
{
SetVehicleParamsEx(vid,0,0,alarm,doors,bonnet,boot,objective);
format(string, sizeof(string), "*%s глушит двигатель.", GetPlayerNameEx(playerid));//у кого на это ругается можите удалить
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,0,0);//у кого на это ругается можите удалить
}
}
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (newkeys == 512) // 2 yoi ea eiiiee
{
return cmd_en(playerid);
}
return 1;
}
public OnPlayerConnect(playerid)
{
HealthDraw[playerid] = TextDrawCreate(15.0,280.0," ");
TextDrawColor(HealthDraw[playerid],0xF5DEB3AA);
TextDrawFont(HealthDraw[playerid],1);
TextDrawSetShadow(HealthDraw[playerid],0);
TextDrawSetOutline(HealthDraw[playerid],1);
TextDrawShowForPlayer(playerid,HealthDraw[playerid]);
FuelDraw[playerid] = TextDrawCreate(15.0,292.0," ");
TextDrawColor(FuelDraw[playerid],0xF5DEB3AA);
TextDrawFont(FuelDraw[playerid],1);
TextDrawSetShadow(FuelDraw[playerid],0);
TextDrawSetOutline(FuelDraw[playerid],1);
TextDrawShowForPlayer(playerid,FuelDraw[playerid]);
SpeedDraw[playerid] = TextDrawCreate(15.0,304.0," ");
TextDrawColor(SpeedDraw[playerid],0xF5DEB3AA);
TextDrawFont(SpeedDraw[playerid],1);
TextDrawSetShadow(SpeedDraw[playerid],0);
TextDrawSetOutline(SpeedDraw[playerid],1);
TextDrawShowForPlayer(playerid,SpeedDraw[playerid]);
}
forward SecondTimer();
public SecondTimer () {
new Float:speed_x,Float:speed_y,Float:speed_z,Float:final_speed,speed_string[256],final_speed_int;//vehicleid,
new Float:vehicle_health,final_vehicle_health,health_string[256],str3[128];
for(new i=0;i<GetMaxPlayers();i++)
{
if(GetPlayerVehicleID(i) != 0) {
GetVehicleVelocity(GetPlayerVehicleID(i),speed_x,speed_y,speed_z);
final_speed = floatsqroot(((speed_x*speed_x)+(speed_y*speed_y))+(speed_z*speed_z))*250.666667;
final_speed_int = floatround(final_speed,floatround_round);
format(speed_string,256,"Speed: %i kh/h",final_speed_int);
TextDrawSetString(SpeedDraw[i], speed_string);
GetVehicleHealth(GetPlayerVehicleID(i),vehicle_health);
final_vehicle_health = floatround(floatround(vehicle_health - 250)/ 7.5);
format(health_string,256,"Health: %i HP", final_vehicle_health);
TextDrawSetString(HealthDraw[i], health_string);
format(str3,sizeof(str3),"Fuel: %i L",FuelCar[GetPlayerVehicleID(i)]);
TextDrawSetString(FuelDraw[i],str3);
for(new h=0; h != MAX_VEHICLES; h++)
{
if(FuelCar[h] == 0)
{
SetVehicleParamsEx(h,false,false,false,false,false,false,false);
}
}
}
else {
TextDrawSetString(SpeedDraw[i], " ");
TextDrawSetString(HealthDraw[i], " ");
TextDrawSetString(FuelDraw[i], " ");
}
}
}
forward FuelSys();
public FuelSys ()
{
for(new i=0; i != MAX_VEHICLES; i++)
{
if(CheckEngine(i) && FuelCar[i] != 0)
{
FuelCar[i]--;
}
}
}
stock CheckEngine(veh) {
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(veh,engine,lights,alarm,doors,bonnet,boot,objective);
if(engine) {
return 1;
}
return 0;
}
Автор урока: Frapsy
Доработчик и дебагер: DimaBDV
Прошу не минусовать, но YSI и те первоначальные баги мне непонравились
Ds™
Последнее редактирование:
