 |
|

13.08.2015, 21:48
|
|
Познающий
Регистрация: 01.09.2014
Сообщений: 33
С нами:
6157055
Репутация:
0
|
|
Захожу с упавшим фпс, потом крашит, в чем проблема?
Код:
Код:
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;
};
|
|
|

13.08.2015, 21:52
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
Потому что ты каждый раз пересоздаешь шрифт. Т.к. этот колбэк вызывается по несколько раз в секунду. Создавай его один раз, после инициализации сампа.
|
|
|

13.08.2015, 22:06
|
|
Познающий
Регистрация: 01.09.2014
Сообщений: 33
С нами:
6157055
Репутация:
0
|
|
Сообщение от legend2360
Потому что ты каждый раз пересоздаешь шрифт. Т.к. этот колбэк вызывается по несколько раз в секунду. Создавай его один раз, после инициализации сампа.
Создаю после инициализации сампа - pFont: необъявленный идентификатор. Вставил вроде туда.
Код:
Код:
if (!SF->getSAMP()->IsInitialized())
return;
stFontInfo *pFont;
pFont = SF->getRender()->CreateNewFont("Tahoma", 12, FCR_BORDER);
|
|
|

13.08.2015, 22:07
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
stFontInfo *pFont; нужно вставлять до цикла mainloop
|
|
|

14.08.2015, 23:30
|
|
Познающий
Регистрация: 01.09.2014
Сообщений: 33
С нами:
6157055
Репутация:
0
|
|
Как получить значение хп?
|
|
|

15.08.2015, 00:06
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
Сообщение от fanta
Как получить значение хп?
Уточняй кого именно.
Код:
Код:
actor_info *actor = SF->getGame()->actorInfoGet(-1, ACTOR_ALIVE);
actor->hitpoints = 50.0f;
|
|
|

15.08.2015, 16:49
|
|
Познающий
Регистрация: 01.09.2014
Сообщений: 33
С нами:
6157055
Репутация:
0
|
|
И снова здрасьте, после смерти идет краш, с чем это связано?
Код:
Код:
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; // возвращаем положительный результат
};
|
|
|

15.08.2015, 17:06
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
Возможно, что при actorInfoGet возвращается недействительный handle игрока(т.к. флаги выставлены так, что хендл будет возвращаться только тогда, когда игрок жив).
Либо необходимо убрать флаги, либо проверять возвращаемое значение actorInfoGet на неравенство нулю.
|
|
|

15.08.2015, 17:16
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
if (SF->getGame()->isKeyDown('R') &&
SF->getGame()->actorInfoGet(ACTOR_ALIVE, ACTOR_ALIVE)
)
|
|
|

15.08.2015, 17:33
|
|
Познающий
Регистрация: 01.09.2014
Сообщений: 33
С нами:
6157055
Репутация:
0
|
|
Сообщение от Dark_Knight
if (SF->getGame()->isKeyDown('R') &&
SF->getGame()->actorInfoGet(ACTOR_ALIVE, ACTOR_ALIVE)
)
Так отказывается рендерить, если я жив.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|