SF Plugin [DRP] Старый логотип

Revalto

Известный
Автор темы
531
225
Всем привет. Перейдем сразу к теме...

Кто-то писал, что ему надо старый логотип DRP, мол с новым не удобно играть.
Ну ловите...

Скачать: Во вложениях...
Разработчик: Revalto

Скриншот:
RjOWi9a.jpg
 

Вложения

  • [DRP] TextDraw.sf
    11 KB · Просмотры: 429

TheGood11

Участник
173
10
Всем привет. Перейдем сразу к теме...

Кто-то писал, что ему надо старый логотип DRP, мол с новым не удобно играть.
Ну ловите...

Скачать: Во вложениях...
Разработчик: Revalto

Скриншот:
RjOWi9a.jpg
Круто, можно такое на луа перенести?)
 

Revalto

Известный
Автор темы
531
225
Круто, можно такое на луа перенести?)
Можно, ручками...

изменить автора же, а зачем еще
IDA не помеха :D

Просто было бы интересно посмотреть как это всё сделанно, а в C++ не разбираюсь)

Нет, выше уже написал)
Берешь структуру 125 TextDraw, переделываешь её на эту:
Код:
MyTD.fBoxHeight =  0.249999;
        MyTD.fLetterWidth = 0.300000;
        MyTD.dwBoxColor = -16776961;
        MyTD.byteShadow = 0;
        MyTD.byteOutline = -1;
        MyTD.dwBackgroundColor = -1;
        MyTD.byteStyle = 2;
        MyTD.byteProportional = 1;
После чего удаляешь 125 - 129 текстдравы и создаешь 125 тд со своей структурой...

Полный код:
Код:
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>

#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"

SAMPFUNCS *SF = new SAMPFUNCS();

bool CALLBACK incomingRPC(stRakNetHookParams *params) // определение callback-функции, которая будет вызвана, если от сервера был получен новый RPC.
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrShowTextDraw) 
    {
        WORD wTextID, cTextLen;
        stTextDrawTransmit data;
        char cText[65535];
        BitStream *bsData = params->bitStream;
        bsData->Read(wTextID);
        bsData->Read((PCHAR)&data, sizeof(stTextDrawTransmit));
        bsData->Read(cTextLen);
        bsData->Read(cText, cTextLen);
        cText[cTextLen] = '\0';

        stTextDrawTransmit MyTD;

        SF->getSAMP()->getInfo()->pPools->pTextdraw->GetTransmit(125, MyTD);
        MyTD.fBoxHeight =  0.249999;
        MyTD.fLetterWidth = 0.300000;
        MyTD.dwBoxColor = -16776961;
        MyTD.byteShadow = 0;
        MyTD.byteOutline = -1;
        MyTD.dwBackgroundColor = -1;
        MyTD.byteStyle = 2;
        MyTD.byteProportional = 1;
        SF->getSAMP()->getInfo()->pPools->pTextdraw->Delete(125);
        SF->getSAMP()->getInfo()->pPools->pTextdraw->Create(125, &MyTD, "DIAMOND");

        SF->getSAMP()->getInfo()->pPools->pTextdraw->Delete(126);
        SF->getSAMP()->getInfo()->pPools->pTextdraw->Delete(127);
        SF->getSAMP()->getInfo()->pPools->pTextdraw->Delete(128);
        SF->getSAMP()->getInfo()->pPools->pTextdraw->Delete(129);
    };

    return true; // успешно завершаем обработку RPC.
};

void CALLBACK mainloop()
{
    static bool init = false;
    if (!init) {
        if (GAME == nullptr || GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME || !SF->getSAMP()->IsInitialized()) return;
        SF->getSAMP()->getChat()->AddChatMessage(-1, "{FF8C00}[ TextDraw ]{FFFFFF} Скрипт создан для проекта Diamond RP! {4169E1}Разработчик: {8A2BE2}Revalto");
        SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC);
        init = true;
    }
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    switch (dwReasonForCall)
    {
        case DLL_PROCESS_ATTACH:
            SF->initPlugin(mainloop, hModule);
            break;
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}
 

Botovod

Известный
10
0
Можно, ручками...


IDA не помеха :D


Берешь структуру 125 TextDraw, переделываешь её на эту:
Код:
MyTD.fBoxHeight =  0.249999;
        MyTD.fLetterWidth = 0.300000;
        MyTD.dwBoxColor = -16776961;
        MyTD.byteShadow = 0;
        MyTD.byteOutline = -1;
        MyTD.dwBackgroundColor = -1;
        MyTD.byteStyle = 2;
        MyTD.byteProportional = 1;
После чего удаляешь 125 - 129 текстдравы и создаешь 125 тд со своей структурой...

Полный код:
Код:
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>

#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"

SAMPFUNCS *SF = new SAMPFUNCS();

bool CALLBACK incomingRPC(stRakNetHookParams *params) // определение callback-функции, которая будет вызвана, если от сервера был получен новый RPC.
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrShowTextDraw)
    {
        WORD wTextID, cTextLen;
        stTextDrawTransmit data;
        char cText[65535];
        BitStream *bsData = params->bitStream;
        bsData->Read(wTextID);
        bsData->Read((PCHAR)&data, sizeof(stTextDrawTransmit));
        bsData->Read(cTextLen);
        bsData->Read(cText, cTextLen);
        cText[cTextLen] = '\0';

        stTextDrawTransmit MyTD;

        SF->getSAMP()->getInfo()->pPools->pTextdraw->GetTransmit(125, MyTD);
        MyTD.fBoxHeight =  0.249999;
        MyTD.fLetterWidth = 0.300000;
        MyTD.dwBoxColor = -16776961;
        MyTD.byteShadow = 0;
        MyTD.byteOutline = -1;
        MyTD.dwBackgroundColor = -1;
        MyTD.byteStyle = 2;
        MyTD.byteProportional = 1;
        SF->getSAMP()->getInfo()->pPools->pTextdraw->Delete(125);
        SF->getSAMP()->getInfo()->pPools->pTextdraw->Create(125, &MyTD, "DIAMOND");

        SF->getSAMP()->getInfo()->pPools->pTextdraw->Delete(126);
        SF->getSAMP()->getInfo()->pPools->pTextdraw->Delete(127);
        SF->getSAMP()->getInfo()->pPools->pTextdraw->Delete(128);
        SF->getSAMP()->getInfo()->pPools->pTextdraw->Delete(129);
    };

    return true; // успешно завершаем обработку RPC.
};

void CALLBACK mainloop()
{
    static bool init = false;
    if (!init) {
        if (GAME == nullptr || GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME || !SF->getSAMP()->IsInitialized()) return;
        SF->getSAMP()->getChat()->AddChatMessage(-1, "{FF8C00}[ TextDraw ]{FFFFFF} Скрипт создан для проекта Diamond RP! {4169E1}Разработчик: {8A2BE2}Revalto");
        SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC);
        init = true;
    }
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    switch (dwReasonForCall)
    {
        case DLL_PROCESS_ATTACH:
            SF->initPlugin(mainloop, hModule);
            break;
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}
Шрифт названия сервера, как у Diamond сделай пожалуйста.
 

j0e

Новичок
6
0
Прям пахнет Nostalgia.
Было бы круто если был старый логотип,а так +rep.