Board logo

標題: 如何(有新問題) [打印本頁]

作者: 古物.帝    時間: 2014-4-20 22:04     標題: 如何(有新問題)

如何令玩家買左裝備a之後就買唔到買裝備b
之後玩家賣左裝備a就會買到裝備b


[ 本帖最後由 古物.帝 於 2014-7-17 23:23 編輯 ]
作者: 古物.帝    時間: 2014-4-20 23:08

我知x00兄係呢一個部分好有認識的
作者: liho2001    時間: 2014-4-21 02:20

引用:
原帖由 古物.帝 於 2014-4-20 22:04 發表
如何令玩家買左裝備a之後就買唔到買裝備b
之後玩家賣左裝備a就會買到裝備b
用條件(觀察身上有冇果件裝)
有就比佢賣左後DEL左佢+比返錢
我相信你會問埋點整同埋令一個問題
吾教
因為我開吾到WE好耐
作者: x00900    時間: 2014-4-21 09:14

???0.0

其實你係想a買左之後 b買唔到炸?=.=

定係買左一件裝後 其他裝都買唔到? v_v"
作者: 古物.帝    時間: 2014-4-21 11:20

引用:
原帖由 liho2001 於 2014-4-21 02:20 發表
用條件(觀察身上有冇果件裝)
有就比佢賣左後DEL左佢+比返錢
我相信你會問埋點整同埋令一個問題
吾教
因為我開吾到WE好耐
我諗係我問錯野
因為呢個唔係我想要既答案
-----------------
即係咁

如果買左裝備A 個整數a就會加1

之後就買唔到裝備b 但係仲可以再買裝備a 如果賣左裝備a 整數a就會減1

如果整數a=0先可以買裝備b

如果買左裝備b 整數a都係會加1 一樣仲可以買到裝備b

然而 係買唔到裝備a 賣左裝備b 整數a就會-1 整數a=0先可以買裝備a
作者: x00900    時間: 2014-4-21 11:37

你唔係已經自己打埋出來應該要點整啦咩...
作者: 古物.帝    時間: 2014-4-21 11:54

引用:
原帖由 x00900 於 2014-4-21 11:37 發表
你唔係已經自己打埋出來應該要點整啦咩...
冇效係問題
作者: 古物.帝    時間: 2014-4-21 11:55

引用:
原帖由 x00900 於 2014-4-21 09:14 發表
???0.0

其實你係想a買左之後 b買唔到炸?=.=

定係買左一件裝後 其他裝都買唔到? v_v"
係 冇錯
問題係件裝買左之後就會消失(唔好同我講唔消失去整會易d)
----------
件事係咁 分別有 a b c d e f g h 呢8件裝 另外都有 a1 b1 c1 d1 e1 f1 g1 h1呢8件裝

如果買左a 1次 index[玩家索引號]就會+1

係呢個時候 b-h b1-h1都買唔到 只可以再買a/買a1

如果佢買左a1 個index[玩家索引號]就會-1 如果index[玩家索引號]=0 則可以買a-h 既裝

另外1點 index[玩家索引號]=0既時候 a1-h1都唔可以買(解決左呢點)

買左b就買唔到a,c-h&a1,c1-h1

買左c就買唔到a-b,d-h&a1-b1,d1-h1

如此類推

[ 本帖最後由 古物.帝 於 2014-4-21 17:57 編輯 ]
作者: liho2001    時間: 2014-4-22 18:29

不如教我整返好WE先= ="家陣吾知咩事開吾到(YDWE同WE都係咁)

============
裝備尼味野我吾會咁整幫你吾到

[ 本帖最後由 liho2001 於 2014-4-22 18:35 編輯 ]
作者: x00900    時間: 2014-4-23 09:15

裝萬國碼開唔到we咩?=.=??
作者: 古物.帝    時間: 2014-4-23 11:09

引用:
原帖由 x00900 於 2014-4-23 09:15 發表
裝萬國碼開唔到we咩?=.=??
仲要裝多舊野
因為萬國碼好似有個野壞左
作者: x00900    時間: 2014-4-23 22:02

其實唔係壞左 係部機load唔到個碼

要由第2個碼來取代

有d機係load到一開始果個萬國碼
作者: 古物.帝    時間: 2014-4-23 22:11

引用:
原帖由 x00900 於 2014-4-23 22:02 發表
其實唔係壞左 係部機load唔到個碼

要由第2個碼來取代

有d機係load到一開始果個萬國碼
佢係話壞左的 如果冇記錯
作者: x00900    時間: 2014-4-24 08:54

條友理解錯左姐

一開始果個的確係某d機到運行到

因為我試過
作者: 古物.帝    時間: 2014-4-24 11:10

引用:
原帖由 x00900 於 2014-4-24 08:54 發表
條友理解錯左姐

一開始果個的確係某d機到運行到

因為我試過
快d解決我果個先
作者: liho2001    時間: 2014-4-26 23:52

引用:
原帖由 古物.帝 於 2014-4-24 11:10 發表

快d解決我果個先
有咩方法開得返呢?
============
寵物中心隻野要吾要) 57LV嫁D怪勁到我吾想打= ="
作者: 古物.帝    時間: 2014-4-27 19:03

引用:
原帖由 liho2001 於 2014-4-26 23:52 發表
有咩方法開得返呢?
============
寵物中心隻野要吾要) 57LV嫁D怪勁到我吾想打= ="
靜係用萬國傻瓜包冇用的
==============
以下係我既解決方法
首先用左萬國先
之後就DL呢個[attach]226940[/attach]
將佢放係Warcaft III個file到
copy個原有
就ok了
(唔知有冇放錯野)

[ 本帖最後由 古物.帝 於 2014-4-27 19:04 編輯 ]
作者: x00900    時間: 2014-4-27 19:24

寵物中心隻野要唔要?......  :[....  講緊咩...
作者: 古物.帝    時間: 2014-4-27 19:59

引用:
原帖由 x00900 於 2014-4-27 19:24 發表
寵物中心隻野要唔要?......  :[....  講緊咩...
我都想知
------------
我明了
vlan個寵物中心
作者: x00900    時間: 2014-4-28 17:35

原來係VLAN個寵物中心.....

呢d野 一向唔搞 XD
作者: 古物.帝    時間: 2014-4-28 20:20

引用:
原帖由 x00900 於 2014-4-28 17:35 發表
原來係VLAN個寵物中心.....

呢d野 一向唔搞 XD
好貴的
1陣就食曬你D vlan金
作者: 古物.帝    時間: 2014-4-29 23:22

我發現始終都冇人解答我個問題
作者: x00900    時間: 2014-4-30 22:09

又解答咩野問題=.=""""""
作者: 古物.帝    時間: 2014-4-30 22:24

引用:
原帖由 x00900 於 2014-4-30 22:09 發表
又解答咩野問題=.=""""""
睇下呢個帖d回覆
本來係我問問題
但係無啦啦又轉移左個話題
作者: x00900    時間: 2014-5-1 18:27

件事係咁 分別有 a b c d e f g h 呢8件裝 另外都有 a1 b1 c1 d1 e1 f1 g1 h1呢8件裝

如果買左a 1次 index[玩家索引號]就會+1

係呢個時候 b-h b1-h1都買唔到 只可以再買a/買a1

如果佢買左a1 個index[玩家索引號]就會-1 如果index[玩家索引號]=0 則可以買a-h 既裝

另外1點 index[玩家索引號]=0既時候 a1-h1都唔可以買(解決左呢點)

買左b就買唔到a,c-h&a1,c1-h1

買左c就買唔到a-b,d-h&a1-b1,d1-h1

如此類推




點解要搞d咁煩既野架=.=....

之後先研究一下吧

你係想個裝消失 定掉下  消失既話 洗唔洗退還d$$
作者: 古物.帝    時間: 2014-5-1 18:39

引用:
原帖由 x00900 於 2014-5-1 18:27 發表
件事係咁 分別有 a b c d e f g h 呢8件裝 另外都有 a1 b1 c1 d1 e1 f1 g1 h1呢8件裝

如果買左a 1次 index[玩家索引號]就會+1

係呢個時候 b-h b1-h1都買唔到 只可以再買a/買a1

如果佢買左a1 個index[玩家索引號] ...
$唔洗 因為件裝係唔洗錢
d錢係一個變數來
因為好似唔多關事所以冇講到
作者: 古物.帝    時間: 2014-5-17 22:37

引用:
原帖由 x00900 於 2014-5-1 18:27 發表
件事係咁 分別有 a b c d e f g h 呢8件裝 另外都有 a1 b1 c1 d1 e1 f1 g1 h1呢8件裝

如果買左a 1次 index[玩家索引號]就會+1

係呢個時候 b-h b1-h1都買唔到 只可以再買a/買a1

如果佢買左a1 個index[玩家索引號] ...
幾時先搞呀
作者: x00900    時間: 2014-5-18 10:00

完全唔記得左呢回事  哈哈哈哈
作者: x00900    時間: 2014-5-18 10:28

頂=.= 用gui整好煩 可唔可以比我用jass
作者: x00900    時間: 2014-5-18 10:31

算了 唔比我用jass 我就唔整了=.=
作者: 古物.帝    時間: 2014-5-18 20:21

引用:
原帖由 x00900 於 2014-5-18 10:28 發表
頂=.= 用gui整好煩 可唔可以比我用jass
你用JASS緊係最好
因為COPY會好方便
+
你三連回
作者: x00900    時間: 2014-5-18 21:44

3連回姐 是鬼但啦

我天日或者後日先幫你搞到
作者: 古物.帝    時間: 2014-5-18 22:15

引用:
原帖由 x00900 於 2014-5-18 21:44 發表
3連回姐 是鬼但啦

我天日或者後日先幫你搞到
車...............................
作者: Frayja    時間: 2014-5-19 10:07

要支援多人既話要用布林陣列
假設一開頭可以買a裝而不能買b裝
設真值為false
如果false就買a裝 otherwise買b裝
事件可以用出售單位來模擬
作者: 古物.帝    時間: 2014-5-19 11:27

引用:
原帖由 Frayja 於 2014-5-19 10:07 發表
要支援多人既話要用布林陣列
假設一開頭可以買a裝而不能買b裝
設真值為false
如果false就買a裝 otherwise買b裝
事件可以用出售單位來模擬
我試過用布林
但係都係唔得
可能係冇設大小
作者: Frayja    時間: 2014-5-19 12:52

///////////////////////sell item///////////////////////

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

function sell_point2 takes nothing returns nothing
    if ((GetItemTypeId(GetSoldItem()) == 'I000')) then //物品A被出售
        set point = false //全域變量point變成false
    else
    endif
endfunction

///////////////////////buy item///////////////////////

function buy_point takes nothing returns nothing
    set buy_point = CreateTrigger()
    call TriggerRegisterUnitEvent( buy_point, gg_unit_h000_0000, EVENT_UNIT_SELL ) //自定義商店0000出售單位
    call TriggerAddAction(buy_point, function buy_point2)
endfunction

function buy_point2 takes nothing returns nothing
    if ((IsUnitType(GetBuyingUnit(), UNIT_TYPE_HERO) == true)) then //購買者是英雄
        if ((point == false)) then //全域變量是false 即是沒人買過物品
            call UnitAddItemByIdSwapped( 'I000', GetBuyingUnit() ) //建立物品A給購買者
            set point = true //全域變量設為true
        else
            call UnitAddItemByIdSwapped( 'I001', GetBuyingUnit() ) //建立物品B給購買者
        endif
    else
    endif
endfunction

因為再看一次你的意思是物品A只能有一個  其餘買的都是物品B
所以布林值不設為陣列

[ 本帖最後由 Frayja 於 2014-5-19 12:54 編輯 ]
作者: Frayja    時間: 2014-5-19 13:00

因為不知道你的商店是怎麼運作
所以條件上沒加上商店出售的是什麼單位
作者: 古物.帝    時間: 2014-5-19 13:02

引用:
原帖由 Frayja 於 2014-5-19 13:00 發表
因為不知道你的商店是怎麼運作
所以條件上沒加上商店出售的是什麼單位
條件應該插係邊
=============
同埋
我要有10個玩家的
如果玩家1買左1次 個integer[0]就+1
玩家2買左就integer[1]+1
因為我要分開
==========
玩家1買左之後玩家2都可以買的
不過就係加既integer唔同咁解

[ 本帖最後由 古物.帝 於 2014-5-19 13:06 編輯 ]
作者: Frayja    時間: 2014-5-19 13:07

條件在最外圍加個if loop就行
你的意思是每個人買的時候  第一次就是物品a  然後買的時候都是物品b?
作者: Frayja    時間: 2014-5-19 13:08

then 唔明個int有咩用
作者: 古物.帝    時間: 2014-5-19 13:11

引用:
原帖由 Frayja 於 2014-5-19 13:07 發表
條件在最外圍加個if loop就行
你的意思是每個人買的時候  第一次就是物品a  然後買的時候都是物品b?
同樣係a
a係令integer[玩家索引]+1
b係令integer[玩家索引]-1
玩家1買左a
玩家2一樣可以買a
如此類推
========
順帶一提
如果個integer[玩家索引]>=0就唔可以買b
就係咁啦
作者: 古物.帝    時間: 2014-5-19 13:12

引用:
原帖由 Frayja 於 2014-5-19 13:08 發表
then 唔明個int有咩用
個int好有用的
------------
當然唔係用黎判斷d乜
係我諗出黎既idea
如果冇左既話
我不索性唔整
作者: Frayja    時間: 2014-5-19 14:05

你既idea係 當int係0先可以買b
唔係0就只可以買a?
作者: 古物.帝    時間: 2014-5-19 14:28

引用:
原帖由 Frayja 於 2014-5-19 14:05 發表
你既idea係 當int係0先可以買b
唔係0就只可以買a?
簡單d咁講
買a就好似買野咁
買b就好似賣野咁
用錢買左a
之後買左b之後會比番錢
作者: 古物.帝    時間: 2014-5-19 14:32

補充
唔止a b呢2件裝的
仲有a1 b1 a2 b2 a3 b3 a4 b4....既裝
買左a就唔可以買b
買左a1就唔可以買b1
買左a2就唔可以買b2
買左a3就唔可以買b3
買左a4就唔可以買b4
但係
買左a仲可以買a1 a2 a3 a4
買左a1 a2 a3 a4都係咁
所以咁樣用布林應該有d難
作者: Frayja    時間: 2014-5-19 16:06

買左a 可唔可以買b1
另外呢個係針對個人定全部人
例如 a君買左a    b君只可以買b1?
作者: Frayja    時間: 2014-5-19 16:07

一定要用布林
比個實例你  我買左a a1 a2 a3 a4  咁樣你既idea int係5
我賣左a3  int變左4
然後再買裝  就會a a1 a2 a4 a4
明唔明?
作者: 古物.帝    時間: 2014-5-19 16:25

引用:
原帖由 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
作者: 古物.帝    時間: 2014-5-19 16:26

引用:
原帖由 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的
作者: x00900    時間: 2014-5-19 16:50

就係要一個一個搞 Z____Z

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

我估要整幾日

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

好多野要做
作者: Frayja    時間: 2014-5-19 16:53

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
作者: Frayja    時間: 2014-5-19 16:54

其實如果用jass  可以用looper黎做
但考慮到你用T   我用顯淺既方法做比你睇
作者: 古物.帝    時間: 2014-5-19 17:00

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

=============
提供埋變數名稱同咩類型
作者: Frayja    時間: 2014-5-19 17:05

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

用咩方法唔重要   你明同個方法work就得
作者: 古物.帝    時間: 2014-5-19 17:08

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

用咩方法唔重要   你明同個方法work就得
即係8個變數 類型:物品
加多個布林?
---------------
不過其實我都係唔明的
作者: Frayja    時間: 2014-5-19 17:10

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

我用既變數只有布林陣列
作者: Frayja    時間: 2014-5-19 17:13

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

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

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

其他物品就對應番相對既布林陣列
作者: 古物.帝    時間: 2014-5-19 17:16

引用:
原帖由 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
作者: Frayja    時間: 2014-5-19 17:17

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

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

玩家1
玩家2...etc
作者: 古物.帝    時間: 2014-5-19 17:20

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

玩家1
玩家2...etc
咁玩家1係咪=1
玩家2=2
===============
t有分bj同cj(如果冇可能係we唔同)
bj係1-16
cj係0-15
所以我要問呢個問題
作者: Frayja    時間: 2014-5-19 17:22

其實無所謂
只要你全部都set同一個就得
作者: Frayja    時間: 2014-5-19 17:24

答番你先
玩家1 = 1
玩家2 = 2

btw
要注意  我用的方法是出售單位  不是出售物品
作者: 古物.帝    時間: 2014-5-19 17:24

引用:
原帖由 Frayja 於 2014-5-19 17:22 發表
其實無所謂
只要你全部都set同一個就得
咁係咪改左d物品名就ok?
==============
其實a/b既裝都係書來
所以呢句
call UnitAddItemByIdSwapped( 'I000', GetBuyingUnit() ) // 建立物品A給予購買者
係咪可以del左佢
我其實只係要加個數就ok
=======================
個整數唔洗set變數?

[ 本帖最後由 古物.帝 於 2014-5-19 17:26 編輯 ]
作者: 古物.帝    時間: 2014-5-19 17:27

咁我係咪要搞8次if

[ 本帖最後由 古物.帝 於 2014-5-19 17:29 編輯 ]
作者: Frayja    時間: 2014-5-19 17:37

書???
即是加能力????
作者: 古物.帝    時間: 2014-5-19 17:40

引用:
原帖由 Frayja 於 2014-5-19 17:37 發表
書???
即是加能力????
即係一拎左就會用
雖然我都知唔係書都得
作者: 古物.帝    時間: 2014-5-19 18:12

我寧願要jass
jass 1個copy全部搞掂
=============
why我覺得上面果個似jass多d
作者: Frayja    時間: 2014-5-19 18:16

唔小心刪左帖
其實你係地圖初始化個function入面set好d野就得
下面main function可以直接copy
要改個金錢數量
因為購買失敗會加番d錢比玩家
作者: 古物.帝    時間: 2014-5-19 18:17

引用:
原帖由 Frayja 於 2014-5-19 18:16 發表
唔小心刪左帖
其實你係地圖初始化個function入面set好d野就得
下面main function可以直接copy
要改個金錢數量
因為購買失敗會加番d錢比玩家
copy左佢就ok?
唔洗要之前果個?
===============
幾時放番
作者: Frayja    時間: 2014-5-19 18:18

//地圖初始化的資料(設立16個物品和16個模擬被購買的單位)

function intz takes nothing returns nothing
    set intz = CreateTrigger()
    call TriggerAddAction(intz, function Trig_intz2)
endfunction

function intz2 takes nothing returns nothing
   
    //出售單位後獲得的物品
    set P[1] = 'I000' //A
    set P[2] = 'I001' //B
    set P[3] = 'I002' //A1
    set P[4] = 'I003' //B1
    set P[5] = 'I004' //A2
    set P[6] = 'I005' //B2
    set P[7] = 'I006' //A3
    set P[8] = 'I007' //B3
    set P[9] = 'I008' //A4
    set P[10] = 'I009' //B4
    set P[11] = 'I010' //A5
    set P[12] = 'I011' //B5
    set P[13] = 'I012' //A6
    set P[14] = 'I013' //B6
    set P[15] = 'I014' //A7
    set P[16] = 'I015' //B7
   
    //模擬的出售單位
    set T[1] = 'e000' //A
    set T[2] = 'e001' //B
    set T[3] = 'e002' //A1
    set T[4] = 'e003' //B1
    set T[5] = 'e004' //A2
    set T[6] = 'e005' //B2
    set T[7] = 'e006' //A3
    set T[8] = 'e007' //B3
    set T[9] = 'e008' //A4
    set T[10] = 'e009' //B4
    set T[11] = 'e010' //A5
    set T[12] = 'e011' //B5
    set T[13] = 'e012' //A6
    set T[14] = 'e013' //B6
    set T[15] = 'e014' //A7
    set T[16] = 'e015' //B7
endfunction

// main function (要設置gold)

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
        set bj_forLoopAIndex = 1
        set bj_forLoopAIndexEnd = 16
        loop
            exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
            if ((GetUnitTypeId(GetSoldUnit()) == T[bj_forLoopAIndex])) then
                if ((bj_forLoopAIndex < 2)) then
                    if ((I[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] == false)) then
                        call UnitAddItemByIdSwapped( P[bj_forLoopAIndex], GetBuyingUnit() )
                        set I[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] = true
                    else
                        call SetPlayerStateBJ( GetOwningPlayer(GetBuyingUnit()), PLAYER_STATE_RESOURCE_GOLD, ( GetPlayerState(GetOwningPlayer(GetBuyingUnit()), PLAYER_STATE_RESOURCE_GOLD) + 100 ) )
                    endif
                else
                    if ((bj_forLoopAIndex < 4)) then
                        if ((II[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] == false)) then
                            call UnitAddItemByIdSwapped( P[bj_forLoopAIndex], GetBuyingUnit() )
                            set II[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] = true
                        else
                            call SetPlayerStateBJ( GetOwningPlayer(GetBuyingUnit()), PLAYER_STATE_RESOURCE_GOLD, ( GetPlayerState(GetOwningPlayer(GetBuyingUnit()), PLAYER_STATE_RESOURCE_GOLD) + 100 ) )
                        endif
                    else
                        if ((bj_forLoopAIndex < 6)) then
                            if ((III[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] == false)) then
                                call UnitAddItemByIdSwapped( P[bj_forLoopAIndex], GetBuyingUnit() )
                                set III[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] = true
                            else
                                call SetPlayerStateBJ( GetOwningPlayer(GetBuyingUnit()), PLAYER_STATE_RESOURCE_GOLD, ( GetPlayerState(GetOwningPlayer(GetBuyingUnit()), PLAYER_STATE_RESOURCE_GOLD) + 100 ) )
                            endif
                        else
                            if ((bj_forLoopAIndex < 8)) then
                                if ((IIII[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] == false)) then
                                    call UnitAddItemByIdSwapped( P[bj_forLoopAIndex], GetBuyingUnit() )
                                    set IIII[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] = true
                                else
                                    call SetPlayerStateBJ( GetOwningPlayer(GetBuyingUnit()), PLAYER_STATE_RESOURCE_GOLD, ( GetPlayerState(GetOwningPlayer(GetBuyingUnit()), PLAYER_STATE_RESOURCE_GOLD) + 100 ) )
                                endif
                            else
                                if ((bj_forLoopAIndex < 10)) then
                                    if ((IIIII[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] == false)) then
                                        call UnitAddItemByIdSwapped( P[bj_forLoopAIndex], GetBuyingUnit() )
                                        set IIIII[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] = true
                                    else
                                        call SetPlayerStateBJ( GetOwningPlayer(GetBuyingUnit()), PLAYER_STATE_RESOURCE_GOLD, ( GetPlayerState(GetOwningPlayer(GetBuyingUnit()), PLAYER_STATE_RESOURCE_GOLD) + 100 ) )
                                    endif
                                else
                                    if ((bj_forLoopAIndex < 12)) then
                                        if ((IIIIII[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] == false)) then
                                            call UnitAddItemByIdSwapped( P[bj_forLoopAIndex], GetBuyingUnit() )
                                            set IIIIII[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] = true
                                        else
                                            call SetPlayerStateBJ( GetOwningPlayer(GetBuyingUnit()), PLAYER_STATE_RESOURCE_GOLD, ( GetPlayerState(GetOwningPlayer(GetBuyingUnit()), PLAYER_STATE_RESOURCE_GOLD) + 100 ) )
                                        endif
                                    else
                                        if ((bj_forLoopAIndex < 14)) then
                                            if ((IIIIIII[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] == false)) then
                                                call UnitAddItemByIdSwapped( P[bj_forLoopAIndex], GetBuyingUnit() )
                                                set IIIIIII[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] = true
                                            else
                                                call SetPlayerStateBJ( GetOwningPlayer(GetBuyingUnit()), PLAYER_STATE_RESOURCE_GOLD, ( GetPlayerState(GetOwningPlayer(GetBuyingUnit()), PLAYER_STATE_RESOURCE_GOLD) + 100 ) )
                                            endif
                                        else
                                            if ((IIIIIIII[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] == false)) then
                                                call UnitAddItemByIdSwapped( P[bj_forLoopAIndex], GetBuyingUnit() )
                                                set IIIIIIII[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] = true
                                            else
                                                call SetPlayerStateBJ( GetOwningPlayer(GetBuyingUnit()), PLAYER_STATE_RESOURCE_GOLD, ( GetPlayerState(GetOwningPlayer(GetBuyingUnit()), PLAYER_STATE_RESOURCE_GOLD) + 100 ) )
                                            endif
                                        endif
                                    endif
                                endif
                            endif
                        endif
                    endif
                endif
            else
            endif
            set bj_forLoopAIndex = bj_forLoopAIndex + 1
        endloop
    else
    endif
endfunction
作者: Frayja    時間: 2014-5-19 18:19

加錢果句你應該會見到  我預設左係100蚊
如果你d野  買果陣唔洗錢就可以刪左呢句佢
作者: 古物.帝    時間: 2014-5-19 18:21

引用:
原帖由 Frayja 於 2014-5-19 18:19 發表
加錢果句你應該會見到  我預設左係100蚊
如果你d野  買果陣唔洗錢就可以刪左呢句佢
我睇到的
直接copy就搞掂?
作者: Frayja    時間: 2014-5-19 18:23

====變數====

陣列P是物品類型陣列
陣列T是單位類型陣列
另外I,II,III....,IIIIIIII是布林陣列
作者: 古物.帝    時間: 2014-6-18 13:35

做咩會咁既
作者: Frayja    時間: 2014-6-20 21:35

未定義t函數初始化

[ 本帖最後由 Frayja 於 2014-6-20 21:39 編輯 ]
作者: 古物.帝    時間: 2014-6-20 22:35

引用:
原帖由 Frayja 於 2014-6-20 21:35 發表
未定義t函數初始化
咁要點搞
係唔係要用t黎set左d變數先
作者: Frayja    時間: 2014-6-21 09:43

好簡單
自訂文本d野唔好刪
原先的InitTrig_intz call intz function就行
當然
要有觸發條件
作者: 古物.帝    時間: 2014-6-21 11:50

引用:
原帖由 Frayja 於 2014-6-21 09:43 發表
好簡單
自訂文本d野唔好刪
原先的InitTrig_intz call intz function就行
當然
要有觸發條件
我諗我明既
(今次顯出我係個JASS白癡 )
作者: 古物.帝    時間: 2014-6-30 16:09

呢下又咩事
作者: Frayja    時間: 2014-7-1 08:55

沒有定義觸發器?
要定義為null
作者: 古物.帝    時間: 2014-7-1 11:38

引用:
原帖由 Frayja 於 2014-7-1 08:55 發表
沒有定義觸發器?
要定義為null
即係應該點寫
作者: Frayja    時間: 2014-7-2 20:59

function格式錯誤
function裡面還再開一個function
作者: 古物.帝    時間: 2014-7-2 22:39

引用:
原帖由 Frayja 於 2014-7-2 20:59 發表
function格式錯誤
function裡面還再開一個function
短短的兩句
卻包含了深懊的意思(即係話我唔明 )
作者: Frayja    時間: 2014-7-2 22:55

function gg_tri_intz takes nothing returns nothing
   //.................
function buy_item takes nothing returns nothing
endfunction

endfunction

以上格式是錯誤的

function ... takes nothing returns nothing
...
endfunction   為一個完整的function

而一個完整的function中不能再建構一個function
只能call一個function
作者: 古物.帝    時間: 2014-7-3 12:25

引用:
原帖由 Frayja 於 2014-7-2 22:55 發表
function gg_tri_intz takes nothing returns nothing
   //.................
function buy_item takes nothing returns nothing
endfunction

endfunction

以上格式是錯誤的

function ... takes nothing returns ...
即係唔要1個?
如果係既話都係唔得
作者: 古物.帝    時間: 2014-7-3 12:51

function buy_item2 takes nothing returns nothing
if ((IsUnitType(GetBuyingUnit(), UNIT_TYPE_HERO) == true)) then
         set bj_forLoopAIndex = 1
         set bj_forLoopAIndexEnd = 16
         loop
             exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
             if ((GetUnitTypeId(GetSoldUnit()) == T[bj_forLoopAIndex])) then
                 if ((bj_forLoopAIndex < 2)) then
                     if ((I[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] == false)) then
                         call UnitAddItemByIdSwapped( P[bj_forLoopAIndex], GetBuyingUnit() )
                         set I[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] = true
                     else
                     endif
                 else
                     if ((bj_forLoopAIndex < 4)) then
                         if ((II[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] == false)) then
                             call UnitAddItemByIdSwapped( P[bj_forLoopAIndex], GetBuyingUnit() )
                             set II[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] = true
                         else
                           
                         endif
                     else
                         if ((bj_forLoopAIndex < 6)) then
                             if ((III[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] == false)) then
                                 call UnitAddItemByIdSwapped( P[bj_forLoopAIndex], GetBuyingUnit() )
                                 set III[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] = true
                             else
                              
                             endif
                         else
                             if ((bj_forLoopAIndex < 8)) then
                                 if ((IIII[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] == false)) then
                                     call UnitAddItemByIdSwapped( P[bj_forLoopAIndex], GetBuyingUnit() )
                                     set IIII[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] = true
                                 else
                                    
                                 endif
                             else
                                 if ((bj_forLoopAIndex < 10)) then
                                     if ((IIIII[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] == false)) then
                                         call UnitAddItemByIdSwapped( P[bj_forLoopAIndex], GetBuyingUnit() )
                                         set IIIII[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] = true
                                     else
                                         
                                     endif
                                 else
      if ((bj_forLoopAIndex < 12)) then
                 if ((IIIIII[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] == false)) then
                                             call UnitAddItemByIdSwapped( P[bj_forLoopAIndex], GetBuyingUnit() )
                                             set IIIIII[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] = true
                                         else
                                             
                                         endif
                                     else
    if ((bj_forLoopAIndex < 14)) then
   if ((IIIIIII[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] == false)) then
                                                 call UnitAddItemByIdSwapped( P[bj_forLoopAIndex], GetBuyingUnit() )
                                                 set IIIIIII[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] = true
                                             else
                                             
                                             endif
                                         else
    if ((IIIIIIII[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] == false)) then
                                                 call UnitAddItemByIdSwapped( P[bj_forLoopAIndex], GetBuyingUnit() )
                                                 set IIIIIIII[GetConvertedPlayerId(GetOwningPlayer(GetBuyingUnit()))] = true
                                             else
                                                
                                             endif
                                         endif
                                     endif
                                 endif
                             endif
                         endif
                     endif
                 endif
             else
             endif
             set bj_forLoopAIndex = bj_forLoopAIndex + 1
         endloop
     else
     endif
endfunction
呢段好似係問題所在
我試過分開左佢地
得呢部分出現左文法錯誤
作者: Frayja    時間: 2014-7-3 23:14

考慮到你不熟悉jass跟hash table
我用最簡單的方法做了個sample給你看
作者: 古物.帝    時間: 2014-7-4 15:52

引用:
原帖由 Frayja 於 2014-7-3 23:14 發表
考慮到你不熟悉jass跟hash table
我用最簡單的方法做了個sample給你看
收下了
如果再有問題我會再問
F大師咁勁你唔可以縮架
========================
表示無奈

[ 本帖最後由 古物.帝 於 2014-7-4 16:15 編輯 ]
作者: 古物.帝    時間: 2014-7-17 23:23

順帶一問(此帖之問題已解決)
點樣先可以設定物品既最大擁有數量
即係例: 生命藥水 1格最多有5枝(數字7) 多出5枝就係第格(數字8)到擺
作者: y20011074    時間: 2014-7-18 13:16

引用:
原帖由 古物.帝 於 2014-7-17 23:23 發表
順帶一問(此帖之問題已解決)
點樣先可以設定物品既最大擁有數量
即係例: 生命藥水 1格最多有5枝(數字7) 多出5枝就係第格(數字8)到擺
使用次數?
作者: 古物.帝    時間: 2014-7-18 13:53

引用:
原帖由 y20011074 於 2014-7-18 13:16 發表

使用次數?
................................試下先
作者: 古物.帝    時間: 2014-7-18 21:03

唉~~~~~~
一個唔小心將張圖DEL左
搞到個觸發要再整
整完又冇效(之前有效的......)
=======================
回帖後解決左
------
我諗我諗到點搞個使用次數
===================
都係搞唔掂

[ 本帖最後由 古物.帝 於 2014-7-18 21:39 編輯 ]
作者: Frayja    時間: 2014-7-20 13:31

藥不能停啊
作者: 古物.帝    時間: 2014-7-20 13:38

引用:
原帖由 Frayja 於 2014-7-20 13:31 發表
藥不能停啊
收下(咩黎架)
作者: 古物.帝    時間: 2014-7-22 11:19

引用:
原帖由 Frayja 於 2014-7-20 13:31 發表
藥不能停啊
只限買賣唔多好
我諗住用獲得物品
但係冇效
作者: Frayja    時間: 2014-7-26 11:51

就算再忙
藥依然不能停
作者: 古物.帝    時間: 2014-7-26 12:02

引用:
原帖由 Frayja 於 2014-7-26 11:51 發表
就算再忙
藥依然不能停
我太勁
ko左
不過都睇下你點整先
thx




歡迎光臨 IPvE vLan 遊戲平台|網吧系統 (https://www.ipve.com/bbs/) Powered by Discuz! 6.0.0