![]() |
sampfuncs 5.5.1
Я забадался, не знаю как проверить, находится ли игрок на экране, или нет, подскажите пожалуйста Ошибок в этом коде компилятор не находит, но при запуске функции - крашит игру, не знаю как правильно найти педа проблема в строчках 11-14 C++: [CODE] for ( int i = 0 ; i getSAMP ( ) -> getPlayers ( ) -> maxPlayerID ; i ++ ) { if ( SF -> getSAMP ( ) -> getPlayers ( ) -> IsPlayerDefined ( i , true ) ) { D3DCOLOR player_color = SF -> getSAMP ( ) -> getPlayers ( ) -> GetPlayerColor ( i ) ; OnFootData * foot = SF -> getSAMP ( ) -> getPlayers ( ) -> GetOnFootData ( i ) ; CVector player_original = { foot -> position [ 0 ] , foot -> position [ 1 ] , foot -> position [ 2 ] } ; CVector my_pos = * PEDSELF -> GetPosition ( ) ; CVector player_converted ; CVector my_converted ; SF -> getGame ( ) -> convert3DCoordsToScreen ( player_original . fX , player_original . fY , player_original . fZ , & player_converted . fX , & player_converted . fY ) ; SF -> getGame ( ) -> convert3DCoordsToScreen ( my_pos . fX , my_pos . fY , my_pos . fZ , & my_converted . fX , & my_converted . fY ) ; actor_info * actor = SF -> getSAMP ( ) -> getPlayers ( ) -> remotePlayersInfo . remotePlayer [ i ] -> data -> sampActor -> gtaPed ; if ( actor != nullptr ) { CPed * Ped = GAME -> GetPools ( ) -> GetPed ( ( DWORD * ) actor ) ; if ( Ped -> IsOnScreen ( ) ) SF -> getRender ( ) -> DrawLine ( my_converted . fX , my_converted . fY , player_converted . fX , player_converted . fY , 1 , ( player_color & 0x00FFFFFF ) | ( 255 |
попробуй убрать пробел 11 и 13 строчка
чтоб было так CPed*Ped = GAME->GetPools()->GetPed((DWORD*)actor); actor_info*actor = SF->getSAMP()->getPlayers()->remotePlayersInfo.remotePlayer->data->sampActor->gtaPed; if (actor != nullptr) { |
Цитата:
@MISTER_GONWIK |
Ну так ты проверь не выходят ли screen координаты за рамки размера окна гта
а вообще подключи дебаггер и посмотри в чем именно проблема |
Цитата:
В этом коде pointX, pointY это экранные координаты игроков C++: [CODE] if ( pointX >= 0 && pointX = 0 && pointY |
работает со всем (игроки, тачки, объекты и подобное)
C++: Код:
ifUPD а крашит скорее всего из за того что ты пытаешся получить пед не существуещего игрока, вроде как то так надо "SF->getSAMP()->getPlayers()->remotePlayersInfo.remotePlayer(тут должны быть квадратные скобочки с i, но они пропадают)!= nullptr", непомню уже и наверно лучше делать проверку как я написал, вместо SF->getSAMP()->getPlayers()->IsPlayerDefined(i, true), потому что лично у меня крашило из за того что это проверка не работает |
Цитата:
UPD сделал как ты сказал, проверку на ремот поставил, по итогу у меня ни к одному педу линия не проводится C++: [CODE] RemotePlayer * actor = SF -> getSAMP ( ) -> getPlayers ( ) -> remotePlayersInfo . remotePlayer [ i ] ; if ( actor != nullptr ) { actor_info * new_actor = actor -> data -> sampActor -> gtaPed ; if ( new_actor != nullptr ) { CPed * Ped = GAME -> GetPools ( ) -> GetPed ( ( DWORD * ) new_actor ) ; if ( Ped != nullptr && Ped -> IsOnScreen ( ) ) SF -> getRender ( ) -> DrawLine ( my_converted . fX , my_converted . fY , player_converted . fX , player_converted . fY , 1 , ( player_color & 0x00FFFFFF ) | ( 255 |
Цитата:
C++: Код:
void |
Цитата:
C++: Код:
for |
Цитата:
UPD: я понял о чем ты, вот функция C++: Код:
CVector |
| Время: 02:15 |