Hilfe mit 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 leute,


    ich hab angefangen mein eigenes gamemode zu erstellen. Jetzt hab ich ein Problem ich weiß nicht ob das ein Logik- oder ein Syntax-Fehler ist oder was auch immer.


    Ich ein einfaches gate erstellt das ich mit /opengate öffne und sich durch ein timer wieder schliest und das ganze muss halt in einem Radius von 20m eingegeben werden, ansonst öffnet das tor nicht.


    Ich möchte jetzt folgendes:
    Wenn ein Spieler in die range von meinem gate kommt, das er ein Textdraw sieht welches heisst: "Benutze hier /opengate". // hab ich geschafft.
    Wenn der Spieler aus der range entfernt das Textdraw wieder verschwindet bzw. löscht. // k.A bräuchte da hilfe ^^


    Ich hab mir gedacht, ich mach das ganze nochmal mit einem timer der mir nach x-millisecs das Textdraw löscht. Und das ganze pack ich dann
    in das OnPlayerUpdate Callback.


    MyTextDraw()
    {
    mytext = TextDrawCreate(150.0,360.0,"Das Tor mit /opengate benutzen."); // Create the textdraw
    TextDrawColor(mytext,GRUEN2); // Set the color of the text
    TextDrawSetOutline(mytext,1); // Set the outline (stroke) of the text
    TextDrawSetShadow(mytext,0); // Set the shadow of the text
    TextDrawFont(mytext,3); // Set the Font
    TextDrawLetterSize(mytext,0.7,1.2); // Set the letter size
    TextDrawShowForAll(mytext); // Show the textdraw to a certain player
    }


    forward removeOpengate();
    public removeOpengate()
    {
    TextDrawHideForAll(mytext); // Hide the textdraw
    TextDrawDestroy(mytext); // Destroy the textdraw
    }


    public OnPlayerUpdate(playerid)
    {
    if(IsPlayerInRangeOfPoint(playerid,20.0,1101.59997559, -1755.90002441, 12.39999962))
    {
    MyTextDraw();
    SetTimer("removeOpengate",200,false);

    }
    return 1;
    }


    Wie gesagt, wenn ich in die Nähe komme taucht das TextDraw auf. Wenn ich mich aber wieder davon entferne, verschwindet es nicht.
    kann mir jemand helfen, was mach ich falsch?? ;D


    neuer versuch klappt auch nicht :(

    mit dcallbacks.inc


    forward OnPlayerEnterArea(playerid,areaid);
    public OnPlayerEnterArea(playerid,areaid)
    {
    if(areaid == spawnarea)
    {
    MyTextDraw();
    }
    return 1;
    }


    forward OnPlayerLeaveArea(playerid,areaid);
    public OnPlayerLeaveArea(playerid,areaid)
    {
    if(areaid == spawnarea)
    {
    SetTimer("removeOpengate",20,false);
    }
    return 1;
    }


    spawnarea = CreateArea3(1101.59997559, -1755.90002441, 12.39999962,0); // bestimmt setzen der koord. falsch ;D


    Erscheint nichteinmal das Textdraw...


    danke

    3 Mal editiert, zuletzt von thacoga308 () aus folgendem Grund: neuer versuch, auf ein neues

  • yo, halt nich alle sondern nur der spieler das änder ich noch :P


    mit den zonen is das wieder der selbe mist, wenn ich die zone betrete, erscheint das Textdraw
    wenn ich sie verlasse kommt nix, nichteinmal ein sendclientmessage zu testzwecken:S.


    ich bearbeite das ganze oben auf ein neues :D

  • So nochmal alles in schön: ^^



    //gamemodeinit


    area = CreateArea3(1140.004, 1117.187, -1729.235, -1772.66);



    MyTextDraw(playerid)
    {
    mytext = TextDrawCreate(150.0,360.0,"Das Tor mit /opengate benutzen."); // Create the textdraw
    TextDrawColor(mytext,GRUEN2); // Set the color of the text
    TextDrawSetOutline(mytext,1); // Set the outline (stroke) of the text
    TextDrawSetShadow(mytext,0); // Set the shadow of the text
    TextDrawFont(mytext,3); // Set the Font
    TextDrawLetterSize(mytext,0.7,1.2); // Set the letter size
    TextDrawShowForPlayer(playerid,mytext); // Show the textdraw to a certain player
    }


    DeleteMyTextDraw(playerid)
    {
    TextDrawHideForPlayer(playerid,mytext); // Hide the textdraw
    TextDrawDestroy(mytext); // Destroy the textdraw
    }


    forward OnPlayerEnterArea(playerid,areaid);
    public OnPlayerEnterArea(playerid,areaid)
    {
    if(areaid == area) // erscheint
    {
    SendClientMessage(playerid, 0xFFFFFFFF, "You did just enter Persing Square"); // läuft
    MyTextDraw(playerid); // läuft
    }
    return 1;
    }


    forward OnPlayerLeaveArea(playerid,areaid);
    public OnPlayerLeaveArea(playerid,areaid)
    {
    if(areaid == area) // verschwindet nicht ^^
    {
    DeleteMyTextDraw(playerid); // läuft, denk ich mal aber löscht nix ^^
    SendClientMessage(playerid, 0xFFFFFFFF, "You did just left Persing Square"); //läuft nicht .... why?
    }
    return 1;
    }



    Einmal editiert, zuletzt von thacoga308 ()

  • nein wie gesagt xD. Ich kann in die zone laufen, clientmessage und textdraw kommt. Aber wenn ich rausgehe verschwindet es nicht^^


    Ist meine DeleteMyTextDraw() function falsch?^^


    Naja egal, ich geh jetzt pennen. Schau mir morgen paar gf's an vielleicht find ich was ähnliches

  • ach lol, fehler meinerseits, ich idiot hab xD


    public OnPlayerLeaveArea(playerid,areaid){}


    statt wie in der *.inc datei angegeben



    public OnPlayerExitArea(playerid,areaid){}

    eingegeben.
    Deshalb lief das auch nich als ich die Zone verlassen hab ^^


    war wohl etwas übermüdet.
    danke trotzdem für deine hilfe ;P