extends NpcScript # func OnStart(): var globalScript : TicTacToeGlobal = (npc.ownScript as TicTacToeGlobal) match globalScript.startStep: TicTacToeGlobal.State.NONE: if steps.is_empty(): match randi_range(0, 2): 0: Mes("要玩井字棋吗?棋盘是我自己画的!") 1: Mes("我画不出圆圆的圈,所以我用小方块代替。安迪总笑我,但方块也可以很厉害。") Mes("要玩井字棋吗?") 2: Mes("前几天我看到一伙海盗和守卫玩井字棋。守卫输了,但他们说那叫战略撤退。") Mes("你也要玩吗?") else: Mes("要玩井字棋吗?") Choice("和你玩", StartPvE) Choice("找别人玩", StartPvP) Choice("怎么玩?", ShowRules) Choice("晚点再玩", Decline) TicTacToeGlobal.State.X: if globalScript.playerX != own: Mes("嘿,已经有人在等对手了!你可以去挑战他们!") Choice("我来和他们玩!", StartPvP) Choice("怎么玩?", ShowRules) Choice("晚点再玩", Decline) else: Mes("还没人来。你要继续等吗?") Choice("再等一会儿", WaitPvP) Choice("怎么玩?", ShowRules) Choice("我得走了", CancelPvP) TicTacToeGlobal.State.O: var isPlaying : bool = globalScript.playerX == own or globalScript.playerO == own if isPlaying: Mes("嘿,不许偷看提示!快回去下你的棋!") else: Mes("嘘,他们正在下棋!你可以看,但不能乱指。") Choice("好啦好啦", OnQuit) Choice("怎么玩?", ShowRules) if isPlaying: Choice("我得走了", CancelPvP) func ShowRules(): Mes("你选一个格子,放上自己的记号,然后换另一个人。") Mes("横着、竖着、斜着,只要三个连成一条线就赢。") Mes("如果九个格子都填满还没人连成线,就是平局。平局也不错,只是没有胜利时那么好跳起来。") OnStart() func Decline(): Chat("好吧,改变主意就来找我,棋盘不会跑掉。") # Player vs 角色 func StartPvE(): var globalScript : TicTacToeGlobal = (npc.ownScript as TicTacToeGlobal) if globalScript.startStep == TicTacToeGlobal.State.NONE and globalScript.StartPvE(own): DisplayActions(["gp_target", "gp_untarget"]) Mes("你执叉号!选一个格子,快快快!") else: Mes("等一下,已经有人在玩了!要排队。") # Player vs Player func StartPvP(): var globalScript : TicTacToeGlobal = (npc.ownScript as TicTacToeGlobal) match globalScript.StartPvP(own): TicTacToeGlobal.State.X: Mes("现在等另一个人来挑战你。") return TicTacToeGlobal.State.O: DisplayActions(["gp_target", "gp_untarget"]) Mes("太好了,你们都到齐了!好好玩!") return TicTacToeGlobal.State.NONE: Mes("不行不行,棋盘现在被占用了!") func WaitPvP(): if (npc.ownScript as TicTacToeGlobal).playerX == own: Chat("一定很快就有人来,大概吧!") func CancelPvP(): var globalScript : TicTacToeGlobal = (npc.ownScript as TicTacToeGlobal) if globalScript.playerX == own: globalScript.LeaveQueue(own) Chat("啊,这么快就不等了?好吧。") func OnQuit(): Chat("嘘,别打扰他们下棋。")