HustraDev Posted August 7, 2020 Share Posted August 7, 2020 (edited) Hello Guys, i'm working on this new script its a Mounted machine gun and i faced some problems, so first problem is in the `getOut` function supposed to make the player free by that i mean (detach the player from the minigun and the turret object `a minigun` and back to normal) and the second problem is, in drawin a crosshair for the weapon as you can see in the line [75] of the code it supposed to `drawImage`. but it does not < maybe i'm mistaken in writing the `drawImage` function under those lines of `cursorX` statement, if so please enlighten me and last but not least i want the `Weapon` to appear so i probably remove the `SetElementAlpha` to zero and replace the Weapon Model with a realistic weapon (i.e MG42) so, is this can be accomplish ? replacing the actual minigun weapon with another one? i tried to use function m42() txd = engineLoadTXD("m4.txd", 31) engineImportTXD(txd, 31) dff = engineLoadDFF("m4.dff", 31) engineReplaceModel(dff, 31) end --i guess the Weapon Model is 356 i tried with it but it didn't change the wepaon but its the same and if could replace the weapon how can i avoid the firing Rotation problems. because i think the weapon firing Rotation is already buggy. i really need this to work, beacuse i want to prove to myself that i'm capable of learning. code:- [ client side] local current w, h = guiGetScreenSize () addEvent("aim", true) addEventHandler("aim", resourceRoot, function(vehicle, object) current = { vehicle=vehicle, object=object} addEventHandler("onClientRender", root, aim) setElementAlpha(localPlayer, 0) addEventHandler("onClientResourceStop", resourceRoot, function () setElementAlpha(localPlayer, 255) setPedAnimation(localPlayer) end) addEventHandler("onClientPreRender", root, function () --[[ Creating the direction vector ]] local cameraX, cameraY, cameraZ, lx, ly, lz = getCameraMatrix() local directionVector = (Vector3(lx, ly, lz) - Vector3( cameraX, cameraY, cameraZ)) directionVector:normalize ( ) directionVector = directionVector * 300 local screenX, screenY = guiGetScreenSize() local startPositionX, startPositionY, startPositionZ = x, y, z local turrentX, turretY, turretZ = getElementPosition(localPlayer) -- must be the turret position turretZ = turretZ - 0.2 -- < just for test purposes -- draw turret dxDrawLine3D(turrentX, turretY, turretZ, turrentX, turretY, turretZ - 0.5, tocolor(0,0,0)) dxDrawLine3D(turrentX, turretY, turretZ - 0.5, turrentX + 0.5, turretY, turretZ - 1, tocolor(0,0,0)) dxDrawLine3D(turrentX, turretY, turretZ - 0.5, turrentX - 0.5, turretY, turretZ - 1, tocolor(0,0,0)) dxDrawLine3D(turrentX, turretY, turretZ - 0.5, turrentX, turretY - 0.5, turretZ - 1, tocolor(0,0,0)) dxDrawLine3D(turrentX, turretY, turretZ - 0.5, turrentX, turretY + 0.5, turretZ - 1, tocolor(0,0,0)) -- detect any hits local hit, hitX, hitY, hitZ, elementHit = processLineOfSight ( turrentX, turretY, turretZ, cameraX + directionVector.x, cameraY + directionVector.y, cameraZ + directionVector.z, true, -- checkBuildings true, -- checkVehicles true, -- checkPlayers true, -- checkObjects false, -- checkDummies false, -- seeThroughStuff false, -- shootThroughStuff localPlayer -- element ignoredElement ) if checkPassiveTimer("attachedToWeapon_aim", true, 300) then setElementData ( localPlayer, "attachedToWeapon_aim", {hitX,hitY,hitZ} ) end if not hit then hitX, hitY, hitZ = cameraX + directionVector.x, cameraY + directionVector.y, cameraZ + directionVector.z end dxDrawText(hit and "COLLISION!" or "NO COLLISION!", 300, 300) -- draw the line + cursor dxDrawLine3D(turrentX, turretY, turretZ, hitX, hitY, hitZ) local cursorX, cursorY = getScreenFromWorldPosition (hitX, hitY, hitZ) if cursorX then dxDrawImage (w/2-28, h/2-32,58,58,"files/crosshair.png",0,0,0) dxDrawCircle (screenX / 2, screenY / 2, 10) end end) end) function aim() local camRot = getPedCameraRotation(localPlayer) setElementAttachedOffsets(current.object, 0, -1.5, -0.25, 0, 0, -camRot+90) setElementRotation(localPlayer,0, 0, -camRot) local x,y,z = getWorldFromScreenPosition ( w/2, h/2, 50 ) setElementData ( localPlayer, "attachedToWeapon_aim", {x,y,z} ) local aim = getElementData ( localPlayer, "attachedToWeapon_aim" ) setWeaponTarget(Weapon, aim[1],aim[2],aim[3]) -- renderVehCross2() end function CreateRealWeapon(object) Weapon = createWeapon("minigun",0,0,0) setWeaponFiringRate(Weapon,70) setElementAlpha(Weapon,0) attachElements(Weapon,localPlayer,0.042,0.1,0.5,0.4,26,94) outputChatBox("Real Weapon Created At X:" .. x .. "Y:" .. y .. "Z:" .. z) end addEvent( "createWeapon", true ) addEventHandler( "createWeapon", localPlayer, CreateRealWeapon ) function renderVehCross2 () setCameraFieldOfView("player",70) end function ClientfireWeapon() if isElement(Weapon) then setPedAnimation(localPlayer,'Attractors','Stepsit_loop') setWeaponProperty(Weapon, "fire_rotation", 0, -30, 0) setWeaponState ( Weapon, "firing" ) end end addEvent("FireWeapon", true) addEventHandler("FireWeapon",getRootElement(), ClientfireWeapon) bindKey ("mouse1", "down", ClientfireWeapon) function ClientReadyWeapon() setWeaponState(Weapon, "ready") --- stops the weapon when the key is up end bindKey ("mouse1", "up", ClientReadyWeapon) function GetOut() destroyElement(Weapon) triggerServerEvent("remove",root) setElementAlpha(localPlayer, 255) setPedAnimation(localPlayer) removeEventHandler("onClientRender",root,aim) local x,y,z = getElementPosition(localPlayer) setElementPosition(localPlayer,x,y+4,z) end bindKey ("O", "down", GetOut) [server side] :- addCommandHandler("createTactical", function(player) x,y,z = getElementPosition(player) createVehicle(getVehicleModelFromName("Bobcat"), x, y+3, z+3) end) addCommandHandler("aim", function(player) local vehicle = getPedOccupiedVehicle(player) if not vehicle then return outputChatBox("Use in vehicle...", player) end removePedFromVehicle(player) object = createObject(2985, 0, 0, 0) local x,y,z = getElementRotation(object) triggerClientEvent("createWeapon",player,object) setElementCollisionsEnabled(object, false) attachElements(object, vehicle, 0, -1.5, -0.25) attachElements(player, object, -0.4, 0, 0.8) triggerClientEvent(player, "aim", resourceRoot, vehicle, object) end) addEvent("remove", true) addEventHandler("remove",root,function(player) detachElements(object,player) end) function TriggerFire() local x,y,z = getElementPosition(localPlayer) triggerClientEvent("FireWeapon",getRootElement()) end Thanks. Edited August 7, 2020 by HustraDev Link to comment
Moderators IIYAMA Posted August 7, 2020 Moderators Share Posted August 7, 2020 10 hours ago, HustraDev said: but its the same and if could replace the weapon how can i avoid the firing Rotation problems. You can attach an object to the weapon (same model) and set the opacity of the weapon-element to 0. This way you can change the attach offset in depended. 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