本帖最后由 e110110eee 于 2023-2-3 12:25 编辑
目的这个项目的目的不只是分享如何启动一个143的服务器。而是希望找到志同道合的朋友,一起玩好143服务器!!!。我也不懂,就懂一些java的东西。很多东西还得摸索和学习。目的搞懂到底是如何交互以及如何修复后台的。比如职业技能修复、活动修复boss修复等等。那些脚本、Wz修改的都比较简单,不是我的目的。所以希望有大佬或者感兴趣的朋友带带我或者一起学习。我是真的觉得这个很有趣!!!当然大佬都比较高冷,觉得我就像个菜鸡
项目所有的东西都是我在论坛找的,而且我亲手操作过一遍。就好像别人搭好的台子,玩出自己想玩的东西,这篇文章只是分享一下怎么启动143的服务器。使用的资源论坛都有!!!
为什么选择143?看到论坛上面143服务器的介绍太少了,所以我自己也想尝试一下启动143 听说同步的一些服都是143修复过去的,所以我也想试试,从这里开始。 我也什么都不懂,应该不会被别人利用吧?以下理解都是我从0开始实际操作的
进入正题只需要三个东西:
具体实现步骤- public static void main(String[] args) {
- //直接写wz文件的路径
- System.setProperty("wzpath","D:\\maplestory\\143wz\\wz");
复制代码
或者配置启动参数也可以 -D,但是换个电脑要重新配麻烦。 最后IDEA项目的文件如下:
4.修改路径配置,主要是Mysql配置 启动一个数据库,本地没有数据库就用里面phpstudy启动。有数据库直接导入项目的数据库sql文件。 数据库文件在哪搞?启动一次phpstudy把里面的数据库导出来就行。 下载一个143的客户端,论坛很多 idea启动项目,有启动问题就解决问题,反正我是直接起来了,这里分配给idea启动项目的内存多一点,我给了3g。 -Xms3072m -Xmx3072m
idea启动后会有一个ui界面,点击一下 我嫌太麻烦了直接把这个启动服务端按钮的逻辑添加在main函数后面的代码里面,idea启动就不用再点一次启动服务端了,但是这里有bug不要再点这个按钮就行。
站内地址:https://www.fengyewuyu.com/forum ... =1239&extra=&page=1
账号密码随便填,不存在的自动会创建账户,点击登陆后续就进入游戏了。 第一次操作成功还有点小激动!!!!! 后面就进入游戏,有手就行了。但是有一个问题必会出现。详见下面问题2 最后我还是坚持我的目的,希望把这个端玩好。当然前路漫漫,用爱发电!里面的东西太多了慢慢来吧。真希望有人可以相互交流交流!!
接下来呢? 接下来会一边玩一边修复代码,顺便熟悉代码,会经常更新,我的qq 996057150。希望大家能交流交流
工具补充!!!: 2023-2-1 1. idea项目启动需要配置redis,不然爆链接错误,但是redis默认没有window的,需要找一个window启动的redis。有其他报错请说明,我是直接可以启动了 2. idea项目配置热更新插件搜一下JRebel,每次只重新加载修改的类进JVM,不然每次启动服务都要好久
2023-2-2 收集个版本对应,方便比较个版本的内容信息
当前最新版本:焗燃第一阶段:
国服CMS:195
台服TMS:249
美服GMS:237
韩服KMS:366
国服历史版本信息:
kms362 ---- 国服191 destiny
GMS083 --- ?? GMS093大巨变 -- 国服087大巨变
可能早期版本不一致,按照差值计算。目前没有找到美服版本信息记录.陆续补充
问题解决汇总 日期:2022 03- 24 2.java.lang.NumberFormatException: For input string: "2203232321" 时间大于int表示的最大值2147483647 也就是21年47月48日36:47 实际并不存在修复:先转成long,然后强转成int 方法地址:tools.DateUtil#getTime(long)改成我下面这样就行了,原理应该是只用到四个字节而已,所以不会有影响 3.修复新手转职飞侠脚本里面是+敏捷
|
2023-2-3 09:42
签到天数: 3 天
[LV.2]偶尔看看I
初级会员
2022-03-24
修复一个bug:飞镖和弓箭不会被消耗的问题,解析被消耗的栏位找错了,debug试错发现是字段错了,修改解析的字段即可
使用道具 举报
2023-2-3 09:42
签到天数: 3 天
[LV.2]偶尔看看I
初级会员
Recv RANGED_ATTACK[00D0] (123) From : player
D0 00 00 08 12 40 0E 3D 00 14 00 D7 BF 53 0D 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 33 80 2B EE C3 B9 07 04 4B 1B 1A 00 00 00 00 00 00 00 00 DB FC 40 00 6B FE 41 00 2C A1 07 00 07 00 00 81 06 C5 C6 2D 00 01 AA FD 84 00 AA FD 84 00 CF 02 92 78 00 00 00 00 00 00 60 77 00 00 00 00 00 00 00 00 00 00 DE 18 5F 09 00 01 79 FD 69 00 B0 FD 84 00 6B FE 5C 00
D0 00 包头标识远程攻击
00 是否 == 1
08 跳过了
12 attack adn damage => 攻击信息 怪物数 和攻击次数
40 0E 3D 00 技能id
14 技能等级 = 十进制是20
00 D7 BF 53 0D 00 跳过六个字节
01 00 消耗物品栏位
00 00 00 00 跳过四个字节
如果前面为1跳过四个字节,这里没有
又跳过11个字节
01 unk
33 display
80 direaction
00 00 00 00跳过四
00 跳过1
04 攻击速度 4
4B 1B 1A 00 四个字节 lastAttackTickCount
DB FC 40 00 6B FE 41 00 跳过
2C A1 07 00 Oid 四个字节 (投掷物id)
07 Attack ie ?
00 00 81 06 C5 C6 2D 00 01 AA FD 84 00 AA FD 84 00 CF 02 跳过19个字节
然后根据前面算的攻击次数计算伤害,释放的是双飞斩所以是2
伤害1: 92 78 00 00 00 00 00 00,换算10进制就是 long 8个字节
伤害2 :60 77 00 00 00 00 00 00
00 00 00 00 DE 18 5F 09 00 01 79 FD 69 00 B0 FD 84 然后跳过18个字节
最后四个字节表示怪物坐标
X = 6B FE (-405)
Y = 5C 00 (92)
除了lastAttackTickCount 其他都了解了。
响应
F6 01 01 02 00 00 00 79 A1 07 00 0B 00 00 00 01 02 00 00 00 7A A1 07 00 87 A1 07 00 AC 8F 3E 00 01 1C 00 00 00 01 00 00 00 29 00 00 00 03 00 00 00 BB 00 00 00 C8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 1D 00 00 00 01 00 00 00 22 00 00 00 04 00 00 00 A5 00 00 00 C8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FE 00 00 00 1F 00 00 00 EE 01 00 00 E7 00 00 00 00 96 1F 00
F6 01 GAIN_FORCE
01 未知
02 00 00 00 角色id
79 A1 07 00 怪物工作id 每次都不同,应该是命中的怪物id吧
0B 00 00 00 刺客标记,固定
01 固定
02 00 00 00 怪物数
7A A1 07 00 怪物工作id
87 A1 07 00 怪物工作id
AC 8F 3E 00 十进制4100012 (刺客标记id)
接下来是怪物数据, 因为有两只所以循环两次
1 1F 00 00 00 略过
01 刺客标记| 02隐式标记
00 00 00 29随机数
00 00 00 03 随机数
00 00 00 BB 随机数
00 00 00 C8 写入200
写入 16个字节0
写入 4个字节0
01 开始新的 1D 00 00 00
01 刺客标记 | 02隐式标记
00 00 00 29随机数
00 00 00 03 随机数
00 00 00 BB 随机数
00 00 00 C8 写入200
写入 16个字节0
写入 4个字节0
下一部分
写入0
写入4个int 表示四个角
mplew.writeInt(posFrom.x - 120);
mplew.writeInt(posFrom.y - 100);
mplew.writeInt(posFrom.x + 120);
mplew.writeInt(posFrom.y + 100);
00 96 1F 00 最后写入一个int飞镖显示道具
使用道具 举报
该用户从未签到
新人上路
使用道具 举报
2020-12-27 22:05
签到天数: 3 天
[LV.2]偶尔看看I
初级会员
使用道具 举报
2018-4-23 14:53
签到天数: 1 天
[LV.1]初来乍到
服务端开发者
使用道具 举报
2023-2-3 09:42
签到天数: 3 天
[LV.2]偶尔看看I
初级会员
0510
想修复打怪任务增加怪物
最终找到了是任务没有初始化,导致任务的怪物没有被添加到任务状态中
server.quest.MapleQuest.initQuests
这些表都没有,只能从079那边拿过来,但是数据需要自己填充的。。。怪不得除了id全是空的。
navicat同步结构和数据
需要单独添加一个灯泡字段
```
2022-05-11 00:17:59.242
Send SHOW_STATUS_INFO [0061] (11) Recv to : 飞飞
61 00 01 8D 0A 01 03 00 30 30 34
```
已经可以正常的发送了,但是客户端确实没有更新到数据,可能是这个封包和079的已经不一样了,需要修复这个
使用道具 举报
2023-2-3 09:42
签到天数: 3 天
[LV.2]偶尔看看I
初级会员
任务相关表信息
```
# 任务信息
select * from wz_questactdata where questid = 2701
# 任务需要和获取的东西
select * from wz_questactdata where questid = 2089
# 和actdata uniqueid 关联 物品信息
select * from wz_questactitemdata where uniqueid in (select uniqueid from wz_questactdata where questid = 2089 and name = 'item')
# 和任务关联的任务
select * from wz_questactquestdata where QUEST = 2100
# 和任务关联的技能
select * from wz_questactskilldata where uniqueid = 218
# 任务的状态
SELECT * FROM queststatus WHERE QUEST = 2701
# 任务信息
select * from questinfo where quest = 2701
# 任务怪物状态
select * from queststatusmobs
```
绿蘑菇任务是2701,相关联的信息为
```sql
# request info
INSERT INTO `chms`.`wz_questdata`(`questid`, `name`, `autoStart`, `autoPreComplete`, `viewMedalItem`, `selectedSkillID`, `blocked`, `autoAccept`, `autoComplete`, `selfStart`) VALUES (2701, '绿蘑菇通缉牌', 0, 0, 0, 0, 0, 0, 0, 0);
# request
INSERT INTO `chms`.`wz_questreqdata`(`id`, `questid`, `name`, `type`, `stringStore`, `intStoresFirst`, `intStoresSecond`) VALUES (22728, 2701, 'mob', 1, '0', '1110100', '20');
#act data
INSERT INTO `chms`.`wz_questactdata`(`id`, `questid`, `name`, `type`, `intStore`, `applicableJobs`, `uniqueid`) VALUES (7757, 2701, 'exp', 1, 434, '', -1);
INSERT INTO `chms`.`wz_questactdata`(`id`, `questid`, `name`, `type`, `intStore`, `applicableJobs`, `uniqueid`) VALUES (7758, 2701, 'item', 1, 0, '', 2001);
# item data
INSERT INTO `chms`.`wz_questactitemdata`(`id`, `itemid`, `count`, `period`, `gender`, `job`, `jobEx`, `prop`, `uniqueid`) VALUES (9101, 1032003, 1, 0, 2, -1, -1, -2, 2001);
```
对应的就是这个
最后完成任务的奖励获取
总结:
其实就是把questid 改成int传就好了。剩下和079的一样。修复任务绝对是吃力不讨好的事情
使用道具 举报
2024-5-25 20:14
签到天数: 3 天
[LV.2]偶尔看看I
新人上路
使用道具 举报
该用户从未签到
新人上路
使用道具 举报