Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --client.lua
- setDevelopmentMode(true)
- local alreadyGotPowerup = false
- local actualPowerup = "none"
- --guardar armas creadas por el serverside
- local weapons={}
- local firing=true
- local ammo=0 --ammo of your weapon (clientside)
- local powerups={--[["rocket","specialrocket",]]"minigun","flame"}
- local pickups={}
- function resetPowerupState()
- unbindKey("mouse1")
- alreadyGotPowerup = false
- actualPowerup = "none"
- end
- function createMarioPickup(x,y,z)
- local pickup={}
- --Elementos
- pickup.object = createObject(2912,x,y,z)
- pickup.colshape = createColCuboid(x-1,y-1,z-1,2,2,2)
- --Movimiento y colision
- setElementCollisionsEnabled ( pickup.object, false )
- pickup.timer = setTimer(
- function()
- local x,y,z = getElementPosition(pickup.object)
- moveObject ( pickup.object, 5000, x, y, z, 180, 180, 180)
- end,5000,0)
- table.insert(pickups,pickup)
- end
- --Simular creacion de pickups
- addEventHandler("onClientResourceStart",getRootElement(getThisResource()),
- function ()
- createMarioPickup(1469,1765,10.2)
- createMarioPickup(1489,1766,10.2)
- end
- )
- function onMarioPickupHit(theElement)
- if getElementType(theElement) == "vehicle" then
- local colshapeSource
- local objectSource
- for i,v in ipairs(pickups) do
- if v.colshape == source then
- colshapeSource = v.colshape
- objectSource = v.object
- --respawnear
- local x,y,z = getElementPosition(v.object)
- setTimer(
- function()
- createMarioPickup(x,y,z)
- end,5000,1)
- --Destruir el objeto y todas esas cosas
- destroyElement ( v.colshape )
- destroyElement ( v.object )
- killTimer (v.timer)
- table.remove(pickups,i)
- end
- end
- if (colshapeSource) then
- if (objectSource) then
- getRandomPowerUp(theElement)
- end
- end
- end
- end
- addEventHandler("onClientColShapeHit",getRootElement(),onMarioPickupHit)
- function getRandomPowerUp(theElement)
- local sourcePlayer=getVehicleOccupant(theElement)
- if sourcePlayer == getLocalPlayer() then --SI tu tomaste el pickup
- local powerupGot=powerups[math.random(1,#powerups)]
- if actualPowerup=="minigun" or actualPowerup=="flame" then
- local sourcePlayer = getLocalPlayer()
- triggerServerEvent("killWeapon",getRootElement(),sourcePlayer)
- removeEventHandler("onClientRender",getRootElement(),updateAmmo)
- removeEventHandler("onClientKey",getRootElement(),triggerStateFiring)
- resetPowerupState()
- end
- if powerupGot == "rocket" then
- rocket(sourcePlayer)
- alreadyGotPowerup = true
- actualPowerup = "rocket"
- elseif powerupGot == "specialrocket" then
- specialrocket(sourcePlayer)
- alreadyGotPowerup = true
- actualPowerup = "specialrocket"
- elseif powerupGot == "minigun" then
- minigun(sourcePlayer)
- alreadyGotPowerup = true
- actualPowerup = "minigun"
- elseif powerupGot == "flame" then
- flamethrower(sourcePlayer)
- alreadyGotPowerup = true
- actualPowerup = "flame"
- end
- outputChatBox(powerupGot)
- end
- end
- function rocket(sourcePlayer)
- bindKey("mouse1","down",
- function()
- if actualPowerup == "rocket" then
- local theVehicle = getPedOccupiedVehicle ( sourcePlayer )
- local x,y,z = getElementPosition(theVehicle)
- local rX,rY,rZ = getElementRotation(theVehicle)
- local x = x+4*math.cos(math.rad(rZ+90))
- local y = y+4*math.sin(math.rad(rZ+90))
- createProjectile(theVehicle, 19, x, y, z, 1.0, nil)
- resetPowerupState()
- end
- end
- )
- end
- function specialrocket(sourcePlayer)
- bindKey("mouse1","down",
- function()
- if actualPowerup == "specialrocket" then
- local theVehicle = getPedOccupiedVehicle ( sourcePlayer )
- local x,y,z = getElementPosition(theVehicle)
- local rX,rY,rZ = getElementRotation(theVehicle)
- local x = x+4*math.cos(math.rad(rZ+90))
- local y = y+4*math.sin(math.rad(rZ+90))
- --Get nearest enemycar
- local allCars = getElementsByType("vehicle")
- local distance = 0
- local target
- for i,v in ipairs(allCars) do
- if v ~= theVehicle then
- local x,y,z = getElementPosition(v)
- local x2,y2,z2 = getElementPosition(theVehicle)
- local carDistance = getDistanceBetweenPoints3D(x,y,z,x2,y2,z2)
- if carDistance < distance or distance == 0 then
- distance = carDistance
- target = v
- end
- end
- end
- createProjectile(theVehicle, 20, x, y, z, 1.0, target)
- resetPowerupState()
- end
- end
- )
- end
- function createServerMinigun(sourcePlayer,type)
- triggerServerEvent("triggerCreateMinigun",getRootElement(),sourcePlayer,type)
- end
- addEvent("triggerClientCreateMinigun",true)
- function createMinigun(sourcePlayer,type)
- if type == "flame" then
- local x,y,z = getElementPosition(getPedOccupiedVehicle(sourcePlayer))
- local vehicle = getPedOccupiedVehicle(sourcePlayer)
- local flamethrower={}
- flamethrower.wep = createWeapon("flamethrower",x,y,z)
- flamethrower.owner = sourcePlayer
- flamethrower.type = "flame"
- attachElements(flamethrower.wep,vehicle,0,-2,0.2,0,0,270)
- table.insert(weapons,flamethrower)
- else
- local x,y,z = getElementPosition(getPedOccupiedVehicle(sourcePlayer))
- local vehicle = getPedOccupiedVehicle(sourcePlayer)
- local minigun={}
- minigun.wep = createWeapon("minigun",x,y,z)
- minigun.owner = sourcePlayer
- minigun.type = "minigun"
- setWeaponProperty ( minigun.wep, "damage", 0.2 )
- attachElements(minigun.wep,vehicle,1,0,0,0,0,90)
- table.insert(weapons,minigun)
- end
- end
- addEventHandler("triggerClientCreateMinigun",getRootElement(),createMinigun)
- local tempval
- function minigun(sourcePlayer)
- bindKey("mouse1","down",
- function()
- tempval = sourcePlayer
- if actualPowerup == "minigun" then
- createServerMinigun(sourcePlayer)
- unbindKey("mouse1")
- ammo = 200
- addEventHandler("onClientRender",getRootElement(),updateAmmo)
- addEventHandler("onClientKey",getRootElement(),triggerStateFiring)
- end
- end
- )
- end
- function triggerStateFiring(button,state)
- if button == "mouse1" then
- triggerServerEvent("triggerMinigunFire",getRootElement(),tempval,state)
- if state == false then
- firing = false
- elseif state == true then
- firing = true
- end
- end
- end
- addEvent("triggerClientFireMinigun",true)
- function toggleFire(sourcePlayer,state)
- for i,v in ipairs(weapons) do
- if sourcePlayer == v.owner then
- if state == true then
- setWeaponState(v.wep,"firing")
- elseif state == false then
- setWeaponState(v.wep,"ready")
- end
- if v.type == "flame" then
- triggerEvent("triggerFire",getRootElement(),sourcePlayer,state)
- end
- end
- end
- end
- addEventHandler("triggerClientFireMinigun",getRootElement(),toggleFire)
- addEvent("triggerFire")
- function createFire(sourcePlayer,state)
- if state == true then
- if not isTimer(fireTimer) then
- fireTimer = setTimer(
- function(sourcePlayer,weapons)
- for i,v in ipairs(weapons) do
- if v.owner == sourcePlayer then
- triggerEvent("createFireForReal",getRootElement(),sourcePlayer,v.wep)
- end
- end
- end,100,0,sourcePlayer,weapons
- )
- end
- elseif state == false then
- if isTimer(fireTimer) then
- killTimer(fireTimer)
- end
- end
- end
- addEventHandler("triggerFire",getRootElement(),createFire)
- function updateAmmo()
- if firing == true then
- ammo = ammo - 1
- end
- if ammo <= 0 then
- local sourcePlayer = getLocalPlayer()
- triggerServerEvent("killWeapon",getRootElement(),sourcePlayer)
- if isTimer(fireTimer) then
- killTimer(fireTimer)
- end
- removeEventHandler("onClientRender",getRootElement(),updateAmmo)
- removeEventHandler("onClientKey",getRootElement(),triggerStateFiring)
- resetPowerupState()
- end
- end
- addEvent("killClientWeapon",true)
- function killWeapon(sourcePlayer)
- for i,v in ipairs(weapons) do
- if sourcePlayer == v.owner then
- destroyElement(v.wep)
- tempval2 = nil
- table.remove(weapons,i)
- end
- end
- end
- addEventHandler("killClientWeapon",getRootElement(),killWeapon)
- function flamethrower(sourcePlayer)
- bindKey("mouse1","down",
- function()
- tempval = sourcePlayer
- if actualPowerup == "flame" then
- local type="flame"
- createServerMinigun(sourcePlayer,type)
- unbindKey("mouse1")
- ammo = 200
- addEventHandler("onClientRender",getRootElement(),updateAmmo)
- addEventHandler("onClientKey",getRootElement(),triggerStateFiring)
- end
- end
- )
- end
Advertisement
Add Comment
Please, Sign In to add comment