[KOD] Silah Shaderı

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı ertrldtcu

  • Uzman Üye
  • *
    • İleti: 589
: 02 Eylül 2020, 00:25:15
/ışıklısilah ile kendi silahınızı shader ile kaplayabilirsiniz (evet sadece kendi silahın)
Linki görebilmek için Kayıt olun yada Giriş yapın. ile Linki görebilmek için Kayıt olun yada Giriş yapın. hakkında münazara ederken silahtaki kayan parlaklığın diğer silahlarda da güzel duracağına karar verdik. shader ile olduğunu sanmıştık ama silahın modeli (txd,dff) ile alakalıydı ve bende accık shader öğrenmek istedim.
sonuç; kayan parıltı shaderını yaptım (tek satırlık bişe zaten) ama tembel rockstar modçuları silah kaplamalarını yamuk yumuk yaptığı için istediğim gibi olmadı. sonra Linki görebilmek için Kayıt olun yada Giriş yapın. scriptindeki bi shaderdan modelin kenarlarını çizgilerle kaplamayı çaldım. ortaya böyle bomboş bişi çıktı.

sadece 1 satır eklenmesiyle artık silahın diğer tarafındaki çizgiler gözükmediği için daha temiz bi görüntü elde ediliyor, yey

eski:
Linki görebilmek için Kayıt olun yada Giriş yapın.

yeni:
Linki görebilmek için Kayıt olun yada Giriş yapın.

Kod: client.lua
textureList = {
-- "texture ismi 1", "texture ismi 2", ...
}

-- silah texture isimlerini otomatik tabloya ekleme;
for i=321,372 do -- model id'leri (silah model id'leri 321 ile 372 arasında)
local textures = engineGetModelTextureNames(tostring(i)) -- model texturelarını çektik
for j=1,#textures do
if not textures[j]:find("icon") and not textures[j]:find("muzzle") then -- texture isminde "icon" (hud iconu) ve "muzzle" (namlu ateşi) yoksa
table.insert(textureList,textures[j]) -- texture isimlerini tuttuğumuz tabloya ekledik
end
end
end

addCommandHandler("ışıklısilah",function()
if getElementData(localPlayer,"dtc:silahShader") then -- oyuncuda data varsa
setElementData(localPlayer,"dtc:silahShader",false) -- datayı false yaptık (sildik)
else -- oyuncuda data yoksa
setElementData(localPlayer,"dtc:silahShader",true) -- datayı true yaptık (ekledik)
end
end)

function setPlayerWeaponShaderState(player,state)
if not shader then -- eğer shader yoksa (performansta düşüş olmaması için ilk kullanılana kadar shaderı oluşturmadık)
shader = dxCreateShader("shader.fx",nil,nil,true,"all")
end
if state then -- eğer true ise (açılacaksa)
for i=1,#textureList do
engineApplyShaderToWorldTexture(shader,textureList[i],player) -- oyuncuya shaderı uyguladık
end
else -- true değilse (açılmayacaksa)
for i=1,#textureList do
engineRemoveShaderFromWorldTexture(shader,textureList[i],player) -- oyuncudan shaderı sildik
end
end
end

addEventHandler("onClientElementDataChange",root,function(key,_,new) -- element datası değiştiğinde
if key == "dtc:silahShader" and getElementType(source) == "player" then -- data ismi shader datası ve değeri değişen element oyuncu ise
setPlayerWeaponShaderState(source,new) -- datayı direkt olarak fonksiyonumuza gönderiyoruz
-- datayı set yaparken true veya false yaptığımız için fonksiyona direkt göndermemizde herhangi bi sorun yok
end
end)

-- performansta tasarruf etmek için stream alanında olmayan (görünmeyen, uzakta olan) oyunculardan shaderı kaldırıyoruz

addEventHandler("onClientElementStreamIn",root,function() -- element stream olduğunda
if getElementType(source) == "player" and getElementData(source,"dtc:silahShader") then -- eğer element oyuncu ve shader datası varsa
setPlayerWeaponShaderState(source,true) -- oyuncuya shader ekledik
end
end)

addEventHandler("onClientElementStreamOut",root,function() -- element stream alanından çıktığında
if getElementType(source) == "player" and getElementData(source,"dtc:silahShader") then -- eğer element oyuncu ve shader datası varsa
setPlayerWeaponShaderState(source,false) -- oyuncudan shaderı kaldırdık
end
end)

Kod: shader.fx
// ertrldtcu
float gTime : TIME;
float4 color = float4( 1.0, 0.3, 0.0, 0.8);
// Lua'dan rengini değiştirmek için;
// dxSetShaderValue( shader , "color" , r/255 , g/255 , b/255, a/255 )
float4 pixelShader(float2 pos : TEXCOORD0) : COLOR0 {
  float c = 1.-distance(abs(sin(pos.x + gTime)),1.)*20.;
  return float4(color.r*c,color.g*c,color.b*c,color.a*c);
}
 
technique dtc {
  pass Pass0 {
    FillMode = 2;
    CullMode = 3;
    PixelShader = compile ps_2_0 pixelShader();
  }
}
boş adam boş script yapar
« Son Düzenleme: 04 Eylül 2020, 16:02:58 Gönderen: ertrldtcu »
system
 
Mesajı Beğenenler: #Serius, Mahlukat, Yavuzay, Leaver, yafes, wicky, kedibakgit


MTASATURK

[KOD] Silah Shaderı
« : 02 Eylül 2020, 00:25:15 »

Çevrimdışı Leaver

  • laravel <3
  • Uzman Üye
  • *
    • İleti: 511
    • Esppa Software
Yanıtla #1 : 02 Eylül 2020, 12:04:42
Eline sağlık.
 


Çevrimdışı Ky

  • Uzman Üye
  • *
    • İleti: 614
Yanıtla #2 : 03 Eylül 2020, 02:34:25
Ellerine sağlık çok yararlı bir script benim açımdan.
 
Mesajı Beğenenler: ertrldtcu


Çevrimdışı Minato

  • Bilgin Üye
  • *
    • İleti: 285
Yanıtla #3 : 03 Eylül 2020, 15:02:55
Başarılı eline sağlık  :-*
DRIFT MASTERS
 
Mesajı Beğenenler: ertrldtcu


Çevrimdışı Mahlukat

  • Uzman Üye
  • *
    • İleti: 637
Yanıtla #4 : 03 Eylül 2020, 15:16:53
bu ne
Linki görebilmek için Kayıt olun yada Giriş yapın.
 
Mesajı Beğenenler: Leaver


Çevrimdışı Core^

  • inAkTiF
  • Acemi Üye
  • *
    • İleti: 106
  • inaktiv
Yanıtla #5 : 03 Eylül 2020, 20:32:54
boş adam boş kod yazar
Eskisi gibi fazla aktif değilim, ulaşmak isterseniz Discordum: Core#7982[/url]
Client > Server
 
Mesajı Beğenenler: ertrldtcu, Leaver, Ghostemane


MTASATURK

Ynt: [KOD] Silah Shaderı
« Yanıtla #5 : 03 Eylül 2020, 20:32:54 »