#nop vim: set filetype=tt:; /* 本文件属于 PaoTin++ 的一部分 =========== PaoTin++ © 2020~2023 的所有版权均由担子炮(dzp ) 享有并保留一切法律权利 你可以在遵照 GPLv3 协议的基础之上使用、修改及重新分发本程序。 =========== */ load-lib event; event.Define {map/walk/boat/in} {无参} {$MODULE} {已上船}; event.Define {map/walk/boat/out} {无参} {$MODULE} {即将下船}; VAR {地图脚本同步信息} map.sync.room-id {}; #alias {map.Sync} { #local prev {%1}; #local current {%2}; #local next {%3}; #local message {}; #if { "$prev$current$next" == "" } { #local message {WALK-SYNC-MESSAGE}; }; #else { #local message {F${prev}-V${current}-T$next}; #var map.sync.room-id { {prev}{$prev} {current}{$current} {next}{$next} }; }; sync.Wait { #line gag; okLog 服务器已同步。; event.DelayEmit map/walk/continue; } {$message}; }; #alias {map.GuoJiang} {map.shaogong 过江 map.GuoJiang}; #alias {map.GuoHe} {map.shaogong 过河 map.GuoHe}; #alias {map.YellBoat} {map.shaogong 自助 map.YellBoat}; #alias {map.shaogong} { #local words {%1}; #local name {%2}; #class $name open; #alias {map.waitBoat} { #var map-Boat-state {waitBoat} }; #action {^只听得江面上隐隐传来:“别急嘛,这儿正忙着呐……”$} { #nop 不依赖触发了,用定时器靠谱一些; }; #action {^岸边一只渡船上的艄公说道:正等着你呢,上来吧。$} { #tick map.boat.yell {map.boat.yell} 3; map.boat.try-enter; }; #action {^一叶扁舟缓缓地驶了过来,艄公将一块踏脚板搭上堤岸,以便乘客{上下。|}$} { #tick map.boat.yell {map.boat.yell} 3; map.boat.try-enter; }; #nop 没有一卡通时,需要通过 ask 来手动给钱。; #action {^船老大一把拉住你,你还没付钱呢?$} { #line oneshot #action {^{他|她}是{黄|长}{河|江}边的船老大,撑渡船几十年,现在老了,只负责在岸边收钱。$} { #delay 0 {ask shao gong about 过%%%3}; }; #line oneshot #action {^%sLV%s%d%s$} { #gag {^%*{|ID=map.shaogong}$}; event.HandleOnce {GA} {map.boat.look} {map} { #ungag {^%*{|ID=map.shaogong}$}; #nop }; }; #delay 0 {look shao gong}; }; #action {^$NPC接过你递给的船资%S。$} {map.waitBoat}; #action {^你的车船通账上还剩%S,这一趟的船资是%S。$} {map.waitBoat}; #action {^这一趟的船资是%*,将从你的行旅通上走账。$} {map.waitBoat}; #action {^$NPC道:原来是%S的人,快请上船。$} {map.waitBoat}; #action {^$NPC唱道:“撑船的,有生意上门啦~~~”,%*传出很远。$} {map.waitBoat}; #action {^你吸了口气,一声“船家”,声音中正平和地远远传了出去。$} {map.waitBoat}; #action {^你鼓足中气,长啸一声:“船家!”$} {map.waitBoat}; #action {^你使出吃奶的力气喊了一声:“船家”$} {map.waitBoat}; #action {^艄公把踏脚板收起来,说了一声“坐稳喽”,竹篙一点,扁舟向{|江心驶去。}$} { #nop; }; #action {^艄公说“到啦,上岸吧”,随即把一块踏脚板搭上堤岸。$} { #if { "$map-Boat-state" == "inBoat" } { #nop 有时候这条信息和下面赶下船的信息同时出现,这样会导致 out 失效。; #nop 所以做一些防御处理; #delay map-Boat-out { #unvar map-Boat-state; event.Emit map/walk/boat/out; busy.Halt {out; map.boat.done}; } {0.05}; }; }; #action {^艄公要继续做生意了,所有人被赶下了渡船。$} { #if { "$map-Boat-state" == "inBoat" } { #delay map-Boat-out { #unvar map-Boat-state; event.Emit map/walk/boat/out; busy.Halt map.boat.done; } {0}; }; }; #line sub var #alias {map.boat.done} {map.BotReturn $name}; #alias {map.boat.yell} { yell boat; #tick map.boat.yell {map.boat.yell} 1; }; #if { "$words" == "自助" } { map.boat.yell; }; #else { ask shao gong about $words; #tick map.boat.yell {map.boat.yell} 1; }; #class $name close; }; #alias {map.SpecialBoat} { #class map.SpecialBoat open; #action {^你跃上木船,船夫把木船划向海中。$} {event.Emit map/walk/boat/in}; #nop 神龙岛; #action {^你朝船夫挥了挥手便跨上岸去。$} {map.SpecialBoat.return}; #nop 神龙岛; #action {^你从踏板上走上了船。$} {event.Emit map/walk/boat/in}; #nop 桃花岛; #action {^你沿着踏板走了上去。$} {map.SpecialBoat.return}; #nop 桃花岛; #alias {map.SpecialBoat.return} {event.Emit map/walk/boat/out; busy.Halt {map.BotReturn map.SpecialBoat}}; #class map.SpecialBoat close; enter boat; }; #alias {map.Ride} { #local target {%1}; #class map.Ride open; #action {^你跳上了小船,操舟向%*划去。$} {event.Emit map/walk/boat/in}; #action {^你跳上了羊皮筏子,操舟向%*划去。$} {event.Emit map/walk/boat/in}; #action {^你从小船上跳了下来,到了%*。$} {event.Emit map/walk/boat/out; busy.Halt {map.BotReturn map.Ride}}; #class map.Ride close; ride $target; }; #alias {map.Shalou} { #class map.Shalou open; #var map-Boat-state {waitBoat}; #action {^根据沙漏的速度,渡船应该在%*秒后靠岸。$} { #local seconds {@time.ParseDoC{%%1}}; map.waitBoat; }; #action {^沙漏里的沙子已经漏到底了。$} { #delay map.boat.try-enter {map.boat.try-enter} 1; }; #action {^渡船缓缓靠岸,船上的船工摆出跳板,方便客人上下船。$} { #delay map.boat.try-enter {map.boat.try-enter} 0; }; #action {^船工收回跳板,开船驶向%*的%*了。$} { #var map-Boat-state {inBoat}; }; #action {^船工放下跳板,招呼大家下船了。$} { #if { "$map-Boat-state" == "inBoat" } { #unvar map-Boat-state; event.Emit map/walk/boat/out; busy.Halt {out; map.BotReturn map.Shalou}; }; }; #action {^在船离岸之际,你赶紧跳了下去。$} { #if { "$map-Boat-state" == "inBoat" } { #unvar map-Boat-state; event.Emit map/walk/boat/out; busy.Halt {map.BotReturn map.Shalou}; }; }; #alias {map.waitBoat} { #var map-Boat-state {waitBoat}}; #class map.Shalou close; }; #alias {map.boat.try-enter} { #if { "$map-Boat-state" == "waitBoat" } { event.HandleOnce {GMCP.Move} {map.boat} {map} {map.boat.check}; go enter; }; }; #alias {map.boat.check} { #local boat {%1}; #if { @isFalse{$gGMCP[Move][成功]} } { errLog 登船失败。; #return; }; #untick map.boat.yell; #if { &gGMCP[Move][出口信息][] > 1 } { errLog 登船失败,这是哪里?; #return; }; #if { "$gGMCP[Move][出口信息][1]" != "{|out}" } { errLog 登船失败,好像不对劲。; #return; }; #var map-Boat-state {inBoat}; event.Emit map/walk/boat/in; }; #alias {map.BotReturn} { #local bot {%1}; #class $bot kill; event.DelayEmit {map/walk/continue} {$bot}; }; #func {map.GetPassport} { #local room {%1}; #local exit {%2}; #local room {@map.GetRoomByID{$room}}; #if { "$room" == "" } { #return {}; }; #local entry {}; #loop {1} {&map.passport[]} {entry} { #local entry {$map.passport[$entry]}; #if { "$room[cid]" != "$entry[room]" } { #continue; }; #if { "$entry[item]" != "" && @sset.Contains{{$room[item]};$entry[item]} } { #return {$entry}; }; }; }; #nop 各种爬山; #alias {map.Climb} { #class map.Climb open; #nop 无量山崖洞。; #action {^你终于爬到崖洞中$} {map.Climb.return}; #nop 武当升真岩到五老峰。; #action {^你爬的精疲力竭,忽然发现已经到山顶,你提起纵身,一个鹞子翻身跃上山顶。$} {map.Climb.return}; #nop 武当天柱峰下到二天门。; #action {^你爬的精疲力竭,忽然发现已经到二天门。$} {map.Climb.return}; #nop 武当二天门到三天门。; #action {^你抬头仰望,突然发现峰顶就在眼前,顿时气力倍增,双脚一蹬跳了上去。$} {map.Climb.return}; #nop 武当下山都是一样的。; #action {^你低头一看,离地面只有丈余高,你转身一跳,稳稳的落在地上。$} {map.Climb.return}; #nop 黑苗寨爬树。; #action {^你费力地向上爬去。$} {#0}; #action {^你吃力地向下爬去。$} {#0}; #action {^你爬到了{大树下|树干上|树顶}。$} {map.Climb.return}; #nop 无量山爬 cliff; #action {^你身在半空,双手乱挥,只盼能抓到什么东西,这么乱挥一阵,又下堕下百馀丈。} {map.Climb.return}; #nop 无量山爬 yafeng; #action {^山崖似乎无穷无尽,爬到后来,衣衫早给荆刺扯得东破一块,西烂一条,$} {map.Climb.return}; #alias {map.Climb.return} {map.BotReturn map.Climb}; #class map.Climb close; #if { "%0" == "" } {climb} {climb %0}; };