您尚未登录,请登录后浏览更多内容! 登录 | 加入最MC

QQ登录

只需一步,快速开始

 找回密码
 加入最MC

QQ登录

只需一步,快速开始

查看: 5098|回复: 5
打印 上一主题 下一主题

[转载插件] [娱乐]经济飞机场插件

[复制链接]
  • TA的每日心情

    2018-7-4 13:27
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    跳转到指定楼层
    楼主
    发表于 2017-12-5 15:51:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    服务端插件
    中文名称: .
    英文名称: .
    来源: 转载
    类型: |其它| 
    前置插件: .
    原帖地址: -
    下载地址: .
    更新时间: 2017-12-05
    语言支持: 简体中文 
    [New API][经济飞机场插件木牌指令全汉化+BUG完美修复]

    ★ 飞机场的木牌指令支持中文!
    ★ 文本汉化语言尽量贴近生活!
    ★ 木牌飞机场只支持单程航线!
    ★ 木牌飞机场不支持多世界!
    ★ 本次汉化修复 1 个严重BUG!

    ★创建飞机场木牌指令格式★
    一、起点飞机场:
    第一行:  飞机场
    第二行:  起点
    第三行:  <机票价格>
    第四行:  <目的地>
    二、终点飞机场:
    第一行:  飞机场
    第二行:  终点
    第三行:  <目的地>
    第四行:  空

    (木牌指令使用权限: OP管理员)

    详细使用说明:
    ★1 创建飞机场的步骤: (权限: OP管理员)
    (直接编辑木牌即可)
    第一步:  创建终点飞机场

    第二步:  创建起点飞机场

    (注: 先创建起点飞机场,后创建终点飞机场,是无效的,2个飞机场不会相通.原因在于,只有先创建了终点飞机场,再创建起点飞机场,起点飞机场才能保存终点飞机场的坐标信息,从而建立关联)

    2 使用飞机场木牌: (权限: 所有玩家)
    (直接点击起点飞机场木牌即可,点击终点飞机场木牌无效,因为是单程航线)

    3 移除飞机场木牌: (权限: OP管理员)

    ★ 对本次修复的BUG详细说明! ★
    public function onBlockTouch(PlayerInteractEvent $event){
            $block = $event->getBlock();
            if(isset($this->airport[$block->getX().":".$block->getY().":".$block->getZ().":".$block->getLevel()->getFolderName()])){
                    $airport = $this->airport[$block->getX().":".$block->getY().":".$block->getZ().":".$block->getLevel()->getFolderName()];
                    $player = $event->getPlayer();
            if(isset($this->airport[$airport["targetX"].":".$airport["targetY"].":".$airport["targetZ"].":".$airport["targetLevel"]])){
    ...
    改为
    public function onBlockTouch(PlayerInteractEvent $event){
            $block = $event->getBlock();
            if(isset($this->airport[$block->getX().":".$block->getY().":".$block->getZ().":".$block->getLevel()->getFolderName()])){
                    $airport = $this->airport[$block->getX().":".$block->getY().":".$block->getZ().":".$block->getLevel()->getFolderName()];
                    $player = $event->getPlayer();
                           
                    if($airport["type"] === 1){
                            $player->sendMessage("这是单程航班的终点站, 无法搭乘哦 !");
                            return;
                    }

          if(isset($this->airport[$airport["targetX"].":".$airport["targetY"].":".$airport["targetZ"].":".$airport["targetLevel"]])){
    ...
    错误说明:onBlockTouch本来的目的是接收玩家点击起点飞机场木牌的PlayerInteractEvent事件来处理搭乘飞机的请求;但是原代码却忽略了玩家点击终点飞机场木牌的PlayerInteractEvent事件,未做限制判断,从而导致数组越界的严重错误.原因在于起点飞机场木牌和终点飞机场木牌保存的信息是不一样的,处理方式当然也不能一样;我在这里加上了限制判断,从而避免了数组越界的BUG!



                         下载地址在



    下载地址


    下载地址
    游客,如果您要查看本帖隐藏内容请回复


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

    该用户从未签到

    地板
    发表于 2019-11-25 19:02:13 | 只看该作者
    刚好陪我的服务器
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

    该用户从未签到

    6#
    发表于 2020-3-7 18:33:09 | 只看该作者
    虽然自定义npc也能传送不过这个好像能省点事
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    您需要登录后才可以回帖 登录 | 加入最MC

    本版积分规则