- sa execute un fisier botnames.txt care sa vina in configs si acolo sa pun numele botilor
- puneti sa fie doar acele Cvaruri la fel ca un fakefull_original si anume:
ff_automode 1 - ca sa intre automat
ff_players 29 - nr de boti
ff_delay 1 - delay-ul de intrare alt botilor
- | Afiseaza codul
#include < amxmodx > #include < cstrike > #include < fakemeta > enum Cvars { botname1, botname2, minplayers, starttime, endtime, onecon, onebot, norounds }; new const cvar_names[ Cvars ][] = { "amx_botname", "amx_botname2", "amx_minplayers", "amx_starttime", "amx_endtime", "amx_onecon", "amx_onebot", "amx_norounds" }; new const cvar_defaults[ Cvars ][] = { "Bot", "Bot 2", "10", "00", "12", "0", "0", "0" }; new cvar_pointer[ Cvars ]; new bool:g_isTime = false; new bool:g_ePlayers = false; new bool:g_isFirstRound = true; new g_BotNum = 0, g_maxplayers, g_bID1, g_bID2; new const g_ConfigFile[] = "addons/amxmodx/configs/kgbbots.cfg" public plugin_init() { register_plugin("KGB Bots", "2.3", "OvidiuS & Desikac") register_cvar("kgbbots", "1" , (FCVAR_SERVER|FCVAR_SPONLY)) register_logevent("Event_RoundEnd", 2, "1=Round_End"); register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0"); for ( new Cvars:i = botname1 ; i < Cvars ; i++ ) cvar_pointer[ i ] = register_cvar( cvar_names[ i ] , cvar_defaults[ i ] ); g_maxplayers = get_maxplayers(); server_cmd("exec %s", g_ConfigFile) set_task(3.0, "isit") } public isit() { if(get_pcvar_num(cvar_pointer[norounds])) set_task(30.0, "CheckConditions",0,"",0,"b") } public plugin_precache() { if(!file_exists(g_ConfigFile)) { write_file(g_ConfigFile, "KGB Bots - Podesavanja^n") write_file(g_ConfigFile, "amx_botname ^"KGB Bot1^" //Ime prvog bota") write_file(g_ConfigFile, "amx_botname2 ^"KGB Bot2^" //Ime drugog bota") write_file(g_ConfigFile, "amx_minplayers ^"10^" //Botovi ce biti ubaceni samo ako je broj igraca manji od ove vrednosti.") write_file(g_ConfigFile, "amx_starttime ^"0^" //Od koliko sati da botovi budu na serveru?") write_file(g_ConfigFile, "amx_endtime ^"12^" //Do koliko sati da botovi budu na serveru?") write_file(g_ConfigFile, "amx_onecon ^"0^" //Da li treba da bude ispunjen samo jedan uslov da bi se dodali botovi?") write_file(g_ConfigFile, "amx_onebot ^"0^" //Da li da plugin ubacuje samo jednog bota?") write_file(g_ConfigFile, "amx_norounds ^"0^" //Da li se na ovom serveru ne zavrsava runda?") } } public Event_RoundEnd() { if (!g_isFirstRound) return; g_isFirstRound = false; } public Event_NewRound() { if(g_isFirstRound) return; CheckConditions(); } public CheckConditions() { static iHours, m, s time(iHours, m, s) new iMin = get_pcvar_num(cvar_pointer[ starttime ]); new iMax = get_pcvar_num(cvar_pointer[ endtime ]); if(iMin == iMax) g_isTime = true; else if(iMin > iMax) { switch(iHours) { case 0..11: { if(iMin >= iHours && iMax > iHours) g_isTime = true; } case 12..23: { if(iMin <= iHours && iMax < iHours) g_isTime = true; } } } else if(iMin <= iHours && iMax > iHours) g_isTime = true; else g_isTime = false; new iNum, iPlayers[32]; get_players(iPlayers, iNum, "c"); if(iNum <= get_pcvar_num(cvar_pointer[minplayers])) g_ePlayers = true; else g_ePlayers = false; if(g_maxplayers - iNum < 2) g_ePlayers = false; if(get_pcvar_num(cvar_pointer[minplayers]) == 0) g_ePlayers = true new iCondition = get_pcvar_num(cvar_pointer[ onecon ]); if( (!g_ePlayers && g_isTime || !g_isTime && g_ePlayers) && iCondition) { g_isTime = true; g_ePlayers = true; } if((g_isTime && g_ePlayers) && !g_BotNum) { if(!get_pcvar_num(cvar_pointer[onebot])) set_task(1.5, "Task_AddBot") set_task(2.8, "Task_AddBot") } else if((!g_isTime || !g_ePlayers) && 0 < g_BotNum <= 2 ) { g_BotNum = 0; server_cmd("kick #%d", g_bID1) server_cmd("kick #%d", g_bID2) } } public Task_AddBot() { static iBot; new iBotName[35]; switch(g_BotNum) { case 0: get_pcvar_string(cvar_pointer[ botname1 ], iBotName, charsmax( iBotName )); case 1: get_pcvar_string(cvar_pointer[ botname2 ], iBotName, charsmax( iBotName )); case 2: return; } iBot = engfunc( EngFunc_CreateFakeClient, iBotName ); if(!iBot) return; dllfunc( MetaFunc_CallGameEntity, "player", iBot ); set_pev( iBot, pev_flags, FL_FAKECLIENT ); set_pev( iBot, pev_model, "" ); set_pev( iBot, pev_viewmodel2, "" ); set_pev( iBot, pev_modelindex, 0 ); set_pev( iBot, pev_renderfx, kRenderFxNone ); set_pev( iBot, pev_rendermode, kRenderTransAlpha ); set_pev( iBot, pev_renderamt, 0.0 ); set_pdata_int( iBot, 114, 3 ); cs_set_user_team( iBot, CS_TEAM_UNASSIGNED ); switch(g_BotNum) { case 0: g_bID1 = get_user_userid(iBot); case 1: g_bID2 = get_user_userid(iBot); } g_BotNum++; }