Dialog wie "Live" Tippen
- MGPK-1323
- Geschlossen
- Erledigt
-
-
Ich verstehe nicht genau was du meinst
Erläuterte mal genauer -
eine Funktion hatte womit der Dialog aussah als wenn man gerade "Live" Tippen würde
Du meinst wahrscheinlich das hier?
Externer Inhalt www.youtube.comInhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
([SAMMELTHREAD] Kleine Scripting Fragen)Code dazu:
//©Jeffry - 01.12.2016
#include <a_samp>
#pragma dynamic 10000
new pTypeTimer[MAX_PLAYERS] = {-1,...};public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/dialog")) TypePlayerDialog(playerid, 5142, DIALOG_STYLE_MSGBOX, "Test", "Diese Nachricht wird sich nach und nach aufbauen.\nAuch der Zeilenumbruch funktioniert.\n\nEnde =)", "Ok", "");
return 0;
}public OnPlayerDisconnect(playerid, reason)
{
if(pTypeTimer[playerid] != -1) KillTimer(pTypeTimer[playerid]);
pTypeTimer[playerid] = -1;
return 1;
}stock TypePlayerDialog(playerid, dialogid, style, caption[], string[], button1[], button2[])
{
if(!IsPlayerConnected(playerid) || IsPlayerNPC(playerid)) return 0;
if(pTypeTimer[playerid] != -1) KillTimer(pTypeTimer[playerid]);
new str[3];
format(str, sizeof(str), "%c", string[0]);
ShowPlayerDialog(playerid, dialogid, style, caption, str, button1, button2);
if(string[1] == '\0' || !strlen(string[1])) return 0;
SetPVarInt(playerid, "t_dialogid", dialogid);
SetPVarInt(playerid, "t_style", style);
SetPVarString(playerid, "t_caption", caption);
SetPVarString(playerid, "t_string", str);
SetPVarString(playerid, "t_rest", string[1]);
SetPVarString(playerid, "t_button1", button1);
SetPVarString(playerid, "t_button2", button2);
pTypeTimer[playerid] = SetTimerEx("DialogTypeTimer", 120, 1, "d", playerid);
return 1;
}forward DialogTypeTimer(playerid);
public DialogTypeTimer(playerid)
{
new dialogid, style, caption[64], string[1024], rest[1024], button1[32], button2[32];
dialogid = GetPVarInt(playerid, "t_dialogid");
style = GetPVarInt(playerid, "t_style");
GetPVarString(playerid, "t_caption", caption, sizeof(caption));
GetPVarString(playerid, "t_string", string, sizeof(string));
GetPVarString(playerid, "t_rest", rest, sizeof(rest));
GetPVarString(playerid, "t_button1", button1, sizeof(button1));
GetPVarString(playerid, "t_button2", button2, sizeof(button2));
new str[1024];
//Ein Buchstabe hinzufügen
format(str, sizeof(str), "%s%c", string, rest[0]);
ShowPlayerDialog(playerid, dialogid, style, caption, str, button1, button2);
SetPVarString(playerid, "t_string", str);
//Den hinzugefügten Buchstabe aus dem Rest entfernen
SetPVarString(playerid, "t_rest", rest[1]);
if(rest[1] == '\0' || !strlen(rest[1]))
{
if(pTypeTimer[playerid] != -1) KillTimer(pTypeTimer[playerid]);
pTypeTimer[playerid] = -1;
}
ReshowTypeDialog(playerid);
return 1;
}stock ReshowTypeDialog(playerid)
{
new dialogid, style, caption[64], string[1024], button1[32], button2[32];
dialogid = GetPVarInt(playerid, "t_dialogid");
style = GetPVarInt(playerid, "t_style");
GetPVarString(playerid, "t_caption", caption, sizeof(caption));
GetPVarString(playerid, "t_string", string, sizeof(string));
GetPVarString(playerid, "t_button1", button1, sizeof(button1));
GetPVarString(playerid, "t_button2", button2, sizeof(button2));
ShowPlayerDialog(playerid, dialogid, style, caption, string, button1, button2);
return 1;
}
//©Jeffry - 01.12.2016In OnDialogResponse kann so abgefragt werden, ob der Dialog vollständig da ist:
if(pTypeTimer[playerid] != -1)
{
//Dialog nicht vollständig, warte ab und zeige aktuellen Stand an
ReshowTypeDialog(playerid);
return 1;
} -
@Jeffry
Genau die Funktion habe ich Gesucht, ich habe leider ein Problem damit.
Und zwar musste ich die strings die du "str" genant hast zu "strr" nennen, kein Problem soweit.
Aber jetzt schau dir mal bitte das Bild an, habe alles 1zu1 von dir Übernommen.sa-mp-002.png
Das bleibt leider die ganze Zeit so, ändert sich nichts dran.MfG.
-
Hast du im Compiler irgendwelche Meldungen?
Zum Beispiel Warnungen oder Meldungen bezüglich Header Size etc.? -
Hast du im Compiler irgendwelche Meldungen?
Zum Beispiel Warnungen oder Meldungen bezüglich Header Size etc.?Das ist es ja, gar nichts. weder ein Warning noch ein Error.
MfG.
-
-
Das ist es ja, gar nichts. weder ein Warning noch ein Error.
Wird der Timer DialogTypeTimer aufgerufen? Setze dort mal einen Print und schaue ob der ausgegeben wird.
könnte man das ganze auch als SendClientMessage verpacken?
Nein, das geht leider nicht.
-
Immerhin ist es mit Textdraws auch möglich!
-
Wird der Timer DialogTypeTimer aufgerufen? Setze dort mal einen Print und schaue ob der ausgegeben wird.
Gesagt getan, Problem wohl Gefunden aber keine Lösung vorhanden.
Der Print wird leider nicht ausgeführt!
forward DialogTypeTimer(playerid);
public DialogTypeTimer(playerid)
{
new dialogid, style, caption[64], string[1024], rest[1024], button1[32], button2[32];
dialogid = GetPVarInt(playerid, "t_dialogid");
style = GetPVarInt(playerid, "t_style");
GetPVarString(playerid, "t_caption", caption, sizeof(caption));
GetPVarString(playerid, "t_string", string, sizeof(string));
GetPVarString(playerid, "t_rest", rest, sizeof(rest));
GetPVarString(playerid, "t_button1", button1, sizeof(button1));
GetPVarString(playerid, "t_button2", button2, sizeof(button2));
new strr[1024];
//Ein Buchstabe hinzufügen
format(strr, sizeof(strr), "%s%c", string, rest[0]);
ShowPlayerDialog(playerid, dialogid, style, caption, strr, button1, button2);
SetPVarString(playerid, "t_string", strr);
//Den hinzugefügten Buchstabe aus dem Rest entfernen
SetPVarString(playerid, "t_rest", rest[1]);
if(rest[1] == '\0' || !strlen(rest[1]))
{
if(pTypeTimer[playerid] != -1) KillTimer(pTypeTimer[playerid]);
pTypeTimer[playerid] = -1;
}
ReshowTypeDialog(playerid);
print("DialogTypeTimer");
return 1;
}MfG.
-
Setze den Print bitte mal als erstes in den Timer, nicht nach ganz unten.
Wenn er dort ausgeführt wird, setze ihn immer weiter runter, bis er nicht mehr ausgeführt wird. Markiere dann die Zeile, die als letztes noch korrekt ausgeführt wird. -
Getan, er Printet mir:
[17:45:44] DialogTypeTimer1
[17:45:44] DialogTypeTimer2
[17:45:44] DialogTypeTimer3
[17:45:44] DialogTypeTimer4
[17:45:44] DialogTypeTimer5
[17:45:44] DialogTypeTimer6
[17:45:44] DialogTypeTimer7
[17:45:44] DialogTypeTimer8
[17:45:44] DialogTypeTimer9
[17:45:44] DialogTypeTimer9
[17:45:44] DialogTypeTimer10
[17:45:44] DialogTypeTimer11
[17:45:44] DialogTypeTimer12
[17:45:44] DialogTypeTimer14
[17:45:44] DialogTypeTimer15forward DialogTypeTimer(playerid);
public DialogTypeTimer(playerid)
{
new dialogid, style, caption[64], string[1024], rest[1024], button1[32], button2[32];print("DialogTypeTimer1");
dialogid = GetPVarInt(playerid, "t_dialogid");print("DialogTypeTimer2");
style = GetPVarInt(playerid, "t_style");print("DialogTypeTimer3");
GetPVarString(playerid, "t_caption", caption, sizeof(caption));print("DialogTypeTimer4");
GetPVarString(playerid, "t_string", string, sizeof(string));print("DialogTypeTimer5");
GetPVarString(playerid, "t_rest", rest, sizeof(rest));print("DialogTypeTimer6");
GetPVarString(playerid, "t_button1", button1, sizeof(button1));print("DialogTypeTimer7");
GetPVarString(playerid, "t_button2", button2, sizeof(button2));print("DialogTypeTimer8");
new strr[1024];print("DialogTypeTimer9");
//Ein Buchstabe hinzufügen
format(strr, sizeof(strr), "%s%c", string, rest[0]);print("DialogTypeTimer9");
ShowPlayerDialog(playerid, dialogid, style, caption, strr, button1, button2);print("DialogTypeTimer10");
SetPVarString(playerid, "t_string", strr);print("DialogTypeTimer11");
//Den hinzugefügten Buchstabe aus dem Rest entfernen
SetPVarString(playerid, "t_rest", rest[1]);print("DialogTypeTimer12");
if(rest[1] == '\0' || !strlen(rest[1]))print("DialogTypeTimer13");
{
if(pTypeTimer[playerid] != -1) KillTimer(pTypeTimer[playerid]);print("DialogTypeTimer14");
pTypeTimer[playerid] = -1;print("DialogTypeTimer15");
}
ReshowTypeDialog(playerid);print("DialogTypeTimer16");
return 1;
} -
Das Problem liegt in "ReshowTypeDialog".
Mache dort bitte das Gleiche und poste es dann nochmal so. -
Das ist jetzt Lustig, habe es getan, aber es wird gar nichts Geprintet.
stock ReshowTypeDialog(playerid)
{
new dialogid, style, caption[64], string[1024], button1[32], button2[32]; print("ReshowTypeDialog1");
dialogid = GetPVarInt(playerid, "t_dialogid");print("ReshowTypeDialog2");
style = GetPVarInt(playerid, "t_style");print("ReshowTypeDialog3");
GetPVarString(playerid, "t_caption", caption, sizeof(caption));print("ReshowTypeDialog4");
GetPVarString(playerid, "t_string", string, sizeof(string));print("ReshowTypeDialog5");
GetPVarString(playerid, "t_button1", button1, sizeof(button1));print("ReshowTypeDialog6");
GetPVarString(playerid, "t_button2", button2, sizeof(button2));print("ReshowTypeDialog7");
ShowPlayerDialog(playerid, dialogid, style, caption, string, button1, button2);print("ReshowTypeDialog8");
return 1;
}MfG.
-
In deinem Compiler steh ganz sicher nichts drin?
Suche bitte mal nach #pragma dynamic in deinem Code.
Findest du da was? -
-
Auch keine Nachricht mit vielen Zahlen?
Füge bitte mal folgendes unter deine Includes ein:
#pragma dynamic 100000Klappt es dann, bzw. ändert sich etwas?
-
Habe es getan, ändert sich leider nichts.
Nunja, das hier ist der Text:
format(str, sizeof(str), ""#FARBE_WEISS"Vladimir: Hey, du bist dann wohl %s.\nMir wurde gesagt du bist nicht ganz Legal hier und ich soll dir Helfen?\n\
%s: Richtig, ich hoffe du kannst mir Helfen, ich habe hier leider\nnoch gar nichts erreichen können ohne Gültige Papiere!\n\
Vladimir: Mach dir kein Kopf, hier hast du gültige Papiere!\nWenn ich was brauche melde ich mich bei dir!\n\
Ok mein Freund, ich muss los, die Pflicht ruft!\nAm Ausgang kannst du dir ein Rad nehmen.",
sInfo[playerid][sName], sInfo[playerid][sName]);
TypePlayerDialog(playerid, DIALOG_TUTORIAL_GESPRACH, DIALOG_STYLE_MSGBOX, ""#SERVERNAME" - Gespräch mit Vladimir!", str, "Weiter", ""); -
Hmm, also das Problem ist, dass die Variablen nicht angelegt werden können, das ist ein Problem was hin und wieder vorkommt bei PAWN, einen wirklich Grund dafür gibt es aber nicht, denn bei mir klappt es ja.
Versuche es mal so:
new g_string[1024];
stock ReshowTypeDialog(playerid)
{
new dialogid, style, caption[64], button1[32], button2[32]; print("ReshowTypeDialog1");
dialogid = GetPVarInt(playerid, "t_dialogid");print("ReshowTypeDialog2");
style = GetPVarInt(playerid, "t_style");print("ReshowTypeDialog3");
GetPVarString(playerid, "t_caption", caption, sizeof(caption));print("ReshowTypeDialog4");
GetPVarString(playerid, "t_string", g_string, sizeof(g_string));print("ReshowTypeDialog5");
GetPVarString(playerid, "t_button1", button1, sizeof(button1));print("ReshowTypeDialog6");
GetPVarString(playerid, "t_button2", button2, sizeof(button2));print("ReshowTypeDialog7");
ShowPlayerDialog(playerid, dialogid, style, caption, g_string, button1, button2);print("ReshowTypeDialog8");
return 1;
} -
Ich habe dein Code genommen und das Problem besteht weiterhin, habe auch mal ohne Den Farbcode Probiert, dann schaut es so aus:
sa-mp-003.pngEs werden irgendwie immer nur die ersten beiden Buchstaben/Zeichen genommen.
MfG.