+ Antworten
Ergebnis 1 bis 10 von 10
  1. #1
    Planierer Avatar von totalwarANGEL
    Registriert seit
    25.03.2010
    Ort
    Dresden
    Beiträge
    38
    Blog Einträge
    4

    Frage Handelsbutton abfragen

    Kurze Frage, die vermutlich(hoffentlich) eine lange ausführliche Antwort nach sich zieht: Ist es möglich die Funktion hinter den Handelsschaltern in einem Markthaus zu "hacken" um damit irgend etwas auszulösen?
    MfG totalwarANGEL

    Für alle die DEdK noch interessiert:
    Sehr gute Maps mit viel zu wenig Download:
    Meine Flodder Siedler_Team

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

    Standard AW: Handelsbutton abfragen

    bestimmt

  3. #3
    Planierer Avatar von totalwarANGEL
    Registriert seit
    25.03.2010
    Ort
    Dresden
    Beiträge
    38
    Blog Einträge
    4

    Standard AW: Handelsbutton abfragen

    Danke für die ausführliche Antwort.
    Ich würd ja nicht so dumm fragen, wenn es bei S6 eine GUI-Elements gäbe...
    MfG totalwarANGEL

    Für alle die DEdK noch interessiert:
    Sehr gute Maps mit viel zu wenig Download:
    Meine Flodder Siedler_Team

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

    Standard AW: Handelsbutton abfragen

    Wie wärs denn mit GUI_Merchant.OfferClicked im lokalen?

  5. #5
    Planierer Avatar von totalwarANGEL
    Registriert seit
    25.03.2010
    Ort
    Dresden
    Beiträge
    38
    Blog Einträge
    4

    Standard AW: Handelsbutton abfragen

    Klingt plausibel...
    MfG totalwarANGEL

    Für alle die DEdK noch interessiert:
    Sehr gute Maps mit viel zu wenig Download:
    Meine Flodder Siedler_Team

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

    Standard AW: Handelsbutton abfragen

    Sei mal so nett und schreibe, was draus wird.

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

    Standard AW: Handelsbutton abfragen

    Ich war jetzt selber neugierig. Die GUI_Merchant-Funktionen kannst du vergessen. Je nachdem was du vorhast, könnte es mit mit GUI.BuyMerchantOffer funktionieren. Die Argumente sind die Lagerhaus-ID, die Spieler-ID (1) und die Angebotsnummer.
    Geändert von siedlereldeis (17.10.2011 um 22:07 Uhr)

  8. #8
    Fischer Avatar von CineMachus
    Registriert seit
    30.09.2007
    Beiträge
    240

    Standard AW: Handelsbutton abfragen

    Code:
    function GUI_Merchant.OfferClicked( _ButtonIndex )
    
        local CurrentWidgetID = XGUIEng.GetCurrentWidgetID()
    
        -- Get logic data
        local PlayerID              = GUI.GetPlayerID()
        local BuildingID            = g_Merchant.ActiveMerchantBuilding
    
        if BuildingID == 0 then
            return
        end
    
        local PlayersMarketPlaceID  = Logic.GetMarketplace(PlayerID)
        local TraderPlayerID        = Logic.EntityGetPlayer(BuildingID)
    
        -- Get offer data
        local TraderType        = g_Merchant.Offers[_ButtonIndex].TraderType
        local OfferIndex        = g_Merchant.Offers[_ButtonIndex].OfferIndex
    
        local GoodType, OfferGoodAmount, OfferAmount, AmountPrices = 0,0,0,0
    
        -- Check if offer can be bought
        local CanBeBought = true
    
        if TraderType == g_Merchant.GoodTrader then
    
            GoodType, OfferGoodAmount, OfferAmount, AmountPrices = Logic.GetGoodTraderOffer(BuildingID,OfferIndex,PlayerID)
    
            -- Is space in the storehouse?
            if Logic.GetGoodCategoryForGoodType(GoodType) == GoodCategories.GC_Resource then
    
                --ToDo: I think this has to be replaced by a function that gets the overall limit of a storehouse, NOT per goodtype.
                --local AmountInCastle = GetPlayerGoodsInSettlement( GoodType, PlayerID)
                --local LimitInCastle  = GetPlayerResourcesLimit( GoodType, PlayerID)
    
                local SpaceForNewGoods =  Logic.GetPlayerUnreservedStorehouseSpace(PlayerID)
    
                if SpaceForNewGoods < OfferGoodAmount then
    
                    CanBeBought = false
    
                    local MessageText = XGUIEng.GetStringTableText("Feedback_TextLines/TextLine_MerchantStorehouseSpace")
                    Message(MessageText)
    
                end
    
            -- Animal can always be bought
            elseif Logic.GetGoodCategoryForGoodType(GoodType) == GoodCategories.GC_Animal then
    
                CanBeBought = true
    
            -- Goods need space on the marketplace and an upgraded marketplace / EnableRights is used, so this rule can be disabled by ALT F12 for testing
            else
    
                if Logic.CanFitAnotherMerchantOnMarketplace(PlayersMarketPlaceID) == false then
    
                    CanBeBought = false
    
                    local MessageText = XGUIEng.GetStringTableText("Feedback_TextLines/TextLine_MerchantMarketplaceFull")
                    Message(MessageText)
    
                end
    
            end
    
        -- Entertainers needs an upgraded marketplace and space on it (same rule like good traders. Can this be merged?)
        elseif TraderType == g_Merchant.EntertainerTrader then
    
            if Logic.CanFitAnotherEntertainerOnMarketplace(PlayersMarketPlaceID) == false then
    
                CanBeBought = false
                local MessageText = XGUIEng.GetStringTableText("Feedback_TextLines/TextLine_MerchantMarketplaceFull")
                Message(MessageText)
            end
    
        elseif TraderType == g_Merchant.MercenaryTrader then
    
            GoodType, OfferGoodAmount, OfferAmount, AmountPrices = Logic.GetMercenaryOffer(BuildingID,OfferIndex,PlayerID)
    
            local CurrentSoldierCount = Logic.GetCurrentSoldierCount(PlayerID)
            local CurrentSoldierLimit = Logic.GetCurrentSoldierLimit(PlayerID)
    
            local SoldierSize
            if GoodType == Entities.U_Thief then
                SoldierSize = 1
            else
                SoldierSize = OfferGoodAmount
            end
    
            if (CurrentSoldierCount + SoldierSize) > CurrentSoldierLimit then
                CanBeBought = false
                local MessageText = XGUIEng.GetStringTableText("Feedback_TextLines/TextLine_SoldierLimitReached")
                Message(MessageText)
            end
        end
    
        -- Offer can be bought
        if CanBeBought == true then
    
            -- Get Price and Goldamount of player
            local Price = ComputePrice( BuildingID, OfferIndex, PlayerID, TraderType )
            local GoldAmountInCastle = GetPlayerGoodsInSettlement(Goods.G_Gold, PlayerID )
    
            --check if Merchant Cart can reach player (check for player's Gold Cart is superfluous)
            local PlayerSectorType = PlayerSectorTypes.Civil
    
            local IsReachable = CanEntityReachTarget(PlayerID, Logic.GetStoreHouse(TraderPlayerID), Logic.GetStoreHouse(PlayerID),
                nil, PlayerSectorType)
    
            if IsReachable == false then
                local MessageText = XGUIEng.GetStringTableText("Feedback_TextLines/TextLine_GenericUnreachable")
                Message(MessageText)
                return
            end
    
            -- Player has the gold
            if Price <= GoldAmountInCastle then
    
                -- Spawn animals at the building via script. Maybe we will move this into an own tradertype after alpha
                if Logic.GetGoodCategoryForGoodType(GoodType) == GoodCategories.GC_Animal then
    
                    local AnimalType = Entities.A_X_Sheep01
    
                    if GoodType == Goods.G_Cow then
    
                        AnimalType = Entities.A_X_Cow01
    
                    end
    
                    for i=1,5 do
                        GUI.CreateEntityAtBuilding(BuildingID, AnimalType, 0)
                    end
    
                end
    
                -- Set price
                GUI.ChangeMerchantOffer(BuildingID,PlayerID,OfferIndex,Price)
    
                -- Buy offer
                GUI.BuyMerchantOffer(BuildingID,PlayerID,OfferIndex)
    
                Sound.FXPlay2DSound( "ui\\menu_click")
    
                StartKnightVoiceForPermanentSpecialAbility(Entities.U_KnightTrading)
    
            else
                local MessageText = XGUIEng.GetStringTableText("Feedback_TextLines/TextLine_NotEnough_G_Gold")
                Message(MessageText)
            end
        end
    end

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

    Standard AW: Handelsbutton abfragen

    Wie findet man sowas denn heraus?

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

    Standard AW: Handelsbutton abfragen

    Zitat Zitat von CineMachus Beitrag anzeigen
    Code:
    function GUI_Merchant.OfferClicked( _ButtonIndex )
    Hi Cine
    besser hätte ich es auch nicht schreiben können
    funk mich doch mal bei gelegenheit an...hab noch was schönes

Aktive Benutzer

Aktive Benutzer

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

     

Ähnliche Themen

  1. Datum abfragen
    Von drillo im Forum Siedler 6 AeK Mapperecke
    Antworten: 6
    Letzter Beitrag: 07.09.2009, 16:38
  2. UpgradeLevel abfragen:
    Von Fidelio1958 im Forum S6 Scriptecke
    Antworten: 29
    Letzter Beitrag: 31.07.2009, 06:15
  3. Mausklick abfragen
    Von Sokrates im Forum S6 Scriptecke
    Antworten: 0
    Letzter Beitrag: 15.07.2009, 17:29
  4. Klimazone abfragen
    Von Sokrates im Forum Siedler 6 AeK Mapperecke
    Antworten: 3
    Letzter Beitrag: 17.09.2008, 01:45
  5. Feinde abfragen
    Von Fidelio1958 im Forum S6 Scriptecke
    Antworten: 5
    Letzter Beitrag: 11.08.2008, 00:25

Stichworte

Berechtigungen

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