Другое SAMPFUNCS | API C++

CissCass

Новичок
5
0
Код:
#define FUNC_IsLineOfSightClear 0x56A490

bool GTAfunc_IsLineOfSightClear(CVector *vecStart, CVector *vecEnd, bool bCheckBuildings, bool bCheckVehicles, bool bCheckPeds, bool bCheckObjects, bool bCheckDummies, bool bSeeThroughStuff, bool bIgnoreSomeObjectsForCamera)
{
    DWORD    dwFunc = FUNC_IsLineOfSightClear;
    bool    bReturn = false;
    __asm
    {
        push bIgnoreSomeObjectsForCamera
            push bSeeThroughStuff
            push bCheckDummies
            push bCheckObjects
            push bCheckPeds
            push bCheckVehicles
            push bCheckBuildings
            push vecEnd
            push vecStart
            call dwFunc
            mov bReturn, al
            add esp, 0x24
    }

    return bReturn;
}

void t(shotr int id)
{
CVector *vect1;
                vect1->fX = SF->getSAMP()->getPlayers()->pLocalPlayer->onFootData.fPosition[0];
                vect1->fY = SF->getSAMP()->getPlayers()->pLocalPlayer->onFootData.fPosition[1];
                vect1->fZ = SF->getSAMP()->getPlayers()->pLocalPlayer->onFootData.fPosition[2];
                CVector *vect2;
                vect2->fX = SF->getSAMP()->getPlayers()->pRemotePlayer[id]->pPlayerData->onFootData.fPosition[0];
                vect2->fY = SF->getSAMP()->getPlayers()->pRemotePlayer[id]->pPlayerData->onFootData.fPosition[1];
                vect2->fZ = SF->getSAMP()->getPlayers()->pRemotePlayer[id]->pPlayerData->onFootData.fPosition[2];
                if (GTAfunc_IsLineOfSightClear(vect1, vect2, true, true,true, true, true, false, false))
                    SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 255, 0), "LLLLt");
}

Почему при вызове GTAfunc_IsLineOfSightClear крашит?
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
В SF API есть эта функция. Зачем ты её отдельно суешь?
Код:
#include "game_api\\game_api.h"
GAME->GetWorld()->IsLineOfSightClear()
 
  • Нравится
Реакции: CissCass

0pc0d3R

Потрачен
550
270
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
Код:
char *szIP = SF->getSAMP()->getInfo()->szIP;
DWORD dwPort = SF->getSAMP()->getInfo()->ulPort;
 

fanta

Новичок
33
6
Захожу с упавшим фпс, потом крашит, в чем проблема?
Код:
bool CALLBACK Present(CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride,
   CONST RGNDATA *pDirtyRegion)
{
   int   myidd = SF->getSAMP()->getPlayers()->sLocalPlayerID;
   int myclist = SF->getSAMP()->getPlayers()->GetPlayerColor(myidd);
   stFontInfo *pFont;
   pFont = SF->getRender()->CreateNewFont("Tahoma", 12, FCR_BORDER);
   
   if (SUCCEEDED(SF->getRender()->BeginRender())) 
   {
       
       if (SF->getGame()->isKeyDown('G'))
       {

         pFont->Print("MyColor", myclist, 500, 500, false);

         SF->getRender()->EndRender();
       };
   };

   return true; 
};
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
Потому что ты каждый раз пересоздаешь шрифт. Т.к. этот колбэк вызывается по несколько раз в секунду. Создавай его один раз, после инициализации сампа.
 
  • Нравится
Реакции: fanta

fanta

Новичок
33
6
Потому что ты каждый раз пересоздаешь шрифт. Т.к. этот колбэк вызывается по несколько раз в секунду. Создавай его один раз, после инициализации сампа.
Создаю после инициализации сампа - pFont: необъявленный идентификатор. Вставил вроде туда.
Код:
if (!SF->getSAMP()->IsInitialized())

       return;
     stFontInfo *pFont;
     pFont = SF->getRender()->CreateNewFont("Tahoma", 12, FCR_BORDER);
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
stFontInfo *pFont; нужно вставлять до цикла mainloop
 
  • Нравится
Реакции: fanta

fanta

Новичок
33
6
И снова здрасьте, после смерти идет краш, с чем это связано?
Код:
bool CALLBACK Present(CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride,
   CONST RGNDATA *pDirtyRegion)
{
   int   myidd = SF->getSAMP()->getPlayers()->sLocalPlayerID;
   int myclist = SF->getSAMP()->getPlayers()->GetPlayerColor(myidd);
   const char* myname = SF->getSAMP()->getPlayers()->GetPlayerName(myidd);
   int myhp = SF->getGame()->actorInfoGet(-1, ACTOR_ALIVE)->hitpoints;
   int myar = SF->getGame()->actorInfoGet(-1, ACTOR_ALIVE)->armor;
   
   if (SUCCEEDED(SF->getRender()->BeginRender())) // если девайс готов к рисованию
   {
     char buf[256];
     sprintf(buf, "%s[%d] {FF0000}%i  {FFFFFF}%i", myname, myidd, myhp, myar);
     
       if (SF->getGame()->isKeyDown('R'))
       {
       

         pFont->Print( buf, myclist, 10, 550, false); // рисуем 1 - широта, 2 - высота

         SF->getRender()->EndRender(); // завершаем рисование
       };
   };

   return true; // возвращаем положительный результат
};
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
Возможно, что при actorInfoGet возвращается недействительный handle игрока(т.к. флаги выставлены так, что хендл будет возвращаться только тогда, когда игрок жив).
Либо необходимо убрать флаги, либо проверять возвращаемое значение actorInfoGet на неравенство нулю.
 
  • Нравится
Реакции: fanta