Beitrag von reaL. ()
Dieser Beitrag wurde vom Autor gelöscht ().
Warum wird die Nachricht doppelt angezeigt?
Bild:
Code:
forward OnUserLogin(playerid);
public OnUserLogin(playerid)
{
new rows;
cache_get_row_count(rows);
if(rows == 0)
{
new str[512];
format(str, sizeof(str), ""HTML_WEIS"Willkommen zurück "HTML_GELB"%s"HTML_WEIS", \nBitte gebe dein Passwort ein um dich einzuloggen: \n\n* Deine IP: "SERVER_HTML"%s", sI[playerid][pName], Spielerip(playerid));
ShowPlayerDialog(playerid, D_LOGIN, DIALOG_STYLE_PASSWORD, ""SERVER_HTML""SERVER_ATAG""HTML_WEIS": Login", str, "Login", "Abbrechen");
SendClientMessage(playerid, COLOR_ROT, "* Server: Falsches Passwort! Bitte gebe das Korrekte Passwort ein!");
}
else
{
TogglePlayerSpectating(playerid, 0);
sI[playerid][pLoggedIn] = true;
SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Konto: Eingeloggt.");
SpielerLaden(playerid);
SpawnPlayer(playerid);
}
return 1;
}
public OnPlayerSpawn(playerid)
{
if(sI[playerid][pLoggedIn] == false){
TogglePlayerSpectating(playerid, 1);
InterpolateCameraPos(playerid, 1350.2534, -1398.6396, 30.5000, 1381.4818, -935.0197, 70.5000, 10000, CAMERA_MOVE);
InterpolateCameraLookAt(playerid, 1415.4063, -807.2476, 85.0515, 1415.4063, -807.2476, 85.0515, 10000, CAMERA_MOVE);
} else if(sI[playerid][pLoggedIn] == true) {
TogglePlayerSpectating(playerid, 0);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Willkommen am Neulingsspawn");
SetPlayerPos(playerid, 1111.4602,-1796.9159,16.5938);
SetPlayerFacingAngle(playerid, 91.1574);
}
return 1;
}
Alles anzeigen
Du gibst die Nachricht unter [wiki]OnPlayerSpawn[/wiki] aus, dabei ist das Problem, das die Funktion aber zwei mal aufgerufen wird.
Einmal wenn du die Kamera z.B versetzt hast oder sonst wo, und dann lässt du ihn beim Laden wieder Spawnen. ([wiki]SpawnPlayer[/wiki])
Am besten du gibst die Nachricht aus, wenn er sich Eingeloggt hat erst, so kann die Nachricht nicht zwei mal kommen.
Mit freundlichen Grüßen.
Ich würde es aber gerne so machen dass wenn man in der Fraktion gespawnt wird auch eine Nachricht bekommt mit "Du wurdest in der Fraktion gespawnt!" oder so
Zeig mir mal bitte dein [wiki]OnPlayerSpawn[/wiki] Public, werde es dir Grob dann zurecht Basteln können. ![]()
Mit freundlichen Grüßen.
public OnPlayerSpawn(playerid)
{
if(sI[playerid][pLoggedIn] == false){
TogglePlayerSpectating(playerid, 1);
InterpolateCameraPos(playerid, 1350.2534, -1398.6396, 30.5000, 1381.4818, -935.0197, 70.5000, 10000, CAMERA_MOVE);
InterpolateCameraLookAt(playerid, 1415.4063, -807.2476, 85.0515, 1415.4063, -807.2476, 85.0515, 10000, CAMERA_MOVE);
} else if(sI[playerid][pLoggedIn] == true) {
TogglePlayerSpectating(playerid, 0);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Willkommen am Neulingsspawn");
SetPlayerPos(playerid, 1111.4602,-1796.9159,16.5938);
SetPlayerFacingAngle(playerid, 91.1574);
}
return 1;
}
Alles anzeigen
Hm ...
Lässt du den Spieler auch zurück setzen ?
Kannst auch mal die Funktion "SpielerLaden" zeigen ?
Bin gerade auf der Suche, wieso die Nachricht zwei mal Erscheint. ![]()
Mit freundlichen Grüßen.
Dein Spieler setzte ich in OnPlayerRequest mit ClearPlayerConnect(playerid):
stock ClearPlayerConnect(playerid)
{
sI[playerid][p_ID] = 0;
sI[playerid][pPasswort] = '0';
sI[playerid][pGeburtsdatum] = '0';
sI[playerid][pGeschlecht] = 0;
sI[playerid][pAdmin] = 0;
sI[playerid][pLoggedIn] = false;
GetPlayerName(playerid, sI[playerid][pName], MAX_PLAYER_NAME);
return 1;
}
Alles anzeigen
SpielerLaden:
stock SpielerLaden(playerid)
{
if(sI[playerid][pLoggedIn] == true)
{
cache_get_value_name_int(0, "ID", sI[playerid][p_ID]);
cache_get_value_name(0, "Geburtsdatum", sI[playerid][pGeburtsdatum], 11);
cache_get_value_name_int(0, "Geschlecht", sI[playerid][pGeschlecht]);
cache_get_value_name_int(0, "Admin", sI[playerid][pAdmin]);
} else {
KickWithMessage(playerid, "Ladeproblem");
}
return 1;
}
Alles anzeigen
public OnPlayerSpawn(playerid)
{
if(sI[playerid][pLoggedIn] == false){
TogglePlayerSpectating(playerid, 1);
InterpolateCameraPos(playerid, 1350.2534, -1398.6396, 30.5000, 1381.4818, -935.0197, 70.5000, 10000, CAMERA_MOVE);
InterpolateCameraLookAt(playerid, 1415.4063, -807.2476, 85.0515, 1415.4063, -807.2476, 85.0515, 10000, CAMERA_MOVE);
} else if(sI[playerid][pLoggedIn] == true) {
SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Willkommen am Neulingsspawn");
SetPlayerPos(playerid, 1111.4602,-1796.9159,16.5938);
SetPlayerFacingAngle(playerid, 91.1574);
}
return 1;
}
Mache es mal bitte so.
Weil, TogglePlayerSpectating(playerid, 0); das ruft soweit ich weiß ja auch den Public "OnPlayerSpawn" auf, somit wird OnPlayerSpawn zwei mal benutzt.
Das hat aber nichts damit zutun, da wir nur etwas Bearbeitet haben nach dem er Eingeloggt ist.
Das Problem was du hast, wirst du auch nichts mehr Gefixxt bekommen, eine Kamera Fahrt mit den Spectate Modus hat schon immer Probleme gemacht.
Am besten machst du es wie folgt.
So würde es nicht zu deinem Problem kommen.
Mit freundlichen Grüßen.
Morgen Jungs,
Ich war jetzt dabei eine Fahrschule zu machen, ich habe ein kleines Problem
Ich möchte gerne das man in die Fahrschule geht dort seine Fahrstunde startet dann wird [pFahrstunde] auf 1 gesetzt und der Spieler kann das Auto schon steuern, habe hier mal was gemacht.
Aber dann wird er ja trotzdem gekickt weil er keinen Führerschein hat oder?
new vehicleid=GetPlayerVehicleID(playerid);
if(WithoutMotor(vehicleid))
{
if(newstate == PLAYER_STATE_DRIVER)
if(pInfo[playerid][pAutoschein]== 0)
{
SendClientMessage(playerid, -1,"{c45461}Du hast noch keinen Autoschein.");
return RemovePlayerFromVehicle(playerid);
}
else
{
SendClientMessage(playerid,-1,"{FAFAFA}Benutze den Befehl{009BFF} /Motor{FAFAFA} um den Motor zu starten. Mit den Befehl {009BFF}/Licht{FAFAFA} schaltest du das Licht ein.");
}
}
if(newstate == PLAYER_STATE_DRIVER)
for(new p; p < sizeof(Fahrschulauto); p++)
{
new vehicleid=GetPlayerVehicleID(playerid);
if(vehicleid == p)
{
if(pInfo[playerid][Fahrstunde] != 1)
{
SendClientMessage(playerid, -1,"{c45461}Du musst zuerst die Fahrstunde starten um mit der Prüfung anzufangen.");
return RemovePlayerFromVehicle(playerid);
}
}
}
Alles anzeigen
Und bei dem normalen Aufbau kriege ich schon ein Error
if(WithoutMotor(vehicleid))
{
if(newstate == PLAYER_STATE_DRIVER)
if(pInfo[playerid][pAutoschein]== 0 || pInfo[playerid][pFahrschule] == 0)
{
SendClientMessage(playerid, -1,"{c45461}Du hast noch keinen Autoschein.");
return RemovePlayerFromVehicle(playerid);
}
else
{
SendClientMessage(playerid,-1,"{FAFAFA}Benutze den Befehl{009BFF} /Motor{FAFAFA} um den Motor zu starten. Mit den Befehl {009BFF}/Licht{FAFAFA} schaltest du das Licht ein.");
}
}
Somit wird er schon einmal nicht mehr aus dem Fahrzeug geworfen.
Ändere mal die Veriable Namen von "vehicleid" zu z.B "vehID".
Mit freundlichen Grüßen.
Danke, aber jetzt z.b wenn der Spieler die Fahrstunde startet kann er in jedes Auto einsteigen aber er darf nur das Fahrschulauto bedienen.
Ich hab das so noch nicht gemacht, also wie mach ich das das er z.b er abfragt ob er in einer Fahrstunde ist und falls es doch ist kann er das Auto bedienen und er hört auf das nächste abzufragen in meinem Fall ob er einen Schein hat
Dann Frag ab, sobald der Typ in einem Einsteigt ob es ein Fahrschulauto ist, wenn ja, lass ihn nicht Removen, wenn es keins ist, dann werfe ihn aus dem Fahrzeug raus.
Hast dafür doch eigentlich alles richtig Geschrieben soweit ich es sehen kann.
new vehicleid=GetPlayerVehicleID(playerid);
if(WithoutMotor(vehicleid))
{
if(newstate == PLAYER_STATE_DRIVER)
if(pInfo[playerid][pAutoschein]== 0)
{
SendClientMessage(playerid, -1,"{c45461}Du hast noch keinen Autoschein.");
return RemovePlayerFromVehicle(playerid);
}
else
{
SendClientMessage(playerid,-1,"{FAFAFA}Benutze den Befehl{009BFF} /Motor{FAFAFA} um den Motor zu starten. Mit den Befehl {009BFF}/Licht{FAFAFA} schaltest du das Licht ein.");
}
}
if(newstate == PLAYER_STATE_DRIVER)
for(new p; p < sizeof(Fahrschulauto); p++)
{
new vehicleid=GetPlayerVehicleID(playerid);
if(vehicleid == p)
{
if(pInfo[playerid][Fahrstunde] != 1)
{
SendClientMessage(playerid, -1,"{c45461}Du musst zuerst die Fahrstunde starten um mit der Prüfung anzufangen.");
return RemovePlayerFromVehicle(playerid);
}
}
}
Ja, meine ich ja auch aber wenn ich jetzt z.b auf einem Fahrrad steige steht das ich die Fahrprüfung noch machen muss wenn ich aber auf ein Roller z.b steige ich habe noch keinen Führerschein, also irgendwie ist das komisch
//edit beim Fahrrad und Fahrschulauto wird das angezeige also die Variable WithoutMotor das sind die Autos die kein Motor haben hmm
@BrightLeaN
Korrekt, du musst auch bedenken, so wie der Code da steht, so wird der Server auch Reagieren.
Versuche das ganze mal bitte so.
if(newstate == PLAYER_STATE_DRIVER)
{
new vehicleid=GetPlayerVehicleID(playerid);
for(new p; p < sizeof(Fahrschulauto); p++)
{
if(vehicleid== p)
{
if(pInfo[playerid][Fahrstunde] != 1)
{
SendClientMessage(playerid, -1,"{c45461}Du musst zuerst die Fahrstunde starten um mit der Prüfung anzufangen.");
return RemovePlayerFromVehicle(playerid);
}
}
}
if(pInfo[playerid][pAutoschein]== 0)
{
SendClientMessage(playerid, -1,"{c45461}Du hast noch keinen Autoschein.");
return RemovePlayerFromVehicle(playerid);
}
else
{
SendClientMessage(playerid,-1,"{FAFAFA}Benutze den Befehl{009BFF} /Motor{FAFAFA} um den Motor zu starten. Mit den Befehl {009BFF}/Licht{FAFAFA} schaltest du das Licht ein.");
}
}
}
Ich bin nur am verzweifeln der nimmt alle Autos und nicht das welches er eigentlich nehmen soll, also egal in welches ich steige es sagt mir das ich zuerst die Fahrstunde starten muss.
Fahrschulauto[ 0 ] = CreateVehicle(547, 1099.97998, -1753.98706, 13.188, 0.00, 55, 1, -1); //vehicle (Primo) (1)
if(newstate == PLAYER_STATE_DRIVER)
{
for(new p; p < sizeof(Fahrschulauto); p++)
{
new vehid=GetPlayerVehicleID(playerid);
if(vehid == p)
{
if(pInfo[playerid][pFahrstunde] != 1)
{
SendClientMessage(playerid, -1,"{c45461}Du musst zuerst die Fahrstunde starten um mit der Prüfung anzufangen.");
return RemovePlayerFromVehicle(playerid);
}
}
}
}
Alles anzeigen
Ja das Ding ist er soll mir das ja nicht zeigen wenn ich auf einen anderen Auto bin sondern nur bei diesem Fahrschulauto, irgendwie komisch ich hab das ja oben angegeben