 |
|

11.07.2015, 22:51
|
|
Участник форума
Регистрация: 13.07.2014
Сообщений: 164
С нами:
6227977
Репутация:
83
|
|
короче не стал доебывать в чате со своими нубскими вопросами, вот один из них.
Благодаря Фипу получилось сделать, чтобы обрабатывались действия с anttweakbar.
Теперь хук не дает закрыть меню/двинуться с места, посмотрел в SFGAME че можно сделать, но не увидел нихера.
(mainloop)
Сообщение от Спойлер
Код:
Код:
void CALLBACK mainloop()
{
static bool init = false;
if (!init)
{
if (GAME == nullptr)
return;
if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
return;
if (!SF->getSAMP()->IsInitialized())
return;
SF->getRender()->registerD3DCallback(eDirect3DDeviceMethods::D3DMETHOD_PRESENT, present);
SF->getGame()->registerWndProcCallback(SFGame::HIGH_CB_PRIORITY, hookmsg);
init = true;
}
if (SF->getGame()->isKeyPressed(0x7A))
{
TwInit(TW_DIRECT3D9, SF->getRender()->getD3DDevice());
MenuState ^= true;
if (MenuState)
SF->getSAMP()->getMisc()->ToggleCursor(3, true);
else
{
SF->getSAMP()->getMisc()->ToggleCursor(false);
TwTerminate();
}
}
}
(hookmsg и MessageProc)
Сообщение от Спойлер
Код:
Код:
LRESULT CALLBACK MessageProc(HWND wnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
if (TwEventWin(wnd, msg, wParam, lParam))
return 0;
switch (msg)
{
case WM_CHAR:
if (wParam == VK_ESCAPE)
PostQuitMessage(0);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(wnd, msg, wParam, lParam);
}
}
bool __stdcall hookmsg(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
return MessageProc(hwnd, uMsg, wParam, lParam);
}
|
|
|

12.07.2015, 00:20
|
|
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,771
С нами:
6935121
Репутация:
233
|
|
bool __stdcall hookmsg(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
return !TwEventWin(hwnd, uMsg, wParam, lParam);
}
этого достаточно.
|
|
|

12.07.2015, 22:49
|
|
Участник форума
Регистрация: 04.02.2014
Сообщений: 104
С нами:
6456767
Репутация:
68
|
|
FYP, эмуляцию игровых клавиш запилил?
|
|
|

13.07.2015, 02:08
|
|
Познающий
Регистрация: 08.07.2015
Сообщений: 40
С нами:
5709574
Репутация:
0
|
|
Как эмулировать нажатие клавиши? Функция emulateGTAKey не работает, как я понял. Через callOpcode не получилось (я никогда не работал с опкодами). Может, есть какое-то решение?
|
|
|

13.07.2015, 02:43
|
|
Познающий
Регистрация: 08.07.2015
Сообщений: 40
С нами:
5709574
Репутация:
0
|
|
Ещё вопрос. Можно ли как-то "поставить на паузу", не выходя в меню, из скрипта? Чтобы сервер думал, что игрок на паузе, но скрипт всё равно работал?
|
|
|

13.07.2015, 21:46
|
|
Познающий
Регистрация: 08.07.2015
Сообщений: 40
С нами:
5709574
Репутация:
0
|
|
И вдогонку. Как получить координаты чекпоинта?
|
|
|

14.07.2015, 16:14
|
|
Познающий
Регистрация: 08.07.2015
Сообщений: 40
С нами:
5709574
Репутация:
0
|
|
Написал такую функцию для отправки сообщений в чат. Но отправляет не то. В чат выводится пустое сообщение. Как правильно отправлять данный пакет?
Код:
Код:
void sendTextToChat( string text )
{
BitStream bsClass; // объявляем объект класса BitStream, в котором хранятся пакетные данные.
bsClass.Write( text.size() );
bsClass.Write( text.c_str() );
SF->getRakNet()->SendRPC( RPC_Chat, &bsClass ); // отправляем RPC
};
|
|
|

14.07.2015, 17:45
|
|
Новичок
Регистрация: 09.03.2013
Сообщений: 21
С нами:
6934813
Репутация:
0
|
|
Код:
Код:
void sendTextToChat( string text )
{
BitStream bsClass; // объявляем объект класса BitStream, в котором хранятся пакетные данные.
bsClass.Write( (byte)text.length() );
bsClass.Write( text.c_str(), text.length() );
SF->getRakNet()->SendRPC( RPC_Chat, &bsClass ); // отправляем RPC
};
|
|
|

14.07.2015, 21:32
|
|
Познающий
Регистрация: 08.07.2015
Сообщений: 40
С нами:
5709574
Репутация:
0
|
|
Спасибо огромное! А остальные вопросы не подскажешь?
Ещё дополнительно вопрос - как понять, что персонаж находится именно в поезде? Не просто в машине.
|
|
|

16.07.2015, 04:16
|
|
Участник форума
Регистрация: 13.07.2014
Сообщений: 164
С нами:
6227977
Репутация:
83
|
|
Сообщение от urShadow
Код:
Код:
void sendTextToChat( string text )
{
BitStream bsClass; // объявляем объект класса BitStream, в котором хранятся пакетные данные.
bsClass.Write( (byte)text.length() );
bsClass.Write( text.c_str(), text.length() );
SF->getRakNet()->SendRPC( RPC_Chat, &bsClass ); // отправляем RPC
};
Можно так кстати
Код:
Код:
SF->getSAMP()->getInput()->pszDefaultCMD("text");
Но я не нашел как сендить серверные команды.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|