MTASA TÜRK
Türkiye'nin En Güncel MTA Platformu


[YARDIM] Settimer Ayarlı Rectangle

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı Violent

  • Yeni Üye
  • *
    • İleti: 42
: 04 Ekim 2018, 20:39:54
Başlıkta anlatabildim mi bilmiyorum fakat settimer zamanı boyunca dolan bir bar yapmak istiyorum. Yardım edecek arkadaşlara şimdiden teşekkürlerimi sunuyorum.
« Son Düzenleme: 08 Ekim 2018, 02:56:04 Gönderen: Narkoz »
 


MTASA TÜRK

[YARDIM] Settimer Ayarlı Rectangle
« : 04 Ekim 2018, 20:39:54 »

Çevrimdışı Mahlukat

  • Scripter
  • *
    • İleti: 446
Yanıtla #1 : 05 Ekim 2018, 16:41:45
Kod: lua
createProgressBar(x,y,g,u,ms,arkaArenk,icRenk,barRenk,gui)
x: Bar x konumu int
y: Bar y konumu int
g: Bar genişliği int
u: Bar uzunluğu int
ms: Bar kaç milisaniyede dolcak (standart: 10000) int
arkaRenk: Bar arka plan rengi (standart:  tocolor(0,0,0,255) ) int
icRenk: Bar ic kısım rengi (standart:  tocolor(175,49,0,255) ) int
barRenk: İlerleyen bar rengi (standart:  tocolor(0,200,0,255) ) int
gui: Bar gui elementlerin üstündemi görüncek (standart:  false) boolean

return: bar id

Kod: lua
destroyProgressBar(barid)
barid: Yok edilcek barid

return: işlem başarılı ise true değilse false

Kod: lua
getBarProgress(barid)
barid: İlerlemesi çekilcek barid

return: barid varsa barın ilerlemesi yok ise false

Kodlar;
Kod: lua
local barlar = {}
function createProgressBar(x,y,g,u,ms,arkaArenk,icRenk,barRenk,gui)
local sayi = #barlar +1 -- barlar tablosunun büyüklüğünden +1 sayı ekledik
if sayi == 1 then addEventHandler("onClientRender",root,render) end -- eğer 1. bar ise render ekledik
if not barlar[sayi] then barlar[sayi] = {} end -- eğer sayi barlar tablosunda yoksa içinde tablo açtık
local b = barlar[sayi] -- kısaltma olsun diye
b.x,b.y,b.g,b.u = x,y,g,u -- konum vs kaydettik
b.sure = ms or 10000 -- ms kaydettik
b.arenk = arkaArenk or tocolor(0,0,0,255) -- renkleri kaydettik
b.irenk = icRenk or tocolor(175,49,0,255) -- renkleri kaydettik
b.brenk = barRenk or tocolor(0,200,0,255) -- renkleri kaydettik
b.ilerleme = 0 -- bar ilerleme 0 kaydettik
b.postGui = gui or false -- postgui ayarını şey ettik
b.bitis =  getTickCount()+ms -- bitiş ayarladık
return sayi
end

function destroyProgressBar(barid)
for i,v in pairs(barlar)  do -- barları döndür
if barid == i then -- eğer barid varsa
table.remove(barlar,i) -- tablodan çıkar
return true
end
end
return false
end

function getBarProgress(barid)
if not barlar[barid] then return false end
return barlar[barid].ilerleme
end

function render()
        if #barlar == 0 then removeEventHandler("onClientRender",root,render) end
local baslangic = getTickCount()
for i,v in pairs(barlar) do -- tüm barları döndürdük
if v.bitis > baslangic then
local buzunluk = v.g-10
local prog = (v.sure-(v.bitis-baslangic))/v.sure
local ilerleme = (buzunluk)*prog
dxDrawRectangle(v.x,v.y,v.g,v.u,v.arenk,v.postGui) -- en arka
dxDrawRectangle(v.x+5,v.y+5,v.g-10,v.u-10,v.irenk,v.postGui) -- ic katman
dxDrawRectangle(v.x+5,v.y+5,ilerleme,v.u-10,v.brenk,v.postGui) -- dolucak bar
local progress = math.floor(prog*100)
barlar[i].ilerleme = progress
local puzun = dxGetTextWidth(progress,1,"clear")
dxDrawText(progress.."%",(v.x+(v.g)/2)-puzun,(v.y+(v.u)/2)-8,v.g,v.u,tocolor(255,255,255,255),1,"clear",nil,nil,nil,nil,v.postGui)
else
table.remove(barlar,i)
end
end
end

Örnek;
Kod: lua
local sx,sy = guiGetScreenSize()
local pg,pu = 200,25
local x,y = (sx-pg)/2,(sy-pu)/2
local bar = createProgressBar(x,y,pg,pu,10000,tocolor(0,0,0,255),tocolor(175,49,0,255),tocolor(0,200,0,255),true)
setTimer(outputChatBox,10000,1,bar.." #FFFFFFId'li bar doldu",255,0,0,true)
setTimer(function()
local i = getBarProgress(bar)
print(i)
end,5000,1)

Not: bar dolunca kendisi kaybolur
« Son Düzenleme: 05 Ekim 2018, 18:33:10 Gönderen: Mahlukat »
Linki görebilmek için Kayıt olun yada Giriş yapın.
 
Mesajı Beğenenler: Paradox


Çevrimdışı Violent

  • Yeni Üye
  • *
    • İleti: 42
Yanıtla #2 : 08 Ekim 2018, 00:29:40
triggerClientEvent denedim fakat sadece sistem startlandığında çalışıyor. Server taraflı dizilimle nasıl bağdaştırabilirim ?

Mesaj Birleştirildi: 08 Ekim 2018, 19:02:21
Mahlukat nasıl yapabileceğimi söylersen sevinirim kardeşim :)
« Son Düzenleme: 08 Ekim 2018, 19:02:21 Gönderen: Violent »
 


Çevrimdışı Mahlukat

  • Scripter
  • *
    • İleti: 446
Yanıtla #3 : 09 Ekim 2018, 10:58:58
Kod: lua
--server
function createProgressBar(oyuncu)
triggerClientEvent(oyuncu,"PB:createProgressBar",oyuncu)
end

addCommandHandler("bar",function(oyuncu)
createProgressBar(oyuncu)
end)
Kod: lua
--client
local sx,sy = guiGetScreenSize()
local pg,pu = 200,25
local x,y = (sx-pg)/2,(sy-pu)/2

addEvent("PB:createProgressBar",true)
addEventHandler("PB:createProgressBar", root, function()
local bar = createProgressBar(x,y,pg,pu,10000,tocolor(0,0,0,255),tocolor(175,49,0,255),tocolor(0,200,0,255),true)
setTimer(outputChatBox,10000,1,bar.." #FFFFFFId'li bar doldu",255,0,0,true)
end)
Linki görebilmek için Kayıt olun yada Giriş yapın.
 


Çevrimdışı Violent

  • Yeni Üye
  • *
    • İleti: 42
Yanıtla #4 : 09 Ekim 2018, 12:12:38
Çok teşekkür ettim. Ben de genel olarak böyle yapmıştım fakat trigger'daki 2. thePlayer döngüsünü koymamışım. :)
 
Mesajı Beğenenler: Mahlukat