Hey zusammen,
Nun kommen wir zu meinen ersten Beitrag
Hier ist mein erster eigener geschriebener Job, womit man legale, sowie illegale routen erstellen kann.
Man kann in der Config anpassen, ob man Blackmoney oder normales bekommt, ebenso die Menge an Geld.
Ich würde mich freuen wenn Profis sich dies mal angucken und mit ggf. Ratschläge oder Verbesserungsvorschläge geben können wie man etwas besser schreiben kann.
Config.lua
Code
Config = {}
-------------------------------------------
--=======Farm/Job template by VoTeK======--
--==============Version 1.0==============--
-------------------------------------------
-------------------------------
--=======Basic settings========
-------------------------------
Config.Needjob = false -- type true if needed
Config.Job = "" -- type the needed job
Config.Blackmoney = false -- type true or false
Config.money = 250
-------------------------------
--=======Items to Farm========
-------------------------------
Config.Item1 = 'apple'
Config.Item2 = 'applejuice'
Config.Item3 = ''
---------------------------------------------------------------
--=====How long should it take for player to catch a item======
---------------------------------------------------------------
Config.FarmTime = {a = 5000, b = 8000}
--------------------------------------
--=====Circle Zones for the Farm======
--------------------------------------
Config.CirlceZones = {
FarmField = {coords = vector3(2350.70,4998.46,42.85), blip = 238, text = 'Apfelfeld', Notify = 'Drücke E um Äpfel zu sammeln', color = 1, radius = 10, animation = 'world_human_gardener_plant', howmuch = 1, worker = 'Farm', show = true},
FarmVerarbeiter = {coords = vector3(1646.09,4837.05,42.03), blip = 499, text = 'Apfelverarbeiter', Notify = 'Drücke E um Äpfel zu verarbeiten', color = 1, radius = 10, animation = 'WORLD_HUMAN_STAND_MOBILE_FACILITY', howmuch = 1, worker = 'Verar', show = true},
FarmVerkaufer = {coords = vector3(2242.73,5152.96,57.33), blip = 500, text = 'Apfelverkäufer', Notify = 'Drücke E um Apfelsaft zu verkaufen', color = 1, radius = 10, animation = 'WORLD_HUMAN_STAND_MOBILE_FACILITY', howmuch = 1, worker = 'Verka', show = true}
}
Alles anzeigen
Client.lua
Code
ESX = nil
Citizen.CreateThread(function()
while true do
Citizen.Wait(2)
if ESX ~= nil then
else
ESX = nil
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
end
end
end)
local Keys = {
["1"] = 185, ["2"] = 158, ["3"] = 160, ["4"] = 164, ["5"] = 165, ["6"] = 159, ["7"] = 161, ["8"] = 162, ["9"] = 163, ["E"] = 38, ["X"] = 73
}
local farming = false
local verarbeiten = false
local verkaufen = false
local ready = false
-------------------------------
--=======Farming shitt=========
-------------------------------
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
local ped = PlayerPedId()
local pedCoords = GetEntityCoords(ped)
for k,zone in pairs(Config.CirlceZones) do
if #(pedCoords - zone.coords) < 5.0 then
if farming == false and verarbeiten == false and verkaufen == false then
DisplayHelpText(zone.Notify)
if IsControlJustPressed(0, Keys['E']) and IsPedOnFoot(ped) and farming == false and verarbeiten == false and verkaufen == false then
ESX.TriggerServerCallback("Farm:GetJob", function (job)
if Config.Needjob == true then
if job == Config.Job then
if zone.worker == 'Farm'then
ESX.ShowNotification("Beginne zu farmen")
Worker("farming",zone.animation)
end
if zone.worker == 'Verar'then
ESX.ShowNotification("Beginne zu verarbeiten")
Worker("Verar",zone.animation)
end
if zone.worker == 'Verka'then
ESX.ShowNotification("Beginne zu verkaufen")
Worker("Verka",zone.animation)
end
else
ESX.ShowNotification("Du benötigst folgenden Job dafür: "..Config.Job)
end
else
if zone.worker == 'Farm'then
ESX.ShowNotification("Beginne zu farmen")
Worker("farming",zone.animation)
end
if zone.worker == 'Verar'then
ESX.ShowNotification("Beginne zu verarbeiten")
Worker("Verar",zone.animation)
end
if zone.worker == 'Verka'then
ESX.ShowNotification("Beginne zu verkaufen")
Worker("Verka",zone.animation)
end
end
end)
end
end
end
end
if IsControlJustPressed(0, Keys['X']) then
TriggerEvent('Farming:Pedclean')
end
end
end)
function Worker(whattodo,animation)
if whattodo == "farming" then
if IsPedUsingScenario(PlayerPedId(), animation) then
BlockWeaponWheelThisFrame()
else
TaskStartScenarioInPlace(PlayerPedId(), animation, 0, true)
end
farming = true
verarbeiten = false
verkaufen = false
end
if whattodo == "Verar" then
if IsPedUsingScenario(PlayerPedId(), animation) then
BlockWeaponWheelThisFrame()
else
TaskStartScenarioInPlace(PlayerPedId(), animation, 0, true)
end
farming = false
verarbeiten = true
verkaufen = false
end
if whattodo == "Verka" then
if IsPedUsingScenario(PlayerPedId(), animation) then
BlockWeaponWheelThisFrame()
else
TaskStartScenarioInPlace(PlayerPedId(), animation, 0, true)
end
farming = false
verarbeiten = false
verkaufen = true
end
end
Citizen.CreateThread(function()
while true do
Citizen.Wait(50)
local wait = math.random(Config.FarmTime.a , Config.FarmTime.b)
if farming == true and verarbeiten == false and verkaufen == false then
Citizen.Wait(wait)
TriggerServerEvent("Farming:Mentalcatch",Config.Item1, Config.Item2)
end
if farming == false and verarbeiten == true and verkaufen == false then
Citizen.Wait(200)
TriggerServerEvent("Farming:Verarbeiten",Config.Item1, Config.Item2)
end
if farming == false and verarbeiten == false and verkaufen == true then
Citizen.Wait(200)
TriggerServerEvent("Farming:Verkaufen",Config.Item1, Config.Item2,Config.Blackmoney,Config.money)
end
end
end)
-------------------------------
--=====Draw Blip to Users======
-------------------------------
Citizen.CreateThread(function()
for k,zone in pairs(Config.CirlceZones) do
CreateBlipCircle(zone.coords, zone.blip, zone.text, zone.radius, zone.color, zone.show)
end
end)
function CreateBlipCircle(coords, blipnrm, bliptext, radius, color, show)
if show then
local blip = AddBlipForCoord(coords)
SetBlipSprite(blip, blipnrm)
SetBlipAsShortRange(blip, true)
BeginTextCommandSetBlipName("STRING")
AddTextComponentString(bliptext)
EndTextCommandSetBlipName(blip)
end
end
-------------------------------
--=====Draw Text to Users======
-------------------------------
function DisplayHelpText(str)
SetTextComponentFormat("STRING")
AddTextComponentString(str)
DisplayHelpTextFromStringLabel(0, 0, 1, -1)
end
-------------------------------
--======Clean Ped Users========
-------------------------------
RegisterNetEvent('Farming:Pedclean')
AddEventHandler('Farming:Pedclean', function()
ClearPedTasks(PlayerPedId())
ESX.ShowNotification("Du hast aufgehört zu arbeiten")
farming = false
verarbeiten = false
verkaufen = false
end)
Alles anzeigen
Server.lua
Code
ESX = nil
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
RegisterNetEvent('Farming:Mentalcatch')
AddEventHandler('Farming:Mentalcatch', function(item1,item2)
local _source = source
local weight = 2
local much = math.random(1,10)
local xPlayer = ESX.GetPlayerFromId(_source)
if xPlayer.getInventoryItem(item1).count < 100 then
xPlayer.addInventoryItem(item1, much)
else
TriggerClientEvent('esx:showNotification', source, 'Du hast zuviel: '.. xPlayer.getInventoryItem(item1).label)
TriggerClientEvent('Farming:Pedclean',source)
end
end)
RegisterNetEvent('Farming:Verarbeiten')
AddEventHandler('Farming:Verarbeiten', function(item1,item2)
local _source = source
local weight = 2
local much = math.random(1,10)
local xPlayer = ESX.GetPlayerFromId(_source)
if xPlayer.getInventoryItem(item2).count > 100 or xPlayer.getInventoryItem(item1).count < 0 then
if xPlayer.getInventoryItem(item1).count < 0 then TriggerClientEvent('esx:showNotification', source, 'Nicht genug: '.. xPlayer.getInventoryItem(item1).label) end
if xPlayer.getInventoryItem(item2).count > 100 then TriggerClientEvent('esx:showNotification', source, 'Du hast zuviel: '.. xPlayer.getInventoryItem(item2).label) end
TriggerClientEvent('Farming:Pedclean',source)
else
xPlayer.addInventoryItem(item2, 1)
xPlayer.removeInventoryItem(item1, 1)
end
end)
RegisterNetEvent('Farming:Verkaufen')
AddEventHandler('Farming:Verkaufen', function(item1, item2, blackmoney, money)
local _source = source
local weight = 2
local much = math.random(1,10)
local xPlayer = ESX.GetPlayerFromId(_source)
if xPlayer.getInventoryItem(item2).count > 0 then
if blackmoney == true then
xPlayer.addAccountMoney('black_money', money)
else
xPlayer.addMoney(money)
end
xPlayer.removeInventoryItem(item2, 1)
else
if xPlayer.getInventoryItem(item2).count < 0 then TriggerClientEvent('esx:showNotification', source, 'Nicht genug: '.. xPlayer.getInventoryItem(item2).label) end
TriggerClientEvent('Farming:Pedclean',source)
end
end)
ESX.RegisterServerCallback("Farm:GetJob", function(source, cb)
local _source = source
local xPlaxer = ESX.GetPlayerFromId(_source)
local job = xPlaxer.getJob().name
cb(job)
end)
Alles anzeigen
Mit freundlichen Grüßen
VoTeK