LooooP Posted August 16, 2010 Share Posted August 16, 2010 Well, I made a script for make a object lose Collision after a player hit the Marker My script: (called 'Script.lua') Player = getLocalPlayer function ClientStarted () WaterJump = createObject(1655, 264.8388671875, -2051.4384765625, 21.06884765625, 53.9912109375, 0, 180) WaterJumpCheckpoint = createMarker(264.8388671875, -2034.388671875, 50.7795753479, "cylinder", 7, 0, 0, 255, 0) end function MarkerHit(hitPlayer, matchingDimension) if hitPlayer ~= Player then return end Car = getPedOccupiedVehicle(hitPlayer) if source == WaterJumpCheckpoint then setElementCollisionsEnabled(WaterJump, false) setTimer(Collision, 10000, 1) end end function Collision () setElementCollisionsEnabled(WaterJump, true) end addEventHandler ( "onClientMarkerHit", getRootElement(), MarkerHit ) addEventHandler( "onClientResourceStart", getResourceRootElement(getThisResource()), ClientStarted ) My Meta.xml <meta> <info gamemodes="race" type="map" name="[DM] LooooP ft NitroN" author="LooooP and NitroN" version="1.0.0" description="Enjoy our map" /> <map src="[DM] LooooP ft NitroN.map" dimension="0" /> <script src="Script.lua" type="client" /> <settings> <setting name="#skins" value="[ "random" ]" /> <setting name="#maxplayers" value="[ 32 ]" /> <setting name="#gamespeed" value="[ 1 ]" /> <setting name="#ghostmode" value="[ "false" ]" /> <setting name="#time" value="0:0" /> <setting name="#vehicleweapons" value="[ "true" ]" /> <setting name="#minplayers" value="[ 0 ]" /> <setting name="#weather" value="[ 1 ]" /> <setting name="#gravity" value="[ 0.008000 ]" /> <setting name="#waveheight" value="[ 1 ]" /> <setting name="#respawntime" value="[ 0 ]" /> <setting name="#locked_time" value="[ true ]" /> <setting name="#duration" value="[ 1800 ]" /> <setting name="#respawn" value="[ "timelimit" ]" /> </settings> </meta> When I open the map with /debugscript 3 MTA shows it for me: INFO: #ffffffLo#ff0000oooP opened map [DM] LooooP ft NitroN. (opening took 172 ms) INFO: Suspending editor_main INFO: Votemanager precreateGuiElements INFO: Race resource starting INFO: Race onGamemodeStart INFO: onGamemodeMapStart(editor_test) INFO: Loaded race mode Freeroam The problem: The script make the object, but after I hit the Marker the object don't become non-collision. I checked the script about 100 times and I didn't find any error, but what is wrong with my script? Link to comment
dzek (varez) Posted August 16, 2010 Share Posted August 16, 2010 bug on first line Player = getLocalPlayer() btw: you can attach your onClientMarkerHit to your marker, instead of checking source edit: for what is line 11? Link to comment
LooooP Posted August 16, 2010 Author Share Posted August 16, 2010 Ok, I put the '()' in front of getLocalPlayer, but now the object is non-collision before hit the marker Link to comment
dzek (varez) Posted August 16, 2010 Share Posted August 16, 2010 Player = getLocalPlayer() function ClientStarted () outputDebugString("starting resource") WaterJump = createObject(1655, 264.8388671875, -2051.4384765625, 21.06884765625, 53.9912109375, 0, 180) WaterJumpCheckpoint = createMarker(264.8388671875, -2034.388671875, 50.7795753479, "cylinder", 7, 0, 0, 255, 0) addEventHandler ( "onClientMarkerHit", WaterJumpCheckpoint, MarkerHit ) end function MarkerHit(hitPlayer, matchingDimension) outputDebugString("something hit marker?") if hitPlayer == Player and matchingDimension then outputDebugString("and looks like this is local player") --Car = getPedOccupiedVehicle(hitPlayer) setElementCollisionsEnabled(WaterJump, false) setTimer(Collision, 10000, 1) end end function Collision () outputDebugString("reverting collision") setElementCollisionsEnabled(WaterJump, true) end addEventHandler( "onClientResourceStart", getResourceRootElement(getThisResource()), ClientStarted ) now watch out for messages in debugscript /3 Link to comment
LooooP Posted August 16, 2010 Author Share Posted August 16, 2010 Its a problem in the marker, the car hit it with 50meters Z far away of the marker (the marker is in the top of a loop) EDIT: I fixed it using a new timer: Player = getLocalPlayer () function ClientStarted () WaterJump = createObject(1655, 264.8388671875, -2051.4384765625, 21.06884765625, 53.9912109375, 0, 180) WaterJumpCheckpoint = createMarker(264.8388671875, -2034.388671875, 50.7795753479, "cylinder", 7, 0, 0, 255, 0) end function MarkerHit(hitPlayer, matchingDimension) if hitPlayer ~= Player then return end if source == WaterJumpCheckpoint then setTimer(Collision1, 3000, 1) end end function Collision1 () setElementCollisionsEnabled(WaterJump, false) setTimer(Collision2, 10000, 1) end function Collision2 () setElementCollisionsEnabled(WaterJump, true) end addEventHandler ( "onClientMarkerHit", getRootElement(), MarkerHit ) addEventHandler( "onClientResourceStart", getResourceRootElement(getThisResource()), ClientStarted ) Thank you for help Link to comment
dzek (varez) Posted August 16, 2010 Share Posted August 16, 2010 yup.. you can hit marker in any height, even 100000units above.. You can fix it with getting local player and marker position on hit and getting distance with some function (cant remember its name) (you can find it on wiki - search "useful functions") -- but remember -- once you hit marker and distance will be too far - you have to left marker and hit it again 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