PlayerSpectateVehicle - Spieler verfolgt Zug nicht

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Guten Morgen Community =)


    Ich will auf meinem Reallife-Server, dass wenn man sich registriert, man zuerst mit einem Zug in die Stadt fährt (So als Beginn).
    Deshalb habe ich einen Bot erstellt, welcher einen Zug nach LS fährt.
    Der Bot Connected, sobald sich jemand registriert und danach soll er wieder disconnecten bzw. der Record soll bei jeder Registierung von vorne beginnen.
    Nun habe ich dabei 2 Fragen bzw. Probleme:


    1.Frage:
    Wie kann ich einen Record "neustarten" oder den Bot disconnecten lassen?
    -> Im Moment connected der Bot, sobald sich jemand registrieren muss. (Da er so bestimmt die ganze Strecke fährt). Ansonsten kann es sein, dass der Zug die halbe Strecke bereits gefahren hat und das möchte ich nicht ;)


    Code:

    Spoiler anzeigen
    public OnPlayerConnect(playerid)
    {
    if(IsPlayerNPC(playerid))
    {
    new botname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,botname, sizeof(botname));
    if(!strcmp(botname,"Zugchaffeur", true))
    {
    SpawnPlayer(playerid);
    return 1;
    }
    }
    else
    {
    new spieler[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(spieler,sizeof(spieler),"/Accounts/%s.txt",name);
    if(dini_Exists(spieler))
    {
    ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_INPUT,"Login","Bitte gib dein Passwort ein:","Login","Abbrechen");
    }
    else
    {
    ShowPlayerDialog(playerid,REGISTER,DIALOG_STYLE_INPUT,"Registrierung","Bitte gib ein Passwort ein:","Registrieren","Abbrechen");
    ConnectNPC("Zugchaffeur","AnfangZug");
    }
    }

    return 1;
    }


    2.Problem:
    Nun sobald der Spieler "spawnt" soll er den Zug verfolgen und dann kommt ein kleines Intro.
    Später kommt er dann in LS an und spawnt da.
    Die Zugverfolgung habe ich mit PlayerSpectateVehicle ausgeführt. Doch wenn ich nun spawne, dann ist die Kamera irgendwo im nichts....
    Was mache ich falsch?


    Code:

    Spoiler anzeigen

    public OnGameModeInit()
    //NPC-Bot
    AZug = SetVehicleVirtualWorld(AddStaticVehicle(538, -1948.1641,138.9634,25.7109,179.0464, 1, 1),7);

    Spoiler anzeigen
    public OnPlayerSpawn(playerid)
    {
    if(IsPlayerNPC(playerid))
    {
    new botname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,botname,sizeof(botname));
    if(!strcmp(botname,"Zugchaffeur", true))
    {
    SetPlayerVirtualWorld(playerid,7);
    PutPlayerInVehicle(playerid,AZug,0);
    return 1;
    }
    }
    else
    {
    if(Daten[playerid][Registriert] == 0)
    {
    rtext = 1;
    SetPlayerVirtualWorld(playerid, 7);
    TogglePlayerSpectating(playerid, 1);
    PlayerSpectateVehicle(playerid,AZug,SPECTATE_MODE_SIDE);
    rtimer = SetTimer("registrierung",20000,1);
    return 1;
    }

    Spoiler anzeigen
    //Timer
    //Registerierung
    public registrierung(playerid)
    {
    if(rtext == 1)
    {
    SendClientMessage(playerid,weiss," 1 ");
    rtext=2;
    return 1;
    }
    else if(rtext == 2)
    {
    SendClientMessage(playerid,weiss," 2 ");
    rtext=3;
    return 1;
    }
    else if(rtext == 3)
    {
    SendClientMessage(playerid,weiss," 3 ");
    rtext=4;
    return 1;
    }
    else if(rtext == 4)
    {
    TogglePlayerSpectating(playerid, 0);
    SetPlayerVirtualWorld(playerid,1);
    SetPlayerPos(playerid,800.8849,-1349.8745,-0.8978);//Spawnpunkt
    SetPlayerFacingAngle(playerid,321.3059);
    SetCameraBehindPlayer(playerid);
    KillTimer(rtimer);
    rtext= 0;
    Daten[playerid][Registriert] = 1;
    Speichern(playerid);
    return 1;
    }
    return 1;
    }


    gez.
    Hund

  • 1.
    Kick(playerid); //playerid = playerid vom Bot/NPC


    2.
    SetCameraBehindPlayer(playerid); //am ende einfügen


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • 1.
    Kick(playerid); //playerid = playerid vom Bot/NPC


    2.
    SetCameraBehindPlayer(playerid); //am ende einfügen


    mfg. :thumbup:


    1. An kicken hab ich gar nicht gedacht X(


    2. Wo am Ende soll ich das Einfügen? -> Bei OnPlayerSpawn? Ich will die Kamera ja beim Zug X(


  • Zitat von »Hund«


    Doch wenn ich nun spawne, dann ist die Kamera irgendwo im nichts....


    genau da SetCameraBehindPlayer(playerid); einfügen ;)

    Ich hab bei meinem schlussendlichen Spawn ja SetCameraBehindPlayer(playerid).
    Das Problem ist nicht der Spawn am Ende. Sondern der "imaginäre Spawn"....
    Der Spieler spawnt ja noch nicht, sondern die Kamera verfolgt einfach den Zug und danach wird er erst gespawnt.
    Und diese Zugverfolgung geht nicht. Da ich nicht den Zugverfolge, sondern die Kamera irgendwo im nichts steht X(



    //Edit:
    Habe gerade herausgefunden, dass es nicht an PlayerSpectateVehicle sondern an der VirtualWorld liegt... :pinch:
    Hab ma die normale Welt genommen und es hat funktioniert...
    Was mache ich nun also mit der VirtualWorld falsch.. X(

    Einmal editiert, zuletzt von Hund ()