hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.05.21. 03:35



Jelenlévő felhasználók

Jelenleg 727 felhasználó van jelen :: 2 regisztrált, 0 rejtett és 725 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: ASDD, Bing [Bot] az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: mapchooser-be rtv beleirás
HozzászólásElküldve: 2016.02.10. 10:10 
Offline
Nagyúr
Avatar

Csatlakozott: 2013.09.14. 08:21
Hozzászólások: 547
Megköszönt másnak: 95 alkalommal
Megköszönték neki: 71 alkalommal
Üdv.
az alap pálya szavazoba bele irná valaki az rtv-t? meg köszönném! :)

  1. // vim: set ts=4 sw=4 tw=99 noet:
  2. //
  3. // AMX Mod X, based on AMX Mod by Aleksander Naszko ("OLO").
  4. // Copyright (C) The AMX Mod X Development Team.
  5. //
  6. // This software is licensed under the GNU General Public License, version 3 or higher.
  7. // Additional exceptions apply. For full license details, see LICENSE.txt or visit:
  8. //     https://alliedmods.net/amxmodx-license
  9.  
  10. //
  11. // Nextmap Chooser Plugin
  12. //
  13.  
  14. #include <amxmodx>
  15. #include <amxmisc>
  16.  
  17. #define SELECTMAPS  5
  18.  
  19. new Array:g_mapName;
  20. new g_mapNums;
  21.  
  22. new g_nextName[SELECTMAPS]
  23. new g_voteCount[SELECTMAPS + 2]
  24. new g_mapVoteNum
  25. new g_teamScore[2]
  26. new g_lastMap[32]
  27.  
  28. new g_coloredMenus
  29. new bool:g_selected = false
  30.  
  31. public plugin_init()
  32. {
  33.     register_plugin("Nextmap Chooser", AMXX_VERSION_STR, "AMXX Dev Team")
  34.     register_dictionary("mapchooser.txt")
  35.     register_dictionary("common.txt")
  36.    
  37.     g_mapName=ArrayCreate(32);
  38.    
  39.     new MenuName[64]
  40.    
  41.     format(MenuName, charsmax(MenuName), "%L", "en", "CHOOSE_NEXTM")
  42.     register_menucmd(register_menuid(MenuName), (-1^(-1<<(SELECTMAPS+2))), "countVote")
  43.     register_cvar("amx_extendmap_max", "90")
  44.     register_cvar("amx_extendmap_step", "15")
  45.  
  46.     if (cstrike_running())
  47.         register_event("TeamScore", "team_score", "a")
  48.  
  49.     get_localinfo("lastMap", g_lastMap, charsmax(g_lastMap))
  50.     set_localinfo("lastMap", "")
  51.  
  52.     new maps_ini_file[64]
  53.     get_configsdir(maps_ini_file, charsmax(maps_ini_file));
  54.     format(maps_ini_file, charsmax(maps_ini_file), "%s/maps.ini", maps_ini_file);
  55.    
  56.     if (!file_exists(maps_ini_file))
  57.         get_cvar_string("mapcyclefile", maps_ini_file, charsmax(maps_ini_file))
  58.     if (loadSettings(maps_ini_file))
  59.         set_task(15.0, "voteNextmap", 987456, "", 0, "b")
  60.  
  61.     g_coloredMenus = colored_menus()
  62.    
  63. }
  64.  
  65. public checkVotes()
  66. {
  67.     new b = 0
  68.    
  69.     for (new a = 0; a < g_mapVoteNum; ++a)
  70.         if (g_voteCount[b] < g_voteCount[a])
  71.             b = a
  72.  
  73.    
  74.     if (g_voteCount[SELECTMAPS] > g_voteCount[b]
  75.         && g_voteCount[SELECTMAPS] > g_voteCount[SELECTMAPS+1])
  76.     {
  77.         new mapname[32]
  78.        
  79.         get_mapname(mapname, charsmax(mapname))
  80.         new Float:steptime = get_cvar_float("amx_extendmap_step")
  81.         set_cvar_float("mp_timelimit", get_cvar_float("mp_timelimit") + steptime)
  82.         client_print(0, print_chat, "%L", LANG_PLAYER, "CHO_FIN_EXT", steptime)
  83.         log_amx("Vote: Voting for the nextmap finished. Map %s will be extended to next %.0f minutes", mapname, steptime)
  84.        
  85.         return
  86.     }
  87.    
  88.     new smap[32]
  89.     if (g_voteCount[b] && g_voteCount[SELECTMAPS + 1] <= g_voteCount[b])
  90.     {
  91.         ArrayGetString(g_mapName, g_nextName[b], smap, charsmax(smap));
  92.         set_cvar_string("amx_nextmap", smap);
  93.     }
  94.  
  95.    
  96.     get_cvar_string("amx_nextmap", smap, charsmax(smap))
  97.     client_print(0, print_chat, "%L", LANG_PLAYER, "CHO_FIN_NEXT", smap)
  98.     log_amx("Vote: Voting for the nextmap finished. The nextmap will be %s", smap)
  99. }
  100.  
  101. public countVote(id, key)
  102. {
  103.     if (get_cvar_float("amx_vote_answers"))
  104.     {
  105.         new name[MAX_NAME_LENGTH]
  106.         get_user_name(id, name, charsmax(name))
  107.        
  108.         if (key == SELECTMAPS)
  109.             client_print(0, print_chat, "%L", LANG_PLAYER, "CHOSE_EXT", name)
  110.         else if (key < SELECTMAPS)
  111.         {
  112.             new map[32];
  113.             ArrayGetString(g_mapName, g_nextName[key], map, charsmax(map));
  114.             client_print(0, print_chat, "%L", LANG_PLAYER, "X_CHOSE_X", name, map);
  115.         }
  116.     }
  117.     ++g_voteCount[key]
  118.    
  119.     return PLUGIN_HANDLED
  120. }
  121.  
  122. bool:isInMenu(id)
  123. {
  124.     for (new a = 0; a < g_mapVoteNum; ++a)
  125.         if (id == g_nextName[a])
  126.             return true
  127.     return false
  128. }
  129.  
  130. public voteNextmap()
  131. {
  132.     new winlimit = get_cvar_num("mp_winlimit")
  133.     new maxrounds = get_cvar_num("mp_maxrounds")
  134.    
  135.     if (winlimit)
  136.     {
  137.         new c = winlimit - 2
  138.        
  139.         if ((c > g_teamScore[0]) && (c > g_teamScore[1]))
  140.         {
  141.             g_selected = false
  142.             return
  143.         }
  144.     }
  145.     else if (maxrounds)
  146.     {
  147.         if ((maxrounds - 2) > (g_teamScore[0] + g_teamScore[1]))
  148.         {
  149.             g_selected = false
  150.             return
  151.         }
  152.     } else {
  153.         new timeleft = get_timeleft()
  154.        
  155.         if (timeleft < 1 || timeleft > 129)
  156.         {
  157.             g_selected = false
  158.             return
  159.         }
  160.     }
  161.  
  162.     if (g_selected)
  163.         return
  164.  
  165.     g_selected = true
  166.    
  167.     new menu[512], a, mkeys = (1<<SELECTMAPS + 1)
  168.  
  169.     new pos = format(menu, charsmax(menu), g_coloredMenus ? "\y%L:\w^n^n" : "%L:^n^n", LANG_SERVER, "CHOOSE_NEXTM")
  170.     new dmax = (g_mapNums > SELECTMAPS) ? SELECTMAPS : g_mapNums
  171.    
  172.     for (g_mapVoteNum = 0; g_mapVoteNum < dmax; ++g_mapVoteNum)
  173.     {
  174.         a = random_num(0, g_mapNums - 1)
  175.        
  176.         while (isInMenu(a))
  177.             if (++a >= g_mapNums) a = 0
  178.        
  179.         g_nextName[g_mapVoteNum] = a
  180.         pos += format(menu[pos], charsmax(menu) - pos, "%d. %a^n", g_mapVoteNum + 1, ArrayGetStringHandle(g_mapName, a));
  181.         mkeys |= (1<<g_mapVoteNum)
  182.         g_voteCount[g_mapVoteNum] = 0
  183.     }
  184.    
  185.     menu[pos++] = '^n'
  186.     g_voteCount[SELECTMAPS] = 0
  187.     g_voteCount[SELECTMAPS + 1] = 0
  188.    
  189.     new mapname[32]
  190.     get_mapname(mapname, charsmax(mapname))
  191.  
  192.     if ((winlimit + maxrounds) == 0 && (get_cvar_float("mp_timelimit") < get_cvar_float("amx_extendmap_max")))
  193.     {
  194.         pos += format(menu[pos], charsmax(menu) - pos, "%d. %L^n", SELECTMAPS + 1, LANG_SERVER, "EXTED_MAP", mapname)
  195.         mkeys |= (1<<SELECTMAPS)
  196.     }
  197.  
  198.     format(menu[pos], charsmax(menu), "%d. %L", SELECTMAPS+2, LANG_SERVER, "NONE")
  199.     new MenuName[64]
  200.    
  201.     format(MenuName, charsmax(MenuName), "%L", "en", "CHOOSE_NEXTM")
  202.     show_menu(0, mkeys, menu, 15, MenuName)
  203.     set_task(15.0, "checkVotes")
  204.     client_print(0, print_chat, "%L", LANG_SERVER, "TIME_CHOOSE")
  205.     client_cmd(0, "spk Gman/Gman_Choose2")
  206.     log_amx("Vote: Voting for the nextmap started")
  207. }
  208. stock bool:ValidMap(mapname[])
  209. {
  210.     if ( is_map_valid(mapname) )
  211.     {
  212.         return true;
  213.     }
  214.     // If the is_map_valid check failed, check the end of the string
  215.     new len = strlen(mapname) - 4;
  216.    
  217.     // The mapname was too short to possibly house the .bsp extension
  218.     if (len < 0)
  219.     {
  220.         return false;
  221.     }
  222.     if ( equali(mapname[len], ".bsp") )
  223.     {
  224.         // If the ending was .bsp, then cut it off.
  225.         // the string is byref'ed, so this copies back to the loaded text.
  226.         mapname[len] = '^0';
  227.        
  228.         // recheck
  229.         if ( is_map_valid(mapname) )
  230.         {
  231.             return true;
  232.         }
  233.     }
  234.    
  235.     return false;
  236. }
  237.  
  238. loadSettings(filename[])
  239. {
  240.     if (!file_exists(filename))
  241.         return 0
  242.  
  243.     new szText[32]
  244.     new currentMap[32]
  245.    
  246.     new buff[256];
  247.    
  248.     get_mapname(currentMap, charsmax(currentMap))
  249.  
  250.     new fp=fopen(filename,"r");
  251.    
  252.     while (!feof(fp))
  253.     {
  254.         buff[0]='^0';
  255.         szText[0]='^0';
  256.        
  257.         fgets(fp, buff, charsmax(buff));
  258.        
  259.         parse(buff, szText, charsmax(szText));
  260.        
  261.        
  262.         if (szText[0] != ';' &&
  263.             ValidMap(szText) &&
  264.             !equali(szText, g_lastMap) &&
  265.             !equali(szText, currentMap))
  266.         {
  267.             ArrayPushString(g_mapName, szText);
  268.             ++g_mapNums;
  269.         }
  270.        
  271.     }
  272.    
  273.     fclose(fp);
  274.  
  275.     return g_mapNums
  276. }
  277.  
  278. public team_score()
  279. {
  280.     new team[2]
  281.    
  282.     read_data(1, team, charsmax(team))
  283.     g_teamScore[(team[0]=='C') ? 0 : 1] = read_data(2)
  284. }
  285.  
  286. public plugin_end()
  287. {
  288.     new current_map[32]
  289.  
  290.     get_mapname(current_map, charsmax(current_map))
  291.     set_localinfo("lastMap", current_map)
  292. }

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 48 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole