Steht der Code so jetzt bei OnPlayerEnterVehicle oder OnPlayerStateChange?
Wird die SendClientMessage, dass man das Flugzeug nicht fliegen darf, angezeigt?
Beiträge von Jeffry
-
-
Das passt.
Setze bitte mal vor:
SetTimerEx("PlayerConnected", 100, false, "d", playerid);
einen
printf("Aufgerufen für playerid %d", playerid);
Wird das ausgeführt?Wenn ja, setze den print auch mal in PlayerConnected als erste Zeile hin (vor IsPlayerConnected), wird das dann ausgeführt?
-
Ich würde dir entfehlen diese abfragen bei OnPlayerEnterVehicle auszuführen
Das würde ich auch empfehlen.
Allerdings anstatt RemovePlayerFromVehicle (das geht dort nämlich nicht):
TogglePlayerControllable(playerid, false);
TogglePlayerControllable(playerid, true); -
das sagt er im Serverlog an "health: 87.00" aber mein hp balken ist voll
Hast du eventuell ein Textdraw darüber liegen, welches eine Server-Health anzeigt (um cheaten zu verhindern)?
-
Wie sieht denn die PlayerConnected Funktion aus? Ich nehme an das ist die Funktion, die nicht aufgerufen wird.
-
Ändere es hierzu ab:
if(isAmTelen[playerid])
{
if(Call_Anrufer[playerid]!=-1)
{
if(PlayerOnline(Call_Anrufer[playerid]))
{
SendClientMessage(Call_Anrufer[playerid],GRAU,"Du hörst nur noch ein Rauschen am anderen Ende der Leitung...");
isAmTelen[Call_Anrufer[playerid]]=0;
Call_Anrufer[playerid]=-1;
}
}
else if(Call_Anrufen[playerid]!=-1)
{
if(PlayerOnline(Call_Anrufen[playerid]))
{
SendClientMessage(Call_Anrufen[playerid],GRAU,"Du hörst nur noch ein Rauschen am anderen Ende der Leitung...");
isAmTelen[Call_Anrufen[playerid]]=0;
Call_Anrufen[playerid]=-1;
pInfo[playerid][handykarte]-=gpv(playerid,"MussTeleZahlen");
}
}
isAmTelen[playerid]=0;
}if(killerid!=INVALID_PLAYER_ID)
{
if(PlayerOnline(killerid))
{
if(pInfo[killerid][fraktion]==2 || pInfo[killerid][fraktion]==3)
{
if(Robber[playerid]==1)
{
Robber[playerid]=0;
BankIsRobbed=0;
BankRobbed=1;
new str[128];
format(str,sizeof(str),"* Der Räuber %s wurde vom Beamten %s getötet. Der Bankraub ist gescheitert.",PlayerName(playerid), PlayerName(killerid));
SendClientMessageToAll(HBLAU,str);
SetTimer("BankRobReset", 10800*1000, false);
}
}
}
} -
Wenn es aufgerufen wird (das return), dann ja.
Ändere es zu:
if(isAmTelen[playerid])
{
if(Call_Anrufer[playerid]!=-1)
{
if(PlayerOnline(Call_Anrufer[playerid]))
{
SendClientMessage(Call_Anrufer[playerid],GRAU,"Du hörst nur noch ein Rauschen am anderen Ende der Leitung...");
isAmTelen[Call_Anrufer[playerid]]=0;
Call_Anrufer[playerid]=-1;
}
}
else if(Call_Anrufen[playerid]!=-1)
{
if(PlayerOnline(Call_Anrufen[playerid]))
{
SendClientMessage(Call_Anrufen[playerid],GRAU,"Du hörst nur noch ein Rauschen am anderen Ende der Leitung...");
isAmTelen[Call_Anrufen[playerid]]=0;
Call_Anrufen[playerid]=-1;
pInfo[playerid][handykarte]-=gpv(playerid,"MussTeleZahlen");
}
}
isAmTelen[playerid]=0;
} -
Dann wird der Code irgendwo drüber schon beendet.
Setze weitere prints in den Zeilen über diesem Abschnitt und finde so heraus, bis wohin der Code durchlaufen wird. -
Setze bitte mal einen print direkt vor
if(PlayerOnline(killerid))Wird der angezeigt?
printf("Aufgerufen für killerid: %d", killerid); -
Entferne nach den drei if-Abfragen jeweils das "return".
-
Lass dir nach GetPlayerHealth mal das "health" ausgeben, was wird da ausgegeben?
printf("health: %0.2f", health);Welche Nachricht kommt im Chat, und welche sollte kommen?
-
OnPlayerCarUpdate(playerid,false);
-
Nutze zwei format's hintereinander, Beispiel:
format(string, sizeof(string), "Hallo");
format(string, sizeof(string), "%s Welt!", string);Oder, falls nur die Parameter am Ende zu viele sind, reicht ein Zeilenumbruch in eine neue Zeile im Code.
-
if(sInfo[i][sADuty])
{
format(string, sizeof(string),"%s%s\n",string, sInfo[i][sName]);
admins = string;
admin = 1;
}
else
{
format(string, sizeof(string),"%s%s\n",string, sInfo[i][sName]);
adminsoff = string;
adminoff = 1;
}
zu:
if(sInfo[i][sADuty])
{
format(admins, sizeof(admins),"%s%s\n",admins, sInfo[i][sName]);
admin = 1;
}
else
{
format(adminsoff, sizeof(adminsoff),"%s%s\n",adminsoff, sInfo[i][sName]);
adminoff = 1;
}Beachte, dass es auch noch die Möglichkeit gibt, dass alle Admins off-Duty sind, und die Möglichkeit, das gar kein Admin online ist.
-
Die Abfrage ist korrekt, nur deine angegebenen Daten passen nicht. Poste diese, falls du nicht weißt was du ändern sollst (isInZone Aufruf).
-
Das hat zwei Gründe:
1) 527 liegt nicht zwischen 482 und 509
2) -1452 ist größer als -1553, daher musst du die beiden Werte in der Prüfung vertauschen. -
Genau so.
Was ist in dem Code das Problem? -
Ja.
Das Prinzip dessen kannst du dir hier abschauen: [jTuT] Fraktions-Fahrzeug-System mit MySQL R39-5
-
Kein Problem, so haben wir alle mal angefangen. Deshalb einfach nachfragen

-
return 0;
zu:
return 1;