Hi,
ich habe für unsere Community gtarl.de ein kleine Eventfilterscript gemacht.
Bei mir, also local, funkioniert alles wunderbar, nur auf dem Server der Community, d.h. mit der GameMode des Server gibt es irgendwie Probleme mit den Dialogen.
Eigentlich sollte es so sein, das ich ein Pickup betrete, und sich dadurch ein InputDialog öffnet, auf dass dann noch ein InputDialog folgt. Letztendlich kommt noch ein MSGDialog, was eigentlich egal ist, da es schon vorher zum Bug kommt.
Nun, auf dem RL-Server öffnet sich, durch betreten das erste Dialog. Dort geb ich jetzt meinen Text ein und drücke weiter. Eigentlich sollte sich dann das zweite Dialog öffnen, was es aber nicht tut. Man bleibt freezed usw.
Hier mal die etwas geänderten Codes (hab die Lösungen für das Event geändert)
#define Ende1 500 //hier hatte ich schon 1,2,3 aber ich dachte, dass es evnt. mit der Gamemode zusammenhängen könnte, die auch wahrscheinlich ihr dialoge auf 1,2,3 definiert haben.
#define Ende2 501
#define Ende3 502
if(pickupid == pende)
{
if(inside[playerid]==0)
{
ShowPlayerDialog(playerid, Ende1, DIALOG_STYLE_INPUT, "Der letzte Test","Addiere die fünf gefundenen Zahlen und gib das Ergebnis hier ein:","Bestätigen","Abbrechen");
TogglePlayerControllable(playerid,0);
inside[playerid]=1;
}
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == Ende1)
{
if(!response) {SendClientMessage(playerid, 0xC32D2EFF, "[Event] Abgebrochen"); TogglePlayerControllable(playerid,1); inside[playerid]=0; return 1;}
else
{
if(strval(inputtext) == 55)
{
ShowPlayerDialog(playerid, Ende2, DIALOG_STYLE_INPUT, "Das war richtig!","Gib nun das gefundene Wort ein, um die Schatzkammer zu öffnen.","Bestätigen", "Abbrechen");
}
else
{
new str[256];
format(str,sizeof(str),"Oh nein! Die Zahl ´%d´ ist nicht korrekt. Du wurdest wieder an den Anfang gebracht.",strval(inputtext));
SendClientMessage(playerid,0xFFF39DFF,str);
SetPlayerPos(playerid,45.644378, 1484.422485, 12.750000);
TogglePlayerControllable(playerid,1);
inside[playerid]=0;
}
}
}
if(dialogid == Ende2)
{
if(!response) {SendClientMessage(playerid, 0xC32D2EFF, "[Event] Abgebrochen"); TogglePlayerControllable(playerid,1);inside[playerid]=0; return 1;}
else
{
if(!strcmp("blutauge",inputtext))
{
ShowPlayerDialog(playerid, Ende3, DIALOG_STYLE_MSGBOX, "Geschafft!","Nach Klicken von ´Öffnen´ wird sich das Tor vor dir öffnen. Aber beeile dich, es schließt sich nach 7 Sekunden wieder.","Öffnen", "Abbrechen");
}
else
{
new str[256];
format(str,sizeof(str),"Oh nein! Das Wort ´%s´ ist nicht korrekt. Du wurdest wieder an den Anfang gebracht.",inputtext);
SendClientMessage(playerid,0xFFF39DFF,str);
SetPlayerPos(playerid,45.644378, 1484.422485, 12.750000);
TogglePlayerControllable(playerid,1);
inside[playerid]=0;
}
}
}
if(dialogid == Ende3)
{
if(!response) {SendClientMessage(playerid, 0xC32D2EFF, "[Event] Abgebrochen"); TogglePlayerControllable(playerid,1);inside[playerid]=0; return 1;}
else
{
MoveObject(Tor2,1256.837280, -2028.018188, 56.858845,1.5);
TogglePlayerControllable(playerid,1);
inside[playerid]=0;
Torpos2=1;
timer1 = SetTimer("Torfunktion",7000,1);
new Tag, Monat, Jahr, Minute, Stunde, Sekunde, Name[MAX_PLAYER_NAME];
GetPlayerName(playerid,Name,sizeof(Name));
getdate(Jahr, Monat, Tag);
gettime(Stunde,Minute,Sekunde);
printf("[Event] %s hat das Labyrinth Event am %02d.%02d.%d um %02d:%02d:%02d geschafft.",Name,Tag,Monat,Jahr,Stunde, Minute, Sekunde);
}
}
return 1;
}
wie schon gesagt, nachdem das Dialog vom Pickup gezeigt wurde, schließen sich die Dialoge und man bleibt freezed stehen.
Ich hoffe ihr wisst mehr als ich und könnt mir helfen xD^^
Großes Danke im vorraus
Martin08
EDIT: Ich wäre echt dankbar, wenn jemand ne Idee hätte. Ansonsten müsste ich das wieder ausbauen, was ich aber schade ums Event finden würde.