- UID
- 2326926
- 主题
- 0
- 阅读权限
- 20
- 帖子
- 225
- 精华
- 0
- 积分
- 123
- 金钱
- 513
- 荣誉
- 1
- 人气
- 0
- 在线时间
- 19 小时
- 评议
- 0
- 帖子
- 225
- 精华
- 0
- 积分
- 123
- 金钱
- 513
- 荣誉
- 1
- 人气
- 0
- 评议
- 0
|
弑君战是帝国二比较经典的玩法,可是到了帝国三就没有这个模式了,只有出了亚洲王朝之后才出了一个本州岛的弑君战地图。想玩弑君战的朋友就没得第二选择了。于是我就想是不是可以把普通对战地图修改为对战地图。于是我翻了一下本州岛普通地图和弑君战的地图,对比它们代码的不同,发现了了几条代码于弑君战有关。
// resource constraints这条下面有一段代码
int avoidCastle=rmCreateTypeDistanceConstraint("vs Regicide Castle", "ypCastleRegicide", 5.0);
也就是说明这张地图包含君王城堡这个东西
int playerCastle=rmCreateObjectDef("Castle");
rmAddObjectDefItem(playerCastle, "ypCastleRegicide", 1, 0.0);
rmAddObjectDefConstraint(playerCastle, avoidAll);
rmAddObjectDefConstraint(playerCastle, avoidImpassableLand);
rmSetObjectDefMinDistance(playerCastle, 18.0);
rmSetObjectDefMaxDistance(playerCastle, 23.0);
这段是放置君王城堡的位置
int playerWalls = rmCreateGrouping("regicide walls", "regicide_walls");
rmAddGroupingToClass(playerWalls, rmClassID("importantItem"));
rmSetGroupingMinDistance(playerWalls, 0.0);
rmSetGroupingMaxDistance(playerWalls, 2.0);
这段是放置把自己围一圈的城墙的代码
int playerDaimyo=rmCreateObjectDef("Daimyo"+i);
rmAddObjectDefItem(playerDaimyo, "ypDaimyoRegicide", 1, 0.0);
rmAddObjectDefConstraint(playerDaimyo, avoidAll);
rmSetObjectDefMinDistance(playerDaimyo, 7.0);
rmSetObjectDefMaxDistance(playerDaimyo, 10.0);
这段是放置大名的代码
// Regicide Triggers
for(i=1; <= cNumberNonGaiaPlayers) {
// Lose on Daimyo's death
rmCreateTrigger("DaimyoDeath"+i);
rmSwitchToTrigger(rmTriggerID("DaimyoDeath"+i));
rmSetTriggerPriority(4);
rmSetTriggerActive(true);
rmSetTriggerRunImmediately(true);
rmSetTriggerLoop(false);
rmAddTriggerCondition("Is Dead");
rmSetTriggerConditionParamInt("SrcObject", rmGetUnitPlacedOfPlayer(playerDaimyo, i), false);
rmAddTriggerEffect("Set Player Defeated");
rmSetTriggerEffectParamInt("Player", i, false);
}
这段是最重要的,弑君战模式的触发代码,说明对战成败的触发条件,大名死亡的一方战败。
可是我把这些代码放入普通地图的时候发现有些根本无法加载,有些进入之后根本没有大名,直接就全部战败了。试验了好几次都没有成功,希望有高手与我探讨这些问题。
[ 本帖最后由 wc31415927 于 2008-7-25 21:10 编辑 ] |
|