19

» Администрация XGM / XGM съел 20 единиц "АКТИВНЫЕ ЗА МЕСЯЦ"... это как?

Может быть комментарии были удалены, или еще что-то\

Знал бы я, как высчитывается активность.
19

» WarCraft 3 / На что ссылается GetTriggerKey в кастомной dll библиотеке?

Принятый ответ
Не отображается по двум причинам: ошибка в написании кода, может быть опечатка или отсутствует что-нибудь, скажем endif; функция, которую вы вызываете в blizzard.j, не существует в common.j, то есть она не зарегистрирована, как другие нативные функции.
19

» WarCraft 3 / SetUnitName мемхак

DracoL1ch:
без восстановления памяти ты скатишься к рандомным крашам после игры, ставь актуальную версию хака
Мне кажется, или оставленные им адреса указывают на стек?
19

» WarCraft 3 / Общие войска с ИИ. Как сделать тригерно?

Тут есть 2 проблемы. Если у вас разная раса, то твои войска врятли будут управляться ИИ, только если, как пушечное мясо, также у ИИ каждая пища просчитана, и если появятся лишние расходы, он начнёт тупить.
19

» Кароче ходор / Чит-модификация для MWS Hardcore

А в идеале еще сменить имя и расширение, чтобы хацкеры не нашли :D

Hodor, мемхак так-то тоже WC3 предлагает, ошибка-то не наша, а разработчиков, мы просто обузим её)
19

» Кароче ходор / Чит-модификация для MWS Hardcore

Нужен был протект, вот он. Перехват функции можно взять из JNGP, т.к там производится перехват SetMenu, и вы можете наглядно это увидеть, т.к в самом JNGP есть новые кнопки на панели инструментов, по типу Griamore, About и что-то еще.
и куда ты его засунешь?)
В карту, естественно, и подключу через мемхак.
19

» Кароче ходор / Чит-модификация для MWS Hardcore

Можно создать свой mix с моделями, чтобы приоритет был выше, или вообще осуществить перехват функции #266, чтобы другие миксы не подгружались. Кто не знает, сначала mix грузится как DLL, а после в DLL вызывается функция #266 из stom.dll, которая в свою очередь подгружает mix как mpq.
19

» WarCraft 3 / Отображение способностей при помощи мемхака

d1stats.ru/files/DotAAllstarsHelper688v15.zip ( DracoL1ch, Это де можно выкладывать?)
JackFastGame, я уже всё забыл, но всё возможно - нужен мемхак 1 версии, там есть функции, которые ссылаются на ту самую ExtraGameDll, и всё работает
Если собираетесь писать свой мемхак, использующий ту библиотеку, то с помощью IDA смотрите название функций, её параметры и тип данных для возврата, а потом в коде своего мемхака выполняете примерно такие действия:
// Если библиотека уже подгружена, то используйте это:
uintptr_t MemHackFunction = (uintptr_t)GetProcAddress(GetModuleHandle("Название DLL, содержащего функцию"), "Название функции");
// а иначе:
uintptr_t MemHackFunction = (uintptr_t)GetProcAddress(LoadLibraryA("Название DLL, содержащего функцию"), "Название функции");
(reinterpret_cast<Тип возвращаемых данных(CALLBACK*)(Типы данных параметров, если параметры есть)>(MemHackFunction))(Параметры);
Код написан на C++.

quq_CCCP:
Делается записью в определенные адресса памяти значений, но нужно сделать change offset protection, адресса и значения можите посмотреть в новом антихаке unryze'a как и код который это делает.
Если нужно просто прочитать память, достаточно и обычной уккзателя:
Нужный тип данных x = *(Нужный тип данных&)(GetModuleHandleA("Game.dll") + смещение);
Ну а если так надо изменить память, то можно использовать свзяку VirtualProtect для изменения защиты и memcpy/memset для записи, конечно, можно обойтись теми же указателями.
19

» MM Engine / MM Engine: Example Mod (Custom Campaign)

Dartmoll, в mpq содержатся все файлы, которые были изменены для добавления кампании. Также на эту теме есть целая статья, тоже на XGM.
19

» WarCraft 3 / Инструкция по созданию UI

Принятый ответ
Берешь оригинальные, по пути UI/Glues/Console и по ним создаешь свои.
19

» WarCraft 3 / Конвертировать playercolor в строку типа |cffffffff

Принятый ответ
Как-то так, в вызове указываешь игрока, а она возвращает цвет в виде строки:
function GetColor takes player whichplayer returns string
	local playercolor color = GetPlayerColor(whichplayer)
	
	if (color == PLAYER_COLOR_RED) then return "FF0303" endif
	if (color == PLAYER_COLOR_BLUE) then return "0042FF" endif
	if (color == PLAYER_COLOR_CYAN) then return "1CE6B9" endif
	if (color == PLAYER_COLOR_PURPLE) then return "540081" endif
	if (color == PLAYER_COLOR_YELLOW) then return "FFFC01" endif
	if (color == PLAYER_COLOR_ORANGE) then return "FEBA0E" endif
	if (color == PLAYER_COLOR_GREEN) then return "20C000" endif
	if (color == PLAYER_COLOR_PINK) then return "E55BB0" endif
	if (color == PLAYER_COLOR_LIGHT_GRAY) then return "959697" endif
	if (color == PLAYER_COLOR_LIGHT_BLUE) then return "7EBFF1" endif
	if (color == PLAYER_COLOR_AQUA) then return "106246" endif
	if (color == PLAYER_COLOR_BROWN) then return "4E2A04" endif
	return ""
endfunction
19

» WarCraft 3 / Конвертировать playercolor в строку типа |cffffffff

Так, напомните, вы хотите, чтобы несколько игроков могли выбрать один цвет, или добавить новые цвета?
19

» WarCraft 3 / Конвертировать playercolor в строку типа |cffffffff

Red: FF0303
Blue: 0042FF
SkyBlue: 1CE6B9
Purple: 540081
Yellow: FFFC01
Orange: FEBA0E
Green: 20C000
Pink: E55BB0
Grey: 959697
Silver: 7EBFF1
DarkGreen: 106246
Brown: 4E2A04
Это HEX коды цветов, увы, так их не получить, т.к TeamColor - это blp текстура, но есть вариант забить их(то, что я написал выше) по переменным и выбирать через if/else.
Вот так я использовал это в ассемблере:
		mov eax, [esp + 0x04]
		push esi
		add esi, 0x24
		mov esi, dword ptr [esi]
		cmp esi, 15
		ja HPBarContinueAsm

	//Red:
		cmp esi, 0
		jne Blue
		mov esi, 0xFFFF0303
	Blue:
		cmp esi, 1
		jne SkyBlue
		mov esi, 0xFF0042FF
	SkyBlue:
		cmp esi, 2
		jne Purple
		mov esi, 0xFF1CE6B9
	Purple:
		cmp esi, 3
		jne Yellow
		mov esi, 0xFF540081
	Yellow:
		cmp esi, 4
		jne Orange
		mov esi, 0xFFFFFC01
	Orange:
		cmp esi, 5
		jne Green
		mov esi, 0xFFFEBA0E
	Green:
		cmp esi, 6
		jne Pink
		mov esi, 0xFF20C000
	Pink:
		cmp esi, 7
		jne Grey
		mov esi, 0xFFE55BB0
	Grey:
		cmp esi, 8
		jne Silver
		mov esi, 0xFF959697
	Silver:
		cmp esi, 9
		jne DarkGreen
		mov esi, 0xFF7EBFF1
	DarkGreen:
		cmp esi, 10
		jne Brown
		mov esi, 0xFF106246
	Brown:
		cmp esi, 11
		jne NeutralAggresive
		mov esi, 0xFF4E2A04
	NeutralAggresive:
		cmp esi, 12
		jne NeutralPassive
		mov esi, 0xFF474747
	NeutralPassive:
		cmp esi, 15
		jne SetColor
		mov esi, 0xFF909412

	SetColor:
		mov dword ptr[eax], esi
		jmp HPBarContinueAsm

KaneThaumaturge:
DracoL1ch, понимаю, так и делаю. Хочу чтобы игрок мог выбрать себе цвет в лобби, не важно каким номером он будет.
Так чтоли?
Загруженные файлы
19

» WarCraft 3 / Изменить путь модели юнита напрямую через MPQ

Принятый ответ
Vampirrr, всё это прописано в slk, там же находятся и пути к моделям. Всё, что нужно, это открыть, найти и изменить нужного юнита. Вроде бы модели хранятся в unitsui.slk или как-то так.
19

» WarCraft 3 / Какие подводные камни у использования "хакков" на юнит стейт

DracoL1ch:
любая багованная механика может сломаться в любом обновлении игры
и даже не багованная, просто пофиксят чуть быстрее, чем никогда
+ учитывая обновления WC3, то адреса могут смениться, и выслеживать их придётся по новой, т.к в WC3 нету помеченных функций, за исключением GameMain.
19

» WarCraft 3 / Подскажите, на что ссылается этот адрес в памяти?

Раз адрес 0x06D77C50, запусти WC3, подключи к нему CheatEngine, открой редактор памяти, нажми CTRL+G и вбей туда Game.dll + 2D77C50 (или 2B77C50), там-то и будет находится функция, которая, пытаясь получить доступ к памяти, фаталит. Скорее всего та память, к которой она пытается получить доступ, равна нулю, т.к написано: "...referenced memory at '0x000000F4'.
The memory could not be 'read'".

Ах да, заметил, что она ссылается к адресу 0x000000F4, который не пренадлежит процессу WC3, т.к у WC3 адресное пространство начинается либо от 0x00400000 либо от 0x6F000000, а иногда от 0x04200000.