캐릭터 선택창 문제 임시방편

Korea - 한국

Moderator: Moderators

Forum rules
This server is currently not maintained and tables folder (including connection info) maybe outdated. Read the wiki for instructions on how to update those information and please contribute when you obtain them. Contact Cozzie to join the team as a regular server supporter.
Message
Author
zuki0520
Noob
Noob
Posts: 9
Joined: 10 Jun 2008, 05:32
Noob?: Yes

캐릭터 선택창 문제 임시방편

#1 Post by zuki0520 »

임시방편이 될지 정상작동을 하는건지는 모르겠군요.
제 계정에서 뽑아본 패킷만으로 확인했으니,
문제가 있다면 함께 수정해 봅시다.

패킷 분석 결과 :
http://yadong.tistory.com/86

일단 수정한 점.

1. 8_5.pm 에서 캐릭터 블럭 사이즈를 불러오고자 했는데, 작동이 안되는듯 해서 직접 때려넣음
2. 중간중간 쓰레기 패킷이 많아 전체적으로 패킷간에 스킵을 추가


몬스터 공격인식 및 공격이 안되는것은,
개체 인식을 위한 패킷이 비정상이라 그런듯.
이것도 수정해야 일단 작동이 될텐데, 라그가 노트북에서 너무느리네요 -_ -

Code: Select all

	my $blockSize = 112; 
	#$self->received_characters_blockSize(); <-- 작동안하는듯?
	for (my $i = $args->{RAW_MSG_SIZE} % $blockSize; $i < $args->{RAW_MSG_SIZE}; $i += $blockSize) { 
		#exp display bugfix - chobit andy 20030129 
		my $unpack_string = "V4 v x22 x2 v x2 v x2 v2 x2 v2 x2 v x2 v x2 v4 Z24 C6 v x2";
		my ($cID,$exp,$zeny,$jobExp,$jobLevel,$hp,$maxHp,$sp,$maxSp,$jobId,
			$hairstyle,$level,$headLow,$headTop,$headMid,$hairColor,
			$clothesColor,$name,$str,$agi,$vit,$int,$dex,$luk,$slot) =
			unpack($unpack_string, substr($args->{RAW_MSG}, $i));

		$chars[$slot] = new Actor::You; 
		$chars[$slot]{ID} = $accountID; 
		$chars[$slot]{charID} = $cID; 
		$chars[$slot]{exp} = $exp; 
		$chars[$slot]{zeny} = $zeny; 
		$chars[$slot]{exp_job} = $jobExp; 
		$chars[$slot]{lv_job} = $jobLevel; 
		$chars[$slot]{hp} = $hp; 
		$chars[$slot]{hp_max} = $maxHp; 
		$chars[$slot]{sp} = $sp; 
		$chars[$slot]{sp_max} = $maxSp; 
		$chars[$slot]{jobID} = $jobId; 
		$chars[$slot]{hair_style} = $hairstyle; 
		$chars[$slot]{lv} = $level; 
		$chars[$slot]{headgear}{low} = $headLow; 
		$chars[$slot]{headgear}{top} = $headTop; 
		$chars[$slot]{headgear}{mid} = $headMid; 
		$chars[$slot]{hair_color} = $hairColor; 
		$chars[$slot]{clothes_color} = $clothesColor; 
		$chars[$slot]{name} = $name; 
		$chars[$slot]{str} = $str; 
		$chars[$slot]{agi} = $agi; 
		$chars[$slot]{vit} = $vit; 
		$chars[$slot]{int} = $int; 
		$chars[$slot]{dex} = $dex; 
		$chars[$slot]{luk} = $luk; 
		$chars[$slot]{sex} = $accountSex2; 
 
		$chars[$slot]{nameID} = unpack("V", $chars[$slot]{ID}); 
		$chars[$slot]{name} = bytesToString($chars[$slot]{name}); 
보시면 중간중간 패킷을 스킵하는 부분이 보일텐데요,
완전히 분석해 보지는 않았지만, 새로이 추가된 항목들 이라고 생각합니다.
성향, 매너포인트, 잔여 포인트 등의 내용으로 추측되는데
아무튼 캐릭터 선택창과는 별로 연관이 없기때문에 배제했습니다.