RU/GetPedBonePosition: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
(Created page with "__NOTOC__ {{Client function}} Returns the 3D world coordinates of a specific bone of a given ped. ==Syntax== <syntaxhighlight lang="lua"> float float float getPedBonePosition ( ped thePed, int b...")
 
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
__NOTOC__
__NOTOC__
{{Client function}}
{{Client function}}
Returns the 3D world coordinates of a specific bone of a given ped.
Функция возвращает координаты положения определённой части тела персонажа в формате 3D.


==Syntax==
==Синтаксис==
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
float float float getPedBonePosition ( ped thePed, int bone )
float float float getPedBonePosition ( ped thePed, int bone )
</syntaxhighlight>
</syntaxhighlight>


===Required Arguments===
===Обязательные атрибуты===
*'''thePed:''' the ped you want to inspect.
*'''thePed:''' Персонаж, положение части тела которого требуется определить.
*'''bone:''' the number of the bone to get the position of.
*'''bone:''' Часть тела, положение которой нужно определить.


[[Image:Bones.jpg|thumb|Bone numbers]]
[[Image:Bones.jpg|thumb|Номера частей тела]]


<div style="border: 3px red solid; margin-bottom:3px; padding-left:5px;">
<div style="border: 3px red solid; margin-bottom:3px; padding-left:5px;">
*'''1:''' BONE_PELVIS1
*'''1:''' BONE_PELVIS1 '''- тазобедренная часть (чуть ниже пупка)'''
*'''2:''' BONE_PELVIS
*'''2:''' BONE_PELVIS '''- тазобедренная часть (чуть выше пупка)'''
*'''3:''' BONE_SPINE1
*'''3:''' BONE_SPINE1 '''- позвоночник'''
*'''4:''' BONE_UPPERTORSO
*'''4:''' BONE_UPPERTORSO '''- верхня часть тела (начало шеи)'''
*'''5:''' BONE_NECK
*'''5:''' BONE_NECK '''- шейная часть'''
*'''6:''' BONE_HEAD2
*'''6:''' BONE_HEAD2 '''- голова'''
*'''7:''' BONE_HEAD1
*'''7:''' BONE_HEAD1 '''- голова'''
*'''8:''' BONE_HEAD
*'''8:''' BONE_HEAD '''- голова'''
*'''21:''' BONE_RIGHTUPPERTORSO
*'''21:''' BONE_RIGHTUPPERTORSO '''- правая верхняя часть тела (чуть правее шеи)'''
*'''22:''' BONE_RIGHTSHOULDER
*'''22:''' BONE_RIGHTSHOULDER '''- правое плечо'''
*'''23:''' BONE_RIGHTELBOW
*'''23:''' BONE_RIGHTELBOW '''- локоть правой руки'''
*'''24:''' BONE_RIGHTWRIST
*'''24:''' BONE_RIGHTWRIST '''- запястье правой руки'''
*'''25:''' BONE_RIGHTHAND
*'''25:''' BONE_RIGHTHAND '''- кисть правой руки'''
*'''26:''' BONE_RIGHTTHUMB
*'''26:''' BONE_RIGHTTHUMB '''- большой палец правой руки'''
*'''31:''' BONE_LEFTUPPERTORSO
*'''31:''' BONE_LEFTUPPERTORSO '''- левая верхняя часть тела (чуть левее шеи)'''
*'''32:''' BONE_LEFTSHOULDER
*'''32:''' BONE_LEFTSHOULDER '''- левое плечо'''
*'''33:''' BONE_LEFTELBOW
*'''33:''' BONE_LEFTELBOW '''- локоть левой руки'''
*'''34:''' BONE_LEFTWRIST
*'''34:''' BONE_LEFTWRIST '''- запястье левой руки'''
*'''35:''' BONE_LEFTHAND
*'''35:''' BONE_LEFTHAND '''- кисть левой руки'''
*'''36:''' BONE_LEFTTHUMB
*'''36:''' BONE_LEFTTHUMB '''- большой палец левой руки'''
*'''41:''' BONE_LEFTHIP
*'''41:''' BONE_LEFTHIP '''- часть бедра левой ноги'''
*'''42:''' BONE_LEFTKNEE
*'''42:''' BONE_LEFTKNEE '''- колено левой ноги'''
*'''43:''' BONE_LEFTANKLE
*'''43:''' BONE_LEFTANKLE '''- лодыжка левой ноги'''
*'''44:''' BONE_LEFTFOOT
*'''44:''' BONE_LEFTFOOT '''- ступня левой ноги'''
*'''51:''' BONE_RIGHTHIP
*'''51:''' BONE_RIGHTHIP '''- часть бедра правой ноги'''
*'''52:''' BONE_RIGHTKNEE
*'''52:''' BONE_RIGHTKNEE '''- колено правой ноги'''
*'''53:''' BONE_RIGHTANKLE
*'''53:''' BONE_RIGHTANKLE '''- лодыжка правой ноги'''
*'''54:''' BONE_RIGHTFOOT
*'''54:''' BONE_RIGHTFOOT '''- ступня правой ноги'''
</div>
</div>


===Returns===
===Данные подлежащие возвращению===
Returns the x, y, z world position of the bone.
Возвращаются координаты положения x, y, z определённой части тела персонажа.


==Example==
==Пример==
This example renders name tags above a player's head bone.
Этот пример скрипта показывает имена/ники над головами игроков.
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
addEventHandler("onClientRender",getRootElement(),
addEventHandler("onClientRender",getRootElement(),
Line 62: Line 62:
               local sx, sy, sz = getPedBonePosition(v, 5)
               local sx, sy, sz = getPedBonePosition(v, 5)
               local x,y = getScreenFromWorldPosition(sx, sy, sz + 0.3)
               local x,y = getScreenFromWorldPosition(sx, sy, sz + 0.3)
               if x then -- getScreenFromWorldPosition returns false if the point isn't on screen
               if x then -- getScreenFromWorldPosition возвращает false(ложь), если персонаж (координата Х) не виден на экране
                   dxDrawText(getPlayerName(v), x, y, x, y, tocolor(150, 50, 0), 0.85 + (15 - dist) * 0.02, "bankgothic")
                   dxDrawText(getPlayerName(v), x, y, x, y, tocolor(150, 50, 0), 0.85 + (15 - dist) * 0.02, "bankgothic")
               end
               end
Line 72: Line 72:
</syntaxhighlight>
</syntaxhighlight>


==See Also==
==Другие функции==
{{Client_ped_functions}}
{{Client_ped_functions}}
[[en:GetPedBonePosition]]

Latest revision as of 13:31, 2 December 2013

Функция возвращает координаты положения определённой части тела персонажа в формате 3D.

Синтаксис

float float float getPedBonePosition ( ped thePed, int bone )

Обязательные атрибуты

  • thePed: Персонаж, положение части тела которого требуется определить.
  • bone: Часть тела, положение которой нужно определить.
Номера частей тела
  • 1: BONE_PELVIS1 - тазобедренная часть (чуть ниже пупка)
  • 2: BONE_PELVIS - тазобедренная часть (чуть выше пупка)
  • 3: BONE_SPINE1 - позвоночник
  • 4: BONE_UPPERTORSO - верхня часть тела (начало шеи)
  • 5: BONE_NECK - шейная часть
  • 6: BONE_HEAD2 - голова
  • 7: BONE_HEAD1 - голова
  • 8: BONE_HEAD - голова
  • 21: BONE_RIGHTUPPERTORSO - правая верхняя часть тела (чуть правее шеи)
  • 22: BONE_RIGHTSHOULDER - правое плечо
  • 23: BONE_RIGHTELBOW - локоть правой руки
  • 24: BONE_RIGHTWRIST - запястье правой руки
  • 25: BONE_RIGHTHAND - кисть правой руки
  • 26: BONE_RIGHTTHUMB - большой палец правой руки
  • 31: BONE_LEFTUPPERTORSO - левая верхняя часть тела (чуть левее шеи)
  • 32: BONE_LEFTSHOULDER - левое плечо
  • 33: BONE_LEFTELBOW - локоть левой руки
  • 34: BONE_LEFTWRIST - запястье левой руки
  • 35: BONE_LEFTHAND - кисть левой руки
  • 36: BONE_LEFTTHUMB - большой палец левой руки
  • 41: BONE_LEFTHIP - часть бедра левой ноги
  • 42: BONE_LEFTKNEE - колено левой ноги
  • 43: BONE_LEFTANKLE - лодыжка левой ноги
  • 44: BONE_LEFTFOOT - ступня левой ноги
  • 51: BONE_RIGHTHIP - часть бедра правой ноги
  • 52: BONE_RIGHTKNEE - колено правой ноги
  • 53: BONE_RIGHTANKLE - лодыжка правой ноги
  • 54: BONE_RIGHTFOOT - ступня правой ноги

Данные подлежащие возвращению

Возвращаются координаты положения x, y, z определённой части тела персонажа.

Пример

Этот пример скрипта показывает имена/ники над головами игроков.

addEventHandler("onClientRender",getRootElement(),
   function()
      local px, py, pz, tx, ty, tz, dist
      px, py, pz = getCameraMatrix()
      for k, v in ipairs(getElementsByType("player")) do
         tx, ty, tz = getElementPosition(v)
         dist = math.sqrt((px - tx) ^ 2 + (py - ty) ^ 2 + (pz - tz) ^ 2)
         if dist < 30.0 then
            if isLineOfSightClear(px, py, pz, tx, ty, tz, true, false, false, true, false, false, getLocalPlayer()) then
               local sx, sy, sz = getPedBonePosition(v, 5)
               local x,y = getScreenFromWorldPosition(sx, sy, sz + 0.3)
               if x then -- getScreenFromWorldPosition возвращает false(ложь), если персонаж (координата Х) не виден на экране
                  dxDrawText(getPlayerName(v), x, y, x, y, tocolor(150, 50, 0), 0.85 + (15 - dist) * 0.02, "bankgothic")
               end
            end
         end
      end
   end
)

Другие функции