Bir komutu bir alana özel yapmak

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı DrateX

  • Yeni Üye
  • *
    • İleti: 13
: 26 Ekim 2020, 19:52:11
Bir komutu bir alana özel yapmak istiyorum. Yazdığım kodlar aşağıda belirttim. Kaç saattir üzerinde çalışıyorum ama nerde hata yaptığımı bulamadım.

alan = createColSphere(-1367.68481 -1279.65186 -13.54688, 5)


function salma (player,cmd,state)




if not isElementWithinColShape(player,alan) then
    if not state then
      outputChatBox("2000 Dolara bıçak aldınız!",player,118,238,0)
     giveWeapon(player,4,1)
   takePlayerMoney(player,2000)      
   return end
else
    outputChatBox("Belirtilen alanda değilsiniz!",player,0,255,0,true)
end

     

end    
addCommandHandler("bıcakal",salma)
« Son Düzenleme: 26 Ekim 2020, 19:53:45 Gönderen: DrateX »
 


MTASATURK

Bir komutu bir alana özel yapmak
« : 26 Ekim 2020, 19:52:11 »

Çevrimdışı mantar_

  • Yeni Üye
  • *
    • İleti: 13
Yanıtla #1 : 26 Ekim 2020, 20:21:10
Kod
--[[
  Satır 50: Eğer başka bir taraftan colSphere'i çekmeyeceksen local ekleyebilirsin bu çok az az az cpu artışı sağlar.
  Satır 54: Oyuncudan para alma fonksiyonunu öne çekmek daha iyi olacaktır.
  Satır 52: If kontrollerinde not olumsuzluk getirir, sen if not kullandığın için oyuncu alanda değilse çalışacaktır.
  Satır 62: Mesajda hex kodu kullanmıyorsun colorCode argümanını boş bırakabilirsin.
]]

local alan = createColSphere(-1367.68481 -1279.65186 -13.54688, 5)
local knifePrice = 500 -- Bıçak fiyatı

function buyKnife(player, command, state) -- Player: Oyuncu, Command: Komut, State: Anahtar(/komut anahtar)
  if isElementWithinColShape(player, alan) then -- Eğer oyuncu alanın içindeyse
    if not (state) then -- Eğer oyuncu state parametresini kullanmazsa (/bicak)
      local playerMoney = getPlayerMoney(player) -- Oyuncunun parasını çek
      if (playerMoney >= knifePrice) then -- Eğer oyuncunun parası bıçak almaya yeterliyse
        takePlayerMoney(player, knifePrice)
        giveWeapon(player, 4)
      else
        outputChatBox('Bıçak almak için paran yetersiz! ('..knifePrice..')', player, 255, 0, 0)
      end
    end
  else
    outputChatBox('Bıçak almak için uygun alanda değilsin!', player, 255, 0, 0)
  end
end
addCommandHandler('bicak', buyKnife)
 


Çevrimdışı DrateX

  • Yeni Üye
  • *
    • İleti: 13
Yanıtla #2 : 27 Ekim 2020, 11:59:29
Linki görebilmek için Kayıt olun yada Giriş yapın.
Kod
--[[
  Satır 50: Eğer başka bir taraftan colSphere'i çekmeyeceksen local ekleyebilirsin bu çok az az az cpu artışı sağlar.
  Satır 54: Oyuncudan para alma fonksiyonunu öne çekmek daha iyi olacaktır.
  Satır 52: If kontrollerinde not olumsuzluk getirir, sen if not kullandığın için oyuncu alanda değilse çalışacaktır.
  Satır 62: Mesajda hex kodu kullanmıyorsun colorCode argümanını boş bırakabilirsin.
]]

local alan = createColSphere(-1367.68481 -1279.65186 -13.54688, 5)
local knifePrice = 500 -- Bıçak fiyatı

function buyKnife(player, command, state) -- Player: Oyuncu, Command: Komut, State: Anahtar(/komut anahtar)
  if isElementWithinColShape(player, alan) then -- Eğer oyuncu alanın içindeyse
    if not (state) then -- Eğer oyuncu state parametresini kullanmazsa (/bicak)
      local playerMoney = getPlayerMoney(player) -- Oyuncunun parasını çek
      if (playerMoney >= knifePrice) then -- Eğer oyuncunun parası bıçak almaya yeterliyse
        takePlayerMoney(player, knifePrice)
        giveWeapon(player, 4)
      else
        outputChatBox('Bıçak almak için paran yetersiz! ('..knifePrice..')', player, 255, 0, 0)
      end
    end
  else
    outputChatBox('Bıçak almak için uygun alanda değilsin!', player, 255, 0, 0)
  end
end
addCommandHandler('bicak', buyKnife)
Yazdığınız bu script belirttiğim alanda da "Bıçak almak için uygun alanda değilsin!" diyor.
 


Çevrimdışı mantar_

  • Yeni Üye
  • *
    • İleti: 13
Yanıtla #3 : 27 Ekim 2020, 15:08:50
Hata yok, çalışıyor denedim localhost üzerinde server tarafında yaptığından emin misin?
 


Çevrimdışı Ky

  • Uzman Üye
  • *
    • İleti: 614
Yanıtla #4 : 27 Ekim 2020, 21:54:44
server-side
Kod
bicak_parasi = 2000 -- Buraya bıçağın parası

bicak_bolgesi = createColSphere(-1367.68481 -1279.65186 -13.54688, 5) -- Bıçak alan kordinatları X,Y,Z

function alana_girdi (girenoyuncu,dimension)
if getElementType (girenoyuncu) == "player" then -- eğer alana giren oyuncu ise
setElementData(girenoyuncu,"alan_data",true) -- oyuncunun alan datasını true yaptık
end
end
addEventHandler("onColShapeHit", bicak_bolgesi, alana_girdi)

function alana_cikti (cikanoyuncu,dimension)
if getElementType (cikanoyuncu) == "player" then -- eğer alana giren oyuncu ise
setElementData(cikanoyuncu,"alan_data",false) -- oyuncunun alan datasını false yaptık
end
end
addEventHandler("onColShapeLeave", bicak_bolgesi, alana_cikti)

function bicak_al (oyuncu)
if (getElementData(oyuncu,"alan_data") == true) then -- eğer komutu yazan oyuncunun alan datası true ise
local oyuncu_para = getPlayerMoney(oyuncu) -- oyuncunun parasını çek
if oyuncu_para >= bicak_parasi then -- eğer oyuncunun parası bicak_parasindan büyükse veya eşitse
outputChatBox("[!] Başarılı bir şekilde $2000 dolara bıçak satın aldınız !", oyuncu, 0, 255, 0, true) -- chate yazı at
giveWeapon(oyuncu,4,1) -- oyuncuya silah ver
takePlayerMoney(oyuncu,bicak_parasi) -- oyuncudan bicak_parasini al
else   -- değilse
outputChatBox("[!] Bıçak satın almak paranız yetersiz $2000.", oyuncu, 255, 0, 0, true) -- hata mesajı ver
end
else -- alanda değilse
outputChatBox("[!] Bu komutu kullanmak için bıçak bölgesine gitmeniz gerekiyor.", oyuncu, 255, 0, 0, true) -- hata mesajı ver
end
end   
addCommandHandler("bicakal",bicak_al)
 


Çevrimdışı DrateX

  • Yeni Üye
  • *
    • İleti: 13
Yanıtla #5 : 29 Ekim 2020, 22:31:23
Linki görebilmek için Kayıt olun yada Giriş yapın.
Hata yok, çalışıyor denedim localhost üzerinde server tarafında yaptığından emin misin?
Evet eminim, mtayı silip yüklememe rağmen çözülmedi bu sorun, artık canımı sıkmaya başladı

Mesaj Birleştirildi: 31 Ekim 2020, 20:53:37
Sorunum çözülmüştür. Konu kilitlenebilir
« Son Düzenleme: 31 Ekim 2020, 20:53:37 Gönderen: DrateX »
 


MTASATURK

Ynt: Bir komutu bir alana özel yapmak
« Yanıtla #5 : 29 Ekim 2020, 22:31:23 »