void DisplayMenuToClient (edict_t *ent, MenuText *menu) { if (!IsValidPlayer (ent)) return; int clientIndex = ENTINDEX (ent) - 1; if (menu != null) { String tempText = String (menu->menuText); tempText.Replace ("\v", "\n"); char *text = g_localizer->TranslateInput (tempText); tempText = String (text); // make menu looks best for (int i = 0; i <= 9; i++) tempText.Replace (FormatBuffer ("%d.", i), FormatBuffer ("\\r%d.\\w", i)); text = tempText; while (strlen (text) >= 64) { MESSAGE_BEGIN (MSG_ONE_UNRELIABLE, g_netMsg->GetId (NETMSG_SHOWMENU), null, ent); WRITE_SHORT (menu->validSlots); WRITE_CHAR (-1); WRITE_BYTE (1); for (int i = 0; i <= 63; i++) WRITE_CHAR (text[i]); MESSAGE_END (); text += 64; } MESSAGE_BEGIN (MSG_ONE_UNRELIABLE, g_netMsg->GetId (NETMSG_SHOWMENU), null, ent); WRITE_SHORT (menu->validSlots); WRITE_CHAR (-1); WRITE_BYTE (0); WRITE_STRING (text); MESSAGE_END(); g_clients[clientIndex].menu = menu; } else { MESSAGE_BEGIN (MSG_ONE_UNRELIABLE, g_netMsg->GetId (NETMSG_SHOWMENU), null, ent); WRITE_SHORT (0); WRITE_CHAR (0); WRITE_BYTE (0); WRITE_STRING (""); MESSAGE_END(); g_clients[clientIndex].menu = null; } CLIENT_COMMAND (ent, "speak \"player/geiger1\"\n"); // Stops others from hearing menu sounds.. }
EXPORT_C void CMemSpyEngineOutputSink::OutputBinaryDataL( const TDesC& aFormat, const TUint8* aBufferAddress, const TUint8* aDisplayStartAddress, TInt aLength ) { _LIT(KAddresPostfix, ": "); _LIT(KDoubleSpace, " "); _LIT(KSingleSpace, " "); const TInt maxLen = aLength; TInt len = aLength; const TUint8* pDataAddr = aBufferAddress; TBuf<81> out; TBuf<20> ascii; TInt offset = 0; const TUint8* a = pDataAddr; const TUint8* displayAddress = aDisplayStartAddress; // while(len>0) { out.Zero(); ascii.Zero(); out.AppendNumFixedWidth((TUint) displayAddress, EHex, 8); out.Append(KAddresPostfix); TUint b; for (b=0; b<16; b++) { TUint8 c = ' '; if ((pDataAddr + offset + b) < pDataAddr + maxLen) { c = *(pDataAddr + offset + b); out.AppendNumFixedWidth(c, EHex, 2); } else { out.Append(KDoubleSpace); } out.Append( KSingleSpace ); if (c<=0x20 || c == 0x27 || c>=0x7f || c=='%') c=0x2e; ascii.Append(TChar(c)); } out.Append(ascii); out.ZeroTerminate(); FormatBuffer().Format( aFormat, &out ); OutputLineL( FormatBuffer() ); displayAddress += 16; a += 16; offset += 16; len -= 16; } }
void Bot::Kill (void) { // this function kills a bot (not just using ClientKill, but like the CSBot does) // base code courtesy of Lazy (from bots-united forums!) edict_t *hurtEntity = (*g_engfuncs.pfnCreateNamedEntity) (MAKE_STRING ("trigger_hurt")); if (FNullEnt (hurtEntity)) return; hurtEntity->v.classname = MAKE_STRING (g_weaponDefs[m_currentWeapon].className); hurtEntity->v.dmg_inflictor = GetEntity (); hurtEntity->v.dmg = 9999.0f; hurtEntity->v.dmg_take = 1.0f; hurtEntity->v.dmgtime = 2.0f; hurtEntity->v.effects |= EF_NODRAW; (*g_engfuncs.pfnSetOrigin) (hurtEntity, Vector (-4000, -4000, -4000)); KeyValueData kv; kv.szClassName = const_cast <char *> (g_weaponDefs[m_currentWeapon].className); kv.szKeyName = "damagetype"; kv.szValue = FormatBuffer ("%d", (1 << 4)); kv.fHandled = false; MDLL_KeyValue (hurtEntity, &kv); MDLL_Spawn (hurtEntity); MDLL_Touch (hurtEntity, GetEntity ()); (*g_engfuncs.pfnRemoveEntity) (hurtEntity); }
//--------------------------------------------------------------------------- NaDataStream::NaDataStream (const unsigned pVersion[]) : szFormatBuf(NULL), pVer(pVersion) { // Prepare buffer FormatBuffer(); if(NULL == pVersion){ throw(na_null_pointer); } }
EXPORT_C void CMemSpyEngineOutputSink::OutputItemAndValueL( const TDesC& aItem, const TDesC& aValue ) { FormatBuffer().Zero(); FormatBuffer().Append( aItem ); FormatBuffer().Append( ':' ); const TInt padAmount = KMemSpyItemAndValueAlignmentAmount - aItem.Length(); FormatBuffer().AppendFill(' ', padAmount); FormatBuffer().Append( ' ' ); FormatBuffer().Append( aValue ); OutputLineL( FormatBuffer() ); }
void RoundInit (void) { // this is called at the start of each round g_roundEnded = false; // SyPB Pro P.35 - Game Mode Setting if (GetGameMod() == 0) { // check team economics g_botManager->CheckTeamEconomics(TEAM_TERRORIST); g_botManager->CheckTeamEconomics(TEAM_COUNTER); } for (int i = 0; i < engine->GetMaxClients (); i++) { if (g_botManager->GetBot (i)) g_botManager->GetBot (i)->NewRound (); g_radioSelect[i] = 0; } g_waypoint->SetBombPosition (true); g_waypoint->ClearGoalScore (); // SyPB Pro P.38 - Zombie Mode Human Camp g_waypoint->InitTypes(1); g_bombSayString = false; g_timeBombPlanted = 0.0f; g_timeNextBombUpdate = 0.0f; g_leaderChoosen[TEAM_COUNTER] = false; g_leaderChoosen[TEAM_TERRORIST] = false; g_lastRadioTime[0] = 0.0f; g_lastRadioTime[1] = 0.0f; g_botsCanPause = false; g_entityIdAPI.RemoveAll(); g_entityTeamAPI.RemoveAll(); g_entityActionAPI.RemoveAll(); // SyPB Pro P.15 char *Plugin_INI = FormatBuffer("%s/addons/amxmodx/configs/plugins-dmkd.ini", GetModName()); if (TryFileOpen(Plugin_INI)) { if (CVAR_GET_FLOAT("HsK_Deathmatch_Plugin_load_SyPB") == 1) sypb_gamemod.SetInt(1); else sypb_gamemod.SetInt(0); } // SyPB Pro P.35 - ZP5.0 Fixed char *zpGameVersion[] = { "plugins-zplague", // ZP4.3 "plugins-zp50_ammopacks", // ZP5.0 "plugins-zp50_money" //ZP5.0 }; for (int i = 0; i < 3; i++) { Plugin_INI = FormatBuffer("%s/addons/amxmodx/configs/%s.ini", GetModName(), zpGameVersion[i]); if (TryFileOpen(Plugin_INI)) { float delayTime = CVAR_GET_FLOAT("zp_delay") + 2.0f; if (i != 0) delayTime = CVAR_GET_FLOAT("zp_gamemode_delay") + 0.2f; if (delayTime > 0) { sypb_gamemod.SetInt(2); sypb_walkallow.SetInt(0); //g_DelayTimer = engine->GetTime() + delayTime + 6.0f; // SyPB Pro P.34 - ZP TIME FIXED g_DelayTimer = engine->GetTime() + delayTime;// +1.99f; break; } } } // SyPB Pro P.11 Plugin_INI = FormatBuffer("%s/addons/amxmodx/configs/zombiehell.cfg", GetModName()); if (TryFileOpen(Plugin_INI) && CVAR_GET_FLOAT("zh_zombie_maxslots") > 0) { sypb_gamemod.SetInt(4); sypb_walkallow.SetInt(0); extern ConVar sypb_quota; sypb_quota.SetInt(static_cast <int> (CVAR_GET_FLOAT("zh_zombie_maxslots"))); } // SyPB Pro P.29 - Support CSBTE Final Plugin_INI = FormatBuffer("%s/addons/amxmodx/configs/bte_player.ini", GetModName()); if (TryFileOpen(Plugin_INI)) { const int Const_GameModes = 13; int bteGameModAi[Const_GameModes] = { 0, 0, 1, 3, 0, 2, 2, 2, 2, 4, 2, 3, 2 };//1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13 char *bteGameINI[Const_GameModes] = { "plugins-none", //1 "plugins-td", //2 "plugins-dm", //3 "plugins-dr", //4 "plugins-gd", //5 "plugins-ghost",//6 "plugins-zb1", //7 "plugins-zb3", //8 "plugins-zb4", //9 "plugins-ze", //10 "plugins-zse", //11 "plugins-npc", //12 "plugins-zb5" //13 }; for (int i = 0; i < Const_GameModes; i++) { if (TryFileOpen(FormatBuffer("%s/addons/amxmodx/configs/%s.ini", GetModName(), bteGameINI[i]))) { //sypb_gamemod.SetInt(bteGameModAi[i]); if (bteGameModAi[i] == 2 && i != 5) { sypb_walkallow.SetInt(0); g_DelayTimer = engine->GetTime() + 20.0f + CVAR_GET_FLOAT("mp_freezetime"); } ServerPrint("*** CS:BTE [%s] - GameMod Setting [%d] ***", bteGameINI[i], bteGameModAi[i]); ServerPrint("*** CS:BTE [%s] - GameMod Setting [%d] ***", bteGameINI[i], bteGameModAi[i]); ServerPrint("*** CS:BTE [%s] - GameMod Setting [%d] ***", bteGameINI[i], bteGameModAi[i]); if (i == 3 || i == 9) { ServerPrint("***** SyPB not support the mode now :( *****"); ServerPrint("***** SyPB not support the mode now :( *****"); ServerPrint("***** SyPB not support the mode now :( *****"); ServerPrint("***** SyPB not support the mode now :( *****"); ServerPrint("***** SyPB not support the mode now :( *****"); sypb_gamemod.SetInt(10); } else sypb_gamemod.SetInt(bteGameModAi[i]); // SyPB Pro P.36 - bte support g_gameVersion = CSVER_CZERO; break; } } } // SyPB Pro P.38 - Base Change if (GetGameMod() != 0) g_mapType |= MAP_DE; // SyPB Pro P.35 - Game Mode Setting if (GetGameMod () == 0) g_exp.UpdateGlobalKnowledge (); // update experience data on round start // calculate the round mid/end in world time g_timeRoundStart = engine->GetTime () + engine->GetFreezeTime (); g_timeRoundMid = g_timeRoundStart + engine->GetRoundTime () * 60 / 2; g_timeRoundEnd = g_timeRoundStart + engine->GetRoundTime () * 60; }
Bot::Bot (edict_t *bot, int skill, int personality, int team, int member) { // this function does core operation of creating bot, it's called by CreateBot (), // when bot setup completed, (this is a bot class constructor) char rejectReason[128]; int clientIndex = ENTINDEX (bot); memset (this, 0, sizeof (Bot)); pev = VARS (bot); if (bot->pvPrivateData != null) FREE_PRIVATE (bot); bot->pvPrivateData = null; bot->v.frags = 0; // create the player entity by calling MOD's player function BotControl::CallGameEntity (&bot->v); // set all info buffer keys for this bot char *buffer = GET_INFOKEYBUFFER (bot); SET_CLIENT_KEYVALUE (clientIndex, buffer, "model", ""); SET_CLIENT_KEYVALUE (clientIndex, buffer, "rate", "3500.000000"); SET_CLIENT_KEYVALUE (clientIndex, buffer, "cl_updaterate", "20"); SET_CLIENT_KEYVALUE (clientIndex, buffer, "cl_lw", "1"); SET_CLIENT_KEYVALUE (clientIndex, buffer, "cl_lc", "1"); SET_CLIENT_KEYVALUE (clientIndex, buffer, "tracker", "0"); SET_CLIENT_KEYVALUE (clientIndex, buffer, "cl_dlmax", "128"); SET_CLIENT_KEYVALUE (clientIndex, buffer, "friends", "0"); SET_CLIENT_KEYVALUE (clientIndex, buffer, "dm", "0"); SET_CLIENT_KEYVALUE (clientIndex, buffer, "_ah", "0"); if (yb_tagbots.GetBool ()) SET_CLIENT_KEYVALUE (clientIndex, buffer, "*bot", "1"); SET_CLIENT_KEYVALUE (clientIndex, buffer, "_vgui_menus", "0"); memset (rejectReason, 0, sizeof (rejectReason)); // reset the reject reason template string MDLL_ClientConnect (bot, "fakeclient", FormatBuffer ("192.168.1.%d", ENTINDEX (bot) + 100), rejectReason); if (!IsNullString (rejectReason)) { AddLogEntry (true, LOG_WARNING, "Server refused '%s' connection (%s)", STRING (bot->v.netname), rejectReason); ServerCommand ("kick \"%s\"", STRING (bot->v.netname)); // kick the bot player if the server refused it bot->v.flags |= FL_KILLME; } if (IsDedicatedServer () && engine->GetDeveloperLevel () > 0) { if (engine->GetDeveloperLevel () == 2) { ServerPrint ("Server requiring authentication"); ServerPrint ("Client '%s' connected", STRING (bot->v.netname)); ServerPrint ("Adr: 127.0.0.%d:27005", ENTINDEX (bot) + 100); } ServerPrint ("Verifying and uploading resources..."); ServerPrint ("Custom resources total 0 bytes"); ServerPrint (" Decals: 0 bytes"); ServerPrint ("----------------------"); ServerPrint ("Resources to request: 0 bytes"); } MDLL_ClientPutInServer (bot); bot->v.flags = 0; bot->v.flags |= FL_FAKECLIENT | FL_CLIENT; // set this player as fakeclient // initialize all the variables for this bot... m_notStarted = true; // hasn't joined game yet m_startAction = CMENU_IDLE; m_moneyAmount = 0; m_logotypeIndex = engine->RandomInt (0, 5); // initialize msec value m_msecNum = m_msecDel = 0.0f; m_msecInterval = engine->GetTime (); m_msecVal = static_cast <uint8_t> (g_pGlobals->frametime * 1000.0f); m_msecBuiltin = engine->RandomInt (1, 4); // assign how talkative this bot will be m_sayTextBuffer.chatDelay = engine->RandomFloat (3.8f, 10.0f); m_sayTextBuffer.chatProbability = engine->RandomInt (1, 100); m_notKilled = false; m_skill = skill; m_weaponBurstMode = BURST_DISABLED; m_lastThinkTime = engine->GetTime (); m_frameInterval = engine->GetTime (); bot->v.idealpitch = bot->v.v_angle.x; bot->v.ideal_yaw = bot->v.v_angle.y; bot->v.yaw_speed = engine->RandomFloat (g_skillTab[m_skill / 20].minTurnSpeed, g_skillTab[m_skill / 20].maxTurnSpeed); bot->v.pitch_speed = engine->RandomFloat (g_skillTab[m_skill / 20].minTurnSpeed, g_skillTab[m_skill / 20].maxTurnSpeed); switch (personality) { case 1: m_personality = PERSONALITY_RUSHER; m_baseAgressionLevel = engine->RandomFloat (0.7f, 1.0f); m_baseFearLevel = engine->RandomFloat (0.0f, 0.4f); break; case 2: m_personality = PERSONALITY_CAREFUL; m_baseAgressionLevel = engine->RandomFloat (0.0f, 0.4f); m_baseFearLevel = engine->RandomFloat (0.7f, 1.0f); break; default: m_personality = PERSONALITY_NORMAL; m_baseAgressionLevel = engine->RandomFloat (0.4f, 0.7f); m_baseFearLevel = engine->RandomFloat (0.4f, 0.7f); break; } memset (&m_ammoInClip, 0, sizeof (m_ammoInClip)); memset (&m_ammo, 0, sizeof (m_ammo)); m_currentWeapon = 0; // current weapon is not assigned at start m_voicePitch = engine->RandomInt (166, 250) / 2; // assign voice pitch // copy them over to the temp level variables m_agressionLevel = m_baseAgressionLevel; m_fearLevel = m_baseFearLevel; m_nextEmotionUpdate = engine->GetTime () + 0.5f; // just to be sure m_actMessageIndex = 0; m_pushMessageIndex = 0; // assign team and class m_wantedTeam = team; m_wantedClass = member; NewRound (); }
void RoundInit (void) { // this is called at the start of each round g_roundEnded = false; // check team economics g_botManager->CheckTeamEconomics (TEAM_TERRORIST); g_botManager->CheckTeamEconomics (TEAM_COUNTER); for (int i = 0; i < engine->GetMaxClients (); i++) { if (g_botManager->GetBot (i)) g_botManager->GetBot (i)->NewRound (); g_radioSelect[i] = 0; } g_waypoint->SetBombPosition (true); g_waypoint->ClearGoalScore (); g_bombSayString = false; g_timeBombPlanted = 0.0f; g_timeNextBombUpdate = 0.0f; g_leaderChoosen[TEAM_COUNTER] = false; g_leaderChoosen[TEAM_TERRORIST] = false; g_lastRadioTime[0] = 0.0f; g_lastRadioTime[1] = 0.0f; g_botsCanPause = false; // SyPB Pro P.15 char *Plugin_INI = FormatBuffer ("%s/addons/amxmodx/configs/plugins-dmkd.ini", GetModName ()); if (TryFileOpen(Plugin_INI)) { if (CVAR_GET_FLOAT("HsK_Deathmatch_Plugin_load_SyPB") == 1) sypb_gamemod.SetInt (1); else sypb_gamemod.SetInt (0); } // SyPB Pro P.2 // SyPB Pro P.15 Plugin_INI = FormatBuffer ("%s/addons/amxmodx/configs/plugins-zplague.ini", GetModName ()); if (TryFileOpen(Plugin_INI)) // Getting GameMod { float delayTime = (CVAR_GET_FLOAT("zp_delay") >0) ? CVAR_GET_FLOAT("zp_delay") : CVAR_GET_FLOAT("zp_gamemode_delay"); if (delayTime > 0) { sypb_gamemod.SetInt (2); sypb_walkallow.SetInt (0); g_DelayTimer = engine->GetTime () + delayTime + (CVAR_GET_FLOAT("mp_freezetime") / 2); } } // SyPB Pro P.11 Plugin_INI = FormatBuffer ("%s/addons/amxmodx/configs/zombiehell.cfg", GetModName ()); if (TryFileOpen(Plugin_INI) && CVAR_GET_FLOAT("zh_zombie_maxslots") > 0) { sypb_gamemod.SetInt (4); sypb_walkallow.SetInt (0); extern ConVar sypb_quota; sypb_quota.SetInt (static_cast <int> (CVAR_GET_FLOAT("zh_zombie_maxslots"))); } // SyPB Pro P.14 Plugin_INI = FormatBuffer ("%s/addons/amxmodx/configs/bte_wpn.ini", GetModName ()); if (TryFileOpen(Plugin_INI)) // This is CS:BTE { Plugin_INI = FormatBuffer ("%s/addons/amxmodx/configs/plugins-ze.ini", GetModName ()); if ((g_mapType & MAP_ZE) && TryFileOpen(Plugin_INI)) { sypb_gamemod.SetInt (99); sypb_walkallow.SetInt (0); g_DelayTimer = engine->GetTime () + 24.0f; } Plugin_INI = FormatBuffer ("%s/addons/amxmodx/configs/plugins-zb1.ini", GetModName ()); if (TryFileOpen(Plugin_INI)) { sypb_gamemod.SetInt (2); sypb_walkallow.SetInt (0); } } g_exp.UpdateGlobalKnowledge (); // update experience data on round start // calculate the round mid/end in world time g_timeRoundStart = engine->GetTime () + engine->GetFreezeTime (); g_timeRoundMid = g_timeRoundStart + engine->GetRoundTime () * 60 / 2; g_timeRoundEnd = g_timeRoundStart + engine->GetRoundTime () * 60; }
static int DmaSetupTransmit(void * hndl, int num) { int i, result; static int pktsize=0; int total, bufsize, fragment; int bufindex; unsigned char * bufVA; PktBuf * pbuf; int origseqno; //static unsigned short lastno=0; log_verbose("Reached DmaSetupTransmit with handle %p, num %d\n", hndl, num); /* Check driver state */ if(DriverState != REGISTERED) { printk("Driver does not seem to be ready\n"); return 0; } /* Check handle value */ if(hndl != handle[0]) { printk("Came with wrong handle\n"); return 0; } /* Check number of packets */ if(!num) { printk("Came with 0 packets for sending\n"); return 0; } /* Hold the spinlock only when calling the buffer management APIs. */ spin_lock_bh(&RawLock); origseqno = TxSeqNo; for(i=0, bufindex=0; i<num; i++) /* Total packets loop */ { //printk("i %d bufindex %d\n", i, bufindex); /* Fix the packet size to be the maximum entered in GUI */ pktsize = RawMaxPktSize; //printk("pktsize is %d\n", pktsize); total = 0; fragment = 0; while(total < pktsize) /* Packet fragments loop */ { //printk("Buf loop total %d bufindex %d\n", total, bufindex); pbuf = &(pkts[bufindex]); /* Allocate a buffer. DMA driver will map to PCI space. */ bufVA = AllocBuf(&TxBufs); log_verbose(KERN_INFO "TX: The buffer after alloc is at address %x size %d\n", (u32) bufVA, (u32) BUFSIZE); if (bufVA == NULL) { //printk("TX: AllocBuf failed\n"); //printk("[%d]", (num-i-1)); break; } pbuf->pktBuf = bufVA; pbuf->bufInfo = bufVA; bufsize = ((total + BUFSIZE) > pktsize) ? (pktsize - total) : BUFSIZE ; total += bufsize; //printk("bufsize %d total %d\n", bufsize, total); log_verbose(KERN_INFO "Calling FormatBuffer pktsize %d bufsize %d fragment %d\n", pktsize, bufsize, fragment); FormatBuffer(bufVA, pktsize, bufsize, fragment); pbuf->size = bufsize; pbuf->userInfo = TxSeqNo; pbuf->flags = PKT_ALL; if(!fragment) pbuf->flags |= PKT_SOP; if(total == pktsize) { pbuf->flags |= PKT_EOP; pbuf->size = bufsize; } //printk("flags %x\n", pbuf->flags); //printk("TxSeqNo %u\n", TxSeqNo); bufindex++; fragment++; } if(total < pktsize) { /* There must have been some error in the middle of the packet */ if(fragment) { /* First, adjust the number of buffers to queue up or else * partial packets will get transmitted, which will cause a * problem later. */ bufindex -= fragment; /* Now, free any unused buffers from the partial packet, so * that buffers are not lost. */ log_normal(KERN_ERR "Tried to send pkt of size %d, only %d fragments possible\n", pktsize, fragment); FreeUnusedBuf(&TxBufs, fragment); } break; } /* Increment packet sequence number */ //if(lastno != TxSeqNo) printk(" %u-%u.", lastno, TxSeqNo); TxSeqNo++; //lastno = TxSeqNo; } spin_unlock_bh(&RawLock); //printk("[p%d-%d-%d] ", num, i, bufindex); if(i == 0) /* No buffers available */ return 0; log_verbose("%s: Sending packet length %d seqno %d\n", MYNAME, pktsize, TxSeqNo); result = DmaSendPkt(hndl, pkts, bufindex); TxBufCnt += result; if(result != bufindex) { log_normal(KERN_ERR "Tried to send %d pkts in %d buffers, sent only %d\n", num, bufindex, result); //printk("[s%d-%d,%d-%d]", bufindex, result, TxSeqNo, origseqno); if(result) TxSeqNo = pkts[result].userInfo; else TxSeqNo = origseqno; //printk("-%u-", TxSeqNo); //lastno = TxSeqNo; spin_lock_bh(&RawLock); FreeUnusedBuf(&TxBufs, (bufindex-result)); spin_unlock_bh(&RawLock); return 0; } else return 1; }
void RoundInit (void) { // this is called at the start of each round g_roundEnded = false; // check team economics g_botManager->CheckTeamEconomics (TEAM_TERRORIST); g_botManager->CheckTeamEconomics (TEAM_COUNTER); for (int i = 0; i < engine->GetMaxClients (); i++) { if (g_botManager->GetBot (i)) g_botManager->GetBot (i)->NewRound (); g_radioSelect[i] = 0; } g_waypoint->SetBombPosition (true); g_waypoint->ClearGoalScore (); g_bombSayString = false; g_timeBombPlanted = 0.0f; g_timeNextBombUpdate = 0.0f; g_leaderChoosen[TEAM_COUNTER] = false; g_leaderChoosen[TEAM_TERRORIST] = false; g_lastRadioTime[0] = 0.0f; g_lastRadioTime[1] = 0.0f; g_botsCanPause = false; // SyPB Pro P.15 char *Plugin_INI = FormatBuffer("%s/addons/amxmodx/configs/plugins-dmkd.ini", GetModName()); if (TryFileOpen(Plugin_INI)) { if (CVAR_GET_FLOAT("HsK_Deathmatch_Plugin_load_SyPB") == 1) sypb_gamemod.SetInt(1); else sypb_gamemod.SetInt(0); } // SyPB Pro P.2 // SyPB Pro P.15 Plugin_INI = FormatBuffer("%s/addons/amxmodx/configs/plugins-zplague.ini", GetModName()); if (TryFileOpen(Plugin_INI)) // Getting GameMod { float delayTime = (CVAR_GET_FLOAT("zp_delay") >0) ? CVAR_GET_FLOAT("zp_delay") : CVAR_GET_FLOAT("zp_gamemode_delay"); if (delayTime > 0) { sypb_gamemod.SetInt(2); sypb_walkallow.SetInt(0); g_DelayTimer = engine->GetTime() + delayTime + (CVAR_GET_FLOAT("mp_freezetime") / 2); } } // SyPB Pro P.11 Plugin_INI = FormatBuffer("%s/addons/amxmodx/configs/zombiehell.cfg", GetModName()); if (TryFileOpen(Plugin_INI) && CVAR_GET_FLOAT("zh_zombie_maxslots") > 0) { sypb_gamemod.SetInt(4); sypb_walkallow.SetInt(0); extern ConVar sypb_quota; sypb_quota.SetInt(static_cast <int> (CVAR_GET_FLOAT("zh_zombie_maxslots"))); } // SyPB Pro P.29 - Support CSBTE Final Plugin_INI = FormatBuffer("%s/addons/amxmodx/configs/bte_player.ini", GetModName()); if (TryFileOpen(Plugin_INI)) { const int Const_GameModes = 12; int bteGameModAi[Const_GameModes] = { 0, 0, 1, 3, 0, 2, 2, 2, 2, 4, 2, 3 };//n, t, d, d, g, g, z, z, z, z, z, n char *bteGameINI[Const_GameModes] = { "plugins-none", "plugins-td", "plugins-dm", "plugins-dr", "plugins-gd", "plugins-ghost", "plugins-zb1", "plugins-zb3", "plugins-zb4", "plugins-ze", "plugins-zse", "plugins-npc" }; for (int i = 0; i < Const_GameModes; i++) { if (TryFileOpen(FormatBuffer("%s/addons/amxmodx/configs/%s.ini", GetModName(), bteGameINI[i]))) { sypb_gamemod.SetInt(bteGameModAi[i]); if (bteGameModAi[i] == 2 && i != 5) { sypb_walkallow.SetInt(0); g_DelayTimer = engine->GetTime() + 20.0f; } ServerPrint("*** CS:BTE [%s] - GameMod Setting [%d] ***", bteGameINI[i], bteGameModAi[i]); ServerPrint("*** CS:BTE [%s] - GameMod Setting [%d] ***", bteGameINI[i], bteGameModAi[i]); ServerPrint("*** CS:BTE [%s] - GameMod Setting [%d] ***", bteGameINI[i], bteGameModAi[i]); if (i == 3 || i == 9 || i == 10) { ServerPrint("***** SyPB not support the mode now :( *****"); ServerPrint("***** SyPB not support the mode now :( *****"); ServerPrint("***** SyPB not support the mode now :( *****"); ServerPrint("***** SyPB not support the mode now :( *****"); ServerPrint("***** SyPB not support the mode now :( *****"); } break; } } } // SyPB Pro P.25 - Zombie Ai if (GetGameMod() == 2 || GetGameMod() == 4) g_mapType |= MAP_DE; g_exp.UpdateGlobalKnowledge (); // update experience data on round start // calculate the round mid/end in world time g_timeRoundStart = engine->GetTime () + engine->GetFreezeTime (); g_timeRoundMid = g_timeRoundStart + engine->GetRoundTime () * 60 / 2; g_timeRoundEnd = g_timeRoundStart + engine->GetRoundTime () * 60; }