Travian 论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
楼主: superAdmin

Travian端午节特供版正式上线

[复制链接]

2

主题

41

回帖

226

积分

中级会员

积分
226
发表于 2023-6-26 22:02:12 | 显示全部楼层
还是不行的,大概65%的目标不能攻击(包括绿洲),只有个别目标可以攻击

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

2

主题

41

回帖

226

积分

中级会员

积分
226
发表于 2023-6-26 22:48:44 | 显示全部楼层
受影响的不光是攻击,包括侦查与支援

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

嗯,车村、掠夺、侦查,本质都是对外用兵,代码是在一起的,一个不行三个就都可能出问题。我查下  发表于 2023-6-27 12:17

2

主题

21

回帖

216

积分

中级会员

积分
216
发表于 2023-6-27 16:20:42 | 显示全部楼层
因为代码不是一套啊
我玩到的,最早的,应该是最新的,但是BUG比较多
A 最早 比较新,BUG多
B 旧一点的代码
C 更旧一点的代码(有这个攻击BUG,但是修复了)
B 这次好像又用的B的那块代码
反正每次都用的不是同一套代码,只有那个A是外面能下到的,其他版本也不知道哪来的,都号称TravainZ 8.3.5 但是和git上的8.3.5是对不上的,还有翻译也有不同

21

主题

107

回帖

637

积分

管理员

积分
637
 楼主| 发表于 2023-6-28 15:23:39 | 显示全部楼层
sentend 发表于 2023-6-27 16:20
因为代码不是一套啊
我玩到的,最早的,应该是最新的,但是BUG比较多
A 最早 比较新,BUG多

我是从github 上一共拿了11个版本的代码,然后两两比较,特别差的几个就直接淘汰了,
然后凭感觉合并了一些代码,后面遇到问题自己也尝试边学边改一些,
但是目标就是「不出错」,仅此而已,所以可能出现「修改BUG带来新的性能问题」等

现在这个很难找到还有人维护的版本了,我自己改的这版也不会放出去分享,
毕竟精修翻译就花了不少时间(尽管还有未修复完的)。

今天晚上下班后我看看再部署一个上一个版本的,看看有没有性能和攻击问题。

点评

WOW
辛苦了、辛苦了  发表于 2023-6-28 18:06

2

主题

41

回帖

226

积分

中级会员

积分
226
发表于 2023-6-28 19:12:40 | 显示全部楼层
superAdmin 发表于 2023-6-28 15:23
我是从github 上一共拿了11个版本的代码,然后两两比较,特别差的几个就直接淘汰了,
然后凭感觉合并了一 ...

问题肯处在竞技场上,以前不能发兵的目标在建了竞技场后就能够发兵了。群里的朋友说有可能是应该是计算到达时间的时候报错了,因为是0级竞技场。

2

主题

21

回帖

216

积分

中级会员

积分
216
发表于 2023-6-29 10:23:52 | 显示全部楼层
方便的话,把procDistanceTime这个函数贴出来我看看

2

主题

21

回帖

216

积分

中级会员

积分
216
发表于 2023-6-29 11:03:34 | 显示全部楼层
sentend 发表于 2023-6-29 10:23
方便的话,把procDistanceTime这个函数贴出来我看看

我猜啊,是拿到竞技场等级是0,然后判断的时候是>=0,之后进去if,但是等级0的竞技场是没有数据的,所以报错了
你只要把>=改成>就行了

21

主题

107

回帖

637

积分

管理员

积分
637
 楼主| 发表于 2023-6-30 09:32:52 | 显示全部楼层
sentend 发表于 2023-6-29 10:23
方便的话,把procDistanceTime这个函数贴出来我看看

/** database.php */
public function procDistanceTime($coor,$thiscoor,$ref,$vid) {
    global $bid28,$bid14;

    $xdistance = ABS($thiscoor['x'] - $coor['x']);
    if($xdistance > WORLD_MAX) {
       $xdistance = (2 * WORLD_MAX + 1) - $xdistance;
    }
    $ydistance = ABS($thiscoor['y'] - $coor['y']);
    if($ydistance > WORLD_MAX) {
       $ydistance = (2 * WORLD_MAX + 1) - $ydistance;
    }
    $distance = SQRT(POW($xdistance,2)+POW($ydistance,2));
    $speed = $ref;
    if($this->getTypeLevel(14,$vid) != 0 && $distance >= TS_THRESHOLD) {
       $speed = $speed * ($bid14[$this->getTypeLevel(14,$vid)]['attri']/100) ;
    }

    if($speed!=0){
    return round(($distance/$speed) * 3600 / INCREASE_SPEED);
    }else{
    return round($distance * 3600 / INCREASE_SPEED);
    }
}

点评

我估计可能有空,你把getTypeLevel(14,$vid) != 0 改成 getTypeLevel(14,$vid) > 0试试看  发表于 2023-6-30 09:47

21

主题

107

回帖

637

积分

管理员

积分
637
 楼主| 发表于 2023-6-30 12:49:40 | 显示全部楼层
superAdmin 发表于 2023-6-30 09:32
/** database.php */
public function procDistanceTime($coor,$thiscoor,$ref,$vid) {
    global $bid28 ...

改成大于0了

2

主题

21

回帖

216

积分

中级会员

积分
216
发表于 2023-6-30 15:44:36 | 显示全部楼层
还是会报错,是否需要重启的?
我给你说下我的推断
20格以内,是可以打劫的,商人不论远近,都不受影响的
建了1级竞技场,任何地方都不会报错,竞技场建了,但是没建成,也就是0级,也会报错
这是现象,说明问题就在竞技场上,
if($this->getTypeLevel(14,$vid) != 0 && $distance >= TS_THRESHOLD) {
       $speed = $speed * ($bid14[$this->getTypeLevel(14,$vid)]['attri']/100) ;
    }
这段代码不是0级,并且距离大于设定的竞技场距离,则进行竞技场的速度加成,attri数据从1-20都有,但是0是没有数据的
我不知道为什么还会报错,理论上用>0是不会进入这个if里了,你再看看,还有其他地方也用到竞技场
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|TravianZ 3.6

GMT+8, 2024-11-19 19:33 , Processed in 0.052226 second(s), 18 queries .

Powered by Discuz! X3.5

Copyright © 2001-2023 Tencent Cloud.

快速回复 返回顶部 返回列表