Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 10:34

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Metin 2 Assembler

Discussion on Metin 2 Assembler within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Aug 2010
Posts: 9
Received Thanks: 1
Metin 2 Assembler

Ich will mit Assembler die Item Attribute auslesen, es werden in VS aber Fehler angezeigt:
Code:
std::pair<int,int> GetItemAttribute(DWORD ItemSlot,DWORD AttributeSlot)
{
	int AttributeNmbr;
	int AttributeWert;
	__asm
	{
		PUSH AttributeSlot  //Attribut 1-7
		MOV ECX,DWORD PTR DS:[0x7CE01C]
		PUSH ItemSlot //Slot des items
		CALL GetItemAttributeCall
		MOVSX EAX, WORD PTR SS:[LOCAL.2] //Inlineassembler:  Syntaxfehler in 'Zweiter Operand'; 'constant' gefunden
		MOVZX ECX, BYTE PTR SS:[LOCAL.3+3]//Hier das gleiche
	}
	std::pair <int,int> Tupel (AttributeNmbr,AttributeWert); 
	return Tupel;
}
Ich weis, dass ich den Wert in EAX und ECX einfach mit MOV in meine int variablen schreiben muss, allerdings kommen bei MOVSX und MOVZX die genannten Fehler. Woran liegt das?
Matkein is offline  
Old 05/30/2014, 10:30   #2
 
elite*gold: 14
The Black Market: 108/0/1
Join Date: May 2011
Posts: 2,671
Received Thanks: 818
Du kannst 'LOCAL' nicht einfach so verwenden.
Du musst herausfinden, wofür sie stehen.
vwap is offline  
Thanks
1 User
Old 05/30/2014, 12:47   #3
 
​Tension's Avatar
 
elite*gold: 110
Join Date: Jun 2013
Posts: 599
Received Thanks: 510
movsx => signed value
movzx => unsigned value

btw. wird in deiner asm funktion nirgendswo ein Wert in AttributeNmbr und AttributeWert verschoben.
Und wie mein vwap schon gesagt hat, kannst du "LOCAL" nicht einfach so verwenden.
​Tension is offline  
Thanks
1 User
Old 05/30/2014, 15:41   #4
 
elite*gold: 0
Join Date: Aug 2010
Posts: 9
Received Thanks: 1
Danke, hier der (jetzt) funktionierende Code:

Code:
std::pair<int,int> GetItemAttribute(DWORD ItemSlot,DWORD AttributeSlot)
{
	DWORD GetItemAttributeCall = ADDRESSE;
	int AttributeNmbr;
	int AttributeWert;
	__asm
	{
		MOV ECX,DWORD PTR SS:[ESP+0x0C]
		LEA EDX,[ESP+8]
		PUSH EDX
		MOV EDX,DWORD PTR SS:[ESP+14]
		LEA EAX,[ESP+0B]
		PUSH EAX
		PUSH AttributeSlot
		MOV ECX,DWORD PTR DS:[0x7CE01C]
		PUSH ItemSlot
		CALL GetItemAttributeCall
		MOVSX EAX,WORD PTR SS:[ESP+8]
		MOVZX ECX,BYTE PTR SS:[ESP+7]
		MOV AttributeNmbr,EAX
		MOV AttributeWert,ECX
	}
	std::pair <int,int> Tupel (AttributeWert,AttributeNmbr); 
	return Tupel;
}
Matkein is offline  
Thanks
1 User
Reply

Tags
assembler, metin2, rückgabewert


Similar Threads Similar Threads
[AutoIt & Assembler] Assembler lernen und in AutoIt benutzen
01/12/2021 - Coding Tutorials - 18 Replies
1. Vorwort 1.1. Vorraussetzungen für das Programmieren mit Assembler 1.2. Ein paar Fakten zu Assembler/Computern 1.3. Warum Assembler benutzen 2. Assembler Allgemein 2.1. Arbeitsweise von Assembler 2.2. Syntax und Semantik 2.3. Register 3. Erste Assembler Schritte 3.1. Mov
Assembler
10/21/2010 - Main - 3 Replies
Was ist die beste Programiersprache um nach dem erfolgreichen lernen auf Assembler umzusteigen?c++,c#,basic,dolphi (oder wie des heißt:D),.....? Freue mich auf gute Antworten Obsti
Au3 und Assembler?
01/08/2009 - GW Bots - 18 Replies
Hi, ich frage mich ob man Autoit mit Assembler verbinden kann, also inlineassembler betreiben kann? Weis villeicht jemand wie das gehen könnte?



All times are GMT +1. The time now is 10:35.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.