發新話題
打印

如何(有新問題)

[Close]
買左a 可唔可以買b1
另外呢個係針對個人定全部人
例如 a君買左a    b君只可以買b1?

TOP

一定要用布林
比個實例你  我買左a a1 a2 a3 a4  咁樣你既idea int係5
我賣左a3  int變左4
然後再買裝  就會a a1 a2 a4 a4
明唔明?

TOP

引用:
原帖由 Frayja 於 2014-5-19 16:06 發表
買左a 可唔可以買b1
另外呢個係針對個人定全部人
例如 a君買左a    b君只可以買b1?
係可以的
a君買左a
b君一樣可以買a
但係就唔可以a君買左a既情況下買b2
即係咁
買左a先可以買b
而a同b一定要相對
a > b
a1 > b1
a2 > b2
a3 > b3
a4 > b4
可以買左a再買a1
但係唔可以買左a買b1

TOP

引用:
原帖由 Frayja 於 2014-5-19 16:07 發表
一定要用布林
比個實例你  我買左a a1 a2 a3 a4  咁樣你既idea int係5
我賣左a3  int變左4
然後再買裝  就會a a1 a2 a4 a4
明唔明?
太多裝了
咁咪要勁多個布林?
判斷到1個
但判斷唔到第2個
我係有8個a 8個b的

TOP

就係要一個一個搞 Z____Z

其實可以唔一個一個搞既... 不過果個方法好鬼煩

我估要整幾日

由於有人幫你 所以我都唔幫你搞了,...

好多野要做
http://www.tsdm.me/forum.php
天使動漫論壇 各種資源應有盡有 owo

TOP

function sell_item takes nothing returns nothing
    set sell_item = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ( sell_item, EVENT_PLAYER_UNIT_SELL_ITEM ) //任意單位出售物品
    call TriggerAddAction(sell_item, function sell_item2)
endfunction

function sell_item2 takes nothing returns nothing
    if (((GetItemTypeId(GetSoldItem()) == 'I000') or (GetItemTypeId(GetSoldItem()) == 'I005'))) then //出售A/B
        set I[GetConvertedPlayerId(GetOwningPlayer(GetSellingUnit()))] = false // I對應A/B的布林值
    else
        if (((GetItemTypeId(GetSoldItem()) == 'I001') or (GetItemTypeId(GetSoldItem()) == 'I006'))) then //出售A1/B1
            set II[GetConvertedPlayerId(GetOwningPlayer(GetSellingUnit()))] = false // II對應A1/B1的布林值 如此類推
        else
            if (((GetItemTypeId(GetSoldItem()) == 'I002') or (GetItemTypeId(GetSoldItem()) == 'I007'))) then
                set III[GetConvertedPlayerId(GetOwningPlayer(GetSellingUnit()))] = false
            else
                if (((GetItemTypeId(GetSoldItem()) == 'I003') or (GetItemTypeId(GetSoldItem()) == 'I008'))) then
                    set IIII[GetConvertedPlayerId(GetOwningPlayer(GetSellingUnit()))] = false
                else
                    if (((GetItemTypeId(GetSoldItem()) == 'I004') or (GetItemTypeId(GetSoldItem()) == 'I009'))) then
                        set IIIII[GetConvertedPlayerId(GetOwningPlayer(GetSellingUnit()))] = false
                    else
                    endif
                endif
            endif
        endif
    endif
endfunction

function buy_item takes nothing returns nothing
    set buy_item = CreateTrigger()
    call TriggerRegisterUnitEvent( buy_item, gg_unit_n000_0000, EVENT_UNIT_SELL ) //自定義商店出售單位
    call TriggerAddAction(buy_item, function buy_item2)
endfunction

function buy_item2 takes nothing returns nothing
    if ((IsUnitType(GetBuyingUnit(), UNIT_TYPE_HERO) == true)) then // 購買者是英雄
        if (((GetUnitTypeId(GetSoldUnit()) == 'e000') and (I[GetConvertedPlayerId(GetTriggerPlayer())] == false))) then // 當販賣單位是 A & I=false
            call UnitAddItemByIdSwapped( 'I000', GetBuyingUnit() ) // 建立物品A給予購買者
            set I[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] = true // 改變玩家?的布林變量
        else
            if (((GetUnitTypeId(GetSoldUnit()) == 'e001') and (II[GetConvertedPlayerId(GetTriggerPlayer())] == false))) then // 當販賣單位是 A1 & II=false
                call UnitAddItemByIdSwapped( 'I001', GetBuyingUnit() ) // 建立物品A1給予購買者 如此類推
                set II[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] = true
            else
                if (((GetUnitTypeId(GetSoldUnit()) == 'e002') and (III[GetConvertedPlayerId(GetTriggerPlayer())] == false))) then
                    call UnitAddItemByIdSwapped( 'I002', GetBuyingUnit() )
                    set III[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] = true
                else
                    if (((GetUnitTypeId(GetSoldUnit()) == 'e003') and (IIII[GetConvertedPlayerId(GetTriggerPlayer())] == false))) then
                        call UnitAddItemByIdSwapped( 'I003', GetBuyingUnit() )      
                        set IIII[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] = true
                    else
                        if (((GetUnitTypeId(GetSoldUnit()) == 'e004') and (IIIII[GetConvertedPlayerId(GetTriggerPlayer())] == false))) then
                            call UnitAddItemByIdSwapped( 'I004', GetBuyingUnit() )
                            set IIIII[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] = true
                        else
                        endif
                    endif
                endif
            endif
        endif
    else
    endif
endfunction

TOP

其實如果用jass  可以用looper黎做
但考慮到你用T   我用顯淺既方法做比你睇

TOP

引用:
原帖由 Frayja 於 2014-5-19 16:54 發表
其實如果用jass  可以用looper黎做
但考慮到你用T   我用顯淺既方法做比你睇
如果你有最深而你覺得係最好既方法你都可以放上黎

=============
提供埋變數名稱同咩類型

TOP

用過5個變數
當然你8個物品就用8個變數
由I到IIIII都係布林陣列

用咩方法唔重要   你明同個方法work就得

TOP

引用:
原帖由 Frayja 於 2014-5-19 17:05 發表
用過5個變數
當然你8個物品就用8個變數
由I到IIIII都係布林陣列

用咩方法唔重要   你明同個方法work就得
即係8個變數 類型:物品
加多個布林?
---------------
不過其實我都係唔明的

TOP

其實物品唔使加落變數入面
條件判斷入面  直接揀判斷物品類型
因為購買者會揀買邊個產品  所以可以fix左物品類型

我用既變數只有布林陣列

TOP

簡單黎講  我既做法係
A君係玩家1  B君係玩家2

當A君去shop買野 買a/b既時候
系統會將I[1]呢個值變成true

而B君去shop買野 買a/b既時候
系統會將I[2]呢個值變成true

其他物品就對應番相對既布林陣列

TOP

引用:
原帖由 Frayja 於 2014-5-19 17:13 發表
簡單黎講  我既做法係
A君係玩家1  B君係玩家2

當A君去shop買野 買a/b既時候
系統會將I[1]呢個值變成true

而B君去shop買野 買a/b既時候
系統會將I[2]呢個值變成true

其他物品就對應番相對既布林陣列 ...
咁a君呢個名洗唔洗set變數
如果玩家有10個係咪就將呢個野copy再copy

TOP

唔洗
因為購買者呢個係單位

而我地可以從呢個單位中獲得單位所有者(玩家的引索)
I[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))]

玩家1
玩家2...etc

TOP

引用:
原帖由 Frayja 於 2014-5-19 17:17 發表
唔洗
因為購買者呢個係單位
而我地可以從呢個單位中獲得單位所有者(玩家的引索)

玩家1
玩家2...etc
咁玩家1係咪=1
玩家2=2
===============
t有分bj同cj(如果冇可能係we唔同)
bj係1-16
cj係0-15
所以我要問呢個問題

TOP

發新話題