+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 20 von 21
  1. #1
    12 of 5
    Registriert seit
    11.09.2009
    Beiträge
    12

    Standard Widget-Icons change

    Hi,
    at first my best wishes "Happy New Year" for all.
    my English is really basic, but...

    in a map I use 'Interactive Object' I_X_ExcavationSite_Hut with MachSchatzTausch function and I would like to change a icon, from pict.1 to pict.2

    Widget-Icons change-s6_iletaitune_targ1.jpg -> Widget-Icons change-s6_iletaitune_targ2.jpg

    I found on Wiki Icons [AeK Script-Wiki] a function:
    Code:
    SetIcon(string Widgetname, {number X-Koordinate, number Y-Koordinate}, [number Icongröße (44, 64, 128)])
    but I don't know how can I used this one...
    what about 'Widgetname'?
    what about 'CurrentWidgetID' in the NEP Netsurfers Extension Pack?
    how to deactivate existing icon?

    only the questions... I know, i know...

  2. #2
    Sägewerker
    Registriert seit
    05.02.2011
    Beiträge
    159

    Standard AW: Widget-Icons change

    Gibt es bei diesem Thema schon Fortschritte? Ich würde das nämlich selber gerne machen. Die entscheidenden Befehle sind wohl XGUIEng.GetCurrentWidgetID() und SetIcon(). Wenn ich die "einfach so" im lokalen Skript aufrufe, passiert nichts, wie in diesem Beispiel:

    Code:
    GUI.SelectEntity(Logic.GetEntityIDByName("interaktivesobjekt"))
    CurrentWidgetID = XGUIEng.GetCurrentWidgetID()
    SetIcon(CurrentWidgetID, {2, 4})
    Vermutlich muss ich das in irgend eine Feedback-Funktion einbinden, sowas wie OnInteractiveObjectCreated (die gibt's natürlich nicht). Für IOs habe ich nur GUI_Interaction.InteractiveObjectClicked(), GUI_Interaction.InteractiveObjectMouseOver() und GUI_Interaction.InteractiveObjectUpdate() gefunden. Die werden wohl nicht die richtigen sein, trotzdem hab ich mal versucht die zu ändern, einfach um zu sehen (ob) was passiert. Folgendes in der Mission_LocalOnMapStart()

    Code:
    GUI_Interaction.InteractiveObjectClicked_orig = GUI_Interaction.InteractiveObjectClicked
    function GUI_Interaction.InteractiveObjectClicked()
        CurrentWidgetID = XGUIEng.GetCurrentWidgetID()
        SetIcon(CurrentWidgetID, {2, 4})
    end
    oder

    Code:
    GUI_Interaction.InteractiveObjectClicked_orig = GUI_Interaction.InteractiveObjectClicked
    function GUI_Interaction.InteractiveObjectClicked(id)
        CurrentWidgetID = XGUIEng.GetCurrentWidgetID()
        SetIcon(CurrentWidgetID, {2, 4})
    end
    bewirkt absolut gar nichts.


    Wer weiß weiter?

  3. #3
    Müller Avatar von LordFWD
    Registriert seit
    05.11.2007
    Beiträge
    572

    Standard AW: Widget-Icons change

    Zitat Zitat von siedlereldeis Beitrag anzeigen


    Wer weiß weiter?

    nur die üblich Verdächtigen

    die Widget-Gurus glänzen seit ewigen Zeiten durch Abwesenheit...
    ihre Hinterlassenschaften sind leider nicht zur Weitergabe freigegeben...
    davon abgesehen das es über 6000 widget gibt

  4. #4
    Sägewerker
    Registriert seit
    05.02.2011
    Beiträge
    159

    Standard AW: Widget-Icons change

    Ich dachte Du wärst einer der hiesigen Gurus.

  5. #5
    Müller Avatar von LordFWD
    Registriert seit
    05.11.2007
    Beiträge
    572

    Standard AW: Widget-Icons change

    Zitat Zitat von siedlereldeis Beitrag anzeigen
    Ich dachte Du wärst einer der hiesigen Gurus.
    nicht wirklich...

    aber wenn du sowas meinst?



    Widget-Icons change-settlers6_00365.jpg

  6. #6
    Sägewerker
    Registriert seit
    05.02.2011
    Beiträge
    159

    Standard AW: Widget-Icons change

    Verdammte Sch... Genau das meine ich.

  7. #7
    Sägewerker
    Registriert seit
    05.02.2011
    Beiträge
    159

    Standard AW: Widget-Icons change

    Mittlerweile habe ich schon eine Liste aller Widgets erstellt.

    Code:
        widgetsshown = {}
        widgetsshownex = {}
        
        for i = 1, 10000 do
            
            if XGUIEng.IsWidgetShown(i) == 1 then table.insert(widgetsshown, i) end
            if XGUIEng.IsWidgetShownEx(i) == 1 then table.insert(widgetsshownex, i) end
        end
    widgetsshown liefert offenbar alle vorhandenen Widgets (6021 Stück), widgetsshownex die momentan tatsächlich angezeigten (um 130). Mit XGUIEng.GetWidgetNameByID und XGUIEng.GetWidgetPathByID erhält man Namen und Pfad.

    Wird so ein Icon eines interaktiven Objekts angezeigt, ist es das Widget "/InGame/Root/Normal/InteractiveObjects/1". Allerdings bewirkt SetIcon mit der entsprechenden ID nichts.


  8. #8
    Müller Avatar von LordFWD
    Registriert seit
    05.11.2007
    Beiträge
    572

    Standard AW: Widget-Icons change

    Zitat Zitat von siedlereldeis Beitrag anzeigen
    Mittlerweile habe ich schon eine Liste aller Widgets erstellt.



    Wird so ein Icon eines interaktiven Objekts angezeigt, ist es das Widget "/InGame/Root/Normal/InteractiveObjects/1". Allerdings bewirkt SetIcon mit der entsprechenden ID nichts.

    hmm...wie sieht denn dein Aufruf aus?

  9. #9
    Sägewerker
    Registriert seit
    05.02.2011
    Beiträge
    159

    Standard AW: Widget-Icons change

    Nach dem obigen kommt noch das:

    Code:
    for i = 1, #widgetsshownex do
            
            local a, b
            a, b = string.find(XGUIEng.GetWidgetPathByID(widgetsshownex[i]), "/InGame/Root/Normal/InteractiveObjects/")
            if a and string.len(XGUIEng.GetWidgetNameByID(widgetsshownex[i])) == 1 then 
                Logic.DEBUG_AddNote(XGUIEng.GetWidgetNameByID(widgetsshownex[i]))
                SetIcon(widgetsshownex[i], {2, 4})
            end
        end
    Der if-Block schlägt genau einmal zu, bei meinem IO.

  10. #10
    Müller Avatar von LordFWD
    Registriert seit
    05.11.2007
    Beiträge
    572

    Standard AW: Widget-Icons change

    Zitat Zitat von siedlereldeis Beitrag anzeigen
    Nach dem obigen kommt noch das:

    Code:
    for i = 1, #widgetsshownex do
            
            local a, b
            a, b = string.find(XGUIEng.GetWidgetPathByID(widgetsshownex[i]), "/InGame/Root/Normal/InteractiveObjects/")
            if a and string.len(XGUIEng.GetWidgetNameByID(widgetsshownex[i])) == 1 then 
                Logic.DEBUG_AddNote(XGUIEng.GetWidgetNameByID(widgetsshownex[i]))
                SetIcon(widgetsshownex[i], {2, 4})
            end
        end
    Der if-Block schlägt genau einmal zu, bei meinem IO.
    ok...so gehts nicht
    versuch mal
    Code:
    Logic.ExecuteInLuaLocalState('SetIcon("/InGame/Root/Normal/InteractiveObjects/1", {13,13})');
    Geändert von LordFWD (14.08.2011 um 00:57 Uhr)

  11. #11
    Sägewerker
    Registriert seit
    05.02.2011
    Beiträge
    159

    Standard AW: Widget-Icons change

    Das ist dasselbe in grün. Auch

    Code:
    XGUIEng.DisableButton("/InGame/Root/Normal/InteractiveObjects/1", 1)
    und
    Code:
    XGUIEng.ShowWidget("/InGame/Root/Normal/InteractiveObjects/1", 0)
    sind übrigens völlig wirkungslos.


    Wo hast Du denn das Bild da oben her: im Spiel erzeugt oder per Bildbearbeitung?

  12. #12
    Müller Avatar von LordFWD
    Registriert seit
    05.11.2007
    Beiträge
    572

    Standard AW: Widget-Icons change

    wie sich herausstellte scheint es mit RdO zur Zeit nicht machbar zu sein...

    Nachtrag:Auch in RdO machbar
    Geändert von LordFWD (15.08.2011 um 22:31 Uhr)

  13. #13
    12 of 5
    Registriert seit
    11.09.2009
    Beiträge
    12

    Standard Re: AW: Widget-Icons change

    Zitat Zitat von LordFWD Beitrag anzeigen
    ok...so gehts nicht
    versuch mal
    Code:
    Logic.ExecuteInLuaLocalState('SetIcon("/InGame/Root/Normal/InteractiveObjects/1", {13,13})');
    I used it like this:
    Code:
    function Market44()
        MachSchatzTausch44("Marche44", 9, Goods.G_RawFish, 18, Goods.G_Gold, 3)
    end
    
    function MachSchatzTausch44(_entity, _menge, _type, _mengecost, _typecost, _time, _distance )
        _type = _type or Goods.G_Gold             --Default Werte
        _menge = _menge or 100                    --Default Werte
        _distance = _distance or 1000             --Default Werte
        _time = _time or 5                        --Default Werte
        _mengecost = _mengecost or 50             --Default Werte
        _typecost = _typecost or Goods.G_Wood 
        _entity = GetEntityId(_entity)
        Logic.ExecuteInLuaLocalState('SetIcon("/InGame/Root/Normal/InteractiveObjects/1", {1,15})'); 
        Logic.ExecuteInLuaLocalState('SetIcon("/InGame/Root/Normal/InteractiveObjects/2", {1,15})'); 
        Logic.InteractiveObjectClearCosts(_entity)
        Logic.InteractiveObjectSetInteractionDistance(_entity, _distance)
        Logic.InteractiveObjectSetTimeToOpen(_entity, _time)
        Logic.InteractiveObjectClearRewards(_entity)
        Logic.InteractiveObjectAddRewards(_entity, _type, _menge)   
        Logic.InteractiveObjectAddCosts(_entity, _typecost, _mengecost)     
        Logic.InteractiveObjectSetAvailability(_entity,true)
        Logic.InteractiveObjectSetPlayerState(_entity, 1, 0)
        Logic.InteractiveObjectSetRewardResourceCartType(_entity, Entities.U_ResourceMerchant)  -- Hier der Wagen für Ressourcen VOM Objekt.
        Logic.InteractiveObjectSetRewardGoldCartType(_entity, Entities.U_GoldCart)  -- Hier der Wagen für Gold VOM Objekt.
        Logic.InteractiveObjectSetCostGoldCartType(_entity, Entities.U_GoldCart)    -- Hier der Wagen für Gold ZUM Objekt.
        Logic.InteractiveObjectSetCostResourceCartType(_entity, Entities.U_ResourceMerchant) -- Hier der Wagen für Ressourcen ZUM Objekt.
        table.insert(HiddenTreasures, _entity)
    end
    but it works globally, I do not know why ... the changes made​​, the last selected icon is active for all interactive objects. this feature is not working properly, maybe need something else ...

    * each interactive object has two sides to make easier access...
    best regards, si.
    Geändert von sisi (21.08.2011 um 21:59 Uhr)

  14. #14
    Sägewerker
    Registriert seit
    05.02.2011
    Beiträge
    159

    Standard AW: Widget-Icons change

    "/InGame/Root/Normal/InteractiveObjects/1" and "/InGame/Root/Normal/InteractiveObjects/2" are the icons for the first and second active interactive object visible on the screen. So if you have more than one IO on your map you have to somehow check which IO is currently visible and modify the icon via the SetIcon command accordingly.

  15. #15
    12 of 5
    Registriert seit
    11.09.2009
    Beiträge
    12

    Standard Re: Widget-Icons change

    Thank you, I'll try it...

  16. #16
    Müller Avatar von LordFWD
    Registriert seit
    05.11.2007
    Beiträge
    572

  17. #17
    Brückenarchitekt Avatar von Annosiedler
    Registriert seit
    02.01.2009
    Ort
    Niedersachsen
    Beiträge
    2,868

    Standard AW: Widget-Icons change

    ...hab dich mal abboniert...

    Ist das denn wirklich noch alles vom Spiel oder hast du da schon eigene Grafiken drin?

  18. #18
    Sägewerker
    Registriert seit
    05.02.2011
    Beiträge
    159

    Standard AW: Widget-Icons change

    Angeber

  19. #19
    Müller Avatar von LordFWD
    Registriert seit
    05.11.2007
    Beiträge
    572

    Standard AW: Widget-Icons change

    Zitat Zitat von Annosiedler Beitrag anzeigen
    ...hab dich mal abboniert...

    Ist das denn wirklich noch alles vom Spiel oder hast du da schon eigene Grafiken drin?
    eigene Grafik...
    der animierte Counter links oben ist natürlich auch selbst gebaut

  20. #20
    Bannermacher
    Registriert seit
    22.04.2005
    Beiträge
    2,476

    Standard AW: Widget-Icons change

    kommt da wieder eine map von dir? Dann müsste ich S6 ja nochmal rauskramen

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Ähnliche Themen

  1. Übersicht: Widget IDs
    Von Noigi im Forum Siedler 5 DEdK Scriptecke
    Antworten: 0
    Letzter Beitrag: 13.09.2010, 20:30
  2. Fragen zu Move, Change Player, GiveResources, ...
    Von Caveman im Forum Siedler 5 DEdK Scriptecke
    Antworten: 12
    Letzter Beitrag: 06.10.2008, 15:16

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein