ich scheitere gerade daran, die für meinen kleinen Mod notwendigen Tasten im Hilfefenster anzeigen zu lassen. Die Suchfunktion habe ich genutzt, aber leider keine entsprechenden Beiträge gefunden.
function engineLoad:draw()
if g_currentMission.showHelpText and self.isClient then
g_currentMission:addHelpButtonText(g_i18n:getText("ENGINELOAD_INCREASE_TEXT"), InputBinding.ENGINELOAD_INCREASE);
g_currentMission:addHelpButtonText(g_i18n:getText("ENGINELOAD_DECREASE_TEXT"), InputBinding.ENGINELOAD_DECREASE);
g_currentMission:addExtraPrintText(string.format("rpmIncFactor: %f",self.rpmIncFactor));
end;
end;
In der Log tauchen dann diese beiden Zeilen immer wieder auf:
Error: LUA running function 'update'
D:/Code/Giants/lsim2013/build/finalbin/dataS/scripts/InputBinding.lua(47) : attempt to index field '?' (a nil value)
Der Rest der Log ist sauber, mein kleiner Mod ist der einzige im Mods-Ordner.
In den Optionen unter "Steuerung" werden die InputBindungs mit den richtigen Texten angezeigt, aber im Spiel kommt dann im Hilfefenster "missing i18n..."
function engineLoad:draw()
if self:getIsActive() then
g_currentMission:addHelpButtonText(g_i18n:getText("ENGINELOAD_INCREASE_TEXT"), InputBinding.getKeyNamesOfDigitalAction(InputBinding.ENGINELOAD_INCREASE));
g_currentMission:addHelpButtonText(g_i18n:getText("ENGINELOAD_DECREASE_TEXT"), InputBinding.getKeyNamesOfDigitalAction(InputBinding.ENGINELOAD_DECREASE));
g_currentMission:addExtraPrintText(string.format("rpmIncFactor: %f",self.rpmIncFactor));
end;
end;
Du willst ja den Namen der Taste anzeigen lassen, also "Taste G", "Taste M" oder was auch immer. Dies wird jetzt getan, getKeyNamesOfDigitalAction, damit bekommst du den Namen der Taste, nämlich der Taste die du angegeben hast, also InputBinding.ENGINELOAD_INCREASE
Error: LUA running function 'draw'
D:/Code/Giants/lsim2013/build/finalbin/dataS/scripts/InputBinding.lua(87) : attempt to index local 'actionData' (a nil value)
Error: LUA running function 'update'
D:/Code/Giants/lsim2013/build/finalbin/dataS/scripts/InputBinding.lua(47) : attempt to index field '?' (a nil value)
Deine Lösung habe ich in den ganzen Mods, die ich auf der Suche nach einer Lösung für mein Problem durchsucht habe, so auch nicht gefunden... die waren alle in der Art, wie ich sie oben schon gepostet habe...
In einem Vehicles hast du recht, da reicht dieser Teil aus, so wie du ihn hast. Kam mir nur komisch vor das du ein missing bekommst, bzw den LOG Error. Aber ist soweit auch klar warum. Welche Taste soll es denn nun eigentlich sein???
KEY_lctrl oder KEY_m??? Diese Taste gibt es so nunmal nicht, entweder KEY_lctrl oder KEY_m, aber beide Tasten in als einen key anzugeben, das geht nicht.
Nimm einfach mal das KEY_lctrl raus, das nun KEY_m da steht in der Moddesc, dann wird es gehen, das ganze natürlich bei beiden Zeilen !
Wenn du nun also unbedingt willst das du 2 Tasten drücken musst dann wirst du das anders lösen müssen. Keine Ahnung ob es mit Key2 geht, habe ich nie getestet. Aber wenn dann kannst du auch eine weitere Zeile einfügen, mit deinem KEY_lctrl, da du diese für beide Befehle nutzen willst. Also einen weiteren Text anlegen für das inputBinding und dann in den inputBindings auch die Zeile. Und dort als Key dann KEY_lctrl rein.
if self:getIsActive() then
g_currentMission:addExtraPrintText(string.format(InputBinding.getKeyNamesOfDigitalAction(InputBinding.ENGINELOAD_DeIncrease).."".."+"..""..InputBinding.getKeyNamesOfDigitalAction(InputBinding.ENGINELOAD_INCREASE).." ".." ".." "..(g_i18n:getText("ENGINELOAD_INCREASE_TEXT"))));
g_currentMission:addExtraPrintText(string.format(InputBinding.getKeyNamesOfDigitalAction(InputBinding.ENGINELOAD_DeIncrease).."".."+"..""..InputBinding.getKeyNamesOfDigitalAction(InputBinding.ENGINELOAD_DECREASE).." ".." ".." "..(g_i18n:getText("ENGINELOAD_DECREASE_TEXT"))));
g_currentMission:addExtraPrintText(string.format("rpmIncFactor: %f",self.rpmIncFactor));
end;
Dann hast du die beiden Tasten auch in der Hilfebox stehen. In meinem Fall jetzt halt nur anders rum, also Taste... + Taste ... Drehzahlanhebung erhöhen/verringern
Bluebaby210 wrote:KEY_lctrl oder KEY_m??? Diese Taste gibt es so nunmal nicht, entweder KEY_lctrl oder KEY_m, aber beide Tasten in als einen key anzugeben, das geht nicht.
Klar geht das. Guck mal in der inputBinding.xml, da wird das standardmäßig auch für die Frontladertools und Teleskopladerarm verwendet.
das mit den beiden Tasten habe ich mir aus der inputbindings.xml geholt. Ich dachte erst, dass das Problem doppelt belegte Tasten sind, da die Funktion ja "addConflictCheckedInput" heisst...
Leider funktioniert auch diese Lösung nicht, BlueBaby =(
so... zumindest habe ich den Log-Fehler gelöst:
if InputBinding.hasEvent(InputBinding.ENGINELOAD_DECREASE) then
da stand vorher noch der alte Name. Der tauchte natürlich in keiner InputBindings auf, drum der massive Fehler. =/
Aber auch mit der genannten Änderung habe ich diese "missing i18n..."-Fehler, die mir den Text in der Hilfe-Box überschreiben, dafür funktioniert der Mod sonst so wie er soll... auch mit "CTRL n" und "CTRL m"
Bluebaby210 wrote:KEY_lctrl oder KEY_m??? Diese Taste gibt es so nunmal nicht, entweder KEY_lctrl oder KEY_m, aber beide Tasten in als einen key anzugeben, das geht nicht.
Klar geht das. Guck mal in der inputBinding.xml, da wird das standardmäßig auch für die Frontladertools und Teleskopladerarm verwendet.
Ja, stimmt, hast du absolut Recht. Geht ohne Probleme, wusste ich bisher nicht.
@elmike
Ich bin grad selber an einem kleinen Mod, dort brauchte ich auch einen neuen HelpButtonText, da bei dir das Problem immer noch auftritt habe ich es mit 2 tasten gerade kurz getestet. In der LUA habe ich es so stehen:
if self:getIsActive() then
g_currentMission:addHelpButtonText(g_i18n:getText("Stop"), InputBinding.SWITCH_VEHICLE_BACK);
end;
Der Text, ist soweit egal. Die Tasten belegung ist eine Standart LS13 Taste, in der Hilfebox wird angezeigt: "Tasten UMSCHALT LINKS TAB".
Da muss das Problem also irgendwo anders liegen.
Ich bin ja nicht der "Skript König", weiß daher auch nicht genau wofür "self:addConflictCheckedInput(InputBinding.ENGINELOAD_INCREASE);" in deinem Skript da ist, aber hast du das mal versucht auszukommentieren?