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

  #2621  
Старый 09.07.2018, 11:20
san0
Постоянный
Регистрация: 15.12.2013
Сообщений: 412
С нами: 6530249

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

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

Юзай вектора, они удобнее.
Ему же явно нужен неизменяемый C массив строк, он не использовал new, а значит все возможности аллокатора попросту не нужны. Более того, при каждом вызове функции будет вызываться конструктор на кучу элементов и забирать много рантайма

P.S а вообще это все должно быть в GXT игры

Код:





Код:
#if __cplusplus > 201402L
    #include 
#else
    #include 
    namespace std {
        template 
        constexpr std::size_t size(const Type (&input_array)[Num]) noexcept {
            return Num;
        }
    }
#endif

void CALLBACK biz_check(std::string param) {
    static const char str[][50] {
        "Alhambra",
        "PigPen",
        "Misty Club",
        "Casino Bellagio",
        "Grove Street Bar",
        "Sobrino de Botin",
        "Vinewood Burger",
        "Marina Burger",
        "Idlewood Pizza",
        "Downtown Cluc",
        "Marina Cluc",
        "Idelwood 24/7",
        "Flint 24/7",
        "Easter 24/7",
        "Mullholand 24/7",
        "Jizzy",
        "Redsands West 24/7",
        "Julius 24/7",
        "Lil\"Probe\"inn",
        "Idelwood Gas",
        "Mullholang Gas",
        "Whetstone 24/7",
        "East Cluc",
        "WillowField Cluc",
        "Flats Cluc",
        "Financial Pizza",
        "Come-A-Lot Gas",
        "FortCarson Gas",
        "BoneCountry Gas",
        "Julius Gas",
        "PricklePine Gas",
        "Flint Gas",
        "Easter Gas",
        "Doherty Gas",
        "Juniper 24/7",
        "Juniper Gas",
        "Emerald Isle 24/7",
        "Emerald Isle Gas",
        "Redsands-West Gas",
        "ElGuebrabos Gas",
        "TierraRobada Gas",
        "AngelPine Gas",
        "WhetStone Gas",
        "Dilimore Gas",
        "Montgomery Gas"
    };
    for (auto i = 0; i getSAMP()->getChat()->AddChatMessage(COLOR_GREY, "-> %s", str[i]);
}
 
Ответить с цитированием

  #2622  
Старый 09.07.2018, 12:56
C&J
Познающий
Регистрация: 13.11.2014
Сообщений: 41
С нами: 6050727

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

Повторюсь с вопросом,так как уже заебался...

Происходит конфликт двух плагинов,а то есть перезапись хука HandleRPCPacketFunc,как исправить данную хурму?

Цитата:
Сообщение от Спойлер  


Код:





Код:
#define SAMP_HOOKENTER_HANDLE_RPC                    0x3743D
#define SAMP_HOOKENTER_HANDLE_RPC2                    0x373C9

#define SAMP_HOOKEXIT_HANDLE_RPC                    0x37443
#define SAMP_HOOKEXIT_HANDLE_RPC2                    0x37451

void HandleRPCPacketFunc(unsigned char id, RPCParameters *rpcParams, void(*callback) (RPCParameters *))
{
    if (rpcParams != nullptr && rpcParams->numberOfBitsOfData >= 8)
    {
        BitStream    bsData(rpcParams->input, rpcParams->numberOfBitsOfData / 8, false);
        switch (id)
        {
            case  RPC_DeathMessage:
            {
                pSAMP->addMessageToChat(-1, "plugin ONE");
                int16_t        plaerid, killerid;
                int8_t            resaon;
           
                bsData.ResetReadPointer();
                bsData.Read(killerid);
                bsData.Read(plaerid);
                bsData.Read(resaon);
                break;
            }

        }
    }
    callback(rpcParams);
}
void _declspec (naked) hook_handle_rpc_packet(void)
{
    static RPCParameters *pRPCParams = nullptr;
    static RPCNode *pRPCNode = nullptr;
    static DWORD dwTmp = 0;

    __asm pushad;
    __asm mov pRPCParams, eax;
    __asm mov pRPCNode, edi;

    HandleRPCPacketFunc(pRPCNode->uniqueIdentifier, pRPCParams, pRPCNode->staticFunctionPointer);
    dwTmp = pSAMP->getSAMPAddr() + SAMP_HOOKEXIT_HANDLE_RPC;

    __asm popad;
    __asm add esp, 4
    __asm jmp dwTmp;
}
void _declspec (naked) hook_handle_rpc_packet2(void)
{
    static RPCParameters *pRPCParams = nullptr;
    static RPCNode *pRPCNode = nullptr;
    static DWORD dwTmp = 0;

    __asm pushad;
    __asm mov pRPCParams, ecx;
    __asm mov pRPCNode, edi;

    HandleRPCPacketFunc(pRPCNode->uniqueIdentifier, pRPCParams, pRPCNode->staticFunctionPointer);
    dwTmp = pSAMP->getSAMPAddr() + SAMP_HOOKEXIT_HANDLE_RPC2;

    __asm popad;
    __asm jmp dwTmp;
}

void InstallAllHooks()
{
    static int    iSAMPHooksInstalled;
    if (!iSAMPHooksInstalled)
    {
        if (pSAMP->getInfo() == NULL)
            return;
/*
https://github.com/sr-tream/UniLib/blob/master/UniLib/CHooks.hpp
*/
        HookRPC1 = new CHookJmp(pSAMP->getSAMPAddr() + SAMP_HOOKENTER_HANDLE_RPC, hook_handle_rpc_packet, 6); //
        HookRPC2 = new CHookJmp(pSAMP->getSAMPAddr() + SAMP_HOOKENTER_HANDLE_RPC2, hook_handle_rpc_packet2, 8);
        iSAMPHooksInstalled = 1;
    }

}


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

  #2623  
Старый 09.07.2018, 13:06
AlexWhite
Новичок
Регистрация: 13.11.2014
Сообщений: 7
С нами: 6050727

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

Сразу говорю, работаю не с клиентом SA:MP, а с его аналогом MTA.

[C++] void DrawRect(LPDIRECT3DDEVICE9 Device_t, int X, int Y, int L, int H, D3DCOLOR c - Pastebin.com(https://pastebin.com/DC91WK75)

Что не так с хуком?
 
Ответить с цитированием

  #2624  
Старый 09.07.2018, 13:21
NarutoUA
Постоянный
Регистрация: 26.05.2013
Сообщений: 692
С нами: 6822856

Репутация: 213


По умолчанию

Цитата:
Сообщение от #CJ  

Повторюсь с вопросом,так как уже заебался...
Происходит конфликт двух плагинов,а то есть перезапись хука HandleRPCPacketFunc,как исправить данную хурму?
Цитата:
Сообщение от Спойлер  


Код:





Код:
#define SAMP_HOOKENTER_HANDLE_RPC                    0x3743D
#define SAMP_HOOKENTER_HANDLE_RPC2                    0x373C9

#define SAMP_HOOKEXIT_HANDLE_RPC                    0x37443
#define SAMP_HOOKEXIT_HANDLE_RPC2                    0x37451

void HandleRPCPacketFunc(unsigned char id, RPCParameters *rpcParams, void(*callback) (RPCParameters *))
{
    if (rpcParams != nullptr && rpcParams->numberOfBitsOfData >= 8)
    {
        BitStream    bsData(rpcParams->input, rpcParams->numberOfBitsOfData / 8, false);
        switch (id)
        {
            case  RPC_DeathMessage:
            {
                pSAMP->addMessageToChat(-1, "plugin ONE");
                int16_t        plaerid, killerid;
                int8_t            resaon;
          
                bsData.ResetReadPointer();
                bsData.Read(killerid);
                bsData.Read(plaerid);
                bsData.Read(resaon);
                break;
            }

        }
    }
    callback(rpcParams);
}
void _declspec (naked) hook_handle_rpc_packet(void)
{
    static RPCParameters *pRPCParams = nullptr;
    static RPCNode *pRPCNode = nullptr;
    static DWORD dwTmp = 0;

    __asm pushad;
    __asm mov pRPCParams, eax;
    __asm mov pRPCNode, edi;

    HandleRPCPacketFunc(pRPCNode->uniqueIdentifier, pRPCParams, pRPCNode->staticFunctionPointer);
    dwTmp = pSAMP->getSAMPAddr() + SAMP_HOOKEXIT_HANDLE_RPC;

    __asm popad;
    __asm add esp, 4
    __asm jmp dwTmp;
}
void _declspec (naked) hook_handle_rpc_packet2(void)
{
    static RPCParameters *pRPCParams = nullptr;
    static RPCNode *pRPCNode = nullptr;
    static DWORD dwTmp = 0;

    __asm pushad;
    __asm mov pRPCParams, ecx;
    __asm mov pRPCNode, edi;

    HandleRPCPacketFunc(pRPCNode->uniqueIdentifier, pRPCParams, pRPCNode->staticFunctionPointer);
    dwTmp = pSAMP->getSAMPAddr() + SAMP_HOOKEXIT_HANDLE_RPC2;

    __asm popad;
    __asm jmp dwTmp;
}

void InstallAllHooks()
{
    static int    iSAMPHooksInstalled;
    if (!iSAMPHooksInstalled)
    {
        if (pSAMP->getInfo() == NULL)
            return;
/*
https://github.com/sr-tream/UniLib/blob/master/UniLib/CHooks.hpp
*/
        HookRPC1 = new CHookJmp(pSAMP->getSAMPAddr() + SAMP_HOOKENTER_HANDLE_RPC, hook_handle_rpc_packet, 6); //
        HookRPC2 = new CHookJmp(pSAMP->getSAMPAddr() + SAMP_HOOKENTER_HANDLE_RPC2, hook_handle_rpc_packet2, 8);
        iSAMPHooksInstalled = 1;
    }

}


Парсишь адрес функции которую вызывает хук и вызываешь в своём хуке (работает только если твой плагин грузится после первого), или ставишь хук в другом месте
 
Ответить с цитированием

  #2625  
Старый 09.07.2018, 13:38
AlexWhite
Новичок
Регистрация: 13.11.2014
Сообщений: 7
С нами: 6050727

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

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

Парсишь адрес функции которую вызывает хук и вызываешь в своём хуке (работает только если твой плагин грузится после первого), или ставишь хук в другом месте
Можешь помочь мне? Сообщение выше
 
Ответить с цитированием

  #2626  
Старый 09.07.2018, 13:42
NarutoUA
Постоянный
Регистрация: 26.05.2013
Сообщений: 692
С нами: 6822856

Репутация: 213


По умолчанию

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

Можешь помочь мне? Сообщение выше
Не знаю, продебагай, ставиться ли вообще твой хук
 
Ответить с цитированием

  #2627  
Старый 09.07.2018, 14:45
C&J
Познающий
Регистрация: 13.11.2014
Сообщений: 41
С нами: 6050727

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

Интересует, как сделать это?

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

...вызываешь в своём хуке...
Цитата:
Сообщение от NarutoUA  

...ставишь хук в другом месте....
 
Ответить с цитированием

  #2628  
Старый 09.07.2018, 22:49
LaRossa
Постоянный
Регистрация: 04.02.2017
Сообщений: 429
С нами: 4878878

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

Подскажите как это будет в SF API

CLEO:





Код:
0ADB:
0@v
= car_model
#LANDSTAL
name
 
Ответить с цитированием

  #2629  
Старый 11.07.2018, 00:43
Vandal™
Познающий
Регистрация: 06.01.2016
Сообщений: 55
С нами: 5447426

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

Есть такой варик отправить машину на гибернизацию

Код:





Код:
system("shutdown /h");


Так же там можно указать через какое время это произвести.

Вопрос, как можно указать время, которое он должен будет провести в данном состоянии (сон/e.t.c)? Или каким еще вариантом можно реанимировать комп из такого состояния без действий человека (нажать на клаву, подергать мышкой, e.t.c)?

BIOS не катит.

Гибернизация/сон и подобные штуки подойдут, с учетом выключения питания или занижением его использования до минимума.
 
Ответить с цитированием

  #2630  
Старый 11.07.2018, 01:13
jmksm
Новичок
Регистрация: 30.07.2015
Сообщений: 3
С нами: 5677630

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

Привет, Наруто. Хотел поинтересоваться чем и как ты ломанул РакБота) Нового кряка давненько не было, а посему хотелось бы попробвоать своими силами, тем более как-то даже интересно) Очень надеюсь, что подскажешь.
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.

×

Внести депозит

Введите сумму USDT:

Принимается только USDT TRC20. Fake/Flash USDT не засчитывается.

×

Вывести депозит

Сумма USDT:

Ваш USDT TRC20 кошелек:

Заявка будет отправлена администратору.