Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Updated to 0.3.7 by P3ti
- */
- #include "main.h"
- /*ADDED*/
- #include <Windows.h>
- #include <WinInet.h>
- #include <iostream>
- #include <string>
- #define INTERNET_OPEN_TYPE_DIRECT 1
- #define INTERNET_SERVICE_HTTP 3
- #define GET 0
- #define POST 1
- #pragma comment (lib, "wininet.lib")
- std::string HttpRequest(std::string site, std::string param, int port);
- #define DISCORD_SERVER_PORT 7891
- /*ADDED*/
- int iNetModeNormalOnfootSendRate, iNetModeNormalIncarSendRate, iNetModeFiringSendRate, iNetModeSendMultiplier;
- char g_szHostName[256];
- BYTE m_bLagCompensation;
- PLAYERID imitateID = -1;
- bool iGettingNewName=false;
- int iMoney, iDrunkLevel, iLocalPlayerSkin;
- struct stGTAMenu GTAMenu;
- struct stSAMPDialog sampDialog;
- HFONT hSAMPDlgFont = NULL;
- HANDLE hDlgThread = NULL;
- HWND hwndSAMPDlg = NULL;
- PLAYER_SPAWN_INFO SpawnInfo;
- BOOL bIsSpectating = 0;
- void ServerJoin(RPCParameters *rpcParams)
- {
- if(!iGameInited) return;
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- CHAR szPlayerName[256];
- PLAYERID playerId;
- BYTE byteNameLen=0;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- bsData.Read(playerId);
- int iUnk = 0;
- bsData.Read(iUnk);
- BYTE bIsNPC = 0;
- bsData.Read(bIsNPC);
- bsData.Read(byteNameLen);
- if(byteNameLen > 20) return;
- bsData.Read(szPlayerName,byteNameLen);
- szPlayerName[byteNameLen] = '\0';
- if(playerId < 0 || playerId >= MAX_PLAYERS) return;
- playerInfo[playerId].iIsConnected = 1;
- playerInfo[playerId].byteIsNPC = bIsNPC;
- strcpy((char *)playerInfo[playerId].szPlayerName, szPlayerName);
- //Log("***[JOIN] (%d) %s", playerId, szPlayerName);
- }
- void ServerQuit(RPCParameters *rpcParams)
- {
- if(!iGameInited) return;
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- PLAYERID playerId;
- BYTE byteReason;
- bsData.Read(playerId);
- bsData.Read(byteReason);
- if(playerId < 0 || playerId >= MAX_PLAYERS) return;
- playerInfo[playerId].iIsConnected = 0;
- playerInfo[playerId].byteIsNPC = 0;
- //Log("***[QUIT:%d] (%d) %s", byteReason, playerId, playerInfo[playerId].szPlayerName);
- memset(playerInfo[playerId].szPlayerName, 0, 20);
- }
- void InitGame(RPCParameters *rpcParams)
- {
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsInitGame((unsigned char *)Data,(iBitLength/8)+1,false);
- PLAYERID MyPlayerID;
- bool bLanMode, bStuntBonus;
- BYTE byteVehicleModels[212];
- bool m_bZoneNames, m_bUseCJWalk, m_bAllowWeapons, m_bLimitGlobalChatRadius;
- float m_fGlobalChatRadius, m_fNameTagDrawDistance;
- bool m_bDisableEnterExits, m_bNameTagLOS, m_bManualVehicleEngineAndLight;
- bool m_bShowPlayerTags;
- int m_iShowPlayerMarkers;
- BYTE m_byteWorldTime, m_byteWeather;
- float m_fGravity;
- int m_iDeathDropMoney;
- bool m_bInstagib;
- bsInitGame.ReadCompressed(m_bZoneNames);
- bsInitGame.ReadCompressed(m_bUseCJWalk);
- bsInitGame.ReadCompressed(m_bAllowWeapons);
- bsInitGame.ReadCompressed(m_bLimitGlobalChatRadius);
- bsInitGame.Read(m_fGlobalChatRadius);
- bsInitGame.ReadCompressed(bStuntBonus);
- bsInitGame.Read(m_fNameTagDrawDistance);
- bsInitGame.ReadCompressed(m_bDisableEnterExits);
- bsInitGame.ReadCompressed(m_bNameTagLOS);
- bsInitGame.ReadCompressed(m_bManualVehicleEngineAndLight); //
- bsInitGame.Read(iSpawnsAvailable);
- bsInitGame.Read(MyPlayerID);
- bsInitGame.ReadCompressed(m_bShowPlayerTags);
- bsInitGame.Read(m_iShowPlayerMarkers);
- bsInitGame.Read(m_byteWorldTime);
- bsInitGame.Read(m_byteWeather);
- bsInitGame.Read(m_fGravity);
- bsInitGame.ReadCompressed(bLanMode);
- bsInitGame.Read(m_iDeathDropMoney);
- bsInitGame.ReadCompressed(m_bInstagib);
- // Server's send rate restrictions
- if(!settings.uiForceCustomSendRates)
- {
- bsInitGame.Read(iNetModeNormalOnfootSendRate);
- bsInitGame.Read(iNetModeNormalIncarSendRate);
- bsInitGame.Read(iNetModeFiringSendRate);
- bsInitGame.Read(iNetModeSendMultiplier);
- }
- else
- bsInitGame.SetReadOffset(bsInitGame.GetReadOffset() + 4*32);
- bsInitGame.Read(m_bLagCompensation);
- BYTE unk;
- bsInitGame.Read(unk);
- bsInitGame.Read(unk);
- bsInitGame.Read(unk);
- BYTE byteStrLen;
- bsInitGame.Read(byteStrLen);
- if(byteStrLen)
- {
- memset(g_szHostName,0,sizeof(g_szHostName));
- bsInitGame.Read(g_szHostName, byteStrLen);
- }
- g_szHostName[byteStrLen] = '\0';
- bsInitGame.Read((char *)&byteVehicleModels[0],212);
- g_myPlayerID = MyPlayerID;
- char szTitle[64];
- if(settings.iConsole)
- {
- sprintf(szTitle, "%s (%d) - %.16s - RakSAMP %s", g_szNickName, g_myPlayerID, g_szHostName, RAKSAMP_VERSION);
- SetConsoleTitle(szTitle);
- Log("Connected to %.64s\n", g_szHostName);
- }
- else
- {
- sprintf(szTitle, "%s (%d) - RakSAMP %s", g_szNickName, g_myPlayerID, RAKSAMP_VERSION);
- SetWindowText(hwnd, szTitle);
- Log("Connected to %.64s", g_szHostName);
- }
- iGameInited = 1;
- }
- void WorldPlayerAdd(RPCParameters *rpcParams)
- {
- if(!iGameInited) return;
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- PLAYERID playerId;
- BYTE byteFightingStyle=4;
- BYTE byteTeam=0;
- int iSkin=0;
- float vecPos[3];
- float fRotation=0;
- DWORD dwColor=0;
- bsData.Read(playerId);
- bsData.Read(byteTeam);
- bsData.Read(iSkin);
- bsData.Read(vecPos[0]);
- bsData.Read(vecPos[1]);
- bsData.Read(vecPos[2]);
- bsData.Read(fRotation);
- bsData.Read(dwColor);
- bsData.Read(byteFightingStyle);
- if(playerId < 0 || playerId >= MAX_PLAYERS) return;
- playerInfo[playerId].iIsStreamedIn = 1;
- playerInfo[playerId].onfootData.vecPos[0] =
- playerInfo[playerId].incarData.vecPos[0] = vecPos[0];
- playerInfo[playerId].onfootData.vecPos[1] =
- playerInfo[playerId].incarData.vecPos[1] = vecPos[1];
- playerInfo[playerId].onfootData.vecPos[2] =
- playerInfo[playerId].incarData.vecPos[2] = vecPos[2];
- //Log("[WORLD ADD] Player [%d]", playerId);
- }
- void WorldPlayerDeath(RPCParameters *rpcParams)
- {
- if(!iGameInited) return;
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- PLAYERID playerId;
- bsData.Read(playerId);
- if(playerId < 0 || playerId >= MAX_PLAYERS) return;
- //Log("[PLAYER_DEATH] %d", playerId);
- }
- void WorldPlayerRemove(RPCParameters *rpcParams)
- {
- if(!iGameInited) return;
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- PLAYERID playerId=0;
- bsData.Read(playerId);
- if(playerId < 0 || playerId >= MAX_PLAYERS) return;
- playerInfo[playerId].iIsStreamedIn = 0;
- playerInfo[playerId].incarData.vecPos[0] = 0.0f;
- playerInfo[playerId].incarData.vecPos[1] = 0.0f;
- playerInfo[playerId].incarData.vecPos[2] = 0.0f;
- //Log("[PLAYER_REMOVE] %d", playerId);
- }
- void WorldVehicleAdd(RPCParameters *rpcParams)
- {
- if(!iGameInited) return;
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- NEW_VEHICLE NewVehicle;
- bsData.Read((char *)&NewVehicle,sizeof(NEW_VEHICLE));
- if(NewVehicle.VehicleId < 0 || NewVehicle.VehicleId >= MAX_VEHICLES) return;
- vehiclePool[NewVehicle.VehicleId].iDoesExist = 1;
- vehiclePool[NewVehicle.VehicleId].fPos[0] = NewVehicle.vecPos[0];
- vehiclePool[NewVehicle.VehicleId].fPos[1] = NewVehicle.vecPos[1];
- vehiclePool[NewVehicle.VehicleId].fPos[2] = NewVehicle.vecPos[2];
- vehiclePool[NewVehicle.VehicleId].iModelID = NewVehicle.iVehicleType;
- //Log("[VEHICLE_ADD:%d] ModelID: %d, Position: %0.2f, %0.2f, %0.2f",
- // NewVehicle.VehicleId, NewVehicle.iVehicleType, NewVehicle.vecPos[0], NewVehicle.vecPos[1], NewVehicle.vecPos[2]);
- }
- void WorldVehicleRemove(RPCParameters *rpcParams)
- {
- if(!iGameInited) return;
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- VEHICLEID VehicleID;
- bsData.Read(VehicleID);
- if(VehicleID < 0 || VehicleID >= MAX_VEHICLES) return;
- vehiclePool[VehicleID].iDoesExist = 0;
- vehiclePool[VehicleID].fPos[0] = 0.0f;
- vehiclePool[VehicleID].fPos[1] = 0.0f;
- vehiclePool[VehicleID].fPos[2] = 0.0f;
- //Log("[VEHICLE_REMOVE] %d", VehicleID);
- }
- void ConnectionRejected(RPCParameters *rpcParams)
- {
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- BYTE byteRejectReason;
- bsData.Read(byteRejectReason);
- if(byteRejectReason==REJECT_REASON_BAD_VERSION)
- {
- Log("[RAKSAMP] Bad SA-MP version.");
- }
- else if(byteRejectReason==REJECT_REASON_BAD_NICKNAME)
- {
- char szNewNick[32], randgen[4];
- iGettingNewName = true;
- gen_random(randgen, 4);
- sprintf(szNewNick, "%s_%s", g_szNickName, randgen);
- Log("[RAKSAMP] Bad nickname. Changing name to %s", szNewNick);
- strcpy(g_szNickName, szNewNick);
- resetPools(1, 0);
- }
- else if(byteRejectReason==REJECT_REASON_BAD_MOD)
- {
- Log("[RAKSAMP] Bad mod version.");
- }
- else if(byteRejectReason==REJECT_REASON_BAD_PLAYERID)
- {
- Log("[RAKSAMP] Bad player ID.");
- }
- else
- Log("ConnectionRejected: unknown");
- }
- void ClientMessage(RPCParameters *rpcParams)
- {
- //if(!iGameInited) return;
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- DWORD dwStrLen, dwColor;
- char szMsg[257];
- memset(szMsg, 0, 257);
- bsData.Read(dwColor);
- bsData.Read(dwStrLen);
- if(dwStrLen > 256) return;
- bsData.Read(szMsg, dwStrLen);
- szMsg[dwStrLen] = 0;
- char request_content[300] = { 0 };
- sprintf(request_content, "[CMSG]%s", szMsg);
- std::string response = HttpRequest("127.0.0.1", request_content, DISCORD_SERVER_PORT);
- if(settings.iFind)
- {
- for(int i = 0; i < MAX_FIND_ITEMS; i++)
- {
- if(!settings.findItems[i].iExists)
- continue;
- if(strstr(szMsg, settings.findItems[i].szFind))
- if (settings.findItems[i].szSay[0] != 0x00) {
- sendChat(settings.findItems[i].szSay);
- }
- }
- }
- char szNonColorEmbeddedMsg[257];
- int iNonColorEmbeddedMsgLen = 0;
- for (size_t pos = 0; pos < strlen(szMsg) && szMsg[pos] != '\0'; pos++)
- {
- if (!((*(unsigned char*)(&szMsg[pos]) - 32) >= 0 && (*(unsigned char*)(&szMsg[pos]) - 32) < 224))
- continue;
- if(pos+7 < strlen(szMsg))
- {
- if (szMsg[pos] == '{' && szMsg[pos+7] == '}')
- {
- pos += 7;
- continue;
- }
- }
- szNonColorEmbeddedMsg[iNonColorEmbeddedMsgLen] = szMsg[pos];
- iNonColorEmbeddedMsgLen++;
- }
- szNonColorEmbeddedMsg[iNonColorEmbeddedMsgLen] = 0;
- Log("[CMSG] %s", szNonColorEmbeddedMsg);
- }
- // copied from https://github.com/Dondor17/WinINet---Simple-GET-POST-request
- std::string HttpRequest(std::string site, std::string param, int port) {
- HINTERNET hInternet = InternetOpenW(L"YourUserAgent", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); //you should perhaps edit your useragent ? :p
- if (hInternet == NULL)
- {
- return "InternetOpenW failed(hInternet): " + GetLastError();
- }
- else
- {
- std::wstring widestr;
- for (int i = 0; i < site.length(); ++i)
- {
- widestr += wchar_t(site[i]);
- }
- const wchar_t* site_name = widestr.c_str();
- std::wstring widestr2;
- for (int i = 0; i < param.length(); ++i)
- {
- widestr2 += wchar_t(param[i]);
- }
- const wchar_t* site_param = widestr2.c_str();
- // We need to convert str to const wchar_t as the args require!
- HINTERNET hConnect = InternetConnectW(hInternet, site_name, port, NULL, NULL, INTERNET_SERVICE_HTTP, 0, NULL);
- if (hConnect == NULL)
- {
- return "InternetConnectW failed(hConnect == NULL): " + GetLastError();
- }
- else
- {
- const wchar_t* parrAcceptTypes[] = { L"text/*", NULL }; // accepted types. We'll choose text.
- HINTERNET hRequest = HttpOpenRequestW(hConnect, L"GET", site_param, NULL, NULL, parrAcceptTypes, 0, 0);
- if (hRequest == NULL)
- {
- return "HttpOpenRequestW failed(hRequest == NULL): " + GetLastError();
- }
- else
- {
- BOOL bRequestSent = HttpSendRequestW(hRequest, NULL, 0, NULL, 0);
- if (!bRequestSent)
- {
- return "!bRequestSent HttpSendRequestW failed with error code " + GetLastError();
- }
- else
- {
- std::string strResponse;
- const int nBuffSize = 1024;
- char buff[nBuffSize];
- BOOL bKeepReading = true;
- DWORD dwBytesRead = -1;
- while (bKeepReading && dwBytesRead != 0)
- {
- bKeepReading = InternetReadFile(hRequest, buff, nBuffSize, &dwBytesRead);
- strResponse.append(buff, dwBytesRead);
- }
- return strResponse;
- }
- InternetCloseHandle(hRequest);
- }
- InternetCloseHandle(hConnect);
- }
- InternetCloseHandle(hInternet);
- }
- }
- void Chat(RPCParameters *rpcParams)
- {
- if(!iGameInited) return;
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- PlayerID sender = rpcParams->sender;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- PLAYERID playerId;
- BYTE byteTextLen;
- unsigned char szText[256];
- memset(szText, 0, 256);
- bsData.Read(playerId);
- bsData.Read(byteTextLen);
- bsData.Read((char*)szText, byteTextLen);
- szText[byteTextLen] = 0;
- if(playerId < 0 || playerId >= MAX_PLAYERS)
- return;
- if(imitateID == playerId)
- sendChat((char *)szText);
- Log("[CHAT] %s: %s", playerInfo[playerId].szPlayerName, szText);
- //std::string response = "Response: " + HttpRequest("127.0.0.1", (char*)szText, 8000);
- char request_content[300] = { 0 };
- sprintf(request_content, "[CHAT]%s: %s", playerInfo[playerId].szPlayerName, szText);
- std::string response = HttpRequest("127.0.0.1", request_content, DISCORD_SERVER_PORT);
- if(settings.iFind)
- {
- for(int i = 0; i < MAX_FIND_ITEMS; i++)
- {
- if(!settings.findItems[i].iExists)
- continue;
- if(strstr((const char *)szText, settings.findItems[i].szFind))
- {
- if(settings.findItems[i].szSay[0] != 0x00)
- sendChat(settings.findItems[i].szSay);
- }
- }
- }
- }
- void UpdateScoresPingsIPs(RPCParameters *rpcParams)
- {
- if(!iGameInited) return;
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- PLAYERID playerId;
- int iPlayerScore;
- DWORD dwPlayerPing;
- for(PLAYERID i=0; i<(iBitLength/8)/9; i++)
- {
- bsData.Read(playerId);
- bsData.Read(iPlayerScore);
- bsData.Read(dwPlayerPing);
- if(playerId < 0 || playerId >= MAX_PLAYERS)
- continue;
- playerInfo[playerId].iScore = iPlayerScore;
- playerInfo[playerId].dwPing = dwPlayerPing;
- }
- }
- void SetCheckpoint(RPCParameters *rpcParams)
- {
- if(!iGameInited) return;
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- bsData.Read(settings.CurrentCheckpoint.fPosition[0]);
- bsData.Read(settings.CurrentCheckpoint.fPosition[1]);
- bsData.Read(settings.CurrentCheckpoint.fPosition[2]);
- bsData.Read(settings.CurrentCheckpoint.fSize);
- settings.CurrentCheckpoint.bActive = true;
- char SetCheckpointAlert[256];
- sprintf_s(SetCheckpointAlert, 256, "[CP] Checkpoint set to %.2f %.2f %.2f position. (size: %.2f)", settings.CurrentCheckpoint.fPosition[0], settings.CurrentCheckpoint.fPosition[1], settings.CurrentCheckpoint.fPosition[2], settings.CurrentCheckpoint.fSize);
- Log(SetCheckpointAlert);
- }
- void DisableCheckpoint(RPCParameters *rpcParams)
- {
- if(!iGameInited) return;
- settings.CurrentCheckpoint.bActive = false;
- Log("[CP] Current checkpoint disabled.");
- }
- void Pickup(RPCParameters *rpcParams)
- {
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- int PickupID;
- PICKUP Pickup;
- bsData.Read(PickupID);
- bsData.Read((PCHAR)&Pickup, sizeof(PICKUP));
- if(settings.uiPickupsLogging != 0)
- {
- char szCreatePickupAlert[256];
- sprintf_s(szCreatePickupAlert, sizeof(szCreatePickupAlert), "[CREATEPICKUP] ID: %d | Model: %d | Type: %d | X: %.2f | Y: %.2f | Z: %.2f", PickupID, Pickup.iModel, Pickup.iType, Pickup.fX, Pickup.fY, Pickup.fZ);
- Log(szCreatePickupAlert);
- }
- }
- void DestroyPickup(RPCParameters *rpcParams)
- {
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- int PickupID;
- bsData.Read(PickupID);
- if(settings.uiPickupsLogging != 0)
- {
- Log("[DESTROYPICKUP] %d", PickupID);
- }
- }
- void RequestClass(RPCParameters *rpcParams)
- {
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- BYTE byteRequestOutcome = 0;
- bsData.Read(byteRequestOutcome);
- if(byteRequestOutcome)
- {
- bsData.Read((PCHAR)&SpawnInfo,sizeof(PLAYER_SPAWN_INFO));
- iLocalPlayerSkin = SpawnInfo.iSkin;
- }
- }
- void ScrInitMenu(RPCParameters *rpcParams)
- {
- if(!iGameInited) return;
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- memset(>AMenu, 0, sizeof(struct stGTAMenu));
- BYTE byteMenuID;
- BOOL bColumns; // 0 = 1, 1 = 2
- CHAR cText[MAX_MENU_LINE];
- float fX;
- float fY;
- float fCol1;
- float fCol2 = 0.0;
- MENU_INT MenuInteraction;
- bsData.Read(byteMenuID);
- bsData.Read(bColumns);
- bsData.Read(cText, MAX_MENU_LINE);
- bsData.Read(fX);
- bsData.Read(fY);
- bsData.Read(fCol1);
- if (bColumns) bsData.Read(fCol2);
- bsData.Read(MenuInteraction.bMenu);
- for (BYTE i = 0; i < MAX_MENU_ITEMS; i++)
- bsData.Read(MenuInteraction.bRow[i]);
- Log("[MENU] %s", cText);
- strcpy(GTAMenu.szTitle, cText);
- BYTE byteColCount;
- bsData.Read(cText, MAX_MENU_LINE);
- Log("[MENU] %s", cText);
- strcpy(GTAMenu.szSeparator, cText);
- bsData.Read(byteColCount);
- GTAMenu.byteColCount = byteColCount;
- for (BYTE i = 0; i < byteColCount; i++)
- {
- bsData.Read(cText, MAX_MENU_LINE);
- Log("[MENU:%d] %s", i, cText);
- strcpy(GTAMenu.szColumnContent[i], cText);
- }
- if (bColumns)
- {
- bsData.Read(cText, MAX_MENU_LINE);
- //Log("4: %s", cText);
- bsData.Read(byteColCount);
- for (BYTE i = 0; i < byteColCount; i++)
- {
- bsData.Read(cText, MAX_MENU_LINE);
- //Log("5: %d %s", i, cText);
- }
- }
- }
- LRESULT CALLBACK SAMPDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
- {
- HWND hwndEditBox = GetDlgItem(hwnd, IDE_INPUTEDIT);
- HWND hwndListBox = GetDlgItem(hwnd, IDL_LISTBOX);
- WORD wSelection;
- char szResponse[257];
- switch(msg)
- {
- case WM_CREATE:
- {
- HINSTANCE hInst = GetModuleHandle(NULL);
- switch(sampDialog.bDialogStyle)
- {
- case DIALOG_STYLE_MSGBOX:
- if(sampDialog.bButton1Len == 0 && sampDialog.bButton2Len == 0)
- {
- // no butans, no badi cana cross it
- }
- if(sampDialog.bButton1Len != 0 && sampDialog.bButton2Len == 0) // a butan
- {
- CreateWindowEx(NULL, "BUTTON", sampDialog.szButton1, WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
- 150, 230, 100, 24, hwnd, (HMENU)IDB_BUTTON1, hInst, NULL);
- }
- else if(sampDialog.bButton1Len != 0 && sampDialog.bButton2Len != 0) // tu butans
- {
- CreateWindowEx(NULL, "BUTTON", sampDialog.szButton1, WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
- 100, 230, 100, 24, hwnd, (HMENU)IDB_BUTTON1, hInst, NULL);
- CreateWindowEx(NULL, "BUTTON", sampDialog.szButton2, WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
- 210, 230, 100, 24, hwnd, (HMENU)IDB_BUTTON2, hInst, NULL);
- }
- break;
- case DIALOG_STYLE_INPUT:
- case DIALOG_STYLE_PASSWORD:
- {
- CreateWindowEx(NULL, "EDIT", "", WS_CHILD | WS_VISIBLE | WS_BORDER,
- 50, 200, 300, 24, hwnd, (HMENU)IDE_INPUTEDIT, hInst, NULL);
- CreateWindowEx(NULL, "BUTTON", sampDialog.szButton1, WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
- 100, 230, 100, 24, hwnd, (HMENU)IDB_BUTTON1, hInst, NULL);
- CreateWindowEx(NULL, "BUTTON", sampDialog.szButton2, WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
- 210, 230, 100, 24, hwnd, (HMENU)IDB_BUTTON2, hInst, NULL);
- }
- break;
- case DIALOG_STYLE_LIST:
- {
- hwndListBox = CreateWindowEx(NULL, "LISTBOX", "",
- WS_CHILD | WS_VISIBLE | LBS_NOTIFY | WS_VSCROLL | WS_BORDER | LBS_HASSTRINGS,
- 10, 10, 375, 225, hwnd, (HMENU)IDL_LISTBOX, hInst, NULL);
- char *szInfoTemp = strtok(sampDialog.szInfo, "\n");
- while(szInfoTemp != NULL)
- {
- int id = SendMessage(hwndListBox, LB_ADDSTRING, 0, (LPARAM)szInfoTemp);
- SendMessage(hwndListBox, LB_SETITEMDATA, id, (LPARAM)id);
- szInfoTemp = strtok(NULL, "\n");
- }
- CreateWindowEx(NULL, "BUTTON", sampDialog.szButton1, WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
- 100, 230, 100, 24, hwnd, (HMENU)IDB_BUTTON1, hInst, NULL);
- CreateWindowEx(NULL, "BUTTON", sampDialog.szButton2, WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
- 210, 230, 100, 24, hwnd, (HMENU)IDB_BUTTON2, hInst, NULL);
- }
- break;
- }
- }
- break;
- case WM_COMMAND:
- {
- switch(LOWORD(wParam))
- {
- case IDB_BUTTON1:
- if(sampDialog.bDialogStyle == DIALOG_STYLE_LIST)
- {
- wSelection = (WORD)SendMessage(hwndListBox, LB_GETCURSEL, 0, 0);
- if(wSelection != (WORD)-1)
- {
- SendMessage(hwndListBox, LB_GETTEXT, wSelection, (LPARAM)szResponse);
- sendDialogResponse(sampDialog.wDialogID, 1, 0, szResponse);
- PostQuitMessage(0);
- }
- break;
- }
- GetWindowText(hwndEditBox, szResponse, 257);
- sendDialogResponse(sampDialog.wDialogID, 1, 0, szResponse);
- PostQuitMessage(0);
- break;
- case IDB_BUTTON2:
- GetWindowText(hwndEditBox, szResponse, 257);
- sendDialogResponse(sampDialog.wDialogID, 0, 0, szResponse);
- PostQuitMessage(0);
- break;
- }
- }
- break;
- case WM_PAINT:
- {
- if(sampDialog.bDialogStyle != DIALOG_STYLE_LIST)
- {
- RECT rect;
- GetClientRect(hwnd, &rect);
- PAINTSTRUCT ps;
- HDC hdc = BeginPaint(hwnd, &ps);
- HDC hdcMem = CreateCompatibleDC(hdc);
- SelectObject(hdc, hSAMPDlgFont);
- DrawText(hdc, sampDialog.szInfo, strlen(sampDialog.szInfo), &rect, DT_WORDBREAK | DT_EXPANDTABS);
- DeleteDC(hdcMem);
- EndPaint(hwnd, &ps);
- }
- else
- {
- RECT rect;
- GetClientRect(hwnd, &rect);
- PAINTSTRUCT ps;
- HDC hdc = BeginPaint(hwnd, &ps);
- HDC hdcMem = CreateCompatibleDC(hdc);
- DeleteDC(hdcMem);
- EndPaint(hwnd, &ps);
- }
- }
- break;
- case WM_DESTROY:
- PostQuitMessage(0);
- break;
- default:
- return DefWindowProc(hwnd, msg, wParam, lParam);
- }
- return 0;
- }
- DWORD WINAPI DialogBoxThread(PVOID)
- {
- WNDCLASSEX wc;
- MSG Msg;
- HINSTANCE hInstance = GetModuleHandle(NULL);
- RECT conRect;
- if(settings.iConsole)
- GetWindowRect(GetConsoleWindow(), &conRect);
- else
- GetWindowRect(hwnd, &conRect);
- wc.cbSize = sizeof(WNDCLASSEX);
- wc.style = 0;
- wc.lpfnWndProc = SAMPDlgProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = hInstance;
- wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
- wc.hCursor = LoadCursor(NULL, IDC_ARROW);
- wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
- wc.lpszMenuName = NULL;
- wc.lpszClassName = "dlgWndClass";
- wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
- if(!RegisterClassEx(&wc))
- return 0;
- hSAMPDlgFont = CreateFont(18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Tahoma");
- hwndSAMPDlg = CreateWindowEx(NULL, "dlgWndClass", sampDialog.szTitle, NULL,
- conRect.right, conRect.top, 400, 300, NULL, NULL, hInstance, NULL);
- if(hwndSAMPDlg == NULL)
- return 0;
- ShowWindow(hwndSAMPDlg, 1);
- UpdateWindow(hwndSAMPDlg);
- SetForegroundWindow(hwndSAMPDlg);
- while(GetMessage(&Msg, NULL, 0, 0) > 0)
- {
- TranslateMessage(&Msg);
- DispatchMessage(&Msg);
- }
- sampDialog.iIsActive = 0;
- SendMessage(hwndSAMPDlg, WM_DESTROY, 0, 0);
- DestroyWindow(hwndSAMPDlg);
- UnregisterClass("dlgWndClass", GetModuleHandle(NULL));
- hSAMPDlgFont = NULL;
- TerminateThread(hDlgThread, 0);
- return 0;
- }
- void ScrDialogBox(RPCParameters *rpcParams)
- {
- if(!iGameInited) return;
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- bsData.Read(sampDialog.wDialogID);
- bsData.Read(sampDialog.bDialogStyle);
- bsData.Read(sampDialog.bTitleLength);
- bsData.Read(sampDialog.szTitle, sampDialog.bTitleLength);
- sampDialog.szTitle[sampDialog.bTitleLength] = 0;
- bsData.Read(sampDialog.bButton1Len);
- bsData.Read(sampDialog.szButton1, sampDialog.bButton1Len);
- sampDialog.szButton1[sampDialog.bButton1Len] = 0;
- bsData.Read(sampDialog.bButton2Len);
- bsData.Read(sampDialog.szButton2, sampDialog.bButton2Len);
- sampDialog.szButton2[sampDialog.bButton2Len] = 0;
- stringCompressor->DecodeString(sampDialog.szInfo, 256, &bsData);
- switch(sampDialog.bDialogStyle)
- {
- case DIALOG_STYLE_MSGBOX:
- case DIALOG_STYLE_INPUT:
- case DIALOG_STYLE_LIST:
- case DIALOG_STYLE_PASSWORD:
- if(!sampDialog.iIsActive)
- {
- sampDialog.iIsActive = 1;
- hDlgThread = CreateThread(NULL, 0, DialogBoxThread, NULL, 0, NULL);
- }
- break;
- default:
- if(sampDialog.iIsActive)
- {
- sampDialog.iIsActive = 0;
- SendMessage(hwndSAMPDlg, WM_DESTROY, 0, 0);
- DestroyWindow(hwndSAMPDlg);
- UnregisterClass("dlgWndClass", GetModuleHandle(NULL));
- hSAMPDlgFont = NULL;
- TerminateThread(hDlgThread, 0);
- }
- break;
- }
- }
- void ScrGameText(RPCParameters *rpcParams)
- {
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- char szMessage[400];
- int iType, iTime, iLength;
- bsData.Read(iType);
- bsData.Read(iTime);
- bsData.Read(iLength);
- if(iLength > 400) return; // tsk tsk, kye
- bsData.Read(szMessage, iLength);
- szMessage[iLength] = '\0';
- Log("[GAMETEXT] %s", szMessage);
- }
- void ScrPlayAudioStream(RPCParameters *rpcParams)
- {
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- unsigned char bURLLen;
- char szURL[256];
- bsData.Read(bURLLen);
- bsData.Read(szURL, bURLLen);
- szURL[bURLLen] = 0;
- Log("[AUDIO_STREAM] %s", szURL);
- }
- void ScrSetDrunkLevel(RPCParameters *rpcParams)
- {
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- bsData.Read(iDrunkLevel);
- }
- void ScrHaveSomeMoney(RPCParameters *rpcParams)
- {
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- int iGivenMoney;
- bsData.Read(iGivenMoney);
- iMoney += iGivenMoney;
- }
- void ScrResetMoney(RPCParameters *rpcParams)
- {
- iMoney = 0;
- }
- void ScrSetPlayerPos(RPCParameters *rpcParams)
- {
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- if(settings.iNormalModePosForce == 0)
- {
- bsData.Read(settings.fNormalModePos[0]);
- bsData.Read(settings.fNormalModePos[1]);
- bsData.Read(settings.fNormalModePos[2]);
- }
- }
- void ScrSetPlayerFacingAngle(RPCParameters *rpcParams)
- {
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- if(settings.iNormalModePosForce == 0)
- {
- bsData.Read(settings.fNormalModeRot);
- }
- }
- void ScrSetSpawnInfo(RPCParameters *rpcParams)
- {
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- PLAYER_SPAWN_INFO SpawnInfo;
- bsData.Read((PCHAR)&SpawnInfo, sizeof(PLAYER_SPAWN_INFO));
- if(settings.iNormalModePosForce == 0)
- {
- settings.fNormalModePos[0] = SpawnInfo.vecPos[0];
- settings.fNormalModePos[1] = SpawnInfo.vecPos[1];
- settings.fNormalModePos[2] = SpawnInfo.vecPos[2];
- }
- }
- void ScrSetPlayerHealth(RPCParameters *rpcParams)
- {
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- bsData.Read(settings.fPlayerHealth);
- }
- void ScrSetPlayerArmour(RPCParameters *rpcParams)
- {
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- bsData.Read(settings.fPlayerArmour);
- }
- void ScrSetPlayerSkin(RPCParameters *rpcParams)
- {
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- int iPlayerID;
- unsigned int uiSkin;
- bsData.Read(iPlayerID);
- bsData.Read(uiSkin);
- if(iPlayerID < 0 || iPlayerID >= MAX_PLAYERS)
- return;
- if(iGameInited && g_myPlayerID == iPlayerID)
- iLocalPlayerSkin = uiSkin;
- }
- void ScrCreateObject(RPCParameters *rpcParams)
- {
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- unsigned short ObjectID;
- bsData.Read(ObjectID);
- unsigned long ModelID;
- bsData.Read(ModelID);
- float vecPos[3];
- bsData.Read(vecPos[0]);
- bsData.Read(vecPos[1]);
- bsData.Read(vecPos[2]);
- float vecRot[3];
- bsData.Read(vecRot[0]);
- bsData.Read(vecRot[1]);
- bsData.Read(vecRot[2]);
- float fDrawDistance;
- bsData.Read(fDrawDistance);
- if(settings.uiObjectsLogging != 0)
- {
- char szCreateObjectAlert[256];
- sprintf_s(szCreateObjectAlert, sizeof(szCreateObjectAlert), "[OBJECT] %d, %d, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.2f", ObjectID, ModelID, vecPos[0], vecPos[1], vecPos[2], vecRot[0], vecRot[1], vecRot[2], fDrawDistance);
- Log(szCreateObjectAlert);
- }
- }
- void ScrCreate3DTextLabel(RPCParameters *rpcParams)
- {
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- WORD ID;
- CHAR Text[256];
- DWORD dwColor;
- FLOAT vecPos[3];
- FLOAT DrawDistance;
- BYTE UseLOS;
- WORD PlayerID;
- WORD VehicleID;
- bsData.Read((WORD)ID);
- bsData.Read((DWORD)dwColor);
- bsData.Read((FLOAT)vecPos[0]);
- bsData.Read((FLOAT)vecPos[1]);
- bsData.Read((FLOAT)vecPos[2]);
- bsData.Read((FLOAT)DrawDistance);
- bsData.Read((BYTE)UseLOS);
- bsData.Read((WORD)PlayerID);
- bsData.Read((WORD)VehicleID);
- stringCompressor->DecodeString(Text, 256, &bsData);
- if(settings.uiTextLabelsLogging != 0)
- {
- char szCreate3DTextLabelAlert[256];
- sprintf_s(szCreate3DTextLabelAlert, sizeof(szCreate3DTextLabelAlert), "[TEXTLABEL] %d - %s (%X, %.3f, %.3f, %.3f, %.2f, %i, %d, %d)", ID, Text, dwColor, vecPos[0], vecPos[1], vecPos[2], DrawDistance, UseLOS, PlayerID, VehicleID);
- Log(szCreate3DTextLabelAlert);
- }
- }
- void ScrShowTextDraw(RPCParameters *rpcParams)
- {
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- WORD wTextID;
- TEXT_DRAW_TRANSMIT TextDrawTransmit;
- CHAR cText[1024];
- unsigned short cTextLen = 0;
- bsData.Read(wTextID);
- bsData.Read((PCHAR)&TextDrawTransmit, sizeof(TEXT_DRAW_TRANSMIT));
- bsData.Read(cTextLen);
- bsData.Read(cText, cTextLen);
- cText[cTextLen] = '\0';
- if(settings.uiTextDrawsLogging != 0)
- SaveTextDrawData(wTextID, &TextDrawTransmit, cText);
- if(TextDrawTransmit.byteSelectable)
- Log("[SELECTABLE-TEXTDRAW] ID: %d, Text: %s.", wTextID, cText);
- }
- void ScrHideTextDraw(RPCParameters *rpcParams)
- {
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- WORD wTextID;
- bsData.Read(wTextID);
- if(settings.uiTextDrawsLogging != 0)
- Log("[TEXTDRAW:HIDE] ID: %d.", wTextID);
- }
- void ScrEditTextDraw(RPCParameters *rpcParams)
- {
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- WORD wTextID;
- CHAR cText[1024];
- unsigned short cTextLen = 0;
- bsData.Read(wTextID);
- bsData.Read(cTextLen);
- bsData.Read(cText, cTextLen);
- cText[cTextLen] = '\0';
- if(settings.uiTextDrawsLogging != 0)
- Log("[TEXTDRAW:EDIT] ID: %d, Text: %s.", wTextID, cText);
- }
- void ScrTogglePlayerSpectating(RPCParameters *rpcParams)
- {
- PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
- int iBitLength = rpcParams->numberOfBitsOfData;
- RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false);
- BOOL bToggle;
- bsData.Read(bToggle);
- if(bIsSpectating && !bToggle && !iSpawned)
- {
- sampSpawn();
- iSpawned = 1;
- }
- bIsSpectating = bToggle;
- }
- void RegisterRPCs(RakClientInterface *pRakClient)
- {
- if (pRakClient == ::pRakClient)
- {
- // Core RPCs
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_ServerJoin, ServerJoin);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_ServerQuit, ServerQuit);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_InitGame, InitGame);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_WorldPlayerAdd, WorldPlayerAdd);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_WorldPlayerDeath, WorldPlayerDeath);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_WorldPlayerRemove, WorldPlayerRemove);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_WorldVehicleAdd, WorldVehicleAdd);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_WorldVehicleRemove, WorldVehicleRemove);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_ConnectionRejected, ConnectionRejected);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_ClientMessage, ClientMessage);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_Chat, Chat);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_UpdateScoresPingsIPs, UpdateScoresPingsIPs);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_SetCheckpoint, SetCheckpoint);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_DisableCheckpoint, DisableCheckpoint);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_Pickup, Pickup);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_DestroyPickup, DestroyPickup);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_RequestClass, RequestClass);
- // Scripting RPCs
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_ScrInitMenu, ScrInitMenu);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_ScrDialogBox, ScrDialogBox);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_ScrDisplayGameText, ScrGameText);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_PlayAudioStream, ScrPlayAudioStream);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_ScrSetPlayerDrunkLevel, ScrSetDrunkLevel);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_ScrHaveSomeMoney, ScrHaveSomeMoney);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_ScrResetMoney, ScrResetMoney);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_ScrSetPlayerPos, ScrSetPlayerPos);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_ScrSetPlayerFacingAngle, ScrSetPlayerFacingAngle);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_ScrSetSpawnInfo, ScrSetSpawnInfo);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_ScrSetPlayerHealth, ScrSetPlayerHealth);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_ScrSetPlayerArmour, ScrSetPlayerArmour);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_ScrSetPlayerSkin, ScrSetPlayerSkin);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_ScrCreateObject, ScrCreateObject);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_ScrCreate3DTextLabel, ScrCreate3DTextLabel);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_ScrShowTextDraw, ScrShowTextDraw);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_ScrHideTextDraw, ScrHideTextDraw);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_ScrEditTextDraw, ScrEditTextDraw);
- pRakClient->RegisterAsRemoteProcedureCall(&RPC_ScrTogglePlayerSpectating, ScrTogglePlayerSpectating);
- }
- }
- void UnRegisterRPCs(RakClientInterface * pRakClient)
- {
- if (pRakClient == ::pRakClient)
- {
- // Core RPCs
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_ServerJoin);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_ServerQuit);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_InitGame);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_WorldPlayerAdd);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_WorldPlayerDeath);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_WorldPlayerRemove);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_WorldVehicleAdd);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_WorldVehicleRemove);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_ConnectionRejected);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_ClientMessage);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_Chat);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_UpdateScoresPingsIPs);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_SetCheckpoint);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_DisableCheckpoint);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_Pickup);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_DestroyPickup);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_RequestClass);
- // Scripting RPCs
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_ScrInitMenu);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_ScrDialogBox);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_ScrDisplayGameText);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_PlayAudioStream);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_ScrSetPlayerDrunkLevel);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_ScrHaveSomeMoney);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_ScrResetMoney);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_ScrSetPlayerPos);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_ScrSetPlayerFacingAngle);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_ScrSetSpawnInfo);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_ScrSetPlayerHealth);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_ScrSetPlayerArmour);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_ScrSetPlayerSkin);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_ScrCreateObject);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_ScrCreate3DTextLabel);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_ScrShowTextDraw);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_ScrHideTextDraw);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_ScrEditTextDraw);
- pRakClient->UnregisterAsRemoteProcedureCall(&RPC_ScrTogglePlayerSpectating);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement