Updated code

mail@pastecode.io avatar
unknown
c_cpp
a year ago
2.6 kB
1
Indexable
Never
#include "pch.h"

auto digit_format = "%d";

auto tp_cmd = "!tp";
auto tp_message_format = "You will teleported to %s";
char tp_message[128];
char primary_scanned_cmd_digit[4];

int player_level = 0;

const char* map_name(int map_id) {
	int player_level = (int)*reinterpret_cast<short*>(0x90D1E4);

	switch (player_level >= 70) {
	case true:  // Player level is greater than or equal to 70
		switch (map_id) {
		case 1: return "Auction House";
		case 2: return "Capital";
		case 3: return "D-Water Borderland";
		case 4: return "Oblivion Insula";
		case 5: return "Kimuraku Room";
		case 6: return "Deep Desert-1";
		case 7: return "Deep Desert-2";
		case 8: return "Stable Erde";
		case 9: return "Kanos Illium";
		default: return "Not enabled.";
		}
	case false:  // Player level is less than 70
		switch (map_id) {
		case 1: return "Auction House";
		case 2: return "Capital";
		case 3: return "Proelium";
		case 4: return "Cantabilian";
		case 5: return "Deep Desert-1";
		case 6: return "Not enabled.";
		case 7: return "Not enabled.";
		case 8: return "Not enabled.";
		case 9: return "Not enabled.";
		default: return "Not enabled.";
		}
	}
}


DWORD add_commands_retn = 0x4867A6;
DWORD add_commands_exit = 0x487532;
 _declspec(naked) void add_commands()
{
	_asm
	{
		push 03			// Length
		push tp_cmd		// Command
		push edi
		call compare_string
		add esp, 12
		test eax, eax
		je command_1

		push 0x13D4
		jmp add_commands_retn

		command_1 :
		pushad
		cmp word ptr ds:[0x90E2E0],41
		je command_1_exit
		push ecx
		mov ecx, 0x7C4A68
		mov eax, [0x90E2F4]
		mov eax, [eax]
		push eax
		call get_player
		pop ecx
		test eax, eax
		je command_1_exit

		mov ecx, eax

		push ecx
		push offset primary_scanned_cmd_digit
		push digit_format
		add edi, 04
		push edi
		call digit_scanner
		add esp, 12
		pop ecx

		push primary_scanned_cmd_digit
		call map_name
		add esp,04

		cmp dword ptr[primary_scanned_cmd_digit],0
		je map_is_not_enabled
		cmp dword ptr [primary_scanned_cmd_digit],6
		ja map_is_not_enabled

		push eax
		push tp_message_format
		push offset tp_message
		call sprintf
		add esp, 12

		push offset tp_message
		push 0
		call write_client_chat_text

		lea ebx, [tp_packet]
		mov esi, offset primary_scanned_cmd_digit
		mov esi, [esi]
		mov [ebx + 3], esi
		push 04
		push ebx
		call send_packet
		add esp, 8

		command_1_exit:
		popad
		jmp add_commands_exit

		map_is_not_enabled:
		push eax
		push offset tp_message
		call sprintf
		add esp, 8

		push offset tp_message
		push 0
		call write_client_chat_text
		jmp command_1_exit
	}
}

void COMMANDS() {
    Hook((LPVOID)0x4867A1, add_commands, 5);
}