Hey Leute
Das Benzin von meinen Fahrzeugen geht zu schnell leer
SetTimer("TankCheck",9000*3200000,1);
ich hab das so, doch wie stell ich es ein, damit der Tank lange hält?
Benzin checken :(
- Oktabius
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Wo steht der Timer? (Also, wo startest du ihn)
Was steht im zugehöhrigen public? -
forward TankCheck();for(new c=0;c<MAX_VEHICLES;c++)
{
Tank[code=c] = 100;
}SetTimer("TankCheck",90000*3200000,1);
public TankCheck()
{
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
{
new Auto = GetPlayerVehicleID(i);
if(Tank[Auto] <=1)
{
SendClientMessage(i, COLOR_WHITE, "Dein Tank ist Leer, gebe /exitveh ein");
}
}
}
}
retu -
Ich glaub der Code ist unvollständig... wie kann dein Tank leer gehen, wenn du dem Tank nie was abziehst?
-
Wie zieh ich ihm denn was ab? er zeigt mir ja im Textdraw an, dass er runter geht
-
Hier das ist der Timmer wan er immer 1 Benzin abzieht:
checkgastimer = SetTimer("CheckGas", RunOutTime, 1);public CheckGas()
{
new string[256];
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
{
new vehicle = GetPlayerVehicleID(i);
if(Gas[vehicle] >= 1)
{
if(Gas[vehicle] <= 10) { PlayerPlaySound(i, 1085, 0.0, 0.0, 0.0); }
if(gGas[i] == 1) {
format(string, sizeof(string), "~r~~n~~n~~n~~n~~n~~n~~n~~n~~n~Benzin:~w~ %d%",Gas[vehicle]);
GameTextForPlayer(i,string,15500,3); }
if(IsAPlane(vehicle) || IsABoat(vehicle) || IsAFahrrad(vehicle)) { Gas[vehicle]++; }
Gas[vehicle]--;
}
else
{
NoFuel[i] = 1;
TogglePlayerControllable(i, 0);
GameTextForPlayer(i,"~w~~n~~n~~n~~n~~n~~n~~n~~n~Nicht genug Benzin im Auto~n~benutze /exit um das Fahrzeug zu verlassen",1500,3);
}
}
}
}
return 1;
}Wen du dir jetz mal ganz unten anschaust da steht das hier :
if(IsAPlane(vehicle) || IsABoat(vehicle) || IsAFahrrad(vehicle)) { Gas[vehicle]++; }
Gas[vehicle]--;
Das heist immer wen er den Public aufruft zieht er ein Benzin ab...Wie oft er bei dir benziht abzieht musst du schauen wie bei dir RunOutTime definiert ist.. bei mir isses so :
#define RunOutTime 15000
-
//edit : Könnte man es nicht auch mit Float:Tank[MAX_VEHICLES] machen? das ergäbe doch Sinn oder nicht?
ahh.. Fiedel das ergibt sinn.. ich prob mal aus
Naja geht iwie immer noch net
Ich zeig einfach nomma:
new Tank[MAX_VEHICLES];forward TankCheck();
for(new c=0;c<MAX_VEHICLES;c++)
{
Tank[code=c] = 100;
}SetTimer("TankCheck",RunOutTime,1);
public TankCheck()
{
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
{
new Auto = GetPlayerVehicleID(i);
if(Tank[Auto] >=1)
{
SendClientMessage(i, COLOR_WHITE, "Dein Tank ist Leer, gebe /exitveh ein");
}
}
}
}
return 1;
}Ich habe ja noch meinen Textdraw.. vlt ist da etwas dran falsch
new Text:vtank;forward textdrawvtank(playerid);
vtank = TextDrawCreate(432.8,400.0,"Benzin: 100");
TextDrawHideForPlayer(playerid,Text:vtank);
public textdrawvtank(playerid)
{
new veh = GetPlayerVehicleID(playerid);
new tankstr[11];
if(IsPlayerInAnyVehicle(playerid))
{
if(Tank[veh] > 0)
{
Tank[veh] --;
format(tankstr,sizeof tankstr,"Benzin: %d",Tank[veh]);
TextDrawSetString(vtank,tankstr);
}
else
{
format(tankstr,sizeof tankstr,"Benzin leer!");
TogglePlayerControllable(playerid,0);
TextDrawSetString(vtank,tankstr);
}
}
return 1;
}
timer = SetTimerEx("textdrawvtank",RunOutTime,1,"i",playerid); -
breadfish.de
Hat das Thema geschlossen.