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

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

Закрытая тема
 
quq_CCCP
Я белый и пушистый!
offline
Опыт: 94,203
Активность:
Timer Exploit фейк ли это?
Собственно посмотрел на эту чудо наработку, опубликованную Скорпом, думаю чё же никто не юзазает, просто находка по замене TimerUtils и топу подобному, всего 2 функции, самая большая из которых занимает 4 строчки, ну и скопировал в карту. думаю все, круто! Но не тут то было, сначала долго не мог понять что к чему, но потом решил проверить значение записанного числа в таймере, опа, 0, всегда 0... ну давай пробовать хештаблицей, все ок, ну мб я что то не то делаю, или у меня вар особенный.
почему же не работает?
На скрине видно что при периодическом таймере, Timer Exploit всегда равен 0, конечно если убрать периодичность, то сохраняет, но что то я не слова не увидел по этому поводу вот здесь
Вот тут код скилла, в котором этот баг обнаружился, скилл еще неготов, но для демонстрации этого недоразумения сойдет , поэтому все ошибки, неоптимальности, мои глупости, и тп. не относящееся к данному вопросу просьба здесь не оценивать...
» код скилла
((код jass
function Trig_Frost_Nova_Conditions takes nothing returns boolean
return GetSpellAbilityId( ) == 'A001'
endfunction
function TimerStartEx takes timer whichTimer, real period, boolean isPeriodic, code handlerFunc, integer userData returns nothing
call TimerStart( whichTimer, I2R( userData ), false, null ) timer exploit, xgm 2007
call PauseTimer( whichTimer )
call TimerStart( whichTimer, period, isPeriodic, handlerFunc ) start timer
endfunction
function TimerGetUserData takes timer whichTimer returns integer
return R2I( TimerGetRemaining( whichTimer ) + 0.5 ) get user data from timer
endfunction
struct FrostMissile
unit array dummy[20]
effect array dummyModel[20]
boolean array isAlive[20]
real array dx[30]
real array dy[30]
real array da[30]
method CreateDummyMissile takes real DX, real DY, integer count, string modelName returns nothing
call DebugMsg( "CreateDummyMissile - вызван!" )
set this.da[count] = GetRandomReal( 0, 360 )
call DebugMsg( "CreateDummyMissile - вызван!" )
set this.dx[count] = DX + 100.00 * Cos( da[count] * 0.0174603174603175 )
set this.dy[count] = DY + 100.00 * Sin( da[count] * 0.0174603174603175 )
set this.dummy[count] = CreateUnit( bj_dummyOwningPlayer, bj_dummyUnitId, dx[count], dy[count], da[count] )
set this.dummyModel[count] = AddSpecialEffectTarget( modelName, dummy[count], "chest" )
set this.isAlive[count] = true
endmethod
method MoveDummyMissile takes integer count returns boolean
local boolean flag = false
set this.dx[count] = this.dx[count] + 28.125 * Cos( this.da[count] * 0.0174603174603175 )
set this.dy[count] = this.dy[count] + 28.125 * Sin( this.da[count] * 0.0174603174603175 )
call SetUnitPosition( this.dummy[count], this.dx[count], this.dy[count] )
call SetUnitFacing( this.dummy[count], this.da[count] )
call GroupClear( gg_grp_EnemyCountGroup )
set bj_groupEnumOwningPlayer = GetOwningPlayer( this.dummy[count] )
call GroupEnumUnitsInRange( gg_grp_EnemyCountGroup, this.dx[count], this.dy[count], 100.00, gg_bxp_IsUnitEnemy )
set flag = FirstOfGroup( gg_grp_EnemyCountGroup ) != null
call GroupClear( gg_grp_EnemyCountGroup )
return flag
endmethod

method DestroyDummyMissile takes integer count returns nothing
if this.isAlive[count] then
set this.isAlive[count] = false
call DestroyEffect( this.dummyModel[count] )
call UnitApplyTimedLife( this.dummy[count], 0, 0.75 )
else
call DebugMsg( "снаряд уничтожен или не существует" )
endif
endmethod
endstruct
struct SpellData
unit caster
integer missile
real distance = 0.00
integer MissileCount
endstruct
function Timer_Frost_Nova_Actions takes nothing returns nothing
local timer t = GetExpiredTimer( )
local SpellData st = LoadInteger( gg_htb_GameData, GetHandleId( t ), 0 )
local FrostMissile mt = st.missile
local integer nIndex = 0
local unit dummy
local integer MissileRemaning = 0




call DebugMsg( "Хеш - " + I2S( LoadInteger( gg_htb_GameData, GetHandleId( t ), 1 ) ) )
call DebugMsg( "Таймер баг - " + I2S( TimerGetUserData( t ) ) )

loop
exitwhen nIndex > st.MissileCount
if mt.isAlive[nIndex] then
set MissileRemaning = MissileRemaning + 1
if mt.MoveDummyMissile( nIndex ) then
call DebugMsg( "Снаряд попал в препятсвие" )
set dummy = CreateUnit( GetOwningPlayer( st.caster ), bj_dummyUnitId, mt.dx, mt.dy, mt.da )
call UnitApplyTimedLife( dummy, 0, 1.50 )
call UnitAddAbility( dummy, 'Adfn' )
set bj_groupEnumOwningPlayer = GetOwningPlayer( st.caster )
call GroupEnumUnitsInRange( gg_grp_EnemyCountGroup, mt.dx, mt.dy, 250.00, gg_bxp_IsUnitEnemy )
set bj_lastCreatedUnit = FirstOfGroup( gg_grp_EnemyCountGroup )
call IssueTargetOrder( dummy, "frostnova",bj_lastCreatedUnit )
call AddSpecialEffectTarget("Abilities\\Spells\\Undead\\FreezingBreath\\FreezingBreathMissile.mdl&qu​ot;,bj_lastCreatedUnit,"head")
call GroupClear( gg_grp_EnemyCountGroup )
call mt.DestroyDummyMissile( nIndex )
set MissileRemaning = MissileRemaning - 1
endif
endif
set nIndex = nIndex + 1
endloop
set st.distance = st.distance + 28.125

if st.distance >= 900.00 or MissileRemaning == 0 then
set nIndex = 0

loop
exitwhen nIndex > st.MissileCount
if mt.isAlive[nIndex] then
call mt.DestroyDummyMissile( nIndex )
endif
set nIndex = nIndex + 1
endloop
call st.destroy( )
call mt.destroy( )
call PauseTimer( t )
call DestroyTimer( t )
endif

set dummy = null
set t = null
endfunction
function Trig_Frost_Nova_Actions takes nothing returns nothing
local unit cast = GetSpellAbilityUnit( )
local timer t = CreateTimer( )
local SpellData st = SpellData.create( )
local FrostMissile mt = FrostMissile.create( )
local integer nIndex = 0
local real cx = GetUnitX( cast )
local real cy = GetUnitY( cast )
local integer i = GetRandomInt( 0, 6 )

set st.MissileCount = 4 * GetUnitAbilityLevel( cast, 'A001' )
call DebugMsg( "Осколков всего - " + I2S( st.MissileCount ) )

loop
exitwhen nIndex > st.MissileCount
call SetDummyOwner( GetOwningPlayer( cast ) )
call mt.CreateDummyMissile( cx, cy, nIndex, "Abilities\\Spells\\Undead\\FreezingBreath\\FreezingBreathMissile.mdl" )
set nIndex = nIndex + 1
endloop
set st.caster = cast
set st.distance = 0.00
set st.missile = mt
call SaveInteger( gg_htb_GameData, GetHandleId( t ), 0, st )
call SaveInteger( gg_htb_GameData, GetHandleId( t ), 1, i )

call TimerStartEx( t, 0.03125, true, function Timer_Frost_Nova_Actions, i )
set cast = null
set t = null
endfunction
===========================================================================
function InitTrig_Frost_Nova takes nothing returns nothing
local integer nIndex = 0

set gg_trg_Frost_Nova = CreateTrigger( )

loop
exitwhen nIndex > bj_MAX_PLAYERS
set bj_groupEnumOwningPlayer = Player( nIndex )
if IsPlayerUser( bj_groupEnumOwningPlayer ) then проверка на то что игрок играет и не является ботом.
call TriggerRegisterPlayerUnitEvent( gg_trg_Frost_Nova, bj_groupEnumOwningPlayer, EVENT_PLAYER_UNIT_SPELL_EFFECT, null )
endif
set nIndex = nIndex + 1
endloop

call TriggerAddCondition( gg_trg_Frost_Nova, Condition( function Trig_Frost_Nova_Conditions ) )
call TriggerAddAction( gg_trg_Frost_Nova, function Trig_Frost_Nova_Actions )
endfunction
))
а вот карта пример:
Прикрепленные файлы
Тип файла: w3x Timer Exploit bug.w3x (83.8 Кбайт, 2 просмотров )

Отредактировано quq_CCCP, 04.11.2012 в 16:59.
Старый 04.11.2012, 16:32
DioD

offline
Опыт: 45,134
Активность:
то что вам не хватает ума следовать инструкции в которой всё расписано, это исключительно ваша ОСОБАЯ проблема.
если в инструкции не написано, что сувать руки в станок опасно, это совершенно не значит, что совать руки в станок безопасно.
Старый 04.11.2012, 19:41
quq_CCCP
Я белый и пушистый!
offline
Опыт: 94,203
Активность:
DioD, в инструкции нечего не написано, а тупо перечислено от куда сиё чудо, и то что оно работает, качаем и улыбаемся... то что он может не работать или нестабилен, нету ни слова
quq_CCCP добавил:
DioD, кстати догадываюсь почему этот explpit так не популярен, походу его давным давно пофиксили
Старый 05.11.2012, 04:19
DioD

offline
Опыт: 45,134
Активность:
если двигатель собрать неправильно, он не будет работать. НО В ИНСТРУКЦИИ НЕ НАПИСАНО, НАДО ПОДАТЬ НА ПРОИЗВОДИТЕЛЯ В СУД!!!!!!
Старый 05.11.2012, 09:48
quq_CCCP
Я белый и пушистый!
offline
Опыт: 94,203
Активность:
DioD, да ты что? двигатель собрать? да тут все собрано, но я что то не вижу ничего неправильного, все как в инструкции, но не работает, а ты тут только флудиш, не говоря ничего определённого, тока всякие двусмысленные намёки, что дело скорее во мне чем в системе...
Старый 05.11.2012, 11:28
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
Эксплойт работает.
Старый 05.11.2012, 12:08
quq_CCCP
Я белый и пушистый!
offline
Опыт: 94,203
Активность:
Faion, ну только почему то на переодике у меня всегда 0 возвращяет, мб я что то нетак делаю, но все как в инструкции... Если таймер не переодичный, то правильно работает, а этот эксплоит без переодика, так же полезен как перегоревшая лампочка...
Старый 05.11.2012, 12:18
spellwerk

offline
Опыт: 4,869
Активность:
а этот эксплоит без переодика, так же полезен как перегоревшая лампочка...
Открою секрет: таймер можно запускать из самой функции.
function func01 takes nothing returns nothing
    local timer t = GetExpiredTimer()
    call TimerStart(t,1.,false,function func01)
    set t = null
endfunction
Внезапно, работает так же, как и периодик.
Старый 05.11.2012, 12:36
DioD

offline
Опыт: 45,134
Активность:
если вы не понимаете полезности эксплойта, то зачем вообще он вам нужен, кодьте на гуи или чем вы там кодите спокойно и не думайте о всяких эксплойтах.
ps.
quq_CCCP что ты пишешь? ахаххахаха прекрати!
Старый 05.11.2012, 12:40
quq_CCCP
Я белый и пушистый!
offline
Опыт: 94,203
Активность:
spellwerk, и ? толку, ноль возвращяет експлоит, реклама, и нечего больше, лобисты типо DioD, будут с пеной у рта, рвать глотку, защищая себя и свои труды, ну положение это не изменит...
Тему закройте, чтобы не успели разфлудится
Старый 05.11.2012, 13:43
DioD

offline
Опыт: 45,134
Активность:
никогда не думал что человек может так сильно распсиховатся от собственной беспомощности, выйди на улицу чтоли. там асфаль есть }:3
Старый 05.11.2012, 13:54
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
quq_CCCP:
Faion, ну только почему то на переодике у меня всегда 0 возвращяет
У всех работает, кроме вас, думаю совершенно очевидно почему?
quq_CCCP:
так же полезен как перегоревшая лампочка...
Естественно, скилловые жассеры юзают ресайклы, а с ресайклами этот эксплойт юзлесс.
Старый 05.11.2012, 14:34
quq_CCCP
Я белый и пушистый!
offline
Опыт: 94,203
Активность:
Faion, DioD, еще раз, не работает, и точка.
Старый 05.11.2012, 14:58
DioD

offline
Опыт: 45,134
Активность:
руки у тебя кривые и точка, иди на улицу выравнивай.
function Trig_Untitled_Trigger_001_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A000' ) ) then
        return false
    endif
    return true
endfunction

function TimerStartEx takes timer whichTimer, real period, boolean isPeriodic, code handlerFunc, integer userData returns nothing
    call TimerStart(whichTimer, I2R(userData), false, null) // timer exploit, xgm 2007
    call PauseTimer(whichTimer)
    call TimerStart(whichTimer, period, isPeriodic, handlerFunc ) // start timer
endfunction

function TimerGetUserData takes timer whichTimer returns integer
    return R2I(TimerGetRemaining(whichTimer )+0.5) // get user data from timer
endfunction

function timercallback takes nothing returns nothing
    call DestroyEffect(EffectHandler[TimerGetUserData(GetExpiredTimer())])
endfunction

globals

    effect array EffectHandler
    integer EffectHandlerID = 1

endglobals

function Trig_Untitled_Trigger_001_Actions takes nothing returns nothing
    local timer T = CreateTimer()
    
    set EffectHandlerID = EffectHandlerID + 1
    
    set EffectHandler[EffectHandlerID] = AddSpecialEffectTarget("Abilities\\Spells\\Human\\DivineShield\\DivineShieldTarget.mdl", GetSpellTargetUnit(), "overhead")
    
    call TimerStartEx(T,10,false,function timercallback, EffectHandlerID)
    
endfunction

//===========================================================================
function InitTrig_Untitled_Trigger_001 takes nothing returns nothing
    set gg_trg_Untitled_Trigger_001 = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Untitled_Trigger_001, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Untitled_Trigger_001, Condition( function Trig_Untitled_Trigger_001_Conditions ) )
    call TriggerAddAction( gg_trg_Untitled_Trigger_001, function Trig_Untitled_Trigger_001_Actions )
endfunction
Старый 05.11.2012, 16:03
Карточка
Kicked by SSrunX
offline
Опыт: 2,017
Активность:
подтверждаю работоспособность. юзал, начиная с 1.24, всё работает отлично без сбоев и погрешностей
детская упоротость должна быть наказуема, вообще что это за советы в академии, например, для создании пассивы юзать не нулевые значения, а 0.01%? :DDDD
почему не наказывают наглый бред? :D
Старый 05.11.2012, 16:07
Doc

offline
Опыт: 63,163
Активность:
quq_CCCP, наркоман.
Старый 05.11.2012, 16:13
quq_CCCP
Я белый и пушистый!
offline
Опыт: 94,203
Активность:
DioD, совсем упорлся?. Я разве отрицал что без периодика не работает?
Я говорю про периодический таймер, на который нечерта не сохраняется, про не периодический я разу написал что работает, но нафиг неинтересно... (в мануале об этом не слова)
Старый 05.11.2012, 16:19
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
про не периодический я разу написал что работает
+
Открою секрет: таймер можно запускать из самой функции.
=
периодический таймер
пересохранять число думаю не проблема?
Старый 05.11.2012, 16:22
DioD

offline
Опыт: 45,134
Активность:
ВНЕЗАПНО
переодический таймер на этом эксплойте!
function Trig_Untitled_Trigger_001_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A000' ) ) then
        return false
    endif
    return true
endfunction

function TimerStartEx takes timer whichTimer, real period, boolean isPeriodic, code handlerFunc, integer userData, integer times returns nothing
    call TimerStart(whichTimer, I2R(userData), false, null) // timer exploit, xgm 2007
    call PauseTimer(whichTimer)
    call TimerStart(whichTimer, period, isPeriodic, handlerFunc ) // start timer
    if times == 0 then
    return
    endif
    set TIMES[userData] = times
endfunction

function TimerGetUserData takes timer whichTimer returns integer
    return R2I(TimerGetRemaining(whichTimer )+0.5) // get user data from timer
endfunction

function timercallback takes nothing returns nothing
    local integer ID = TimerGetUserData(GetExpiredTimer())
    set TIMES[ID] = TIMES[ID] - 1
    
    call UnitDamageTargetBJ( gg_unit_Hamg_0000, UNIT[ID], 1, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
    if TIMES[ID] <= 0 then
        call DestroyEffect(EffectHandler[ID])
        return
    endif
    call TimerStartEx(GetExpiredTimer(),0.03125,false,function timercallback, EffectHandlerID,0)
endfunction

globals

    effect array EffectHandler
    integer array TIMES
    unit array UNIT
    real array period
    integer EffectHandlerID = 1

endglobals

function Trig_Untitled_Trigger_001_Actions takes nothing returns nothing
    local timer T = CreateTimer()
    
    set EffectHandlerID = EffectHandlerID + 1
    
    set EffectHandler[EffectHandlerID] = AddSpecialEffectTarget("Abilities\\Spells\\Human\\DivineShield\\DivineShieldTarget.mdl", GetSpellTargetUnit(), "overhead")
    set UNIT[EffectHandlerID] = GetSpellTargetUnit()
    set period[EffectHandlerID] = 0.03125
    
    call TimerStartEx(T,0.03125,false,function timercallback, EffectHandlerID,80)
    
endfunction

//===========================================================================
function InitTrig_Untitled_Trigger_001 takes nothing returns nothing
    set gg_trg_Untitled_Trigger_001 = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Untitled_Trigger_001, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Untitled_Trigger_001, Condition( function Trig_Untitled_Trigger_001_Conditions ) )
    call TriggerAddAction( gg_trg_Untitled_Trigger_001, function Trig_Untitled_Trigger_001_Actions )
endfunction
там есть ошибки это специально, чтобы не треснуло ничего, а вообще...
Старый 05.11.2012, 16:31
NixEon
beeg kok
offline
Опыт: 8,143
Активность:
У меня все работает. Лол.
Старый 05.11.2012, 17:12
Закрытая тема

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

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

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

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



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