Hier ist sicher was dabei:
http://wiki.ubuntuusers.de/Internetradio/Stationen
Beiträge von Jeffry
-
-
-
MoveObject zu MoveDynamicObject.

-
@Kontrax: Wenn sich der Text des Textdraws immer zu dem Auto-Name ändern soll, dann würde ich auf ein PlayerTexdraw zurückgreifen, da die Spieler ja unabhängig voneinander einen anderen Name sehen können.
Corvus: Den Code, wie du es erstellst.
-
Habe es mit ihm kurz getestet. Es lag am KEY. Der KEY_LOOK_BEHIND wurde immer wieder (spammend) aufgerufen, deshalb hat es immer umgeschalten.
Key auf KEY_YES geändert, jetzt tut es. -
Corvus:
Wie erstellst du das Objekt denn?@Kontrax:
Für Textdraws die für jeden Spieler gleich sind, sprich den gleiche Inhalt an Text haben, nimmst du globale Textdraws, für Spieler-spezifische Textdraws nimmst du PlayerTextdraws. -
1.) Ist FillUp ein Float? Wenn nicht, mach es dazu.
2.)
ForAllPlayers(i){if(IsPlayerConnected(i) && gPlayerLogged[i] && !IsPlayerNPC(i))3.)
self_mysql_get_field("AH_Meter", data); Kilometer[Carlist[playerid][h][h]] = floatstr(data);
Falls Kilometer ein Float ist. -
Dazu sollte gesagt sein, dass man Keys besser so abfragt:
if(newkeys & KEY_JUMP) -
Du musst den Spielername übergeben, und es darüber setzen:
format(query, sizeof(query), "UPDATE tabelle SET level = '%d' WHERE name = '%s'", neueslevel, name); -
Komisch, das kann ja dann nur an dieser Zeile liegen:
TanktGerade[car] = true;
füge da davor (vor beide) mal das ein:
printf("sizeof: %d | car: %d", sizeof(TanktGerade), car);Was wird dann geprintet?
-
Öh

Debugge beides mal so, dann sollte auf jeden Fall was kommen:
if(newkeys & KEY_LOOK_BEHIND)
{
pHoldingTime[playerid] = gettime();
new car = GetPlayerVehicleID(playerid);
if(GetPlayerVehicleSeat(playerid) != 0) return SendClientMessage(playerid,error,"Du bist in keinem Fahrzeug (oder kein Fahrer)!");
if(TanktGerade[car]) return SendClientMessage(playerid,error,"Du bist bereits dabei dein Auto aufzutanken!");
else if(Motor[car] == true) return SendClientMessage(playerid,error,"Du musst vor dem Tanken den Motor ausschalten!");
for(new g;g<MAX_GAS;g++)
{
if(IsPlayerInRangeOfPoint(playerid,Gasstation[g][Gasradius], Gasstation[g][Gasx],Gasstation[g][Gasy],Gasstation[g][Gasz]))
{
if(GetVehicleTankArt(GetVehicleModel(car)) == 0)
{
new ZuTanken = 100-GetVehicleMaxTank(GetVehicleModel(car));
new preis = ZuTanken * BENZINPREIS;
if(GetPlayerMoney(playerid)-preis < 0) return SendClientMessage(playerid,error,"Du hast nicht genug Geld!");
GivePlayerMoney(playerid, -preis);
SendClientMessage(playerid, info, "Tankvorgang wird gestartet...");
printf("Tanken für %d gestartet", playerid);
SetCameraBehindPlayer(playerid);
TogglePlayerControllable(playerid,0);
TanktGerade[car] = true;
dsl = 1;
tanktimer[playerid] = SetTimerEx("Auftanken",500,true,"i",playerid);
}
else if(GetVehicleTankArt(GetVehicleModel(car)) == 1)
{
new ZuTanken = 100-GetVehicleMaxTank(GetVehicleModel(car));
new preis = ZuTanken * DIESELPREIS;
if(GetPlayerMoney(playerid)-preis < 0) return SendClientMessage(playerid,error,"Du hast nicht genug Geld!");
GivePlayerMoney(playerid, -preis);
SendClientMessage(playerid, info, "Tankvorgang wird gestartet...");
printf("Tanken für %d gestartet", playerid);
SetCameraBehindPlayer(playerid);
TogglePlayerControllable(playerid,0);
TanktGerade[car] = true;
bnz = 1;
tanktimer[playerid] = SetTimerEx("Auftanken",500,true,"i",playerid);
}
return 1;
}
}
return SendClientMessage(playerid,error,"Du bist an keiner Tankstelle!");
}
if(RELEASED(KEY_LOOK_BEHIND))
{
new string[32];
format(string, sizeof string, "%d Sekunden", gettime()-pHoldingTime[playerid]);
SendClientMessage(playerid, -1, string);
TogglePlayerControllable(playerid,1);
KillTimer(tanktimer[playerid]);
}Und:
public Auftanken(playerid)
{
printf("Auftanken: %d", playerid);
new car = GetPlayerVehicleID(playerid);
new m = GetVehicleModel(car);
Tank[car]+=1;
printf("Auftanken: %d mit car %d: %d Liter", playerid, car, Tank[car]);
if(Tank[car] >= GetVehicleMaxTank(m))
{
printf("voll");
TanktGerade[car] = false;
Tank[car] = GetVehicleMaxTank(m);
if(GetVehicleTankArt(m) == 1)
{
SendClientMessage(playerid, erfolg, "Dein Fahrzeug wurde vollgetankt BENZIN.");
TogglePlayerControllable(playerid,1);
KillTimer(tanktimer[playerid]);
}
else if(GetVehicleTankArt(m) == 0)
{
SendClientMessage(playerid, erfolg, "Dein Fahrzeug wurde vollgetankt DIESEL.");
TogglePlayerControllable(playerid,1);
KillTimer(tanktimer[playerid]);
}
}
return 1;
} -
Schreibe den Timer so:
public Auftanken(playerid)
{
new car = GetPlayerVehicleID(playerid);
new m = GetVehicleModel(car);
Tank[car]+=1;
printf("Auftanken: %d mit car %d: %d Liter", playerid, car, Tank[car]);
if(Tank[car] >= GetVehicleMaxTank(m))
{
printf("voll");
TanktGerade[car] = false;
Tank[car] = GetVehicleMaxTank(m);
if(GetVehicleTankArt(m) == 1)
{
SendClientMessage(playerid, erfolg, "Dein Fahrzeug wurde vollgetankt BENZIN.");
TogglePlayerControllable(playerid,1);
KillTimer(tanktimer[playerid]);
}
else if(GetVehicleTankArt(m) == 0)
{
SendClientMessage(playerid, erfolg, "Dein Fahrzeug wurde vollgetankt DIESEL.");
TogglePlayerControllable(playerid,1);
KillTimer(tanktimer[playerid]);
}
}
return 1;
}
Dann schau nach was im Server Log steht, wenn du die Taste hältst. -
-
Du hast mit den Klammern nicht aufgepasst, die RELEASED Abfrage stand innerhalb der anderen Key Abfrage.
if(newkeys & KEY_LOOK_BEHIND)
{
pHoldingTime[playerid] = gettime();
new car = GetPlayerVehicleID(playerid);
if(GetPlayerVehicleSeat(playerid) != 0) return SendClientMessage(playerid,error,"Du bist in keinem Fahrzeug (oder kein Fahrer)!");
if(TanktGerade[car]) return SendClientMessage(playerid,error,"Du bist bereits dabei dein Auto aufzutanken!");
else if(Motor[car] == true) return SendClientMessage(playerid,error,"Du musst vor dem Tanken den Motor ausschalten!");
for(new g;g<MAX_GAS;g++)
{
if(IsPlayerInRangeOfPoint(playerid,Gasstation[g][Gasradius], Gasstation[g][Gasx],Gasstation[g][Gasy],Gasstation[g][Gasz]))
{
if(GetVehicleTankArt(GetVehicleModel(car)) == 0)
{
new ZuTanken = 100-GetVehicleMaxTank(car);
new preis = ZuTanken * BENZINPREIS;
if(GetPlayerMoney(playerid)-preis < 0) return SendClientMessage(playerid,error,"Du hast nicht genug Geld!");
GivePlayerMoney(playerid, -preis);
SendClientMessage(playerid, info, "Tankvorgang wird gestartet...");
SetCameraBehindPlayer(playerid);
TogglePlayerControllable(playerid,0);
TanktGerade[car] = true;
dsl = 1;
tanktimer[playerid] = SetTimerEx("Auftanken",500,true,"i",playerid);
}
else if(GetVehicleTankArt(GetVehicleModel(car)) == 1)
{
new ZuTanken = 100-GetVehicleMaxTank(car);
new preis = ZuTanken * DIESELPREIS;
if(GetPlayerMoney(playerid)-preis < 0) return SendClientMessage(playerid,error,"Du hast nicht genug Geld!");
GivePlayerMoney(playerid, -preis);
SendClientMessage(playerid, info, "Tankvorgang wird gestartet...");
SetCameraBehindPlayer(playerid);
TogglePlayerControllable(playerid,0);
TanktGerade[car] = true;
bnz = 1;
tanktimer[playerid] = SetTimerEx("Auftanken",500,true,"i",playerid);
}
return 1;
}
}
return SendClientMessage(playerid,error,"Du bist an keiner Tankstelle!");
}
if(RELEASED(KEY_LOOK_BEHIND))
{
new string[32];
format(string, sizeof string, "%d Sekunden", gettime()-pHoldingTime[playerid]);
SendClientMessage(playerid, -1, string);
TogglePlayerControllable(playerid,1);
KillTimer(tanktimer[playerid]);
}Zwecks dem, dass er nur an der einen Tanke geht, das habe ich dir auch gleich behoben.
Der Code ist an manchen Stellen doppelt, ich habe das mal so gelassen, da ich nicht weiß, was du noch vor hast (zum Beispiel das SetCameraBehindPlayer ist ja in beiden Abfragen, man könnte es auch einfach nach den beiden einmal hin schreiben, anstatt in beide). -
Du hast den Server Log vergessen ...
Lese doch bitte meine Posts richtig und mache alles was ich darin sage, und nicht immer nur ein drittel, dann geht es auch schneller und ich muss nicht 100 mal nachfragen.
EDIT:
Laut Denis_Denovski hat er den Fehler behoben, es funktioniert nun.
@Denis_Denovski: Kannst du den Thread bitte auf erledigt setzen? Danke
-
Poste den Server Log wieder, und den Befehl nochmal, damit wir sehen, ob du es diesmal richtig gemacht hast.
Ggf. auch den MySQL Log, falls vorhanden.Ein Fehler ist das nicht, sondern einfach eine fehlende Funktion, da beim Schließen der Konsole OnGameModeExit nicht aufgerufen wird, sprich es wird nichts gespeichert.
-
Zeigt er es dir an, wenn du es so schreibst? Sollte es eigentlich:
if(newkeys & KEY_YES)
{
pHoldingTime[playerid] = gettime();
}
if(RELEASED(KEY_YES))
{
new string[32];
format(string, sizeof string, "%d Sekunden", gettime()-pHoldingTime[playerid]);
SendClientMessage(playerid, -1, string);
}Einfügen kannst du das dann, indem du das ganze Zeug von deinem Tanken Code Teil den du gepostet hast bei obiger ersten if-Abfrage einfügst (KEY_YES) und bei RELEASED einfach den Timer killst.
-
Du hast es hier eingefügt:
Update3DTextsBiz(b);
SaveTanke(b);
Das ist falsch. Du hättest es nach Update3DTextTanke einfügen sollen, also einen Block weiter unten:
Update3DTextTanke(b);
//HIER. -
Dann wird der Timer doch ausgeführt, naja, schmeiß den Timer raus, den brauchen wir nicht mehr.
SetTimer("SetMaxTank", 3000, false);
und
forward SetMaxTank();
public SetMaxTank()
{
for (new v=0; v< MAX_VEHICLES; v++)
{
GetVehicleParamsEx(v,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(v,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
Motor[v] = false;
Tank[v] = GetVehicleMaxTank(GetVehicleModel(v));
}
return 0;
}Kannst du löschen. Dann sollte es aber wirklich klappen.
-
Da kein print von dem was ich dir gegeben habe vorhanden ist, hast du es nicht richtig eingefügt, oder keine Tankstelle gekauft.
Du kannst beide Log Dateien löschen, dann sind sie das nächste mal wieder kleiner.Poste bitte nochmal den /buybiz Befehl, und den stock SaveTanke aus deinem Code.