Другое С/С++ Вопрос - Ответ

ШPEK

Известный
1,474
525
C++:
string sr = "blast hk";
print("%x.ys", sr)
Сколько байт нужно вставить в x и сколько знаков нужно вставить в y? Обьясните пожалуйста
 

CleanLegend

Известный
Всефорумный модератор
481
937
need little help, how to get position for vehicles ?

here what i did

void render()
{
for (int i = 0; i < SAMP_MAX_VEHICLES; i++)
{
actor_info * player = actor_info_get(ACTOR_SELF, NULL); // define my actor
vehicle_info *vehicle = getGTAVehicleFromSAMPVehicleID(i); // samp max vehs

if (!vehicle)
continue;

D3DXVECTOR3 vehicle_pos, screenposs;
D3DCOLOR color;

color = samp_color_get(i);

CVector mySpinePoss, TargetVehPos;

CPed *pPedSelf = pGameInterface->GetPools()->GetPed((DWORD*)player);
CVehicle *pVeh = pGameInterface->GetPools()->GetVehicle((DWORD*)vehicle); // i found this for vehicle

pPedSelf->GetBonePosition(BONE_SPINE1, &mySpinePoss); // here is used BONE

pVeh->GetPosition(); // now i don't know how to do for vehicle like for pPedSelf

if (screenposs.z < 1.f)
continue;

if (enabled)
{
render->DrawLine(CVecToD3DXVEC(mySpinePoss), CVecToD3DXVEC(TargetVehPos), color);
}
}
}

thanks for help !
C++:
vehicle->base.matrix[12];
vehicle->base.matrix[13];
vehicle->base.matrix[14];
 
  • Нравится
Реакции: _=Gigant=_

holmes0

Известный
16
8
Пытаюсь получить позицию поля для ввода текста под чатом на SF (как сделано в CLEO InputHelper).
Посмотрев исходный код InputHelper-a, нашёл вот это:
CLEO:
0BAF: samp 6@ = get_input_info_ptr // stInputInfo
0C0C: 6@ = struct 6@ offset {pDXUTEditBox}0x8 size 4 // stInputBox

и это:
CLEO:
0C0C: 7@ = struct 6@ offset {dwPosChatInput1}0x8 size 4 // X
0C0C: 8@ = struct 6@ offset {dwPosChatInput2}0xC size 4 // Y

Только я не очень шарю в клео.
Я так понял, что мне нужно вот это (на SF):
C++:
SF->getSAMP()->getInput()->pDXUTEditBox;
но как оттуда достать X и Y?
или это вообще не то и мне надо доставать вручную из структур?
 
Последнее редактирование:

_=Gigant=_

Известный
144
225
how to get distance between me and vehicles near me ?

here code

for (int i = 0; i < SAMP_MAX_VEHICLES; i++)
{
actor_info * player = actor_info_get(ACTOR_SELF, NULL);
vehicle_info *vehicle = getGTAVehicleFromSAMPVehicleID(i);

if (!vehicle)
continue;

D3DXVECTOR3 vehicle_pos, player_pos, screenposs, vscreenposs;

float * f_pos = &player->base.matrix[4 * 3];
player_pos.x = f_pos[0];
player_pos.y = f_pos[1];
player_pos.z = f_pos[2];
CalcScreenCoors(&player_pos, &screenposs);

float * f_poss = &vehicle->base.matrix[4 * 3];
vehicle_pos.x = f_poss[0];
vehicle_pos.y = f_poss[1];
vehicle_pos.z = f_poss[2];
CalcScreenCoors(&vehicle_pos, &vscreenposs);

thanks for help !
 

Revalto

Известный
532
225
how to get distance between me and vehicles near me ?

here code

for (int i = 0; i < SAMP_MAX_VEHICLES; i++)
{
actor_info * player = actor_info_get(ACTOR_SELF, NULL);
vehicle_info *vehicle = getGTAVehicleFromSAMPVehicleID(i);

if (!vehicle)
continue;

D3DXVECTOR3 vehicle_pos, player_pos, screenposs, vscreenposs;

float * f_pos = &player->base.matrix[4 * 3];
player_pos.x = f_pos[0];
player_pos.y = f_pos[1];
player_pos.z = f_pos[2];
CalcScreenCoors(&player_pos, &screenposs);

float * f_poss = &vehicle->base.matrix[4 * 3];
vehicle_pos.x = f_poss[0];
vehicle_pos.y = f_poss[1];
vehicle_pos.z = f_poss[2];
CalcScreenCoors(&vehicle_pos, &vscreenposs);

thanks for help !
Код:
float GetDistance(D3DXVECTOR3 target)
{
    D3DXVECTOR3 player(PEDSELF->GetPosition()->fX, PEDSELF->GetPosition()->fY, PEDSELF->GetPosition()->fZ);
    return sqrt((player.x - target.x) * (player.x - target.x) + (player.y - target.y) * (player.y - target.y) + (player.z - target.z) * (player.z - target.z));
}
Example:
Код:
sprintf(szMsg, "%.0f m.", GetDistance(D3DXVECTOR3(x, y, z)));
 
  • Нравится
Реакции: _=Gigant=_

_=Gigant=_

Известный
144
225
Код:
float GetDistance(D3DXVECTOR3 target)
{
    D3DXVECTOR3 player(PEDSELF->GetPosition()->fX, PEDSELF->GetPosition()->fY, PEDSELF->GetPosition()->fZ);
    return sqrt((player.x - target.x) * (player.x - target.x) + (player.y - target.y) * (player.y - target.y) + (player.z - target.z) * (player.z - target.z));
}
Example:
Код:
sprintf(szMsg, "%.0f m.", GetDistance(D3DXVECTOR3(x, y, z)));


thank you very much !

here is the full code if someone need

float GetDistance(D3DXVECTOR3 target)
{
actor_info * playerR = actor_info_get(ACTOR_SELF, NULL);

CPed *pPedSelf = pGameInterface->GetPools()->GetPed((DWORD*)playerR);

D3DXVECTOR3 player(pPedSelf->GetPosition()->fX, pPedSelf->GetPosition()->fY, pPedSelf->GetPosition()->fZ);
return sqrt((player.x - target.x) * (player.x - target.x) + (player.y - target.y) * (player.y - target.y) + (player.z - target.z) * (player.z - target.z));
}

sprintf(ctarget_ping_score, "{8cff00}Ping{FFFFFF} %d{007bff} Score{FFFFFF} %d ", g_Players>pRemotePlayer[Informer_Target_PlayerID]>iPing, g_Players->pRemotePlayer[Informer_Target_PlayerID]->iScore);

this code you see should display player ping and score, it does sometimes but not always what's wrong with this ? here you can see that player score and ping is 0 and sometimes it displays correct value idk what's wrong

sa-mp-234.png


thanks for help !
 
Последнее редактирование модератором:

Revalto

Известный
532
225
sprintf(ctarget_ping_score, "{8cff00}Ping{FFFFFF} %d{007bff} Score{FFFFFF} %d ", g_Players>pRemotePlayer[Informer_Target_PlayerID]>iPing, g_Players->pRemotePlayer[Informer_Target_PlayerID]->iScore);

this code you see should display player ping and score, it does sometimes but not always what's wrong with this ? here you can see that player score and ping is 0 and sometimes it displays correct value idk what's wrong

sa-mp-234.png


thanks for help !
Lesson number 1:

Код:
void CALLBACK cmd_show_info_player( std::string param )
{
   if ( param.empty() ) return;
   int    i = std::stoi( param );

   char buf[128];

   stRemotePlayer *pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer[ i ];

   if(!pPlayer) return;

   sprintf( buf, "Nickname - %s, Ping - %d, Score - %d, isNPC - %d, AFKState - %d",
       pPlayer->szPlayerName,
       pPlayer->iPing,
       pPlayer->iScore,
       pPlayer->iIsNPC,
       pPlayer->pPlayerData->iAFKState == 2 );

   SF->getSAMP()->getChat()->AddChatMessage( -1, buf );
};

And in Mainloop:
SF->getSAMP()->registerChatCommand( "showinfo", cmd_show_info_player );

Expample for you:
Код:
stRemotePlayer *pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer[ Informer_Target_PlayerID ];
if(!pPlayer) return;
sprintf(ctarget_ping_score, "{8cff00}Ping{FFFFFF} %d{007bff} Score{FFFFFF} %d ", pPlayer->iPing, pPlayer->iScore);

What kind of font do you use?
 
Последнее редактирование:
  • Нравится
Реакции: _=Gigant=_