Перейти к содержанию
Авторизация  
Denis2131

Вычесление данных спидометра

Рекомендуемые сообщения

Denis2131

Такая проблема. сделал спидометр, все функции вставил со старого спидометра, все отображается ошибок нет, но есть некие проблемы с пробегом и бензином, в машине все время на спидометре бензина ноль, а с пробегом странные вещи, он как бы есть но не изменяется, как бы просто цифры, хотел бы что бы вы мен помогли исправить данную проблему и заставить работать нормально спидометр.

forward UpdateSpeedometr(playerid);
public UpdateSpeedometr(playerid)
{
	foreach(Player,i)
	if(GetPlayerState(i) == 2)
	{
		new vehicleid = GetPlayerVehicleID(i);
		new str[100]; new speed = fGetPlayerSpeed(i)/2; new Float:vehhealth;// SpeedVehicle
  		format(str, sizeof(str),"%d KM/?",speed);
	   	PlayerTextDrawSetString(i,Speedometr[10][i],str);
	   	format(str, sizeof(str),"~w~FUEL: %d",aData[vehicleid][aFuel]);
	   	PlayerTextDrawSetString(i,Speedometr[19][i],str);
	   	format(str,sizeof(str),"%.1f",aData[vehicleid][aMilleage]);
	   	PlayerTextDrawSetString(i, Speedometr[15][i], str);
	    format(str, sizeof(str),"%s",VehiclesName[GetVehicleModel(vehicleid)-400]);//VehicleNames[GetVehicleModel(vehicleid)-400]
	 	PlayerTextDrawSetString(i,Speedometr[5][i],str);
	 	GetVehicleHealth(vehicleid,vehhealth);
	 	format(str, sizeof(str),"HEAL: %.0f",vehhealth);
	 	PlayerTextDrawSetString(i,Speedometr[16][i],str); switch(speed)
  	{
  		case 0..9:PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~w~~h~I");
	   	case 10..14: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~w~~h~II");
	    case 15..19: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~g~III");
		case 20..24: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~g~IIII");
		case 25..29: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~g~~h~IIIII");
	 	case 30..34: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~g~~h~IIIIII");
	 	case 35..39: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~g~~h~IIIIIII");
	  	case 40..44: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~g~~h~IIIIIIII");
	   	case 45..49: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~g~~h~~h~IIIIIIIII");
	   	case 50..59: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~g~~h~~h~IIIIIIIIII");
	 	case 60..64: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~g~~h~~h~IIIIIIIIIII");
	  	case 65..69: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~g~~h~~h~IIIIIIIIIIII");
	   	case 70..79: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~y~IIIIIIIIIIIII");
	   	case 80..89: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~y~IIIIIIIIIIIIII");
	   	case 90..99: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~y~~h~IIIIIIIIIIIIIII");
	   	case 100..109: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~y~~h~IIIIIIIIIIIIIIII");
	   	case 110..119: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~y~~h~IIIIIIIIIIIIIIIII");
	    case 120..129: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~y~~h~IIIIIIIIIIIIIIIIII");
	 	case 130..139: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~y~~h~IIIIIIIIIIIIIIIIIII");
	 	case 140..149: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~y~~h~IIIIIIIIIIIIIIIIIIII");
	 	case 150..164: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~y~~h~IIIIIIIIIIIIIIIIIIIII");
	 	case 165..174: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~y~~h~IIIIIIIIIIIIIIIIIIIIII");
	 	case 175..189: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~r~IIIIIIIIIIIIIIIIIIIIIII");
	  	case 190..199: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~r~IIIIIIIIIIIIIIIIIIIIIIII");
	 	case 200..209: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~r~~h~IIIIIIIIIIIIIIIIIIIIIIIII");
	  	case 210..219: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~r~~h~IIIIIIIIIIIIIIIIIIIIIIIIII");
	   	case 220..229: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~r~~h~IIIIIIIIIIIIIIIIIIIIIIIIIII");
	    case 230..239: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~r~~h~~h~IIIIIIIIIIIIIIIIIIIIIIIIIIII");
		case 240..249: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~r~~h~~h~IIIIIIIIIIIIIIIIIIIIIIIIIIIII");
		default: PlayerTextDrawSetString(playerid, Speedometr[11][playerid], "~r~~h~~h~IIIIIIIIIIIIIIIIIIIIIIIIIIIII");
	}
 		new Float:coord[3];
 		GetPlayerPos(i, coord[0], coord[1], coord[2]);
 		for(new z = 0; z != sizeof(ZoneName); z ++)
 		{
	 		if((coord[0] <= ZoneName[z][zMax_x] && coord[0] >= ZoneName[z][zMin_x]) && (coord[1] <= ZoneName[z][zMax_y] && coord[1] >= ZoneName[z][zMin_y]))
	 		{
		 		PlayerTextDrawSetString(i,Speedometr[9][i], ZoneName[z][zName]);
	  			break;
  			}
  			else
		{
			PlayerTextDrawSetString(i,Speedometr[9][i], "O—zAC?©");
		}
		}
		if(GetPVarInt(playerid,"Seatbelt") == 1)//ремнень
		{
			PlayerTextDrawColor(i,Speedometr[22][i],COLOR_GREEN);
			PlayerTextDrawShow(i,Speedometr[22][i]);
			PlayerTextDrawColor(i,Speedometr[14][i],COLOR_GREEN);
			PlayerTextDrawShow(i,Speedometr[14][i]);
 		}
 		if(GetPVarInt(playerid,"Seatbelt") == 0)
		{
			PlayerTextDrawColor(i,Speedometr[22][i],COLOR_RED);
	 		PlayerTextDrawShow(i,Speedometr[22][i]);
	 		PlayerTextDrawColor(i,Speedometr[14][i],COLOR_RED);
	 		PlayerTextDrawShow(i,Speedometr[14][i]);
		}
 		if(engine == 1)
 		{
 			PlayerTextDrawColor(i, Speedometr[20][i],COLOR_GREEN);
	 		PlayerTextDrawShow(i,Speedometr[20][i]);
 			PlayerTextDrawColor(i,Speedometr[12][i],COLOR_GREEN);
			PlayerTextDrawShow(i,Speedometr[12][i]);
		}
 		if(engine == 0)
  		{
   			PlayerTextDrawColor(i,Speedometr[20][i],COLOR_RED);
   			PlayerTextDrawShow(i,Speedometr[20][i]);
    		PlayerTextDrawColor(i,Speedometr[12][i],COLOR_RED);
			PlayerTextDrawShow(i,Speedometr[12][i]);
		}
 		if(lights == 0)
 		{
  			PlayerTextDrawColor(i, Speedometr[21][i],COLOR_GREEN);
  	 		PlayerTextDrawShow(i,Speedometr[21][i]);
	    	PlayerTextDrawColor(i,Speedometr[13][i],COLOR_GREEN);
	 		PlayerTextDrawShow(i,Speedometr[13][i]);
	 	}
	 	if(lights == 1)
	 	{
	 		PlayerTextDrawColor(i,Speedometr[21][i],COLOR_RED);
	  		PlayerTextDrawShow(i,Speedometr[21][i]);
	   		PlayerTextDrawColor(i,Speedometr[13][i],COLOR_RED);
	    	PlayerTextDrawShow(i,Speedometr[13][i]);
		}
	}
	return 1;
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
#Rips

Покажите enum aDate, тогда и поможем в чем у, Вас проблема.

У Вас может aData[vehicleid][aFuel] переменная быть Float, а не int. попробуйте вот так:

format(str, sizeof(str),"~w~FUEL: %.1f",aData[vehicleid][aFuel]);

 

Еще может, то, что вы хотите обычную переменную которая не Float засунуть в параметра Float, замени на это

format(str,sizeof(str),"%d",aData[vehicleid][aMilleage]);

Изменено пользователем #Salev

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Denis2131

enum aDate

В моде не enum aData, есть new aData[MAX_VEHICLES][aInfo];

enum aInfo
{
	aKey,
	aModel,
Float:aPos[4],
	aColor1,
	aColor2,
	aOwned,
	aOwner[24],
	aPrice,
	aLock,
Float:aMilleage,
	aFuel,
	aMiglo,
Float:aMigPos[6],
	aNumber[8],
	aArrest,
	aPArrest[128],
	aPArrestName[24],
	aNitro,
	aWheels,
	aGydra,
	aInt,
	aWorld,
	//
Text3D:aNumPlate,
	aMigObj,
	aFrak,
	aJobs,
	aCarid,
	aPj
}
Изменено пользователем Denis2131

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
#Rips

 

 


aInfo

ищите enum aInfo и дайте его, посмотрим что у Вас там

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Denis2131

,смотрите выше. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
#Rips

Попробуй мой вариант, может поможет:

У Вас может aData[vehicleid][aFuel] переменная быть Float, а не int. попробуйте вот так:
format(str, sizeof(str),"~w~FUEL: %.1f",aData[vehicleid][aFuel]);
 
Еще может, то, что вы хотите обычную переменную которая не Float засунуть в параметра Float, замени на это
format(str,sizeof(str),"%d",aData[vehicleid][aMilleage]);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Denis2131

format(str,sizeof(str),"%d",aData[vehicleid][aMilleage]);

нет, как было так и осталось, ничего не изменилось.

, хотя, где то вот такие числа, а где то просто ноль  

cr-mp-040.png[

 

Изменено пользователем Denis2131

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dexter

Как вариант данные счётчиков попробуйте взять с любого другого мода, их куча на форуме думаю вы найдёте подходящее

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Denis2131

@Dexter,дело в том что раньше был спидометр, и под эти данные он работал отлично, но почему щас так я даже не знаю. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
#Rips

Покажите старый код спидометра, если он у вас остался

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dexter
@Denis2131,@Denis2131, Хм, а счётчики пробовали обнулять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Denis2131

,нет


@Dexter,нет 


 

 


format(str,sizeof(str),"%.1f",aData[vehicleid][aMilleage]);
Вот старые строчки некоторые от того спидометра 
PlayerTextDrawSetString(i,speedometer[0][i],VehiclesName[GetVehicleModel(vehicleid)-400]);
				if(id_car == -1) format(string,sizeof(string),"~g~CKOPOC¦’: ~w~%.0f KM/~n~~g~O?‡…‹O: ~w~%d ‡~n~~g~?PO€E‚: ~w~--- KM",speed/1.5,Fuel[vehicleid]);
				else format(string,sizeof(string),"~g~CKOPOC¦’: ~w~%.0f KM/~n~~g~O?‡…‹O: ~w~%d ‡~n~~g~?PO€E‚: ~w~%.1f KM",speed/1.5,aData[id_car][aFuel],aData[id_car][aMilleage]);
				PlayerTextDrawSetString(i,speedometer[2][i],string);

				format(string,sizeof(string),"~%s~<          ~%s~E  ~%s~L  ~%s~S           ~%s~>", gpvi(i,#P_povL) ? ("g"):("r"),
				engine ? ("g"):("r"),lights ? ("g"):("r"),GetPVarInt(i,"Seatbelt") ? ("g"):("r"),gpvi(i,#P_povR) ? ("g"):("r"));
				PlayerTextDrawSetString(i,speedometer[1][i],string);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
#Rips

Вы пробовали место это aData[id_car][aFuel] поставить это: Fuel[vehicleid]?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Denis2131

 

 


Fuel[vehicleid]
пробовал, при этом значании число бензина всегда 0, а вот при этом 
 aData[id_car][aFuel] 

оно в начале такое которое и должно быть, 60 литров, но оно так и остается, как бы не уменьшается, а пробега дак вообще нет 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dexter

@Denis2131, А ты что нибудь с кодом делал? если нет значит у тебя проблема в моде возможно где то не дописан спидометр 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Denis2131

@Dexter,ничего я с модом не делал, все вставлено так как надо, у меня остаются подозрения что что то не так с fuel  и так же с пробегом, как они там должны вычисляться. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
noname_idk

 

 


в машине все время на спидометре бензина ноль

На спидометре так. А если проверить другими способами? Например, в консоль вывести значение топлива в автомобиле. Тоже ноль? 


Что касается пробега. В начало мода добавьте:

new mileagetimer[MAX_PLAYERS];
new Float:VehiclePosX[MAX_VEHICLES], Float:VehiclePosY[MAX_VEHICLES], Float:VehiclePosZ[MAX_VEHICLES]; 

В авторизацию игрока:

mileagetimer[playerid] = SetTimerEx("OnMileageFromVehicle", 1000, true, "i", playerid);

В конец мода:

forward OnMileageFromVehicle(playerid);
public OnMileageFromVehicle(playerid)
{
	if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
		return true;
	new vehicleid = GetPlayerVehicleID(playerid), Float:line = GetPlayerDistanceFromPoint(playerid, VehiclePosX[vehicleid], VehiclePosY[vehicleid], VehiclePosZ[vehicleid]);
	b = floatdiv(b, 1000);
	aData[vehicleid][aMilleage] += b;
	GetVehiclePos(vehicleid, VehiclePosX, VehiclePosY, VehiclePosZ);
	return true;
}

В OnPlayerDisconnnect:

KillTimer(mileagetimer[playerid]);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Denis2131

C:\Users\Денис\Desktop\ENTERNITY\gamemodes\eternitynorm.pwn(46407) : error 017: undefined symbol "b"
C:\Users\Денис\Desktop\ENTERNITY\gamemodes\eternitynorm.pwn(46407) : error 017: undefined symbol "b"
C:\Users\Денис\Desktop\ENTERNITY\gamemodes\eternitynorm.pwn(46408) : error 017: undefined symbol "b"
C:\Users\Денис\Desktop\ENTERNITY\gamemodes\eternitynorm.pwn(46409) : error 035: argument type mismatch (argument 2)
C:\Users\Денис\Desktop\ENTERNITY\gamemodes\eternitynorm.pwn(46406) : warning 204: symbol is assigned a value that is never used: "line"
Pawn compiler 3.10.20160907	 	 	Copyright (c) 1997-2006, ITB CompuPhase


4 Errors.
 

,бензин сделал, вот пробег бы щас  

Изменено пользователем Denis2131

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dexter

Что касается пробега. В начало мода добавьте:



new mileagetimer[MAX_PLAYERS];
new Float:VehiclePosX[MAX_VEHICLES], Float:VehiclePosY[MAX_VEHICLES], Float:VehiclePosZ[MAX_VEHICLES];

В авторизацию игрока:



mileagetimer[playerid] = SetTimerEx("OnMileageFromVehicle", 1000, true, "i", playerid);

В конец мода:



forward OnMileageFromVehicle(playerid);
public OnMileageFromVehicle(playerid)
{
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
        return true;
    new vehicleid = GetPlayerVehicleID(playerid), Float:line = GetPlayerDistanceFromPoint(playerid, VehiclePosX[vehicleid], VehiclePosY[vehicleid], VehiclePosZ[vehicleid]);
    b = floatdiv(b, 1000);
    aData[vehicleid][aMilleage] += b;
    GetVehiclePos(vehicleid, VehiclePosX, VehiclePosY, VehiclePosZ);
    return true;
}

В OnPlayerDisconnnect:



KillTimer(mileagetimer[playerid]);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Denis2131

@Dexter,ошибки выше. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dexter

@Denis2131error 017: undefined symbol "%s" - неизвестный символ (неопределённая переменная) "%s";

 

Попробуй создать переменную

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Denis2131

@Dexter,можно конкретней, я создавал переменную b, у меня весь мод полетел. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.