Beitrag von JustMe.77 ()
Dieser Beitrag wurde vom Autor gelöscht ().
if(inGame[playerid] != true)return SendClientMessage(playerid,0x00FF00FF, "{FF1717}ERROR: Close the Textdraws first.");
Zu
if(inGame[playerid] == true)return SendClientMessage(playerid,0x00FF00FF, "{FF1717}ERROR: Close the Textdraws first.");
inGame[playerid] = true;
Füge das über die ShowPlayerDialog Zeile im Befehl ein.
Und es dann dort auf false setzen, wo du den Befehl wieder erlauben willst.
Nach der IsPlayerInRangeOfPoint Zeile muss eine geschweifte Klammer auf gehen, und nach der ShowPlayerDialog Zeile muss eine geschweifte Klammer zu gehen.
Dort wo du die Textdraws entfernst.
Das musst du bei OnDialogResponse für den Dialog einfügen. Unter die Abfrage, ob die dialogid der entsprechende Dialog ist.
Es muss in die Klammer, also eine Zeile drunter.
Vorhin hast du gesagt, es soll entfernt werden, wenn du das Textdraw entfernst also geklickt hast.
Dann muss diese Zeile aber bei OnPlayerClickTextDraw hin, und nicht bei OnDialogResponse.
Ich frag mich warum du dich als Ersteller so dumm anstellst, auf mich wirkt das wie fröhliges Rätselraten bis du jemand gefunden hast der das für dich macht.
Wenn du bei deinem Befehl buyticket abfrägst ob der Spieler gerade im Spiel ist
und du direkt beim aufrufen des Dialoges DIALOG_GAME, inGame[playerid] wieder auf 0 zurück setzst kannst du logischer weiße den
Befehl direkt wieder ausführen egal , was danach aufgerufen und ausgeführt wird, sofern das nicht wieder auf true gesetzt wird.
Da du möchtest das der Spieler den Befehl erst ausführen kann, wenn er das Textdraw angeklickt hat solltest du es auch logischerweise
auch dort wieder auf den Ausgangswert false zurücksetzen.
Zusätzlich hast du bei deinem Befehl eine Klammer vergessen " { " nach der Abfrage ob sich der Spieler an den jeweiligen Orten befindet
Mag sein das du am Anfang bist, aber da du dich schon seit Februar mit Problemen quälst was bis jetzt 9 Monate sind kann ich doch wenigsten mal vorraussetzen, dass du wenigstens etwas an Verständis
von Pawn erlernt hast und wenigstens bissle weisst was du machst.
Ebenso setzte ich nur ein bissle logisches Denken vorraus, was den Ablauf vom Code angeht schließlich werden die Anweisungen linear abgearbeitet sprich "step by step" daher sollte man schon wissen
wenn man auf den Code schaut den man selbst geschrieben hat, wann was ausgeführt wird. Schließlich popelst du auch nicht in der Nase, wenn es dich am Arm juckt, sondern kratzst dich am Arm um eine kleine Metapher auf den Sachverhalt den ich anpranger zu beziehen.
Ich glaube ein Großteil deiner Fehler würdest du selbst finden, wenn du dir etwas zeitlässt und deinen Code durchschaust und das ganze step by step durchgehst.
Bezogen noch auf meine Beiträge ich hab damals im August 2011 angefangen mich mit dem skripten wirklich auseinander zu setzen und wenn du meine ganzen Probleme von damals anschaust wirst du sehen
das mir lediglich Erklärungen gereicht haben oder kleine Hilfestellungen.
Um den Beitrag noch aufs Thema zu beziehen , ich hab dir oben in den Post darüber von mir exakt beschrieben wo Fehler bestehen und einen Lösungsansatz.
Button "Cancel" klickt.
Ach das meinst du!
Dann so, bei OnDialogResponse:
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), "Ticketnumber: %d", zahl);
if(random(2) == 0)
{
Showing[playerid] = 1;
PlayerPlaySound(playerid,4201, 0.0, 0.0, 0.0);
TextDrawShowForPlayer(playerid, Textdraw0);
TextDrawShowForPlayer(playerid, Textdraw1);
TextDrawShowForPlayer(playerid, Textdraw2);
TextDrawShowForPlayer(playerid, Textdraw3);
TextDrawShowForPlayer(playerid, Textdraw4); //Win Textdraw
TextDrawShowForPlayer(playerid, Textdraw6);
TextDrawSetString(Textdraw2, str);
SelectTextDraw(playerid, 0xFFFF0000);
}
else
{
Showing[playerid] = 1;
PlayerPlaySound(playerid,1147, 0.0, 0.0, 0.0);
TextDrawShowForPlayer(playerid, Textdraw0);
TextDrawShowForPlayer(playerid, Textdraw1);
TextDrawShowForPlayer(playerid, Textdraw2);
TextDrawShowForPlayer(playerid, Textdraw3);
TextDrawShowForPlayer(playerid, Textdraw5); //Loss Textdraw
TextDrawShowForPlayer(playerid, Textdraw6);
TextDrawSetString(Textdraw2, str);
SelectTextDraw(playerid, 0xFFFF0000);
}
}
else
{
//Cancel gedrückt
inGame[playerid] = false;
}
return 1;
}
return 0;
}
Ich frag mich warum du dich als Ersteller so dumm anstellst, auf mich wirkt das wie fröhliges Rätselraten bis du jemand gefunden hast der das für dich macht.
Ich glaube es geht los.
Es ist völlig egal wie "dumm" sich jemand anstellt, wenn er nach Hilfe fragt, dann kann ihm auch geholfen werden, ohne dass er so dumm angemacht wird. Es wird schließlich keiner dazu gezwungen zu helfen, wenn du also nicht helfen willst, weil die Fragen deiner Meinung nach dumm sind, dann lasse es einfach, anstatt ihn zu kritisieren, dass er fragt, sowas ist respektlos. Hier trifft man mit "Es gibt keine dummen Fragen, sondern nur dumme Antworten." genau ins Schwarze.
Dieses Forum ist ja schließlich dafür da um Fragen zu stellen. Einer lernt schneller, der andere langsamer. Deswegen sind seine Fragen noch lange nicht dumm. Für einige mögen die Fragen trivial sein, für andere eben nicht. Wenn ich eines überhaupt nicht leiden kann, dann Kritik an jemandem, der eine Frage stellt, und das gehört in dieses Forum absolut nicht. Wer nach Hilfe fragt, der bekommt sie auch anstandslos.