|
做了个背包系统,给新手分享,其他人莫见怪.
系统说明: 就是当你物品栏满时,看到地上还有宝物,但是拿不够了,这时你可以点切换背包技能,然后你的物品栏就会全空,就是切换到了第2个背包了.默认第2个背包是空的.你又可以捡物品了,免得难以对宝贝取舍.再点一下,又可以切换到背包1.总共2个背包. 当你要把背包2的物品放到背包1,那就切换到背包2,然后把那个物品扔地上,切换到1,然后捡取.(其实说的都是些常识,完全是说给新手的)
好处:
你不用再设置什么仓库来给玩家存储物品了 那是多余
不用新建什么全局变量 容易转移
增加了英雄的物品携带数量,使用方便
下面说这个系统的使用方法: (使用非常简单)
1.新建一个技能用咆哮做模板,然后把技能名字和提示文字改成背包系统就可以了
2.把这个技能给需要有切换背包功能的英雄
3.写一个触发:事件:任意单位发动技能效果
条件:释放的技能为 XX(你设定的那个背包技能)
动作:用那个自定义代码动作 输入 "call BeiBaoXiTong( )" 补充:引号别输入哦 还有 "( )" 这个是需要的
4.把下面的代码 整个复制到 触发器中 地图名字点击 右边可以输入代码的地方
[jass]
globals
gamecache GC=InitGameCache("gc")
endglobals
function H2I takes handle h returns integer
return h
return 0
endfunction
function I2H takes integer i returns handle
return i
return null
endfunction
function H2U takes handle i returns unit
return i
return null
endfunction
function H2WP takes handle i returns item //物品
return i
return null
endfunction
function BeiBaoXiTong takes nothing returns nothing
local integer i_xh1=1
local unit u1 = GetSpellAbilityUnit()
local integer i_u1=H2I(u1)
local integer array i1 //物品的ID
local item array wp1
local item array wp2
local location p1=Location(7194,6950)
loop
exitwhen i_xh1>6
if UnitItemInSlotBJ(u1, i_xh1)!=null then
set wp1[i_xh1]=UnitItemInSlotBJ(u1, i_xh1)
call SetItemPositionLoc( wp1[i_xh1], p1 )
call SetItemVisibleBJ( false, wp1[i_xh1] )
else
set wp1[i_xh1]=null
endif
set i_xh1=i_xh1+1
endloop
set i_xh1=1
loop
exitwhen i_xh1>6
set wp2[i_xh1]=null
set i1[i_xh1]=GetStoredInteger(GC,I2S(i_u1),"wp"+I2S(i_xh1))
if i1[i_xh1]!=0 then
set wp2[i_xh1]=H2WP(I2H(i1[i_xh1]))
endif
if wp2[i_xh1]!=null then
call UnitAddItemSwapped( wp2[i_xh1], u1 )
call UnitDropItemSlotBJ( u1, wp2[i_xh1], i_xh1 )
endif
set i_xh1=i_xh1+1
endloop
set i_xh1=1
loop
exitwhen i_xh1>6
if wp1[i_xh1]!=null then
set i1[i_xh1]=H2I(wp1[i_xh1])
call StoreInteger(GC,I2S(i_u1),"wp"+I2S(i_xh1),i1[i_xh1])
else
set i1[i_xh1]=0
call StoreInteger(GC,I2S(i_u1),"wp"+I2S(i_xh1),i1[i_xh1])
endif
set i_xh1=i_xh1+1
endloop
call RemoveLocation(p1)
set p1=null
set u1=null
set i_xh1=1
loop
exitwhen i_xh1>6
set wp1[i_xh1]=null
set wp2[i_xh1]=null
set i_xh1=i_xh1+1
endloop
endfunction
[/jass] |
|