PHP- Kodu:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <hamsandwich>
#define PLUGIN "Auto Map Changer"
#define VERSION "1.0"
#define AUTHOR "akcaliberkk"
#define TASK_NOTIFICATION 1546
new round;
new vote[3];
new nextmap[32];
new menu
new szMap1[32],szMap2[32],szMap3[32];
new const mapcycle[] = "addons/amxmodx/configs/mapcycle_csgo.ini";
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
if(!file_exists(mapcycle)) {
new f = fopen(mapcycle,"wt")
fclose(f)
}
register_event("HLTV","eNewRound","a","1=0","2=0")
register_event("TextMsg","eRestart","a","2=#Game_will_restart_in","2=#Game_Commencing")
}
public eNewRound() {
round++
if(round == 10) {
swap_teams()
}
else if(round == 18) {
start_map_vote()
}
else if(round == 20) {
change_map()
}
}
public eRestart() {
round = 0
}
// TEAM SWAP
public swap_teams() {
new players[32],inum;
get_players(players,inum)
for(new i;i<inum;i++) {
switch(i) {
case 0..6: set_task(0.1,"delayed_team_change",players[i])
case 7..14: set_task(0.2,"delayed_team_change",players[i])
case 15..22: set_task(0.3,"delayed_team_change",players[i])
case 23..31: set_task(0.4,"delayed_team_change",players[i])
}
}
set_task(1.0,"SendNotification")
}
public delayed_team_change(id) {
switch(cs_get_user_team(id)) {
case CS_TEAM_T: cs_set_user_team(id,CS_TEAM_CT)
case CS_TEAM_CT: cs_set_user_team(id,CS_TEAM_T)
}
ExecuteHamB(Ham_CS_RoundRespawn,id)
}
public SendNotification() {
ColorChat(0,"^4*** Takimlar Degistirildi !")
}
// VOTE
public start_map_vote() {
new players[32],inum;
get_players(players,inum)
new maxlines = file_size(mapcycle,1)
new randomNum1, randomNum2, randomNum3;
new mapname[32];
new szData[32],txtlen;
new found = -1;
get_mapname(mapname,31)
for(new line; line<maxlines; line++) {
szData[0] = 0
read_file(mapcycle,line,szData,31,txtlen)
if(equali(szData,mapname)) {
found = line
}
else if(!szData[0]) {
maxlines--
}
}
randomNum1 = (found == -1) ? random_num(0,maxlines) : random_num2(0,maxlines,found)
randomNum2 = (found == -1) ? random_num2(0,maxlines,randomNum1) : random_num2(0,maxlines,found,randomNum1)
randomNum3 = (found == -1) ? random_num2(0,maxlines,randomNum2,randomNum1) : random_num2(0,maxlines,found,randomNum1,randomNum2)
read_file(mapcycle,randomNum1,szMap1,31,txtlen)
read_file(mapcycle,randomNum2,szMap2,31,txtlen)
read_file(mapcycle,randomNum3,szMap3,31,txtlen)
menu = menu_create("\yMap Seciniz","vote_handle")
menu_additem(menu,szMap1,"")
menu_additem(menu,szMap2,"")
menu_additem(menu,szMap3,"")
menu_setprop(menu,MPROP_EXIT,MEXIT_NEVER)
for(new i;i<inum;i++) {
menu_display(players[i],menu)
}
ColorChat(0,"^4*** Sonraki Map Oylamasi Baslatildi !")
set_task(10.0,"vote_finish")
return PLUGIN_HANDLED
}
public vote_handle(id,menu,item) {
vote[item]++
}
public vote_finish() {
menu_destroy(menu)
if(vote[0] >= vote[1] && vote[0] >= vote[2]) {
formatex(nextmap,31,szMap1)
}
else if(vote[1] >= vote[0] && vote[1] >= vote[2]) {
formatex(nextmap,31,szMap2)
}
else if(vote[2] >= vote[0] && vote[2] >= vote[1]) {
formatex(nextmap,31,szMap3)
}
ColorChat(0,"^4*** Sonraki Map Oylamasi Bitti. Secilen Map: ^3%s",nextmap)
return PLUGIN_HANDLED
}
stock random_num2( _min, _max, exception1, exception2 = -1, exception3 = -1) {
new num = random_num(_min,_max)
while(num == exception1 || num == exception2 || num == exception3) {
num = random_num(_min,_max)
}
return num
}
// MAP CHANGE
public change_map() {
new szMod[10]
get_modname(szMod, 9)
if (!equal(szMod, "zp"))
{
message_begin(MSG_ALL, SVC_INTERMISSION)
message_end()
}
set_task(2.0, "mapChange")
ColorChat(0,"^4*** Map Degistiriliyor... Sonraki Map: ^3%s",nextmap)
}
public mapChange() {
server_cmd("changelevel %s",nextmap)
}
// STOCK
stock ColorChat(const id, const string[], {Float, Sql, Resul,_}:...) {
new msg[191], players[32], count = 1;
static len;
len = formatex(msg, charsmax(msg), "^x01" );
vformat(msg[len], charsmax(msg) - len, string, 3);
if(id)players[0] = id;
else get_players(players,count,"ch");
for (new i = 0; i < count; i++){
if(is_user_connected(players[i])){
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"),_, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
return;
}
configs klasörüne mapcycle_csgo.ini şeklinde bir dosya açın. İçine alt alta map isimlerini yazın.
* 17. roundda dosyayı editlemeyin. Sadece ilk 16 round dosyayı düzenleyebilirsiniz.
* İki map ismi arasında boş bir satır olmasın.