Крашится сф плагин при создании потока(пиздец рандом)

Статус
В этой теме нельзя размещать новые ответы.

rraggerr

проверенный какой-то
Автор темы
1,626
847
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
CreateThread( NULL , 0 , ( LPTHREAD_START_ROUTINE ) SendSync , NULL , 0 , 0 ); //mainloop

bool thread = false; // один из костылей
void SendSync()
{
thread = true;
    if( !isincar)
    {
        stOnFootData sync;
        memset( &sync , 0 , sizeof( stOnFootData ) );

        sync = sampfuncs->getSAMP()->getPlayers()->pLocalPlayer->onFootData;

        for( int i = 0; i <= 2; i++ )
        {
        sync.fPosition[ i ] = g_c[i];
        }
        sync.fPosition[ 0 ] -= 0.5f;
        sync.fPosition[ 2 ] += 0.5f;

        BitStream bsActorSync;
        bsActorSync.Write( ( BYTE ) ID_PLAYER_SYNC );
        bsActorSync.Write( ( PCHAR ) &sync , sizeof( stOnFootData ) );
        sampfuncs->getRakNet()->SendPacket( &bsActorSync );
    }
    std::this_thread::sleep_for( 10ms ); // или просто Sleep, не важно
    if( !isincar )
        localplayer->ForceSendOnfootSync();
thread = false;
}

C++:
bool Driving( int PlayerID )
{
    if( PlayerID == ACTOR_SELF ) PlayerID = SF->getSAMP()->getPlayers()->sLocalPlayerID;
    int state;
    if( PlayerID == SF->getSAMP()->getPlayers()->sLocalPlayerID )
        state = SF->getSAMP()->getPlayers()->pLocalPlayer->pSAMP_Actor->pGTA_Ped->state;
    else
        state = SF->getSAMP()->getPlayers()->pRemotePlayer[ PlayerID ]->pPlayerData->pSAMP_Actor->pGTA_Ped->state;
    if( state == 50 )
        return true;
    else
        return false;
};
// by srteam
    isincar = Driving( ACTOR_SELF );
// нахуя это надо? - без этой хуйни будет ошибка в одной из структур педа(тоже рандомно)

и в итоге у меня этот поток ебучий срабатывает рандомное количество раз, далее идет краш с какой то неебической ошибкой
p.s поток стартуется 1 раз, проверка на то что поток уже существует есть

и кароче я тут накостылил все что возможно, и всеравно ошибка , и дебаггер не может ее показать, весь прикол в том что если я не буду делать поток - ошибок не будет вообще, все работает без ошибок и крашей, создаю поток - начинается пиздец с рандомными ошибками.
но без потока я не смогу использовать sleep(будут подвисания).

объясняю что хочу сделать:
1. проверки на обьекты(цикл)
2. если обьект подходит по позиции(к примеру)
3. тп к этому обьекту
4. задержка 5 мс(это важно)
5. форс отправки синхры(она нопится заранее)
6. пункт 1
 
Последнее редактирование:

FYP

Известный
Администратор
1,758
5,723
не, я сделал включение булевой после того как прошла задержка, и в презенте/маинлупе вызываю то что должно идти после задержки, вот так вот. вроде как работает
то же самое можно (нужно) сделать без потока с использованием GetTickCount, как раз это и имелось в виду.
 
Статус
В этой теме нельзя размещать новые ответы.