- 531
- 225
Круто, можно такое на луа перенести?)Всем привет. Перейдем сразу к теме...
Кто-то писал, что ему надо старый логотип DRP, мол с новым не удобно играть.
Ну ловите...
Скачать: Во вложениях...
Разработчик: Revalto
Скриншот:
чем тебе в .sf не угодило?Круто, можно такое на луа перенести?)
изменить автора же, а зачем ещечем тебе в .sf не угодило?
Просто было бы интересно посмотреть как это всё сделанно, а в C++ не разбираюсь)чем тебе в .sf не угодило?
Нет, выше уже написал)изменить автора же, а зачем еще
Можно, ручками...Круто, можно такое на луа перенести?)
IDA не помеха :Dизменить автора же, а зачем еще
Берешь структуру 125 TextDraw, переделываешь её на эту:Просто было бы интересно посмотреть как это всё сделанно, а в C++ не разбираюсь)
Нет, выше уже написал)
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;
#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 сделай пожалуйста.Можно, ручками...
IDA не помеха :D
Берешь структуру 125 TextDraw, переделываешь её на эту:
После чего удаляешь 125 - 129 текстдравы и создаешь 125 тд со своей структурой...Код: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;
Полный код:
Код:#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; }
он же в рч, ты че? Ты хочешь его убить? Он не может ответить, сейчас разнесет все нахуй :sad_frog:
Законом не запрещено...Посмотреть вложение 19118
Щас бы целое сообщение, ради одного текстдрава выводить...
Та почти похожи, да и код сверху лежит. Чутка переделать и готово)