Вопрос по SF API + thread (стандарт 11) [dll]

Тема в разделе "C, C++", создана пользователем anonnnnn___, 18 дек 2016.

  1. anonnnnn___

    anonnnnn___ Пользователь

    Регистрация:
    07.12.16
    Сообщения:
    14
    Лайки:
    0
    Репутация:
    0
    Приветствую дамы и господа.
    1) Пытаюсь запустить в потоке функцию (создание файла) при заходе в GTA - она крашится с ошибкой.

    upload_2016-12-18_18-28-24.png
    [​IMG]

    Собственно код не большой:

    Код (C++):
    void test()
    {
        ofstream fout("thread.txt");
        fout << "Hi i thread" << endl;
    }
    Код (C++):
    thread th1(test);
    th1.detach();
    2) Есть ли какой либо метод в SF API, чтобы узнать, что игрок зашел в игру (нужно вывести текст после захода и появления стандартной камеры SA-MP)?
     
    #1
  2. 2Shae

    2Shae Известный пользователь

    Регистрация:
    14.05.14
    Сообщения:
    87
    Лайки:
    5
    Репутация:
    4
    bool CALLBACK incomingRPC(stRakNetHookParams *params)
    {
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrServerJoin)
    {
    short int sPlayerID;
    D3DCOLOR D3DPlayerColor;
    byte isNPC, nameLen;
    char szPlayerName[25];

    params->bitStream->ResetReadPointer();
    params->bitStream->Read(sPlayerID);
    params->bitStream->Read(D3DPlayerColor);
    params->bitStream->Read(isNPC);
    params->bitStream->Read(nameLen);
    params->bitStream->Read(szPlayerName, nameLen);
    szPlayerName[nameLen] = '\0';
    params->bitStream->ResetReadPointer();

    SF->getSAMP()->getChat()->AddChatMessage(-1, "%s[%d] подключился к серверу.", szPlayerName, sPlayerID);
    };
    }
     
    #2
  3. NarutoUA

    NarutoUA Хокаге
    BH Team

    Регистрация:
    26.05.13
    Сообщения:
    529
    Лайки:
    568
    Репутация:
    273
    С потоками что-то вообще беда, юзай CreateThread чтоле.
     
    #3
  4. Ice

    Ice Пользователь

    Регистрация:
    12.01.15
    Сообщения:
    23
    Лайки:
    1
    Репутация:
    0
    Da problema ne v iostream a v tom chto u vseh gta v papke Program Files ili tak gde to, i u nih Windows 7+
    A na Windows 7+ netu prav dlja pisanija v papkah krome C:\Users\UserName\ (zdes daljshe mozno gde ugodno pisat)
    Chtobi obojti eto nado ubrat galocku read only s papki gde hoches zapisat fajl, libo samomu sozdat fajl.
     
    #4
  5. anonnnnn___

    anonnnnn___ Пользователь

    Регистрация:
    07.12.16
    Сообщения:
    14
    Лайки:
    0
    Репутация:
    0
    С потоками беда в целом. std::thread не запускается из основного потока (DLL). Связано это с особенностью Windows.

    Можно попробовать костылнуть: запустить CreateThread, потом в этом потоке уже запускать через std::thread
     
    #5