Jump to content

Помогите с работой фермера


Recommended Posts

Client.lua


local dxMarker = createMarker(markerT[1],markerT[2],markerT[3]-0.1, "cylinder", 1, 255, 255, 255, 0)
local ped = createPed(skinTractor,markerT[1],markerT[2],markerT[3])
setElementRotation(ped, 0, 0, 90)

addEventHandler( "onClientRender", root, function ()
       local x, y, z = getElementPosition(dxMarker)
       local Mx, My, Mz = getCameraMatrix()
        if (getDistanceBetweenPoints3D(x, y, z, Mx, My, Mz) <= 20) then
           local WorldPositionX, WorldPositionY = getScreenFromWorldPosition(x, y, z +1, 0.07)
            if (WorldPositionX and WorldPositionY) then
			    dxDrawText("Работа тракториста", WorldPositionX - 1, WorldPositionY + 1, WorldPositionX - 1, WorldPositionY + 1, tocolor(0, 0, 0, 255), 1.52, "default-bold", "center", "center", false, false, false, false, false)
			    dxDrawText("Работа тракториста", WorldPositionX - 1, WorldPositionY + 1, WorldPositionX - 1, WorldPositionY + 1, tocolor(255, 255, 255, 255), 1.50, "default-bold", "center", "center", false, false, false, false, false)
            end
      end
end 
)

local markerState = 1
function getMarkerCurrentState ()
    return markerState
end

function updateMarkerCurrentState ()
    markerState = markerState + 1
end

function restoreMarkerCurrentState ()
    markerState = 1
end

function isMarchEnd ()
	if getMarkerCurrentState () >= #tractorMarks then
	    return true
	else
	    return false
	end
end

local markerT = createMarker(markerT[1],markerT[2],markerT[3]-1, "cylinder", 1, 255, 255, 255, 0) --Создание маркера для устройства 
local blip = createBlipAttachedTo(markerT, 38, 2, 255, 255, 255, 255, 0, 150)

function centerWindow ( center_window ) --Создание GUI устройства
	local sx, sy = guiGetScreenSize ( )
	local windowW, windowH = guiGetSize ( center_window, false )
	local x, y = ( sx - windowW ) / 2, ( sy - windowH ) / 2
	guiSetPosition ( center_window, x, y, false )
end

local sw,sh = guiGetScreenSize()
local window={}
local label={}
local button={}

wndTra = guiCreateWindow(0,0,400,120,"Работа трактористом ",false)
centerWindow(wndTra)
guiSetVisible(wndTra,false)

labeTra = guiCreateLabel(5,25,390,50,"Добро пожаловать на работу трактористом.\nВаша задача собирать траву на поле.",false,wndTra)
guiSetFont(labeTra, "default-bold-small")
guiLabelSetHorizontalAlign(labeTra, "center", false)

buttonTra1 = guiCreateButton(10,70,180,35,"Начать",false,wndTra)
guiSetFont(buttonTra1,"default-bold-small")
guiSetProperty(buttonTra1, "NormalTextColour", "FF00FF00")

buttonTra2 = guiCreateButton(210,70,180,35,"Закрыть",false,wndTra)
guiSetFont(buttonTra2,"default-bold-small")
guiSetProperty(buttonTra2, "NormalTextColour", "FFFF0000")

function createMarkerTractor(player) --Создание маркера сбора 
    if player == getLocalPlayer() then
        m = tractorMarks[ getMarkerCurrentState () ]
		updateMarkerCurrentState ()
        local marker = createMarker(m[1],m[2],m[3]-1, "cylinder", 2, 0, 255, 0, 80)
        setElementData(marker,"tractor_mark",true)
        setElementData(player,"tractor_mark",marker)
        local blip = createBlip(m[1],m[2],m[3],41,3)
        setElementData(player,"tractor_blip",blip)
        local obj = createObject(855,m[1],m[2],m[3]-2)
        setObjectScale(obj, 1.0)
        setElementCollisionsEnabled (obj, false)
        setElementData(player,"tractor_obj",obj)
    end
end

function deleteMarkerTractor(player) --Удаление маркера сора
    if player == getLocalPlayer() then
        local marker = getElementData(player,"tractor_mark")
        local blip = getElementData(player,"tractor_blip")
        local obj = getElementData(player,"tractor_obj")
        if marker then if isElement(marker) then destroyElement(marker) end end
        if blip then if isElement(blip) then destroyElement(blip) end end
        if obj then if isElement(obj) then destroyElement(obj) end end
    end
end
addEvent("deleteMarkerTractor", true)
addEventHandler("deleteMarkerTractor", getRootElement(), deleteMarkerTractor)

function startClick() --Сбор 
    local player = getLocalPlayer()
    if (source == buttonTra1) then
        guiSetVisible(wndTra,false)
        showCursor(false)
        local state = getElementData(player,"tractor_works")
        if not state then
            triggerServerEvent("start_Tractor",player,player)
            setElementData(player,"tractor_works",0)
            createMarkerTractor(player)
            outputChatBox("#1E90FF[Тракторист] #FFFFFFВы начали работу. Следуйте к метке.",255,255,255,true)
            
            setElementData(player,"skinback",getElementModel(player))
            setElementModel(player,158)
            setElementData(player,"tractor_plus",0)
            setElementData(player,"zp_now",moneyTra)
        else
            triggerServerEvent("stop_Tractor",player,player)
            local hodok = tonumber(state)
            local profit = getElementData(player,"zp_all")
            if not profit then profit = 0 end
            
            setElementData(player,"zp_all",nil)
            setElementData(player,"zp_now",nil)
            triggerServerEvent("giveMoneyTractor",player,player,profit)
            setElementData(player,"tractor_works",nil)
            
            setElementModel(player,getElementData(player,"skinback"))
            deleteMarkerTractor(player)
        end
    elseif (source == buttonTra2) then
        guiSetVisible(wndTra,false)
        showCursor(false)
    end
end
addEventHandler("onClientGUIClick", getRootElement(), startClick)

function onClientMarkerHit(player, mdim) --Окончание работы
    if player == getLocalPlayer() then
        if mdim then
            local veh = getPedOccupiedVehicle(player)
            local state = getElementData(player,"tractor_works")
            if getElementData(source,"tractor_mark") then
                if veh then
                    setElementData(player,"tractor_plus",tonumber(getElementData(player,"tractor_plus")) + 1)
                    if getElementData(player,"tractor_plus") >= #tractorMarks then
                        restoreMarkerCurrentState ()
                        local pacienty = tonumber(getElementData(player,"tractor_plus"))
                        if pacienty > 0 then
                            setElementData(player,"tractor_works",tonumber(state) + pacienty)
                            setElementData(player,"tractor_plus",0)
                            if not getElementData(player,"zp_all") then
                                setElementData(player,"zp_all",0)
                            end
                            if not getElementData(player,"zp_all") then 
							setElementData(player,"zp_now",0) 
							end
                            setElementData(player,"zp_all",getElementData(player,"zp_all") + getElementData(player,"zp_now"))
                            deleteMarkerTractor(player)
                            outputChatBox("#1E90FF[Тракторист] #FFFFFFРабота выполнена. Всего заработано: #00FF00"..getElementData(player,"zp_all").." #FFFFFFруб.",255,255,255,true)
                            outputChatBox("#1E90FF[Тракторист] #FFFFFFУвольтесь, чтобы забрать зарплату.",255,255,255,true)
                        end
                    else
                        deleteMarkerTractor(player)
                        createMarkerTractor(player)
                    end
                end
            end
        end
    end
end
addEventHandler("onClientMarkerHit", getRootElement(), onClientMarkerHit)

addEventHandler ( "onClientMarkerHit", getRootElement(), function(ply)
	if ply ~= localPlayer then return end
	if source == markerT then
        local state = getElementData(ply,"tractor_works")
        local veh = getPedOccupiedVehicle(ply)
        if not veh then
            guiSetVisible(wndTra,true)
            showCursor(true)
            if not state then
                guiSetText(buttonTra1,"Начать")
            else
                guiSetText(buttonTra1,"Завершить")
            end
        end
	end
end)

Server.lua

function start_Tractor(player) --Спавн трактора с прицепом
    local veh = createVehicle(531,spawnTractor[1],spawnTractor[2],spawnTractor[3], 0, 0, 160)
    setElementData(player,"tractor_veh",veh)
    trailer = createVehicle(610, 0, 0, 4, 0, 0, 160)
    attachTrailerToVehicle(veh, trailer)
    setElementData(player,"trailer_veh",trailer)
    setElementData(veh,"tractor_plus",0)
    warpPedIntoVehicle(player,veh)
    setElementData(veh, "vehicle:Work", true)
    setElementData(veh, "vehicle:Work:Owner", player)
end
addEvent("start_Tractor", true)
addEventHandler("start_Tractor", getRootElement(), start_Tractor)

function enterVehicle ( player ) --Проверка владельца трактора
    local data = getElementData(source, "vehicle:Work")
	if not data then return end
	
	local owner = getElementData(source, "vehicle:Work:Owner")
	if owner ~= player then
	    cancelEvent()
        outputChatBox("#1E90FF[Тракторист] #FFFFFFЭто не ваш транспорт.",player,255,255,255,true)
	end
end
addEventHandler ( "onVehicleStartEnter", getRootElement(), enterVehicle )

function stop_Tractor(player) --Удаление трактора
    local state = getElementData(player,"tractor_works")
    local veh1 = getElementData(player,"tractor_veh")
    local veh2 = getElementData(player,"trailer_veh")
    if state then
        if veh1 then
            destroyElement(veh1)
            setElementData(player,"tractor_veh",nil)
        end
        if veh2 then
            destroyElement(veh2)
            setElementData(player,"trailer_veh",nil)
        end
    end
    triggerClientEvent("deleteMarkerTractor",player,player)
end
addEvent("stop_Tractor", true)
addEventHandler("stop_Tractor", getRootElement(), stop_Tractor)

function giveMoneyTractor(player, summa) --Выдача денег 
    local state = getElementData(player,"tractor_works")
    if state then
        givePlayerMoney(player, summa)
        outputChatBox("#1E90FF[Тракторист] #FFFFFFСмена завершена. Ваша зарплата #00FF00"..summa.." #FFFFFFруб.",player,255,255,255,true)
    end
end
addEvent("giveMoneyTractor", true)
addEventHandler("giveMoneyTractor", getRootElement(), giveMoneyTractor) 

function job_quit() --Если человек вышел
    local player = source
    local state = getElementData(player,"tractor_works")
    if state then
        local veh = getElementData(player,"tractor_veh")
        if veh then
            destroyElement(veh)
			setElementData(player,"tractor_veh",nil)
        end
    end
end
addEventHandler("onPlayerQuit", root, job_quit)

function onVehicleStartEnter( player, seat, jacked )
local veh = source
local pveh = getElementData(player,"tractor_veh")
    if veh == pveh then
        setElementData(player,"tractor_del",nil)
    end
end
addEventHandler ( "onVehicleStartEnter", getRootElement(), onVehicleStartEnter)

setTimer(function()
for lol,player in ipairs(getElementsByType("player")) do --Если вышел из трактора
    local pveh = getElementData(player,"tractor_veh")
    if pveh then
        local driverA = getVehicleOccupant(pveh)
        if driverA == player then
            if getElementData(player,"tractor_del") then
                setElementData(player,"tractor_del",nil)
            end
        else
            if getElementData(player,"tractor_del") then
                setElementData(player,"tractor_del",tonumber(getElementData(player,"tractor_del")) - 1)
                if tonumber(getElementData(player,"tractor_del")) < 0 then
                    setElementData(player,"tractor_del",nil)
                    stop_Tractor(player)
                    outputChatBox("#1E90FF[Тракторист] #FFFFFFВы покинули рабочий транспорт. Работа окончена.",player,255,255,255,true)
                end
            end
        end
   end
end
end,1000,0)

function onVehicleExit(player,seat) --Выход из трактора
    if seat == 0 then
        local pveh = getElementData(player,"tractor_veh")
        if source == pveh then
            setElementData(player,"tractor_del",60)
            outputChatBox("#1E90FF[Тракторист] #FFFFFFЕсли вы не вернетесь в транспорт, через 60 сек. он будет убран.",player,255,255,255,true)
        end
    end
end
addEventHandler("onVehicleExit", getRootElement(), onVehicleExit)

function onPlayerWasted()
    giveMoneyTractor(source)
end
addEventHandler("onPlayerWasted", getRootElement(), onPlayerWasted)

function onPlayerQuit()
    giveMoneyTractor(source)
end
addEventHandler("onPlayerQuit", getRootElement(), onPlayerQuit)

Shared.lua

markerT = {-103.97047424316, 9.280517578125, 3.1171875} -- Маркер устройства.

skinTractor = 158 -- ID рабочего скина.

moneyTra = 200-- Зп за один маркер

spawnTractor = {-123.93685150146,58.673442840576,3.1171875} -- Спавна трактора.

tractorMarks = { -- Координаты сбора.
    {-129.10345458984, 44.776748657227, 3.1171875},
    {-140.21569824219, 35.499088287354, 3.1171875},
    {-138.20004272461, 22.663047790527, 3.1171875},
    {-148.60707092285, 14.514667510986, 3.1171875},
	{-145.90365600586, 3.4965758323669, 3.1171875},
--  {-156.54542541504, -6.012909412384, 3.1171875},
--  {-154.13597106934, -17.593681335449, 3.1171875},
--  {-164.40188598633, -27.394626617432, 3.1171875},
--  {-162.29643249512, -39.118156433105, 3.1171875},
--  {-171.7504119873, -45.86404800415, 3.1171875},
--  {-169.89549255371, -58.790817260742, 3.1171875},
--  {-179.14767456055, -66.964935302734, 3.1171875},
--  {-180.8540802002, -80.188659667969, 3.1171875},
--  {-192.09867858887, -82.351318359375, 3.1171875},
--  {-194.74926757813, -68.188079833984, 3.1171875},
--  {-184.73794555664, -59.438095092773, 3.1171875},
--  {-187.86322021484, -46.48645401001, 3.1171875},
--  {-176.4867401123, -37.576705932617, 3.1171875},
--  {-178.89535522461, -23.708335876465, 3.1171875},
--  {-167.26829528809, -14.703594207764, 3.1171875},
--  {-169.14628601074, 0.85636925697327, 3.1171875},
--  {-157.40020751953, 11.213445663452, 3.1171875},
--  {-163.81475830078, 27.186906814575, 3.109395980835},
--  {-151.95930480957, 38.768440246582, 3.1171875},
--  {-155.29359436035, 53.715530395508, 3.1171875},
--  {-144.55880737305, 61.669063568115, 3.1171875},
--  {-153.22250366211, 73.040794372559, 3.1171875},
--  {-164.96725463867, 64.920394897461, 3.1171875},
--  {-160.10667419434, 51.389507293701, 3.1171875},
--  {-172.44535827637, 43.420669555664, 3.1171875},
--  {-168.49655151367, 27.312816619873, 3.1171875},
--  {-181.05578613281, 18.532829284668, 3.109395980835},
--  {-176.61128234863, 4.3219885826111, 3.109395980835},
--  {-188.57684326172, -7.4416480064392, 3.109395980835},
--  {-186.15411376953, -23.690855026245, 3.1171875},
--  {-199.10632324219, -34.989559173584, 3.1171875},
--  {-196.35543823242, -49.323276519775, 3.1171875},
--  {-207.32098388672, -57.854675292969, 3.1171875},
--  {-204.13220214844, -74.361557006836, 3.1171875},
--  {-214.03121948242, -81.115821838379, 3.1171875},
--  {-222.42245483398, -71.313377380371, 3.1171875},
--  {-211.78359985352, -60.138431549072, 3.1171875},
--  {-217.53211975098, -41.33757019043, 3.1171875},
--  {-205.04089355469, -31.443368911743, 3.1171875},
--  {-207.49635314941, -12.911985397339, 3.1171875},
--  {-195.17124938965, -1.4358625411987, 3.109395980835},
--  {-199.52687072754, 22.681520462036, 3.1171875},
--  {-187.56085205078, 33.805614471436, 3.1171875},
--  {-190.6788482666, 50.106971740723, 3.1171875},
--  {-178.33522033691, 60.7131690979, 3.1171875},
--  {-182.21771240234, 76.404037475586, 3.1171875},
--  {-191.54174804688, 87.14820098877, 3.1171875},
--  {-203.26365661621, 79.401123046875, 3.1171875},
--  {-199.90397644043, 61.27318572998, 3.1171875},
--  {-212.61807250977, 50.887119293213, 3.1171875},
--  {-209.3896484375, 34.510997772217, 3.1171875},
--  {-221.73179626465, 23.422630310059, 3.1171875},
--  {-217.9956817627, 8.4652395248413, 3.1171875},
--  {-231.29121398926, -4.3941593170166, 3.109395980835},
--  {-227.30709838867, -17.375923156738, 3.1171875},
--  {-238.58776855469, -26.8854637146, 3.1171875},
--  {-234.0107421875, -40.141651153564, 3.1171875},
--  {-245.84834289551, -50.500583648682, 3.1171875},
--  {-243.30256652832, -64.259651184082, 3.1171875},
--  {-253.69897460938, -70.972732543945, 3.1171875},
--  {-261.44381713867, -60.243770599365, 3.1171875},
--  {-264.31607055664, -45.27653503418, 3.1171875},
--  {-253.13627624512, -37.03816986084, 3.1171875},
--  {-256.28436279297, -21.476554870605, 2.5999567508698},
--  {-243.57893371582, -5.2200374603271, 2.8984375},
--  {-246.77336120605, 13.520101547241, 2.5481338500977},
--  {-232.55879211426, 27.493730545044, 2.8690776824951},
--  {-235.26802062988, 47.376792907715, 2.5473833084106},
--  {-221.7456817627, 60.752349853516, 2.8304569721222},
--  {-226.7194519043, 72.61767578125, 2.5015366077423},
--  {-214.16030883789, 83.426750183105, 2.7792901992798},
--  {-217.92860412598, 94.814697265625, 2.4680054187775},
--  {-227.80729675293, 97.381309509277, 2.0782046318054},
--  {-227.83094787598, 81.953834533691, 2.3373956680298},
--  {-242.23078918457, 74.386619567871, 1.953736782074},
--  {-236.50303649902, 54.08487701416, 2.4138503074646},
--  {-253.51921081543, 43.162837982178, 1.965989947319},
--  {-248.65715026855, 20.133153915405, 2.3974192142487},
--  {-265.92660522461, 3.4994027614594, 1.9778387546539},
--  {-260.5168762207, -20.83599281311, 2.453197479248},
--  {-276.29504394531, -35.595523834229, 2.0164685249329},
--  {-271.26129150391, -54.640983581543, 3.1171875},
}

Все никак не могу сделать чтобы считалось сумма зарплаты от одного маркера
То есть 1 маркер например 50 долларов и считалось за сумму маркеров
Прошу помогите уже совсем запутался

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...