Anklickbare Textdraws nur für einen Spieler - Harte Sache

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.
    Wenn man auf den Server connected, erscheint der Textdraw. Da kann man dann auswählen, ob man den Server betreten oder verlassen möchte.


    Klappt auch alles wunderbar.
    Nur, wenn Spieler A das schon gemacht hat, und dann Spieler B auf den Server connected, passiert bei Spieler B garnichts mehr.
    Bzw. der Textdraw kommt nicht.
    Unter OnPlayerConnect hab ich das so:
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    Willkommen[i] = 0;
    TextDrawShowForPlayer(i, Textdraw1);
    TextDrawShowForPlayer(i, Textdraw3);
    TextDrawShowForPlayer(i, Textdraw4);
    TextDrawShowForPlayer(i, Textdraw5);
    TextDrawShowForPlayer(i, Textdraw6);
    TextDrawShowForPlayer(i, Textdraw7);
    TextDrawShowForPlayer(i, Textdraw8);
    SelectTextDraw(i, 0xA3B4C5FF); // Bedeutet das folgende Farbe angezeigt wird 0xA3B4C5FF wenn man mit der Maus rüber geht, könnt ihr natürlich in eure Farbe ändern.
    }


    public OnPlayerRequestClass(playerid, classid)
    {
    if(IsPlayerNPC(playerid))
    {
    SpawnPlayer(playerid);
    return 1;
    }
    if(gPlayerAccount[playerid] == 1 && Willkommen[playerid] == 1 && gPlayerLogged[playerid] == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde erfolgreich gefunden!\nGib jetzt deinen Passwort ein,\num dich einloggen zu können.","Login","Abbrechen");
    }
    else if(gPlayerAccount[playerid] == 0 && Willkommen[playerid] == 1 && gPlayerLogged[playerid] == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_REG,DIALOG_STYLE_MSGBOX,"Account","Dein Account wurde nicht gefunden!\nDu benötigst einen, wenn du auf diesem Server\nspielen möchtest!","Erstellen","Abbrechen");
    }
    return 1;
    }

  • Guten Abend,
    Du kannst unter OnPlayerConnect Abfragen, ob der Spieler schon mal Connectet ist & Wenn ja, das der Textdraw Verschwindet.
    Wie liest du deinen Datein aus(Adminlevel u.s.w)?


    MFG
    Easy-Games

  • Was hat diese Schleife eigentlich unter OnPlayerConnect verloren?


    Da kommt mit sicherheit keine Schleife hin.
    Das wird warscheinlich auf dein Fehler sein ;)

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Wo muss ich die Textdraws dann denn anzeigen lassen?
    Sobald die auf dem Server sind, bzw. connected sind, sollen die Textdraws angezeigt werden.
    Und dann kann man sich aussuchen, ob man den Server betreten oder verlassen möchte...

  • Du sollst nicht den Code entfernen, sondern die Schleife.


    Momentan würden die Textdraws auch für die Leute angezeigt werden, die nicht connected sind und die bereits auf dem Server sind.
    Ergo: nicht sinnvoll und kann zu unerwünschten Fehlern führen ;)

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Du hast es jetzt so
    Ohne schleife?
    Willkommen[playerid] = 0;
    TextDrawShowForPlayer(playerid, Textdraw1);
    TextDrawShowForPlayer(playerid, Textdraw3);
    TextDrawShowForPlayer(playerid, Textdraw4);
    TextDrawShowForPlayer(playerid, Textdraw5);
    TextDrawShowForPlayer(playerid, Textdraw6);
    TextDrawShowForPlayer(playerid, Textdraw7);
    TextDrawShowForPlayer(playerid, Textdraw8);
    SelectTextDraw(playerid, 0xA3B4C5FF);

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Magst du mir dann mal erklären wofür
    Willkommen[playerid] = 0;
    dann ist?


    Bestandteil zum draufklicken auf die Textdraws?
    Wenn ja zeig mal dein OnPlayerClickTextDraw

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Vorher war das ja so, dass wenn man auf den Server connected die Register & Login Dialoge erschienen.
    Da hab' ich das versucht mit 'ner Variable zu lösen...


    Halt, wenn man auf "betreten" klickt, wird "Willkommen" auf 1 gesetzt.
    Und wenn das auf 1 ist, erscheinen die die Dialoge...


    Und wenn man auf "verlassen" klickt wird man halt gekickt..


    public OnPlayerClickTextDraw(playerid, Text:clickedid)
    {
    if(clickedid != Text:INVALID_TEXT_DRAW) //Sagt das wenn der Player ein falsches TD anklickt nichts passieren soll.
    {
    if(clickedid == Textdraw5) //Wir fangen indem Fall bei 1 an weil wir ja nicht wollen das 0 anklickbar ist.
    {
    Willkommen[playerid] = 1;
    CancelSelectTextDraw(playerid);
    }
    else if(clickedid == Textdraw6)
    {
    CancelSelectTextDraw(playerid); //Schließt den TD (Abbrechen) CancelSelectTextDraw = zu deutsch SchließeAusgewähltenTextdraw
    Kick(playerid); //Teleportet den Spieler nach SF wenn er auf das zweite TD klickt.
    }
    TextDrawHideForPlayer(playerid,Textdraw1);
    TextDrawDestroy(Textdraw1);
    TextDrawHideForPlayer(playerid,Textdraw3);
    TextDrawDestroy(Textdraw3);
    TextDrawHideForPlayer(playerid,Textdraw4);
    TextDrawDestroy(Textdraw4);
    TextDrawHideForPlayer(playerid,Textdraw5);
    TextDrawDestroy(Textdraw5);
    TextDrawHideForPlayer(playerid,Textdraw6);
    TextDrawDestroy(Textdraw6);
    TextDrawHideForPlayer(playerid,Textdraw7);
    TextDrawDestroy(Textdraw7);
    TextDrawHideForPlayer(playerid,Textdraw8);
    TextDrawDestroy(Textdraw8);
    CancelSelectTextDraw(playerid); //Schleißt alle TD´s wenn eine Sache ausgewählt wurde.
    }
    return 1;
    }

  • TextDrawDestroy();


    Nicht sinnvoll zu verwenden, wenn man die Textdraws hinterher noch braucht, so wie du.



    Entfern das einfach und es sollte gehen ;)

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Probiert, leider wieder... <.<
    Ich glaub' ich lass's einfach sein.


    Edit: Wie kann ich das schaffen, dass public OnPlayerRequestClass(playerid, classid) erst nachdem man auf "betreten" geklickt hat kommt?


    Und nicht, dass beides gleichzeitig abläuft...


    Würde das mit 'ner Variable gehen?
    In etwa so:
    public OnPlayerClickTextDraw(playerid, Text:clickedid)
    {
    if(clickedid != Text:INVALID_TEXT_DRAW) //Sagt das wenn der Player ein falsches TD anklickt nichts passieren soll.
    {
    if(clickedid == Textdraw1) //Wir fangen indem Fall bei 1 an weil wir ja nicht wollen das 0 anklickbar ist.
    {
    Showing[playerid] = 1; //Teleportet den Spieler nach LV wenn er auf das erste TD klickt.
    PlayerPlaySound(playerid,1056,0.0,0.0,0.0);
    }...


    public OnPlayerRequestClass(playerid, classid)
    {
    if(IsPlayerNPC(playerid))
    {
    SpawnPlayer(playerid);
    return 1;
    }
    if(gPlayerAccount[playerid] == 1 && Showing[playerid] == 1 && gPlayerLogged[playerid] == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde erfolgreich gefunden!\nGib jetzt deinen Passwort ein,\num dich einloggen zu können.","Login","Abbrechen");
    }

    Einmal editiert, zuletzt von Quetai ()