Für mich war ganz klar das ich eine Lösung möchte bei der ich NICHT zwischen Langbeschreibung und Kurzbeschreibung hin und herswitche. Ich möchte nämlich meine Umgebung "sehen" und standardmässig bin ich daher im Langmodus unterwegs.
*gruebel gruebel gruebel*
Nun gibt mir ja GMCP eh alle Infos die ich brauche und es muss ja auch möglich sein dem Client zu sagen was er damit anfangen soll.
(Davon abgesehen: ich lasse mir nun selbst mit:
cecho("<royal_blue>"..gmcp.MG.room.info.short..""..string.sub(gmcp.MG.room.info.id, 1, 1))
auch im Langmodus anzeigen wie ein Raum heisst. Nun könntest du dich über die Zahl am Ende wundern...dazu komme ich später
)
Zum Mapper:
Irgendwie muss ich die GMCP Daten verfügbar machen habe ich leider festgestellt weil automatisch liest Mudlet das nicht raus. Es erhält automatisch nur die GMCP Daten "gmcp.Char" und muss dann quasi die MG Daten verfügbar machen... bei den Skripten habe ich drauf geachtet das Skriptname gleich der entsprechenden Skriptfuntion ist...
Dazu also per Skript:
Skriptname: initGMCP_Anne
Ereignisbehandler: gmcp.Char
function initGMCP_Anne()
sendGMCP( [[Core.Hello { "client": "Mudlet", "version": "4.6.2." }]])
sendGMCP( [[Core.Supports.Debug 20 ]])
sendGMCP( [[Core.Supports.Set [ "MG.char 1", "MG.room 1", "MG.team 1", "comm.channel 1", ] ]])
sendGMCP( [[Core.Debug 1 ]])
end
Dein Beispiel als Veranschaulichung:
> lua gmcp.MG.room.info
{
short = "In einem Herrenhaus.",
id = "2f58c1bdff36dbf9c120e6703697256a",
domain = "Dschungel",
exits = {
"osten",
"norden"
}
}
Ich habe mir nun einen Trigger und ein Skript gebastelt welche die Ausgaenge der GMCP Daten in den Generic Mapper (GM) schicken.
Dann habe ich mir die Trigger des GM angeschaut für die englische/ chinesische Sprache und eine dazu passende Triggergruppe für das Deutsche erstellt.
also:
Deutsch triggergroup
Deutsch exits -> triggert Ausgangszeilen (muss wahrscheinlich noch vervollstaendigt werden)
(Es gibt .+ sichtbare Ausgaenge:) .+
(Es gibt keinen sichtbaren Ausgang.)
(Es gibt einen sichtbaren Ausgang:) .+
Es gibt zwei sichtbare Ausgaenge: .+ (und) .+
macht folgendes:
raiseEvent("onNewRoom", table.concat(gmcp.MG.room.info.exits, ", "))
map.prompt.exits = ""..gmcp.MG.room.info.exits
map.prompt.room = ""..gmcp.MG.room.info.short..""..string.sub(gmcp.MG.room.info.id, 1, 1)
Da ich mir nicht sicher bin ob das reicht / "schön" ist habe ich ausserdem ein Skriptevent erstellt bzw. damit rumgespielt.
Skriptname: Raumerkennung
Ereignisbehandler: gmcp.MG.room
function Raumerkennung()
raiseEvent("onNewRoom", table.concat(gmcp.MG.room.info.exits, ", "))
map.prompt.exits = ""..gmcp.MG.room.info.exits
end
Nun braucht der Mapper noch einen Raumnamen:
Dazu
Skriptname: A_Raumname
Ereignisbehandler: gmcp.MG.room
function A_Raumname()
cecho("<royal_blue>"..gmcp.MG.room.info.short..""..string.sub(gmcp.MG.room.info.id, 1, 1))
map.prompt.room = ""..gmcp.MG.room.info.short..""..string.sub(gmcp.MG.room.info.id, 1, 1)
end
Nun muss man dem Mapper laut der englischen Triggergroup ja noch sagen wann eine Bewegung gescheitert ist, es dunkel ist etc. Dazu die vorhandenen englischen trigger einfach anpassen-->
Beispiel falsche Richtung: Wie bitte? --> raiseEvent("onMoveFail")
Beispiel Vision fail: Finsternis. --> raiseEvent("onVisionFail")
Da es hier im Mud je nach Region unterschiedliche Meldungen kann ist hier staendig nachzubessern. Für das Event raiseEvent("onForcedMove") habe ich noch nix gemacht...
Da manche der Raumnamen gleich lauten und für den mapper damit auch gleich sind wollte ich einen möglichst einzigartigen Namen haben der aber trotzdem gut zu merken ist. Daher habe ich den Anfang der Raum-ID drangehängt. Habe festgestellt das hier noch mehr Nummern/Zahlen dranzuhaengen eindeutiger wäre dann wird es aber irgendwie unschön. Einen Weg dem Mapper die Raum-ID einzufloessen habe ich leider noch nicht gefunden :/
Da der Mapper die Funktion hat einem den Weg zu einem Bekannten Ort zu "sagen" sollte der name so einfach wie möglich für mich sein.
map path Auf einer Wiese.3
--> (mapper): Path to Auf einer Wiese.3: nw;w;w;
Hier siehst du mein Problem - um einen Weg angezeigt zu bekommen muss man nicht nur den Namen exakt wissen sondern dann auch die Nummer dazu. Etwas besseres ist mir aber bisher nicht eingefallen.
Damit bei der Ausgabe ; statt , steht habe ich im Originalskript den entsprechenden Eintrag verändert. Sowieso habe ich da einiges verändert, was ich grade nicht so ganz replizieren kann, unter anderem habe ich die Stelle wie der Mapper normalerweise den Raumnamen bildet erstmal mit -- als Text gesetzt und damit deaktiviert ....
Wichtig ist natuerlich das man die Richtungen für den Mapper per map translate uebersetzt hat, dürfte aber klar sein.