Добавлен , опубликован
Раздел:
Разное

Важно

Анти-синглплеер защиты уникальны, поэтому способ удаления анти-синглплеер системы почти всегда будет разным.
В этой статье я расскажу про обход в самой популярной RU ORPG карте - Zombie666.

Необходимый SOFT

Текстовой редактор
MPQ Editor

Приступаем к работе

1. Открываем карту в MPQ Editor:
2. Переходим в Tools ---->> W3X Name Scanner. Жмем Scan. После сканирования жмем Apply Listfile.
3. Ищем файл war3map.j и открываем его любым текстовым редактором. Он может находится в папке Scripts
4. Теперь с помощью поиска ищем "singleplayer" и удаляем:
call CustomDefeatBJ(Player(0),"Нет одиночной игры!")
call CustomDefeatBJ(Player(1),"Нет одиночной игры!")
call CustomDefeatBJ(Player(2),"Нет одиночной игры!")
call CustomDefeatBJ(Player(3),"Нет одиночной игры!")
call CustomDefeatBJ(Player(4),"Нет одиночной игры!")
call CustomDefeatBJ(Player(5),"Нет одиночной игры!")
call CustomDefeatBJ(Player(6),"Нет одиночной игры!")
call CustomDefeatBJ(Player(7),"Нет одиночной игры!")
call CustomDefeatBJ(Player(8),"Нет одиночной игры!")
call CustomDefeatBJ(Player(9),"Нет одиночной игры!")
call RemoveUnit(Gv)
call RemoveUnit(G7)
call RemoveUnit(G3)
call RemoveUnit(HC)
call RemoveUnit(HK)
call RemoveUnit(HG)
call RemoveUnit(HO)
call RemoveUnit(Gz)
call RemoveUnit(Fb)
5. Ищем "нельзя одному играть" и заменяем
call EnableTrigger(YD)
call EnableTrigger(YE)
if IsPlayerInForce(GetLocalPlayer(),bj_FORCE_ALL_PLAYERS) then
call DisplayTextToPlayer(GetLocalPlayer(),0.,0.,"|c00FF8000нельзя одному играть!|r")
endif
на
call EnableTrigger(X9)
call EnableTrigger(YF)
call ConditionalTriggerExecute(YF)
call DisableTrigger(YD)
call DisableTrigger(YE)
call EnableTrigger(YG)
call EnableTrigger(YH)
call EnableTrigger(YI)
call TriggerSleepAction(16.)
call EnableTrigger(Xy)
call EnableTrigger(X4)
call TriggerSleepAction(.1)
call EnableTrigger(X1)
call EnableTrigger(X9)
if IsPlayerInForce(GetLocalPlayer(),bj_FORCE_ALL_PLAYERS) then
call DisplayTextToPlayer(GetLocalPlayer(),0.,0.,"                      |c00FF8000Зaгpузкa гeрoeв рaзpeшенa!|r                        ")
endif
6. Ищем "Высадилось слишком"
Меняем
call DisableTrigger(YG)
call DisableTrigger(YH)
на
call EnableTrigger(YG)
call EnableTrigger(YH)
Удаляем
call DisplayTextToPlayer(GetLocalPlayer(),0.,0.,"                     |cFFFFFF00Высадилось слишком мало десанта!!!! десант в панике!!!!|r
                         |cFFFF0000Зобми прознали про это и запустили тайное оружие!!!|r
        ----------                              |cFFFFFF00Все десантники ПОГИБЛИ!!!                              ----------")
И удаляем
set bj_forLoopAIndex=1
set bj_forLoopAIndexEnd=10
loop
exitwhen bj_forLoopAIndex>bj_forLoopAIndexEnd
call KillUnit(Iu[bj_forLoopAIndex])
set bj_forLoopAIndex=bj_forLoopAIndex+1
endloop
call TriggerSleepAction(5.)
set bj_forLoopAIndex=1
set bj_forLoopAIndexEnd=10
loop
exitwhen bj_forLoopAIndex>bj_forLoopAIndexEnd
call CustomDefeatBJ(Player(bj_forLoopAIndex-1),"Вы проиграли!")
call RemoveUnit(Iu[bj_forLoopAIndex])
set bj_forLoopAIndex=bj_forLoopAIndex+1
endloop
7. Еще раз ищем "Высадилось слишком"
Удаляем:
call DisplayTextToPlayer(GetLocalPlayer(),0.,0.,"                     |cFFFFFF00Высадилось слишком мало десанта!!!! десант в панике!!!!|r
                     |cFFFF0000Зобми прознали про это и запустили тайное оружие!!!|r
                     |cFFFFFF00Все десантники мгновенно погибли....|r")
Меняем:
call DisableTrigger(YG)
call DisableTrigger(YH)
На:
call EnableTrigger(YG)
call EnableTrigger(YH)
Удаляем:
set bj_forLoopAIndex=1
set bj_forLoopAIndexEnd=10
loop
exitwhen bj_forLoopAIndex>bj_forLoopAIndexEnd
call KillUnit(Iu[bj_forLoopAIndex])
set bj_forLoopAIndex=bj_forLoopAIndex+1
endloop
8. Ищем "function BYE takes nothing returns nothing"
Меняем:
call CustomDefeatBJ(GetEnumPlayer(),"Вы проиграли!")
На:
call DoNothing()
9. Ищем "function BYF takes nothing returns nothing"
Удаляем:
loop
exitwhen YO>10
if GetPlayerSlotState(Player(YO-1))==PLAYER_SLOT_STATE_PLAYING then
if not fv then
set fv=true
else
set fw=true
endif
endif
set YO=YO+1
endloop
Удаляем два раза:
call DisplayTimedTextToPlayer(GetLocalPlayer(),0.,0.,30,"                        -------------- |cFFFF0000ВНИМАНИЕ|r |cFFFF8000в игре остался ТОЛЬКО 1 игрок!!!!!|r --------------
                                 -------------- |cFFFF8000Вы не можете играть в одиночку!!!!|r -------------- 
              -------------- |cFFFF8000через 15 секунд игра будет принудительно|r |cFFFF0000ЗАВЕРШЕНА!!!!|r -------------- ")
И удаляем:
call TriggerSleepAction(15.)
call ForForce(GetPlayersByMapControl(MAP_CONTROL_USER),function BYE)
10. Сохраняем наши изменения war3map.j.
11. Удаляем старый и добавляем новый war3map.j в карту

Конец

Если у вас остались какие либо вопросы или предложения по улучшению - Пишите!).
`
ОЖИДАНИЕ РЕКЛАМЫ...
3
28
1 год назад
3
Почему все видео в формате GIF?
2
37
1 год назад
2
PT153, как почему? Чтобы на мобильнике было особо сложно посмотреть и потом нам зафлудили техподдержку
0
1
1 год назад
0
Спасибо за рабочий обход )
0
5
1 год назад
0

PT153 - 20 часов назад
2Голосов: 2
Потом на скрины заменю если не впадлу будет
0
17
1 год назад
0
Будет полезно тем кто пишет синглплеер систему
3
33
1 год назад
3
Где-то была прога где можно по локальной сети с двух окон играть.
0
5
1 год назад
0
Где-то была прога где можно по локальной сети с двух окон играть.
Ну а так можно без этой фигни играть)
2
32
1 год назад
2
Ну на гуи картах это и без гайдов очевидно, что custom defeat найти и убрать.
Как насчет карт уровнем повыше, не ну не будем наверн трогать карты в которых защита от изменения кода релизована...
0
37
1 год назад
0
quq_CCCP, деление на ноль или разыменование нулл поинтера тут было бы уместнее)
0
33
1 год назад
Отредактирован PUVer
0
dWb.Integral, с прогой проще. Я так ты идиот до 7 лвла прошёл.
0
12
1 год назад
Отредактирован Daro
0
Эту статью нужно было назвать "Как взломать ненавистную карту Zombi666".
Эта карта известна своими неадекватными ценниками на донатные плюшки и предметы дающие тысячи характеристик за 10к рублей. По несколько тысяч рублей за РО ауры,и дополнительные покупные способности. От этого и получаем закономерно желающих сломать такую карту. Те кто тут пишут , что надо убрать "custom defeat" вообще не в курсе этой ситуации.
Автору следует заменить гифки на нормальные скрины
2
5
1 год назад
2
Ну на гуи картах это и без гайдов очевидно, что custom defeat найти и убрать.
Как насчет карт уровнем повыше, не ну не будем наверн трогать карты в которых защита от изменения кода релизована...
Немного не понял к чему ты вообще это написал ... Я сделал этот гайд не для тех кто разбирается как и что нужно делать, а для новичков, которым это будет полезно. Да и в этой мапе не только custom defeat нужно убирать 🤡 Зачем ты вообще написал про другие карты, если я написал гайд ИМЕННО ДЛЯ ЭТОЙ. Я хотел сделать гайд по удалению защиты по изменению кода в некоторых снг картах, но передумал )

dWb.Integral, с прогой проще. Я так ты идиот до 7 лвла прошёл.
С какой прогой?) Какой 7 лвл , не понимаю о чем ты 0_o
0
33
1 год назад
0
С какой прогой?) Какой 7 лвл , не понимаю о чем ты 0_o
Есть прога для эмуляции локальной сети. Т.е. можно два варкрафта в одном компе запустить и по локалке сыграть. "Ты идиот" это карта головоломка. Там есть уровни.
0
5
1 год назад
0
С какой прогой?) Какой 7 лвл , не понимаю о чем ты 0_o
Есть прога для эмуляции локальной сети. Т.е. можно два варкрафта в одном компе запустить и по локалке сыграть. "Ты идиот" это карта головоломка. Там есть уровни.
Ну мне так проще делать чем качать что-то
0
1
1 год назад
0
кто может разблочить карту "Ты идиот?"
0
32
1 год назад
0
Надо сделать статью, как нужно делать антисинглы и протектить карту =)
Чтобы оставить комментарий, пожалуйста, войдите на сайт.