quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,338Активность: |
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",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 )) а вот карта пример: Отредактировано quq_CCCP, 04.11.2012 в 16:59. |
04.11.2012, 16:32 | #1
+1/−8
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
то что вам не хватает ума следовать инструкции в которой всё расписано, это исключительно ваша ОСОБАЯ проблема.
если в инструкции не написано, что сувать руки в станок опасно, это совершенно не значит, что совать руки в станок безопасно. |
04.11.2012, 19:41 | #2
+4/−2
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,338Активность: |
|
05.11.2012, 04:19 | #3
+1/−7
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
если двигатель собрать неправильно, он не будет работать. НО В ИНСТРУКЦИИ НЕ НАПИСАНО, НАДО ПОДАТЬ НА ПРОИЗВОДИТЕЛЯ В СУД!!!!!! |
05.11.2012, 09:48 | #4
+8/−2
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,338Активность: |
DioD, да ты что? двигатель собрать? да тут все собрано, но я что то не вижу ничего неправильного, все как в инструкции, но не работает, а ты тут только флудиш, не говоря ничего определённого, тока всякие двусмысленные намёки, что дело скорее во мне чем в системе... |
05.11.2012, 11:28 | #5
+1/−5
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
Эксплойт работает. |
05.11.2012, 12:08 | #6
+4/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,338Активность: |
Faion, ну только почему то на переодике у меня всегда 0 возвращяет, мб я что то нетак делаю, но все как в инструкции... Если таймер не переодичный, то правильно работает, а этот эксплоит без переодика, так же полезен как перегоревшая лампочка... |
05.11.2012, 12:18 | #7
+1/−5
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
spellwerk
offline
Опыт:
4,869Активность: |
Открою секрет: таймер можно запускать из самой функции.
Внезапно, работает так же, как и периодик. |
05.11.2012, 12:36 | #8
+2/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
если вы не понимаете полезности эксплойта, то зачем вообще он вам нужен, кодьте на гуи или чем вы там кодите спокойно и не думайте о всяких эксплойтах.
ps. quq_CCCP что ты пишешь? ахаххахаха прекрати! |
05.11.2012, 12:40 | #9
+4/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,338Активность: |
spellwerk, и ? толку, ноль возвращяет експлоит, реклама, и нечего больше, лобисты типо DioD, будут с пеной у рта, рвать глотку, защищая себя и свои труды, ну положение это не изменит... Тему закройте, чтобы не успели разфлудится |
05.11.2012, 13:43 | #10
+1/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
никогда не думал что человек может так сильно распсиховатся от собственной беспомощности, выйди на улицу чтоли. там асфаль есть }:3 |
05.11.2012, 13:54 | #11
+4/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
|
05.11.2012, 14:34 | #12
+1/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,338Активность: |
|
05.11.2012, 14:58 | #13
+1/−4
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
руки у тебя кривые и точка, иди на улицу выравнивай.
|
05.11.2012, 16:03 | #14
+2/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Карточка
Kicked by SSrunX
offline
Опыт:
2,017Активность: |
подтверждаю работоспособность. юзал, начиная с 1.24, всё работает отлично без сбоев и погрешностей
детская упоротость должна быть наказуема, вообще что это за советы в академии, например, для создании пассивы юзать не нулевые значения, а 0.01%? :DDDD
почему не наказывают наглый бред? :D |
05.11.2012, 16:07 | #15
+1/−3
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
quq_CCCP, наркоман. |
05.11.2012, 16:13 | #16
+4/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,338Активность: |
DioD, совсем упорлся?. Я разве отрицал что без периодика не работает? Я говорю про периодический таймер, на который нечерта не сохраняется, про не периодический я разу написал что работает, но нафиг неинтересно... (в мануале об этом не слова) |
05.11.2012, 16:19 | #17
+0/−2
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nerevar
I'll be back!
offline
Опыт:
18,352Активность: |
+ =
пересохранять число думаю не проблема? |
05.11.2012, 16:22 | #18
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
ВНЕЗАПНО
переодический таймер на этом эксплойте!
там есть ошибки это специально, чтобы не треснуло ничего, а вообще... |
05.11.2012, 16:31 | #19
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NixEon
beeg kok
offline
Опыт:
8,143Активность: |
У меня все работает. Лол. |
05.11.2012, 17:12 | #20
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|