Checkpointfragen

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
  • HI, ich wollte, dass wenn ein Player in einen Checkpoint läuft, für ihn eine Playermessage, und für die anderen Spieler halt eine andere Message senden. Leider hab ich's nicht ganz hinbekommen. Kann mir da jemand helfen?
    Hier ein Teil aus'm Script:
    public OnPlayerEnterCheckpoint(playerid)
    {
    switch(gClass[playerid])
    {
    case 0,1,2,3:
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    //nichts
    }
    else
    {
    GameTextForPlayer(playerid, "Passe auf, dass die Paparazzi keine Aufmahmen machen!", 6000, 5);
    }
    }
    case 4,5,6,7:
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    SendClientMessage(playerid,ROT,"Du musst erst aussteigen!");
    }
    else
    {
    GameTextForPlayer(playerid, "Gut, du hast die Aufnahmen!", 6000, 5);
    GameTextForAll("~r~Ein Paparazzo hat Aufnahmen von der Villa gemacht!",6000,5);
    DisablePlayerCheckpoint(playerid);
    }
    }
    }
    return 1;
    }

    2 Mal editiert, zuletzt von DuffMan ()

  • Du meinst wohl andere Font´s/Schriften



    GameTextForPlayer(playerid, "Gut, du hast die Aufnahmen!", 6000, 5);


    //GameTextForPlayer(playerid, Text, Intervall, Style 1-5);



    Wenn du die Style Id zb. durch 1 ersetzt wird der Text durch eine andere Schriftart ersetzt

    [align=center]
    Mta Script Editor - Work in Progress

  • Nein, ich meine, dass der Player im Checkpoint Die GameMessage "Gut, du hast die Aufnahmen!" und alle anderen player die GameMessage "~r~Ein Paparazzo hat Aufnahmen von der Villa gemacht!" bekommen.mit den Fonts is' alles ok.

  • Header:
    new istatvilla[MAX_PLAYERS];


    OnPlayerEnterCheckpoint:
    public OnPlayerEnterCheckpoint(playerid)
    {
    switch(gClass[playerid])
    {
    case 0,1,2,3:
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    //nichts
    }
    else
    {
    GameTextForPlayer(playerid, "Passe auf, dass die Paparazzi keine Aufmahmen machen!", 6000, 5);
    }
    }
    case 4,5,6,7:
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    SendClientMessage(playerid,ROT,"Du musst erst aussteigen!");
    }
    else
    {
    istavilla[playerid] = 1;
    if(istavilla[playerid] == 1)
    {
    GameTextForPlayer(playerid, "Gut, du hast die Aufnahmen!", 6000, 5);
    GameTextForAll("~r~Ein Paparazzo hat Aufnahmen von der Villa gemacht!",6000,5);
    DisablePlayerCheckpoint(playerid);
    }
    }
    }
    }
    return 1;
    }


    Könnte gehen .. muss aber nicht :>


    //Edit:
    Gr...Sorry aber Ne mein Code ist iwie Unlogisch..
    Dein Normaler Code sollte schon gehen..


    Mit Freundlichen Grüßen
    mR_FatJoe <3 ;)



    Lua: 63% C++: 23% C#: 53% VB: 96%

  • hab ich auch gemerkt. ^^ Nur bei meinem normalen Code bekommt der Player im Checkpoint die Message, die für die anderen bestimmt war, also GameTextForAll("~r~Ein Paparazzo hat Aufnahmen von der Villa gemacht!",6000,5);
    .

  • Tausche das mal


    das es so aussieht ;D


    Weil dann spielt er erst an alle die Funktion "GameTextTOall" und sofort danach bekommt nur er die Nahricht Gut du hast die AUfnahmen :D


    GameTextForAll("~r~Ein Paparazzo hat Aufnahmen von der Villa gemacht!",6000,5);
    GameTextForPlayer(playerid, "Gut, du hast die Aufnahmen!", 6000, 5);
    DisablePlayerCheckpoint(playerid);



    Lua: 63% C++: 23% C#: 53% VB: 96%

  • Hat funktioniert! Ganz einfach.
    Danke. :thumbup:


    //EDIT:
    Weiß einer vielleich, wie man das jetzt macht, dass man erst nach 3 sec. "die Aufnahmen hat", also dass erst dann Der GameText gesendet wird?

  • mit'n timer..


    Header:
    forward bekommen(playerid)


    Dann da wo der GameText kommen solll abwann die 5sek gälten also^^
    SetTimer("bekommen",3000,1); // 1000 = 1sek für 3 sek also 3000


    und der Public
    Ganz unten im Script!


    public bekommen(playerid)
    {
    // Was Passieren soll!
    }



    Lua: 63% C++: 23% C#: 53% VB: 96%

  • Wenn dann mit SetTimerEx ^^


    // Forward Declaration
    forward Bekommen(playerid);


    // Da wo vorher der GameText gekommen ist:
    SetTimerEx("Bekommen",5000,0,"i",playerid);


    // Eigenes Callback:
    public Bekommen(playerid)
    {
    GameTextForPlayer(playerid, "Du hast die Aufnahmen", 3000, 1);
    return 1;
    }

  • Funktioniert beides gleich gut. Wo soll da denn der Unterschied sein?
    Wie kann man denn noch einstellen, dass man im Checkpoint drinnenbleiben muss und erst dann nach 5 sec die Message gesendet wird?

  • Freeze ihn einfach wenn er im Checkpoint ist..
    oder mach noch einen Timer der jede sekunde überprüft ob er im Checkpoint ist^^


    Was ist anders?
    SetTimerExt ist nur für die Person mit der SpielerID
    SetTimer ist für alle spieler im ganzen server^^


    also nehm lieber SetTimerEx!



    Lua: 63% C++: 23% C#: 53% VB: 96%

  • Zitat

    SetTimerExt ist nur für die Person mit der SpielerID
    SetTimer ist für alle spieler im ganzen server


    Achso, danke. :)


    Ich hab das Problem etwas anders gelöst und es funktioniert. Ich wollte trotzdem nochmal meine Lösung hier reinsetzen. Ist das so in Ordnung?:
    new FotoTime;
    public OnPlayerEnterCheckpoint(playerid)
    {
    switch(gClass[playerid])
    {
    case 0,1,2,3:
    {
    GameTextForPlayer(playerid, "Passe auf, dass die Paparazzi keine Aufmahmen machen!", 6000, 5);
    }
    case 4,5,6,7:
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    SendClientMessage(playerid,ROT,"Du musst erst aussteigen!");
    }
    else
    {
    FotoTime = SetTimerEx("Foto",10000,0,"i",playerid);
    GameTextForPlayer(playerid, "Mach das Foto!", 6000, 5);
    }
    }
    }
    return 1;
    }


    public Foto(playerid)
    {
    GameTextForAll("~r~Ein Paparazzo hat Aufnahmen von der Villa gemacht!",6000,5);
    GameTextForPlayer(playerid, "Gut, du hast die Aufnahmen!", 6000, 5);
    DisablePlayerCheckpoint(playerid);
    }


    public OnPlayerLeaveCheckpoint(playerid)
    {
    KillTimer(FotoTime);
    return 1;
    }


    Ansonsten wäre das Thema erledigt. Thx all. :thumbup:

    3 Mal editiert, zuletzt von DuffMan ()