Jump to content

[Question] how to use onClientResourceStart


kieran

Recommended Posts

So I found a script on resources for trucker, server side though, and I am trying to tweak it to be client side, code is in spoiler because it kinda "medium sized"...  But the problem on my debugscript 3 it says nothing when I hit spawn marker, marker is there, but no vehicle spawns, nothing happens... -_- Any help at all is good xD had this sitting there for weeks now and kept meaning to make it better :3 

Spoiler

--// Made by: MoPoMaN

--//Tables and other stuff
tableLocationsX = {}
tableLocationsY = {}
tableLocationsZ = {}

tableMoney = {}
locationCount = 3

--//Location 1
tableLocationsX[1] = 2253.7
tableLocationsY[1] = -84.0
tableLocationsZ[1] = 25.3

tableMoney[1] = 500

--//Location 2
tableLocationsX[2] = 1093.7
tableLocationsY[2] = -931.6
tableLocationsZ[2] = 41.9

tableMoney[2] = 550

--//Location3
tableLocationsX[3] = -47.3
tableLocationsY[3] = -1137.5
tableLocationsZ[3] = 0.07

tableMoney[3] = 500

function startScript ()
    --Marker
    marker = createMarker (2776.6, -2425.5, 12.6, "cylinder", 1.1, 0, 255, 0)
    addEventHandler ("onMarkerHit", marker, startMission)
    --Objects and Ped
    ped = createPed (302, 2776.7, -2428.1, 13.6)
    tableObj = createObject (2205, 2775.9, -2426.8, 12.6)
    chairObj = createObject (2309, 2776.7, -2427.4, 12.6)
    addEventHandler ("onPedWasted", getRootElement(), respawnPed)
    --Blip
    startBlip = createBlip (2776.9, -2423.9, 12.7, 51)
end

function startMission (hitElement)
    if getElementType (hitElement) == "player" then
    
            truck = createVehicle (515, 2779.6, -2437.2, 14.7, 0, 0, 90)
            trailer = createVehicle (450, 2789.2, -2437.1, 14.2, 0, 0, 90)
            randomLoc = math.random (1, locationCount)
            finish = createMarker (tableLocationsX[randomLoc], tableLocationsY[randomLoc], tableLocationsZ[randomLoc], "cylinder", 3, 0, 200, 55, 255, hitElement)
            blip = createBlip (tableLocationsX[randomLoc], tableLocationsY[randomLoc], tableLocationsZ[randomLoc], 0, 2, 255, 0, 0, 255, 0, 10000, hitElement)
            --addEventHandlers
            addEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)
            addEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)
            addEventHandler ("onMarkerHit", finish, reward)
            addEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)
            --other
            setVehicleLocked (truck, true)
            destroyElement (startBlip)
            player = hitElement
            outputChatBox ("#ffaa00***#ffffffDrive to the red blip on the map #ffaa00***", player, 255, 255, 255, true)
            setElementPosition (marker, -406, -64, 2.4)
            warpPedIntoVehicle (hitElement, truck)
        -- end
    else
        return false
    end
end

function trailerDetach ()
    if source == trailer then
        --destroyThings
        outputChatBox ("#ffffffMission failed, go back for more cargo!", player, 255, 255, 255, true)
        destroyElement (trailer)
        destroyElement (finish)
        destroyElement (blip)
        --removeEventHandlers
        removeEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)
        removeEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)
        removeEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)
        --other
        startBlip = createBlip (2776.9, -2423.9, 12.7, 51)
        setElementPosition (marker, 2776.6, -2425.5, 12.6)
    else
        return false
    end
end

function vehicleExit (leaver)
    if source == truck and leaver == player then
        setVehicleLocked (truck, false)
        outputChatBox ("#ffaa00// #ffffffGo back to the truck in 10 seconds!", leaver, 255, 255, 255, true)
        destroyTimer = setTimer (destroyVehicle, 10000, 1)
        addEventHandler ("onClientVehicleEnter", getRootElement(), destrTimer)
    else
        return false
    end
end

function destrTimer (thePlayer)
    if source == truck and thePlayer == player then
        local team = getPlayerTeam (thePlayer)
        if getTeamName (team) == "Freeroam" or getTeamName (team) == "The Police" then
            return false
        else
            killTimer (destroyTimer)
            removeEventHandler ("onClientVehicleEnter", getRootElement(), destrTimer)
            setVehicleLocked (truck, true)
        end
    else
        return false
    end
end

function destroyVehicle ()
    if destroyTimer then
        --destroyThings
        
        destroyElement (trailer)
        destroyElement (finish)
        destroyElement (blip)
        --removeEventHandlers
        removeEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)
        removeEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)
        removeEventHandler ("onClientVehicleEnter", getRootElement(), destrTimer)
        removeEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)
        --other
        startBlip = createBlip (2776.9, -2423.9, 12.7, 51)
        setElementPosition (marker, 2776.6, -2425.5, 12.6)
    else
        return false
    end
end

function onQuit ()
    if source == player then
        --destroyThings
        destroyElement (truck)
        destroyElement (trailer)
        destroyElement (finish)
        destroyElement (blip)
        --removeEventHandlers
        removeEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)
        removeEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)
        removeEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)
        --other
        startBlip = createBlip (2776.9, -2423.9, 12.7, 51)
        setElementPosition (marker, 2776.6, -2425.5, 12.6)
    end
end

function reward (hitElement)
    if hitElement == truck then
        --other
        startBlip = createBlip (2776.9, -2423.9, 12.7, 51)
        outputChatBox ("#ffaa00// #ffffffGood job! You've been rewarded " .. tableMoney[randomLoc] .. "$", player, 255, 255, 255, true)
        setElementPosition (marker, 2776.6, -2425.5, 12.6)
        occupant = getVehicleOccupant (truck, 0)
        givePlayerMoney (occupant, tableMoney[randomLoc])
        --destroyThings
        
        destroyElement (trailer)
        destroyElement (finish)
        destroyElement (blip)
        --removeEventHandlers
        removeEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)
        removeEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)
        removeEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)
    else
        return false
    end
end

function respawnPed ()
    if source == ped then
        timer = setTimer (pedRespawn, 5000, 1)
    else
        return false
    end
end

function pedRespawn ()
    killTimer (timer)
    destroyElement (ped)
    ped = createPed (302, 2776.7, -2428.1, 13.6)
end
addEventHandler ("onClientResourceStart", getResourceRootElement(getThisResource()), startScript)

 

All made by NoPoMaN, but as I say, it is server side, so worried there will be loads of problems with markers etc :P So tryna change to client :D 

Edited by kieran
Link to comment
1 hour ago, kieran said:

So I found a script on resources for trucker, server side though, and I am trying to tweak it to be client side, code is in spoiler because it kinda "medium sized"...  But the problem on my debugscript 3 it says nothing when I hit spawn marker, marker is there, but no vehicle spawns, nothing happens... -_- Any help at all is good xD had this sitting there for weeks now and kept meaning to make it better :3 

  Hide contents


 
--// Made by: MoPoMaN

--//Tables and other stuff
tableLocationsX = {}
tableLocationsY = {}
tableLocationsZ = {}

tableMoney = {}
locationCount = 3

--//Location 1
tableLocationsX[1] = 2253.7
tableLocationsY[1] = -84.0
tableLocationsZ[1] = 25.3

tableMoney[1] = 500

--//Location 2
tableLocationsX[2] = 1093.7
tableLocationsY[2] = -931.6
tableLocationsZ[2] = 41.9

tableMoney[2] = 550

--//Location3
tableLocationsX[3] = -47.3
tableLocationsY[3] = -1137.5
tableLocationsZ[3] = 0.07

tableMoney[3] = 500

function startScript ()
    --Marker
    marker = createMarker (2776.6, -2425.5, 12.6, "cylinder", 1.1, 0, 255, 0)
    addEventHandler ("onMarkerHit", marker, startMission)
    --Objects and Ped
    ped = createPed (302, 2776.7, -2428.1, 13.6)
    tableObj = createObject (2205, 2775.9, -2426.8, 12.6)
    chairObj = createObject (2309, 2776.7, -2427.4, 12.6)
    addEventHandler ("onPedWasted", getRootElement(), respawnPed)
    --Blip
    startBlip = createBlip (2776.9, -2423.9, 12.7, 51)
end

function startMission (hitElement)
    if getElementType (hitElement) == "player" then
    
            truck = createVehicle (515, 2779.6, -2437.2, 14.7, 0, 0, 90)
            trailer = createVehicle (450, 2789.2, -2437.1, 14.2, 0, 0, 90)
            randomLoc = math.random (1, locationCount)
            finish = createMarker (tableLocationsX[randomLoc], tableLocationsY[randomLoc], tableLocationsZ[randomLoc], "cylinder", 3, 0, 200, 55, 255, hitElement)
            blip = createBlip (tableLocationsX[randomLoc], tableLocationsY[randomLoc], tableLocationsZ[randomLoc], 0, 2, 255, 0, 0, 255, 0, 10000, hitElement)
            --addEventHandlers
            addEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)
            addEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)
            addEventHandler ("onMarkerHit", finish, reward)
            addEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)
            --other
            setVehicleLocked (truck, true)
            destroyElement (startBlip)
            player = hitElement
            outputChatBox ("#ffaa00***#ffffffDrive to the red blip on the map #ffaa00***", player, 255, 255, 255, true)
            setElementPosition (marker, -406, -64, 2.4)
            warpPedIntoVehicle (hitElement, truck)
        -- end
    else
        return false
    end
end

function trailerDetach ()
    if source == trailer then
        --destroyThings
        outputChatBox ("#ffffffMission failed, go back for more cargo!", player, 255, 255, 255, true)
        destroyElement (trailer)
        destroyElement (finish)
        destroyElement (blip)
        --removeEventHandlers
        removeEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)
        removeEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)
        removeEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)
        --other
        startBlip = createBlip (2776.9, -2423.9, 12.7, 51)
        setElementPosition (marker, 2776.6, -2425.5, 12.6)
    else
        return false
    end
end

function vehicleExit (leaver)
    if source == truck and leaver == player then
        setVehicleLocked (truck, false)
        outputChatBox ("#ffaa00// #ffffffGo back to the truck in 10 seconds!", leaver, 255, 255, 255, true)
        destroyTimer = setTimer (destroyVehicle, 10000, 1)
        addEventHandler ("onClientVehicleEnter", getRootElement(), destrTimer)
    else
        return false
    end
end

function destrTimer (thePlayer)
    if source == truck and thePlayer == player then
        local team = getPlayerTeam (thePlayer)
        if getTeamName (team) == "Freeroam" or getTeamName (team) == "The Police" then
            return false
        else
            killTimer (destroyTimer)
            removeEventHandler ("onClientVehicleEnter", getRootElement(), destrTimer)
            setVehicleLocked (truck, true)
        end
    else
        return false
    end
end

function destroyVehicle ()
    if destroyTimer then
        --destroyThings
        
        destroyElement (trailer)
        destroyElement (finish)
        destroyElement (blip)
        --removeEventHandlers
        removeEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)
        removeEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)
        removeEventHandler ("onClientVehicleEnter", getRootElement(), destrTimer)
        removeEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)
        --other
        startBlip = createBlip (2776.9, -2423.9, 12.7, 51)
        setElementPosition (marker, 2776.6, -2425.5, 12.6)
    else
        return false
    end
end

function onQuit ()
    if source == player then
        --destroyThings
        destroyElement (truck)
        destroyElement (trailer)
        destroyElement (finish)
        destroyElement (blip)
        --removeEventHandlers
        removeEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)
        removeEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)
        removeEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)
        --other
        startBlip = createBlip (2776.9, -2423.9, 12.7, 51)
        setElementPosition (marker, 2776.6, -2425.5, 12.6)
    end
end

function reward (hitElement)
    if hitElement == truck then
        --other
        startBlip = createBlip (2776.9, -2423.9, 12.7, 51)
        outputChatBox ("#ffaa00// #ffffffGood job! You've been rewarded " .. tableMoney[randomLoc] .. "$", player, 255, 255, 255, true)
        setElementPosition (marker, 2776.6, -2425.5, 12.6)
        occupant = getVehicleOccupant (truck, 0)
        givePlayerMoney (occupant, tableMoney[randomLoc])
        --destroyThings
        
        destroyElement (trailer)
        destroyElement (finish)
        destroyElement (blip)
        --removeEventHandlers
        removeEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)
        removeEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)
        removeEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)
    else
        return false
    end
end

function respawnPed ()
    if source == ped then
        timer = setTimer (pedRespawn, 5000, 1)
    else
        return false
    end
end

function pedRespawn ()
    killTimer (timer)
    destroyElement (ped)
    ped = createPed (302, 2776.7, -2428.1, 13.6)
end
addEventHandler ("onClientResourceStart", getResourceRootElement(getThisResource()), startScript)

 

All made by NoPoMaN, but as I say, it is server side, so worried there will be loads of problems with markers etc :P So tryna change to client :D 

Try this :) btw u have to change many things in addEventHandler Thingy as : see below 

 
--// Made by: MoPoMaN

--//Tables and other stuff
tableLocationsX = {}
tableLocationsY = {}
tableLocationsZ = {}

tableMoney = {}
locationCount = 3

--//Location 1
tableLocationsX[1] = 2253.7
tableLocationsY[1] = -84.0
tableLocationsZ[1] = 25.3

tableMoney[1] = 500

--//Location 2
tableLocationsX[2] = 1093.7
tableLocationsY[2] = -931.6
tableLocationsZ[2] = 41.9

tableMoney[2] = 550

--//Location3
tableLocationsX[3] = -47.3
tableLocationsY[3] = -1137.5
tableLocationsZ[3] = 0.07

tableMoney[3] = 500

function startScript ()
    --Marker
    marker = createMarker (2776.6, -2425.5, 12.6, "cylinder", 1.1, 0, 255, 0)
    addEventHandler ("onClientMarkerHit", marker, startMission)
    --Objects and Ped
    ped = createPed (302, 2776.7, -2428.1, 13.6)
    tableObj = createObject (2205, 2775.9, -2426.8, 12.6)
    chairObj = createObject (2309, 2776.7, -2427.4, 12.6)
    addEventHandler ("onClientPedWasted", getRootElement(), respawnPed)
    --Blip
    startBlip = createBlip (2776.9, -2423.9, 12.7, 51)
end

function startMission (hitElement)
    if getElementType (hitElement) == "player" then
    
            truck = createVehicle (515, 2779.6, -2437.2, 14.7, 0, 0, 90)
            trailer = createVehicle (450, 2789.2, -2437.1, 14.2, 0, 0, 90)
            randomLoc = math.random (1, locationCount)
            finish = createMarker (tableLocationsX[randomLoc], tableLocationsY[randomLoc], tableLocationsZ[randomLoc], "cylinder", 3, 0, 200, 55, 255, hitElement)
            blip = createBlip (tableLocationsX[randomLoc], tableLocationsY[randomLoc], tableLocationsZ[randomLoc], 0, 2, 255, 0, 0, 255, 0, 10000, hitElement)
            --addEventHandlers
            addEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)
            addEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)
            addEventHandler ("onClientMarkerHit", finish, reward)
            addEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)
            --other
            setVehicleLocked (truck, true)
            destroyElement (startBlip)
            player = hitElement
            outputChatBox ("#ffaa00***#ffffffDrive to the red blip on the map #ffaa00***", player, 255, 255, 255, true)
            setElementPosition (marker, -406, -64, 2.4)
            warpPedIntoVehicle (hitElement, truck)
        -- end
    else
        return false
    end
end

function trailerDetach ()
    if source == trailer then
        --destroyThings
        outputChatBox ("#ffffffMission failed, go back for more cargo!", player, 255, 255, 255, true)
        destroyElement (trailer)
        destroyElement (finish)
        destroyElement (blip)
        --removeEventHandlers
        removeEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)
        removeEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)
        removeEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)
        --other
        startBlip = createBlip (2776.9, -2423.9, 12.7, 51)
        setElementPosition (marker, 2776.6, -2425.5, 12.6)
    else
        return false
    end
end

function vehicleExit (leaver)
    if source == truck and leaver == player then
        setVehicleLocked (truck, false)
        outputChatBox ("#ffaa00// #ffffffGo back to the truck in 10 seconds!", leaver, 255, 255, 255, true)
        destroyTimer = setTimer (destroyVehicle, 10000, 1)
        addEventHandler ("onClientVehicleEnter", getRootElement(), destrTimer)
    else
        return false
    end
end

function destrTimer (thePlayer)
    if source == truck and thePlayer == player then
        local team = getPlayerTeam (thePlayer)
        if getTeamName (team) == "Freeroam" or getTeamName (team) == "The Police" then
            return false
        else
            killTimer (destroyTimer)
            removeEventHandler ("onClientVehicleEnter", getRootElement(), destrTimer)
            setVehicleLocked (truck, true)
        end
    else
        return false
    end
end

function destroyVehicle ()
    if destroyTimer then
        --destroyThings
        
        destroyElement (trailer)
        destroyElement (finish)
        destroyElement (blip)
        --removeEventHandlers
        removeEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)
        removeEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)
        removeEventHandler ("onClientVehicleEnter", getRootElement(), destrTimer)
        removeEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)
        --other
        startBlip = createBlip (2776.9, -2423.9, 12.7, 51)
        setElementPosition (marker, 2776.6, -2425.5, 12.6)
    else
        return false
    end
end

function onQuit ()
    if source == player then
        --destroyThings
        destroyElement (truck)
        destroyElement (trailer)
        destroyElement (finish)
        destroyElement (blip)
        --removeEventHandlers
        removeEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)
        removeEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)
        removeEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)
        --other
        startBlip = createBlip (2776.9, -2423.9, 12.7, 51)
        setElementPosition (marker, 2776.6, -2425.5, 12.6)
    end
end

function reward (hitElement)
    if hitElement == truck then
        --other
        startBlip = createBlip (2776.9, -2423.9, 12.7, 51)
        outputChatBox ("#ffaa00// #ffffffGood job! You've been rewarded " .. tableMoney[randomLoc] .. "$", player, 255, 255, 255, true)
        setElementPosition (marker, 2776.6, -2425.5, 12.6)
        occupant = getVehicleOccupant (truck, 0)
        givePlayerMoney (occupant, tableMoney[randomLoc])
        --destroyThings
        
        destroyElement (trailer)
        destroyElement (finish)
        destroyElement (blip)
        --removeEventHandlers
        removeEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)
        removeEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)
        removeEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)
    else
        return false
    end
end

function respawnPed ()
    if source == ped then
        timer = setTimer (pedRespawn, 5000, 1)
    else
        return false
    end
end

function pedRespawn ()
    killTimer (timer)
    destroyElement (ped)
    ped = createPed (302, 2776.7, -2428.1, 13.6)
end
addEventHandler ("onClientResourceStart", getResourceRootElement(getThisResource()), startScript)

 

  • Like 1
Link to comment

I tried something but it went wrong :P 

Server

function SpawnTruck(hitElement)
    if getElementType (hitElement) == "player" then           
			truck = createVehicle (515, 2779.6, -2437.2, 14.7, 0, 0, 90)
			setVehicleLocked (truck, true)
			player = hitElement
			warpPedIntoVehicle (hitElement, truck)
end
end
addEvent( "SpawnTheTrucks", true )
addEventHandler( "SpawnTheTrucks", resourceRoot, SpawnTruck ) 


function SpawnTrailers()           
			trailer = createVehicle (450, 2789.2, -2437.1, 14.2, 0, 0, 90)
end
addEvent( "SpawnTheTrailers", true )
addEventHandler( "SpawnTheTrailers", resourceRoot, SpawnTrailers ) 

 

Client

--// Made by: MoPoMaN
--//Tables and other stuff
tableLocationsX = {}
tableLocationsY = {}
tableLocationsZ = {}
tableMoney = {}
locationCount = 3
--//Location 1
tableLocationsX[1] = 2253.7
tableLocationsY[1] = -84.0
tableLocationsZ[1] = 25.3
tableMoney[1] = 500
--//Location 2
tableLocationsX[2] = 1093.7
tableLocationsY[2] = -931.6
tableLocationsZ[2] = 41.9
tableMoney[2] = 550
--//Location3
tableLocationsX[3] = -47.3
tableLocationsY[3] = -1137.5
tableLocationsZ[3] = 0.07
tableMoney[3] = 500
function startScript ()
    --Marker
    marker = createMarker (2776.6, -2425.5, 12.6, "cylinder", 1.1, 0, 255, 0)
    addEventHandler ("onClientMarkerHit", marker, startMission)
    --Objects and Ped
    ped = createPed (302, 2776.7, -2428.1, 13.6)
    tableObj = createObject (2205, 2775.9, -2426.8, 12.6)
    chairObj = createObject (2309, 2776.7, -2427.4, 12.6)
    addEventHandler ("onClientPedWasted", getRootElement(), respawnPed)
    --Blip
    startBlip = createBlip (2776.9, -2423.9, 12.7, 51)
end
function startMission (hitElement)
    if getElementType (hitElement) == "player" then
    
            truck = triggerServerEvent ( "SpawnTheTrucks", resourceRoot )
            trailer = triggerServerEvent ( "SpawnTrailers", resourceRoot )
            randomLoc = math.random (1, locationCount)
            finish = createMarker (tableLocationsX[randomLoc], tableLocationsY[randomLoc], tableLocationsZ[randomLoc], "cylinder", 3, 0, 200, 55, 255, hitElement)
            blip = createBlip (tableLocationsX[randomLoc], tableLocationsY[randomLoc], tableLocationsZ[randomLoc], 0, 2, 255, 0, 0, 255, 0, 10000, hitElement)
            --addEventHandlers
            addEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)
            addEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)
            addEventHandler ("onClientMarkerHit", finish, reward)
            addEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)
            --other
            destroyElement (startBlip)
            outputChatBox ("#ffaa00***#ffffffDrive to the red blip on the map #ffaa00***", 255, 255, 255, true)
            setElementPosition (marker, -406, -64, 2.4)
        -- end
    else
        return false
    end
end
function trailerDetach ()
    if source == trailer then
        --destroyThings
        outputChatBox ("#ffffffMission failed, go back for more cargo!", 255, 255, 255, true)
        destroyElement (trailer)
        destroyElement (finish)
        destroyElement (blip)
        --removeEventHandlers
        removeEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)
        removeEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)
        removeEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)
        --other
        startBlip = createBlip (2776.9, -2423.9, 12.7, 51)
        setElementPosition (marker, 2776.6, -2425.5, 12.6)
    else
        return false
    end
end
function vehicleExit (leaver)
    if source == truck and leaver == player then
        setVehicleLocked (truck, false)
        outputChatBox ("#ffaa00// #ffffffGo back to the truck in 10 seconds!", 255, 255, 255, true)
        destroyTimer = setTimer (destroyVehicle, 10000, 1)
        addEventHandler ("onClientVehicleEnter", getRootElement(), destrTimer)
    else
        return false
    end
end
function destrTimer (thePlayer)
    if source == truck and thePlayer == player then
        local team = getPlayerTeam (thePlayer)
        if getTeamName (team) == "Freeroam" or getTeamName (team) == "The Police" then
            return false
        else
            killTimer (destroyTimer)
            removeEventHandler ("onClientVehicleEnter", getRootElement(), destrTimer)
            setVehicleLocked (truck, true)
        end
    else
        return false
    end
end
function destroyVehicle ()
    if destroyTimer then
        --destroyThings
        
        destroyElement (trailer)
        destroyElement (finish)
        destroyElement (blip)
        --removeEventHandlers
        removeEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)
        removeEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)
        removeEventHandler ("onClientVehicleEnter", getRootElement(), destrTimer)
        removeEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)
        --other
        startBlip = createBlip (2776.9, -2423.9, 12.7, 51)
        setElementPosition (marker, 2776.6, -2425.5, 12.6)
    else
        return false
    end
end
function onQuit ()
    if source == player then
        --destroyThings
        destroyElement (truck)
        destroyElement (trailer)
        destroyElement (finish)
        destroyElement (blip)
        --removeEventHandlers
        removeEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)
        removeEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)
        removeEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)
        --other
        startBlip = createBlip (2776.9, -2423.9, 12.7, 51)
        setElementPosition (marker, 2776.6, -2425.5, 12.6)
    end
end
function reward (hitElement)
    if hitElement == truck then
        --other
        startBlip = createBlip (2776.9, -2423.9, 12.7, 51)
        outputChatBox ("#ffaa00// #ffffffGood job! You've been rewarded " .. tableMoney[randomLoc] .. "$", 255, 255, 255, true)
        setElementPosition (marker, 2776.6, -2425.5, 12.6)
        occupant = getVehicleOccupant (truck, 0)
        givePlayerMoney (occupant, tableMoney[randomLoc])
        --destroyThings
        
        destroyElement (trailer)
        destroyElement (finish)
        destroyElement (blip)
        --removeEventHandlers
        removeEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)
        removeEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)
        removeEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)
    else
        return false
    end
end
function respawnPed ()
    if source == ped then
        timer = setTimer (pedRespawn, 5000, 1)
    else
        return false
    end
end
function pedRespawn ()
    killTimer (timer)
    destroyElement (ped)
    ped = createPed (302, 2776.7, -2428.1, 13.6)
end
addEventHandler ("onClientResourceStart", getResourceRootElement(getThisResource()), startScript)

Tweaked it a little and added server events, but now it won't spawn vehicle :/ sorry for being so nub xD only place I used event handlers was on my login panel...

Link to comment

Man you really cracked it so i suggest you to first tell all about the mission i will give you a working script in a day or 2 ok ? :) happy scripting

P.S. give me your original script :)

 

8 minutes ago, Ayush Rathore said:

Man you really cracked it so i suggest you to first tell all about the mission i will give you a working script in a day or 2 ok ? :) happy scripting

P.S. give me your original script :)

 

 

1 hour ago, kieran said:

I tried something but it went wrong :P 

Server


function SpawnTruck(hitElement)    if getElementType (hitElement) == "player" then           			truck = createVehicle (515, 2779.6, -2437.2, 14.7, 0, 0, 90)			setVehicleLocked (truck, true)			player = hitElement			warpPedIntoVehicle (hitElement, truck)endendaddEvent( "SpawnTheTrucks", true )addEventHandler( "SpawnTheTrucks", resourceRoot, SpawnTruck ) function SpawnTrailers()           			trailer = createVehicle (450, 2789.2, -2437.1, 14.2, 0, 0, 90)endaddEvent( "SpawnTheTrailers", true )addEventHandler( "SpawnTheTrailers", resourceRoot, SpawnTrailers ) 

 

Client


--// Made by: MoPoMaN--//Tables and other stufftableLocationsX = {}tableLocationsY = {}tableLocationsZ = {}tableMoney = {}locationCount = 3--//Location 1tableLocationsX[1] = 2253.7tableLocationsY[1] = -84.0tableLocationsZ[1] = 25.3tableMoney[1] = 500--//Location 2tableLocationsX[2] = 1093.7tableLocationsY[2] = -931.6tableLocationsZ[2] = 41.9tableMoney[2] = 550--//Location3tableLocationsX[3] = -47.3tableLocationsY[3] = -1137.5tableLocationsZ[3] = 0.07tableMoney[3] = 500function startScript ()    --Marker    marker = createMarker (2776.6, -2425.5, 12.6, "cylinder", 1.1, 0, 255, 0)    addEventHandler ("onClientMarkerHit", marker, startMission)    --Objects and Ped    ped = createPed (302, 2776.7, -2428.1, 13.6)    tableObj = createObject (2205, 2775.9, -2426.8, 12.6)    chairObj = createObject (2309, 2776.7, -2427.4, 12.6)    addEventHandler ("onClientPedWasted", getRootElement(), respawnPed)    --Blip    startBlip = createBlip (2776.9, -2423.9, 12.7, 51)endfunction startMission (hitElement)    if getElementType (hitElement) == "player" then                truck = triggerServerEvent ( "SpawnTheTrucks", resourceRoot )            trailer = triggerServerEvent ( "SpawnTrailers", resourceRoot )            randomLoc = math.random (1, locationCount)            finish = createMarker (tableLocationsX[randomLoc], tableLocationsY[randomLoc], tableLocationsZ[randomLoc], "cylinder", 3, 0, 200, 55, 255, hitElement)            blip = createBlip (tableLocationsX[randomLoc], tableLocationsY[randomLoc], tableLocationsZ[randomLoc], 0, 2, 255, 0, 0, 255, 0, 10000, hitElement)            --addEventHandlers            addEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)            addEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)            addEventHandler ("onClientMarkerHit", finish, reward)            addEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)            --other            destroyElement (startBlip)            outputChatBox ("#ffaa00***#ffffffDrive to the red blip on the map #ffaa00***", 255, 255, 255, true)            setElementPosition (marker, -406, -64, 2.4)        -- end    else        return false    endendfunction trailerDetach ()    if source == trailer then        --destroyThings        outputChatBox ("#ffffffMission failed, go back for more cargo!", 255, 255, 255, true)        destroyElement (trailer)        destroyElement (finish)        destroyElement (blip)        --removeEventHandlers        removeEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)        removeEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)        removeEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)        --other        startBlip = createBlip (2776.9, -2423.9, 12.7, 51)        setElementPosition (marker, 2776.6, -2425.5, 12.6)    else        return false    endendfunction vehicleExit (leaver)    if source == truck and leaver == player then        setVehicleLocked (truck, false)        outputChatBox ("#ffaa00// #ffffffGo back to the truck in 10 seconds!", 255, 255, 255, true)        destroyTimer = setTimer (destroyVehicle, 10000, 1)        addEventHandler ("onClientVehicleEnter", getRootElement(), destrTimer)    else        return false    endendfunction destrTimer (thePlayer)    if source == truck and thePlayer == player then        local team = getPlayerTeam (thePlayer)        if getTeamName (team) == "Freeroam" or getTeamName (team) == "The Police" then            return false        else            killTimer (destroyTimer)            removeEventHandler ("onClientVehicleEnter", getRootElement(), destrTimer)            setVehicleLocked (truck, true)        end    else        return false    endendfunction destroyVehicle ()    if destroyTimer then        --destroyThings                destroyElement (trailer)        destroyElement (finish)        destroyElement (blip)        --removeEventHandlers        removeEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)        removeEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)        removeEventHandler ("onClientVehicleEnter", getRootElement(), destrTimer)        removeEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)        --other        startBlip = createBlip (2776.9, -2423.9, 12.7, 51)        setElementPosition (marker, 2776.6, -2425.5, 12.6)    else        return false    endendfunction onQuit ()    if source == player then        --destroyThings        destroyElement (truck)        destroyElement (trailer)        destroyElement (finish)        destroyElement (blip)        --removeEventHandlers        removeEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)        removeEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)        removeEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)        --other        startBlip = createBlip (2776.9, -2423.9, 12.7, 51)        setElementPosition (marker, 2776.6, -2425.5, 12.6)    endendfunction reward (hitElement)    if hitElement == truck then        --other        startBlip = createBlip (2776.9, -2423.9, 12.7, 51)        outputChatBox ("#ffaa00// #ffffffGood job! You've been rewarded " .. tableMoney[randomLoc] .. "$", 255, 255, 255, true)        setElementPosition (marker, 2776.6, -2425.5, 12.6)        occupant = getVehicleOccupant (truck, 0)        givePlayerMoney (occupant, tableMoney[randomLoc])        --destroyThings                destroyElement (trailer)        destroyElement (finish)        destroyElement (blip)        --removeEventHandlers        removeEventHandler ("onClientTrailerDetach", getRootElement(), trailerDetach)        removeEventHandler ("onClientVehicleExit", getRootElement(), vehicleExit)        removeEventHandler ("onClientPlayerQuit", getRootElement(), onQuit)    else        return false    endendfunction respawnPed ()    if source == ped then        timer = setTimer (pedRespawn, 5000, 1)    else        return false    endendfunction pedRespawn ()    killTimer (timer)    destroyElement (ped)    ped = createPed (302, 2776.7, -2428.1, 13.6)endaddEventHandler ("onClientResourceStart", getResourceRootElement(getThisResource()), startScript)

Tweaked it a little and added server events, but now it won't spawn vehicle :/ sorry for being so nub xD only place I used event handlers was on my login panel...

read my message above :) 

Link to comment

It is not actually my script, It was made by MoPoMaN and he used it server side, I made a similar script before....  But I had many problems with blips and markers showing for all players, this is why I want to make this script client side, after I will give it to him. xD 

You can find his script here.

I know is 3 years old....  But loads of servers want a good script, even if it's just to use as a skeleton for there own script :P 

Basically the idea is when player hits marker, truck spawns with trailer, removes marker client side so other players may take the job, and then when player hits the delivery marker his trailer gets destroyed, which then triggers client side event to put marker to spawn truck from again....  So rather basic script. :D 

As I say, MoPoMaN's script. :D 

If you want I will PM you some other ideas I had for scripts. :) 

Edited by kieran
Link to comment
1 hour ago, Pirulax said:

MTA is not that kind of game which loves trailers...There will be some syncing bugs

I found out that is not my biggest problem.... The trailers are so easy :3 not too worried about syncing....  The problem NOW is that blips show for all players! :/ Oh...  And also the truck doesn't want to warp ped in (I know, is server side function, why I put it in server) basically the bare bones of what I'm trying to achieve are above xD if you wanna help make it feel free, but I have also had another idea for trailers....  From another server I used to play at I know it is possible to attach that flat trailer you get for trains (forget the name)...It seems there were no bugs with that somehow. O.o

Anyway, thing I really want is to get it actually warping ped into vehicle and only showing stuff to player that hits marker, as opposed to showing blips etc to every player. :) 

P.S.  This is basically a script I will build on once working and I understand it a bit better, I plan to make numerous jobs in the future such as captain and arms/drugs delivery, basically warping a player into vehicle, spawning marker and blip for the player, then when player hits marker he gets cash sum.

Edited by kieran
bear bones? I think RIP English..... -_-
Link to comment
  • Discord Moderators

I want to help you, but i cant write a script now..Use some setElementData, and some if statements.And, if you have a custom minimap, that its much easier :D Btw, if the blip is created client side, i think you can destroy it with destroyElement(), but im not sure about that(and im lazy to look at the element list)

 

Edit ==> Blip is an element.Element list ==> elements.

 

Edited by Pirulax
adding a wiki link.
  • Like 1
Link to comment

Haha, I'll try bud...  the data is not the problem though -_- it's warping player to vehicle, as it is a server function I am trying to be "smart" and use triggerServerEvent to trigger the warp....  I am very inexperienced xD 

Edited by kieran
NVM, I get what you mean now! haha
Link to comment
  • Discord Moderators
--//***
--//**Server-Side
--//***

addEvent("warpPedIntoVehicleEvent", resourceRoot, function(veh) -- use resourceRoot if you want only to call the event from the same res, this way you can save CPU
    warpPedIntoVehicle(client,veh) --here i use global variable client, its always the players element who calls the function with triggerServerEvent.Its more secure then sending the player thru.

    
end)

--//***
--//**Client-Side
--Use this ClientSide to warp the ped into the veh.
--//***
triggerServerEvent("warpPedIntoVehicleEvent",resourceRoot) --use resourceRoot if the event is in the same resource as triggerServerEvent / triggerClientEVent, this way u cant save CPU.

Btw WarpPedIntoVehicle() is a shared function.

Edited by Pirulax
Link to comment

No offence here at all, I know you just started programming(?) and new to MTA scripting.. but you should really think about certain things. Stop coding and before you touch your mouse and keyboard, which is really hard, I know, do the logic in your head. You want to spawn a truck when player enters the marker -> simple. But how am I gonna do that? Well, do I need client or server? Server, because cars must be spawned on the server. This brings up the question, do I create the marker client or server side? Well, I can do it client side, but that wouldn't make sense since I still need to trigger to server.. why don't I create the marker on server to spawn my truck right away? 

 

The problem in your code is that you assumed you will have hitElement on the server, but you won't, since you never passed the "hitElement" argument in your triggerServerEvent. I know this community here is great, people will always help you, but you should really trace down the problems yourself. I'm pretty sure MTA is complaining about that hitElement not being defined...

Edited by pa3ck
  • Like 3
Link to comment
  • Discord Moderators

@pa3ck Belive me, i would comment "use /debugscript 3 and read this" everywhere, in every post.Nah, even if you know enligsh, than u can suppose whats the error..For example i never have read that Debugging turorial.

 

P.S. bad enlgish... sometimes xD

Edited by Pirulax
  • Like 1
Link to comment
  • Discord Moderators
27 minutes ago, kieran said:

Thanks @pa3ck Needed that :P you're right, not thinking it out, should make plan then use wiki to find stuff..... Otherwise I'll get nowhere.

you should use wiki before creating a plan... if the plan fails use GOOOGlE and then forum.

  • Like 1
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...