Доступ к архиву

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

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

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

Система аккумулятора v1

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

DimaBDV

Умник
[МАНУАЛ] Система аккумулятора v1

Dior_Sergelik подкинул очень интересную идейку, сделать аккумулятор, вот первый вариант данной системы.
Внимание использовалась система бензина Исправленый и доработанный Бензин v.2 но вы настроите под себя это не так уж и сложно!

1. Подговорительные работы.

Ко всем new добавим
PHP:
new Text:AkkumDraw[MAX_PLAYERS];//текстдрав аккумулятора
new Akkum[MAX_VEHICLES];//переменная аккумулятора
далее

в пабл OnGameModeInit и ищем там цикл добавления бензы к авто
у меня так(как и у всех :))
PHP:
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;}
	}
и ставим под FuelCar значение
PHP:
Akkum[i] = 100;//полный заряд аккумулятора

Разберём команду Включения двигателя, добавим к ней (имеено к параметру включения, к параметру выключения ненадо!)

сам параметр выглядид так
PHP:
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);//у кого на это ругается можите удалить  
        }
А мы его сделаем таким
PHP:
if(engine == 0)
		{
		    if(Akkum[GetPlayerVehicleID(playerid)]>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);//у кого на это ругается можите удалить 
				Akkum[vid] = Akkum[vid]- 1;
			}
			else SendClientMessage(playerid,COLOR_LIGHTRED,"Аккумулятор сдох, купи новый");
		}
И так у нас есть аккумулятор он разряжается, но как он разряжается??
Первый способ при включении, но при езде то он тож должен разряжаться так или нет?
Ищем в своём моде цикл опустошения бака
у меня выглядит так
PHP:
forward FuelSys ();
public FuelSys ()
{
    for(new i=0; i != MAX_VEHICLES; i++)
	{
        if(CheckEngine(i) && FuelCar[i] != 0)
		{
            FuelCar[i]--;
        }
    }
}
и встовляем под FuelCar
PHP:
Akkum[i]--;

Ну и в функцию показа бензина/скорости
PHP:
new Float:speed_x,Float:speed_y,Float:speed_z,Float:final_speed,speed_string[256],final_speed_int;
	new Float:vehicle_health,final_vehicle_health,health_string[256],str3[128];
new akkumstring[256];//!! аккум
	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);
				}
				if(Akkum[h]==0)
				{
                    SetVehicleParamsEx(h,false,false,false,false,false,false,false);
				}
			}
          
          format(akkumstring,sizeof(akkumstring),"Battery: %i %",Akkum[GetPlayerVehicleID(i)]);//!! аккум
          TextDrawSetString(AkkumDraw[i],akkumstring);//!! аккум
		  }
		  else
		  {
          TextDrawSetString(SpeedDraw[i], " ");
          TextDrawSetString(HealthDraw[i], " ");
          TextDrawSetString(FuelDraw[i], " ");
          TextDrawSetString(AkkumDraw[i]," ");//!! аккум
		  }
	}
которая показывает нам Бензиин добавим

И вот в спойлере смотрим строчки помеченные //!! аккум
и ставим по примеру к себе.

И ещё 1 баг который я заметил исправляется так. (смотрим помеченое //!! аккум)
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;
    }
    if(Akkum[veh] == 0)//!! аккум
    {//!! аккум
		Akkum[veh] = 1;//!! аккум
		return 1;//!! аккум
	}//!! аккум
    return 0;
}

На данном закончу, Ах да у кого будет ругаться на GetPVehId вот калбек или GetPlayerNameEx
PHP:
stock GetPVehId(playerid)
{
	new vehid = GetPlayerVehicleID(playerid);
	return vehid;
}
stock GetPlayerNameEx(playerid)
{
	new name[MAX_PLAYER_NAME];
	GetPlayerName(playerid,name,MAX_PLAYER_NAME);
	return name;
}
Возможно я что-то забыл сюда вставить :) спешил просто, кидаем варны и ерроры посмотрю

Автор: DimaBDV




От + НЕ ОТКАЖУСЬ :)
Ds™
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу