Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
- #include <windows.h>
- #include <string>
- #include <assert.h>
- #include <process.h>
- #include <sstream>
- #include "SAMPFUNCS_API.h"
- #include "game_api\game_api.h"
- #pragma warning (disable:4700)
- #pragma warning (disable:4244)
- #define GetCurrentDir _getcwd
- SAMPFUNCS *SF = new SAMPFUNCS();
- bool active = false;
- bool statical[5] = {false, false, true, true, false};
- bool no_called = false;
- int carid = -1;
- float surf[3];
- float quat;
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////
- bool __stdcall HookMyRPC(stRakNetHookParams *hook)
- {
- if (hook->packetId == RPCEnumeration::RPC_EnterVehicle)
- {
- if (active == true)
- {
- SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(204, 0, 0),
- "Внимание! Вы осязаемые другими игроками, инвиз автоматическим дезактивирован.");
- SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(204, 0, 0),
- "Никогда не садитесь не в какой транспорт и даже не запрыгивайте на него.");
- active = false; no_called = false;
- }
- }
- return true;
- };
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////
- bool __stdcall IncRPC(stRakNetHookParams *hook)
- {
- if (hook->packetId == ScriptRPCEnumeration::RPC_ScrSetPlayerPos && active == true && statical[4] == true) return false;
- return true;
- }
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////
- bool __stdcall ReWriteSync(stRakNetHookParams *hook)
- {
- if (hook->packetId == PacketEnumeration::ID_PLAYER_SYNC)
- {
- if (active == false) return true;
- stOnFootData footsync;
- memset(&footsync, 0, sizeof(stOnFootData));
- hook->bitStream->ResetReadPointer();
- byte packet; hook->bitStream->Read(packet);
- hook->bitStream->Read((PCHAR)&footsync, sizeof(stOnFootData));
- hook->bitStream->ResetReadPointer();
- //////////////////////////////////////////////////////////////////////////////
- if (no_called == false)
- {
- carid = footsync.sSurfingVehicleID;
- quat = footsync.fQuaternion[3];
- for (short x = 0; x < 3; x++) surf[x] = footsync.fSurfingOffsets[x];
- no_called = true;
- }
- if (carid != -1 && (SF->getSAMP()->getVehicles()->iIsListed[footsync.sSurfingVehicleID] ||
- SF->getSAMP()->getVehicles()->iIsListed2[footsync.sSurfingVehicleID]))
- {
- if (statical[0] == true) footsync.byteCurrentWeapon = 0;
- if (statical[2] == true) footsync.fQuaternion[3] = quat;
- if (statical[3] == true)
- {
- footsync.sCurrentAnimationID = 16615;
- footsync.sAnimFlags = 24558;
- }
- if (statical[1] == true)
- {
- footsync.sKeys = 0;
- footsync.sLeftRightKeys = 0;
- footsync.sUpDownKeys = 0;
- memset(&footsync.stSampKeys, 0, sizeof(stSAMPKeys));
- }
- footsync.sSurfingVehicleID = carid;
- for (short x = 0; x < 3; x++) footsync.fSurfingOffsets[x] = surf[x];
- footsync.fSurfingOffsets[0] += 3.0;
- footsync.fSurfingOffsets[2] = 0.3 + GAME->GetWorld()->FindGroundZForPosition
- (PEDSELF->GetPosition()->fX, PEDSELF->GetPosition()->fY);
- }
- else
- {
- SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(204, 0, 0),
- "Ваш транспортный якорь вероятно был уничтожен или удален, инвиз дезактивирован!");
- active = false, no_called = false;
- }
- //////////////////////////////////////////////////////////////////////////////
- hook->bitStream->ResetWritePointer();
- hook->bitStream->Write(packet);
- hook->bitStream->Write((PCHAR)&footsync, sizeof(stOnFootData));
- }
- return true;
- }
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////
- void __stdcall PerformCommand(std::string param)
- {
- if (active == false)
- {
- stOnFootData footsync = SF->getSAMP()->getPlayers()->pLocalPlayer->onFootData;
- if (SF->getSAMP()->getVehicles()->pSAMP_Vehicle[footsync.sSurfingVehicleID]->
- pGTA_Vehicle->base.bCollisionProcessed)
- {
- SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 184, 245),
- "Сначало запрыгните на кар! (Обьязательно в котором сидит водитель)");
- return;
- }
- else
- {
- active = true;
- SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 184, 245), "Static invisibillity activated!");
- }
- }
- else
- {
- SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(255, 102, 51), "Static invisibillity disactivated.");
- active = false; no_called = false;
- }
- };
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////
- void UpdateConfigVariable(std::string key_name, char value[])
- {
- char *path = new char[256];
- GetCurrentDir(path, 256);
- strcat(path, "\\SAMPFUNCS\\StaticInvisible.ini");
- WritePrivateProfileString("StealthSettings", "StaticGun", value, path);
- if (key_name.find("StaticKeys") != std::string::npos)
- WritePrivateProfileString("StealthSettings", "StaticKeys", value, path);
- if (key_name.find("StaticAngle") != std::string::npos)
- WritePrivateProfileString("StealthSettings", "StaticAngle", value, path);
- if (key_name.find("StaticAnim") != std::string::npos)
- WritePrivateProfileString("StealthSettings", "StaticAnim", value, path);
- if (key_name.find("StaticAnim") != std::string::npos)
- WritePrivateProfileString("StealthSettings", "PosNOP", value, path);
- delete [] path;
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- void __stdcall stCommand(std::string param)
- {
- if (param.empty())
- {
- SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(255, 71, 71), "Введите: /stedit [1-4]");
- return;
- }
- int parametr = std::stoi(param);
- if (parametr < 1 || parametr > 4)
- {
- SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(204, 0, 0),
- "Номер параметра статического инвиза должен быть не менее одного и не более 4-ёх!");
- return;
- }
- switch (parametr)
- {
- case 1:
- if (statical[0] == false)
- {
- statical[0] = true;
- SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(255, 71, 71), "Ноп текущего оружия включен!");
- UpdateConfigVariable("StaticGun", "1");
- }
- else
- {
- statical[0] = false;
- SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(255, 71, 71), "Ноп текущего оружия выключен.");
- UpdateConfigVariable("StaticGun", "0");
- }
- break;
- case 2:
- if (statical[1] == false)
- {
- statical[1] = true;
- SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(255, 71, 71), "Ноп нажатых клавиш включен!");
- UpdateConfigVariable("StaticKeys", "1");
- }
- else
- {
- statical[1] = false;
- SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(255, 71, 71), "Ноп нажатых клавиш выключен.");
- UpdateConfigVariable("StaticKeys", "0");
- }
- break;
- case 3:
- if (statical[2] == false)
- {
- statical[2] = true;
- SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(255, 71, 71), "Ноп угла поворота включен!");
- UpdateConfigVariable("StaticAngle", "1");
- }
- else
- {
- statical[2] = false;
- SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(255, 71, 71), "Ноп угла поворота выключен.");
- UpdateConfigVariable("StaticAngle", "0");
- }
- break;
- case 4:
- if (statical[3] == false)
- {
- statical[3] = true;
- SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(255, 71, 71), "Ноп анимаций включен!");
- UpdateConfigVariable("StaticAnim", "1");
- }
- else
- {
- statical[3] = false;
- SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(255, 71, 71), "Ноп анимаций выключен.");
- UpdateConfigVariable("StaticAnim", "0");
- }
- break;
- }
- };
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- void TryLoadConfig(void)
- {
- char *path = new char[256];
- GetCurrentDir(path, 256);
- strcat(path, "\\SAMPFUNCS\\StaticInvisible.ini");
- char *stric = new char[15+1];
- if (GetPrivateProfileSection("StealthSettings", stric, sizeof(stric), path))
- {
- statical[0] = (bool)GetPrivateProfileInt("StealthSettings", "StaticGun", 0, path);
- statical[1] = (bool)GetPrivateProfileInt("StealthSettings", "StaticKeys", 1, path);
- statical[2] = (bool)GetPrivateProfileInt("StealthSettings", "StaticAngle", 1, path);
- statical[3] = (bool)GetPrivateProfileInt("StealthSettings", "StaticAnim", 1, path);
- statical[4] = (bool)GetPrivateProfileInt("StealthSettings", "PosNOP", 0, path);
- }
- else
- {
- WritePrivateProfileString("StealthSettings", "StaticGun", "0", path);
- WritePrivateProfileString("StealthSettings", "StaticKeys", "1", path);
- WritePrivateProfileString("StealthSettings", "StaticAngle", "1", path);
- WritePrivateProfileString("StealthSettings", "StaticAnim", "1", path);
- WritePrivateProfileString("StealthSettings", "PosNOP", "0", path);
- }
- delete [] path, stric;
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- void __stdcall mainloop( void )
- {
- static bool init = false;
- if(!init)
- {
- if (GAME == nullptr) return;
- if(!SF->getSAMP()->IsInitialized()) return;
- SF->getSAMP()->registerChatCommand("stinviz", PerformCommand); // inviz activation
- SF->getSAMP()->registerChatCommand("stedit", stCommand); // static invisibillity config
- SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_OUTCOMING_PACKET, ReWriteSync);
- SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, IncRPC);
- SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_OUTCOMING_RPC, HookMyRPC);
- SF->getSAMP()->getChat()->AddChatMessage( D3DCOLOR_XRGB(51, 204, 255), "Static Invisible plugin by {00F5B8}0pc0d3R");
- TryLoadConfig();
- init = true;
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- bool WINAPI 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;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement