XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Extremator

offline
Опыт: 39,403
Активность:
Отлов МХ триггерно - возможно ли?
Меня не интересует "как".
Триггерно можно ли какими-либо манипуляциями отловить МапХак?
[Да] / [Нет]
+ коммент
ps - лично я считаю что это невозможно, мб ошибаюсь
Старый 03.12.2014, 12:14
Кристофер
Охотник
offline
Опыт: 12,812
Активность:
[Да]
Старый 03.12.2014, 14:06
Extremator

offline
Опыт: 39,403
Активность:
Кристофер:
[Да]
чёт мне это не нравится
Старый 03.12.2014, 14:37
quq_CCCP
Я белый и пушистый!
online
Опыт: 93,024
Активность:
ДА *
Можно но не все мх.
В версиях до 1.24 вроде можно было все отловить из за ретурн бага...
Простые мх отловить возможно, мх с защитой от спаливания jass amh и прочих антихаков не обнаружишь, я тестил амх зетокса на гарене, встроеный чит ловило, левый мх с английского сайта спецом для айкапа не ловило, об этом есть целая тема в барахолке.
Старый 03.12.2014, 15:32
Tobi123

offline
Опыт: 7,826
Активность:
Extremator, мне подсказали, что через сломанную модель надежнее и веселее.
Старый 04.12.2014, 21:04
quq_CCCP
Я белый и пушистый!
online
Опыт: 93,024
Активность:
Tobi123:
Extremator, мне подсказали, что через сломанную модель надежнее и веселее.
Ломаные модели обходили еще во времена царя гороха, за примером далеко ходить не надо гоблины диаза, как он не старался читеры не перевелись.
Старый 05.12.2014, 05:39
Alexander12

offline
Опыт: 1,452
Активность:
Extremator:
лично я считаю что это невозможно, мб ошибаюсь
а я ловлю shack, garenahack, guaihack, war3mh. а это 95% . Остальные хаки не нагуглил
quq_CCCP:
строеный чит ловило, левый мх с английского сайта спецом для айкапа не ловило
ща ловит и скин этот мх.
и анти jass обходил уже
ещё назрел 1 план, ловить мх. когда заклинание (в котором нужна указать боевую единцу) указываются за место нее - координаты (так мх робит) и ловить по приказам.

Отредактировано Alexander12, 10.12.2014 в 10:35.
Старый 10.12.2014, 10:28
Clamp
Lost in space
offline
Опыт: 71,158
Активность:
Alexander12, ShadowFrench Maphack самый популярный был года четыре назад.
Старый 10.12.2014, 12:01
Vadik29
Choice Battle 1.6а
offline
Опыт: 15,845
Активность:
Посмотрите китайские аниме карты, там очень жесткие антимх, даже с гм выкидывает.
Старый 15.12.2014, 07:35
Extremator

offline
Опыт: 39,403
Активность:
Небольшой ап, просто увидел топик xgm.guru/forum/showthread.php?t=60926
и вспомнил что у меня тоже был вопрос про анти-мх, решил продолжить...
И так, я тут ещё месяц назад напоролся на одну псевдо-системку анти-мх
Принцип работы следующий
когда игрок выделяет/снимает выбор с юнита, этот юнит записывается в группу
если выбравно 11й или 12й юнит - эти юниты записываются в особую переменную (как двое последних)
каждые 1.00 сек по таймеру у всех циклом по всем игрокам последние два юнита сбрасываются с выделения
далее триггерно в выделение добавляются пару даммиков в разных углах карты, которые (я так понимаю) скрыты (инвиз/хайд/повышение высоты выше уровня камеры/москиты/ХЗ). + ещё как-то проверяется на их видимость
Этих даммиков ТРОЕ, один спавнится вверху слева, а ещё двое - внизу справа, каждый раз при ежесекундной проверке один из них сдвигается в центр карты (координаты 0;0).
В итоге - каждую секунду игра пишет сообщение "бла бла бла НИК maphack detected"
если подозреваемых несколько, то несколько сообщений (офк, а то там сначала было что только одного из всех ловит и дропает)
Из мелочей - если выделить предмет/руну/прочее, то через секунду выбор сбросится (вот такое вот)
Если запустить в сингле, и написать iseedeadpeople , карта кританёт с фаталом, но не сразу... секунд через 5
(скрин фатала ниже, мб это важно)
вот пересобранный код, оригинал сейчас ищу,
но там оптимизатором прошлись, я его пытался привести в читаемый вид (для себя)
» AMHS
globals
    unit AMHS_dummy_1
    unit AMHS_dummy_2
    unit AMHS_dummy_3
    trigger AMHS_trig_1
    trigger AMHS_trig_2
    timer AMHS_timer
    boolean AMHS_bool
    integer array AMHS_int
    unit array AMHS_unit_1
    unit array AMHS_unit_2
    boolean array AMHS_bool_1
    boolean array AMHS_bool_2
endglobals

// function O__IIIOOI        == AMHS_Create     // создание триггера срабатывающего через .1 сек после старта
// function O__IIIO_I        == AMHS_select_ON  // функция при срабатывании на фокус юнита
// function O__IIIOII        == AMHS_select_OFF // функция при срабатывании на де-фокус юнита
// function O__IIIIOI        == AMHS_check      // функция зацикленного таймера на .8 сек
// global unit III           == AMHS_dummy_1    // даммик в правом нижнем углу карты
// global unit IOI           == AMHS_dummy_2    // даммик в левом верхнем углу карты, но ближе в центру
// global unit I_II          == AMHS_dummy_3    // даммик в правом нижнем углу карты
// global trigger O_I        == AMHS_trig_1     // триггер срабатывающий на фокус юнита
// global trigger OII        == AMHS_trig_2     // триггер срабатывающий на де-фокус юнита
// global timer I_I          == AMHS_timer      // зацикленный таймер на .8 сек
// global boolean IIOI       == AMHS_bool       // изначально "true"
// global integer array I_OI == AMHS_int        // число выбранных юнитов для игроков
// global unit array II_I    == AMHS_unit_1     // выбранный 11й юнит для игроков
// global unit array IIII    == AMHS_unit_2     // выбранный 12й юнит для игроков
// global boolean array OOI  == AMHS_bool_1     // // массив логических
// global boolean array I__I == AMHS_bool_2     // // массив логических

function AMHS_select_OFF takes nothing returns nothing
    local unit u = GetTriggerUnit()
    local player p = GetTriggerPlayer()
    local integer id = GetPlayerId(p)
	
    if ( AMHS_dummy_1 != u ) and ( AMHS_dummy_2 != u ) then
        set AMHS_int[id] = AMHS_int[id] - 1
		
        if ( AMHS_unit_1[id] == u ) then
            set AMHS_unit_1[id] = null
        endif
		
        if ( AMHS_unit_2[id] == u ) then
            set AMHS_unit_2[id] = null
        endif
    endif
	
    if ( u == AMHS_dummy_1 ) then
        set AMHS_bool_2[id] = false
    endif
	
	set u = null
	set p = null
	
endfunction

function AMHS_select_ON takes nothing returns nothing
    local unit u = GetTriggerUnit()
    local player p = GetTriggerPlayer()
    local integer id = GetPlayerId(p)
	
    if ( u == AMHS_dummy_1 ) then
        set AMHS_bool_1[id] = true
        set AMHS_bool_2[id] = true
    endif
	
    if ( u == AMHS_dummy_2 ) then
        if ( GetPlayerController(p) == MAP_CONTROL_USER ) and ( GetPlayerSlotState(p) == PLAYER_SLOT_STATE_PLAYING ) then
            if ( AMHS_bool_1[id] == false ) or ( AMHS_bool_2[id] == true ) then
                if ( IsUnitVisible( AMHS_dummy_3, p ) == false ) then
                    if ( GetPlayerTechMaxAllowed( Player(15), 4 ) == 28) or ( GetObjectName( 1244672049 ) == "250" ) then
                        call DisplayTextToForce( bj_FORCE_ALL_PLAYERS, GetPlayerName(p) + ": Maphack detected" )
                    endif
                endif
				
                call SelectUnit( AMHS_dummy_1, false )
            endif
			
            set AMHS_bool_1[id] = false
            set AMHS_bool_2[id] = false
        endif
    endif
	
    if ( AMHS_dummy_1 != u ) and ( AMHS_dummy_2 != u ) then
        set AMHS_int[id] = AMHS_int[id] + 1
		
        if AMHS_int[id] == 12 then
            set AMHS_unit_1[id] = u
        endif
		
        if AMHS_int[id] == 11 then
            set AMHS_unit_2[id] = u
        endif
		
        if AMHS_int[id] > 12 then
            set AMHS_int[id] = 12
        endif
    endif
	
	set u = null
	set p = null
	
endfunction

function AMHS_check takes nothing returns nothing
	local player p = GetTriggerPlayer()
	local integer id = GetPlayerId( p )
	
    if ( AMHS_bool ) then // двигает 1го даммика на верхний левый угол (туда где стоит 2й)
        call SetUnitX( AMHS_dummy_1, GetRectMinX( bj_mapInitialPlayableArea ) + 600 )
        call SetUnitY( AMHS_dummy_1, GetRectMaxY( bj_mapInitialPlayableArea ) - 600 )
    endif
	
    if ( AMHS_int[id] <= 10 ) then
        call SelectUnit( AMHS_dummy_1, true  )
        call SelectUnit( AMHS_dummy_2, true  )
        call SelectUnit( AMHS_dummy_2, false )
        call SelectUnit( AMHS_dummy_1, false )
    else
        call DisableTrigger( AMHS_trig_1 )
        call DisableTrigger( AMHS_trig_2 )
		
        call SelectUnit( AMHS_unit_1[GetPlayerId(GetLocalPlayer())], false )
        call SelectUnit( AMHS_unit_2[GetPlayerId(GetLocalPlayer())], false )
		call SelectUnit( AMHS_dummy_1, true  )
        call SelectUnit( AMHS_dummy_2, true  )
        call SelectUnit( AMHS_dummy_2, false )
        call SelectUnit( AMHS_dummy_1, false )
        call SelectUnit( AMHS_unit_1[GetPlayerId(GetLocalPlayer())], true  )
        call SelectUnit( AMHS_unit_2[GetPlayerId(GetLocalPlayer())], true  )
		
        call EnableTrigger( AMHS_trig_1 )
        call EnableTrigger( AMHS_trig_2 )
    endif
	
    if ( AMHS_bool ) then // возвращает 1го даммика в нижний правый угол
        call SetUnitX(AMHS_dummy_1, GetRectMaxX( bj_mapInitialPlayableArea ))
        call SetUnitY(AMHS_dummy_1, GetRectMinY( bj_mapInitialPlayableArea ))
        set AMHS_bool = false
    else
        set AMHS_bool = true
    endif
	
	set p = null
	
endfunction

function AMHS_Create takes nothing returns nothing
    local integer i = 0
	
		local real x_Min = GetRectMinX( bj_mapInitialPlayableArea )
		local real x_Max = GetRectMaxX( bj_mapInitialPlayableArea )
		local real y_Min = GetRectMinY( bj_mapInitialPlayableArea )
		local real y_Max = GetRectMaxY( bj_mapInitialPlayableArea )
	
    set AMHS_dummy_1 = CreateUnit( Player(0), 'hfoo', x_Max,       y_Min,       0.00 )
    set AMHS_dummy_2 = CreateUnit( Player(0), 'hfoo', x_Min + 600, y_Max - 600, 0.00 )
    set AMHS_dummy_3 = CreateUnit( Player(0), 'hfoo', x_Max,       y_Min,       0.00 )
	
    set AMHS_trig_1 = CreateTrigger()
    set AMHS_trig_2 = CreateTrigger()
	
    loop
        exitwhen i > 12
        call TriggerRegisterPlayerUnitEvent( AMHS_trig_1, Player(i), EVENT_PLAYER_UNIT_SELECTED,   null )
        call TriggerRegisterPlayerUnitEvent( AMHS_trig_2, Player(i), EVENT_PLAYER_UNIT_DESELECTED, null )
        set i = i + 1
    endloop
	
    call TriggerAddAction( AMHS_trig_1, function AMHS_select_ON  )
    call TriggerAddAction( AMHS_trig_2, function AMHS_select_OFF )
	
    set AMHS_timer = CreateTimer()
    call TimerStart( AMHS_timer, 0.8, true, function AMHS_check )
endfunction

function InitTrig_AMHS takes nothing returns nothing
	local trigger t = CreateTrigger()
    call TriggerRegisterTimerEvent(t, 0.1, false)
    call TriggerAddAction(t, function AMHS_Create)
	set t = null
endfunction
в общем я не понимаю как это может работать
полез разбираться только потому, что иногда даже мой ник иногда несколько раз подсвечивался там (типа я мх), что стравнно (я ж не мх).
Миниатюры
Кликните на картинку для увеличения
Название:  error.png
Просмотров: 13
Размер:  8.7 Кбайт  
Старый 19.01.2015, 18:39
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 14:17.