32

» WarCraft 3 / Динамические триггеры

Триггеры которые создаются и удаляются, нужны чаще всего для реализации нестандартных способностей.
К примеру тебе нужно отслеживать получаемый урон, смерть виджета, приказы.
32

» WarCraft 3 / Какая версия Warcraft 3 лучше?

PT153, ниче такого? Допустимые корды иконок, приказы, хт, а куча игроков которые вызывают проблемы в старых картах, эт тоже ниче такого...
Ну хз.
32

» WarCraft 3 / Мемхак 1 + Мемхак 2 = ?

Принятый ответ
Ну содержимое у restore само собой разное, в детекте урона новый хук на выход, вам нужна функция загрузки библиотеки?
Это же дело над:

function LoadLibrary takes string nDllName returns integer
    if pLoadLibraryA == 0 then
        set pLoadLibraryA = GetModuleProcAddress("Kernel32.dll", "LoadLibraryA" )
    endif
    if pLoadLibraryA != 0 then
        return CallStdcallWith1Args(pLoadLibraryA,GetStringAddress(nDllName))
    endif
 
    return 0
endfunction
32

» WarCraft 3 / Защита карты в 2019

DracoL1ch, Лучшая защита - это удаление карты, но увы такое писать низя, считается троллингом.
Кинь людям твой интерпретатор в байткод.
32

» WarCraft 3 / Защита карты в 2019

Принятый ответ
В теории это возможно, как дота айкапа - все в длл засунуто, но сложно и мало кому надо.
Это породит 100500 неудобств, делать это надо будет в релизной версии карты.
Тулы векста то и не защищают вовсе, а только удаляют карты редактора, да производят обфускацию кода, как таковой защиты модели с помощью этой проги сделать нельзя, как и вовсе сделать не читаемым архив - пока читает игра, читают и другие проги, щяс мб еще остались хекс протекторы, но почти все уже зезула обошел.
32

» WarCraft 3 / Мемхак 1 + Мемхак 2 = ?

Внутренне устройсво функций изменено для надежности, Readmemory на RMem и так далее.
32

» WarCraft 3 / Рандомный игрок

DarKRs, в jass размер массива 8192, так для справки, игроков вы заносите в массив каждый раз когда хотите найти рандомного, вдруг кто то ливнул?
И зачем делать рандом больше числа играющих игроков? Вы проверяете в цикле все слоты, кто играет, и заносите играющих в массив.
32

» WarCraft 3 / Рандомный игрок

DarKRs, Ну для того и массив, вы заносите туда игроков по очереди, в нулевую ячейку первого играющего игрока, пусть это будет игрок на синем слоте, потом в первую ячейку массива второго играющего игрока - ну пусть далее синезеленый, и так пока все играющие игроки не кончатся, потом генерируем случайное число от 0 до максимума играющих игроков, какое выпадет, из такого номера ячейки массива и берем игрока.
32

» WarCraft 3 / Рандомный игрок

Очевидно что занести всех играющих игроков в массив, а потом выбрать случаного игрока из массива с помощью GetRandomInt( 0, до макс игроков)
32

» WarCraft 3 / Terrain Deformation и высота юнитов

Принятый ответ
Насколько помню нет, (хотя - невидимые платформы, но это тот еще костыль).
32

» WarCraft 3 / Какая версия Warcraft 3 лучше?

rsfghd, полные изменения читайте, а так же лич уже публиковал баги - вроде того что сменились приказы у абилок, это вызвало баги с чем что даммики не могли кинуть спеллы, еще 1 прикол - лимит на запись в хештаблицу, после 30 мин дота фрога работала с приколами и багами, все ломалось.
Они в след патчах это конечно правили, добавляли новые проблемы. Тут речь не про баланс мили карт, а втом что они меняют механику работы некоторых нативок и способностей, которые в других картах были использованы без учета того что то могут поменять. Ну и широкоформатный экран от близзардов мне если честно не зашел.
SixtyHz, rsfghd, можите почитать blog.d1stats.ru/blog/wc3map/324.html
Так же на хайве инфы достаточно много на эту тему.
32

» WarCraft 3 / Какая версия Warcraft 3 лучше?

rsfghd, багами, в новых патчах добавлено много несовместимостей и проблем. Как бы если бы это был 2002 год все бы радовались, но тут проблема в том что 100500 карт перестали работать, 100500 кастом карт, авторы многих из которых их давно забросили и патчить и чинить все эти кастомки некому, а варкравт то держится как раз на кастом картах а не мили сражениях, на которые всем давно плевать с высокой колокольни.
Итого - толку от новых возможностей и прочего, если в это некому играть, некому переписать под новые патчи огромное кол-во карт, яркий пример - дота фрога, кто её будет править?
SixtyHz, мне это всегда было не понятно - зачем? Самое глупое изменение которое только могло быть, добавьте к этому еще 1000 болячек вара, связанных с кол-вом юнитов и игроков, самое оно плодить игроков.
32

» WarCraft 3 / Падает фпс, когда юниты на карте начинают драться

Принятый ответ
Не больше 60 юнитов на игрока, иначе капут. Не рассчитан варик на такое кол-во юнитов, еще и одновременно что то делающих.
Обзор юнитам на минимум, как и поиск целей для автоатаки. Вовсе юнитов нужно создавать небольшими порциями и отправлять.
32

» WarCraft 3 / Дисинх на Iccup при хостинге через бота на несколько серверов.

DracoL1ch, Да на них то никто не надеялся, ты же на собственном опыте знаешь как они идут на встречу?
Просто если это сраное меню "союзники" то думал мб вернуть все на свои места с помощью мемхака.
32

» WarCraft 3 / Дисинх на Iccup при хостинге через бота на несколько серверов.

DracoL1ch, всем раздан контроль - взаимный и 100%, куру все контролят, но нет не десинхает, я тоже думал что кура, нет не кура, причем меня не выкинуло а выкинуло других игроков, не всех с айкапа кикает а 2-3 игрока, на последних слотах, причем есть или нет кура - никого не волнует, кикает от 45 секунды до 2 минуты. Судя по реплеям, никто куру в это время то и не юзал.
Bergi_Bear, на айкапе нет разработчкиов, там админы, они в этих вопросах не компетентны, многие из них не знают что у варкравта есть редактор карт. Реальные разработчики лаунчера либо недосягаемы, либо молчат.
32

» WarCraft 3 / Дисинх на Iccup при хостинге через бота на несколько серверов.

zogorlol, причем тут это, она ничем не отличается от фроговской в плане статистики, при этом она работает везде кроме айкапа, на других то серверах не дисинхает.
zogorlol, если ты не понял - хостинг ведется сразу на 3 сервера, айкап, гарена, плейграунд, игроки в одно лобби заходят с нескольких серверов, все работает, игроки гарены и плейграунда играют и улыбаются, их не дропает, дропает игроков айкапа.
32

» WarCraft 3 / Перестала работать инициализация

Принятый ответ
Смотрите код main после сохранения карты, там походу где то обрыв потока...
32

» WarCraft 3 / Удаляется герой рандомно, баг

Тоже был такой баг, похоже из за дырявой структуры " там герой оставался, а при следующем юзе структуры его удаляли", хотя может и что то другое было, ввел на всякий случай комманду -recrate чтобы этот баг больше не мог испортить игру.
32

» WarCraft 3 / выкидывает сразу всех игроков с игры, кроме меня, в моей карте..

redzarLOW, с камерой и текстами работали? В гуях бывает такое, что десинхает из за кривых BJ функуций, карту в студию если хотите чтобы вам помогли.
32

» WarCraft 3 / Мемхак на пальцах

ArchOracle, сам ретурнд баг в краце - несколько TypeCast функций смысл которых преобразовать Некий тип обьекта в целое число, а запись памяти реализовано через "сломанный массив", вот этот участок кода
function InitBytecode takes integer id, integer k returns nothing
    set l__bytecode[0] = 0x0C010900 //op: 0C(LITERAL), type: 09(integer array), reg: 01,
    set l__bytecode[1] = k //value: 0x2114D008
    set l__bytecode[2] = 0x11010000 //op: 11(SETVAR), reg: 01
    set l__bytecode[3] = id        //id of variable Memory
    set l__bytecode[4] = 0x0C010400 //op: 0C(LITERAL), type: 04(integer), reg: 01, value: 0
    set l__bytecode[6] = 0x27000000 //op: 27(RETURN)

    set l__bytecode[8] = 0x07090000 //op: 07(GLOBAL), type: 09 (integer array) //Create new array
    set l__bytecode[9] = 0x0C5F //name: C5F(“stand”)
    set l__bytecode[10] = 0x0E010400 //op: 0E(GETVAR), type: 04(integer), reg: 01 //Obtain the desired amount of bytes
    set l__bytecode[11] = id+1        //id of variable bytecodedata (variable ids are sequential)
    set l__bytecode[12] = 0x12010100 //op: 12(SETARRAY), index=reg01, value=reg01 //Set index of the array, forcing allocation of memory
    set l__bytecode[13] = 0x0C5F //name: C5F(“stand”)
    set l__bytecode[14] = 0x0E010400 //op: 0E(GETVAR), type: 04(integer), reg: 01 //Read array variable as an integer
    set l__bytecode[15] = 0x0C5F //name: C5F(“stand”)
    set l__bytecode[16] = 0x11010000 //op: 11(SETVAR), reg: 01 //pass the value to the jass world
    set l__bytecode[17] = id+1        //id of variable bytecodedata
    set l__bytecode[18] = 0x27000000 //op: 27(RETURN)
endfunction
Ну и грубо говоря, ты нашел адресс code - готового алгоритма, code ссылка на "инструкцию" которая представляет из себя массив заполненный инструкциями для виртуальной JASM машины, и тебя есть так называемый "сломанный массив", у тебя есть I2C() + I2Aray условно ядресс твоего code + и адресс твоего массива, ты заполняешь массив нужными тебя инструкциями и приклеиваешь к концу code и вызываешь твой code, все вот он хак, ты записал в память свою инструкцию и заставил виртуальную JASM машину выполнить её. Ну вот как то так, несколько утрированно, но думаю ты понял.
32

» WarCraft 3 / Мемхак на пальцах

ArchOracle, на русском на старом форуме XGM было описание как устроен ретурн баг, вроде Адольф описывал тоже уязвимость виртуальной jasm машины.