Xwad Posted February 13, 2015 Author Share Posted February 13, 2015 you mean like this? i tryed this but it does not shoot only the green point works -- *** THESE ARE THE SETTINGS. MODIFY IN META.XML *** reloadTime = 6000 -- for Rhino reloadTimeHydra = 4000 -- for Hydra reloadTimeHunter = 3000 -- for Hunter range = 2 -- To increase range, set this value to 1. To decrease range, use 3. My code is optimized for 2. --*** BETTER NOT TOUCH BELOW *** event = nil fired = false drawHandler = nil armedVehicles = {[425]=true, [520]=true, [601]=true} w, h = guiGetScreenSize() height = nil endY = nil r, g = 255, 0 time = 0 function getPositionFromElementOffset(element,offX,offY,offZ) local m = getElementMatrix ( element ) -- Get the matrix local x = offX * m[1][1] + offY * m[2][1] + offZ * m[3][1] + m[4][1] local y = offX * m[1][2] + offY * m[2][2] + offZ * m[3][2] + m[4][2] local z = offX * m[1][3] + offY * m[2][3] + offZ * m[3][3] + m[4][3] return x, y, z end function onStart() height = math.ceil(h / 50) if height < 19 then height = 19 end endY = math.ceil((h/100)*6) corona = createMarker (0, 0, -10, "corona", 1.0, 200, 100, 0, 150) bindKey ( "mouse1", "down", toggleRhino ) bindKey("vehicle_fire", "down", toggleHunter) bindKey("vehicle_secondary_fire", "down", toggleHunter) color = tocolor(255, 255, 255, 200) end addEventHandler("onClientResourceStart", resourceRoot, onStart) function entering( thePlayer, seat ) if thePlayer == localPlayer then toggleControl ( "vehicle_fire", true ) toggleControl ( "vehicle_secondary_fire", true ) local model = getElementModel ( source ) if model == 601 or model == 425 or model == 520 then drawHandler = addEventHandler("onClientRender", root, reloadFinished) end if model == 601 then toggleControl ( "vehicle_fire", false ) addEventHandler("onClientRender", root, marker) event = true end end end addEventHandler("onClientVehicleEnter", getRootElement(), entering) function exit( thePlayer, seat ) if thePlayer == localPlayer then local model = getElementModel ( source ) if model == 601 then if event ~= nil then removeEventHandler("onClientRender", root, marker) event = nil end toggleControl ( "vehicle_fire", true ) end end end addEventHandler("onClientVehicleExit", getRootElement(), exit) addEventHandler("onClientElementDestroy", getRootElement(), function () if (getElementModel(source) == 601 then if event ~= nil then removeEventHandler("onClientRender", root, marker) event = nil end toggleControl ( "vehicle_secondary_fire", true ) end end) function wasted() if source == localPlayer then if event ~= nil then removeEventHandler("onClientRender", root, marker) event = nil end toggleControl ( "vehicle_fire", true ) toggleControl ( "vehicle_secondary_fire", true ) end end addEventHandler ( "onClientPlayerWasted", getLocalPlayer(), wasted ) function clientResourceStop() toggleControl ( "vehicle_fire", true ) toggleControl ( "vehicle_secondary_fire", true ) end addEventHandler( "onClientResourceStop", getResourceRootElement(getThisResource()), clientResourceStop ) function toggleRhino() if fired == false then if isPedInVehicle ( localPlayer ) and not isCursorShowing() then local veh = getPedOccupiedVehicle ( localPlayer ) if (veh) then if ( getElementModel ( veh ) == 601 ) then fired = true local turX, turY, turZ = getElementPosition(veh) local cx,cy,cz = getVehicleComponentPosition( veh, "misc_a" ) local x, y, z = getVehicleComponentPosition( veh, "misc_c" ) local barrelX, barrelY, barrelZ = getPositionFromElementOffset(veh,cx,cy,cz) local muzzleX, muzzleY, muzzleZ = getPositionFromElementOffset(veh,x,y,z) local velX = (muzzleX - barrelX) /range local velY = (muzzleY - barrelY) /range local velZ = (muzzleZ - barrelZ) /range local vx, vy, vz = getElementVelocity(veh) setElementVelocity (veh, vx+(((velX/3)*(-1))/50), vy+(((velY/3)*(-1))/50), vz+(((velZ/3)*(-1))/50) ) bullet = createProjectile(veh, 21, muzzleX, muzzleY, muzzleZ, 1, nil, 0, 0, 0, velX, velY, velZ) createExplosion(turX, turY, turZ-10, 8, false, 0.5, false) removeEventHandler("onClientRender", root, reloadFinished) drawHandler = nil start = getTickCount() drawHandler = addEventHandler("onClientRender", root, reload) time = 6000 soundTimer = setTimer(function() local sound = playSound("reload.mp3") setSoundVolume(sound, 0.1) end, (reloadTime-1000), 1) end end end end end function toggleHunter(control) if isPedInVehicle(localPlayer) then local model = getElementModel(getPedOccupiedVehicle(localPlayer)) if model == 425 and fired == false and control == "vehicle_fire" then fired = true setTimer(function() toggleControl ( "vehicle_fire", false ) end, 100, 1) setTimer(function() toggleControl ( "vehicle_fire", true ) fired = false end, reloadTimeHunter, 1) removeEventHandler("onClientRender", root, reloadFinished) drawHandler = nil start = getTickCount() drawHandler = addEventHandler("onClientRender", root, reload) time = 3000 elseif model == 520 and fired == false and control == "vehicle_secondary_fire" then fired = true setTimer(function() toggleControl ( "vehicle_secondary_fire", false ) end, 100, 1) setTimer(function() toggleControl ( "vehicle_secondary_fire", true ) fired = false end, reloadTimeHydra, 1) removeEventHandler("onClientRender", root, reloadFinished) drawHandler = nil start = getTickCount() drawHandler = addEventHandler("onClientRender", root, reload) time = 4000 end end end function reload() if not isPedInVehicle(localPlayer) then removeEventHandler("onClientRender", root, reload) drawHandler = nil end setMarkerColor ( corona, 255, 0, 0, 100 ) local getTime = (getTickCount()) - start local height = math.ceil(h / 50) if height < 19 then height = 19 end dxDrawRectangle (0, h-endY-height-6, height+6, endY, tocolor(0,0,0,150), false) local endY = math.ceil((h/100)*6) endY = endY - 4 if getTime <= time then endY = (getTime/time)*endY else removeEventHandler("onClientRender", root, reload) drawHandler = nil drawHandler = addEventHandler("onClientRender", root, reloadFinished) if getElementModel(getPedOccupiedVehicle(localPlayer)) ~= 601 then local sfx = playSFX ( "genrl", 136, 72 ) setSoundVolume (sfx, 1) end setMarkerColor ( corona, r, g, 0, 150 ) start = nil fired = false end dxDrawRectangle (2, h-endY-height-8, height+2, endY, tocolor(220,0,0,150), false) end function reloadFinished() if not isPedInVehicle(localPlayer) then removeEventHandler("onClientRender", root, reloadFinished) drawHandler = nil else dxDrawRectangle (0, h-endY-height-6, height+6, endY, tocolor(0,0,0,150), false) dxDrawRectangle (2, h-endY-height-4, height+2, endY-4, tocolor(220,0,0,150), false) end end function marker() if not isPedInVehicle(localPlayer) then removeEventHandler("onClientRender", getRootElement(), marker) if isTimer(soundTimer) then killTimer(soundTimer) end fired = false drawHandler = nil setElementPosition (corona, 0, 0, -10) else local vx, vy, vz = nil, nil, nil local cx, cy, cz = nil, nil, nil local veh = getPedOccupiedVehicle ( localPlayer ) if veh then local x, y, z = getVehicleComponentPosition( veh, "misc_a" ) cx, cy, cz = getPositionFromElementOffset( veh, x, y, z ) x, y, z = getVehicleComponentPosition( veh, "misc_c" ) vx, vy, vz = getPositionFromElementOffset( veh, x, y, z ) if vx ~= nil then local velX = (vx - cx) /range local velY = (vy - cy) /range local velZ = (vz - cz) /range local vx1, vy1 = cx + (velX * 50 * 0.1), cy + (velY * 50 * 0.1) local vx2, vy2 = cx + (velX * 50 * 0.2), cy + (velY * 50 * 0.2) local vx3, vy3 = cx + (velX * 50 * 0.3), cy + (velY * 50 * 0.3) local vx4, vy4 = cx + (velX * 50 * 0.5), cy + (velY * 50 * 0.5) local vx5, vy5 = cx + (velX * 50 * 0.6), cy + (velY * 50 * 0.6) local vx6, vy6 = cx + (velX * 50 * 0.7), cy + (velY * 50 * 0.7) local vx7, vy7 = cx + (velX * 50 * 0.-- s8) -->, cy + (velY * 50 * 0. local m1 = cz + (velZ * 50 * 0.1) - ((getGravity()*2400*0.01)/2) local m2 = cz + (velZ * 50 * 0.2) - ((getGravity()*2400*0.04)/2) local m3 = cz + (velZ * 50 * 0.3) - ((getGravity()*2400*0.09)/2) local m4 = cz + (velZ * 50 * 0.5) - ((getGravity()*2400*0.25)/2) local m5 = cz + (velZ * 50 * 0.6) - ((getGravity()*2400*0.36)/2) local m6 = cz + (velZ * 50 * 0.7) - ((getGravity()*2400*0.49)/2) local m7 = cz + (velZ * 50 * 0.-- s8) --> - ((getGravity()*2400*0.64)/2) Link to comment
Xwad Posted February 13, 2015 Author Share Posted February 13, 2015 need i rewrite the name of the vehicle? function toggleRhino() function toggleS.W.A.T.() Link to comment
Professional Posted February 13, 2015 Share Posted February 13, 2015 Try CODE bindKey("Button that you want him to hit a rocket", "down", local veh = getPedOccupiedVehicle ( localPlayer ) if vehicle and getElementModel(vehicle) == ID then local x, y, z = getElementPosition ( localPlayer) createProjectile(getLocalPlayer(),19,x,y,z,200) then [thePlayer] = setTimer(function() end,1000,1,thePlayer) end end Link to comment
Xwad Posted February 13, 2015 Author Share Posted February 13, 2015 This is client side right? I try it but the vehicle does not shoot:/ Link to comment
Xwad Posted February 14, 2015 Author Share Posted February 14, 2015 its not working:/ Link to comment
Einheit-101 Posted February 17, 2015 Share Posted February 17, 2015 Be patient because i have to look at this myself and i have currently no time left. Link to comment
BlueTheFurry Posted February 17, 2015 Share Posted February 17, 2015 If you want to do scripting you need to learn how to do it first.... Nobody will work with someone who has no clue about what he is doing. Link to comment
Xwad Posted February 17, 2015 Author Share Posted February 17, 2015 ...I have a little clue-.- Link to comment
Einheit-101 Posted February 21, 2015 Share Posted February 21, 2015 Here, this vreload includes SWAT tank and a fix for the Ctrl / Alt shooting bug. https://www.dropbox.com/s/fmqhp8px8idzp ... d.zip?dl=0 Link to comment
darhal Posted February 21, 2015 Share Posted February 21, 2015 I will make this tank script for you for 8$ only Link to comment
Xwad Posted February 22, 2015 Author Share Posted February 22, 2015 No thanks. I don't pay for games. Link to comment
Einheit-101 Posted March 9, 2015 Share Posted March 9, 2015 Xwad, It is Not really possible to kill the rhino with SWAT because explosions cause no damage to rhino and this is not fixable (it is with some very dirty hax) so I can't provide a fix for this. Link to comment
Moderators IIYAMA Posted March 9, 2015 Moderators Share Posted March 9, 2015 dirty hax? It is just a simple overwrite using lua, if you know a little bit lua this isn't a big deal. Link to comment
Xwad Posted March 9, 2015 Author Share Posted March 9, 2015 Thanks for for your answer Einheit! So is there no funtion that makes demage the rhino with explosions? Link to comment
Dealman Posted March 9, 2015 Share Posted March 9, 2015 Of course there is, you can use processLineOfSight. If it hits a Rhino, damage it. Of course you'd have to create dummy explosions and muzzleflashes and all that jazz. Link to comment
Addlibs Posted March 9, 2015 Share Posted March 9, 2015 Afaik, Rhinos do take damage from fire and/or explosions. I've managed to destroy a Rhino with another Rhino, however, it's more probably that the fire after the explosion causes the damage. Link to comment
Einheit-101 Posted March 17, 2015 Share Posted March 17, 2015 ProcessLineOfSight with custom effects and all that stuff is a dirty workaround imho. And not as precise as necessary. Explosions do not cause damage to the rhino. Fire does. You would need to use onClientExplosion and determine if a tank/swat is within a certain distance to this explosion and apply damage according to its distance from explosion center. Still there is the problem that explosions dont even trigger the event when they are not streamed in so even this approach needs testing. Server side onExplosion would fit perfectly but does not even exist and you would have to sync it manually. Oh, and there is another approach to do this with high precision by using Satchels and custom effects. Xwad, look my PM for your question about the range. Link to comment
Xwad Posted March 17, 2015 Author Share Posted March 17, 2015 You sad the distance is the same. Its not I test it. I shoot with the swat tank and it cant shoot so far then rhino. Link to comment
Xwad Posted March 17, 2015 Author Share Posted March 17, 2015 I found the range and set it to 3. Thanks for you answer:) Link to comment
Einheit-101 Posted March 19, 2015 Share Posted March 19, 2015 You need to use something lower than 2 to increase the range. 3 decreases the range (I know, it doesn't make sense, but that's how it's calculated). If you want to get the same range for both vehicles I need to write a small workaround because the total range depends on the barrel length of your tank. Short barrel = low range. And SWAT has a very short gun. Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now