Question

Как узнать координаты обьетка, после того как игрок изменил позицию обьекта через EditObject.

    if(sscanf(objid,"i",objid[1])) return SendClientMessage(playerid,-1,"zzzz");
    obj = CreateObject(objid[1],0.0,0.0,0.0,0.0,0.0,0.0);
    EditObject(playerid,obj);
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    SetObjectPos(obj,x,y,z);

Мне нужно узнать координаты после того как игрок сохранил изменения с обьектом

Share this post


Link to post

4 answers to this question

  • 0

Когда игрок нажмет на кнопку сохранения объекта, вызовется колбэк OnPlayerEditObject, подробнее см. - https://sampwiki.blast.hk/wiki/OnPlayerEditObject

Share this post


Link to post
  • 0

@DEST 

public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
{

    if(response == EDIT_RESPONSE_FINAL)
    {
        AttachObjectToVehicle(GetPVarInt(playerid,"objc"),GetPlayerVehicleID(playerid),fX/1000,fY/1000,fZ/1000,fRotX,fRotY,fRotZ);
        
    }

}

После того как он нажал финал, то обьект должен закрепится на той позиции которую игрок задал, но обьект возвращается на нулевые. Делю на 1000 т.к обьект прикрепляется по координатам модели машины.

Share this post


Link to post
  • 0

@Antoxa39 

public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
{

    if(response == EDIT_RESPONSE_FINAL)
    {
        AttachObjectToVehicle(GetPVarInt(playerid,"objc"),GetPlayerVehicleID(playerid),fX,fY,fZ,fRotX,fRotY,fRotZ);
        
    }

}

попробуй

Share this post


Link to post
  • 0

@Antoxa39 обратите внимание, что в коллбэк приходят координаты в мире, а в функцию AttachObjectToVehicle вы передаете не координаты объекта в мире, а смещение относительно центра транспортного средства. 

Попробуйте вычесть из координат объекта координаты авто, или наоборот и посмотреть на результат. 

Share this post


Link to post
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • kekkomomek1941
      By kekkomomek1941
      Всем привет, вот ошибки, понятия не имею как их исправить, кто может - помогите пожалуйста
      arizona.pwn(92829) : error 001: expected token: ";", but found ":"
      arizona.pwn(92829) : error 029: invalid expression, assumed zero
      arizona.pwn(92799) : error 002: only a single statement (or expression) can follow each "case"
      arizona.pwn(92829) : error 014: invalid statement; not in switch
      arizona.pwn(92829) : fatal error 107: too many error messages on one line
      Вот все строчки с ошибками
       
       
    • KenzoSam
      By KenzoSam
      Всем привет,писал код на инвентарь,появились ошибки которые я незнаю как убрать.
      Компилятор:
      C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(39) : warning 201: redefinition of constant/macro (symbol "FOREACH_I_Bot") C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(40) : warning 201: redefinition of constant/macro (symbol "FOREACH_I_Character") C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\pawno\include\brnotification.inc(24) : warning 234: function is deprecated (symbol "BS_Send") Use PR_SendPacket instead C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\pawno\include\customhud.inc(83) : warning 234: function is deprecated (symbol "BS_Send") Use PR_SendPacket instead C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\pawno\include\customhud.inc(327) : warning 234: function is deprecated (symbol "BS_Send") Use PR_SendPacket instead C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\pawno\include\customhud.inc(342) : warning 234: function is deprecated (symbol "BS_Send") Use PR_SendPacket instead C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\pawno\include\customhud.inc(398) : warning 234: function is deprecated (symbol "BS_Send") Use PR_SendPacket instead C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\pawno\include\customtune.inc(211) : warning 234: function is deprecated (symbol "BS_Send") Use PR_SendPacket instead C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\pawno\include\customtune.inc(272) : warning 234: function is deprecated (symbol "BS_Send") Use PR_SendPacket instead C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\pawno\include\customtune.inc(721) : warning 234: function is deprecated (symbol "BS_Send") Use PR_SendPacket instead C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(119) : warning 201: redefinition of constant/macro (symbol "M_DIALOG_DialogForPlayer") C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(8763) : loose indentation C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(8773) : loose indentation C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(9869) : symbol is assigned a value that is never used: "carid" C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(10671) : symbol is assigned a value that is never used: "color2" C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(10670) : symbol is assigned a value that is never used: "color1" C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(10818) : loose indentation C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(10816) : symbol is assigned a value that is never used: "job_car" C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(13444) : symbol is assigned a value that is never used: "carid" C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(13461) : symbol is assigned a value that is never used: "s" C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(13946) : symbol is assigned a value that is never used: "randomize" C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(14713) : warning 216: nested comment C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(25414) : loose indentation C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(25410) : symbol is assigned a value that is never used: "action_id" C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(25409) : symbol is assigned a value that is never used: "action_type" C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(25597) : loose indentation C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(25595) : symbol is assigned a value that is never used: "action_id" C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(25594) : symbol is assigned a value that is never used: "action_type" C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(30735) : loose indentation C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(30755) : loose indentation C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(30768) : loose indentation C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(30824) : loose indentation C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(30822) : symbol is assigned a value that is never used: "fmt_text" C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(30850) : loose indentation C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(30848) : symbol is assigned a value that is never used: "fmt_text" C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(34053) : error 017: undefined symbol "playertextid" C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(34053) : warning 215: expression has no effect C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(34053) : error 001: expected token: ";", but found "]" C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(34053) : error 029: invalid expression, assumed zero C:\Users\asus\OneDrive\Ðàáî÷èé ñòîë\byreytiz\gamemodes\byreytiz.pwn(34053) : fatal error 107: too many error messages on one line Compilation aborted. Pawn compiler 3.2.3664          Copyright (c) 1997-2016, ITB CompuPhase 4 Errors. Код(только ошибок):
      public OnPlayerClickTextDraw(playerid, Text:clickedid) {     for(new i=0; i < 97; i++)     {         if(playertextid == inv_TD[playerid][i])//34053 на эту стройку пищит         {             if(PlayerInfo[playerid][Inv][i] == 1649)             {                 if(GetPVarInt(playerid, "ClickInv") == -1)                 {                     new id_inv = GetPVarInt(playerid, "ClickInv");                     PlayerTextDrawSetPriviewModel(playerid, inv_TD[playerid][id_inv], 1649);                     PlayerTextDrawSetPriviewModel(playerid, inv_TD[playerid][i], PlayerInfo[playerid][Inv][i]);                     PlayerInfo[playerid][Inv][i] = PlayerInfo[playerid][Inv][id_inv];                     PlayerInfo[playerid][Inv][id_inv] = 1649;                     SetRotInv(playerid, i, PlayerInfo[playerid][Inv][i];                     SetRotInv(playerid, id_td, PlayerInfo[playerid][Inv][id_inv];                     UpdateInv(playerid, id_inv, 1);                     UpdateInv(playerid, i, 1);                     SetPVarInt(playerid, "ClickInv", -1);                 }             }             else             {                 if(GetPVarInt(playerid, "ClickInv") == -1)                 {                     SetPVarInt(playerid, "ClickInv", i);                     UpdateInv(playerid, i, 2);                 }             }                 else                 {                     if(GetPVarInt(playerid, "ClickInv") == i)                     {                         SetPVarInt(playerid, "ClickInv", -1);                         UpdateInv(playerid, i, 1);                     }                 }         }     }     if(playertextid == InvText[playerid[4])     {         if(GetPVarInt(playerid, "ClickInv") != -1)         {         new id_inv = GetPVarInt(playerid, "ClickInv");         PlayerInfo[playerid][Inv][id_inv] = 1649;         PlayerTextDrawSetPriviewModel(playerid, inv_TD[playerid][id_inv], PlayerInfo[playerid][Inv][id_inv];         SetRotInv(playerid, id_inv, PlayerInfo[playerid][Inv][id_inv]);         UpdateInv(playerid, id_inv, 1);         SetPVarInt(playerid, "ClickInv", -1);         SendClientMessage(playerid, 0xFFFFFFF, "[Èíâåíòàðü]: Äàííûé ïðåäìåò áûë óñïåøíî óäàëåí!");     }     }      Помогите плиз,буду благодарен