yang diperlukan :
1. variable global bernama data_cache dengan tipe gamecache
2. trigger untuk inisiasi gamecache dengan nama Cache isi dari trigger sbb
function Trig_Cache_Actions takes nothing returns nothing
call FlushGameCache(InitGameCache("arcache"))
set udg_data_cache = InitGameCache("arcache")
endfunction
function InitTrig_Cache takes nothing returns nothing
set gg_trg_Cache = CreateTrigger( )
call TriggerAddAction( gg_trg_Cache, function Trig_Cache_Actions )
endfunction
3. Game Cache script pada custom script code isi adalah sbb
// Typecasting Standar
function H2I takes handle h returns integer
return h
return 0
endfunction
function H2S takes handle h returns string
return I2S(H2I(h))
endfunction
// Flush Game Cache ================================================== ======================
// Untuk membuang isi game cache
// Termasuk Fungsi Destroy
//
// ================================================== =======================================
//fungsi umum
function FlushMissionData takes string Dmission returns nothing
call FlushStoredMission(udg_data_cache, Dmission)
endfunction
//untuk Lebih Spesifik
//untuk Tipe Data Integer
function FlushMissionInteger takes string Dmission, string Dkey returns nothing
call FlushStoredInteger(udg_data_cache, Dmission, Dkey)
endfunction
//untuk Tipe Data Real
function FlushMissionReal takes string Dmission, string Dkey returns nothing
call FlushStoredReal(udg_data_cache, Dmission, Dkey)
endfunction
// Fungsi Caching [ Penyimpanan ] ================================================== =======
// Menyimpan Handle
// Menyimpan Integer
// Menyimpan Real
// ================================================== =======================================
function StoreDataHandle takes string Dmission, string Dkey, handle Dhandle returns nothing
// Menyimpan Data Handle, dipisahkan dari Integer agar mudah dibedakan
call StoreInteger(udg_data_cache, Dmission, Dkey, H2I(Dhandle))
endfunction
function StoreDataInteger takes string Dmission, string Dkey, integer Dinteger returns nothing
// Menyimpan Data Integer
call StoreInteger( udg_data_cache, Dmission, Dkey, Dinteger )
endfunction
function StoreDataReal takes string Dmission, string Dkey, real Dreal returns nothing
// Menyimpan Data Real
call StoreReal( udg_data_cache, Dmission, Dkey, Dreal )
endfunction
// Caching function helper [ Unpacking ] ================================================== =
// Mengambil data yang disimpan dalam Cache
// Berbeda untuk setiap tipe
//
// ================================================== =======================================
function GetStoredInt takes string Dmission, string Dkey returns integer
return GetStoredInteger( udg_data_cache, Dmission, Dkey )
endfunction
function GetStoredReals takes string Dmission, string Dkey returns real
return GetStoredReal ( udg_data_cache, Dmission, Dkey)
endfunction
function GetStoredUnit takes string Dmission,string Dkey returns unit
return GetStoredInteger( udg_data_cache, Dmission, Dkey )
return null
endfunction
function GetStoredGroup takes string Dmission, string Dkey returns group
return GetStoredInteger(udg_data_cache, Dmission, Dkey)
return null
endfunction
function GetStoredTimer takes string Dmission, string Dkey returns timer
return GetStoredInteger ( udg_data_cache, Dmission, Dkey )
return null
endfunction
function GetStoredLocation takes string Dmission, string Dkey returns location
return GetStoredInteger(udg_data_cache, Dmission, Dkey)
return null
endfunction
function GetStoredTrigAct takes string Dmission, string Dkey returns triggeraction
return GetStoredInteger(udg_data_cache, Dmission, Dkey)
return null
endfunction
4. terakhir adalah trigger ( gw lon nyoba jalan pa ga tar gw coba )
//constant
//cukup ganti constant sama skill kamu
constant function ABL_AURA takes nothing returns integer // skill yang bisa bikin drain mana
return 'AHbz' // ganti bagian ini dengan rawcode Skill dari aura tsb
endfunction
constant function BUF_AURA takes nothing returns integer // Buff aura yang bisa bikin drain mana
return 'BNab' // ganti bagian ini dengan rawcode Buff dari aura tsb
endfunction
//end of constant
function SwapActivated takes nothing returns boolean
return UnitHasBuffBJ(GetTriggerUnit(), BUF_AURA()) == true
endfunction
function SwapSkill takes nothing returns boolean
return GetLearnedSkill() == ABL_AURA()
endfunction
function ActivateSwap takes nothing returns nothing
local string transfer = H2S(GetTriggeringTrigger())
local unit drain = GetStoredUnit(transfer,"unitaura")
local integer intelli = GetHeroInt(drain, true)
local integer sklv = GetUnitAbilityLevel(drain, ABL_AURA())
local integer Damount = (10*sklv) + intelli
local unit drained = GetTriggerUnit()
//amount for drained unit
call SetUnitManaBJ( drained, ( GetUnitStateSwap(UNIT_STATE_MANA, GetTriggerUnit()) - Damount ) )
//amount for draining unit
call SetUnitManaBJ( drain, ( GetUnitStateSwap(UNIT_STATE_MANA, GetTriggerUnit()) + Damount ) )
set drain = null
set drained = null
endfunction
function SwapTrg takes nothing returns nothing
local trigger t
local string transfer = H2S(t)
local unit aura = GetTriggerUnit()
// Menyimpan unit untuk dipindahkan ke fungsi atas
call StoreDataHandle(transfer,"unitaura",aura)
//create trigger
if GetUnitAbilityLevel(aura, ABL_AURA()) < 2 then
set t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( t, Condition( function SwapActivated ) )
call TriggerAddAction( t, function ActivateSwap )
endif
//end trigger
set aura = null
set t = null
endfunction
//================================================== =========================
function InitTrig_SkillRegister takes nothing returns nothing
set gg_trg_SkillRegister = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_SkillRegister, EVENT_PLAYER_HERO_SKILL )
call TriggerAddCondition( gg_trg_SkillRegister, Condition( function SwapSkill ) )
call TriggerAddAction( gg_trg_SkillRegister, function SwapTrg )
endfunction
Share This Thread