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

DOTA中的sp模式是怎么回事?

[复制链接]
发表于 2011-12-18 20:34:04 | 显示全部楼层 |阅读模式
相信玩过的玩家大家都知道的,在输入-rdsp和-rd是完全不同的。。。
sp洗牌模式中可以把双方的阵营变换。。。这个就比较神奇了。。。
而且本菜也很无耻的说:完全没有思路怎么做这个触发。。。。。。。。
求高人指点12.。。。呵呵
叩谢
发表于 2011-12-18 20:43:21 | 显示全部楼层
设置联盟状态呀~
楼主难道是在问算法么?
回复

使用道具 举报

发表于 2011-12-18 20:47:00 | 显示全部楼层
首先要用到随机排序,楼主可以搜索下冒泡随机排序。
就是弄一个玩家类型的数组变量,把玩家们储存起来,然后利用冒泡算法排序
回复

使用道具 举报

发表于 2011-12-18 20:50:00 | 显示全部楼层
然后解除所有玩家之间的原有联盟关系

set m=0
set n=0
loop
if m!=n then
    call SetPlayerAllianceStateAllyBJ( Player(m), Player(n), false )
    call SetPlayerAllianceStateVisionBJ( Player(m), Player(n), false )
endif
set m=m+1
exitwhen m>11
endloop
set n=n+1
exitwhen n>11
endloop
回复

使用道具 举报

发表于 2011-12-18 20:53:11 | 显示全部楼层
最后建一张空地图,把玩家的联盟状态按自己的意愿摆好 比如5v5 6v6
导出地图脚本,会包含下面这段

function InitCustomTeams takes nothing returns nothing
    // Force: 队伍 1
    call SetPlayerTeam( Player(0), 0 )
    call SetPlayerState( Player(0), PLAYER_STATE_ALLIED_VICTORY, 1 )
……
    call SetPlayerTeam( Player(4), 0 )
    call SetPlayerState( Player(4), PLAYER_STATE_ALLIED_VICTORY, 1 )

    //   Allied
    call SetPlayerAllianceStateAllyBJ( Player(0), Player(1), true )
……
……
……
    call SetPlayerAllianceStateAllyBJ( Player(9), Player(7), true )
    call SetPlayerAllianceStateAllyBJ( Player(9), Player(8), true )

    //   Shared Vision
    call SetPlayerAllianceStateVisionBJ( Player(5), Player(6), true )
……
……
    call SetPlayerAllianceStateVisionBJ( Player(9), Player(8), true )

endfunction
回复

使用道具 举报

发表于 2011-12-18 21:04:22 | 显示全部楼层
把其中的 "Player(" 替换成 "Wanjia(" 之类的
然后在前面加一个函数
function Wanjia takes integer i returns player
return udg_wanjia[ i ]
endfunction
这个udg_wanjia[ ] 就是我们之前用来重新排序玩家的那个玩家数组
回复

使用道具 举报

发表于 2011-12-18 21:06:50 | 显示全部楼层
这就可以了
其实简单说,就是用一个玩家数组变量,先把玩家装起来
然后利用冒泡算法把他们随机排序
接着解除所有原来的联盟关系
最后按着新排序重构一遍联盟关系

用触发器完全可以做,不过如果熟悉jass的话,可以大大滴偷懒
回复

使用道具 举报

 楼主| 发表于 2011-12-19 01:04:05 | 显示全部楼层

回 6楼(Conflux) 的帖子

Conflux:这就可以了
其实简单说,就是用一个玩家数组变量,先把玩家装起来
然后利用冒泡算法把他们随机排序
接着解除所有原来的联盟关系
最后按着新排序重构一遍联盟关系
....... (2011-12-18 21:06) 
哇塞。。。。。。jass大神。。。。。我们完全活在俩种空间啊= =完全看不懂。。。。我只能看懂触及的T。。。。高级的T都得想好久才能看明白。。。。自己做的话就困难了。。= =呵呵
不过还是非常的感谢你的啊。。。。。呵呵
回复

使用道具 举报

发表于 2011-12-19 01:45:22 | 显示全部楼层
大致就是……

先把所有的联盟解除
把所有玩家加入一个玩家组
从该玩家组随机选出5个玩家
被选出的玩家设置联盟、视野共享之类
剩下的玩家设置联盟、视野共享之类
移动玩家镜头到符合的阵营地

我忘了设置不联盟等不等于敌对,不等于的话那么再设置下敌对
回复

使用道具 举报

 楼主| 发表于 2011-12-19 18:41:46 | 显示全部楼层

回 8楼(chyj4747) 的帖子

chyj4747:大致就是……

先把所有的联盟解除
把所有玩家加入一个玩家组
从该玩家组随机选出5个玩家
....... (2011-12-19 01:45) 
你太牛X了。。。。呵呵。。。。三口
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-8 12:25 , Processed in 0.105290 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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