中国星际RPG联盟

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6377|回复: 11
打印 上一主题 下一主题

消除玩家空缺而互相攻击的BUG

[复制链接]
跳转到指定楼层
楼主
发表于 2014-1-8 15:52:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
作者:castelu

经常可以看到,玩配合类的操作图,如果人没有满就开了,那么本来自己队伍的单位会变成电脑的,而且还会打自己人
这是一个很经典又苦恼的BUG,经典地图Impossible系列基本每张图都有这个BUG
问题产生的原因是,一般这些地图,都会在每关的开始,通过Create Units给玩家实现分配兵种
但是,如果玩家空缺,这些单位就会有电脑接管,而这个空缺玩家的所有结盟设置都没有执行过,所以这些单位就是见人就打

如何修正呢?有两种方法
首先,设置1个同盟的电脑玩家
先把单位Create给电脑(或者事先在地图上摆放)
第一种方法,你手动用若干个位置层把电脑的单位分隔开,然后用Give Units分别把每个位置层中的单位分别给到玩家即可
当然,你要判断好哪些玩家还在游戏中,如果玩家不在,则不Give
这种方法的优点是,可以确定每个玩家得到的单位是制图者事先确定的,而不是随机分配的,比较公平,缺点是,如果有玩家不在,那些兵还是电脑的,不受控制
第二种方法,直接用一个大位置层把所有需要Give的单位框起来,然后在你玩家那个Force里面,写上Give x units owned by 电脑盟友 to current player,然后循环触发
其中x表示每批量电脑玩家给到玩家的单位数量
我举个例子,你创造了12个Zealot,3个Dragoon给电脑
如果你写Give 2 units to current player,循环触发
那么前2个Zealot会给Player1,接下来2个Zealot会给Player2,……
如果Zealot给完了,会给Dragoon
如果玩家循环完了,会从头开始再循环
这种方法的优点是,你只用做一个位置层即可解决问题,比较方便,缺点是,兵种的分配可能会随机化,一般是从地图的左上角开始往下Give

当然,如果你结合了两种方法,那么就是完美的了
也就是,先手动分配,如果有玩家不在,那么剩余部分用随机分配

做了一张演示图,只用了第二种方法,你可以试一下玩家人数不同的时候,电脑如何给兵到玩家

Give Units Test.scm

39 KB, 下载次数: 0, 下载积分: 水晶 -2 克

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

沙发
发表于 2014-1-9 17:35:20 | 只看该作者
我认为多加个电脑 等于多少一个玩家? 不如直接在游戏开始的时候储存玩家数量
如果玩家确实还在游戏中再create
回复 支持 反对

使用道具 举报

板凳
发表于 2014-1-11 00:45:58 | 只看该作者
怎么把两个方法结合啊。。。
单个的会了,结合不会

主要是先把单位给了指定玩家后,如何让电脑判断某个玩家缺席,然后把无头单位给电脑,再让电脑分给玩家?
(单位事先摆好,针对BT图)
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2014-1-11 11:07:59 | 只看该作者
在事先摆放在地图上的单位上,每个玩家分配好,并给予一个位置层
要Give之前,先判断该玩家是否存在
可以利用Deaths计数
在游戏一开始就设置每个玩家的Deaths为1,假如中途有玩家退出,则将该玩家的Deaths设置为0(判断条件是该玩家commands或者brings至多0个单位)
然后利用Deaths的值来确定玩家是否存在
比如Deaths=1,则把电脑的兵Give给他,Deaths=0,则不Give

当然,如果你觉得麻烦,可以跳过不使用Deaths,直接用command或者bring条件
例如:
条件:current player commands/brings at least ...
触发:give ... to current player

其实,如果你把Give的触发归属权给每一个玩家,那么如果玩家不在,那些触发都是不会执行的
也就是说,条件:current player commands/brings at least ...都可以省掉

但是为了不混淆两种方法,你必须要有一个先后级,肯定是先按照你画的位置层来分配,然后再随机分配吧?

所以,你在上面触发结束以后,让开关=on

再接下来,当开关=on的时候,再利用随机Give去判断

这样的效果,最终是如果有玩家存在,电脑的兵会根据你在地图上摆放的进行Give,当玩家空缺时,剩下部分再按照随机原则Give
回复 支持 反对

使用道具 举报

5#
发表于 2014-1-11 17:55:28 | 只看该作者
本人入门,设置Death还有待学习。神主你看看这样行吗?

假设绿色半路掉线了。在新的一关里(BT图),先按照原来的计划分配。
分给其他几个人后,还有几个原本属于绿色的兵归电脑。
Wait 1000毫秒
再把没分出去的兵给电脑同盟玩家,让电脑同盟玩家分配给还没掉的玩家。

(问一句,比如中立方是白色,绿色掉了,分兵时原本属于绿色的白色兵会变成绿色吗?
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2014-1-12 13:23:04 | 只看该作者
不用这么复杂
你直接把Give触发的归属权给每个玩家,这样,如果这个玩家在,它就会执行,不在就不会执行
不执行,这些兵就是电脑的
那么再第二轮随机分配中,会得到分配
回复 支持 反对

使用道具 举报

7#
发表于 2014-1-12 13:34:14 | 只看该作者
这似乎很费触发啊。假如有10关,5个玩家,就要。。50个触发。

执行者
Player 1

条件
Swi(哎呀,开关怎么写忘了) n(数量)is set

行动

Give all any units at hong se(location) to 执行触发的 players


是这样?
那么我得做50条触发。。。
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2014-1-12 20:49:19 | 只看该作者
善于利用触发的复制,只修改关键部分
50条触发应该还是比较少了,大的图会有上百上千触发
回复 支持 反对

使用道具 举报

9#
发表于 2014-1-13 12:57:45 | 只看该作者
还是不对锕。。。
回复 支持 反对

使用道具 举报

10#
发表于 2014-1-13 13:01:26 | 只看该作者
.....................
回复 支持 反对

使用道具 举报

11#
 楼主| 发表于 2014-1-14 13:41:43 | 只看该作者
你再试试
或者你在地图上摆放单位的时候规律一点,从左到右,这样只需要用第二种方法即可
回复 支持 反对

使用道具 举报

12#
发表于 2014-1-14 23:10:31 | 只看该作者
教你个简单的方法 绝对百试百爽
首先把你每个关卡的人物直接丢地图上,放好

比如说一共5个玩家 只需要你利用一个电脑玩家即可

摆成 2 A 1 B 1 C 1 D 1 E 3
1代表玩家6的地刺 2代表玩家6的ob单位 3代表目标终点

ok 这种阵型排列完成后可以在每个关卡开始的时候命令2移动到3的位置,每次移动判断ob身下有没有单位 有的话就全部给玩家,经过地刺的时候 水晶+1
利用水晶数量来判断给指定玩家号

比如水晶+4的时候 就是给玩家4

善用move location 这个命令

最好的情况就是学好death,以后做图都会很方便的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|网站统计|手机版|小黑屋|中国星际RPG联盟    

GMT+8, 2024-4-29 17:05 , Processed in 1.218750 second(s), 22 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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