Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16788 
	
		
	 | 
	
		
 | 
	| 10.02.2011 01:18 | 
	
		
	 | 
	
		
		GhostManSD 
 
 
		
		
		
			
			
			
 
 
			
Posts: 1054 
	
		
	 | 
	
		
			
			 
			
				Sav, ты не понял. Не о том речь. При срабатывании хука все переменные перемещаются нормально и выдают верные значения. Но отображается лишь одно окно (даже если герой получил 3 уровня) и герою накидываются уровни до 34.
  (10.02.2011 01:16)Sav Wrote:  Откуда появляются значения в переменных LevelUp_HeroNumber и LevelUp_HeroLevel? 
Из указателей. Дело не в этом.
			  
			
			
  
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
			
		 |  
	 
 | 
	| 10.02.2011 03:35 | 
	
		
	 | 
	
		
		GhostManSD 
 
 
		
		
		
			
			
			
 
 
			
Posts: 1054 
	
		
	 | 
	
		
			
			 
			
				 (10.02.2011 01:18)Berserker Wrote:  Quote:Так в HE:E при установке уровня окна и не должны вроде появляться. 
Конечно не должны. А в x2 - мусор по ходу. 
Почему же мусор? Показывает, какого уровня достиг герой.
			  
			
			
  
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
			
		 |  
	 
 | 
	| 10.02.2011 04:05 | 
	
		
	 | 
	
		
		Sav 
 
 
		
		
		
			
			
			 
			
Posts: 2180 
	
		
	 | 
	
		
			
			 
			
				Уровни до 34 накидываются всегда или только при использовании HE:E?
			 
			
			
			
		 |  
	 
 | 
	| 10.02.2011 14:04 | 
	
		
	 | 
	
		
		GhostManSD 
 
 
		
		
		
			
			
			
 
 
			
Posts: 1054 
	
		
	 | 
	
		
			
			 
			
				Всегда. А HE:E было призвано исправить ситуацию, сменив уровень героя на тот, которого он достигает. Но ситуация не меняется. Я бы пошел иным путем: устанавливал бы значение в ассемблере, но я никак не могу найти указатель на реальный уровень героя (а не получаемый). 
При вводе чита woggandalfwhite все проходит нормально, кстати. Получаемый уровень соответствует реальному.
			 
			
			
  
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
			
		 |  
	 
 | 
	| 10.02.2011 14:49 | 
	
		
	 | 
	
		
		Sav 
 
 
		
		
		
			
			
			 
			
Posts: 2180 
	
		
	 | 
	
		
			
			 
			
				А зачем ты восстанавливаешь так много кода? Хуку же одного call хватает, чтобы больше ничего не затирать.
			 
			
			
			
		 |  
	 
 | 
	| 10.02.2011 15:03 | 
	
		
	 | 
	
		
		GhostManSD 
 
 
		
		
		
			
			
			
 
 
			
Posts: 1054 
	
		
	 | 
	
		
			
			 
			
				Sav, не понял. Можешь пояснить? Или показать, как должен выглядеть мой код?
			 
			
			
  
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
			
		 |  
	 
 | 
	| 10.02.2011 15:13 | 
	
		
	 | 
	
		
		Sav 
 
 
		
		
		
			
			
			 
			
Posts: 2180 
	
		
	 | 
	
		
			
			 
			
				      HookCode(POINTER($4DAC9B), @HookTrigger_LevelUp, C_HOOKTYPE_JUMP); // 90000 
***       // Restore default code       MOV DataTemp, $59A890       CALL DataTemp       MOV EAX, DWORD PTR DS:[$69959C]       MOVSX ECX, AX 
***       PUSH $4DACA7 
 
Можно было бы сделать адресом хука адрес call-а и не восстанавливать ничего, кроме него. 
И push-ить адрес call-а + 5. 
Как это точно сделать - не знаю (нет кода игры перед глазами). 
Здесь не видно связи с твоей ошибкой, но иногда при исправлении понятных недочётов исправляются и непонятные ошибки
			 
			
			
			
		 |  
	 
 | 
	| 10.02.2011 15:41 | 
	
		
	 | 
	
		
		GhostManSD 
 
 
		
		
		
			
			
			
 
 
			
Posts: 1054 
	
		
	 | 
	
		
			
			 
			
				Sav, спасибо, помогло. Теперь всегда буду ставить хук на CALL. 
З.Ы. X2 - и впрямь мусор. Точнее, не совсем мусор, но не то, что нужно. Не совсем то я искал.   
 (10.02.2011 18:07)GhostManSD Wrote:  З.Ы. X2 - и впрямь мусор. Точнее, не совсем мусор, но не то, что нужно. Не совсем то я искал.   
Извиняюсь, таки соврал. Нужное. Это уровень, которого достигнет герой, когда закончит щелкать по окошкам, выбирая новые навыки.   
			 
			
			
  
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
			
				
(This post was last modified: 10.02.2011 18:11 by GhostManSD.)
 
			 
		 |  
	 
 | 
	| 10.02.2011 18:07 | 
	
		
	 | 
	
		
		GhostManSD 
 
 
		
		
		
			
			
			
 
 
			
Posts: 1054 
	
		
	 | 
	
		
			
			 
			
				Допустим, в адресе A идет значение (по дампу) [01 00 00 04 00 08 1F 00]. Могу ли я загнать в EAX только начало этого значения, т.е. (в данном случае) 01?
			 
			
			
  
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
			
				
(This post was last modified: 11.02.2011 00:04 by GhostManSD.)
 
			 
		 |  
	 
 | 
	| 10.02.2011 23:55 | 
	
		
	 | 
	
		
		Sav 
 
 
		
		
		
			
			
			 
			
Posts: 2180 
	
		
	 | 
	
		
			
			 
			
				mov eax, byte ptr [A]
			 
			
			
			
				
(This post was last modified: 11.02.2011 00:32 by Sav.)
 
			 
		 |  
	 
 | 
	| 11.02.2011 00:31 | 
	
		
	 | 
	
		
		GhostManSD 
 
 
		
		
		
			
			
			
 
 
			
Posts: 1054 
	
		
	 | 
	
		
			
			 
			
				А если надо закинуть второй байт? mov eax, byte ptr [A+1]?
  
Error 45: Operand types do not match.
			 
			
			
  
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
			
				
(This post was last modified: 11.02.2011 00:43 by GhostManSD.)
 
			 
		 |  
	 
 | 
	| 11.02.2011 00:38 | 
	
		
	 | 
	
		
		Sav 
 
 
		
		
		
			
			
			 
			
Posts: 2180 
	
		
	 | 
	
		
			
			 
			
				Да. Кроме того можно использовать не весь eax (4 байта), а только его четвертинку al: 
mov al, [A]
			 
			
			
			
		 |  
	 
 | 
	| 11.02.2011 00:45 | 
	
		
	 | 
	
		
		GhostManSD 
 
 
		
		
		
			
			
			
 
 
			
Posts: 1054 
	
		
	 | 
	
		
			
			 
			
				Sav, спасибо, работает!
			 
			
			
  
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
			
		 |  
	 
 | 
	| 11.02.2011 01:09 | 
	
		
	 |