Stone Story RPG【石頭紀(jì)】簡單的自用ui代碼
該ui包含以下內(nèi)容:
相當(dāng)粗糙且充滿bug的傷害統(tǒng)計(jì)
尚有bug的時(shí)間統(tǒng)計(jì)
還可以優(yōu)化的冷卻顯示
同樣有些bug但不影響使用的敵我血量美化
做到一半的己方buff顯示
以下是代碼:
?loc.begin
? var sleepOn=false
? var beginTime=0
? var waitTime=0
? var count=1
? var on=true
? var bashcd=item.GetCooldown("bash")/30
? var dashcd=item.GetCooldown("dash")/30
? var armcd=item.GetCooldown("skeleton_arm")/30
? var bladecd=item.GetCooldown("blade")/30
? var hammercd=item.GetCooldown("hammer")/30
? var sHP=foe.hp+foe.armor
? var eHP=foe.hp+foe.armor
? var DMG=0
? var TtDMG=0
? var LoopDMG=0
? var lastCount=foe.count
? var DMGtimes=0
? var Tttime=1
? var hpPC=100
? var armorPC=0?
? var maxarmor1=maxarmor
? var hpPL=100
? var armorPL=0
? var buffon1 //巧手
? var buffon2 //重?fù)?/p>
? var buffice
? var buffatk
? switchs()
?loc.loop
? sHP=foe.hp+foe.armor
? eHP=foe.hp+foe.armor
? LoopDMG=0
? DMGtimes=0
? count++
? Tttime++
? switchs()
//千位進(jìn)K百萬進(jìn)M
func transp(num)
? ?num<1000
? ? return num
? :?num<1000000
? ? return num/100*1.0/10+k
? :?
? ? return num/100000*1.0/10+m?
//自動(dòng)沖刺
func dash()
? ?foe.distance>=11&foe.distance<=17
? ^&bashcd=0? ? ? ?
? ? equipR bash
? :?foe.distance>=11&foe.distance<=17
? ^&bashcd>0&dashcd=0
? ? equipR dash? ?
//收獲物
func harvests()
? ?foe.count=0|pickup.distance<=10
? ? equipR star
? ?harvest=Boulder&harvest.distance<5
? ? equip shovel
? :?harvest=Tree
? ? equipR Hatchet
//按鍵們
func switchs()
? var switch = ui.AddButton()
? switch.visible=true
? switch.w=6
? switch.h=3
? switch.y=6
? switch.x=-40
? switch.text=UI開關(guān)
? switch.SetPressed(switchon)
//己方血條美化
func Ahp_ui(x,y)
? draw.Box(x,y,17,2,#FFFFFF,0)
? ?maxarmor1<maxarmor
? ? maxarmor1=maxarmor
? hpPC=hp*1.0/maxhp
? armorPC=armor*1.0/maxarmor1
? var hpPCint=math.CeiltoInt(10*hpPC)
? var armorPCint=math.CeiltoInt(10*armorPC)
? ?armorPCint>10
? ? armorPCint=10
? hpPC=math.CeiltoInt(100*hpPC)
? armorPC=math.CeiltoInt(100*armorPC)
? var namestr=string.format("{0} LV{1}"
? ^,player.name,(maxhp-20))
? >`@x+19@,@y+1@,#rainAA,@namestr@
? ?hpPC>60
? ? draw.Bg(x,y+1,#green,hpPCint,1)
? ? >`@x+10@,@y+1@,#green,@hp@ @hpPC@%??
? :?hpPC>30
? ? draw.Bg(x,y+1,#CCCC22,hpPCint,1)
? ? >`@x+10@,@y+1@,#CCCC22,@hp@ @hpPC@%??
? :
? ? draw.Bg(x,y+1,#CC1122,hpPCint,1)
? ? >`@x+10@,@y+1@,#CC1122,@hp@ @hpPC@%
? ?armorPC>60
? ? draw.Bg(x,y,#blue,armorPCint,1)
? ? >`@x+10@,@y@,#blue,@armor+0.1*armor.f@
? ? ^ @armorPC@%
? :?armorPC>30
? ? draw.Bg(x,y,#CCCC22,armorPCint,1)
? ? >`@x+10@,@y@,#CCCC22,@armor+0.1*armor.f@
? ? ^ @armorPC@%?
? :
? ? draw.Bg(x,y,#CC1122,armorPCint,1)
? ? >`@x+10@,@y@,#CC1122,@armor+0.1*armor.f@
? ? ^ @armorPC@%
//敵方血條美化
func Bhp_ui(x,y)
? ?foe.state!-1&foe.state!0
? ? >f-2,-3,#C5B358,ascii
##|
#\|/
##`
asciiend
? draw.Box(x,y,20,2,#FFFFFF,0)
? hpPL=foe.hp*1.0/foe.maxhp
? armorPL=foe.armor*1.0/foe.maxarmor
? var hpPLint=math.CeiltoInt(20*hpPL)
? var armorPLint=math.CeiltoInt(20*armorPL)
? ?armorPLint>20
? ? armorPLint=20
? hpPL=math.CeiltoInt(100*hpPL)
? armorPL=math.CeiltoInt(100*armorPL)
? var hpStr=string.format("{0,0}? {1,0}% {2,0}"
? ^,foe.name,hpPL,foe.hp)
? var armorStr=string.format("{0,0}% {1,0}"
? ^,armorPL,foe.armor)
? ?foe.count>0&foe.state!-1
? ? ?hpPLint>=0
? ? ? draw.Bg(x+hpPLint,y+1,
? ? ? ^#111111,20-hpPLint,1)
? ? draw.Bg(x,y+1,#CC1122,hpPLint,1)//敵人血條
? ? >`@x-string.size(hpStr)@,@y+1@
? ? ^,#CC1122,@hpStr@
? ? ?foe.armor!0
? ? ? ?armorPLint>=0
? ? ? ? draw.Bg(x+armorPLint,y,
? ? ? ? ^#111111,20-armorPLint,1)
? ? ? draw.Bg(x,y,#2E4053,armorPLint,1)//敵人護(hù)甲
? ? ? >`@x-string.size(armorStr)@,@y@
? ? ? ^,#2E4053,@armorStr@
//己方buffui
func Abuff_ui(x,y)
? var buffstr=" "
? ?string.IndexOf(buffs.string,≡)!-1
? ? buffstr=buffstr+"≡"
? ?string.IndexOf(buffs.string,?)!-1
? ? buffstr=buffstr+"?"
? >`@x@,@y@,#1111CC,@buffstr@
//敵方buffui
//func Bbuff_ui(x,y)?
//時(shí)間ui
func time_ui(x,y)
? >`@x+3@,@y@,T i m e
? draw.Box(x,y,13,7,#FFFFFF,3)
? Tttime++
? >`@x+1@,@y+1@,Best:@time.FormatCasual
? ^(loc.bestTime)@
? >`@x+1@,@y+2@,Avg :@time.FormatCasual
? ^(loc.averageTime)@
? >`@x+1@,@y+3@,TtT:@time.FormatCasual
? ^(Tttime)@
? >`@x+1@,@y+4@,Loop:? @count@
? >`@x+1@,@y+5@,Time:@time.FormatCasual
? ^(totaltime)@
//技能冷卻ui
func CD_ui(x,y)
? draw.Box(x,y+1,15,2,#FFFFFF,0)
? bashcd=item.GetCooldown("bash")/30
? dashcd=item.GetCooldown("dash")/30
? armcd=item.GetCooldown("skeleton_arm")/30
? bladecd=item.GetCooldown("blade")/30
? hammercd=item.GetCooldown("hammer")/30
? ?bashcd=0 //沖鋒盾
? ? >`@x+1@,@y+1@,#rainFF,(>>) RDY
? :??
? ? >`@x+1@,@y+1@,(>>) @bashcd@S
? ?dashcd=0 //沖刺盾
? ? >`@x+10@,@y+1@,#rainFF,(:) RDY
? :??
? ? >`@x+10@,@y+1@,(:) @dashcd@S
? ?armcd=0? //骷髏手
? ? >`@x+1@,@y+2@,#rainFF,ˉ`—≡ RDY
? :? ??
? ? >`@x+1@,@y+2@,ˉ`—≡ @armcd@S
? ?bladecd=0 //墮神
? ? >`@x+10@,@y+2@,#rainFF,—|——/ RDY
? :??
? ? >`@x+10@,@y+2@,—|——/ @bladecd@S
? ?hammercd=0 //大錘
? ? >`@x+1@,@y+3@,#rainFF,——|| RDY
? :??
? ? >`@x+1@,@y+3@,——|| @hammercd@S
//傷害統(tǒng)計(jì)ui
func DMG_ui(x,y)
? >`@x+3@,@y@,DMG Table
? draw.Box(x,y,15,7,#FFFFFF,3)
? ?foe.hp+foe.armor=foe.maxhp+foe.maxarmor
? ? sHP=foe.hp+foe.armor
? ? eHP=foe.hp+foe.armor
? ?foe.hp+foe.armor!eHP
? ? sHP=eHP
? ? eHP=foe.hp+foe.armor
? ? DMG=sHP-eHP
? ? ?DMG>0
? ? ? TtDMG=TtDMG+DMG
? ? ? LoopDMG=LoopDMG+DMG
? ? ? DMGtimes++
//? >`@x+1@,@y+7@,statetime:@foe.time@
//? >`@x+1@,@y+6@,state:@foe.state@
? >`@x+1@,@y+1@,DMG:@DMG@
? var DPS= string.format("DPS:{0,4:0.0}"
? ^,(LoopDMG*1.0/(totaltime/30)))
? var AvgrDMG=string.format("AvgDMG:{0,0:0.0}"
? ^,(LoopDMG*1.0/(DMGtimes+1)))
? >`@x+1@,@y+2@,@DPS@
? >`@x+1@,@y+3@,TtDMG:@transp(TtDMG)@
? >`@x+1@,@y+4@,LoopDMG:@transp(LoopDMG)@
? >`@x+1@,@y+5@,@AvgrDMG@
//戰(zhàn)斗()
//func Battle()
?
func switchon()
? on=!on
//主體
func Main()
? //按下Z鍵可以切換ui開關(guān)
? ?key=bumpLBegin
? ? on = !on
? ?on
? ? CD_ui(16,0)
? ? Ahp_ui(0,25)
? ? Abuff_ui(0,24)
? ? Bhp_ui(72,25)
? ? DMG_ui(0,6)
? ? time_ui(79,0)
Main()
簡單用一用還是可以的,還可以在大部分情況下隨時(shí)手動(dòng)關(guān)閉ui。
限于游戲所給的API,有些東西看似簡單,但實(shí)際上我連正常的傷害統(tǒng)計(jì)都做不出來,不知道作者以后會(huì)不會(huì)添加相關(guān)的接口。
一個(gè)人的想法還是有限的,雖然我還有一些計(jì)劃中的功能要實(shí)現(xiàn),但還是請有想法的人留下自己的想法,即使不懂代碼也沒關(guān)系,我會(huì)盡力嘗試一下能不能做出來,也歡迎私信或評論區(qū)討論。