找回密码
 点一下
查看: 1054|回复: 9

限制各职业装备

[复制链接]
发表于 2011-5-11 18:17:02 | 显示全部楼层 |阅读模式
如何做到用物品的生命值来限制各职业所使用的装备?
因为解决了,所以删掉了求助内容~~~~~~~~~
现在我遇到的就是这样的一个问题,在论坛找了一下又没找到符合要求的,所以请有能力的朋友帮我写一下,以下附上原作者的限制装备地图。帮忙的话,顺便把等级的限制那一段去掉,尽量和原作者一样,能不用变量就尽量不要使用变量。如有更简单的方法就感激不尽了。

装备限制.w3x (17 KB, 下载次数: 14)

装备限制[改].w3x (18 KB, 下载次数: 20)
发表于 2011-5-11 22:19:03 | 显示全部楼层
修改了两部分:
一、单位编辑里的附加值,地精11,游侠12,兽王13。
二、各物品的生命值,地精部分是11、22,游侠是12、24,兽王是13、26。

另外附加一个触发,禁用原来的两个,如果你看懂了,相信拆成三个分别对应不同情况的文字输出没问题。
[trigger]
未命名触发器 001
    事件
        单位 - 任意单位 获得物品
    条件
    动作
        循环动作[循环整数A]从 1 到 6, 运行 (Loop - 动作)
            Loop - 动作
                如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
                    If - 条件
                        ((触发单位) 物品栏第 (循环整数A) 格的物品) 不等于 (被操作物品)
                        Or - 任意条件成立
                            条件
                                ((触发单位) 的英雄等级) 小于 ((被操作物品) 的物品等级)
                                (((触发单位) 物品栏第 (循环整数A) 格的物品) 的当前生命值) 等于 ((被操作物品) 的当前生命值)
                                ((转换 ((被操作物品) 的当前生命值) 为整数) mod ((触发单位) 的附加值)) 不等于 0
                    Then - 动作
                        游戏 - 对 (触发玩家) 在屏幕位移(0.00,0.00)处显示文本: 你无法拾取该...
                        英雄 - 丢弃 (被操作物品) ,从 (触发单位) 身上
                    Else - 动作
[/trigger]

装备限制(改).w3x

16 KB, 下载次数: 17

回复

使用道具 举报

 楼主| 发表于 2011-5-12 08:14:03 | 显示全部楼层
感谢楼上的帮助,虽然我没有在地图试用,不过你用的数值我还是有点不明白:
“一、单位编辑里的附加值,地精11,游侠12,兽王13。
二、各物品的生命值,地精部分是11、22,游侠是12、24,兽王是13、26。”

从上面的数值来看你用的也是倍数,是不是只有这个方法才能实现,而用实数的方法(我指的是指定的数值,如“1=地精”、“2=游侠”等,)则实现不了呢?

主要问题是因为我正在做的图所用到的职业可能在8种以上,我是为了便于计算想到改为使用指定数的,因为装备和职业多了用原有的方法在写触发的时候很容易造成混乱,这样的话出现错误会很大。

希望你能理解。
回复

使用道具 举报

发表于 2011-5-12 10:31:02 | 显示全部楼层

回 2楼(3xivw) 的帖子

其实这是跟据你的要求写的,为什么是11、12、13而不是1、2、3呢,原因很简单。

因为那样子写比较方便,特别是取值MOD的情况下不会冲突。

像装备是11、22、33、44 ~ 99,和12、24、36~108,一共可以有九种不同装备类型。

而11、12 ~ 19 一共可以有九种不同的职业。

我这里主要是告诉你一个原理,并不是一定要这样写,而是要在取值过程中如何和其它数据不冲突。

至于为什么1、2、3不行,也不是绝对的,重点还是你的计算公式,比如我前面设定的装备值。是取单位值的1、2、3 ~ 9倍,如果同样用这种方式的话,当你的单位值是1的时候取值为1、2、3 ~ 9,而单位值是2的时候,取值是2、4、6 ~ 18,同样生命值为2的装备就会产生冲突了。(这部分比较绕,最好可以多看几次演示,应该会明白,答案不是唯一,能处理好冲突就OK了)
回复

使用道具 举报

发表于 2011-5-12 11:15:45 | 显示全部楼层
用11、12 ~ 19表示9种职业,每种职业各9种武器的话还是有冲突的,像36啊48啊这些
要用这种方法,那么取数可以这么做
如果有m个职业,每个职业有n种武器,那么每个职业的基础值就取大于m和n的m个不同质数就可以了,保证冲突不起来
比如m、n都为9的话,就取11、13、17、19、23、29、31、37、41,因为这些都是质数,所以本身互质,而且他们都比n大,所以不会出现当某个数乘了一个不大于n的数后变成另一个数的倍数
回复

使用道具 举报

 楼主| 发表于 2011-5-12 11:48:35 | 显示全部楼层
十分感谢你们帮助,
551155 ,我根据你给的触发作了调整,现在在装备区分方面已经完全没有问题了,只不过在测试的时候还是有一个地方让我无法理解。

打个比方:
兽王去捡游侠的装备,因为与触发所设的条件,无法捡起来。这一点是没错的,触发起到作用了。
但是,对玩家的提示文字漂了一在片出来(如果是兽王自己的装备才出现一行而已)。

难道我要因为这个影响视觉的问题去掉提示?有没办法处理?

以下是我根据551155所给的触改为规定数后的触发:
未命名触发器 001 复制
    事件
        单位 - 任意单位 获得物品
    条件
        任一条件成立
            条件
                ((被操作物品) 的当前生命值) 等于 20.00
                ((被操作物品) 的当前生命值) 等于 30.00
                ((被操作物品) 的当前生命值) 等于 40.00
    动作
        For循环整数A从 1 到 6, 做动作
            Loop - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        ((触发单位) 物品栏第 (循环整数A) 格的物品) 不等于 (被操作物品)
                        ((触发单位) 的类型) 等于 驯兽师
                        任一条件成立
                            条件
                                (((触发单位) 物品栏第 (循环整数A) 格的物品) 的当前生命值) 等于 ((被操作物品) 的当前生命值)
                                ((((被操作物品) 的当前生命值) + (转换 (((触发单位) 的类型) 的附加值) 为实数)) 的绝对值) 不等于 50.00
                    Then - 动作
                        游戏 - 对 (触发玩家) 在屏幕位移(0.00,0.00)处显示文本: 无法拾取物品...
                        英雄 - 丢弃 (被操作物品) ,从 (触发单位) 身上
                    Else - 动作
        For循环整数A从 1 到 6, 做动作
            Loop - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        ((触发单位) 物品栏第 (循环整数A) 格的物品) 不等于 (被操作物品)
                        ((触发单位) 的类型) 等于 黑暗游侠
                        任一条件成立
                            条件
                                (((触发单位) 物品栏第 (循环整数A) 格的物品) 的当前生命值) 等于 ((被操作物品) 的当前生命值)
                                ((((被操作物品) 的当前生命值) + (转换 (((触发单位) 的类型) 的附加值) 为实数)) 的绝对值) 不等于 50.00
                    Then - 动作
                        游戏 - 对 (触发玩家) 在屏幕位移(0.00,0.00)处显示文本: 无法拾取物品...
                        英雄 - 丢弃 (被操作物品) ,从 (触发单位) 身上
                    Else - 动作
        For循环整数A从 1 到 6, 做动作
            Loop - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        ((触发单位) 物品栏第 (循环整数A) 格的物品) 不等于 (被操作物品)
                        ((触发单位) 的类型) 等于 修补匠
                        任一条件成立
                            条件
                                (((触发单位) 物品栏第 (循环整数A) 格的物品) 的当前生命值) 等于 ((被操作物品) 的当前生命值)
                                ((((被操作物品) 的当前生命值) + (转换 (((触发单位) 的类型) 的附加值) 为实数)) 的绝对值) 不等于 50.00
                    Then - 动作
                        游戏 - 对 (触发玩家) 在屏幕位移(0.00,0.00)处显示文本: 无法拾取物品...
                        英雄 - 丢弃 (被操作物品) ,从 (触发单位) 身上
                    Else - 动作

现在我把地图发上来。看看能不能把那一大片的飘浮文字修正一下。
装备限制(地精改).w3x (13 KB, 下载次数: 8)
回复

使用道具 举报

发表于 2011-5-12 11:57:22 | 显示全部楼层
    漂浮文字更改成   【游戏 - 对指定玩家发送消息】 好了
回复

使用道具 举报

 楼主| 发表于 2011-5-12 12:10:19 | 显示全部楼层
引用第6楼uoer于2011-05-12 11:57发表的  :
    漂浮文字更改成   【游戏 - 对指定玩家发送消息】 好了
现在用的就是这个。捡到别人的装备时,屏幕上全是提示................................
回复

使用道具 举报

发表于 2011-5-12 13:30:13 | 显示全部楼层
因为你用了多次的判断,我的触发里面只有一个循环动作。

你可以把判断结果存成布尔变量,运行结束再执行判断这个变量,然后执行动作。
回复

使用道具 举报

 楼主| 发表于 2011-5-13 11:47:33 | 显示全部楼层
经过苦苦努力,损失一定数量的脑细胞后,终于把这个触发弄好了(毕竟对于触发还是处于小白阶段呀~~~~~~)

装备限制:单位附加值+物品生命值=自定义的数值
如防具限制为:单位附加值+物品生命值=50(50为自定义的数值)

以下是触发(调整后的可用自由更广,无论职业或装备有多少,调用起来都十分方便)

WQ170
    事件
        单位 - 任意单位 获得物品
    条件
        ((触发单位) 的类型) 等于 黑暗游侠
        任一条件成立
            条件
                ((被操作物品) 的当前生命值) 等于 170.00
                ((被操作物品) 的当前生命值) 等于 180.00
                ((被操作物品) 的当前生命值) 等于 190.00
    动作
        如果所有条件成立则做动作1,否则做动作2
            If - 条件
                ((被操作物品) 的当前生命值) 等于 170.00
            Then - 动作
                For循环整数A从 1 到 6, 做动作
                    Loop - 动作
                        如果所有条件成立则做动作1,否则做动作2
                            If - 条件
                                ((触发单位) 物品栏第 (循环整数A) 格的物品) 不等于 (被操作物品)
                                任一条件成立
                                    条件
                                        (((触发单位) 物品栏第 (循环整数A) 格的物品) 的当前生命值) 等于 ((被操作物品) 的当前生命值)
                                        ((((被操作物品) 的当前生命值) + (转换 (((触发单位) 的类型) 的附加值) 为实数)) 的绝对值) 不等于 200.00
                            Then - 动作
                                游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: 你不可以同时...
                                英雄 - 丢弃 (被操作物品) ,从 (触发单位) 身上
                            Else - 动作
            Else - 动作
                英雄 - 丢弃 (被操作物品) ,从 (触发单位) 身上
                游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: (((被操作物品) 的名字) + 不是你的装备!)

有需要的话,下载在一楼。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-6 21:17 , Processed in 0.173648 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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