|
1/28、1/30 twRO 官方修改了系統,造成 openkore 無法掛網
小弟不才已經修改部分 table 檔以及程式檔就可以掛了....
因為我用的是 SVN r7572 版 (基本上在此版本上我己修改了許多程式碼,包括 XKore 功能)
和最新版 r7639 可能有些出入 (我尚未將我自行修改的程式碼反應到此一新版上)
所以不便打包上傳給各位大大
配合官方的變動,以下是我修改 openkore SVN r7572 的詳細步驟:
1. 修改 tables/servers.txt
將該檔案中凡是 Taiwan - twRO: 的區塊,將原 "charBlockSize 112" 都改成 "charBlockSize 116"
2. 修改 tables/twRO/recvpackets-twRO-free.txt
在該檔的最後面加上下列三行
0856 0
0857 0
0858 0
PS: 因為我只玩免服和全區,所以只改這個檔
3. 修改程式檔 src/Network/Receive/ServerType0.pm
這個對不會寫程式的大大可能會是個大工程... 其實也沒有很難
這次官方的變動影響 openkore 的資料封包,目前我測出有三類,其對應的修改如下:
(1). 角色資料封包 006B:
找到以下程式區塊- sub received_characters_unpackString {
- if ($masterServer && $masterServer->{charBlockSize} == 112) {
- return 'a4 V9 v V2 v14 Z24 C6 v2';
- } else {
- return 'a4 V9 v17 Z24 C6 v2';
- }
- }
複製代碼 修改成以下程式碼 (基本上是加入中間兩行):- sub received_characters_unpackString {
- if ($masterServer && $masterServer->{charBlockSize} == 112) {
- return 'a4 V9 v V2 v14 Z24 C6 v2';
- } elsif ($masterServer && $masterServer->{charBlockSize} == 116) {
- return 'a4 V9 v V2 v14 Z24 C6 v4';
- } else {
- return 'a4 V9 v17 Z24 C6 v2';
- }
- }
複製代碼 (2). 角色身上物品資料封包 02D0 (這要改兩個地方):
先找到 "sub inventory_items_nonstackable",
(A).
往下再找到以下程式區塊- } elsif ($args->{switch} eq '02D0') {
- $psize = 26;
- } else {
- warning "inventory_items_nonstackable: unsupported packet ($args->{switch})!\n";
- }
複製代碼 修改成以下程式碼 (基本上是把 26 改成 28):- } elsif ($args->{switch} eq '02D0') {
- $psize = 28;
- } else {
- warning "inventory_items_nonstackable: unsupported packet ($args->{switch})!\n";
- }
複製代碼 (B)
往下再找到以下程式區塊- if ($psize == 26) {
- my $expire = unpack("a4", substr($msg, $i + 20, 4)); #a4 or V1 unpacking?
- $item->{expire} = $expire if (defined $expire);
- #$item->{unknown} = unpack("v1", substr($msg, $i + 26, 2));
- }
複製代碼 修改成以下程式碼 (基本上是把 26 改成 28,再把 "$i + 20" 改成 "$i + 22"):- if ($psize == 28) {
- my $expire = unpack("a4", substr($msg, $i + 22, 4)); #a4 or V1 unpacking?
- $item->{expire} = $expire if (defined $expire);
- #$item->{unknown} = unpack("v1", substr($msg, $i + 26, 2));
- }
複製代碼 (3). 怪物/NPC 資料封包 0856 / 0857 / 0858
先找到以下程式區塊- sub new {
- my ($class) = @_;
- my $self = $class->SUPER::new();
-
- $self->{packet_list} = {
複製代碼 原程式區塊是- sub new {
- my ($class) = @_;
- my $self = $class->SUPER::new();
-
- $self->{packet_list} = {
- ........
- ........
- };
複製代碼 在此區塊的最後 ("};" 之前) 加入三行,成以下程式區塊:- sub new {
- my ($class) = @_;
- my $self = $class->SUPER::new();
-
- $self->{packet_list} = {
- ........
- ........
- '0856' => ['actor_display', 'v C a4 v3 V v5 a4 v5 a4 a2 v V v C2 a6 C2 v2 Z*', [qw(len object_type ID walk_speed opt1 opt2 option type hair_style weapon shield lowhead tick tophead midhead hair_color clothes_color head_dir guildID emblemID manner opt3 opt4 karma sex coords xSize ySize lv font name)]], # -1 # walking
- '0858' => ['actor_display', 'v C a4 v3 V v10 a4 a2 v V v C2 a3 C2 v2 Z*', [qw(len object_type ID walk_speed opt1 opt2 option type hair_style weapon shield lowhead tophead midhead hair_color clothes_color head_dir guildID emblemID manner opt3 opt4 karma sex coords xSize ySize lv font name)]], # -1 # spawning
- '0857' => ['actor_display', 'v C a4 v3 V v10 a4 a2 v V v C2 a3 C3 v2 Z*', [qw(len object_type ID walk_speed opt1 opt2 option type hair_style weapon shield lowhead tophead midhead hair_color clothes_color head_dir guildID emblemID manner opt3 opt4 karma sex coords xSize ySize act lv font name)]], # -1 # standing
- };
複製代碼 如果你的 Bot 因為 1/28、1/31 官方的異動而不能正常工作的話,可試試以上的方法 |
評分
-
1
查看全部評分
-
|