Switchbare Textdraws

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
  • Hey,
    Komme bei meinen Switchbaren Textdraws nicht weiter.
    Hab schon viel versucht zuletzt das:
    public Textdrawwechsel(playerid)
    {
    TextDrawSetString(Textdraw0, "Ts3: blabla");
    SetTimer("Textdrawwechsel", 5000, 0,playerid);
    }


    OnPlayerConnect:
    TextDrawShowForPlayer(playerid, Textdraw0);


    OnGameModeInit:
    Textdraw0 = TextDrawCreate(266.105804, 435.000030, "bla-bla.de");
    @Jeffry
    Bitte um Hilfe, vielen Dank.

  • ist doch gar nicht so schwer.....


    mach oben


    new Bildschirmwerbung_Rotation = 1;


    dann machste unten nen stock oder public Bereich



    public Bildschirmwerbung()
    {
    if(Bildschirmwerbung_Rotation == 1)
    {
    for(new i = 0;i<MAX_PLAYERS;i++){
    TextDrawHideForPlayer(i, Bildschirmrand_Werbetext);
    TextDrawShowForPlayer(i, Bildschirmrand_Werbetext);
    TextDrawSetString(Bildschirmrand_Werbetext,"Du hast noch kein Premium ? Dann hole ihn dir und profitiere von viele Extras und Funktionen");
    }Bildschirmwerbung_Rotation = 2;}



    else if(Bildschirmwerbung_Rotation == 2){



    for(new i = 0;i<MAX_PLAYERS;i++){
    TextDrawHideForPlayer(i, Bildschirmrand_Werbetext);
    TextDrawShowForPlayer(i, Bildschirmrand_Werbetext);
    TextDrawSetString(Bildschirmrand_Werbetext,"Du moechtest in eine Fraktion ? Dann schreibe den Leader an oder bewirb dich bei uns im Forum");
    }Bildschirmwerbung_Rotation = 3;}



    else if(Bildschirmwerbung_Rotation == 3){



    for(new i = 0;i<MAX_PLAYERS;i++){
    TextDrawHideForPlayer(i, Bildschirmrand_Werbetext);
    TextDrawShowForPlayer(i, Bildschirmrand_Werbetext);
    TextDrawSetString(Bildschirmrand_Werbetext,"Du moechtest dich mit anderen Spielern unterhalten ? Dann komm zu uns ins Teamspeak");
    }Bildschirmwerbung_Rotation = 4;}



    else if(Bildschirmwerbung_Rotation == 4){



    for(new i = 0;i<MAX_PLAYERS;i++){
    TextDrawHideForPlayer(i, Bildschirmrand_Werbetext);
    TextDrawShowForPlayer(i, Bildschirmrand_Werbetext);
    TextDrawSetString(Bildschirmrand_Werbetext,"Du moechtest deine Statistiken ausserhalb einsehen ? Dann gehe ins Controlpanel von uns");
    }Bildschirmwerbung_Rotation = 5;}



    else if(Bildschirmwerbung_Rotation == 5){



    for(new i = 0;i<MAX_PLAYERS;i++){
    TextDrawHideForPlayer(i, Bildschirmrand_Werbetext);
    TextDrawShowForPlayer(i, Bildschirmrand_Werbetext);
    TextDrawSetString(Bildschirmrand_Werbetext,"Du hast Fragen zum Spiel oder zur Community ? Dann schreib uns an /report oder im Forum");
    }Bildschirmwerbung_Rotation = 1;}


    return 1;
    }



    Vergesse natürlich den Standardtextdraw und den Timer nicht ;) Hier heißt der Bildschirmrand_Werbetext.

  • mhh, das Problem ist das ja, wo soll der timer hin? hab schon viel versucht nur deswegen xD da brauch ich die hilfe.

  • Der Timer und der Texdraw kommen in den "OnGameModeInit" Bereich


    Beispiel



    Bildschirmrand_Werbetext = TextDrawCreate(170.000000, 433.000000, "Derzeit keine Werbung aktiv");
    TextDrawBackgroundColor(Bildschirmrand_Werbetext, 255);
    TextDrawFont(Bildschirmrand_Werbetext, 1);
    TextDrawLetterSize(Bildschirmrand_Werbetext, 0.170000, 0.9);
    TextDrawColor(Bildschirmrand_Werbetext, 16711935);
    TextDrawSetOutline(Bildschirmrand_Werbetext, 0);
    TextDrawSetProportional(Bildschirmrand_Werbetext, 1);
    TextDrawSetShadow(Bildschirmrand_Werbetext, 1);



    SetTimer("Bildschirmwerbung",30000,1);

  • Der Timer und der Texdraw kommen in den "OnGameModeInit" Bereich


    Beispiel


    Bildschirmrand_Werbetext = TextDrawCreate(170.000000, 433.000000, "Derzeit keine Werbung aktiv"); TextDrawBackgroundColor(Bildschirmrand_Werbetext, 255); TextDrawFont(Bildschirmrand_Werbetext, 1); TextDrawLetterSize(Bildschirmrand_Werbetext, 0.170000, 0.9); TextDrawColor(Bildschirmrand_Werbetext, 16711935); TextDrawSetOutline(Bildschirmrand_Werbetext, 0); TextDrawSetProportional(Bildschirmrand_Werbetext, 1); TextDrawSetShadow(Bildschirmrand_Werbetext, 1); SetTimer("Bildschirmwerbung",30000,1);

    Funktioniert leider noch immer nicht derzeit mein Timer:
    SetTimer("Textdraw0",3000,1);
    halt auf meinem Textdraw angepasst... was nun :wacko: ?(

  • Edit:
    Es gibt jetzt mindestens 2 Möglichkeiten.
    Eine die jedem das selbe Anzeigt und eine die jedem individuell einen Text anzeigt.
    Die Individuelle Möglichkeit setzt aber ein PlayerTextdraw voraus ( https://wiki.sa-mp.com/wiki/CreatePlayerTextDraw ).




    Möglichkeit 1 mit PlayerTextdraw:


    Im Kopf vom Script eine neue Variable:
    new Beispiel[MAX_PLAYERS] = 0;


    Unter OnPlayerConnect:
    Textdrawwechsel(playerid);
    PlayerTextDrawShow(playerid, Textdraw0);



    public Textdrawwechsel(playerid)
    {
    switch(Beispiel[playerid])
    {
    case: 0 //Werbetext 1
    {
    PlayerTextDrawSetString(playerid, Textdraw0, "Ts3: blabla");
    Beispiel[playerid] = 1;
    }
    case: 1 //Werbetext 2
    {
    PlayerTextDrawSetString(playerid, Textdraw0, "Hier Werbung 2");
    Beispiel[playerid] = 2;
    }
    //etc...
    }
    SetTimerEx("Textdrawwechsel", 5000, 0, "i", playerid);
    return 1;
    }


    Hier die Variante ohne PlayerTextdraw:


    Header:
    new Beispiel = 0;


    Unter OnGameModeInit einmal:
    Textdrawwechsel();


    Unter OnPlayerConnect:
    TextDrawShowForPlayer(playerid, Textdraw0);



    public Textdrawwechsel()
    {
    switch(Beispiel)
    {
    case: 0 //Werbetext 1
    {
    TextDrawSetString(Textdraw0, "Ts3: blabla");
    Beispiel = 1;
    }
    case: 1 //Werbetext 2
    {
    TextDrawSetString(Textdraw0, "Hier Werbung 2");
    Beispiel = 2;
    }
    //etc...
    }
    SetTimer("Textdrawwechsel", 5000, 0);
    return 1;
    }

    „Auge um Auge - und die ganze Welt wird blind sein.“
    - Mahatma Gandhi

    Einmal editiert, zuletzt von Dog ()


  • //oben
    enum GlblTxdrwInfo{
    Text[128]
    }
    new GlobalTxdrw[2][GlblTxdrwInfo] = {
    "TSIP: 127.0.0.1",
    "FORUM: sa-mp.de",
    "UCP: sa-ucp.de"
    }


    new Text:GlobalTxdrw;
    new TxdrwCounter = 0;


    //OnGameModeInit
    SetTimer("Textdraw",20000,true);


    Dein TextdrawCreate im GameModeInit


    GlobalTxdrw = ....


    // im Script
    public Textdraw()
    {
    switch(TxdrwCounter)
    {
    case 0:TextDrawSetString(GlobalTxdrw,GlobalTxdrw[0][Text]);TxdrwCounter +=1;
    case 1:TextDrawSetString(GlobalTxdrw,GlobalTxdrw[1][Text]);TxdrwCounter +=1;
    case 2:TextDrawSetString(GlobalTxdrw,GlobalTxdrw[2][Text]);TxdrwCounter = 0;
    }
    return 1;
    }


    //OnPlayerConnect
    TextDrawShowForPlayer(playerid,GlobalTxdrw);


    Wurde nicht getestet, auf dem Handy geschrieben.

  • Hab beides versucht beide geben mir Errors bei der zweite Variante die Errors:
    C:\Users/G\Desktop\samp037_svr_R2-1-1_win32\gamemodes\selfmade.pwn(4543) : error 029: invalid expression, assumed zeroC:\Users\385i\Desktop\samp037_svr_R2-1-1_win32\gamemodes\selfmade.pwn(4543 -- 4544) : error 029: invalid expression, assumed zeroC:\Users\385i\Desktop\samp037_svr_R2-1-1_win32\gamemodes\selfmade.pwn(4546) : warning 217: loose indentationC:\Users\385i\Desktop\samp037_svr_R2-1-1_win32\gamemodes\selfmade.pwn(4548) : error 010: invalid function or declarationC:\Users\385i\Desktop\samp037_svr_R2-1-1_win32\gamemodes\selfmade.pwn(4554) : error 054: unmatched closing brace ("}")C:\Users\385i\Desktop\samp037_svr_R2-1-1_win32\gamemodes\selfmade.pwn(4556) : error 010: invalid function or declaration
    & der Fehler liegt in der Public
    public Textdrawwechsel(){switch(Beispiel){case: 0 //Werbetext 1 //Error{//ErrorTextDrawSetString(Textdraw0, "Ts3: blabla");Beispiel = 1;}case: 1 //Werbetext 2 //Zeigt auch Error{TextDrawSetString(Textdraw0, "Hier Werbung 2");Beispiel = 2;}//etc...}//Zeigt ErrorSetTimer("Textdrawwechsel", 5000, 0);return 1; //Zeigt als Error an}
    @Jeffry könntest du mir weiterhelfen? :c

    Einmal editiert, zuletzt von RastaZopf. ()

  • @Jeffry könntest du mir weiterhelfen? :c

    Unter den Includes
    new Text:Textdraw0;


    OnGameModeInit:
    SetTimer("ChangeTextdraw0", 5000, true);
    /*Hier außerdem das TextDrawCreate, TextDrawColor, etc...*/


    OnPlayerSpawn/OnPlayerRequestClass:
    TextDrawShowForPlayer(playerid, Textdraw0);


    Unten im Gamemode:
    forward ChangeTextdraw0();
    public ChangeTextdraw0()
    {
    static item;
    switch(item)
    {
    case 0: TextDrawSetString(Textdraw0, "www.breadfish.de");
    case 1: TextDrawSetString(Textdraw0, "127.0.0.1");
    case 2: TextDrawSetString(Textdraw0, "Willkommen!");
    }
    item++;
    if(item > 2) item = 0; //Bei mehr case's hier die 2 erhöhen
    return 1;
    }

  • Ganz easy gemacht und es geht auch :) Vielen Dank, immer hilfsbereit.