Perojek)0
Известный
- 205
- 3
Не, спасибо)Пробовал просто прописать C:\\Windows\\Fonts\\<название_шрифта>.ttf?
Последнее редактирование:
Не, спасибо)Пробовал просто прописать C:\\Windows\\Fonts\\<название_шрифта>.ttf?
Не советую это делать для АПИ. Я пока сам не знаю, как для отдельных меню его юзать.Не, спасибо)
Вышло чет легко. Средства имгуи позволяют использовать хуевую тучу шрифтов для разных элементов. Вот тебе https://pastebin.com/ZQRK44KfНе, спасибо)
SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC);
bool CALLBACK incomingRPC(stRakNetHookParams *params)
{
// КОД РАБОТАЕТ ТОЛЬКО ТУТ.
// То что ниже проверки , не работает вообще.
// Самое смешное что вчера буквально всё работало , сегодня перестало.
// Других плагинов нету, код не трогал , устанавливал только addon , но пробовал удалять , без разницы..
if (params->packetId == ScriptRPCEnumeration::RPC_ScrShowDialog)
{
// Тут уже не работает
unsigned short DialogID;
BYTE style, caplen, button1_len, button2_len;
char caption[255], button1[25], button2[25], info[0x1000];
params->bitStream->ResetReadPointer();
params->bitStream->Read(DialogID);
params->bitStream->Read(style);
params->bitStream->Read(caplen);
params->bitStream->Read(caption, caplen);
caption[caplen] = '\0';
params->bitStream->Read(button1_len);
params->bitStream->Read(button1, button1_len);
button1[button1_len] = '\0';
params->bitStream->Read(button2_len);
params->bitStream->Read(button2, button2_len);
button2[button2_len] = '\0';
SF->getRakNet()->DecodeString(info, 0x1000, params->bitStream);
std::string str = info, temp = caption;
std::smatch res, stars;
stChatInfo *chat = SF->getSAMP()->getChat();
.....
.....
....
.....
}
void CALLBACK cmd(std::string param)
{
int id;
uint16_t pID, t_pID; uint8_t type, wID;
float fOrigin[3], fTarget[3], fCenter[3];
sscanf(param.c_str(), "%d", &id);
BitStream bs;
pID = id;
fCenter[0] = 0.122;
fCenter[1] = 0.133;
fCenter[2] = 0.535;
stOnFootData pos = SF->getSAMP()->getPlayers()->pRemotePlayer[id]->pPlayerData->onFootData;
fOrigin[0] = pos.fPosition[0];
fOrigin[1] = pos.fPosition[1];
fOrigin[2] = pos.fPosition[2];
fTarget[0] = PEDSELF->GetPosition()->fX;
fTarget[1] = PEDSELF->GetPosition()->fY;
fTarget[2] = PEDSELF->GetPosition()->fZ;
type = 1;
wID = 24;
t_pID = SF->getSAMP()->getPlayers()->sLocalPlayerID;
bs.Write(ID_BULLET_SYNC);
bs.Write(pID);
bs.Write(type);
bs.Write(t_pID);
bs.Write(fOrigin);
bs.Write(fTarget);
bs.Write(fCenter);
bs.Write(wID);
SF->getRakNet()->emulateRecvPacket(ID_BULLET_SYNC, &bs);
};
После установки аддона перестал перехватываться RPC_ScrShowDialog. Без аддона все нормально
в mainloop'e..
C++:SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC);
сам каллбек...
C++:bool CALLBACK incomingRPC(stRakNetHookParams *params) { // КОД РАБОТАЕТ ТОЛЬКО ТУТ. // То что ниже проверки , не работает вообще. // Самое смешное что вчера буквально всё работало , сегодня перестало. // Других плагинов нету, код не трогал , устанавливал только addon , но пробовал удалять , без разницы.. if (params->packetId == ScriptRPCEnumeration::RPC_ScrShowDialog) { // Тут уже не работает unsigned short DialogID; BYTE style, caplen, button1_len, button2_len; char caption[255], button1[25], button2[25], info[0x1000]; params->bitStream->ResetReadPointer(); params->bitStream->Read(DialogID); params->bitStream->Read(style); params->bitStream->Read(caplen); params->bitStream->Read(caption, caplen); caption[caplen] = '\0'; params->bitStream->Read(button1_len); params->bitStream->Read(button1, button1_len); button1[button1_len] = '\0'; params->bitStream->Read(button2_len); params->bitStream->Read(button2, button2_len); button2[button2_len] = '\0'; SF->getRakNet()->DecodeString(info, 0x1000, params->bitStream); std::string str = info, temp = caption; std::smatch res, stars; stChatInfo *chat = SF->getSAMP()->getChat(); ..... ..... .... ..... }
Сделал всё , сломал addon что то , помогло только переустановка GTA полностью.
Оставлю тут. Может столкнется кто нибудь.
Нашел решение. samp.asi просто надо удалить, аддон даже удалять не надоДрочил этот аддон во всех направлениях час , не нашёл выхода.
Делал простенькое конечно , в виде , включения \ выключения анти-чита и тому подобного.
Единственный выход - это полное удаление GTA. И заного чистая установка. (Это что я лично нашёл, может быть есть и другой вариант)
BitStream bsClass;
bsClass.Write(ID);
bsClass.Write(Style);
bsClass.Write(sizeCaption);
bsClass.Write(Caption);
bsClass.Write(sizeButton1);
bsClass.Write(Button1);
bsClass.Write(sizeButton2);
bsClass.Write(Button2);
SF->getRakNet()->EncodeString(Info, 0x1000, &bsClass);
SF->getRakNet()->emulateRecvRPC(ScriptRPCEnumeration::RPC_ScrShowDialog, &bsClass);
Используй SF->getSAMP()->getDialog()->ShowDialog()Поч не робит?C++:BitStream bsClass; bsClass.Write(ID); bsClass.Write(Style); bsClass.Write(sizeCaption); bsClass.Write(Caption); bsClass.Write(sizeButton1); bsClass.Write(Button1); bsClass.Write(sizeButton2); bsClass.Write(Button2); SF->getRakNet()->EncodeString(Info, 0x1000, &bsClass); SF->getRakNet()->emulateRecvRPC(ScriptRPCEnumeration::RPC_ScrShowDialog, &bsClass);
Тогда RPC_DIALOGRESPONSE не отправляется, если я ничего не путаю.Используй SF->getSAMP()->getDialog()->ShowDialog()
Что ты пытаешься сделать?Тогда RPC_DIALOGRESPONSE не отправляется, если я ничего не путаю.
Вот и отправляй его в ручную. Или сделай коллбек на локальный диалог и отправляй через негоТогда RPC_DIALOGRESPONSE не отправляется, если я ничего не путаю.
Через таймеры делай. Где-то выше есть примерПодскажите как сделать задержку между функциями? Для примера мне нужно сделать биндер на отыгровку определённых команд. Напишите примерчик