Tutorial geht nicht weiter

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 zusammen.
    Ich hab ein Tutorial gemacht,
    aber er wechselt die Kamera nicht?
    Keine Errors/Warnings,
    aber es geht trotzdem nicht:



    stock Register(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Spieler/%s.ini",name);
    dini_Create(Spielerdatei);
    dini_Set(Spielerdatei,"Passwort",key);
    new string[256];
    SendClientMessage(playerid,WEISS,"-----------------------------------------------------------");
    format(string, sizeof(string), "{FEFEFE}Spieler {FFBE00}%s{FEFEFE} ist zum erstem mal auf dem Server!", name);
    SendClientMessageToAll(GELB, string);
    SendClientMessage(playerid,WEISS,"-----------------------------------------------------------");
    SetPlayerScore(playerid,1);
    SetPVarInt(playerid,"loggedin",1);
    SetPlayerInterior(playerid,0);
    tut1(playerid);
    return 1;
    }




    public tut1(playerid)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    if(TutTime[i] >= 1)
    {
    TutTime[i] += 1;
    if(TutTime[i] == 20)
    {
    SetPlayerInterior(i, 0);
    ClearChatbox(i, 8);
    InterpolateCameraPos(playerid, 2224.520019, 2404.315673, 16.344240, 2153.540527, 2313.615722, 60.157226, 10000);
    InterpolateCameraLookAt(playerid, 2227.905029, 2407.916503, 17.103015, 2151.097656, 2309.258300, 60.368419, 10000);
    }
    else if(TutTime[i] == 40)
    {
    SetPlayerInterior(i, 0);
    ClearChatbox(i, 8);
    InterpolateCameraPos(playerid, 2139.731689, 1967.328613, 17.607742, 2066.838867, 1683.506591, 14.777522, 10000);
    InterpolateCameraLookAt(playerid, 2135.487548, 1964.687255, 17.713203, 2071.788085, 1683.407348, 15.482200, 10000);
    }
    else if(TutTime[i] == 60)
    {
    SetPlayerInterior(i, 0);
    ClearChatbox(i, 8);
    InterpolateCameraPos(playerid, 1216.874145, 1385.585815, 35.823482, 1029.671997, 1443.950805, 37.058578, 10000);
    InterpolateCameraLookAt(playerid, 1213.136718, 1382.266479, 35.706626, 1027.412841, 1448.393188, 37.460807, 10000);
    }
    else if(TutTime[i] == 80)
    {
    SetPlayerInterior(i, 0);
    ClearChatbox(i, 8);
    InterpolateCameraPos(playerid, 1216.874145, 1385.585815, 35.823482, 1029.671997, 1443.950805, 37.058578, 10000);
    InterpolateCameraLookAt(playerid, 1213.136718, 1382.266479, 35.706626, 1027.412841, 1448.393188, 37.460807, 10000);
    }
    else if(TutTime[i] == 100)
    {
    SetPlayerInterior(i, 0);
    ClearChatbox(i, 8);
    InterpolateCameraPos(playerid, 24.192886, 1312.712890, 87.218193, 82.856452, 1734.160522, 54.378856, 15000);
    InterpolateCameraLookAt(playerid, 21.173522, 1308.851928, 86.229858, 85.896827, 1738.113037, 54.013206, 10000);
    }
    else if(TutTime[i] == 125)
    {
    SetPlayerInterior(i, 0);
    ClearChatbox(i, 8);
    InterpolateCameraPos(playerid, 24.192886, 1312.712890, 87.218193, 82.856452, 1734.160522, 54.378856, 15000);
    InterpolateCameraLookAt(playerid, 21.173522, 1308.851928, 86.229858, 85.896827, 1738.113037, 54.013206, 10000);
    }
    else if(TutTime[i] == 150)
    {
    SetPlayerInterior(i, 0);
    ClearChatbox(i, 8);
    InterpolateCameraPos(playerid, 24.192886, 1312.712890, 87.218193, 82.856452, 1734.160522, 54.378856, 15000);
    InterpolateCameraLookAt(playerid, 21.173522, 1308.851928, 86.229858, 85.896827, 1738.113037, 54.013206, 10000);
    }
    else if(TutTime[i] == 175)
    {
    SetPlayerInterior(i, 0);
    ClearChatbox(i, 8);
    InterpolateCameraPos(playerid, 1548.642333, 2626.509765, 59.889606, 1877.035644, 2604.894775, 51.598896, 10000);
    InterpolateCameraLookAt(playerid, 1545.515869, 2630.389648, 59.476016, 1880.970825, 2607.971191, 51.376312, 10000);
    }
    else if(TutTime[i] == 195)
    {
    SetPlayerInterior(i, 0);
    ClearChatbox(i, 8);
    InterpolateCameraPos(playerid, 2057.356445, 806.424377, 51.410240, 2057.969726, 1705.619995, 44.109199, 15000);
    InterpolateCameraLookAt(playerid, 2057.464111, 811.379699, 50.752002, 2057.996337, 1710.608886, 43.777416, 15000);
    }
    else if(TutTime[i] == 225)
    {
    SetPlayerInterior(i, 0);
    ClearChatbox(i, 8);
    GameTextForPlayer(playerid,"~w~~n~~n~~n~~n~~n~~n~~n~~n~~n~Viel Spaß auf ~p~GTA Roleplay",5000,4);
    SetCameraBehindPlayer(playerid);
    SpawnPlayer(playerid);
    }
    }
    return 1;
    }

  • Richtig grausiger Ansatz, sorry. Ich versuche mal zu erklären was dein Code aktuell macht:
    Es wird eine Schleife gestartet, die alle Spieler des Servers durchläuft (Obwohl du doch die SpielerID übergibst?). Bei jedem Spieler, bei dem die Variable "TutTime" größer gleich 1 ist (die aber irgendwie auch nirgends gesetzt wird), wird selbige um 1 erhöht.
    Dann wird abgefragt wie hoch diese Variable (bei jedem Spieler des Servers!) ist, das Interior des jeweiligen Spielers neu gesetzt und sein Chat gecleared. Die Kamera wird allerdings beim mit playerid übergebenen Spieler geändert.
    Eine Schleife läuft nicht unendlich lang weiter. Außerdem dauert ein Durchlauf keine ganze Sekunde, weshalb du nicht davon ausgehen könntest, dass TutTime durch die Erhöhung erst nach 20 Sekunden auf 20 wäre.


    Am besten löst du das so:

    public tut1(playerid, id)
    {
    if(id == 1)
    {
    SetPlayerInterior(playerid, 0); // Wird nur einmal benötigt, danach ist der Spieler ja bereits im jeweiligen Interior.
    ClearChatbox(playerid, 8);
    InterpolateCameraPos(playerid, 2224.520019, 2404.315673, 16.344240, 2153.540527, 2313.615722, 60.157226, 10000);
    InterpolateCameraLookAt(playerid, 2227.905029, 2407.916503, 17.103015, 2151.097656, 2309.258300, 60.368419, 10000);
    SetTimerEx("tut1", 20000, false, "ii", playerid, 2); // Ggf. die Zeit anpassen!
    }
    else if(id == 2)
    {
    ClearChatbox(playerid, 8);
    InterpolateCameraPos(playerid, 2139.731689, 1967.328613, 17.607742, 2066.838867, 1683.506591, 14.777522, 10000);
    InterpolateCameraLookAt(playerid, 2135.487548, 1964.687255, 17.713203, 2071.788085, 1683.407348, 15.482200, 10000);
    SetTimerEx("tut1", 20000, false, "ii", playerid, 3); // Ggf. die Zeit anpassen!
    }
    else if(id == 3)
    {
    ClearChatbox(playerid, 8);
    InterpolateCameraPos(playerid, 1216.874145, 1385.585815, 35.823482, 1029.671997, 1443.950805, 37.058578, 10000);
    InterpolateCameraLookAt(playerid, 1213.136718, 1382.266479, 35.706626, 1027.412841, 1448.393188, 37.460807, 10000);
    SetTimerEx("tut1", 20000, false, "ii", playerid, 4); // Ggf. die Zeit anpassen!
    }
    else if(id == 4)
    {
    ClearChatbox(playerid, 8);
    InterpolateCameraPos(playerid, 1216.874145, 1385.585815, 35.823482, 1029.671997, 1443.950805, 37.058578, 10000);
    InterpolateCameraLookAt(playerid, 1213.136718, 1382.266479, 35.706626, 1027.412841, 1448.393188, 37.460807, 10000);
    SetTimerEx("tut1", 20000, false, "ii", playerid, 5); // Ggf. die Zeit anpassen!
    }
    else if(id == 5)
    {
    ClearChatbox(playerid, 8);
    InterpolateCameraPos(playerid, 24.192886, 1312.712890, 87.218193, 82.856452, 1734.160522, 54.378856, 15000);
    InterpolateCameraLookAt(playerid, 21.173522, 1308.851928, 86.229858, 85.896827, 1738.113037, 54.013206, 10000);
    SetTimerEx("tut1", 20000, false, "ii", playerid, 6); // Ggf. die Zeit anpassen!
    }
    else if(id == 6)
    {
    ClearChatbox(playerid, 8);
    InterpolateCameraPos(playerid, 24.192886, 1312.712890, 87.218193, 82.856452, 1734.160522, 54.378856, 15000);
    InterpolateCameraLookAt(playerid, 21.173522, 1308.851928, 86.229858, 85.896827, 1738.113037, 54.013206, 10000);
    SetTimerEx("tut1", 20000, false, "ii", playerid, 7); // Ggf. die Zeit anpassen!
    }
    else if(id == 7)
    {
    ClearChatbox(playerid, 8);
    InterpolateCameraPos(playerid, 24.192886, 1312.712890, 87.218193, 82.856452, 1734.160522, 54.378856, 15000);
    InterpolateCameraLookAt(playerid, 21.173522, 1308.851928, 86.229858, 85.896827, 1738.113037, 54.013206, 10000);
    SetTimerEx("tut1", 20000, false, "ii", playerid, 8); // Ggf. die Zeit anpassen!
    }
    else if(id == 8)
    {
    ClearChatbox(playerid, 8);
    InterpolateCameraPos(playerid, 1548.642333, 2626.509765, 59.889606, 1877.035644, 2604.894775, 51.598896, 10000);
    InterpolateCameraLookAt(playerid, 1545.515869, 2630.389648, 59.476016, 1880.970825, 2607.971191, 51.376312, 10000);
    SetTimerEx("tut1", 20000, false, "ii", playerid, 9); // Ggf. die Zeit anpassen!
    }
    else if(id == 9)
    {
    ClearChatbox(playerid, 8);
    InterpolateCameraPos(playerid, 2057.356445, 806.424377, 51.410240, 2057.969726, 1705.619995, 44.109199, 15000);
    InterpolateCameraLookAt(playerid, 2057.464111, 811.379699, 50.752002, 2057.996337, 1710.608886, 43.777416, 15000);
    SetTimerEx("tut1", 20000, false, "ii", playerid, 10); // Ggf. die Zeit anpassen!
    }
    else if(id == 10)
    {
    ClearChatbox(playerid, 8);
    GameTextForPlayer(playerid,"~w~~n~~n~~n~~n~~n~~n~~n~~n~~n~Viel Spaß auf ~p~GTA Roleplay",5000,4);
    SetCameraBehindPlayer(playerid);
    SpawnPlayer(playerid);
    }
    return 1;
    }


    Mit freundl. Grüßen
    Padarom

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • villeicht weil du nur die public aufrufst und nicht mit nem timer !!!


    also mit deinem public und dann so



    //dass ganz oben
    new tut1timer[MAX_PLAYERS];


    //dass unter register
    tut1timer[playerid]=SetTimerEx("tut1", 1000, true, "i", playerid);



    //dass bei was da schon ist
    else if(TutTime[i] == 225)
    {
    SetPlayerInterior(i, 0);
    ClearChatbox(i, 8);
    GameTextForPlayer(playerid,"~w~~n~~n~~n~~n~~n~~n~~n~~n~~n~Viel Spaß auf ~p~GTA Roleplay",5000,4);
    SetCameraBehindPlayer(playerid);
    SpawnPlayer(playerid);
    KillTimer(tut1timer[playerid]);
    }


    MFG Piet

  • Piet:
    Dir ist aber klar, dass man Funktionen auch ohne Timer aufrufen kann, oder?
    Dennoch, meine Lösung sollte bereits die richtige sein.

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger