void CInput::ProcessInput(CString strInput) { // Get the command and parameters size_t sSplit = strInput.Find(' ', 0); CString strCommand = strInput.Substring(0, sSplit++); CString strParameters = strInput.Substring(sSplit, (strInput.GetLength() - sSplit)); if(strCommand.IsEmpty()) return; else if(strCommand == "quit" || strCommand == "Quit" || strCommand == "exit") { CLogFile::Print("[Server] Server is going to shutdown NOW ...."); g_bClose = true; return; } else if(strCommand == "help" || strCommand == "?" || strCommand == "--usage") { printf("========== Available console commands: ==========\n"); printf("say <text>\n"); printf("uptime\n"); printf("resources\n"); printf("players\n"); printf("loadresource <name>\n"); printf("reloadresource <name>\n"); printf("unloadresource <name>\n"); printf("exit\n"); return; } else if (strCommand == "setSyncRate") { int rate = atoi(strParameters.Get()); CServer::GetInstance()->SetSyncRate(rate); } else if (strCommand == "setMaxFPS") { int fps = atoi(strParameters.Get()); CServer::GetInstance()->SetMaximumFPS(fps); } }
void CInput::ProcessInput(CString strInput) { // Get the command and parameters size_t sSplit = strInput.Find(' ', 0); CString strCommand = strInput.Substring(0, sSplit++); CString strParameters = strInput.Substring(sSplit, (strInput.GetLength() - sSplit)); if(strCommand.IsEmpty()) return; else if(strCommand == "quit" || strCommand == "Quit" || strCommand == "exit") { CLogFile::Print("[Server] Server is going to shutdown NOW ...."); g_bClose = true; return; } else if(strCommand == "help" || strCommand == "?" || strCommand == "--usage") { printf("========== Available console commands: ==========\n"); printf("say <text>\n"); printf("uptime\n"); printf("resources\n"); printf("players\n"); printf("loadresource <name>\n"); printf("reloadresource <name>\n"); printf("unloadresource <name>\n"); printf("exit\n"); return; } else if (strCommand == "setSyncRate") { int rate = atoi(strParameters.Get()); CServer::GetInstance()->SetSyncRate(rate); } else if (strCommand == "setMaxFPS") { int fps = atoi(strParameters.Get()); CServer::GetInstance()->SetMaximumFPS(fps); } else if (strCommand == "test") { CScriptArguments args; CScriptPlayer* player = new CScriptPlayer(); player->SetEntity(new CPlayerEntity()); args.push(player); CEvents::GetInstance()->Call("Test", &args, CEventHandler::eEventType::GLOBAL_EVENT, 0); delete player; } }
bool CClientCommands::HandleUserInput(CString strCommand, CString strParameters) { if(strCommand == "q" || strCommand == "quit") { // Are we connected to the network? if(g_pCore->GetNetworkManager()->IsConnected()) { // Disconnect and shutdown RakNet g_pCore->GetNetworkManager()->Shutdown(500, true); } TerminateProcess(GetCurrentProcess(), 0); return true; } else if(strCommand == "qq" || strCommand == "quickquit") { TerminateProcess(GetCurrentProcess(), 0); return true; } else if (strCommand == "saveposition" || strCommand == "save") { FILE * file = fopen(SharedUtility::GetAbsolutePath("multiplayer//SavePositions.log"), "a"); if (!file) { g_pCore->GetChat()->Print("Failed to open 'SavePositions.log'"); return true; } CVector3 vecPosition; // Get our local player CLocalPlayer * pLocalPlayer = g_pCore->GetGame()->GetLocalPlayer(); if (pLocalPlayer->IsInVehicle()) { CVehicleEntity * pVehicle = pLocalPlayer->GetVehicleEntity(); if (pVehicle) { pVehicle->GetPosition(vecPosition); CVector3 vecRotation; pVehicle->GetRotation(vecRotation); DWORD dwColors[5]; pVehicle->GetColors(dwColors[0], dwColors[1], dwColors[2], dwColors[3], dwColors[4]); fprintf_s(file, "createVehicle(%d, %f, %f, %f, %f, %f, %f, %d, %d, %d, %d, %d);%s%s\n", CIVModelManager::ModelHashToVehicleId(pVehicle->GetModelInfo()->GetHash()), vecPosition.fX, vecPosition.fY, vecPosition.fZ, vecRotation.fX, vecRotation.fY, vecRotation.fZ, dwColors[0], dwColors[1], dwColors[2], dwColors[3], dwColors[4], strParameters.GetLength() > 0 ? " // " : "", strParameters.GetLength() > 0 ? strParameters.Get() : ""); } } else { pLocalPlayer->GetPosition(vecPosition); int iModelId = pLocalPlayer->GetPlayerPed()->GetModelIndex(); fprintf_s(file, "PlayerData(%d, %f, %f, %f, %f);%s%s\n", iModelId, vecPosition.fX, vecPosition.fY, vecPosition.fZ, pLocalPlayer->GetHeading(), strParameters.GetLength() > 0 ? " // " : "", strParameters.GetLength() > 0 ? strParameters.Get() : ""); } fclose(file); g_pCore->GetChat()->Print("Position data saved to 'SavePositions.log'"); return true; } #ifdef _DEBUG else if(strCommand == "cv") { CVector3 vecCreatePos; g_pCore->GetGame()->GetLocalPlayer()->GetPosition(vecCreatePos); vecCreatePos.fX += 4; CVehicleEntity * pVehicle = new CVehicleEntity(atoi(strParameters.Get()), vecCreatePos, 0.0f, 0x000000, 0x000000, 0x000000, 0x000000, 0xFFFFFF); if(pVehicle) { // Add our vehicle pVehicle->SetId(g_pCore->GetGame()->GetVehicleManager()->Add(pVehicle)); pVehicle->Create(); g_pCore->GetGame()->GetLocalPlayer()->WarpIntoVehicle(pVehicle); } return true; } else if(strCommand == "respawn") { g_pCore->GetGame()->GetLocalPlayer()->Respawn(); return true; } else if(strCommand == "cp") { CVector3 vecCreatePos; g_pCore->GetGame()->GetLocalPlayer()->GetPosition(vecCreatePos); CPlayerEntity * pPlayer = new CPlayerEntity(false); if(pPlayer) { pPlayer->SetModel(7); pPlayer->Create(); pPlayer->Teleport(vecCreatePos); } return true; } else if(strCommand == "engine") { if(g_pCore->GetGame()->GetLocalPlayer()->GetVehicleEntity() != NULL) g_pCore->GetGame()->GetLocalPlayer()->GetVehicleEntity()->SetEngineState(!g_pCore->GetGame()->GetLocalPlayer()->GetVehicleEntity()->GetEngineState()); return true; } else if(strCommand == "giveweapon") { CIVScript::GiveWeaponToChar(g_pCore->GetGame()->GetLocalPlayer()->GetScriptingHandle(), (CIVScript::eWeapon)atoi(strParameters.Get()), 100, true); return true; } else if(strCommand == "xaxis") { CVector3 vecPositon; g_pCore->GetGame()->GetLocalPlayer()->GetPosition(vecPositon); vecPositon.fX += atoi(strParameters.Get()); g_pCore->GetGame()->GetLocalPlayer()->SetPosition(vecPositon); return true; } else if(strCommand == "yaxis") { CVector3 vecPositon; g_pCore->GetGame()->GetLocalPlayer()->GetPosition(vecPositon); vecPositon.fY += atoi(strParameters.Get()); g_pCore->GetGame()->GetLocalPlayer()->SetPosition(vecPositon); return true; } else if(strCommand == "zaxis") { CVector3 vecPositon; g_pCore->GetGame()->GetLocalPlayer()->GetPosition(vecPositon); vecPositon.fZ += atoi(strParameters.Get()); g_pCore->GetGame()->GetLocalPlayer()->SetPosition(vecPositon); return true; } else if(strCommand == "port") { CVector3 vecPositon; g_pCore->GetGame()->GetLocalPlayer()->GetPosition(vecPositon); vecPositon.fX = 900; vecPositon.fY = -71; vecPositon.fZ += 20; g_pCore->GetGame()->GetLocalPlayer()->SetPosition(vecPositon); return true; } else if(strCommand == "time") { g_pCore->GetTimeManagementInstance()->SetTime(atoi(strParameters.Get()), 0); CGameFunction::SetTimeOfDay(atoi(strParameters.Get()), 0); return true; } else if(strCommand == "setmodel") { g_pCore->GetGame()->GetLocalPlayer()->SetModel(atoi(strParameters.Get())); return true; } else if(strCommand == "setclothes") { CString strParameter = CString("%s", strParameters.Get()); g_pCore->GetChat()->Print(strParameter.Get()); // Get the end of the command size_t sCommandEnd = strParameter.Find(" "); // If we don't have a valid end use the end of the string if (sCommandEnd == std::string::npos) { sCommandEnd = strParameter.GetLength(); } // Get the command name std::string strCommand2 = strParameter.Substring(0, (sCommandEnd)); // Get the command parameters std::string strParams; // Do we have any parameters? if(sCommandEnd < strParameter.GetLength()) { strParams = strParameter.Substring((sCommandEnd + 1), strParameter.GetLength()); } g_pCore->GetChat()->Print(CString("Setting clothes part %d to %d", atoi(strCommand2.c_str()), atoi(strParams.c_str()))); g_pCore->GetGame()->GetLocalPlayer()->SetPedClothes(atoi(strCommand2.c_str()), atoi(strParams.c_str())); return true; } else if(strCommand == "bahama") { g_pCore->GetGame()->GetLocalPlayer()->CPlayerEntity::SetPosition(CVector3(-15.9453f, -13.5865f, -11.7456f)); return true; } else if(strCommand == "spawnvehs") { CVector3 vecPos; PTR_LOCALPLAYER->GetPosition(vecPos); for (int i = 0; i < 179; i++) { vecPos.fX += 5; CVehicleEntity * pVehicle = new CVehicleEntity(i, vecPos, 0.0f, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF); if(pVehicle) { // Add our vehicle g_pCore->GetGame()->GetVehicleManager()->Add(pVehicle); pVehicle->SetId(g_pCore->GetGame()->GetVehicleManager()->FindFreeSlot()); pVehicle->Create(); pVehicle->SetPosition(vecPos, true); } } return true; } else if(strCommand == "getvehpos") { int iVehicle = atoi(strParameters.Get()); if(g_pCore->GetGame()->GetVehicleManager()->DoesExists(iVehicle)) { CVector3 vecPosition; g_pCore->GetGame()->GetVehicleManager()->GetAt(iVehicle)->GetPosition(vecPosition); PTR_CHAT->Print(CString("Position of vehicle %d: %f, %f,%f", iVehicle, vecPosition.fX, vecPosition.fY, vecPosition.fZ)); } return true; } else if(strCommand == "ivhelp") { PTR_CHAT->Print("List of Default IV:N Commands..."); PTR_CHAT->Print("** /cv /respawn /debug /weapon /cp /spawn /engine /save /giveweapon /xaxis /time"); PTR_CHAT->Print("** /setmodel /testweapon /ready /parachute /bahama /spawnvehicles /getvehpos"); return true; } else if(strCommand == "createtrain") { g_pCore->GetGame()->GetIVManagement()->CreateTrain(g_pCore->GetGame()->GetLocalPlayer()->GetPosition(), 3, 20.0f, 0); return true; } else if(strCommand == "blip") { unsigned int uiBlip; CIVScript_NativeInvoke::Invoke<unsigned int>(CIVScript::NATIVE_ADD_BLIP_FOR_COORD, 0, 0, 0,&uiBlip); CIVScript_NativeInvoke::Invoke<unsigned int>(CIVScript::NATIVE_CHANGE_BLIP_SPRITE, 10); return true; } else if(strCommand == "sethealth") { g_pCore->GetGame()->GetLocalPlayer()->SetHealth(atoi(strParameters.Get())); return true; } else if (strCommand == "setarmour") { g_pCore->GetGame()->GetLocalPlayer()->SetArmour(atoi(strParameters.Get())); return true; } #endif #ifdef SYNC_TEST else if (strCommand == "syncTest") { // Add the player CPlayerEntity * pPlayer = new CPlayerEntity; pPlayer->SetModel(0); // Set temporary to nico lol pPlayer->Create(); pPlayer->SetNick("Keks"); pPlayer->SetId(1); pPlayer->SetColor(0xFFFFFFFF); g_pCore->GetGame()->GetPlayerManager()->Add(1, pPlayer); CVector3 vecPosition; g_pCore->GetGame()->GetLocalPlayer()->GetPosition(vecPosition); vecPosition.fX += 2.0f; pPlayer->SetPosition(vecPosition); } else if (strCommand == "getP") { CVector3 vecPosition; g_pCore->GetGame()->GetLocalPlayer()->GetPosition(vecPosition); vecPosition.fX += 2.0f; g_pCore->GetGame()->GetPlayerManager()->GetAt(1)->SetPosition(vecPosition); } else if (strCommand = "vehicleSync") { g_pCore->GetGame()->GetLocalPlayer()->PutInVehicle(g_pCore->GetGame()->GetVehicleManager()->GetAt(0), 0); CVector3 vecPosition; g_pCore->GetGame()->GetPlayerManager()->GetAt(1)->GetPosition(vecPosition); CVehicleEntity * pVehicle = new CVehicleEntity(90, vecPosition, 90, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF); if (pVehicle) { // // Add our vehicle g_pCore->GetGame()->GetVehicleManager()->Add(1, pVehicle); pVehicle->SetId(1); pVehicle->Create(); pVehicle->SetPosition(vecPosition, true); } //g_pCore->GetGame()->GetPlayerManager()->GetAt(1)->PutInVehicle(g_pCore->GetGame()->GetVehicleManager()->GetAt(0), 0); //CVehicleEntity * pVehicle = new CVehicleEntity(90, vecPosition, 90, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF); //if (pVehicle) //{ // // // Add our vehicle // g_pCore->GetGame()->GetVehicleManager()->Add(vehicleId, pVehicle); // pVehicle->SetId(vehicleId); // pVehicle->Create(); // pVehicle->SetPosition(vecPosition, true); //} } #endif return false; }
void CInput::ProcessInput(CString strInput) { // Get the command and parameters size_t sSplit = strInput.Find(' ', 0); CString strCommand = strInput.Substring(0, sSplit++); CString strParameters = strInput.Substring(sSplit, (strInput.GetLength() - sSplit)); if(strCommand.IsEmpty()) return; else if(strCommand == "quit" || strCommand == "Quit" || strCommand == "exit") { CLogFile::Print("[Server] Server is going to shutdown NOW ...."); g_bClose = true; return; } else if(strCommand == "help" || strCommand == "?" || strCommand == "--usage") { printf("========== Available console commands: ==========\n"); printf("say <text>\n"); printf("uptime\n"); printf("resources\n"); printf("players\n"); printf("loadresource <name>\n"); printf("reloadresource <name>\n"); printf("unloadresource <name>\n"); printf("setSyncRate <rate>\n"); printf("setMaxFPS <fps>\n"); printf("exit\n"); return; } else if (strCommand == "setSyncRate") { int rate = atoi(strParameters.Get()); CServer::GetInstance()->SetSyncRate(rate); } else if (strCommand == "setMaxFPS") { int fps = atoi(strParameters.Get()); CServer::GetInstance()->SetMaximumFPS(fps); } else if (strCommand == "say") { RakNet::BitStream bitStream; bitStream.Write(RakNet::RakString(strParameters.Get())); bitStream.Write(0); bitStream.Write(true); CServer::GetInstance()->GetNetworkModule()->Call(GET_RPC_CODEX(RPC_PLAYER_MESSAGE_TO_ALL), &bitStream, HIGH_PRIORITY, RELIABLE_ORDERED, -1, true); } else if (strCommand == "uptime") { int sec = time(0) - CServer::GetInstance()->GetUpTime(); int hh, mm, ss; hh = sec / 3600; mm = (sec - (hh * 3600)) / 60; ss = sec - ((hh * 3600) + (mm * 60)); CLogFile::Printf("Server uptime: %d hours, %d minutes, %d seconds", hh, mm, ss); } else if (strCommand == "resources") { for (auto resource : CServer::GetInstance()->GetResourceManager()->GetResources()) { CLogFile::Printf("%s : %s", resource->GetName().C_String(), resource->GetResourceDirectoryPath().C_String()); } } else if (strCommand == "loadresource") { if (strParameters.IsEmpty()) return; if (CServer::GetInstance()->GetResourceManager()->GetResource(strParameters)) return; if (CResource* pResource = CServer::GetInstance()->GetResourceManager()->Load(SharedUtility::GetAbsolutePath(CServer::GetInstance()->GetResourceManager()->GetResourceDirectory()), strParameters)) { if (!CServer::GetInstance()->GetResourceManager()->StartServerResource(pResource)) CLogFile::Printf("Warning: Failed to load resource %s.", strParameters.Get()); else if(pResource->HasClientResourceFilesScripts() && CServer::GetInstance()->GetPlayerManager()->GetCount() > 0) { // Send the name of the loaded resource to the client RakNet::BitStream bitStream; bitStream.Write(RakNet::RakString(strParameters.Get())); CServer::GetInstance()->GetResourceManager()->GetResourceFileList(pResource)->Serialize(&bitStream); CServer::GetInstance()->GetNetworkModule()->Call(GET_RPC_CODEX(RPC_LOAD_RESOURCE), &bitStream, HIGH_PRIORITY, RELIABLE_ORDERED, -1, true); } } else CLogFile::Printf("Warning: Failed to load resource %s.", strParameters.Get()); } else if (strCommand == "reloadresource") { if (strParameters.IsEmpty()) return; CResource * pResource = CServer::GetInstance()->GetResourceManager()->GetResource(strParameters); if (pResource == nullptr) pResource = CServer::GetInstance()->GetResourceManager()->Load(SharedUtility::GetAbsolutePath(CServer::GetInstance()->GetResourceManager()->GetResourceDirectory()), strParameters); else { if (pResource->HasClientResourceFilesScripts() && CServer::GetInstance()->GetPlayerManager()->GetCount() > 0) { RakNet::BitStream bitStream; bitStream.Write(RakNet::RakString(strParameters.Get())); CServer::GetInstance()->GetNetworkModule()->Call(GET_RPC_CODEX(RPC_UNLOAD_RESOURCE), &bitStream, HIGH_PRIORITY, RELIABLE_ORDERED, -1, true); } CServer::GetInstance()->GetResourceManager()->Reload(pResource); } if (!CServer::GetInstance()->GetResourceManager()->StartServerResource(pResource)) CLogFile::Printf("Warning: Failed to load resource %s.", strParameters.Get()); else if (pResource->HasClientResourceFilesScripts() && CServer::GetInstance()->GetPlayerManager()->GetCount() > 0) { // Send the name of the loaded resource to the client RakNet::BitStream bitStream; bitStream.Write(RakNet::RakString(strParameters.Get())); CServer::GetInstance()->GetResourceManager()->GetResourceFileList(pResource)->Serialize(&bitStream); CServer::GetInstance()->GetNetworkModule()->Call(GET_RPC_CODEX(RPC_LOAD_RESOURCE), &bitStream, HIGH_PRIORITY, RELIABLE_ORDERED, -1, true); } } else if (strCommand == "unloadresource") { if (strParameters.IsEmpty()) return; CResource* pResource = CServer::GetInstance()->GetResourceManager()->GetResource(strParameters); if (pResource) { if (pResource->HasClientResourceFilesScripts() && CServer::GetInstance()->GetPlayerManager()->GetCount() > 0) { // Send the name of the unloaded resource to the client RakNet::BitStream bitStream; bitStream.Write(RakNet::RakString(strParameters.Get())); CServer::GetInstance()->GetNetworkModule()->Call(GET_RPC_CODEX(RPC_UNLOAD_RESOURCE), &bitStream, HIGH_PRIORITY, RELIABLE_ORDERED, -1, true); } CServer::GetInstance()->GetResourceManager()->Unload(pResource); } else return; } else if (strCommand == "players") { for (EntityId i = 0; i < CServer::GetInstance()->GetPlayerManager()->GetMax(); ++i) { if (CServer::GetInstance()->GetPlayerManager()->DoesExists(i)) { CLogFile::Printf("#%i: %s, %s", i, CServer::GetInstance()->GetPlayerManager()->GetAt(i)->GetName().Get(), CServer::GetInstance()->GetPlayerManager()->GetAt(i)->GetSerial().Get()); } } } }