Как сделать топливо дробным числом
#1

PHP Code:
        //СИСТЕМА РАСХОДА ТОПЛИВА: чем выше скорость тем больше расход
        
if(benzProv[nCarID[playerid]] < 10)//15 как только benzProv достигает 10 начинает отниматься топливо
        
{
            if(
velocity <= 1)                     benzProv[nCarID[playerid]]=2+benzProv[nCarID[playerid]];//при скорости <2 топливо не уменьшается
            
if(velocity>&& velocity<=60)         benzProv[nCarID[playerid]]=4+benzProv[nCarID[playerid]];//при скорости <2 топливо не уменьшается
            
if(velocity>60 && velocity<=75)     benzProv[nCarID[playerid]]=6+benzProv[nCarID[playerid]];//при скорости <90 топливо уменьшается каждые 10 секунд по литру
            
if(velocity>75 && velocity<=90)     benzProv[nCarID[playerid]]=8+benzProv[nCarID[playerid]];//при скорости >90 топливо уменьшается каждые 5 секунд по литру
            
if(velocity>90 && velocity<=100)     benzProv[nCarID[playerid]]=10+benzProv[nCarID[playerid]];//при скорости >90 топливо уменьшается каждые 5 секунд по литру
            
if(velocity>100)                     benzProv[nCarID[playerid]]=12+benzProv[nCarID[playerid]];//при скорости >190 топливо уменьшается каждые 3.3 секунды по литру
        
}
        else
        {
            if(
LevelFuel[nCarID[playerid]] >= 1)//если уровень топлива больше 1
               
{
                   if(
LevelFuel[nCarID[playerid]] <= 10PlaySoundForPlayer(playerid1085);
                if(
IsAPlane(nCarID[playerid]) || IsABoat(nCarID[playerid]) //если не на авиации и не в лодке
                     
|| VehicleName[nCarModel[playerid]-400][Category]==Rail_Transport//и не в поездах
                     
|| VehicleName[nCarModel[playerid]-400][Category]==Bicycle//и не на велике
                     
|| ( nCarID[playerid]>=(35+NH)&&nCarID[playerid]<=(46+NH) )//и не в дерби
                  
LevelFuel[nCarID[playerid]]++; //прибавляем по литру, чтобы скомпенсировать отнятие у тех кто не может заправиться
                  
LevelFuel[nCarID[playerid]]--;//отнимаем по литру топливо
               
}
        }
        if(
LevelFuel[nCarID[playerid]]>50)
        {
            
format(strBak,sizeof(strBak),"~g~FUEL:~w~%d~n~",LevelFuel[nCarID[playerid]]);
        }
        if(
LevelFuel[nCarID[playerid]]<=50&&LevelFuel[nCarID[playerid]]>=20)
        {
            
format(strBak,sizeof(strBak),"~g~FUEL:~y~%d~n~",LevelFuel[nCarID[playerid]]);
        }
        if(
LevelFuel[nCarID[playerid]]<20)
        {
            
format(strBak,sizeof(strBak),"~g~FUEL:~r~%d~n~",LevelFuel[nCarID[playerid]]);
        }
        
//КОНЕЦ РАСЧЁТА ТОПЛИВА 
Как сделать топливо дробным числом т.е. 99.5 и уменьшение его на 0.1.
Было 99.5 проехал чуть и стало 99.4. Пробовал floatround и floatpower не помогло.
Reply
#2

узнаю родной старый код.

float - тебе в помощь
Reply
#3

Quote:
Originally Posted by DANGER1979
View Post
узнаю родной старый код.

float - тебе в помощь
Спс за помощь. Да т.к. лучше твоего мода я ещё не видел.
Reply
#4

new Float:Level;
Level = float(LevelFuel[nCarID[playerid]]);

Я так понял ?
Reply
#5

Может кто нибудь подскажет?
Reply
#6

Тебе нужно полностью переделать все переменные с топливом и методы работы на десятичные числа (float).
Подсказал, работай.
Reply
#7

Quote:
Originally Posted by anonim15
View Post
new Float:Level;
Level = float(LevelFuel[nCarID[playerid]]);

Я так понял ?
да по сути правильно, только надо везде проверить в ф-ии format, чтобы было уже не %d, а %f
Reply
#8

Благодарю. Сейчас попробую сделать.
Reply
#9

Вот поставил и http://saveimg.ru/show-image.php?id=...c9f4e2946c75b1 кракозябры. + бензин то 101 то 100
Reply
#10

Поставил в начале мода new Float:LevelFuel[MAX_VEHICLES];
и
GF 3.219\gamemodes\VW.pwn(1072 : warning 213: tag mismatch
HTML Code:
if( LevelFuel[car] < (GasMax-fuel+1) ) LevelFuel[car] += fuel;
else
{
fuel = GasMax - LevelFuel[car];
LevelFuel[car] += fuel;
}
GF 3.219\gamemodes\VW.pwn(12467) : warning 213: tag mismatch
HTML Code:
new FillUp = GasMax - LevelFuel[nCarID[playerid]];
GF 3.219\gamemodes\VW.pwn(15173) : warning 213: tag mismatch
HTML Code:
new FillUp = GasMax - LevelFuel[nCarID[playerid]];
GF 3.219\gamemodes\VW.pwn(15422) : warning 213: tag mismatch
HTML Code:
new FillUp = GasMax - LevelFuel[nCarID[playerid]];
GF 3.219\gamemodes\VW.pwn(2009 : warning 213: tag mismatch
HTML Code:
new FillUp = GasMax - LevelFuel[vehicleid];
GF 3.219\gamemodes\VW.pwn(37276) : warning 213: tag mismatch
HTML Code:
new FillUp = GasMax - LevelFuel[nCarID[playerid]];
Reply
#11

Quote:
Originally Posted by Stepashka
View Post
Тебе нужно полностью переделать все переменные с топливом и методы работы на десятичные числа (float).
Подсказал, работай.
читай полностью!
Reply
#12

Ну блин ёпта, как я переделаю #define GasMax 100 ? Я думаю что из-за него происходят варнинги.
Ведь варнинг на new FillUp = GasMax - LevelFuel[nCarID[playerid]]; new FilUp - тут не причём, LevelFuel[nCarID[playerid]] я уже во всё моде поменял на %f. И как быть дальше.
Reply
#13

GF 3.219\gamemodes\VW.pwn(37276) : warning 213: tag mismatch

new FillUp = GasMax - LevelFuel[nCarID[playerid]];


tag mismatch говорит, что у тебя ошибка типа переменных.
Т.е. ты от целой GasMax отнимаешь дробное LevelFuel и записываешь в целое.
Это нарушение.


можно так

Quote:

new Float: FillUp = floatsub(GasMax, LevelFuel[nCarID[playerid]])

или даже так

Quote:

new FillUp = floatround( floatsub(GasMax, LevelFuel[nCarID[playerid]]) );

Reply
#14

Теперь вот какая ошибка
HTML Code:
new Float: FillUp = floatsub(GasMax, LevelFuel[nCarID[playerid]]);
CostFuel = FillUp * SBizzInfo[3][sbEntranceCost];
Reply
#15

я же написал
пробуй использовать вот так
new FillUp = floatround( floatsub(GasMax, LevelFuel[nCarID[playerid]]) );
Reply
#16

Quote:
Originally Posted by DANGER1979
View Post
узнаю родной старый код.

float - тебе в помощь
Quote:
Originally Posted by DANGER1979
View Post
я же написал
пробуй использовать вот так
new FillUp = floatround( floatsub(GasMax, LevelFuel[nCarID[playerid]]) );
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

Сейчас сделаем тест.
Reply
#17

Теперь FUEL:12312487
Наверное что-то с этим кодом
HTML Code:
               if(LevelFuel[nCarID[playerid]] >= 1)
	   		{
                LevelFuel[nCarID[playerid]]++;
              	LevelFuel[nCarID[playerid]]--;
	   		}
   			if(LevelFuel[nCarID[playerid]] < 1)
           	{
	        if(LevelFuel[nCarID[playerid]]>50)
		{
			format(strBak,sizeof(strBak),"~g~FUEL:~w~%f~n~",LevelFuel[nCarID[playerid]]);
		}
		if(LevelFuel[nCarID[playerid]]<=50&&LevelFuel[nCarID[playerid]]>=20)
		{
			format(strBak,sizeof(strBak),"~g~FUEL:~y~%f~n~",LevelFuel[nCarID[playerid]]);
		}
		if(LevelFuel[nCarID[playerid]]<20)
		{
			format(strBak,sizeof(strBak),"~g~FUEL:~r~%f~n~",LevelFuel[nCarID[playerid]]);
		}
Reply
#18

Чтоли
HTML Code:
floatround( floatadd(LevelFuel[nCarID[playerid]]), 0.1) ); 
         floatround( floatsub(LevelFuel[nCarID[playerid]]), 0.1) );
Reply
#19

я тебя только навёл на мысль.
А ты теперь сам думай, т.к. целые и дробные нельзя складывать и отнимать.
но можно делить и умножать. Правда результат будет соответствующий.
Поэтому смотри в какую переменную по типу ты пишешь.
Reply


Forum Jump:


Users browsing this thread: 6 Guest(s)