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

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

Закрытая тема
 
supressor
Balance - my work
offline
Опыт: 679
Активность:
Читы нельзя убрать из игры. Редактировать движок игры - тупизм, потому что они просто тогда работать не будут не только на твой карте но и на всех остальных... К тму же вар патчиться не будет после этого. Только наработками. И вообще, на кой это надо?
Старый 26.05.2007, 23:38
p01nTT

offline
Опыт: 11,160
Активность:
Цитата:
Сообщение от VolkPK
Phillips не будет работать.

будет,только надо добавить условий и все
Старый 26.05.2007, 23:38
supressor
Balance - my work
offline
Опыт: 679
Активность:
Добавь. Покажи мне какие? Его событие - СТРОКА ЧАТА. В если ты не знал, то при чите строка не отображается...
Старый 26.05.2007, 23:40
Krol

offline
Опыт: 17,884
Активность:
Цитата:
событие
игрок1 пишет greedisgood as подстрока
игрок2 пишет greedisgood as подстрока
игрок3 пишет greedisgood as подстрока
игрок4 пишет greedisgood as подстрока
игрок5 пишет greedisgood as подстрока
игрок6 пишет greedisgood as подстрока
игрок7 пишет greedisgood as подстрока
игрок8 пишет greedisgood as подстрока
игрок9 пишет greedisgood as подстрока
игрок10 пишет greedisgood as подстрока
игрок11 пишет greedisgood as подстрока
игрок12 пишет greedisgood as подстрока

действие
(Triggering player) loses with (АХ ТЫ ЦУКО ЧИТЕР) message

Вообщето триггерами это дело так просто не сделаешь - не отловишь ты это событие таким методом, попробуй сам.
Старый 26.05.2007, 23:48
S

offline
Опыт: 43,833
Активность:
Проверь количкство маны у героев на карте отдельно у каждого (например при каждом касте спелла), на хп - при каждом ударе по герою. Обычно читы невозможно заметить, но если сохранить реплей то вполне возможно. Еще способ -
Проверка на опыт. Если читер пользуеца сингл плэйером (ну мало ли, мож убрал дифит), то можно поставить проверку на чит опыт - каждые 10 секунд записывать опыт в переменную, через 10 секунд еще раз в переменную. Если разница больше чем 1200 (обычно на мобах так сильно не прокачаешся) - то дифитить плаера (или выключать сэйв лоад (всё зависит от извращенности протектора)).
Еще способ -
Проверка на опыт. Часть 2.
Проверять по лвл`у. Если лвл отличается от того который был 10 секунд раньше(разница - 5 лвл и больше в зависимости от боссов) то дифит (или аналогично).
Проверка на опыт. Часть 3.
Сделать "запрещенные" левелы, типа 200 (или какой у вас там максимальный?), если они были получены раньше чем через 5 минут после инициализации (обычно этого времени хватает читеру чтобы врубить гридисгод и пойти свалить босса крутого).
Вроде всё что мог (всё что не запрещено) я рассказал. Остальные извращения я рассказывать не буду (да вам и не интересно)

Отредактировано Sasha, 18.06.2007 в 09:58.
Старый 18.06.2007, 09:20
S

offline
Опыт: 43,833
Активность:
Цитата:
Сообщение от Gaso
Слушай можешь пожалуйста на ману сделать а то у меня руки кривые(буду благодарен)

Смотря какой тебе тип нужен. Есть 2 варианта - отключение чита thereisnospoon (мана не тратится), или когда убивают одним спеллом босса (при whosyourdaddy). Оба можно решить но при должном усердии.

Как появится лишнее время - обязательно сделаю.
Старый 18.06.2007, 17:41
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
дальнейшие обсуждения заказов в барахолку или ПС, не флудим
Старый 18.06.2007, 17:43
Bloody
Alienware
offline
Опыт: 1,700
Активность:
А чего вы пытаетесь - я не понимаю?
Если даже игрок напишет чит, то будет написано Жулничество Разрешено, а не чит :):
Да и потом - дайте вы людям в сингле побаловаться :):
Старый 18.06.2007, 22:13
Sailar

offline
Опыт: 8,555
Активность:
Если в интарфейсе игры изменить или убрать жульнечество разрешено то можно либо убрать либо измиенить данную надпись. И кто сказал что cheet.j не зачат отвечает если там нет гредизгудов это же незначито что четёр.дж не исправим при корректном редактирование можно читы и без триггеров отключить где все читы 100% неработают.
Старый 18.06.2007, 22:22
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
KLAUD, ну вот ты отключи, а я посмотрю. В cheats.j, как уже неоднократно тут обсуждалось и более продвинутыми чем я с тобой людьми, содержатся функции-читы для дебага
» cheats.j

рекомендую взглянуть на последнюю функцию, там для триггера каждого (ахтунк!) регистрируется player chat event, завязаное на строку, ф-ии самого дебага ловят и выводят триггерными средствами различную информацию.
Код:
//===========================================================================
// Cheats.j
//===========================================================================

globals
    // Debug-cheat globals
    constant real     bj_DEBUG_CAMFIELD_SPEED     = 0
    constant string   bj_DEBUG_CHAT_GIMME         = "gimme"
    constant string   bj_DEBUG_CHAT_DEMO          = "demo"
    constant string   bj_DEBUG_CHAT_TELEPORT      = "teleport"
    constant string   bj_DEBUG_CHAT_UNITINFO      = "unitinfo"
    constant string   bj_DEBUG_CHAT_UNITINFO2     = "ui"
    constant string   bj_DEBUG_CHAT_CAMINFO       = "caminfo"
    constant string   bj_DEBUG_CHAT_CAMINFO2      = "ci"
    constant string   bj_DEBUG_CHAT_CAMDIST       = "camdist"
    constant string   bj_DEBUG_CHAT_CAMFARZ       = "camfarz"
    constant string   bj_DEBUG_CHAT_CAMAOA        = "camaoa"
    constant string   bj_DEBUG_CHAT_CAMFOV        = "camfov"
    constant string   bj_DEBUG_CHAT_CAMROLL       = "camroll"
    constant string   bj_DEBUG_CHAT_CAMROT        = "camrot"
    constant string   bj_DEBUG_CHAT_CAMRESET      = "camreset"
    constant string   bj_DEBUG_CHAT_REMOVEUNIT    = "ru"
    constant string   bj_DEBUG_CHAT_GOTOX         = "gotox"
    constant string   bj_DEBUG_CHAT_GOTOY         = "gotoy"
    constant string   bj_DEBUG_CHAT_GOTOXY        = "gotoxy"
    constant string   bj_DEBUG_CHAT_GOTOUNIT      = "gotounit"
    constant string   bj_DEBUG_CHAT_DIFFICULTY    = "difficulty"
    constant string   bj_DEBUG_CHAT_FINGEROFDEATH = "fingerofdeath"

    trigger           bj_debugGimmeTrig
    trigger           bj_debugDemoTrig
    trigger           bj_debugTeleportTrig
    trigger           bj_debugUnitInfoTrig
    trigger           bj_debugCamInfoTrig
    trigger           bj_debugCamDistTrig
    trigger           bj_debugCamFarzTrig
    trigger           bj_debugCamAoaTrig
    trigger           bj_debugCamFovTrig
    trigger           bj_debugCamRollTrig
    trigger           bj_debugCamRotTrig
    trigger           bj_debugCamResetTrig
    trigger           bj_debugRuTrig
    trigger           bj_debugGotoXTrig
    trigger           bj_debugGotoYTrig
    trigger           bj_debugGotoXYTrig
    trigger           bj_debugGotoUnitTrig
    trigger           bj_debugDifficultyTrig
    trigger  array    bj_debugFingerOfDeathTrig
    trigger  array    bj_debugToolOfDeathTrig
    boolean  array    bj_debugFingerOfDeathEnabled
    real              bj_debugGotoUnitX = 0
    real              bj_debugGotoUnitY = 0
    integer           bj_debugGotoUnits = 0
endglobals



//***************************************************************************
//*
//*  Debug cheats
//*
//***************************************************************************

//===========================================================================
function DebugGimmeEnum takes nothing returns nothing
    local player thePlayer = GetEnumPlayer()
    call DisplayTextToPlayer(thePlayer, 0, 0, "Player "+I2S(GetPlayerId(GetTriggerPlayer())+1)+" cheated: Give 5000 gold and 5000 lumber to all players")
    call SetPlayerState(thePlayer, PLAYER_STATE_RESOURCE_GOLD, GetPlayerState(thePlayer, PLAYER_STATE_RESOURCE_GOLD) + 5000)
    call SetPlayerState(thePlayer, PLAYER_STATE_RESOURCE_LUMBER, GetPlayerState(thePlayer, PLAYER_STATE_RESOURCE_LUMBER) + 5000)
endfunction

//===========================================================================
function DebugGimme takes nothing returns nothing
    call ForForce(bj_FORCE_ALL_PLAYERS, function DebugGimmeEnum)
endfunction

//===========================================================================
function DebugDemoEnum takes nothing returns nothing
    local player thePlayer = GetEnumPlayer()
    call SetPlayerState(thePlayer, PLAYER_STATE_RESOURCE_GOLD, 0)
    call SetPlayerState(thePlayer, PLAYER_STATE_RESOURCE_LUMBER, 0)
endfunction

//===========================================================================
function DebugDemo takes nothing returns nothing
    local player thePlayer = GetTriggerPlayer()
    local integer gold = GetRandomInt(750, 1500)
    local integer lumber = GetRandomInt(200, 450)

    call ForForce(bj_FORCE_ALL_PLAYERS, function DebugDemoEnum)
    if (GetLocalPlayer() == GetTriggerPlayer()) then
        call Cheat("warnings")
        call Cheat("fastbuild")
        call Cheat("techtree")
        call Cheat("research")
        call Cheat("food")
        call Cheat("mana")
        call Cheat("dawn")
        call Cheat("gold " + I2S(gold))
        call Cheat("lumber " + I2S(lumber))
    endif
endfunction

//===========================================================================
function DebugTeleportEnum takes nothing returns nothing
    local unit u = GetEnumUnit()
    call SetUnitPosition(u, GetCameraTargetPositionX(), GetCameraTargetPositionY())
endfunction

//===========================================================================
function DebugTeleport takes nothing returns nothing
    local group g = CreateGroup()
    call SyncSelections()
    call GroupEnumUnitsSelected(g, GetTriggerPlayer(), null)
    call ForGroup(g, function DebugTeleportEnum)
endfunction

//===========================================================================
function TertiaryStringOp takes boolean expr, string a, string b returns string
    if (expr) then
        return a
    else
        return b
    endif
endfunction

.... здесь много чего невлезло ....

//===========================================================================
function InitDebugTriggers takes nothing returns boolean
    local player  indexPlayer
    local integer index

    set index = 0
    loop
        set indexPlayer = Player(index)
        if (GetPlayerSlotState(indexPlayer) == PLAYER_SLOT_STATE_PLAYING) then
            set bj_debugGimmeTrig = CreateTrigger()
            call TriggerRegisterPlayerChatEvent(bj_debugGimmeTrig, indexPlayer, bj_DEBUG_CHAT_GIMME, true)
            call TriggerAddAction(bj_debugGimmeTrig, function DebugGimme)

            set bj_debugDemoTrig = CreateTrigger()
            call TriggerRegisterPlayerChatEvent(bj_debugDemoTrig, indexPlayer, bj_DEBUG_CHAT_DEMO, true)
            call TriggerAddAction(bj_debugDemoTrig, function DebugDemo)

            set bj_debugTeleportTrig = CreateTrigger()
            call TriggerRegisterPlayerChatEvent(bj_debugTeleportTrig, indexPlayer, bj_DEBUG_CHAT_TELEPORT, true)
            call TriggerAddAction(bj_debugTeleportTrig, function DebugTeleport)

            set bj_debugUnitInfoTrig = CreateTrigger()
            call TriggerRegisterPlayerChatEvent(bj_debugUnitInfoTrig, indexPlayer, bj_DEBUG_CHAT_UNITINFO, true)
            call TriggerRegisterPlayerChatEvent(bj_debugUnitInfoTrig, indexPlayer, bj_DEBUG_CHAT_UNITINFO2, true)
            call TriggerAddAction(bj_debugUnitInfoTrig, function DebugUnitInfo)

            set bj_debugCamInfoTrig = CreateTrigger()
            call TriggerRegisterPlayerChatEvent(bj_debugCamInfoTrig, indexPlayer, bj_DEBUG_CHAT_CAMINFO, true)
            call TriggerRegisterPlayerChatEvent(bj_debugCamInfoTrig, indexPlayer, bj_DEBUG_CHAT_CAMINFO2, true)
            call TriggerAddAction(bj_debugCamInfoTrig, function DebugCamInfo)

            set bj_debugCamDistTrig = CreateTrigger()
            call TriggerRegisterPlayerChatEvent(bj_debugCamDistTrig, indexPlayer, bj_DEBUG_CHAT_CAMDIST, false)
            call TriggerAddAction(bj_debugCamDistTrig, function DebugCamDist)

            set bj_debugCamFarzTrig = CreateTrigger()
            call TriggerRegisterPlayerChatEvent(bj_debugCamFarzTrig, indexPlayer, bj_DEBUG_CHAT_CAMFARZ, false)
            call TriggerAddAction(bj_debugCamFarzTrig, function DebugCamFarZ)

            set bj_debugCamFovTrig = CreateTrigger()
            call TriggerRegisterPlayerChatEvent(bj_debugCamFovTrig, indexPlayer, bj_DEBUG_CHAT_CAMFOV, false)
            call TriggerAddAction(bj_debugCamFovTrig, function DebugCamFOV)

            set bj_debugCamAoaTrig = CreateTrigger()
            call TriggerRegisterPlayerChatEvent(bj_debugCamAoaTrig, indexPlayer, bj_DEBUG_CHAT_CAMAOA, false)
            call TriggerAddAction(bj_debugCamAoaTrig, function DebugCamAOA)

            set bj_debugCamRollTrig = CreateTrigger()
            call TriggerRegisterPlayerChatEvent(bj_debugCamRollTrig, indexPlayer, bj_DEBUG_CHAT_CAMROLL, false)
            call TriggerAddAction(bj_debugCamRollTrig, function DebugCamRoll)

            set bj_debugCamRotTrig = CreateTrigger()
            call TriggerRegisterPlayerChatEvent(bj_debugCamRotTrig, indexPlayer, bj_DEBUG_CHAT_CAMROT, false)
            call TriggerAddAction(bj_debugCamRotTrig, function DebugCamRot)

            set bj_debugCamResetTrig = CreateTrigger()
            call TriggerRegisterPlayerChatEvent(bj_debugCamResetTrig, indexPlayer, bj_DEBUG_CHAT_CAMRESET, true)
            call TriggerAddAction(bj_debugCamResetTrig, function DebugCamReset)

            set bj_debugRuTrig = CreateTrigger()
            call TriggerRegisterPlayerChatEvent(bj_debugRuTrig, indexPlayer, bj_DEBUG_CHAT_REMOVEUNIT, true)
            call TriggerAddAction(bj_debugRuTrig, function DebugRemoveUnit)

            set bj_debugGotoXTrig = CreateTrigger()
            call TriggerRegisterPlayerChatEvent(bj_debugGotoXTrig, indexPlayer, bj_DEBUG_CHAT_GOTOX, false)
            call TriggerAddAction(bj_debugGotoXTrig, function DebugGotoX)

            set bj_debugGotoYTrig = CreateTrigger()
            call TriggerRegisterPlayerChatEvent(bj_debugGotoYTrig, indexPlayer, bj_DEBUG_CHAT_GOTOY, false)
            call TriggerAddAction(bj_debugGotoYTrig, function DebugGotoY)

            set bj_debugGotoXYTrig = CreateTrigger()
            call TriggerRegisterPlayerChatEvent(bj_debugGotoXYTrig, indexPlayer, bj_DEBUG_CHAT_GOTOXY, false)
            call TriggerAddAction(bj_debugGotoXYTrig, function DebugGotoXY)

            set bj_debugGotoUnitTrig = CreateTrigger()
            call TriggerRegisterPlayerChatEvent(bj_debugGotoUnitTrig, indexPlayer, bj_DEBUG_CHAT_GOTOUNIT, true)
            call TriggerAddAction(bj_debugGotoUnitTrig, function DebugGotoUnit)

            set bj_debugDifficultyTrig = CreateTrigger()
            call TriggerRegisterPlayerChatEvent(bj_debugDifficultyTrig, indexPlayer, bj_DEBUG_CHAT_DIFFICULTY, true)
            call TriggerAddAction(bj_debugDifficultyTrig, function DebugDifficulty)

            set bj_debugFingerOfDeathEnabled[index] = false

            set bj_debugToolOfDeathTrig[index] = CreateTrigger()
            call TriggerRegisterPlayerUnitEvent(bj_debugToolOfDeathTrig[index], indexPlayer, EVENT_PLAYER_UNIT_SELECTED, null)
            call TriggerAddAction(bj_debugToolOfDeathTrig[index], function DebugToolOfDeath)
            call DisableTrigger(bj_debugToolOfDeathTrig[index])

            set bj_debugFingerOfDeathTrig[index] = CreateTrigger()
            call TriggerRegisterPlayerChatEvent(bj_debugFingerOfDeathTrig[index], indexPlayer, bj_DEBUG_CHAT_FINGEROFDEATH, true)
            call TriggerAddAction(bj_debugFingerOfDeathTrig[index], function DebugToggleFingerOfDeath)
        endif

        set index = index + 1
        exitwhen index == bj_MAX_PLAYERS
    endloop

    return true
endfunction

как мы помним, ингейм читы включают некий любопытный мод, который хз акими средствами реализуется на триггерах, а строка с чат-сообщением игрока, которую не так давно было выясняно как всего навсего спрятать, заменяется на "Жульничество разрешено". Сообщения thereisnospoon и некоторые другие НЕ улавливаются событием, на которые завязан cheats.j , а в мультиплеере чит-мод вообще НЕ РАБОТАЕТ, при том что сообщение опять же заменяется

Отредактировано FellGuard, 18.06.2007 в 22:51.
Старый 18.06.2007, 22:39
Sailar

offline
Опыт: 8,555
Активность:
Хорошо предположим я не прав но зачем чит чит в движок вводить былобы глупо со стороны близзов. Я подозреваю есть к читам коды типа как к абилкам которые сылаються на ид. Следовательно и у читов должен быть код.
Старый 18.06.2007, 22:53
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
отлов и выведение "Жульничества" осуществляется движком, так же как и системные сообщения типа "Недостаточно маны". Делай выводы, никто не нашел где и как выводить хотябы сис. сообщения. В отличии от баз данных с юнитами, абилами и проч. объектами.

Глупости никакой не вижу - читы работают только в сингле.

Впринципе, можно попробовать с помощью внешней проги отследить дислокацию чита, или с помощью проги Алексея, или с помощью Артмани
Есть еще ф-ии
Код:
native IsMapFlagSet takes (mapflag) returns boolean 
native SetMapFlag takes (mapflag, boolean) returns nothing
native Cheat takes (string) returns nothing
из которых работают только Cheat, вот что сказано к пояснению к мапфлагам, которые по-идее выключают читы
Код:
constant    mapflag    MAP_CHEATS         disabling this has no effect
constant    mapflag    MAP_CHEATS_HIDDEN    does not seem to have any effect
тоесть, можно триггерно ввести игроку какой-то чит, не более
Старый 19.06.2007, 07:50
ComotozNick
Активность: 666
offline
Опыт: 26,206
Активность:
Цитата:
Анти-чит система была реализована в карте жизнь крестьянина 2 (life of peasant 2) Там когда вводишь чит даже не пишеться что разрешено жульничество и чит не действует.

- бред. То что он ничего не высвечивал это просто сделать, - в настройках интерфейса карты (там где редактируются разные сообщения, по типу нельзя тут построить и т.п.) можно заменить собщение "Жульничество Разрешено" на любое другое, например на " ". Насчет того что там не работал эффект чита, сомневаюсь, разве что они могли там сделать триггами/джазом. К примеру при чите на неуязвимость - они могли сделать так что если при атаке не наносится урон, то этот урон наносится триггерно. Ну это к примеру, на самом деле не имею понятия как там. Или ты просто криворукий и кол не верно вводил.
Старый 19.06.2007, 17:04
YellowStar
poon
offline
Опыт: 15,144
Активность:
Если поставить пробел вместо жульничество разрешено то будет писаться такая бяка как имя игрока и пробел:) так то. А там этого нет. И там нет тригерного расчета урона.......
Старый 19.06.2007, 17:21
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
и что дальше, на сайте лежит соистема по скрытию даже имени игрока и лога в чате.. Кароче заканчивайте страдать фигней, читы не дисэйблятся
Старый 19.06.2007, 17:27
Закрытая тема

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

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

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

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



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