Mod: Taste/Text im Hilfefenster anzeigen

elmike
Posts: 3398
Joined: Sat Oct 30, 2010 9:57 pm

Mod: Taste/Text im Hilfefenster anzeigen

Post by elmike »

Hallo zusammen,

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.

Ausschnitte aus den einzelnen Dateien:

modDesc.xml:

Code: Select all

	<inputBindings>
		<input name="ENGINELOAD_INCREASE" category="VEHICLE" key1="KEY_lctrl KEY_m" key2="" button="" device="0" mouse="" />
		<input name="ENGINELOAD_DECREASE" category="VEHICLE" key1="KEY_lctrl KEY_n" key2="" button="" device="0" mouse="" />
	</inputBindings>
    <l10n>
        <text name="ENGINELOAD_INCREASE">
            <en>increase RpmOffset</en>
            <de>Drehzahlanhebung erhöhen</de>
        </text>
        <text name="ENGINELOAD_DECREASE">
            <en>decrease RpmOffset</en>
            <de>Drehzahlanhebung verringern</de>
        </text>
        <text name="ENGINELOAD_INCREASE_TEXT">
            <en>increase RpmOffset</en>
            <de>Drehzahlanhebung erhöhen</de>
        </text>
        <text name="ENGINELOAD_DECREASE_TEXT">
            <en>decrease RpmOffset</en>
            <de>Drehzahlanhebung verringern</de>
        </text>
    </l10n>
engineLoad.lua:

Code: Select all

function engineLoad:load(xmlFile)
	self.rpmIncFactor = 2000;
	self.increaseSound = 0;
	self:addConflictCheckedInput(InputBinding.ENGINELOAD_INCREASE);
	self:addConflictCheckedInput(InputBinding.ENGINELOAD_DECREASE);
end;
( (wobei man die letzten beiden Zeilen auch weglassen kann, gleiches Ergebnis)

Code: Select all

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:

Code: Select all

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..."

Was habe ich übersehen oder vergessen?

Vielen Dank schon mal!

elmike
User avatar
Bluebaby210
Posts: 359
Joined: Sun Jun 26, 2011 6:48 pm

Re: Mod: Taste/Text im Hilfefenster anzeigen

Post by Bluebaby210 »

Versuchs mal so:

Code: Select all

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
elmike
Posts: 3398
Joined: Sat Oct 30, 2010 9:57 pm

Re: Mod: Taste/Text im Hilfefenster anzeigen

Post by elmike »

Hallo,

die Taste wurde ja angezeigt, nur der Text dazu leider nicht.

Wenn ich Deine Lösung in die draw-Funktion kopiere, kommt kein Hilfe-Fenster, in der Log wiederholt sich:

Code: Select all

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...

elmike
User avatar
Bluebaby210
Posts: 359
Joined: Sun Jun 26, 2011 6:48 pm

Re: Mod: Taste/Text im Hilfefenster anzeigen

Post by Bluebaby210 »

Hi,

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 :wink3: !

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.

Code: Select all

		<input name="ENGINELOAD_DeIncrease" category="VEHICLE" key1="KEY_lctrl" key2="" button="" device="0" mouse="" />

        <text name="ENGINELOAD_DeIncrease">
            <en>ENGINELOAD Key 1</en>
            <de>ENGINELOAD Key 1</de>
        </text>
	
In deinem Skript würde ich dann diese Weise empfehlen, da weiß ich nämlich das sie funktioniert:

Code: Select all

	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
User avatar
bassaddict
GIANTS Software | Web/Script Programmer
Posts: 11983
Joined: Tue Nov 29, 2011 2:44 pm
Location: ER, DE

Re: Mod: Taste/Text im Hilfefenster anzeigen

Post by bassaddict »

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.
elmike
Posts: 3398
Joined: Sat Oct 30, 2010 9:57 pm

Re: Mod: Taste/Text im Hilfefenster anzeigen

Post by elmike »

Hallo,

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 =(

elmike
elmike
Posts: 3398
Joined: Sat Oct 30, 2010 9:57 pm

Re: Mod: Taste/Text im Hilfefenster anzeigen

Post by elmike »

Hallo,

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"

elmike
User avatar
Bluebaby210
Posts: 359
Joined: Sun Jun 26, 2011 6:48 pm

Re: Mod: Taste/Text im Hilfefenster anzeigen

Post by Bluebaby210 »

bassaddict wrote:
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:

Code: Select all

	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?
Post Reply