Also wäre es ohne weiteres nicht möglich einfach callbacks mit den dazugehörigen funktionen umzuschreiben um nen parameter zu ärgenzen?
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
-
@BlackAce:
Ich möchte einfach dialoge weiter strukturieren um nicht unendliche dialogids zu nutzen.
So hatte ich mir das vorgestellt.
ShowPlayerDialog(playerid,DIALOG_BAUM,DIALOG_STYLE_MSGBOX,"Baum","Testdialog 1","Weiter","Abbrechen",1);
ShowPlayerDialog(playerid,DIALOG_BAUM,DIALOG_STYLE_MSGBOX,"Baum","Testdialog 2","Weiter","Abbrechen",2);
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[],select)
{
switch(dialogid)
{
case DIALOG_BAUM:
{
if(response)
{
switch(select)
{
case 1:return SendClientMessage(playerid,-1,"Testdialog 1");
case 2:return SendClientMessage(playerid,-1,"Testdialog 2");
}
}
}
}
return 1;
} -
Slash™:
Dann nutz nen Nativ hook, da packst du einfach SetPVar rein
dann gehst du zum Callback und hookst das und machst GetPVar.Dann verweist du zurück auf das Callback mit dem neuen Parameter und schon kannst du das überall nutzen

[ SCRIPTING ] Includes richtig erstellen | Hooking ganz einfach
-
Okay dann hab ich schonmal nen gedanken wie ichs angehe.
Aber vorher noch ne Frage, eine Include ist ja teil des Gamemodes, also kann ich auch direkt im Gamemode hooken? -
also kann ich auch direkt im Gamemode hooken?
Natürlich, das würde ich aber aufgrund der Übersichtlichkeit lassen -
Okay dann hab ich schonmal nen gedanken wie ichs angehe.
Aber vorher noch ne Frage, eine Include ist ja teil des Gamemodes, also kann ich auch direkt im Gamemode hooken?Du musst das native hooken(findest du oben in meinem Beispiel) und das Callback(findest du in jeder Include von mir),
-
Das ist mir klar, ist ja nur zum testen

Hab es jetzt mal soweit wie ichs verstanden habe, kommt aber immer noch das die parameter nicht korrekt sind.Spoiler anzeigen
forward _OnDialogResponse(playerid, dialogid, response, listitem, inputtext[],selects);
#if defined _ALS_OnDialogResponse
#undef OnDialogResponse
#else
#define _ALS_OnDialogResponse
#endif
#define OnDialogResponse _OnDialogResponseSpoiler anzeigen native __ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[],select);
stock _ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[],select)
{
__ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[],select);
return 1;
}
#if defined _ALS_ShowPlayerDialog
#undef ShowPlayerDialog
#else
#define _ALS_ShowPlayerDialog
#endif
#define ShowPlayerDialog _ShowPlayerDialog
-
kommt aber immer noch das die parameter nicht korrekt sind.
So ist es besser:Spoiler anzeigen forward Hooked_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[],select);
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
return CallLocalFunction("Hooked_OnDialogResponse","ddddsd",playerid, dialogid, response, listitem,inputtext,0); //0=select
}
#if defined _ALS_OnDialogResponse
#undef OnPlayerConnect
#else
#define _ALS_OnDialogResponse
#endif
#define OnDialogResponse Hooked_OnDialogResponseSpoiler anzeigen native Hooked__ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[])=ShowPlayerDialog;Spoiler anzeigen stock Hooked_ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[]) {
return CallLocalFunction("Hooked__ShowPlayerDialog","dddssss",playerid,dialogid,style,caption,info,button1,button2);
}
#if defined _ALS_ShowPlayerDialog
#undef ShowPlayerDialog
#else
#define _ALS_ShowPlayerDialog
#endif
#define ShowPlayerDialog Hooked_ShowPlayerDialogmfg.

-
-
Wäre es möglich RemoveBuildingForPlayer in einer Include zu schreiben?
Hab da einiges an Code, will es aber nicht in meinen Hauptgamemode tun. -
Wäre es möglich RemoveBuildingForPlayer in einer Include zu schreiben?
Hab da einiges an Code, will es aber nicht in meinen Hauptgamemode tun.
Stichwort: Filterscript -
Wäre es möglich RemoveBuildingForPlayer in einer Include zu schreiben?
Hab da einiges an Code, will es aber nicht in meinen Hauptgamemode tun.
Natürlich
-
Inkompetent: Ach, echt? Ich weiß auch wie das geht, ich habe gefragt ob es möglich wäre per Include.
Kaliber: Wie müsste sowas aussehen? Hab mich nie damit beschäftigt, so wirklich.
-
Schreib einfach ne Funktion in ne include.
Die Funktion führst dann dort aus wo du sie haben möchtest. fertig
-
Hab es, danke

-
Ich wenn du es schon gelöst hast, vielleicht hilft es ja auch anderen ;D
Wie müsste sowas aussehen? Hab mich nie damit beschäftigt, so wirklich.
Also im Prinzip gibt es 2 Möglichkeiten.1. Hook eine Funktion (bspw. OnPlayerConnect)
2. Erstell einfach eine Funktion die du einfach aufrufen kannst.mMn ist die 2. Möglichkeit wesentlich besser, einfach darum, weil OnPlayerConnect gerne Probleme bereitet, wenn es um Übermittlung von Daten in einem langen Zeitraum geht.
Zu dem kann man die Funktion dann aufrufen wenn man sie auch wirklich braucht, schont also auch den PC des Users wenn es um die Verarbeitung der ankommenden Daten geht.Allgemein sollte man Dinge nur dann erstellen wenn sie benötigt werden (Streamerprinzip)
-
Warum entdekce ich keinen fehler trotzdem errors?:
D:\Users\Admin\Desktop\gg.pwn(14536) : error 029: invalid expression, assumed zero
D:\Users\Admin\Desktop\gg.pwn(14536) : warning 215: expression has no effect
D:\Users\Admin\Desktop\gg.pwn(14536) : warning 215: expression has no effect
D:\Users\Admin\Desktop\gg.pwn(14536) : warning 215: expression has no effect
D:\Users\Admin\Desktop\gg.pwn(14536) : warning 215: expression has no effect
D:\Users\Admin\Desktop\gg.pwn(14536) : warning 215: expression has no effect
D:\Users\Admin\Desktop\gg.pwn(14536) : error 001: expected token: ";", but found ")"
D:\Users\Admin\Desktop\gg.pwn(14536) : error 029: invalid expression, assumed zero
D:\Users\Admin\Desktop\gg.pwn(14536) : fatal error 107: too many error messages on one lineZeile:
if(PlayerInfo[i][pLevel] == 1 && PlayerInfo[i][pRespekt] == 4)
{
SendClientMessage(i, COLOR_LIGHTBLUE, "Info).");
ShowPlayerDialog(i, DIALOG_gg, DIALOG_STYLE_MSGBOX, "Info", "Testn" ,"Annehmen", "Abbrechen");
return 1;
}#define DIALOG_gg
if(dialogid == DIALOG_gg)
{
if(response == 0)
{
SendClientMessages(playerid, COLOR_LIGHTBLUE, "wf.");
}
if(response == 1)
{
SendClientMessages(playerid, COLOR_LIGHTBLUE, "few.");
}
} Danke im vorraus -
Du musst Dialogen auch ID´s geben zb.#define Dialog_gg 5
-
#define DIALOG_gg
Du musst dem Dialog auch einer Zahl zuweisen.
Wenn du das nicht machen möchtest, kannst du das auch ganze einfach so machen:
enum
{
DIALOG_gg
};
Bei weiteren musst du den vorherigen immer mit einem Komma von einander trennen, der letzte braucht allerdings kein Komma.
