本帖最后由 独家记忆 于 2022-7-1 11:00 编辑
思路:1、设置一个私人变量来记录爬塔层数2、根据爬塔层数来动态修改【地图名】【怪物名】【怪物属性】3、这样只需要在1个地图上就能实现无限爬塔的功能优点:代码量很少,可以无限爬,没有终点。 缺点:过于单调,玩家体验不好,需要找高额奖励来刺激。
BUG:不知道是不是引擎BUG,副本里的怪死亡会触发两次 GameLib.onKillMonster
[pre]自己在版本管理器里创建一个副本地图
进入副本地图函数
[TypeScript] 纯文本查看 复制代码 export function 测试按钮1(Player : TPlayObject): void {
let 通天塔 : TEnvirnoment
let 怪物列表 : TActorList
通天塔 = GameLib.CreateDuplicateMap('通天塔', 120)
if (通天塔 != null){
Player.MapMoveEx(通天塔, 22, 35)
Player.SendMessage("传送到通天塔")
if (Player.V.通天塔层数 <= 1){Player.V.通天塔层数 = 1}
GameLib.FindMap(Player.GetMapName()).DisplayName="通天塔"+Player.V.通天塔层数+"层"
//死亡触发 为真
怪物列表 = GameLib.MonGen(通天塔.MapName,"鹿",1,10,10,1,undefined,undefined,undefined,undefined,true)
Player.SendMessage("对象数量:"+怪物列表.Count)
if (怪物列表.Count == 1) {
怪物列表.Actor(0).Name="打死我后开始刷怪"
怪物列表.Actor(0).HP = 1
怪物列表.Actor(0).MaxHP = 1
怪物列表.Actor(0).NameColor = 250
}
}else{
Player.SendMessage("创建副本失败!")
}
}[/pre][pre]
[/pre][pre]
[/pre][pre]
[/pre][pre]
[/pre][pre][pre]QF里的 杀死怪物后触发
GameLib.onKillMonster = function(Player: TPlayObject, Monster: TActor): void {
Player.SendMessage("杀死怪物触发,时钟频率:"+GameLib.QueryPerformanceCounter().toString())
//搜索玩家所在地图名是包含:通天塔
if (Player.Map.Name.indexOf("通天塔") == 0){
if (Monster.Name.indexOf("【通天塔】") == 0) {
Player.MessageBox("恭喜你,通过了通天塔"+Player.V.通天塔层数+"层的考验,准备迎接新的挑战吧!")
Player.V.通天塔层数 = Player.V.通天塔层数 + 1
} else if (Monster.Name.indexOf("打死我后开始刷怪") == 0) {
Player.MessageBox("通天守卫刷了,去消灭他!")
}
let 当前层数 = Player.V.通天塔层数
//根据层数来动态改变地图名字
GameLib.FindMap(Player.GetMapName()).DisplayName="通天塔" + 当前层数 + "层"
//让角色传送到地图边界后在刷新怪物
Player.MapMove(Player.GetMapName(), 22, 35)
let 怪物列表 = GameLib.MonGen(Player.GetMapName(),"鹿",1,10,10,1,undefined,undefined,undefined,undefined,true)
Player.SendMessage("对象数量:"+怪物列表.Count)
if (怪物列表.Count == 1) {
//根据层数来更改怪物名和属性,层数越高,怪物属性越高
怪物列表.Actor(0).Name="【通天塔】守卫("+当前层数+"层)"
怪物列表.Actor(0).MaxHP = 当前层数 * (怪物列表.Actor(0).MaxHP + 1000) //血量上限
怪物列表.Actor(0).HP = 当前层数 * (怪物列表.Actor(0).HP + 1000) //当前血量
怪物列表.Actor(0).DCMin = 当前层数 * (怪物列表.Actor(0).DCMin + 10) //攻击下限
怪物列表.Actor(0).DCMax = 当前层数 * (怪物列表.Actor(0).DCMax + 10) //攻击上限
怪物列表.Actor(0).ACMin = 当前层数 * (怪物列表.Actor(0).ACMin + 10) //防御下限
怪物列表.Actor(0).ACMax = 当前层数 * (怪物列表.Actor(0).ACMax + 10) //防御上限
怪物列表.Actor(0).MACMin = 当前层数 * (怪物列表.Actor(0).MACMin + 10) //魔防下限
怪物列表.Actor(0).MACMax = 当前层数 * (怪物列表.Actor(0).MACMax + 10) //魔防上限
怪物列表.Actor(0).NameColor = 254
}
}
}
|