PDA

View Full Version : [Gunny] Chỉ mình cách sửa ?



OldGamer
19-10-14, 12:33 PM
Hi,

Mình gặp lỗi này, vào PVP thì 1 nhân vật di chuyển bắn bình thường với HP, Dander đúng, 1 nhân vật thì bắn được nhưng không di chuyển được và HP, Dander sai. Chỉnh sửa mãi không được. Cao nhân nào giúp dùm ?

<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

OldGamer
20-10-14, 09:25 PM
Cao nhân nào giúp với.

Mò hôm qua nay mãi không ra. Xem code và log các hàm têp BaseGame, PVEGame, PVPGame nhưng không thấy lỗi đâu :/

OldGamer
21-10-14, 12:03 PM
Mình dùng resource bản 5.4 và test với các thông số khác nhau ở hàm SendCreateGame


internal void SendCreateGame()
{
GSPacketIn pkg = new GSPacketIn((byte)ePackageType.GAME_CMD);
pkg.WriteByte((byte)eTankCmdType.GAME_CREATE);
pkg.WriteInt((byte)m_roomType);
pkg.WriteInt((byte)m_gameType);
pkg.WriteInt(this.m_timeType);
List<Player> allFightPlayers = this.GetAllFightPlayers();
pkg.WriteInt(allFightPlayers.Count);
foreach (Player player in allFightPlayers)
{
IGamePlayer playerDetail = player.PlayerDetail;

pkg.WriteInt(4);
pkg.WriteString("zonename");
pkg.WriteInt(playerDetail.PlayerCharacter.ID);
pkg.WriteString(playerDetail.PlayerCharacter.NickN ame);
pkg.WriteBoolean(false);
pkg.WriteByte(playerDetail.PlayerCharacter.typeVIP );
pkg.WriteInt(playerDetail.PlayerCharacter.VIPLevel );
pkg.WriteBoolean(playerDetail.PlayerCharacter.Sex) ;
pkg.WriteInt(playerDetail.PlayerCharacter.Hide);
pkg.WriteString(playerDetail.PlayerCharacter.Style );
pkg.WriteString(playerDetail.PlayerCharacter.Color s);
pkg.WriteString(playerDetail.PlayerCharacter.Skin) ;
pkg.WriteInt(playerDetail.PlayerCharacter.Grade);
pkg.WriteInt(playerDetail.PlayerCharacter.Repute);
pkg.WriteInt(playerDetail.MainWeapon.TemplateID);
pkg.WriteInt(playerDetail.MainWeapon.RefineryLevel );
pkg.WriteString(playerDetail.MainWeapon.Name);
pkg.WriteDateTime(DateTime.Now);
if (playerDetail.SecondWeapon == null)
pkg.WriteInt(0);
else
pkg.WriteInt(playerDetail.SecondWeapon.TemplateID) ;
pkg.WriteInt(0);//_loc_9.pvpBadgeId
pkg.WriteInt(playerDetail.PlayerCharacter.Nimbus);
pkg.WriteBoolean(playerDetail.PlayerCharacter.IsSh owConsortia);
pkg.WriteInt(playerDetail.PlayerCharacter.Consorti aID);
pkg.WriteString(playerDetail.PlayerCharacter.Conso rtiaName);
pkg.WriteInt(playerDetail.PlayerCharacter.badgeID) ;
pkg.WriteInt(0);
pkg.WriteInt(0);
pkg.WriteInt(playerDetail.PlayerCharacter.Win);
pkg.WriteInt(playerDetail.PlayerCharacter.Total);
pkg.WriteInt(playerDetail.PlayerCharacter.FightPow er);
pkg.WriteInt(0);//apprenticeshipState
pkg.WriteInt(0);//masterID
pkg.WriteString("");
pkg.WriteInt(playerDetail.PlayerCharacter.Achievem entPoint);
pkg.WriteString(playerDetail.PlayerCharacter.Honor );
pkg.WriteInt(playerDetail.PlayerCharacter.Offer);
pkg.WriteBoolean(false);
pkg.WriteInt(0);
pkg.WriteBoolean(playerDetail.PlayerCharacter.IsMa rried);
if (playerDetail.PlayerCharacter.IsMarried)
{
pkg.WriteInt(playerDetail.PlayerCharacter.SpouseID );
pkg.WriteString(playerDetail.PlayerCharacter.Spous eName);
}
pkg.WriteInt(5); //GMExperienceAddition
pkg.WriteInt(5); //AuncherExperienceAddition
pkg.WriteInt(5); //GMOfferAddition
pkg.WriteInt(5); //AuncherOfferAddition
pkg.WriteInt(5); //GMRichesAddition
pkg.WriteInt(5); //AuncherRichesAddition
pkg.WriteInt(player.Team);
pkg.WriteInt(player.Id);
pkg.WriteInt(player.MaxBlood);
if (player.Pet != null)
{
pkg.WriteInt(1);
pkg.WriteInt(player.Pet.Place);
pkg.WriteInt(player.Pet.TemplateID);
pkg.WriteInt(player.Pet.ID);
pkg.WriteString(player.Pet.Name);
pkg.WriteInt(player.Pet.UserID);
pkg.WriteInt(player.Pet.Level);
List<string> skillEquip = player.Pet.GetSkillEquip();
pkg.WriteInt(skillEquip.Count);
foreach (string str in skillEquip)
{
pkg.WriteInt(int.Parse(str.Split(new char[1]{','})[1]));
pkg.WriteInt(int.Parse(str.Split(new char[1]{','})[0]));
}
}
else
pkg.WriteInt(0);
}
this.SendToAll(pkg);
}


Khi thay đổi dòng pkg.WriteString(""); thành pkg.WriteString("Master") thì nhân vật 2 không di chuyển được và HP/Dancer sai, bỏ trống thì ngược lạ.
Xem lại source của TranMinhPC thì thấy còn vài thông số ở pkg.WriteInt(0);//apprenticeshipState

Ai biết giúp dùm ^:)^

meocon5000
21-10-14, 12:16 PM
Vào source client xem nó đọc cái chuỗi đó để làm gì thì hiểu tại sao ko thay đổi đc

OldGamer
21-10-14, 02:55 PM
Soi mù mắt không ra mới hỏi cao nhân đi trước ấy chws :-B

meocon5000
21-10-14, 03:46 PM
Soi mù mắt không ra mới hỏi cao nhân đi trước ấy chws :-B

Cái chuỗi bạn truyền ko đúng định dạng nên nó ko analyze dc, ở client nó là MasterOrApprentices, bạn có thể vào 2.png/GameManager.as để hiểu thêm

OldGamer
21-10-14, 04:16 PM
Mình thử nhiều cách nhưng tình vẫn như trên, hoặc Team 1 hoặc Team 2 hiện máu đúng, di chuyển được; team kia thì máu sau đwsng yên
Và thậm chí đổi code truyền MasterApprentices như sau


pkg.WriteInt(playerDetail.PlayerCharacter.Win);
pkg.WriteInt(playerDetail.PlayerCharacter.Total);
pkg.WriteInt(playerDetail.PlayerCharacter.FightPow er);
pkg.WriteInt(0);//apprenticeshipState
pkg.WriteInt(0);//masterID
if (player.Team == 1)
pkg.WriteString("Master");
else
pkg.WriteString("Apprentices");
pkg.WriteInt(playerDetail.PlayerCharacter.Achievem entPoint);
pkg.WriteString(playerDetail.PlayerCharacter.Honor );
pkg.WriteInt(playerDetail.PlayerCharacter.Offer);
pkg.WriteBoolean(false);
pkg.WriteInt(0);
pkg.WriteBoolean(playerDetail.PlayerCharacter.IsMa rried);


Nhưng tình hình vẫn vậy =((^:)^

meocon5000
21-10-14, 04:33 PM
Mình thử nhiều cách nhưng tình vẫn như trên, hoặc Team 1 hoặc Team 2 hiện máu đúng, di chuyển được; team kia thì máu sau đwsng yên
Và thậm chí đổi code truyền MasterApprentices như sau


Nhưng tình hình vẫn vậy =((^:)^

Vậy bạn chưa hiểu rồi

Ý mình là cái chuỗi đó nó không truyền được kiểu như "Master" đâu , client nó chỉ nhận 2 trường hợp
+ Chuỗi đó là "";
+ Nếu không phải "" thì nó sẽ tách chuỗi bằng dấu "," và "|" , mà bạn truyền ko có dấu "," và "|" , nó không tách được nên lỗi thôi

Đây là đoạn code tách chuỗi đó trong client , nằm ở PlayerInfo.as


public function setMasterOrApprentices(param1:String) : void
{
var _loc_2:Array = null;
var _loc_3:int = 0;
var _loc_4:Array = null;
if (!this._masterOrApprentices)
{
this._masterOrApprentices = new DictionaryData();
}
this._masterOrApprentices.clear();
if (param1 != "")
{
_loc_2 = param1.split(",");
_loc_3 = 0;
while (_loc_3 < _loc_2.length)
{

_loc_4 = _loc_2[_loc_3].split("|");
this._masterOrApprentices.add(int(_loc_4[0]), _loc_4[1]);
_loc_3 = _loc_3 + 1;
}
}
onPropertiesChanged("masterOrApprentices");
return;
}// end function


Vậy nên chỉ có thể truyền "" như ban đầu hoặc có ",","|"

OldGamer
21-10-14, 04:44 PM
Nếu mình để truyền rỗng như ban đầu thì tình trạng vẫn thế.
Mình sẽ thử cách truyền chuỗi như bạn :/

meocon5000
21-10-14, 04:59 PM
Nếu mình để truyền rỗng như ban đầu thì tình trạng vẫn thế.
Mình sẽ thử cách truyền chuỗi như bạn :/

Ở trên bạn bảo sửa cái "" thành "Master" thì nó mới bị mà , mình chỉ giải thích thôi :-"

OldGamer
21-10-14, 08:45 PM
Hức,

Tình hình vẫn thế, có mấy chuỗi đấy hay không vẫn lỗi bên có HP đúng, di chuyển được; bên sai HP và di chuyển không được (:|

trong0981
23-10-14, 10:48 AM
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

OldGamer
26-10-14, 10:51 AM
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

Mình không dùng mấy bản share mà buld từ source
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>


Dù ai đi ngược về xuôi nhớ ngày giỗ tổ ... ? (gợi ý câu trả lời: mung 10 thang 3)

trong0981
26-10-14, 01:45 PM
Mình không dùng mấy bản share mà buld từ source
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b> (<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>)


Dù ai đi ngược về xuôi nhớ ngày giỗ tổ ... ? (gợi ý câu trả lời: mung 10 thang 3)

chịu, chắc thiếu packet nào đó or packet nào đó gửi thiếu cho client.

OldGamer
26-10-14, 10:18 PM
Mình fix được rồi, đang test các tính năng.

Sẽ hỏi thêm sau :-*