Jump to content

Need help about scripting...


[DemoN]

Recommended Posts

Posted (edited)

1) I've created 5 markers (for now). When I hit them they'll be destroyed( i know how to do that) but when all markers are destroyed (random. not in order), I want to give m4 (id: 31) to player and dunno how to do that. Can someone help me? Here is the code:

local myMarker = createMarker( 0, 0, 4, 'cylinder', 1, 255, 0, 0, 150 ) 
local myMarker2 = createMarker( 0, 2, 4, 'cylinder', 1, 255, 0, 0, 150 ) 
local myMarker3 = createMarker( 0, 4, 4, 'cylinder', 1, 255, 0, 0, 150 ) 
local myMarker4 = createMarker( 0, 6, 4, 'cylinder', 1, 255, 0, 0, 150 ) 
local myMarker5 = createMarker( 0, 8, 4, 'cylinder', 1, 255, 0, 0, 150 ) 
  
function MarkerHit( hitElement, matchingDimension ) 
        destroyElement(myMarker) 
end 
addEventHandler( "onMarkerHit", myMarker, MarkerHit ) 
  
function MarkerHit2( hitElement, matchingDimension ) 
        destroyElement(myMarker2) 
end 
addEventHandler( "onMarkerHit", myMarker2, MarkerHit2 ) 
  
  
function MarkerHit3( hitElement, matchingDimension ) 
        destroyElement(myMarker3) 
end 
addEventHandler( "onMarkerHit", myMarker3, MarkerHit3 ) 
  
  
function MarkerHit4( hitElement, matchingDimension ) 
        destroyElement(myMarker4) 
end 
addEventHandler( "onMarkerHit", myMarker4, MarkerHit4 ) 
  
  
function MarkerHit5( hitElement, matchingDimension ) 
        destroyElement(myMarker5) 
end 
addEventHandler( "onMarkerHit", myMarker5, MarkerHit5 ) 

2) Where can i find an example of attaching an object to player's bone?

Edited by Guest

My in game nick is Lemonade

Posted

How about this:

local myMarkers =  
{ createMarker( 0, 0, 4, 'cylinder', 1, 255, 0, 0, 150 ), 
createMarker( 0, 2, 4, 'cylinder', 1, 255, 0, 0, 150 ), 
createMarker( 0, 4, 4, 'cylinder', 1, 255, 0, 0, 150 ), 
createMarker( 0, 6, 4, 'cylinder', 1, 255, 0, 0, 150 ), 
createMarker( 0, 8, 4, 'cylinder', 1, 255, 0, 0, 150 ) 
} 
  
function PlayerMarkerHit( markerHit, matchingDimension ) 
      local player = source 
      for k, marker in ipairs(myMarkers) do 
              if marker == markerHit then 
                      destroyElement ( markerHit ) 
                      return 
              end 
      end 
      giveWeapon ( player, 31 ) 
end 
addEventHandler( "onPlayerMarkerHit", root, PlayerMarkerHit ) 

2) Search for "bone" in community or this one https://community.multitheftauto.com/index.php?p= ... ls&id=1823

Learn Lua - Learn to script - GUI scripting

Scripter tools - Find/fix errors yourself(!)

Don't pm me for scripting help, keep it for the Scripting subforum!

Posted

It creates markers but when all markers are destroyed, it doesn't give me m4 :|

Edit: Thanks for bone link :)

Edit2 (about bones): Is there an easy way? It looks like very hard :lol:

My in game nick is Lemonade

Posted
getPedBonePosition 

?

Uhm.. ok but I don't know how to calculate it :| can you give an example? i don't care which bone or which object, just need a little example which i can understand easily :|

My in game nick is Lemonade

Posted

its client side only btw

    local x, y, z = getPedBonePosition(getLocalPlayer(), 6) 
fxAddBlood(x, y, z, x, y, z+3, 50, 1) 

A blood on his head

6 is the bone id 6 is the head2

You can find the ids here: https://wiki.multitheftauto.com/wiki/File:Bones.jpg

Business System viewtopic.php?f=108&t=35797

Notepad++ Syntax Highlighting & Auto Completion viewtopic.php?f=91&t=76726

SQLite Tutorial viewtopic.php?f=148&t=38203

Posted

well... I've created something so silly and it says: bad argument @ attachElements

function myTest() 
  
local x, y, z = getPedBonePosition(getLocalPlayer(), 6) 
local object = createObject(1369, 0, 0, 0) 
attachElements(object, source, x, y, z) 
  
end 
addCommandHandler("testing", myTest) 

My in game nick is Lemonade

Posted

Source is not defined.

function myTest() 
  
local x, y, z = getPedBonePosition(getLocalPlayer(), 6) 
local object = createObject(1369, 0, 0, 0) 
attachElements(object, getLocalPlayer(), x, y, z) 
  
end 
addCommandHandler("testing", myTest) 

But this won't do what you want

here is what you want:

function myTest() 
local x, y, z = getPedBonePosition(getLocalPlayer(), 6) 
local object = createObject(1369, x, y, z) 
attachRotationAdjusted(object, getLocalPlayer()) 
end 
addCommandHandler("testing", myTest) 
  
function attachRotationAdjusted ( from, to ) 
    local frPosX, frPosY, frPosZ = getElementPosition( from ) 
    local frRotX, frRotY, frRotZ = getElementRotation( from ) 
    local toPosX, toPosY, toPosZ = getElementPosition( to ) 
    local toRotX, toRotY, toRotZ = getElementRotation( to ) 
    local offsetPosX = frPosX - toPosX 
    local offsetPosY = frPosY - toPosY 
    local offsetPosZ = frPosZ - toPosZ 
    local offsetRotX = frRotX - toRotX 
    local offsetRotY = frRotY - toRotY 
    local offsetRotZ = frRotZ - toRotZ 
    offsetPosX, offsetPosY, offsetPosZ = applyInverseRotation ( offsetPosX, offsetPosY, offsetPosZ, toRotX, toRotY, toRotZ ) 
    attachElements( from, to, offsetPosX, offsetPosY, offsetPosZ, offsetRotX, offsetRotY, offsetRotZ ) 
end 
  
function applyInverseRotation ( x,y,z, rx,ry,rz ) 
    local DEG2RAD = (math.pi * 2) / 360 
    rx = rx * DEG2RAD 
    ry = ry * DEG2RAD 
    rz = rz * DEG2RAD 
    local tempY = y 
    y =  math.cos ( rx ) * tempY + math.sin ( rx ) * z 
    z = -math.sin ( rx ) * tempY + math.cos ( rx ) * z 
    local tempX = x 
    x =  math.cos ( ry ) * tempX - math.sin ( ry ) * z 
    z =  math.sin ( ry ) * tempX + math.cos ( ry ) * z 
    tempX = x 
    x =  math.cos ( rz ) * tempX + math.sin ( rz ) * y 
    y = -math.sin ( rz ) * tempX + math.cos ( rz ) * y 
    return x, y, z 
end 

Business System viewtopic.php?f=108&t=35797

Notepad++ Syntax Highlighting & Auto Completion viewtopic.php?f=91&t=76726

SQLite Tutorial viewtopic.php?f=148&t=38203

Posted

Thanks. but still dunno that:

local myMarkers = 
{ createMarker( 0, 0, 4, 'cylinder', 1, 255, 0, 0, 150 ), 
createMarker( 0, 2, 4, 'cylinder', 1, 255, 0, 0, 150 ), 
createMarker( 0, 4, 4, 'cylinder', 1, 255, 0, 0, 150 ), 
createMarker( 0, 6, 4, 'cylinder', 1, 255, 0, 0, 150 ), 
createMarker( 0, 8, 4, 'cylinder', 1, 255, 0, 0, 150 ) 
} 
  
function PlayerMarkerHit( markerHit, matchingDimension ) 
      local player = source 
      for k, marker in ipairs(myMarkers) do 
              if marker == markerHit then 
                      destroyElement ( markerHit ) 
                      return 
              end 
      end 
      giveWeapon ( player, 31 ) 
end 
addEventHandler( "onPlayerMarkerHit", root, PlayerMarkerHit ) 

It creates markers but when all markers are destroyed, it doesn't give me m4

My in game nick is Lemonade

Posted
local myMarkers = 
{ createMarker( 0, 0, 4, 'cylinder', 1, 255, 0, 0, 150 ), 
createMarker( 0, 2, 4, 'cylinder', 1, 255, 0, 0, 150 ), 
createMarker( 0, 4, 4, 'cylinder', 1, 255, 0, 0, 150 ), 
createMarker( 0, 6, 4, 'cylinder', 1, 255, 0, 0, 150 ), 
createMarker( 0, 8, 4, 'cylinder', 1, 255, 0, 0, 150 ) 
} 
  
function PlayerMarkerHit( markerHit, matchingDimension ) 
      local player = source 
      for k, marker in ipairs(myMarkers) do 
              if marker == markerHit then 
                      table.remove(myMarkers, markerHit) 
                      destroyElement ( markerHit ) 
                      break 
              end 
      end 
      if #myMarkers == 0 then 
            giveWeapon ( player, 31 ) 
      end 
end 
addEventHandler( "onPlayerMarkerHit", root, PlayerMarkerHit ) 

Business System viewtopic.php?f=108&t=35797

Notepad++ Syntax Highlighting & Auto Completion viewtopic.php?f=91&t=76726

SQLite Tutorial viewtopic.php?f=148&t=38203

  • 3 weeks later...
Posted

22 Days later ...

What's happens? any errors?

local myMarkers = 
{ createMarker( 0, 0, 4, 'cylinder', 1, 255, 0, 0, 150 ), 
createMarker( 0, 2, 4, 'cylinder', 1, 255, 0, 0, 150 ), 
createMarker( 0, 4, 4, 'cylinder', 1, 255, 0, 0, 150 ), 
createMarker( 0, 6, 4, 'cylinder', 1, 255, 0, 0, 150 ), 
createMarker( 0, 8, 4, 'cylinder', 1, 255, 0, 0, 150 ) 
} 
  
function PlayerMarkerHit( markerHit, matchingDimension ) 
      for k, marker in ipairs(myMarkers) do 
              if marker == markerHit then 
                      table.remove(myMarkers, markerHit) 
                      destroyElement ( markerHit ) 
                      break 
              end 
      end 
      if #myMarkers == 0 then 
            giveWeapon ( source, 31 ) 
      end 
end 
addEventHandler( "onPlayerMarkerHit", root, PlayerMarkerHit ) 

Business System viewtopic.php?f=108&t=35797

Notepad++ Syntax Highlighting & Auto Completion viewtopic.php?f=91&t=76726

SQLite Tutorial viewtopic.php?f=148&t=38203

Posted

Line 12: bad argument #2 to 'remove' (number expected, got userdata)

Now It doesn't remove markers..

My in game nick is Lemonade

Posted
local myMarkers = 
{ createMarker( 0, 0, 4, 'cylinder', 1, 255, 0, 0, 150 ), 
createMarker( 0, 2, 4, 'cylinder', 1, 255, 0, 0, 150 ), 
createMarker( 0, 4, 4, 'cylinder', 1, 255, 0, 0, 150 ), 
createMarker( 0, 6, 4, 'cylinder', 1, 255, 0, 0, 150 ), 
createMarker( 0, 8, 4, 'cylinder', 1, 255, 0, 0, 150 ) 
} 
  
function PlayerMarkerHit( markerHit, matchingDimension ) 
      for k, marker in ipairs(myMarkers) do 
              if marker == markerHit then 
                      marker = nil 
                      destroyElement ( markerHit ) 
                      break 
              end 
      end 
      if #myMarkers == 0 then 
            giveWeapon ( source, 31 ) 
      end 
end 
addEventHandler( "onPlayerMarkerHit", root, PlayerMarkerHit ) 

Business System viewtopic.php?f=108&t=35797

Notepad++ Syntax Highlighting & Auto Completion viewtopic.php?f=91&t=76726

SQLite Tutorial viewtopic.php?f=148&t=38203

Posted

I fixed it:

addEventHandler("onMarkerHit", root, 
    function(hitElement) 
        for k, marker in ipairs(myMarkers) do 
            if marker == source then 
                table.remove(myMarkers, k) 
                destroyElement (source) 
                if #myMarkers == 0 then 
                    giveWeapon(hitElement, 31, 300, true) 
                end 
            end 
        end 
    end 
) 

Tested.

Business System viewtopic.php?f=108&t=35797

Notepad++ Syntax Highlighting & Auto Completion viewtopic.php?f=91&t=76726

SQLite Tutorial viewtopic.php?f=148&t=38203

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