10 Aralık 2018, 12:59:15

Gönderen Konu: [YARDIM] Settimer Ayarlı Rectangle  (Okunma sayısı 152 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Violent

  • Yeni Üye
  • *
  • İleti: 33
[YARDIM] Settimer Ayarlı Rectangle
« : 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-TURK | Türkiye'nin En Güncel MTA Platformu

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

Mahlukat

  • VIP
  • *
  • İleti: 386
Ynt: [YARDIM] 'Settimer' ayarlı rectangle.
« Yanıtla #1 : 05 Ekim 2018, 16:41:45 »
Kod: Lua
  1. 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
  1. destroyProgressBar(barid)
barid: Yok edilcek barid

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

Kod: Lua
  1. getBarProgress(barid)
barid: İlerlemesi çekilcek barid

return: barid varsa barın ilerlemesi yok ise false

Kodlar;
Kod: Lua
  1. local barlar = {}
  2. function createProgressBar(x,y,g,u,ms,arkaArenk,icRenk,barRenk,gui)
  3.         local sayi = #barlar +1 -- barlar tablosunun büyüklüğünden +1 sayı ekledik       
  4.         if sayi == 1 then addEventHandler("onClientRender",root,render) end -- eğer 1. bar ise render ekledik
  5.         if not barlar[sayi] then barlar[sayi] = {} end -- eğer sayi barlar tablosunda yoksa içinde tablo açtık
  6.         local b = barlar[sayi] -- kısaltma olsun diye
  7.         b.x,b.y,b.g,b.u = x,y,g,u -- konum vs kaydettik
  8.         b.sure = ms or 10000 -- ms kaydettik
  9.         b.arenk = arkaArenk or tocolor(0,0,0,255) -- renkleri kaydettik
  10.         b.irenk = icRenk or tocolor(175,49,0,255) -- renkleri kaydettik
  11.         b.brenk = barRenk or tocolor(0,200,0,255) -- renkleri kaydettik
  12.         b.ilerleme = 0 -- bar ilerleme 0 kaydettik
  13.         b.postGui = gui or false -- postgui ayarını şey ettik
  14.         b.bitis =  getTickCount()+ms -- bitiş ayarladık
  15.         return sayi
  16. end
  17.  
  18. function destroyProgressBar(barid)
  19.         for i,v in pairs(barlar)  do -- barları döndür
  20.                 if barid == i then -- eğer barid varsa
  21.                         table.remove(barlar,i) -- tablodan çıkar
  22.                         return true
  23.                 end
  24.         end
  25.         return false
  26. end    
  27.  
  28. function getBarProgress(barid)
  29.         if not barlar[barid] then return false end
  30.         return barlar[barid].ilerleme
  31. end
  32.  
  33. function render()
  34.         if #barlar == 0 then removeEventHandler("onClientRender",root,render) end
  35.         local baslangic = getTickCount()
  36.         for i,v in pairs(barlar) do -- tüm barları döndürdük
  37.                 if v.bitis > baslangic then
  38.                         local buzunluk = v.g-10
  39.                         local prog = (v.sure-(v.bitis-baslangic))/v.sure
  40.                         local ilerleme = (buzunluk)*prog
  41.                         dxDrawRectangle(v.x,v.y,v.g,v.u,v.arenk,v.postGui) -- en arka
  42.                         dxDrawRectangle(v.x+5,v.y+5,v.g-10,v.u-10,v.irenk,v.postGui) -- ic katman
  43.                         dxDrawRectangle(v.x+5,v.y+5,ilerleme,v.u-10,v.brenk,v.postGui) -- dolucak bar
  44.                         local progress = math.floor(prog*100)
  45.                         barlar[i].ilerleme = progress
  46.                         local puzun = dxGetTextWidth(progress,1,"clear")
  47.                         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)
  48.                 else
  49.                         table.remove(barlar,i)
  50.                 end                    
  51.         end
  52. end

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

Not: bar dolunca kendisi kaybolur
« Son Düzenleme: 05 Ekim 2018, 18:33:10 Gönderen: Mahlukat »
Linkleri Görebilmek İçin Kayıt Olun veya Giriş Yapın
 
Mesajı Beğenenler: Paradox

Violent

  • Yeni Üye
  • *
  • İleti: 33
Ynt: [YARDIM] \'Settimer\' ayarlı rectangle.
« 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 »
 

Mahlukat

  • VIP
  • *
  • İleti: 386
Ynt: [YARDIM] Settimer Ayarlı Rectangle
« Yanıtla #3 : 09 Ekim 2018, 10:58:58 »
Kod: Lua
  1. --server
  2. function createProgressBar(oyuncu)
  3.         triggerClientEvent(oyuncu,"PB:createProgressBar",oyuncu)
  4. end
  5.  
  6. addCommandHandler("bar",function(oyuncu)
  7.         createProgressBar(oyuncu)
  8. end)
Kod: Lua
  1. --client
  2. local sx,sy = guiGetScreenSize()
  3. local pg,pu = 200,25
  4. local x,y = (sx-pg)/2,(sy-pu)/2
  5.  
  6. addEvent("PB:createProgressBar",true)
  7. addEventHandler("PB:createProgressBar", root, function()
  8.         local bar = createProgressBar(x,y,pg,pu,10000,tocolor(0,0,0,255),tocolor(175,49,0,255),tocolor(0,200,0,255),true)
  9.         setTimer(outputChatBox,10000,1,bar.." #FFFFFFId'li bar doldu",255,0,0,true)
  10. end)
Linkleri Görebilmek İçin Kayıt Olun veya Giriş Yapın
 

Violent

  • Yeni Üye
  • *
  • İleti: 33
Ynt: [YARDIM] Settimer Ayarlı Rectangle
« 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