-
Game Caching System ....
Masi baru awal .. mungkin ( mungkinkah ? gw ga yakin jg si ... hahaha ) gw tambahin ... masih beta tapi rasanya ga pernah ada masalah
simpan di custom script code section
Code:
// Script Caching ========================================================================
// Berisi Script untuk Game cache
// Dengan Return Bug
//
// =========================================================================================
// 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
Memerlukan trigger ( new > Trigger ) di map seperti ini
Code:
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
-
okey ...
kenapa gw bikin seperti ini .....
1. ketika menyimpan seperti misalnya unit ga usah pusing2x mengconvert dari integer ke unit ketika akan mengambil data dari cache
2. ketika melihat isi kode tidak akan tertukar dengan line yang mengambil unit dengan timer atau dengan integer biasa.
contoh menggunakannya dengan tipe spell seperti illuminate ezalor a.k.a keeper of the light
dimana kita menyimpan charge lv ( yah seperti itulah .. )
sebagai referensi lihat post sebelumnya mengenai gamecache
disebelah tanda "//" adalah comment yang menjelaskan lkegunaan dari line yang dibawahnya
untuk kenyaman baca dari bawah keatas jangan dari atas kebawah karena nanti belibet
Code:
// trigger condition
function AT_condition takes nothing returns boolean
return GetSpellAbilityId() == 'H000'
endfunction
// filter ketika damage unit
function AT_Filter takes nothing returns boolean
return IsPlayerEnemy(GetOwningPlayer(GetTriggerUnit()), GetOwningPlayer(GetFilterUnit())) and GetWidgetLife(GetFilterUnit()) > 0.405
endfunction
// Copy group ...
function US_CopyGroup takes group g returns group
set bj_groupAddGroupDest = CreateGroup()
call ForGroup(g, function GroupAddGroupEnum)
return bj_groupAddGroupDest
endfunction
// this function responsible in increasing burst level
function charge_burst takes nothing returns nothing
// mencari timer yang tadi distart pada fungsi sebelumnya
local timer t = GetExpiredTimer()
// mengambil nama string dari timer ( untuk indentitas ), exec dalam fungsi ini memiliki nilai yang sama dengan exec di fungsi sebelumnya karena itu string dari timer adalah seperti identitas alamat dalam mengambil data dari gamecache
local string exec = H2S(t)
// mengambil integer dari burst
local integer burst = GetStoredInt ( exec,"burst")
// mengambil integer dari maxburst
local integer maxburst = GetStoredInt ( exec,"maxburst")
// line logikal untuk menambah burst, karena timer digunakan maka fungsi ini aka diulang terus menerus ( repeating timer dengan waktu periodik 0.5 detik
set burst = burst + 1
if burst > maxburst then
set burst = maxburst
endif
// menyimpan value dari burst
call StoreDataInteger( exec, "burst", burst )
// remove memory leak
// not yet
endfunction
// this function responsible for inflicting damage
function damage_burst takes nothing returns nothing
// catatan : dalam get stored saya menggunakan exec dan exe ... perhatikan baik2x karena ada gamecache yang diambil dari sisi timer dan ada yang dari sisi trigger
// mengambil nama string dari trigger untuk identitas ( trigger endcast dari fungsi charge_actions
local string exec = H2S(GetTriggeringTrigger())
// mengambil timer yang disimpan pada exec, get expired timer tidak bisa digunakan karena timer distart bukan untuk fungsi ini
local timer tn = GetStoredTimer (exec,"timer")
// mengambil string dari timer untuk identitas
local string exe = H2S(tn)
// mengambil value burst ( value ini sudah berubah karena adanya fungsi charge_burst yang di execute lebih dulu ; seperti meng-overwrite data dalam gamecache )
local integer burst = GetStoredInt( exe ,"burst")
// mengambil lokasi dari gamecache
local location lcc = GetStoredLocation ( exe ,"target")
// mengambil unit dari gamecache
local unit cst = GetStoredUnit (exe, "caster")
// the utilities
// filter untuk damage area
local boolexpr b = Condition(function AT_Filter)
local group g = CreateGroup()
local group n
local unit f
// line untuk mendamage unit musuh dalam radius 500 sebesar 100*burst
call GroupEnumUnitsInRangeOfLoc(g, lcc, 500 , b)
set n = US_CopyGroup(g)
loop
set f = FirstOfGroup(n)
exitwhen f == null
call UnitDamageTarget(GetTriggerUnit(), f, 100*burst, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC, null)
call GroupRemoveUnit(n, f)
endloop
// removing leaks
// Not Yet
endfunction
function charge_actions takes nothing returns nothing
// Membuat timer untuk di "attach" ke fungsi lain, karena memang seperti ini kegunaan timer dan handle lainnya
local timer time = CreateTimer()
// Location untuk menentukan area target dari spell dan nanti akan dipindahkan
local location lcc = GetSpellTargetLoc()
// trigger yang akan dipindahkan ke fungsi lainnya, singkatnya seperti trigger dalam trigger
local trigger trig = CreateTrigger()
// merubah kode timer dari handle ke string ... merupakan "kewajiban" dalam gamecache
local string exec = H2S(time)
// unit yang akan dipindahkan ke fungsi lainnya
local unit cst = GetTriggerUnit()
// pembuatan even trigger, dalah hal ini sama seperti dalam inisiasi trigger
call TriggerRegisterUnitEvent(trig,GetTriggerUnit(),EVENT_UNIT_SPELL_ENDCAST)
// menyimpan action dari trigger kedalam gamecache untuk dipindahkan ke fungsi damage_burst
call StoreDataHandle(H2S(trig),"trigact",TriggerAddAction(trig,function damage_burst))
// persiapan menyimpan kedalam gamecache untuk dimasukan ke fungsi selanjutnya
// menyimpan trigger
call StoreDataHandle(exec, "lp", trig)
// menyimpan burst valuenya 0
call StoreDataInteger(exec, "burst", 0)
// menyimpan maximum burst ( waktu channeling akan selesai apabila value mencapai 5 )
call StoreDataInteger(exec, "maxburst", 5)
// menyimpan unit caster
call StoreDataHandle(exec, "caster", cst)
// menyimpan lokasi target
call StoreDataHandle(exec, "target", lcc)
// menyimpan timer sebagai identitas untuk fungsi yang akan dikirim, bagian ini dibuat khusus untuk damage_burst
call StoreDataHandle(H2S(trig), "timer", time)
// memulai timer
call TimerStart(time, 0.5, true, function charge_burst )
// catatan kaki ... untuk penyimpanan ada yang menggunakan exec dan H2S(trig), hal ini akan dimengerti mengapa setelah melihat fungsi-fungsi diatas
// removing leaks
// Not yet
endfunction
//==== inisiasi trigger biasa ...
function InitTrig_burst takes nothing returns nothing
set gg_trg_burst = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_burst, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_burst, Condition( function AT_condition ) )
call TriggerAddAction( gg_trg_burst, function charge_actions )
endfunction
semoga cukup jelas ... ::smoke::
-
Btw rizz, GEAR.w3x dah gua ganti smua globals masuk dalam satu body. Jadinya bisa dibuka di WE biasa trus diedit (kemungkinan, harus dicoba dolo). Kalo gk bisa kasih tau alesan nya apaan nanti .j file nya gua rubah sekaligus jd normal.
-
Secara yach... ni tutorial komplit bangget.... But ada yang punya JASS library atau JASS Dictionary... habisnya suka lupa maksudnya ini tapi fungsinya apa.... Need banget!
Kalo misalnya gak ada yang punya... tolong dengan sangat bantuin terjemahin fungsi - fungsinya terus nanti aku bikin di Visual Basic atau C++.
-
sebenarnya JASS itu apa sih? masih newbie nih.
Basic nya JASS itu pake bahasa apa? Soalnya basic gw cuma di C++, VB doang
-
jass itu sebuah bahasa coding yang di gunakan pada map game yang di develop oleh blizzard contoh nya war3 dan star2...
bentuk dari jass itu ga jauh beda sama bahasa lain, soalnya dari versi GUI nya aja kliatan seperti bentuk relasi [if/then/else] atau kondisional... tapi karena hanya intern ke game itu jadi ga bisa terlalu bergerak ke program extern dari game itu...
tapi klo mo extraordinary sih harus dewa maenin jass nya, dan klo gasala di sebut enhanced jass...
@section : klo mo tau sih sperti yang dibilang oom doos, pake jass craft itu dah ada... tinggal bisa apa kaga baca nya [bahasa inggris]... masa ga bisa sih bahasa inggris...
hare gene...
-
JASS (Java Averted Syntax System) adalah computer low level language system depicted dari system Java SUN.
Kalau kamu berkenan belajar JASS coba download JASSCRAFT di www.wc3campaigns.net. JASSCRAFT adalah IDE buat language JASS.
Sebetulnya language tersebut logika nya sama seperti Java, bedanya tidak mengimplementasikan fitur Object Oriented JAVA. Jadinya gak ada class definition, class reference, segala macem. JASS hanya function oriented. Artinya kamu hanya bikin function doank.
System syntax JASS rada sama seperti Visual Basic, jadinya buat kamu gampang belajar JASS, dan logika java sama seperti c++ jadinya gampang juga buat kamu :D.
Have fun, if you need tutorial gua relink ke JASS learning website punya Vexorian.
-
ooogh buatan sun bubur bayi instant ya,.... eh sala sun java....
berarti secara ga langsung menggunakan jass sama aja kek belajar java gitu ya...
-
Gak... bukan buatan sun java...
-
tapi bilangnya dari sun java... kok bukan dari sun jadinya...???
-
JASS is an event driven scripting language used in Blizzard Entertainment's Warcraft III game. Map creators can use it in the World Editor to create triggers and AI scripts.
Features
The language provides an extensive API that gives programmers control over nearly every aspect of the game world. It can, for example, give orders to units, change the weather and time of day, play sounds and display text to the player, and manipulate the terrain. It has a syntax similar to Turing and Delphi, although, unlike those languages, it is case sensitive.
[edit] Sample code
The following function creates a string containing the message "Hello, world!" and displays it to all players:
function Trig_JASS_test_Actions takes nothing returns nothing
call DisplayTextToForce( GetPlayersAll(), "Hello, world!" )
endfunction
or if you want this only for one player:
function Trig_JASS_test_Actions takes player p returns nothing
call DisplayTextToPlayer( p, 0,0, "Hello, world!" )
endfunction
(DisplayTextToPlayer got two x,y arguments used as coordinates for the output in the game screen)
And if you want to repeat the message 100 times and show the iterator:
function Trig_JASS_test_Actions takes player p returns nothing
local integer i
set i=0
loop
exitwhen i>100
call DisplayTextToPlayer( p, 0,0, "Hello, world! "+I2S(i) )
set i=i+1
endloop
endfunction
http://en.wikipedia.org/wiki/JASS
http://jass.sourceforge.net/doc/
http://www.wc3jass.com/viewforum.php?f=22
http://www.wc3campaigns.net/showthread.php?t=74894
http://www.wc3campaigns.net/tutorials.php?f=650
-
"depicted" or di implementasi dari struktur JAVA. Yang ngebuat gua kurang tau...
-
btw ruh rizuh... loe kasih contoh dong 1 spell yang rada bagus....
tapi spell nya yang gini
"Target unit" ambil target, tererus misalnya di puter puterin muterin "Caster" 360drajat and smakin jauh bla bla bla akhirnya di lemparin --"
kasih yang kaya gt dong (wa mau belajar make jass tapi yang buat ky gituan)
-
DJTuing.....
Om DJTuing.. itu udah ada.. kalo gak salah aku pernah dapet.. dia puter - puterin tu target ampe pusing terus dilempar.... Sory sekarang lagi gak bawa tu sample.
---Di rumah banyak bgt tu sample skill---:paladin:
-
Btw JASS user yang nongkrong di sini siapa aja ?