冰楓論壇

標題: 新仙境傳說(RO) 【轉貼】「修正」之卡住Bug(2013/11/30 更新) [打印本頁]

作者: KMT    時間: 2014-11-30 19:23
標題: 新仙境傳說(RO) 【轉貼】「修正」之卡住Bug(2013/11/30 更新)
2013/11/30 增加修改(1-1)、更新修改(2)修改(3)~說明在4樓

修正當人物坐標~
RO伺服器 跟 OP 不一樣時
造成卡住不動的Bug~

請注意: 以下修改涉及主程式修改,
稍有不慎恐會造成 Openkore 無法執行,若無把握請勿嘗試,
建議修改前先備份該相關檔案,以備不時之需(Sofax222 大大的語錄)

開啟檔案 srcTaskRoute.pm
=====修改(1) =====
原程式碼
  1. } elsif (!$wasZero) {
複製代碼
修改成
  1. } elsif ($self->{index} == 0) {
複製代碼
修改 01 行~避免卡住



185539wg5mcbeqozqfd39c.jpg



開啟檔案 srcNetworkReceiveServerType0.pm
=====修改(2) =====
原程式碼
  1. # Perform trigger actions
  2. if ($sourceID eq $accountID) {
  3.         $char->{time_cast} = time;
  4.         $char->{time_cast_wait} = $wait / 1000;
  5.         delete $char->{cast_cancelled};
  6. }
複製代碼
修改成
  1. # Perform trigger actions
  2. if ($sourceID eq $accountID) {
  3.         $char->{time_cast} = time;
  4.         $char->{time_cast_wait} = $wait / 1000;
  5.         delete $char->{cast_cancelled};
  6. }
  7. if (my $player = ($accountID eq $sourceID && $char) || $playersList->getByID($sourceID) || $slavesList->getByID($sourceID)) {
  8.         if ($player->{pos}{x} != $player->{pos_to}{x} || $player->{pos}{y} != $player->{pos_to}{y}) {
  9.                 %{$player->{pos}} = %{calcPosition($player)};
  10.                 %{$player->{pos_to}} = %{$player->{pos}};
  11.                 $player->{time_move_calc} = 0;
  12.                 if ($char->{party} && $char->{party}{users} && $char->{party}{users}{$sourceID}) {
  13.                         %{$char->{party}{users}{$sourceID}{pos}} = %{$player->{pos}};
  14.                         $char->{party}{users}{$sourceID}{online} = 1;
  15.                 }
  16.         }
  17. }
複製代碼
複製代碼
增加 07 - 18 行~

185540h8zv2vb0tbb2ukf8.jpg

開啟檔案 srcMisc.pm
=====修改(3) =====
原程式碼
  1. if ($damage == 0) {
  2.         ($accountID eq $targetID ? $monster->{missedYou} : $monster->{missedToPlayer}{$targetID}) += 1;
  3.         $player->{missedFromMonster}{$sourceID}++;
  4. }
複製代碼
修改成
  1. if ($damage == 0) {
  2.         ($accountID eq $targetID ? $monster->{missedYou} : $monster->{missedToPlayer}{$targetID}) += 1;
  3.         $player->{missedFromMonster}{$sourceID}++;
  4. } elsif ($damage > 0
  5.                 && ($player->{pos}{x} != $player->{pos_to}{x} || $player->{pos}{y} != $player->{pos_to}{y})
  6.                 && !$player->statusActive('EFST_ENDURE')) {
  7.         %{$player->{pos}} = %{calcPosition($player)};
  8.         %{$player->{pos_to}} = %{$player->{pos}};
  9.         $player->{time_move_calc} = 0;
  10.         if ($char->{party} && $char->{party}{users} && $char->{party}{users}{$targetID}) {
  11.                 %{$char->{party}{users}{$targetID}{pos}} = %{$player->{pos}};
  12.                     $char->{party}{users}{$targetID}{online} = 1;
  13.         }
  14. }
複製代碼
增加 04 - 15 行~
被攻擊時~又不在"霸體狀態"時~
計算出實際座標~
視地形 & LAG 情況~誤差約0 ~ 2 格

185540jv99g2ie2o66lq5a.jpg


開啟檔案 srcNetworkReceive.pm
=====修改(4) =====
原程式碼
  1. use strict;
  2. use Network::PacketParser; # import
  3. use base qw(Network::PacketParser);
  4. use encoding 'utf8';
複製代碼










歡迎光臨 冰楓論壇 (https://bingfong.com/) Powered by 冰楓