Бензин.
И так в факе я расскажу вам как добавить на сервер бензин и спидометр...
Автор фака по добавлению бензина Xe[N]o... 1)в public OnGameModeInit,добавим таймер
Code
SetTimer("FuelCheck",10000,1);
2)добавляем public без разницы куда,например в конец мода
Code
new Fuel[2000]; //Переменная котороя отвечает за бензин в машинах
forward FuelCheck(); //Функция создания паблика
public FuelCheck() //Действия паблика
{
for(new i; i<GetMaxPlayers();) //запускаем цикл, он будет повторятся пока i не будет ровна
//Максимальному количиству игроков установленому в Server.cfg
{
if(IsPlayerInAnyVehicle(i)) //Если игрок с айди = i, сидит в любой машине
{
Fuel[GetPlayerVehicleID(i)] -= 1; //Отнимаем 1 литр бензина у машины игрока
if(Fuel[GetPlayerVehicleID(i)] > 1 ) //Если бензина в машине игрока меньше 1 литра
{
RemovePlayerFromVehicle(i); //Выстовляем игрока из машины
SendClientMessage(i,0xffd400aa,"В этой машине нет бинзина"); //отпровляем игроку сообщение
}
++i;
}
}
return 1;
}
3)В public OnPlayerStateChange,вставляем
Code
if(newstate == 2) //Если игрок водитель авто, зачем нам выкидывать пассажиров?
{
if(Fuel[GetPlayerVehicleID(playerid)] < 1) //Если в тачке нет бензина
{
RemovePlayerFromVehicle(playerid); //Выкидываем игрока
SendClientMessage(playerid,0xffd400aa,"В этой машине нет бинзина"); //и отпровляем ему сообщение
}
}
Спидометр 1)создаем функцию которая будет узнавать скорость
Code
stock GetVehicleSpeed(playerid)
{
new Float:speed[4]; // Объявляем одномерный массив с вещественным типом переменных
if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),speed[0],speed[1],speed[2]); // Если игрок в каком-либо транспорте, то узнаем скорость его ТС по x, y и z и записываем их в массив
speed[3] = floatsqroot(floatpower(floatabs(speed[0]), 2.0) + floatpower(floatabs(speed[1]), 2.0) + floatpower(floatabs(speed[2]), 2.0)) * 253.3; // узнаем квадратный корень и записываем в speed[3]
return floatround(speed[3]); // возвращаем
}
2)Ко всем new,добавляем
Code
new Text:Speed[MAX_PLAYERS];
3)В public OnPlayerConnect добавляем,
Code
Speed[playerid] = TextDrawCreate(260.0, 431.0,"~y~km/h: ~w~0 ~y~Benzin: ~w~0 ~y~Health: ~w~0"); // Делаем textdraw (~y~ - желтый цвет; ~w~ - белый) \
TextDrawAlignment(Speed[playerid],0); // Выравнивание. В данном случае 0 (нет 0) А вообще 1 - по левому краю, 2 - по ширине, 3 - по правому краю
TextDrawBackgroundColor(Speed[playerid],0x000000FF); // Цвет обводки (в данном случае черный)
TextDrawFont(Speed[playerid],1); // Тип ТекстДрава
TextDrawSetOutline(Speed[playerid], 2); //Толщина обводки
TextDrawLetterSize(Speed[playerid],0.350000,1.300000); // Размер символов
TextDrawColor(Speed[playerid],0xFFFFFFFF);//цвет символов
TextDrawSetProportional(Speed[playerid],1); //
4)Ко всем forward добавляем,
Code
forward SpeedUpdate();
5)В public OnGameModeInit вставляем,
SetTimer("SpeedUpdate",1000,1); /*это время обновления текстдрава.*/
6)Теперь в конец мода
Code
public SpeedUpdate()
{
new string[255]; // объявляем одномерный массив
for(new i; i<MAX_PLAYERS; i++) // объявляем цикл
{
if(GetPlayerState(i) == PLAYER_STATE_DRIVER) // Если игрок - водитель ТС
{
new Float:vhealth; // объявляем переменную вещественного типа (hp авто)
GetVehicleHealth(GetPlayerVehicleID(i), vhealth); // Узнаем hp авто и запишем его в переменную vhealth
format(string, sizeof(string), "~y~Km/h: ~w~%d ~y~Benzin: ~w~%d ~y~Health: ~w~%.f", GetVehicleSpeed(i), Fuel[GetPlayerVehicleID(i)], vhealth); // Создадим текст, который будет в текстдраве
TextDrawSetString(Speed[i], string); // Обновим текстдрав
}
}
return 1;
}
7)В public OnPlayerStateChange
Code
if(newstate == PLAYER_STATE_DRIVER) // Если игрок стал водителем
{
TextDrawShowForPlayer(playerid, Speed[playerid]); // Теперь он будет показываться
}
if(newstate == PLAYER_STATE_ONFOOT) // Если игрок стал пешеходом
{
TextDrawHideForPlayer(playerid, Speed[playerid]); // скроем текстдрав
}
Вот и всё...возникнут проблемы пишем сюда...
Кому помогло ставим +