Добавлен SAND,
опубликован
Раздел:
Разное
Важно
Анти-синглплеер защиты уникальны, поэтому способ удаления анти-синглплеер системы почти всегда будет разным.
В этой статье я расскажу про обход в самой популярной RU ORPG карте - Zombie666.
В этой статье я расскажу про обход в самой популярной RU ORPG карте - Zombie666.
Необходимый SOFT
Текстовой редактор
MPQ Editor
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 в карту
Конец
Если у вас остались какие либо вопросы или предложения по улучшению - Пишите!).
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Как насчет карт уровнем повыше, не ну не будем наверн трогать карты в которых защита от изменения кода релизована...
Отредактирован PUVer
Отредактирован Daro
Эта карта известна своими неадекватными ценниками на донатные плюшки и предметы дающие тысячи характеристик за 10к рублей. По несколько тысяч рублей за РО ауры,и дополнительные покупные способности. От этого и получаем закономерно желающих сломать такую карту. Те кто тут пишут , что надо убрать "custom defeat" вообще не в курсе этой ситуации.
Автору следует заменить гифки на нормальные скрины