HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #261  
Старый 13.08.2015, 21:48
fanta
Познающий
Регистрация: 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; 
};
 
Ответить с цитированием

  #262  
Старый 13.08.2015, 21:52
itsLegend
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами: 6915558

Репутация: 183


По умолчанию

Потому что ты каждый раз пересоздаешь шрифт. Т.к. этот колбэк вызывается по несколько раз в секунду. Создавай его один раз, после инициализации сампа.
 
Ответить с цитированием

  #263  
Старый 13.08.2015, 22:06
fanta
Познающий
Регистрация: 01.09.2014
Сообщений: 33
С нами: 6157055

Репутация: 0
По умолчанию

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

Потому что ты каждый раз пересоздаешь шрифт. Т.к. этот колбэк вызывается по несколько раз в секунду. Создавай его один раз, после инициализации сампа.
Создаю после инициализации сампа - pFont: необъявленный идентификатор. Вставил вроде туда.







Код:





Код:
if (!SF->getSAMP()->IsInitialized())

       return;
     stFontInfo *pFont;
     pFont = SF->getRender()->CreateNewFont("Tahoma", 12, FCR_BORDER);
 
Ответить с цитированием

  #264  
Старый 13.08.2015, 22:07
itsLegend
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами: 6915558

Репутация: 183


По умолчанию

stFontInfo *pFont; нужно вставлять до цикла mainloop
 
Ответить с цитированием

  #265  
Старый 14.08.2015, 23:30
fanta
Познающий
Регистрация: 01.09.2014
Сообщений: 33
С нами: 6157055

Репутация: 0
По умолчанию

Как получить значение хп?
 
Ответить с цитированием

  #266  
Старый 15.08.2015, 00:06
itsLegend
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами: 6915558

Репутация: 183


По умолчанию

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

Как получить значение хп?
Уточняй кого именно.

Код:





Код:
actor_info *actor = SF->getGame()->actorInfoGet(-1, ACTOR_ALIVE);
actor->hitpoints = 50.0f;
 
Ответить с цитированием

  #267  
Старый 15.08.2015, 16:49
fanta
Познающий
Регистрация: 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; // возвращаем положительный результат
};
 
Ответить с цитированием

  #268  
Старый 15.08.2015, 17:06
itsLegend
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами: 6915558

Репутация: 183


По умолчанию

Возможно, что при actorInfoGet возвращается недействительный handle игрока(т.к. флаги выставлены так, что хендл будет возвращаться только тогда, когда игрок жив).

Либо необходимо убрать флаги, либо проверять возвращаемое значение actorInfoGet на неравенство нулю.
 
Ответить с цитированием

  #269  
Старый 15.08.2015, 17:16
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

if (SF->getGame()->isKeyDown('R') &&

SF->getGame()->actorInfoGet(ACTOR_ALIVE, ACTOR_ALIVE)

)
 
Ответить с цитированием

  #270  
Старый 15.08.2015, 17:33
fanta
Познающий
Регистрация: 01.09.2014
Сообщений: 33
С нами: 6157055

Репутация: 0
По умолчанию

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

if (SF->getGame()->isKeyDown('R') &&
SF->getGame()->actorInfoGet(ACTOR_ALIVE, ACTOR_ALIVE)
)
Так отказывается рендерить, если я жив.
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.