Показать сообщение отдельно

  #3  
Старый 13.01.2025, 17:01
ARMOR
Флудер
Регистрация: 02.02.2019
Сообщений: 5,070
С нами: 3831395

Репутация: 183


По умолчанию

Цитата:
Сообщение от Vintik  

Не нашёл документацию ни по первому, ни по второму API.
Есть проект, в котором используется PSDK, SAMP API и imgui.

Задача: перебрать всех игроков в зоне стрима, получить ближайшего из тех, кто в машине, получить его samp (0.3.7-r3) id, вывести его id в чат.
Кажется, просто, но что-то не получается найти нужные функции (логику я сам напишу, просто укажите какие функции нужны для этого [перебор игроков, проверка в машине ли, получение по ped-у его samp id] — а лучше расскажите где вы нашли их, документации не вижу).

Задача 2: выводить актуальный id в имгуи окно, с имгуи что-то тоже примеров не нашёл. Можно пример простейшего окна имгуи (пусть со статическим текстом)?

Заранее спасибо.
Перебор самповского пула игроков и получение их самповского CPed ( Доработай там, а то выводит 10000 если педа в тачке вообще нет)



C++:





Код:
#include "plugin.h"
#include "sampapi/CNetGame.h"
#include "sampapi/CInput.h"
#include "sampapi/CChat.h"
#include "CPed.h"
using
namespace
plugin
;
namespace
samp
=
sampapi
::
v037r3
;
class
Main
{
public
:
static
void
TestPool
(
const
char
*
szArg
)
{
samp
::
CPlayerPool
*
pPlayerPool
=
samp
::
RefNetGame
(
)
->
GetPlayerPool
(
)
;
if
(
pPlayerPool
)
{
// Топ самп метод, поставить заоблачное значение чтобы не ебать себе мозги. Не рекомендую кароч
float
fDist
{
10000.f
}
;
sampapi
::
ID nPlayerID
{
}
;
for
(
sampapi
::
ID i
{
}
;
i

IsConnected
(
i
)
)
{
samp
::
CRemotePlayer
*
pPlayer
=
pPlayerPool
->
GetPlayer
(
i
)
;
if
(
pPlayer
&&
pPlayer
->
DoesExist
(
)
)
{
CPed
*
pGamePed
=
(
CPed
*
)
pPlayer
->
m_pPed
->
m_pGamePed
;
if
(
pGamePed
&&
pGamePed
->
m_nPedFlags
.
bInVehicle
)
{
float
fTempDist
=
pPlayer
->
m_pVehicle
->
GetDistanceToLocalPlayer
(
)
;
if
(
fTempDist

m_nId
;
}
}
}
}
}
std
::
string szResult
=
"Ближайший игрок в транспорте: "
+
std
::
to_string
(
nPlayerID
)
+
" | Дистанция: "
+
std
::
to_string
(
fDist
)
;
samp
::
RefChat
(
)
->
AddMessage
(
0xFFFFFFFF
,
szResult
.
c_str
(
)
)
;
}
}
Main
(
)
{
Events
::
drawingEvent
+=
[
]
(
)
{
static
bool
bInit
{
}
;
if
(
!
bInit
&&
samp
::
RefNetGame
(
)
)
{
samp
::
RefChat
(
)
->
AddMessage
(
-
1
,
"Game init!"
)
;
samp
::
RefInputBox
(
)
->
AddCommand
(
"testpool"
,
TestPool
)
;
bInit
=
true
;
}
}
;
}
~
Main
(
)
{
}
;
}
g_Main
;
 
Ответить с цитированием