- Katılım
- 5 yıl 6 ay 13 gün
- Mesajlar
- 1,116
- Discord
- F3D3R4LL#2433
Merhaba arkadaşlar zaten kodlamayla biraz ilgisi olanlar bu paylaşımı yararlı bulmayabilir fakat ben o diğer kesimi rahatlatmak için böyle bir girişimde bulundum. Size çete,mafya gibi mesleklerde nasıl ayarlama yapılabileceğini göstereceğim. (Yetki ayarlamaları)
Rütbe yetkilerini kullanmak istiyorsanız öncelikle yukarıda local kısımda playerData'yı tanımlamanız gerekicektir. Bu mesleklerde tanımlı olduğu için tekrarda tanımlanması gerekmiyor.
Mesela Çete mesleğinde herkesin aramasını değilde sadece patronun ve sağ kolun aramasını istiyorsunuz. Bunun için client.lua yada client>main.lua'ya giriş yapmanız gerekiyor
if data2.current.value == 'body_search' then --(Kod bloğu menüden body_search seçilip seçilmediğini kontrol ediyor bu sırada biz kontrol mekanizmamızı ekleriz.
OpenBodySearchMenu(player) --(Şart gerçekleştikten sonra üst arama menüsü açıyor)
end
if data2.current.value == 'body_search' and PlayerData.job.grade_name == 'boss' then --(boss yazan yere meslek seviyesinin ismi)
OpenBodySearchMenu(player)
end
if data2.current.value == 'body_search' and PlayerData.job.grade_name == 'consiglere' then --(consiglere yazan yere meslek seviyesinin ismi)
OpenBodySearchMenu(player)
end
Depoyu rütbeye göre ayarlamak istersek
Benim ballas adlı çetemde bulunan sistem bu eğer farklı bir sistem bulunuyorsa sizde ki sanmıyorum ondada yardımcı olabilirim.
if Config.EnableArmoryManagement then
local elements = {
{label = 'Prendre Objet', value = 'get_stock'},
{label = 'Déposer objet', value = 'put_stock'},
{label = _U('get_weapon'), value = 'get_weapon'}),
{label = _U('put_weapon'), value = 'put_weapon'})
}
if PlayerData.job.grade_name == 'boss' then
table.insert(elements, {label = _U('buy_weapons'), value = 'buy_weapons'})
end
Burada patrona ait menülere eklemek istiyorsak yapacağımız işlem şudur virgüllere dikkat edin diğer türlü kodunuz çalışmamasına sebep olabilir. "--" sonrasında yazanları koda dahil etmez yorum satırı haline getirir.
if Config.EnableArmoryManagement then
local elements = {
{label = 'Prendre Objet', value = 'get_stock'},
{label = 'Déposer objet', value = 'put_stock'}
--{label = _U('get_weapon'), value = 'get_weapon'})
-- {label = _U('put_weapon'), value = 'put_weapon'})
}
if PlayerData.job.grade_name == 'boss' then
table.insert(elements, {label = _U('buy_weapons'), value = 'buy_weapons'})
table.insert(elements, {label = _U('get_weapon'), value = 'get_weapon'})
table.insert(elements, {label = _U('put_weapon'), value = 'put_weapon'})
end
Çetelerin üyelerin üstünden ne el koyduğuna bakmak istiyorsanız. Sql log tutabilirsiniz. El koyduğu para,item,silah görüntülenmektedir.
-Server>main.lua açılır
targetXPlayer.removeInventoryItem(itemName, amount)
sourceXPlayer.addInventoryItem (itemName, amount)
-Yukarıdaki kodlardan biri aratılır.
-Aşağıdaki kod bloğu hemen altına yapıştırılır.
MySQL.Async.execute('INSERT INTO ballas (Alan, Tur, Sayi, Kimden)VALUES (@Alan, @Tur, @Sayi, @Kimden) ',
{
['@Alan'] = sourceXPlayer.name,
['@Tur'] = itemName,
['@Sayi'] = amount,
['@Kimden'] = targetXPlayer.name
})
Yani şöyle olacaktır.
if targetItem.count > 0 and targetItem.count <= amount then
-- can the player carry the said amount of x item?
if sourceItem.limit ~= -1 and (sourceItem.count + amount) > sourceItem.limit then
TriggerClientEvent('esx:showNotification', _source, _U('quantity_invalid'))
else
targetXPlayer.removeInventoryItem(itemName, amount)
sourceXPlayer.addInventoryItem (itemName, amount)
TriggerClientEvent('esx:showNotification', _source, _U('you_confiscated', amount, sourceItem.label, targetXPlayer.name))
TriggerClientEvent('esx:showNotification', target, _U('got_confiscated', amount, sourceItem.label, sourceXPlayer.name))
MySQL.Async.execute('INSERT INTO ballas (Alan, Tur, Sayi, Kimden)VALUES (@Alan, @Tur, @Sayi, @Kimden) ',
{
['@Alan'] = sourceXPlayer.name,
['@Tur'] = itemName,
['@Sayi'] = amount,
['@Kimden'] = targetXPlayer.name
})
end
else
TriggerClientEvent('esx:showNotification', _source, _U('quantity_invalid'))
end
-- Bu sadece kimden hangi iteme el koyduğunu bulmak içindir.
-- Kara para takip etmek için bu şekilde yapmamız gerekir. (item_account)
elseif itemType == 'item_account' then
targetXPlayer.removeAccountMoney(itemName, amount)
sourceXPlayer.addAccountMoney (itemName, amount)
TriggerClientEvent('esx:showNotification', _source, _U('you_confiscated_account', amount, itemName, targetXPlayer.name))
TriggerClientEvent('esx:showNotification', target, _U('got_confiscated_account', amount, itemName, sourceXPlayer.name))
MySQL.Async.execute('INSERT INTO ballas (Alan, Tur, Sayi, Kimden)VALUES (@Alan, @Tur, @Sayi, @Kimden) ',
{
['@Alan'] = sourceXPlayer.name,
['@Tur'] = itemName,
['@Sayi'] = amount,
['@Kimden'] = targetXPlayer.name
})
- Silahları takip etmek içinse böyle
elseif itemType == 'item_weapon' then
if amount == nil then amount = 0 end
targetXPlayer.removeWeapon(itemName, amount)
sourceXPlayer.addWeapon (itemName, amount)
TriggerClientEvent('esx:showNotification', _source, _U('you_confiscated_weapon', ESX.GetWeaponLabel(itemName), targetXPlayer.name, amount))
TriggerClientEvent('esx:showNotification', target, _U('got_confiscated_weapon', ESX.GetWeaponLabel(itemName), amount, sourceXPlayer.name))
MySQL.Async.execute('INSERT INTO ballas (Alan, Tur, Sayi, Kimden)VALUES (@Alan, @Tur, @Sayi, @Kimden) ',
{
['@Alan'] = sourceXPlayer.name,
['@Tur'] = itemName,
['@Sayi'] = amount,
['@Kimden'] = targetXPlayer.name
})
end
Aşağıdaki sql sorgusunu databasenizde çalıştırmanız gerekiyor.
CREATE TABLE `ballas` (
`Alan` VARCHAR(50) NULL DEFAULT NULL,
`Tur` VARCHAR(50) NULL DEFAULT NULL,
`Sayi` INT(11) NULL DEFAULT NULL,
`Kimden` VARCHAR(50) NULL DEFAULT NULL,
`Time` TIMESTAMP NULL DEFAULT current_timestamp()
)
COMMENT='Item Transfer Information'
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
;
- Konuyu çok dağınık yazdığımın farkındayım umarım faydalı olmuştur.
Rütbe yetkilerini kullanmak istiyorsanız öncelikle yukarıda local kısımda playerData'yı tanımlamanız gerekicektir. Bu mesleklerde tanımlı olduğu için tekrarda tanımlanması gerekmiyor.
Mesela Çete mesleğinde herkesin aramasını değilde sadece patronun ve sağ kolun aramasını istiyorsunuz. Bunun için client.lua yada client>main.lua'ya giriş yapmanız gerekiyor
if data2.current.value == 'body_search' then --(Kod bloğu menüden body_search seçilip seçilmediğini kontrol ediyor bu sırada biz kontrol mekanizmamızı ekleriz.
OpenBodySearchMenu(player) --(Şart gerçekleştikten sonra üst arama menüsü açıyor)
end
if data2.current.value == 'body_search' and PlayerData.job.grade_name == 'boss' then --(boss yazan yere meslek seviyesinin ismi)
OpenBodySearchMenu(player)
end
if data2.current.value == 'body_search' and PlayerData.job.grade_name == 'consiglere' then --(consiglere yazan yere meslek seviyesinin ismi)
OpenBodySearchMenu(player)
end
Depoyu rütbeye göre ayarlamak istersek
Benim ballas adlı çetemde bulunan sistem bu eğer farklı bir sistem bulunuyorsa sizde ki sanmıyorum ondada yardımcı olabilirim.
if Config.EnableArmoryManagement then
local elements = {
{label = 'Prendre Objet', value = 'get_stock'},
{label = 'Déposer objet', value = 'put_stock'},
{label = _U('get_weapon'), value = 'get_weapon'}),
{label = _U('put_weapon'), value = 'put_weapon'})
}
if PlayerData.job.grade_name == 'boss' then
table.insert(elements, {label = _U('buy_weapons'), value = 'buy_weapons'})
end
Burada patrona ait menülere eklemek istiyorsak yapacağımız işlem şudur virgüllere dikkat edin diğer türlü kodunuz çalışmamasına sebep olabilir. "--" sonrasında yazanları koda dahil etmez yorum satırı haline getirir.
if Config.EnableArmoryManagement then
local elements = {
{label = 'Prendre Objet', value = 'get_stock'},
{label = 'Déposer objet', value = 'put_stock'}
--{label = _U('get_weapon'), value = 'get_weapon'})
-- {label = _U('put_weapon'), value = 'put_weapon'})
}
if PlayerData.job.grade_name == 'boss' then
table.insert(elements, {label = _U('buy_weapons'), value = 'buy_weapons'})
table.insert(elements, {label = _U('get_weapon'), value = 'get_weapon'})
table.insert(elements, {label = _U('put_weapon'), value = 'put_weapon'})
end
Çetelerin üyelerin üstünden ne el koyduğuna bakmak istiyorsanız. Sql log tutabilirsiniz. El koyduğu para,item,silah görüntülenmektedir.
-Server>main.lua açılır
targetXPlayer.removeInventoryItem(itemName, amount)
sourceXPlayer.addInventoryItem (itemName, amount)
-Yukarıdaki kodlardan biri aratılır.
-Aşağıdaki kod bloğu hemen altına yapıştırılır.
MySQL.Async.execute('INSERT INTO ballas (Alan, Tur, Sayi, Kimden)VALUES (@Alan, @Tur, @Sayi, @Kimden) ',
{
['@Alan'] = sourceXPlayer.name,
['@Tur'] = itemName,
['@Sayi'] = amount,
['@Kimden'] = targetXPlayer.name
})
Yani şöyle olacaktır.
if targetItem.count > 0 and targetItem.count <= amount then
-- can the player carry the said amount of x item?
if sourceItem.limit ~= -1 and (sourceItem.count + amount) > sourceItem.limit then
TriggerClientEvent('esx:showNotification', _source, _U('quantity_invalid'))
else
targetXPlayer.removeInventoryItem(itemName, amount)
sourceXPlayer.addInventoryItem (itemName, amount)
TriggerClientEvent('esx:showNotification', _source, _U('you_confiscated', amount, sourceItem.label, targetXPlayer.name))
TriggerClientEvent('esx:showNotification', target, _U('got_confiscated', amount, sourceItem.label, sourceXPlayer.name))
MySQL.Async.execute('INSERT INTO ballas (Alan, Tur, Sayi, Kimden)VALUES (@Alan, @Tur, @Sayi, @Kimden) ',
{
['@Alan'] = sourceXPlayer.name,
['@Tur'] = itemName,
['@Sayi'] = amount,
['@Kimden'] = targetXPlayer.name
})
end
else
TriggerClientEvent('esx:showNotification', _source, _U('quantity_invalid'))
end
-- Bu sadece kimden hangi iteme el koyduğunu bulmak içindir.
-- Kara para takip etmek için bu şekilde yapmamız gerekir. (item_account)
elseif itemType == 'item_account' then
targetXPlayer.removeAccountMoney(itemName, amount)
sourceXPlayer.addAccountMoney (itemName, amount)
TriggerClientEvent('esx:showNotification', _source, _U('you_confiscated_account', amount, itemName, targetXPlayer.name))
TriggerClientEvent('esx:showNotification', target, _U('got_confiscated_account', amount, itemName, sourceXPlayer.name))
MySQL.Async.execute('INSERT INTO ballas (Alan, Tur, Sayi, Kimden)VALUES (@Alan, @Tur, @Sayi, @Kimden) ',
{
['@Alan'] = sourceXPlayer.name,
['@Tur'] = itemName,
['@Sayi'] = amount,
['@Kimden'] = targetXPlayer.name
})
- Silahları takip etmek içinse böyle
elseif itemType == 'item_weapon' then
if amount == nil then amount = 0 end
targetXPlayer.removeWeapon(itemName, amount)
sourceXPlayer.addWeapon (itemName, amount)
TriggerClientEvent('esx:showNotification', _source, _U('you_confiscated_weapon', ESX.GetWeaponLabel(itemName), targetXPlayer.name, amount))
TriggerClientEvent('esx:showNotification', target, _U('got_confiscated_weapon', ESX.GetWeaponLabel(itemName), amount, sourceXPlayer.name))
MySQL.Async.execute('INSERT INTO ballas (Alan, Tur, Sayi, Kimden)VALUES (@Alan, @Tur, @Sayi, @Kimden) ',
{
['@Alan'] = sourceXPlayer.name,
['@Tur'] = itemName,
['@Sayi'] = amount,
['@Kimden'] = targetXPlayer.name
})
end
Aşağıdaki sql sorgusunu databasenizde çalıştırmanız gerekiyor.
CREATE TABLE `ballas` (
`Alan` VARCHAR(50) NULL DEFAULT NULL,
`Tur` VARCHAR(50) NULL DEFAULT NULL,
`Sayi` INT(11) NULL DEFAULT NULL,
`Kimden` VARCHAR(50) NULL DEFAULT NULL,
`Time` TIMESTAMP NULL DEFAULT current_timestamp()
)
COMMENT='Item Transfer Information'
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
;
- Konuyu çok dağınık yazdığımın farkındayım umarım faydalı olmuştur.