找回密码
 点一下
查看: 2334|回复: 18

请问实时合成的系统该怎么做?

[复制链接]
发表于 2020-12-16 13:57:42 | 显示全部楼层 |阅读模式
我想类似moba的地图,现在就差装备合成了,但是对于这一块一点都不懂,请大佬帮想做一个和lol那样实时合成的系统,可以有偿,请大佬帮帮忙
发表于 2020-12-16 20:13:11 | 显示全部楼层
实时合成是指的如果获取某物品,和物品栏里的其他物品满足某合成公式,就自动合成装备吧。
那么用单位获得物品作为事件,然后找出所有包含该物品的合成公式,逐一探测哪个公式符合,然后移除原料,创建产物。

点评

试了一下弄不起来.....  详情 回复 发表于 2020-12-17 10:42
高德,我试试,感谢大佬  详情 回复 发表于 2020-12-17 09:35
回复

使用道具 举报

 楼主| 发表于 2020-12-17 09:35:50 | 显示全部楼层
本帖最后由 lettle 于 2020-12-17 10:15 编辑
yxxiaobin 发表于 2020-12-16 20:13
实时合成是指的如果获取某物品,和物品栏里的其他物品满足某合成公式,就自动合成装备吧。
那么用单位获得 ...

好的,我试试,感谢大佬
回复

使用道具 举报

 楼主| 发表于 2020-12-17 10:42:02 | 显示全部楼层
yxxiaobin 发表于 2020-12-16 20:13
实时合成是指的如果获取某物品,和物品栏里的其他物品满足某合成公式,就自动合成装备吧。
那么用单位获得 ...

试了一下弄不起来.....
回复

使用道具 举报

发表于 2020-12-17 18:55:09 | 显示全部楼层
本帖最后由 Nostalie 于 2020-12-17 19:46 编辑

两种类型都说一下怎么做,但是强推第二种吧。

1、购买小件自动合成大件的类型。
每次购买小件之后。
查询所有公式。公式的满足条件符合。就存入数组。
最后跳出一个面板。让玩家选择合成哪一个。或者不合成。(比如玩家有A买了B,他不想合成AB,而是等买C之后合成AC。只是因为B本身性价比高才买的B)
比如A+B合成AB A+C合成AC。(比如你手头有B,C再买了A就可以选择。是合成AB,还是AC。)
都没满足就结束掉循环。
合成完毕后就。按照合成公式。删掉原料,给合成结果。
重新看合成结果的出现是否会满足新公式。

为了节约计算资源,你可以记录物品是哪些合成公式的原料,只遍历那些物品、


关于合成公式的记录。推荐使用结构体(录制)。每个合成公式包含目标。原料1,原料2……合成费用等……。然后这个结构体再搞个数组。可以直接是商店上的次序。


2、购买大件自动消耗小件并减少费用的类型。

正常moba游戏的合成,LOL,王者荣耀。星际里也有,比如永恒风暴那种合成吧。
就是商店里可以直接买大件的时候,你有小件就会便宜(没小件就会贵),合成完了之后用到的小件就移除。

思路如下。就是用到堆栈。这个概念应该很好理解。随便搜一下就懂了。我一个非计算机专业的也能轻松看懂。
比如由A由B,C,D合成。B,C,D都有时合成费用是100。
那么就把B,C,D放入栈。
循环。
每次循环从栈顶拿出一个装备。
如果该装备有,那么把该装备存入数组。合成成功后进行移除。
如果没有该装备继续分两种情况。
1、基础装备(无法合成只能直接购买的装备):那么把合成费用加上这个装备的购买单价比如基础装备D单价是10那么总价就是100+10=110。
2、不是基础装备比如D又由 EFG合成。那么把EFG压入栈顶。并在总价加上EFG合成D的合成费用。
继续循环直到栈空。
(当然你愿意反着来也是可以 。比如A的全价格是2000,那么有小件的时候就扣除小件的全价就好了。只要保证合成的全价不会比原料的全价和低就好了。。。)
堆栈的做法适合无限层的合成。当然UI显示两层就好了参考永恒风暴。就是你要为每个物品确定一个唯一的主要合成公式。(一般人也不会搞不同合成公式能合成同个物品这种骚操作吧)


推荐第二种吧。
第二种能直接买大件。而不需要有了直接买大件的钱,为了合成大件分开买一堆小的。也不需要有多种目标可选的时候让玩家选择合成什么。
而且第一种如果有合成费用(大多数MOBA都有)就需要玩家每获得钱的话就又要检测,真是太烦。



点评

你干脆给别人一个吧,别一直理论。  详情 回复 发表于 2020-12-18 07:29
回复

使用道具 举报

发表于 2020-12-17 19:50:34 | 显示全部楼层
弄不起来
大概能说明你基础太差了。
稍微学点C语言入门也不至于不会啊。。。

点评

感谢大佬,我研究研究,就是没学过编程稍微难点的就给难住了  详情 回复 发表于 2020-12-18 10:26
回复

使用道具 举报

发表于 2020-12-17 22:15:21 | 显示全部楼层
本帖最后由 小桐 于 2020-12-17 22:18 编辑

装备合成有很多  像魔兽地图都有装备合成   我觉得你可以借鉴下  魔兽的装备合成发展这么多年有很多方式  这是魔兽的 装备升级的方式有很多很多,其实综合起来和物品合成只有稍稍区别,也就是检查身上携带的物品以及通过条件来判断删除源物品创建新物品。装备升级可以用一个触发完成,但相对的改动起来会比较麻烦,因为是直接指定物品的,也可以用变量来进行设定,这样改动起来非常方便,先来看一下变量设定:
[trigger]
    事件
        地图初始化
    条件
    动作
        可见度 - 禁用战争迷雾
        可见度 - 禁用黑色阴影
        设置 TYPE[1] = 攻击之爪 +3
        设置 TYPE[2] = 攻击之爪 +6
        设置 TYPE[3] = 攻击之爪 +9
        设置 TYPE[4] = 攻击之爪 +12
        设置 TYPE[5] = 攻击之爪 +15
        设置 TYPE_Up[1] = Lv 1 up
        设置 TYPE_Up[2] = Lv 2 up
        设置 TYPE_Up[3] = Lv 3 up
        设置 TYPE_Up[4] = Lv 4 up
[/trigger]
  演示要点:这里所有的变量组类型都是“物品类型”,TYPE[?]就是装备,TYPE Up[?]是配合物品,还有一个物品是用来升级装备的“武器升级”,在另一个触发里:
[trigger]
    事件
        单位 - 任意单位 获得物品
    条件
        ((被操作物品) 的类型) 等于 武器升级
    动作
        For N 从 1 到 4, 做动作
            Loop - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        (((触发单位) 所持有的 TYPE[N]) 的类型) 等于 TYPE[N]
                        (((触发单位) 所持有的 TYPE_Up[N]) 的类型) 等于 TYPE_Up[N]
                    Then - 动作
                        物品 - 删除 ((触发单位) 所持有的 TYPE[N])
                        物品 - 删除 ((触发单位) 所持有的 TYPE_Up[N])
                        英雄 - 创建 TYPE[(N + 1)] 给 (触发单位)
                        如果所有条件成立则做动作1,否则做动作2
                            If - 条件
                                TYPE[(N + 1)] 等于 TYPE[5]
                            Then - 动作
                                游戏 - 对 ((触发单位) 的所有者) 在屏幕位移(0.00,0.00)处显示文本: 装备已经升级到顶!
                            Else - 动作
                                无动作
                        设置 N = 4
                    Else - 动作
                        无动作
[/trigger]
  演示要点:可以看到,这里的升级是先获得“武器升级”这个物品,然后再进行判断,一般来说,像用来升级的物品,尽量用书本或者神符等可以在物品携带满的情况下获得的物品来制作,这样就不会因为物品数量限制而无法获得。
  接下来是循环判断,在这里用了一个自定义数循环变量,然后看下面的动作,TYPE[?]和TYPE Up[?]在这里充当了一个相互配合的作用,在[?]下标相同的情况下合成才会实现,而这个下标的定义在前面一个触发里已经设定好了,只要修改前面触发里对等的两个变量就可以对升级产生不同的合成方式。
  在条件成立的情况下,将这两个物品删除,然后再赋于一个新的高一等级的物品,这个就是装备升级的特色,不同于物品合成的地方。然后看下面有一个N=4,其作用就是跳出这个循环,因为再执行下去N会自然变成N+1,也就是5。如果不跳出这个循环,将会出现装备一升到顶的情况:比如你拿着攻击之爪+3,再携带升级物品1到4级,会直接升级成攻击之爪+15。

演示6,通用物品合成
  这个其实就是类似于物品合成,不过应用范围相对更广一些,当然也不可能面面俱到啦~不过只需要适当调整一下就可以应用到任何(源+源)+卷=合的合成中了。这个触发也需要另一个物品类型的定义配合,比如:
  物品类型变量[1]=原材料1  物品类型变量[2]=原材料2 物品类型变量[3]=合成物 物品类型变量[4]=合成卷
  而第一个FOR循环的10就是你的组数,上面四个变量为一组,类推……在这里需要说明的是,如果利用前面的物品初始化的话,可以很方便的对大量物品在进行定义和修正。
  通告:本演示发现重大BUG,其中原来的“购买者”系原地图上设定,因为是购买物品升级,未及时更改,现修正为“触发单位”!
[trigger]
    事件
        单位 - 任意单位 获得物品
    条件
    动作
        For循环整数A从 1 到 10, 做动作
            Loop - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        ((被操作物品) 的类型) 等于 TYPE[((循环整数A) x 4)]
                    Then - 动作
                        设置 A = TYPE[(((循环整数A) x 4) - 3)]
                        设置 B = TYPE[(((循环整数A) x 4) - 2)]
                        设置 C = TYPE[(((循环整数A) x 4) - 1)]
                    Else - 动作
                        无动作
        For循环整数A从 1 到 6, 做动作
            Loop - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        A 不等于 (没有物品 的类型)
                        (((触发单位) 物品栏第 (循环整数A) 格的物品) 的类型) 等于 A
                    Then - 动作
                        For循环整数B从 1 到 6, 做动作
                            Loop - 动作
                                如果所有条件成立则做动作1,否则做动作2
                                    If - 条件
                                        (((触发单位) 物品栏第 (循环整数B) 格的物品) 的类型) 等于 B
                                    Then - 动作
                                        物品 - 删除 ((触发单位) 所持有的 A)
                                        物品 - 删除 ((触发单位) 所持有的 B)
                                        英雄 - 创建 C 给 (触发单位)
                                    Else - 动作
                                        无动作
                    Else - 动作
                        无动作
        设置 A = (没有物品 的类型)
        设置 B = (没有物品 的类型)
        设置 C = (没有物品 的类型)
[/trigger]
这个演示稍稍修改一下都可以做成附合任何独立配方的触发器,附演示。


点评

谢谢大佬,看着有点懵,我研究研究  详情 回复 发表于 2020-12-18 10:25
回复

使用道具 举报

发表于 2020-12-18 07:29:50 | 显示全部楼层
Nostalie 发表于 2020-12-17 18:55
两种类型都说一下怎么做,但是强推第二种吧。

1、购买小件自动合成大件的类型。

你干脆给别人一个吧,别一直理论。

点评

我也有我自己的图做。但最近也不考虑做这种类型图。以前做过类似的一键合成但我又不好单独拿出来。 想要找参考我已经说过了看永恒风暴 所以就码码字呗。希望有用。 如果觉得具体哪里不对哪里没说清楚有更好  详情 回复 发表于 2020-12-19 03:58
回复

使用道具 举报

 楼主| 发表于 2020-12-18 10:25:24 | 显示全部楼层
小桐 发表于 2020-12-17 22:15
装备合成有很多  像魔兽地图都有装备合成   我觉得你可以借鉴下  魔兽的装备合成发展这么多年有很多方式   ...

谢谢大佬,看着有点懵,我研究研究
回复

使用道具 举报

 楼主| 发表于 2020-12-18 10:26:24 | 显示全部楼层
Nostalie 发表于 2020-12-17 19:50
弄不起来
大概能说明你基础太差了。
稍微学点C语言入门也不至于不会啊。。。

感谢大佬,我研究研究,就是没学过编程稍微难点的就给难住了
回复

使用道具 举报

发表于 2020-12-19 03:58:05 | 显示全部楼层
本帖最后由 Nostalie 于 2020-12-19 17:07 编辑
18726317637 发表于 2020-12-18 07:29
你干脆给别人一个吧,别一直理论。

我也有我自己的图做而且最近也不考虑做这种类型图。

以前做过类似类型2的一键合成但那张图叫荒野生存3游戏大厅可以搜到,我又不好单独只把合成拿出来。而且我全用的源码模式下编辑。触发没起中文名。萌新也看不懂。

想要找参考我也已经说过了看永恒风暴。更符合题主说的。肯定比参考我的更好。



人的精力毕竟有限。所以就码码字呗。希望有用。

如果觉得具体哪里不对哪里没说清楚有更好的意见欢迎提出。

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 21:29 , Processed in 0.275134 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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