Jump to content

What is wrong?


LooooP

Recommended Posts

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
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

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

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

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...