找回密码
 点一下
查看: 3473|回复: 11

简易背包系统! 分享!适合新手使用!

[复制链接]
发表于 2010-12-22 23:32:50 | 显示全部楼层 |阅读模式
      做了个背包系统,给新手分享,其他人莫见怪.


系统说明:  就是当你物品栏满时,看到地上还有宝物,但是拿不够了,这时你可以点切换背包技能,然后你的物品栏就会全空,就是切换到了第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]
发表于 2010-12-23 07:09:32 | 显示全部楼层
多重背包的系统很多,lz可以参考下,属性保留还是可以实行的……
回复

使用道具 举报

 楼主| 发表于 2010-12-23 09:37:22 | 显示全部楼层

回 1楼(疯人¢衰人) 的帖子

我不太喜欢  那个方法不好   每个物品都要设置添加 删除技能    对于物品多而杂的地图  是自寻烦恼

至于多重背包  我制作2个 自然也会制作3个了  2个够用了的  3个 切换起来  要多按次 才切换过来 没必要

不同的需要 制作不同的东西啊
回复

使用道具 举报

发表于 2010-12-23 12:57:49 | 显示全部楼层
分享个哈希表的吧 游戏缓存实在太麻烦了
回复

使用道具 举报

发表于 2010-12-23 20:24:01 | 显示全部楼层
多物品栏可以实现,具体我有个很早的帖子……
回复

使用道具 举报

 楼主| 发表于 2010-12-24 09:13:26 | 显示全部楼层
引用第3楼ws04131415于2010-12-23 12:57发表的 :
分享个哈希表的吧 游戏缓存实在太麻烦了

一点都不麻烦吧   就那么简单的4个步骤  学WE  1个月的人就应该会了  不会的话  我是没什么想法了
回复

使用道具 举报

发表于 2010-12-24 11:16:27 | 显示全部楼层
居然还用Return Bug,不是已经被干掉的东西了么,难道还停留在远古的版本?
回复

使用道具 举报

 楼主| 发表于 2010-12-24 13:44:35 | 显示全部楼层
引用第6楼zhuzeitou于2010-12-24 11:16发表的 :
居然还用Return Bug,不是已经被干掉的东西了么,难道还停留在远古的版本?

1.20e永恒的经典   

嘿嘿  

话说  不知道 1.24用了哈希表后  能不能实现数据的绑定  绑定到 单位或 计时器    一直用 1.20e 对1.24表示 陌生

现在玩1.20eRPG的人 还是不在少数啊
回复

使用道具 举报

发表于 2010-12-24 14:38:00 | 显示全部楼层
经典?经典在哪呢?在国内的那些平台都坚持1.20么?还是在网吧迟迟不更新呢?如果要说一些不再更新的老图无法在1.24下运行,那1.21、1.22、1.23这些版本还是可以的,1.20比他们好在哪里?
如果不是1.24的重大变革造成某些流行图的新版本必须在高版本上运行的话,或许更多人还在1.20吧?
经典这个词已经被国人用烂了,而不接受变革、不接受新事物也成了很多国人共有的特征了。如果某系列出了新作品,并有一些颠覆性变革的内容的话,必然会有一群所谓“骨灰”跳出来,说新作不如原作,原因就是有了这些新的东西,新作已经不是原来的XX系列了,只有原作才是经典。那些变革虽然的确不一定都是好的,但至少不会全是那么不堪的,那些人全盘否定它们只是因为他们完全不能接受新事物。

好吧,莫名其妙的话不说下去了………………
回复

使用道具 举报

发表于 2010-12-24 15:52:22 | 显示全部楼层
自1.22之后,魔兽就没平衡性调整了,但blz还更新了这么多个版本,你以为blz的人都是吃饱了撑着?抛弃GC是为了防止作弊,HKE作弊脚本很强大?不玩盗版图就没事了。你用1.20的GC,我甚至可以做一个有HKE的正版图。抛弃RB是因为RB可以让地图执行任意本地代码,这代码可以是个作弊器或者下载一个木马。

速度上的优化就更多了,没记错的话1.20的字符串读取算法的复杂度是跟字符串表的长度有关的,而1.22之后复杂度是个常数。
回复

使用道具 举报

发表于 2010-12-24 22:28:10 | 显示全部楼层
还是新东西好……
回复

使用道具 举报

 楼主| 发表于 2010-12-25 11:32:56 | 显示全部楼层
引用第9楼actboy168于2010-12-24 15:52发表的 :
自1.22之后,魔兽就没平衡性调整了,但blz还更新了这么多个版本,你以为blz的人都是吃饱了撑着?抛弃GC是为了防止作弊,HKE作弊脚本很强大?不玩盗版图就没事了。你用1.20的GC,我甚至可以做一个有HKE的正版图。抛弃RB是因为RB可以让地图执行任意本地代码,这代码可以是个作弊器或者下载一个木马。

速度上的优化就更多了,没记错的话1.20的字符串读取算法的复杂度是跟字符串表的长度有关的,而1.22之后复杂度是个常数。

没那么夸张吧

HKC添加过的地图  都是盗版地图 哪里算正版  而且是要读图的  1.24也可以用HKC添加的   GC 的使用 是可以互通那倒是真的  但是不是像DOTA那样的大型对战RPG  谁会花心思去做互通   把代码全部理清再修改  不是那么简单的 会的又有几个呢

至于速度上的优化   恐怕不会太明显  CPU E 5300  内存2G的电脑   这种普通配置的电脑  应该完全感觉不到了  如果是游戏的配置  更是忽略不计了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-22 04:59 , Processed in 0.032291 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表