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

Woofing Giraffe

Активный
402
49
Да, спасибо, помогло. А как сделать что бы первый текст появился -> через секунду исчез -> появился второй текст -> исчез -> появился следующий текст -> исчез. И так что бы до последнего текста было. (Типа как загрузка плагина).
Сам не могу понять как сделать типо wait`a, если делаю циклом, скрипт стопит, если sleep, опять же стоп, вроде как с таймером надо попробовать, но я не разобрался как.
 

White_116

Новичок
18
6
Сам не могу понять как сделать типо wait`a, если делаю циклом, скрипт стопит, если sleep, опять же стоп, вроде как с таймером надо попробовать, но я не разобрался как.

Колхозный вариант.

Код:
char load_percent_text[11][] = { "0%", "10%", "20%", "30%", "40%", "50%", "60%", "70%", "80%", "90%", "100%" };
char load_percen = 0;

bool CALLBACK Present(CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion)
{
    if (SUCCEEDED(SF->getRender()->BeginRender()))
    {
        static stFontInfo *pFont = NULL;
        if (pFont == NULL)
        {
            pFont = SF->getRender()->CreateNewFont("Tahoma", 12, FCR_BORDER);
            if (pFont == NULL) //WTF? Exit if not created
            {
                SF->getRender()->EndRender();
                return true;
            }
        }

        static int load_time = GetTickCount();
        if (load_percen < 11)
        {
            if (load_time < GetTickCount())
            {
                load_time = GetTickCount() + 1000;
                load_percen++;
                if (load_percen == 11)
                {
                    load_time += 3000; //show " Loaded!" 3 sec
                }
            }
            pFont->Print(LoadPercentText[load_percen], D3DCOLOR_ARGB(255, 255, 255, 0), 500, 500, false);
        }
        else if (load_percen == 11)
        {
            if (load_time < GetTickCount())
            {
                load_percen++;
            }
            pFont->Print(" Loaded!", D3DCOLOR_ARGB(255, 255, 255, 0), 500, 500, false);
        }
     
        SF->getRender()->EndRender();
    };

    return true;
};
 

CissCass

Новичок
5
0
Сам не могу понять как сделать типо wait`a, если делаю циклом, скрипт стопит, если sleep, опять же стоп, вроде как с таймером надо попробовать, но я не разобрался как.
Можешь воспользоваться примером выше, либо создать поток и в нем в нужном месте юзать sleep, тогда фризить не будет
 

Dark_Knight

Me, me and me.
Друг
4,062
2,077
Как можно подключить AntTweakBar к плагину?
Подключаешь инклуду и либу и работаешь. Обьявляешь.
Код:
TwBar *twBar_Main = nullptr;
В маинлуп
Код:
if (!TwInit(TW_DIRECT3D9, SF->getRender()->getD3DDevice()))
            return;
twBar_Main = TwNewBar("Main");
Ну а дальше уже юзаешь документацию по нем.
 

0pc0d3R

Потрачен
550
269
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
слип в хуке или команде вызвет геймфриз, создай новый поток и вызывай с него метод, а у нем можешь уже слип юзать как альтернативу вейту.
 
  • Нравится
Реакции: Woofing Giraffe

0pc0d3R

Потрачен
550
269
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как можно использовать вот это:
C++:
actor_info *acter = SF->GetGame()->actor_info_get(-1, 0x1);
acter->base.matrix[4 * 3] = x;
acter->base.matrix[4 * 3 + 1] = y;
acter->base.matrix[4 * 3 + 2] = z;
А вообще это давний способ теперь более удобный через мта классы есть для себя PEDSELF->Teleport
 

0pc0d3R

Потрачен
550
269
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
а где "мта классы" найти?
набери PEDSELF-> и там смотри, найдешь весь функционал для работы из собой GAME-> уже куда глобальнее там тож дофига всего вообщем ройся ищи
 

Woofing Giraffe

Активный
402
49
Йобана, как сделать обработчик локального диалога? Ну типо if samp_dialog_respond в cleo
 

urShadow

Потрачен
Автор темы
21
27
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ты бы сперва статьи какие нибудь по C++ почитал, потом бы уже спрашивал. Эта тема касается только SAMPFUNCS API.
 

0pc0d3R

Потрачен
550
269
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Такой вопрос, как создать новый поток?)
C++:
DWORD  ThreadID;
HANDLE hThread; 
void __stdcall AnotherThread(void)
{
   Sleep(500);
   TerminateThread(hThread, 0);
   CloseHandle(hThread);
}
hThread = CreateThread ( NULL, 0, (LPTHREAD_START_ROUTINE)&AnotherThread, NULL, 0, &ThreadID );
Йобана, как сделать обработчик локального диалога? Ну типо if samp_dialog_respond в cleo
SF->getSAMP()->registerDialogCallback(OnDialogResponse); в маинлуп
C++:
void CALLBACK OnDialogResponse( int dialogId, int buttonId, int listItem, const char *input )
{
}
 

fanta

Новичок
33
6
Как вызвать опкод, в котором уже имеются кавычки? Например 0AF9: samp say_msg "lol"