Texteingabe während des Spiels ausführen
» Siedler Map Source Forum » Siedler DEdK Script Forum » Texteingabe während des Spiels ausführen
Seiten: 1
Peter-FS
|
#1 17.05.2015 15:25 Beiträge: 1086 |
Texteingabe während des Spiels ausführen
Hat jemand eine Idee, wie ich eine Texteingabe während des Spiels ausführen kann. Dadurch könnte man im Testmodus Korrekturen vornehmen (Entity vergessen oder ähnliches), ohne die Map neu zu starten. Es ist einfach ärgerlich, wenn man nach z.B. 4 Stunden Test feststellt man hat eine Kleinigkeit vergessen oder einen Schreibfehler.
Hier ein einfaches Beispiel
Über ChatInput "AddGold(1000)" eingeben
und die Eingabe einer Function übergeben.
function(_input) --hier ausführen _input()--??? end
Ich bin sicher, irgend jemand hat eine Lösung!
____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!
Zedeg
|
#2 17.05.2015 15:54 Beiträge: 428 |
S5Hook.Eval(string luaCode) Parses luaCode and returns a function, can be used to build a internal debugger
- ex: myFunc = S5Hook.Eval("Message('Hello world')"
myFunc()
Dürfte wohl passen.
____________________
Journalisten erkundigen sich bei Wissenschaftlern meist nicht nach Grundlagen, sondern eher nach Ergebnissen und Folgerungen. Das erklärt womöglich auch, warum sich Forschungsberichte in den Medien so häufig als feststehende Erkenntnisse lesen, nicht aber als Ideen, Entdeckungen oder Indizien, um die es sich genau genommen in den meisten Fällen handelt. -Axel Bojowski
Fire_Bird
|
#3 17.05.2015 16:13 Beiträge: 719 |
Zitat von Peter-FS:
function(_input) --hier ausführen _input()--??? end
Ohne Argumente kannst du es so machen:
function(_input) _G[_input]() end
Mit Argumenten auch, du musst halt vorher den Eingabestring nach Klammern durchsuchen und den Parameter herausextrahieren.
MadShadow
|
#4 17.05.2015 17:12 Beiträge: 372 |
Das kann man ja alles machen, aber mittlerweile gibt es doch den Lua-Debugger. Wenn du dein Spiel damit startest, kannst du dir alle geladenen Skripte ansehen und über eine Commandozeile bequem Befehle eingeben.
Peter-FS
|
#5 17.05.2015 17:46 Beiträge: 1086 |
Danke,
werde den Lua-Debugger mal testen.
____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!
Peter-FS
|
#6 17.05.2015 18:38 Beiträge: 1086 |
Lua Debugger
Was mache ich falsch?
Habe den LuaDebugger gestartet und in der Commandozeilte AddGold(10000) eingegeben.
Ergebnis
> AddGold(10000)
Error : Game is busy!
____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!
Kantelo
|
#7 18.05.2015 01:44 Beiträge: 357 |
Hast du die neuste Version des Debuggers?
Ich hatte nämlich bei Version 5.2 dasselbe Problem, das ist aber mittlerweile mit Version 5.3 bei mir gelöst.
Peter-FS
|
#8 18.05.2015 06:05 Beiträge: 1086 |
Ne, hab mir Version 5.1 runter geladen.
____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!
Kantelo
|
#9 18.05.2015 09:21 Beiträge: 357 |
Dann versuch es mal mit Version 5.2, vielleicht klappt es ja damit. http://b0bby.tk/debugger.html
(Ich habe mich auch geirrt: bei 5.1 hat es nicht funktioniert, ich benutze 5.2)
Play4FuN
|
#10 20.05.2015 11:27 Beiträge: 704 |
Zitat von Fire_Bird:
Ohne Argumente kannst du es so machen:
function(_input)
_G[_input]()
end
Mit Argumenten auch, du musst halt vorher den Eingabestring nach Klammern durchsuchen und den Parameter herausextrahieren.
Habe ich probiert und funzt. auch. Zumindest mit meinem Skript kann ich zwar sowas wie "AddGold(100)" eingeben und der Spieler erhält den Betrag, jedoch klappt z.B. "StartRain(60)" nicht Es müsste aber doch sicher im _G-Table sein, es kommt auch keine Fehlermeldung - das Spiel ignoriert den Befehl einfach.
Hier mein Code:
Input.KeyBindDown(Keys.Enter, "OpenChat()", 2) function OpenChat() XGUIEng.ShowWidget(XGUIEng.GetWidgetID("ChatInput"),1) XGUIEng.SetWidgetPosition(XGUIEng.GetWidgetID("ChatInput"),400,100) GameCallback_GUI_ChatStringInputDone = function (_M) s = string.find(_M, "%(") e = string.find(_M, "%)") par = string.sub(_M, s + 1 , e - 1) command = string.sub(_M, 1, s - 1) Message("(1) Execute command: "..command.." with parameter: "..par) _G[command](par) Message("(2) Execute command: "..command.." with parameter: "..par) end end
____________________
LG Play4FuN
Siedler DEdK Mapping + Scripting Tutorials
Peter-FS
|
#11 21.05.2015 07:23 Beiträge: 1086 |
Hast du "StartRain(60)" schon mal mit dem Lua-Debugger probiert?
____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!
Play4FuN
|
#12 21.05.2015 19:46 Beiträge: 704 |
Ja, der Befehl selbst funzt ansonsten ... :/
Mit StartWinter passiert das selbe.
____________________
LG Play4FuN
Siedler DEdK Mapping + Scripting Tutorials
Seiten: 1