跳至主要內容

剧情模式脚本

鸵鸟工作室大约 4 分钟

注意

  • 剧情模式 也就是单机任务模式下的脚本. 这种类型脚本有两个特性
    • 内部出怪序列不在随机(关卡难度不会因为随机导致上下变动)
    • 游戏中会有对话,尤其是在最后Boss被灭掉后,Boss要说点什么(这部分需要特殊处理)

脚本

提示

function Init(...)
	CMD("对话","NPC_KingSoldier","士兵长","指挥官,欢迎回来! 这些年您去哪儿了?兄弟们都以为你已经跑...咳......跑到前线视察去了")
	CMD("对话","NPC_KingSoldier","士兵长","现在依然有小股哥布林侵袭这里,还请带领我们抵御敌人进攻!")
	CMD("奖励","金币",300)
	CMD("奖励","木头",50)
	CMD("对话","NPC_KingSoldier","士兵长","这是附近村民送的物资请收下,东边有大片的森林可以提供木材,西北边有很多石头可以采集,现在抓紧时间建设基地吧,我们还需要更多物资备战!")

	CMD("等待","延迟",200)

	CMD("对话","NPC_KingSoldier","士兵长","他们来了!哨探传回消息,哥布林从北边发起了进攻!构筑防线,准备战斗!")
	CMD("延迟_预警",40,1,false,"Reward","300")
	StartWave1()

	CMD("等待","延迟",60)
	CMD("对话","NPC_KingSoldier","士兵长","基地规模越大,木材和石头消耗越多,请务必扩展领地范围,建造更多伐木场和采石场")
	CMD("等待","延迟",140)

	CMD("对话","NPC_KingSoldier","士兵长","又有一股敌军在向我们聚集,这次他们派出了巫医参战!务必优先消灭掉!")
	CMD("对话","Goblin_Witcher","巫医","哇嘎哇嘎路卡卡!先祖之魂,赐予我力量!治愈我们的战士!")
	CMD("延迟_预警",40,1,false,"Reward","300")
	StartWave2()

	CMD("等待","延迟",200)

	CMD("对话","Boss_RockMan","石头人","呃啊啊!碾碎!把一切全部碾碎!")
	CMD("对话","NPC_KingSoldier","士兵长","是石头人!他们居然召唤出了上古生物...保持阵形!")
	CMD("延迟_预警",40,1,false,"Reward","300")
	StartWave3()

	CMD("等待","延迟",10)
	
end

function StartWave1()
	CMD("出兵", "绿皮", 10)
	CMD("等待", "延迟", 2)
	CMD("出兵", "大壮", 5)
	CMD("等待", "延迟", 2)
	CMD("出兵", "长矛", 5)
	CMD("等待", "延迟", 2)
	CMD("出兵", "运兵车", 1)

end

function StartWave2()
	CMD("出兵", "绿皮", 15)
	CMD("等待", "延迟", 2)
	CMD("出兵", "大壮", 10)
	CMD("等待", "延迟", 2)
	CMD("出兵", "长矛", 7)
	CMD("等待", "延迟", 2)
	CMD("出兵", "运兵车", 3)
	CMD("等待", "延迟", 2)
	CMD("出兵", "巫医", 2)
end

function StartWave3()
	CMD("出兵", "绿皮", 20)
	CMD("出兵", "大壮", 15)
	CMD("等待", "延迟", 2)
	CMD("出兵", "大壮", 10)
	CMD("等待", "延迟", 2)
	CMD("出兵", "长矛", 15)
	CMD("等待", "延迟", 2)
	CMD("出兵", "运兵车", 6)
	CMD("等待", "延迟", 2)
	CMD("出兵", "巫医", 4)
	CMD("出兵", "石头人", 1,"Boss") --出Boss
end

function Reward(_shiLiID, _percent, _customArg)
	CMD("奖励", "金币", math.ceil(_customArg * _percent), "势力", _shiLiID)
end

function OnObjectDestroyWithCustomTag(_customTag)
	CMD("等待", "延迟", 2)
	CMD("对话","Boss_RockMan","石头人","啊 啊 啊啊 啊啊啊 啊啊啊啊");
	CMD("对话","Boss_RockMan","石头人","我.....");
	CMD("对话","Boss_RockMan","石头人","裂开来了");
	CMD("等待", "延迟", 2)
	CMD("函数","OnBossTalkFinish")
end

function OnBossTalkFinish()
	LowAPI.SetInfluenceWinLose("Default_GoodGuy",true);
end

function OnWin(_shiLiID)
	return true; --阻止弹出胜利界面 
end

解析

  • 在脚本最下方定义OnWin函数,并返回true 会阻止正常的 游戏胜利弹版. 如果你不写OnWin或者return false都会在胜利时候正常的显示胜利界面
  • 在最后出Boss的位置CMD("出兵", "石头人", 1,"Boss")给产生的单位加上了自定义标签.
    • 所有加入自定义标签的单位在阵亡时候都会调用OnObjectDestroyWithCustomTag函数,并且把你设置的自定义标签传递过去. 这里的标签是Boss
    • 但是因为本图只有一个Boss,所以可以直接忽略这个标签.在收到石头人阵亡的消息以后直接开始新的一轮对话
    • 注意这里因为之前有自定义了OnWin函数,所以石头人挂掉以后不会立刻弹出胜利界面,需要在脚本里面手动设置某一方胜利
  • 石头人对话结束以后,调用CMD("函数","OnBossTalkFinish")回调了OnBossTalkFinish方法
  • OnBossTalkFinish方法内,通过LowAPISetInfluenceWinLose方法,设置了Default_GoodGuy这个势力胜利
上次编辑于:
贡献者: Eran