Camera Blickwinkel beim Einloggen ändern

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
  • Hallo Community,


    Ich habe eine sehr kurze frage:


    Jeder kennt den Strand von Los Santos, Pier etc. der beim Einloggen erscheint...


    Ich habe es nun auch auf anderen Server gesehen und frage mich wie ich diesen Blickwinkel ändern kann?
    Bei OnPlayerConnect habe ich die Kamera usw. schon eingefügt.. geht nicht! Bei OnPlayerRequest ... gehts, aber ich will es von anfang an anders haben^^


    Weiss einer wo ich es hin tuhen soll, stehe gerade echt auf den Schlauch und mir fällt nichts mehr ein...



    Mit freundlichen Grüßen
    LogispireMode


    //Verbessert

  • Du kannst das direkte "Startbild" nicht ändern, da SA:MP ja (noch) nicht auf den Server connected hat.


    Erst wenn sich der Client mit dem Server verbunden hat, können Änderungen gemacht werden (also sobald da: "Connected to [Dein Server]" steht).

  • Ahh ok, du bringst mich auf eine Idee ;) Mal gucken ob es bei OnDialogResponse will.... der kommt erst wenn das da steht(Wenn ich richtig guck...^^)

  • Ok, es ging auch nicht :/ Aber ich habe nun eine Lösung die nicht die Beste ist aber es geht. Timer :D 0,5 Sekunden und das ding schießt da hin wo es soll :D

  • Für was brauchste denn den Code? Sieht aus wie jeder andere xD Und wenn viele Connecten dann ist das entweder ein Zeichen für: 1) "Boah, der Server ist sowas von hammer geil!" oder 2) " Server Flooden!!! Attacke!!!" xD


    Aber gut hier:

    //Ganz ganz weit oben, da über den Wolken
    forward Bildschirm(playerid);


    public OnPlayerConnect(playerid)
    {
    if(IsPlayerNPC(playerid)) return 1;
    SetTimerEx("Bildschirm",1000,false,"i",playerid);
    for(new i = 0; i < 15; i++)
    {
    SendClientMessage(playerid,Weiß,"");
    }
    TextDrawShowForPlayer(playerid,Textdraw0);
    TextDrawShowForPlayer(playerid,Textdraw1);
    TextDrawShowForPlayer(playerid,Textdraw2);
    TextDrawShowForPlayer(playerid,Textdraw3);
    TextDrawShowForPlayer(playerid,Textdraw4);
    TextDrawShowForPlayer(playerid,Textdraw5);
    TextDrawShowForPlayer(playerid,Textdraw6);
    TextDrawShowForPlayer(playerid,Textdraw7);
    TextDrawShowForPlayer(playerid,Textdraw8);
    return 1;
    }


    //Und da ganz ganz weit unten, da wo es schön Warm ist :P :
    public Bildschirm(playerid)
    {
    SetPlayerPos(playerid, -68.9587,15.1708,3.1172);
    SetPlayerCameraPos(playerid,124.3012,57.5557,75.7887);
    SetPlayerCameraLookAt(playerid,117.7382,55.6009,73.2981);
    TextDrawShowForPlayer(playerid,Textdraw0);
    TextDrawShowForPlayer(playerid,Textdraw1);
    TextDrawShowForPlayer(playerid,Textdraw2);
    TextDrawShowForPlayer(playerid,Textdraw3);
    TextDrawShowForPlayer(playerid,Textdraw4);
    TextDrawShowForPlayer(playerid,Textdraw5);
    TextDrawShowForPlayer(playerid,Textdraw6);
    TextDrawShowForPlayer(playerid,Textdraw7);
    TextDrawShowForPlayer(playerid,Textdraw8);
    new Spieler[35],SpielerIP[35],SName[MAX_PLAYER_NAME];
    GetPlayerIp(playerid,SpielerIP,sizeof(SpielerIP));
    GetPlayerName(playerid,SName,sizeof(SName));
    new /*...*/;
    if(/*...*/)
    {
    /*...*/
    }
    else
    {
    format(Spieler,35,"/Accounts/%s.Account",SName);
    if(dini_Exists(Spieler))
    {
    sInfo[playerid][Spielerlogin] = 0;
    new Userlogin[100],Userlogin2[75];
    format(Userlogin,100,"/*...*/",SName);
    format(Userlogin2,75,"/*...*/",SName);
    TogglePlayerControllable(playerid,0);
    PlayerPlaySound(playerid,1185,0,0,0);
    SendDeathMessage(900,playerid,200);
    Einloggtimer = SetTimerEx("Einloggen",35000,false,"i",playerid);
    SendClientMessageToAll(Weiß,Userlogin);
    for(new i = 0; i < 15; i++)
    {
    SendClientMessage(playerid,Weiß,"");
    }
    SendClientMessage(playerid,Weiß,Userlogin2);
    SendClientMessage(playerid,Orange,"/*...*/");
    ShowPlayerDialog(playerid,Logindialog,DIALOG_STYLE_PASSWORD,"/*...*/","/*...*/","Einloggen","Abbrechen");
    GetPlayerMoney(playerid);
    }
    else
    {
    new Userlogin[100],Userlogin3[100],Userlogin4[100];
    format(Userlogin,100,"/*...*/",SName);
    format(Userlogin3,100,"/*...*/",SName);
    SendClientMessageToAll(Weiß,Userlogin);
    format(Userlogin4,100,"/*...*/",SName,playerid);
    SendClientMessageToAdmins(Rot,Userlogin4);
    sInfo[playerid][Spielerregister] = 1;
    for(new s=0; s < 15; s++)
    {
    SendClientMessage(playerid,Weiß,"");
    }
    SendClientMessage(playerid,Grün,Userlogin3);
    SendClientMessage(playerid,Weiß,"Dein Account wurde nicht gefunden. Bitte Registriere dich nun!");
    SendClientMessage(playerid,Weiß,"");
    SendClientMessage(playerid,Weiß,"");
    ShowPlayerDialog(playerid,Registerdialog,DIALOG_STYLE_INPUT,"/*...*/","/*...*/","Weiter","Abbrechen");
    }
    }
    return 1;
    }



    //Edit:


    1000 Beiträge *_* Yeah

  • Dacht ich mir, dass du das so gescriptet hast :)



    Du lässt doch bei OnPlayerConnect einen Login-Dialog anzeigen, oder?


    Ich würde mal probieren, vor ShowPlayerDialog den ganzen Kram mit SetPlayerCameraPos zu machen.


    Wenn das auch nicht geht, probier mal einen Timer für den Login-Dialog zu machen, sodass dieser erst nach X Sekunden angezeigt wird.



    So, wie du es jetzt hast, wird das nicht lange laufen.

  • Zitat

    Ich würde mal probieren, vor ShowPlayerDialog den ganzen Kram mit SetPlayerCameraPos zu machen.

    So geht das nicht... das hatte ich als erstes und da ging es nicht. und was ändert es daran wenn ich ein timer für den dialog mache anstatt das so zu machen wie hier? der timer wird wenn viele connecten so oder so aufgerufen also eig. ist das dann egal....

  • So geht das nicht... das hatte ich als erstes und da ging es nicht. und was ändert es daran wenn ich ein timer für den dialog mache anstatt das so zu machen wie hier? der timer wird wenn viele connecten so oder so aufgerufen also eig. ist das dann egal....


    Falsch. So, wie du es jetzt hast, wird jede Sekunde der public "Bildschirm" ausgeführt.


    So, wie ich das meine, wird ein einziges mal ein Timer ausgeführt, der nach X Sekunden nur den Login-Dialog anzeigt. Dadurch kann der komplette Public laden und es müsste gehen.

  • ??


    SetTimerEx("Bildschirm",1000,false,"i",playerid);
    Berichtige wenn ich falsch liege aber:


    SetTimerEX(Name,Zeit,Wiederholung,Parameter,Float);


    Bei der Wiederholung ist ein "false" also wiederholt er sich nicht... Ausserdem ändert das nicht wenn ich wie du sagst da den timer hin mache und dann nur den dialog aufrufe?! der timer bleibt doch dann da also was soll anders laufen?
    Ich kann noch ne var davor setzen mit dem ich den timer kille sobald der spieler spawnt oder bei onplayerrequestclass ist.... dann ist der auch weg..