Beitrag von JustMe.77 ()
Dieser Beitrag wurde vom Autor gelöscht ().
Bist du, wenn du ESC drückst, in dem Modus, dass du die Maus siehst (SelectTextDraw-Modus)?
Wenn nicht, dann geht das nicht, denn OnPlayerClickTextDraw wird nur aufgerufen, wenn SelectTextDraw verwendet wurde.
Mit ESC nicht.
Da musst du eine Taste nehmen, die von OnPlayerKeyStateChange erkannt werden kann.
http://wiki.sa-mp.com/wiki/OnPlayerKeyStateChange
[wiki]OnPlayerKeyStateChange[/wiki]
Ist es dennoch Möglich den Mauszeiger direkt einzublenden sobald die Textdraws angezeigt werden
Zeige die Textdraws an, und nutze direkt danach SelectTextDraw, dann sollten sie auch nicht verschwinden.
Dann muss die if-Abfrage aus dem Befehl zu OnDialogResponse von dem Dialog.
Das macht das + 100000 hinter dem random.
Zahl von 0 bis 300000 => +100000 => Zahl zwischen 100000 und 400000.
Du musst den string für TextDrawSetString erst mit format formatieren, wie zuvor mit str. Das muss dann bei TextDrawSetString rein.
So:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_GAME)
{
if(response)
{
if(strval(inputtext) < 2500 || strval(inputtext) > 10000)
{
ShowPlayerDialog(playerid,DIALOG_GAME, DIALOG_STYLE_INPUT, "Set a bet", "Type in for how much money you want to buy a ticket.", "Buy", "Cancel");
return SendClientMessage(playerid,0x00FF00FF, "{FF1717}ERROR:{FFFFFF} You must set a bet from 2.500$ to 10.000$ at least.");
}
new str[145];
format(str, sizeof(str), "You have bought a ticket for %i $!", strval(inputtext));
SendClientMessage(playerid,0x00FF00FF, str);
new zahl = random(300001) + 100000;
format(str, sizeof(str), "Zahl: %d", zahl);
if(random(2) == 0)
{
Showing[playerid] = 1;
TextDrawShowForPlayer(playerid, Textdraw0);
TextDrawShowForPlayer(playerid, Textdraw1);
TextDrawShowForPlayer(playerid, Textdraw2);
TextDrawShowForPlayer(playerid, Textdraw3);
TextDrawShowForPlayer(playerid, Textdraw4);
TextDrawShowForPlayer(playerid, Textdraw6);
TextDrawSetString(Textdraw2, str);
SelectTextDraw(playerid, 0xFFFF0000);
}
else
{
Showing[playerid] = 1;
TextDrawShowForPlayer(playerid, Textdraw0);
TextDrawShowForPlayer(playerid, Textdraw1);
TextDrawShowForPlayer(playerid, Textdraw2);
TextDrawShowForPlayer(playerid, Textdraw3);
TextDrawShowForPlayer(playerid, Textdraw5);
TextDrawShowForPlayer(playerid, Textdraw6);
TextDrawSetString(Textdraw2, str);
SelectTextDraw(playerid, 0xFFFF0000);
}
}
}
return 0;
}
Nein, das gibt es nicht.
Da musst du eine Spielervariable auf 1 setzen, wenn du es anzeigst, dort auch zuvor abfragen, ob diese 1 ist, wenn ja abbrechen, und dort wo du das Textdraw entfernst die Spielervariable wieder auf 0 setzen.
Prüfung ob 1, wenn ja abbrechen
Auf 1 setzen
...
Auf 0 setzen