Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "plugin.h"
- #include "CHud.h"
- #include "GameVersion.h"
- #include "CPad.h"
- #include "CRunningScript.h"
- #include "CTimer.h"
- #include "extensions\ScriptCommands.h"
- bool messageActive = false;
- char* messageText = new char[255];
- int playMessageOneTime = 0;
- int hungUpNow = 0;
- int playaAction = 0;
- int _ZN6CWorld7PlayersE_11 = 0;
- int commandHasMissionAudioFinished = 0x45ABEB;
- static int CRunningScriptCollectParameters = 0x451010;
- static int CAudioAudioScriptObjEnded = 0x5F9790;
- static int CRunningScriptUpdateCompareFlag = 0x463F00;
- static int CAudioAudioScriptObjEnded_1 = 0x5F97B0;
- // if (plugin::patch::GetUShort(commandHasMissionAudioFinished + 0x20) != 0x474) {
- // plugin::patch::SetUShort(commandHasMissionAudioFinished + 0x20, 0x474);
- // }
- __declspec(naked) void command_03D2() {
- _asm {
- lea eax,[ebp+0x10]
- mov ecx,ebp
- push 1
- push eax
- call CRunningScriptCollectParameters
- mov eax,ds:[0x7D7438]
- mov ecx,0xA10B8A
- dec eax
- cmp hungUpNow, 1
- je hungUp
- push eax
- call CAudioAudioScriptObjEnded
- test al,al
- je loc_45AC11
- hungUp:
- mov al,1
- jmp loc_45AC13
- loc_45AC11:
- xor al,al
- loc_45AC13:
- mov ecx,ebp
- push eax
- call CRunningScriptUpdateCompareFlag
- xor al,al
- add esp,0x208
- pop ebp
- pop edi
- pop esi
- pop ebx
- ret 4
- }
- }
- __declspec(naked) void command_03D2_11() {
- _asm {
- lea eax,[ebp+0x10]
- mov ecx,ebp
- push 1
- push eax
- call CRunningScriptCollectParameters
- mov eax,ds:[0x7D7440]
- mov ecx,0xA10B93
- dec eax
- cmp hungUpNow, 1
- je hungUp_1
- push eax
- call CAudioAudioScriptObjEnded_1
- test al,al
- je lab_45AC11
- hungUp_1:
- mov al,1
- jmp lab_45AC13
- lab_45AC11:
- xor al,al
- lab_45AC13:
- mov ecx,ebp
- push eax
- call CRunningScriptUpdateCompareFlag
- xor al,al
- add esp,0x208
- pop ebp
- pop edi
- pop esi
- pop ebx
- ret 4
- }
- }
- using namespace plugin;
- class HungUpThePhone {
- public:
- HungUpThePhone() {
- if (plugin::IsGameVersion10en()) {
- injector::MakeJMP(commandHasMissionAudioFinished, command_03D2);
- } else {
- if (plugin::IsGameVersion11en()) {
- injector::MakeJMP(commandHasMissionAudioFinished, command_03D2_11);
- } else {
- CHud::SetHelpMessage("Unsupported game version!", false, false);
- }
- }
- Events::initGameEvent += [] {
- playMessageOneTime = GetPrivateProfileInt("HungUpThePhone", "PlayMessageOnce", 0, PLUGIN_PATH("HungUpThePhone.ini"));
- };
- Events::gameProcessEvent += [] {
- // 0x94AD30 // 1.1
- if (plugin::IsGameVersion10en()) {
- CPlayerPed *playa = FindPlayerPed();
- if (playa) {
- // Command<0x0ADF>("ABCD", "_____"); // ADD_TEXT_LABEL
- // Command<0x0AE0>("ABCD"); // REMOVE_TEXT_LABEL
- // Command<Commands::PRINT_HELP>('ABCD'); // opcode_03E5
- // DWORD TheText = 0x94B220;
- // wchar_t *v27 = plugin::CallMethod<0x584F30>(TheText, "ABCD"); // CText::Get(&TheText, "ABCD");
- if (playa->m_dwAction == 36) { // 36 - uses cellphone
- if (CTimer::m_snTimeInMilliseconds - Pads->LastTimeTouched) {
- if (!messageActive) {
- GetPrivateProfileString("HungUpThePhone", "PhoneMessage", "", messageText, 255, PLUGIN_PATH("HungUpThePhone.ini"));
- CHud::SetHelpMessage(messageText, false, false); messageActive = true;
- }
- }
- if (Pads->ExitVehicleJustDown()) { // 70 - F key
- hungUpNow = 1;
- }
- } else {
- hungUpNow = 0; messageActive = false;
- }
- }
- } else {
- if (plugin::IsGameVersion11en()) {
- _ZN6CWorld7PlayersE_11 = plugin::patch::GetUInt(0x94AD30);
- playaAction = plugin::patch::GetUInt(_ZN6CWorld7PlayersE_11 + 0x244);
- if (playaAction == 36) { // 36 - uses cellphone
- if (CTimer::m_snTimeInMilliseconds - Pads->LastTimeTouched) {
- if (!messageActive) {
- GetPrivateProfileString("HungUpThePhone", "PhoneMessage", "", messageText, 255, PLUGIN_PATH("HungUpThePhone.ini"));
- CHud::SetHelpMessage(messageText, false, false); messageActive = true;
- }
- }
- if (Pads->ExitVehicleJustDown()) { // 70 - F key
- hungUpNow = 1;
- }
- } else {
- hungUpNow = 0; messageActive = false;
- }
- } else {
- if (!messageActive) {
- CHud::SetHelpMessage("Unsupported game version!", false, false); messageActive = true;
- }
- }
- }
- };
- }
- } hungUpThePhone;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement