Hallo und Wilkommen zu meinem ersten Tutorial ich hoffe du guckst dir das Tutorial bis zum Ende an.
1.Anfang
Zuerst müssen wir ein Textdraw erstellen oder mehrere, dafür sind Tools nützlich wie iPleoMax, Zamroth, BSNTEXTDRAW(nicht zu empfehlen)...
Ich zeig euch in einem Video wie man das macht.
Dies hab ich im Video nicht gezeigt. Ich hab Export to PWN gedrückt und dann wird im Scriptfiles ordner eine .pwn erstellt. Ich hab iPleoMax benutzt.
Link: iPleoMax
Link: Zamaroht
2.Script
Das ganze müsste dann so aussehen
//Global Textdraws:
new Text:Textdraw0;
new Text:Textdraw1;
Textdraw0 = TextDrawCreate(441.555541, 129.428878, "usebox");
TextDrawLetterSize(Textdraw0, 0.000000, 17.326791);
TextDrawTextSize(Textdraw0, 202.000030, 0.000000);
TextDrawAlignment(Textdraw0, 1);
TextDrawColor(Textdraw0, 0);
TextDrawUseBox(Textdraw0, true);
TextDrawBoxColor(Textdraw0, 102);
TextDrawSetShadow(Textdraw0, 0);
TextDrawSetOutline(Textdraw0, 0);
TextDrawFont(Textdraw0, 0);
Textdraw1 = TextDrawCreate(419.777770, 157.304443, "usebox");
TextDrawLetterSize(Textdraw1, 0.000000, 11.187531);
TextDrawTextSize(Textdraw1, 224.222229, 0.000000);
TextDrawAlignment(Textdraw1, 1);
TextDrawColor(Textdraw1, 0);
TextDrawUseBox(Textdraw1, true);
TextDrawBoxColor(Textdraw1, -16776961);
TextDrawSetShadow(Textdraw1, 0);
TextDrawSetOutline(Textdraw1, 0);
TextDrawFont(Textdraw1, 0);
//Player Textdraws:
new PlayerText:Textdraw0[MAX_PLAYERS];
Textdraw0[playerid] = CreatePlayerTextDraw(playerid, 245.777847, 198.115524, "Login oder Register");
PlayerTextDrawLetterSize(playerid, Textdraw0[playerid], 0.449999, 1.600000);
PlayerTextDrawAlignment(playerid, Textdraw0[playerid], 1);
PlayerTextDrawColor(playerid, Textdraw0[playerid], -1);
PlayerTextDrawSetShadow(playerid, Textdraw0[playerid], 0);
PlayerTextDrawSetOutline(playerid, Textdraw0[playerid], 1);
PlayerTextDrawBackgroundColor(playerid, Textdraw0[playerid], 51);
PlayerTextDrawFont(playerid, Textdraw0[playerid], 1);
PlayerTextDrawSetProportional(playerid, Textdraw0[playerid], 1);
PlayerTextDrawSetSelectable(playerid, Textdraw0[playerid], true);
Das ganze könnten wir auch so schreiben
new TDBox[2];
TDBox[0] = TextDrawCreate(441.555541, 129.428878, "usebox");
TextDrawLetterSize(TDBox[0], 0.000000, 17.326791);
TextDrawTextSize(TDBox[0], 202.000030, 0.000000);
TextDrawAlignment(TDBox[0], 1);
TextDrawColor(TDBox[0], 0);
TextDrawUseBox(TDBox[0], true);
TextDrawBoxColor(TDBox[0], 102);
TextDrawSetShadow(TDBox[0], 0);
TextDrawSetOutline(TDBox[0], 0);
TextDrawFont(TDBox[0], 0);
TDBox[1] = TextDrawCreate(419.777770, 157.304443, "usebox");
TextDrawLetterSize(TDBox[1], 0.000000, 11.187531);
TextDrawTextSize(TDBox[1], 224.222229, 0.000000);
TextDrawAlignment(TDBox[1], 1);
TextDrawColor(TDBox[1], 0);
TextDrawUseBox(TDBox[1], true);
TextDrawBoxColor(TDBox[1], -16776961);
TextDrawSetShadow(TDBox[1], 0);
TextDrawSetOutline(TDBox[1], 0);
TextDrawFont(TDBox[1], 0);
Dies ist aber nur eine Alternative.
So kommen wir ins Haupt(Main)Script, dort müssen wir jetzt das ganze einfügen am besten in OnGameModeInit Die 2 Globalen Textdraws und bei OnPlayerConnect den PlayerTextdraw.
Wenn ihr dies habt erstellt der Server schonmal die Textdraw's aber es passiert nix weil wir sie nicht zeigen?!
So weil die meisten ja es unter OnPlayerConnect machen zeigen wir dort die Textdraws
TextDrawShowForPlayer(playerid,Textdraw0);
TextDrawShowForPlayer(playerid,Textdraw1);
PlayerTextDrawShow(playerid,Textdraw0[playerid]);
So nun zeigen wir ja die Textdraw's aber es wird nix anklickbar?
Genau weil wir zuerst noch dem Script/Server sagen müssen das jetzt ein Textdraw anklickbar sein soll. Das geht mit:
Beispiel aus der Wiki:
Der erste Parameter ist die playerid also der Player der zweite ist ein Farbcode denn man beliebig ändern kann, dies ist der Hover d.h wenn ihr über den Textdraw mit der Maus fährt dann wird er in diesem fall glaub ich grün, doch wenn man ein Blauen farbcode dort einfügt wird der Text blau beim Hovern.
SelectTextDraw(playerid, 0x00FF00FF);
3.Funktion ausführen
So wir haben alle Textdraw's haben den "Login oder Register" Textdraw Klickbar gemacht, aber wenn wir jetzt drauf klicken passiert nix? Nur die Textdraws verschwinden?
Warum? Weil wir jetzt unter den public/callback
public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
Warum PlayerTextDraw? Weil der Textdraw ein PlayerText ist.
4. Dialog zeigen beim Click
So fangen wir an das ähnelt ein bisschen den Dialogen an.
public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
if(playertextid==Textdraw0[playerid])// Also wenn playertextid TextDraw0 ist dann ....
{
//Hier wird dann der Dialog zum Register und Login gezeigt ich mach das jetzt auf dini...
new Datei[64];
format(Datei,sizeof(Datei),"/Acc/%s.txt",SpielerName(playerid));
if(dini_Exists(Datei))
{
ShowPlayerDialog(playerid,DIA_LOG,DIALOG_STYLE_PASSWORD,"Login","Insert you own Password to login","Login","Cancel");
}
else
{
ShowPlayerDialog(playerid,DIA_REG,DIALOG_STYLE_PASSWORD,"Register","Insert a Password to Register","Register","Cancel");
}
return 1;
}
return 1;
}
Das wars von mir Danke fürs durchlesen
mfg reoarni