1. Punisher Пользователь

    Регистрация:
    08.02.16
    Сообщения:
    1.530
    Симпатии:
    194
    Пол:
    Мужской
    VKcom:
    wkolopunisher
    Telegram:
    punproject
    Skype:
    punproject
    Кто сможет такое реализовать со стандартным mapsmenu?
    Если это сложно-геморойно, то за $

    PHP:
    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. // Maps Menu Plugin
    12. //
    13.  
    14. #include <amxmodx>
    15. #include <amxmisc>
    16.  
    17. new Array:g_mapName;
    18. new g_mapNums
    19. new g_menuPosition[MAX_PLAYERS + 1]
    20.  
    21. new g_voteCount[5]
    22.  
    23. new g_voteSelected[MAX_PLAYERS + 1][4]
    24. new g_voteSelectedNum[MAX_PLAYERS + 1]
    25.  
    26. new g_coloredMenus
    27.  
    28. new g_choosed
    29.  
    30. public plugin_init()
    31. {
    32.     register_plugin("Maps Menu", AMXX_VERSION_STR, "AMXX Dev Team")
    33.     register_dictionary("mapsmenu.txt")
    34.     register_dictionary("common.txt")
    35.     register_clcmd("amx_mapmenu", "cmdMapsMenu", ADMIN_MAP, "- displays changelevel menu")
    36.     register_clcmd("amx_votemapmenu", "cmdVoteMapMenu", ADMIN_VOTE, "- displays votemap menu")
    37.  
    38.     register_menucmd(register_menuid("Changelevel Menu"), 1023, "actionMapsMenu")
    39.     register_menucmd(register_menuid("Which map do you want?"), 527, "voteCount")
    40.     register_menucmd(register_menuid("Change map to"), 527, "voteCount")
    41.     register_menucmd(register_menuid("Votemap Menu"), 1023, "actionVoteMapMenu")
    42.     register_menucmd(register_menuid("The winner: "), 3, "actionResult")
    43.  
    44.     g_mapName=ArrayCreate(32);
    45.    
    46.     new maps_ini_file[64];
    47.     get_configsdir(maps_ini_file, charsmax(maps_ini_file));
    48.     format(maps_ini_file, charsmax(maps_ini_file), "%s/maps.ini", maps_ini_file);
    49.  
    50.     if (!file_exists(maps_ini_file))
    51.         get_cvar_string("mapcyclefile", maps_ini_file, charsmax(maps_ini_file));
    52.        
    53.     if (!file_exists(maps_ini_file))
    54.         format(maps_ini_file, charsmax(maps_ini_file), "mapcycle.txt")
    55.    
    56.     load_settings(maps_ini_file)
    57.  
    58.     g_coloredMenus = colored_menus()
    59. }
    60.  
    61. public autoRefuse()
    62. {
    63.     log_amx("Vote: %L", "en", "RESULT_REF")
    64.     client_print(0, print_chat, "%L", LANG_PLAYER, "RESULT_REF")
    65. }
    66.  
    67. public actionResult(id, key)
    68. {
    69.     remove_task(4545454)
    70.    
    71.     switch (key)
    72.     {
    73.         case 0:
    74.         {
    75.             new _modName[10]
    76.             get_modname(_modName, charsmax(_modName))
    77.            
    78.             if (!equal(_modName, "zp"))
    79.             {
    80.                 message_begin(MSG_ALL, SVC_INTERMISSION)
    81.                 message_end()
    82.             }
    83.  
    84.             new tempMap[32];
    85.             ArrayGetString(g_mapName, g_choosed, tempMap, charsmax(tempMap));
    86.            
    87.             set_task(2.0, "delayedChange", 0, tempMap, strlen(tempMap) + 1)
    88.             log_amx("Vote: %L", "en", "RESULT_ACC")
    89.             client_print(0, print_chat, "%L", LANG_PLAYER, "RESULT_ACC")
    90.         }
    91.         case 1: autoRefuse()
    92.     }
    93.    
    94.     return PLUGIN_HANDLED
    95. }
    96.  
    97. public checkVotes(id)
    98. {
    99.     id -= 34567
    100.     new num, ppl[MAX_PLAYERS], a = 0
    101.    
    102.     get_players(ppl, num, "c")
    103.     if (num == 0) num = 1
    104.     g_choosed = -1
    105.    
    106.     for (new i = 0; i < g_voteSelectedNum[id]; ++i)
    107.         if (g_voteCount[a] < g_voteCount[i])
    108.             a = i
    109.  
    110.     new votesNum = g_voteCount[0] + g_voteCount[1] + g_voteCount[2] + g_voteCount[3] + g_voteCount[4]
    111.     new iRatio = votesNum ? floatround(get_cvar_float("amx_votemap_ratio") * float(votesNum), floatround_ceil) : 1
    112.     new iResult = g_voteCount[a]
    113.  
    114.     if (iResult >= iRatio)
    115.     {
    116.         g_choosed = g_voteSelected[id][a]
    117.         new tempMap[32];
    118.         ArrayGetString(g_mapName, g_choosed, tempMap, charsmax(tempMap));
    119.         client_print(0, print_chat, "%L %s", LANG_PLAYER, "VOTE_SUCCESS", tempMap);
    120.         log_amx("Vote: %L %s", "en", "VOTE_SUCCESS", tempMap);
    121.     }
    122.    
    123.     if (g_choosed != -1)
    124.     {
    125.         if (is_user_connected(id))
    126.         {
    127.             new menuBody[512]
    128.             new tempMap[32];
    129.             ArrayGetString(g_mapName, g_choosed, tempMap, charsmax(tempMap));
    130.             new len = format(menuBody, charsmax(menuBody), g_coloredMenus ? "\y%L: \w%s^n^n" : "%L: %s^n^n", id, "THE_WINNER", tempMap)
    131.            
    132.             len += format(menuBody[len], charsmax(menuBody) - len, g_coloredMenus ? "\y%L^n\w" : "%L^n", id, "WANT_CONT")
    133.             format(menuBody[len], charsmax(menuBody) - len, "^n1. %L^n2. %L", id, "YES", id, "NO")
    134.  
    135.             show_menu(id, 0x03, menuBody, 10, "The winner: ")
    136.             set_task(10.0, "autoRefuse", 4545454)
    137.         } else {
    138.             new _modName[10]
    139.             get_modname(_modName, charsmax(_modName))
    140.            
    141.             if (!equal(_modName, "zp"))
    142.             {
    143.                 message_begin(MSG_ALL, SVC_INTERMISSION)
    144.                 message_end()
    145.             }
    146.             new tempMap[32];
    147.             ArrayGetString(g_mapName, g_choosed, tempMap, charsmax(tempMap));
    148.             set_task(2.0, "delayedChange", 0, tempMap, strlen(tempMap) + 1)
    149.         }
    150.     } else {
    151.         client_print(0, print_chat, "%L", LANG_PLAYER, "VOTE_FAILED")
    152.         log_amx("Vote: %L", "en", "VOTE_FAILED")
    153.     }
    154.    
    155.     remove_task(34567 + id)
    156. }
    157.  
    158. public voteCount(id, key)
    159. {
    160.     if (key > 3)
    161.     {
    162.         client_print(0, print_chat, "%L", LANG_PLAYER, "VOT_CANC")
    163.         remove_task(34567 + id)
    164.         set_cvar_float("amx_last_voting", get_gametime())
    165.         log_amx("Vote: Cancel vote session")
    166.        
    167.         return PLUGIN_HANDLED
    168.     }
    169.    
    170.     if (get_cvar_float("amx_vote_answers"))
    171.     {
    172.         new name[MAX_NAME_LENGTH]
    173.        
    174.         get_user_name(id, name, charsmax(name))
    175.         client_print(0, print_chat, "%L", LANG_PLAYER, "X_VOTED_FOR", name, key + 1)
    176.     }
    177.    
    178.     ++g_voteCount[key]
    179.    
    180.     return PLUGIN_HANDLED
    181. }
    182.  
    183. isMapSelected(id, pos)
    184. {
    185.     for (new a = 0; a < g_voteSelectedNum[id]; ++a)
    186.         if (g_voteSelected[id][a] == pos)
    187.             return 1
    188.     return 0
    189. }
    190.  
    191. displayVoteMapsMenu(id, pos)
    192. {
    193.     if (pos < 0)
    194.         return
    195.  
    196.     new menuBody[512], b = 0, start = pos * 7
    197.  
    198.     if (start >= g_mapNums)
    199.         start = pos = g_menuPosition[id] = 0
    200.  
    201.     new len = format(menuBody, charsmax(menuBody), g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "VOTEMAP_MENU", pos + 1, (g_mapNums / 7 + ((g_mapNums % 7) ? 1 : 0)))
    202.     new end = start + 7, keys = MENU_KEY_0
    203.  
    204.     if (end > g_mapNums)
    205.         end = g_mapNums
    206.  
    207.     new tempMap[32];
    208.     for (new a = start; a < end; ++a)
    209.     {
    210.         ArrayGetString(g_mapName, a, tempMap, charsmax(tempMap));
    211.         if (g_voteSelectedNum[id] == 4 || isMapSelected(id, pos * 7 + b))
    212.         {
    213.             ++b
    214.             if (g_coloredMenus)
    215.                 len += format(menuBody[len], charsmax(menuBody) - len, "\d%d. %s^n\w", b, tempMap)
    216.             else
    217.                 len += format(menuBody[len], charsmax(menuBody) - len, "#. %s^n", tempMap)
    218.         } else {
    219.             keys |= (1<<b)
    220.             len += format(menuBody[len], charsmax(menuBody) - len, "%d. %s^n", ++b, tempMap)
    221.         }
    222.     }
    223.  
    224.     if (g_voteSelectedNum[id])
    225.     {
    226.         keys |= MENU_KEY_8
    227.         len += format(menuBody[len], charsmax(menuBody) - len, "^n8. %L^n", id, "START_VOT")
    228.     }
    229.     else
    230.         len += format(menuBody[len], charsmax(menuBody) - len, g_coloredMenus ? "^n\d8. %L^n\w" : "^n#. %L^n", id, "START_VOT")
    231.  
    232.     if (end != g_mapNums)
    233.     {
    234.         len += format(menuBody[len], charsmax(menuBody) - len, "^n9. %L...^n0. %L^n", id, "MORE", id, pos ? "BACK" : "EXIT")
    235.         keys |= MENU_KEY_9
    236.     }
    237.     else
    238.         len += format(menuBody[len], charsmax(menuBody) - len, "^n0. %L^n", id, pos ? "BACK" : "EXIT")
    239.  
    240.     if (g_voteSelectedNum[id])
    241.         len += format(menuBody[len], charsmax(menuBody) - len, g_coloredMenus ? "^n\y%L:^n\w" : "^n%L:^n", id, "SEL_MAPS")
    242.     else
    243.         len += format(menuBody[len], charsmax(menuBody) - len, "^n^n")
    244.  
    245.     for (new c = 0; c < 4; c++)
    246.     {
    247.         if (c < g_voteSelectedNum[id])
    248.         {
    249.             ArrayGetString(g_mapName, g_voteSelected[id][c], tempMap, charsmax(tempMap));
    250.             len += format(menuBody[len], charsmax(menuBody) - len, "%s^n", tempMap)
    251.         }
    252.         else
    253.             len += format(menuBody[len], charsmax(menuBody) - len, "^n")
    254.     }
    255.  
    256.     new menuName[64]
    257.     format(menuName, charsmax(menuName), "%L", "en", "VOTEMAP_MENU")
    258.  
    259.     show_menu(id, keys, menuBody, -1, menuName)
    260. }
    261.  
    262. public cmdVoteMapMenu(id, level, cid)
    263. {
    264.     if (!cmd_access(id, level, cid, 1))
    265.         return PLUGIN_HANDLED
    266.  
    267.     if (get_cvar_float("amx_last_voting") > get_gametime())
    268.     {
    269.         client_print(id, print_chat, "%L", id, "ALREADY_VOT")
    270.         return PLUGIN_HANDLED
    271.     }
    272.  
    273.     g_voteSelectedNum[id] = 0
    274.  
    275.     if (g_mapNums)
    276.     {
    277.         displayVoteMapsMenu(id, g_menuPosition[id] = 0)
    278.     } else {
    279.         console_print(id, "%L", id, "NO_MAPS_MENU")
    280.         client_print(id, print_chat, "%L", id, "NO_MAPS_MENU")
    281.     }
    282.  
    283.     return PLUGIN_HANDLED
    284. }
    285.  
    286. public cmdMapsMenu(id, level, cid)
    287. {
    288.     if (!cmd_access(id, level, cid, 1))
    289.         return PLUGIN_HANDLED
    290.  
    291.     if (g_mapNums)
    292.     {
    293.         displayMapsMenu(id, g_menuPosition[id] = 0)
    294.     } else {
    295.         console_print(id, "%L", id, "NO_MAPS_MENU")
    296.         client_print(id, print_chat, "%L", id, "NO_MAPS_MENU")
    297.     }
    298.  
    299.     return PLUGIN_HANDLED
    300. }
    301.  
    302. public delayedChange(mapname[])
    303. {
    304.     engine_changelevel(mapname)
    305. }
    306.  
    307. public actionVoteMapMenu(id, key)
    308. {
    309.     new tempMap[32];
    310.     switch (key)
    311.     {
    312.         case 7:
    313.         {
    314.             new Float:voting = get_cvar_float("amx_last_voting")
    315.        
    316.             if (voting > get_gametime())
    317.             {
    318.                 client_print(id, print_chat, "%L", id, "ALREADY_VOT")
    319.                 return PLUGIN_HANDLED
    320.             }
    321.  
    322.             if (voting && voting + get_cvar_float("amx_vote_delay") > get_gametime())
    323.             {
    324.                 client_print(id, print_chat, "%L", id, "VOT_NOW_ALLOW")
    325.                 return PLUGIN_HANDLED
    326.             }
    327.  
    328.             g_voteCount = {0, 0, 0, 0, 0}
    329.            
    330.             new Float:vote_time = get_cvar_float("amx_vote_time") + 2.0
    331.             set_cvar_float("amx_last_voting", get_gametime() + vote_time)
    332.             new iVoteTime = floatround(vote_time)
    333.  
    334.             set_task(vote_time, "checkVotes", 34567 + id)
    335.  
    336.             new menuBody[512]
    337.             new players[MAX_PLAYERS]
    338.             new pnum, keys, len
    339.  
    340.             get_players(players, pnum)
    341.  
    342.             if (g_voteSelectedNum[id] > 1)
    343.             {
    344.                 len = format(menuBody, charsmax(menuBody), g_coloredMenus ? "\y%L^n\w^n" : "%L^n^n", id, "WHICH_MAP")
    345.                
    346.                 for (new c = 0; c < g_voteSelectedNum[id]; ++c)
    347.                 {
    348.                     ArrayGetString(g_mapName, g_voteSelected[id][c], tempMap, charsmax(tempMap));
    349.                     len += format(menuBody[len], charsmax(menuBody) - len, "%d. %s^n", c + 1, tempMap)
    350.                     keys |= (1<<c)
    351.                 }
    352.                
    353.                 keys |= (1<<8)
    354.                 len += format(menuBody[len], charsmax(menuBody) - len, "^n9. %L^n", id, "NONE")
    355.             } else {
    356.                 ArrayGetString(g_mapName, g_voteSelected[id][0], tempMap, charsmax(tempMap));
    357.                 len = format(menuBody, charsmax(menuBody), g_coloredMenus ? "\y%L^n%s?^n\w^n1. %L^n2. %L^n" : "%L^n%s?^n^n1. %L^n2. %L^n", id, "CHANGE_MAP_TO", tempMap, id, "YES", id, "NO")
    358.                 keys = MENU_KEY_1|MENU_KEY_2
    359.             }
    360.  
    361.             new menuName[64]
    362.             format(menuName, charsmax(menuName), "%L", "en", "WHICH_MAP")
    363.  
    364.             for (new b = 0; b < pnum; ++b)
    365.                 if (players[b] != id)
    366.                     show_menu(players[b], keys, menuBody, iVoteTime, menuName)
    367.  
    368.             format(menuBody[len], charsmax(menuBody), "^n0. %L", id, "CANC_VOTE")
    369.             keys |= MENU_KEY_0
    370.             show_menu(id, keys, menuBody, iVoteTime, menuName)
    371.  
    372.             new authid[32], name[MAX_NAME_LENGTH]
    373.            
    374.             get_user_authid(id, authid, charsmax(authid))
    375.             get_user_name(id, name, charsmax(name))
    376.  
    377.             show_activity_key("ADMIN_V_MAP_1", "ADMIN_V_MAP_2", name);
    378.  
    379.             new tempMapA[32];
    380.             new tempMapB[32];
    381.             new tempMapC[32];
    382.             new tempMapD[32];
    383.             if (g_voteSelectedNum[id] > 0)
    384.             {
    385.                 ArrayGetString(g_mapName, g_voteSelected[id][0], tempMapA, charsmax(tempMapA));
    386.             }
    387.             else
    388.             {
    389.                 copy(tempMapA, charsmax(tempMapA), "");
    390.             }
    391.             if (g_voteSelectedNum[id] > 1)
    392.             {
    393.                 ArrayGetString(g_mapName, g_voteSelected[id][1], tempMapB, charsmax(tempMapB));
    394.             }
    395.             else
    396.             {
    397.                 copy(tempMapB, charsmax(tempMapB), "");
    398.             }
    399.             if (g_voteSelectedNum[id] > 2)
    400.             {
    401.                 ArrayGetString(g_mapName, g_voteSelected[id][2], tempMapC, charsmax(tempMapC));
    402.             }
    403.             else
    404.             {
    405.                 copy(tempMapC, charsmax(tempMapC), "");
    406.             }
    407.             if (g_voteSelectedNum[id] > 3)
    408.             {
    409.                 ArrayGetString(g_mapName, g_voteSelected[id][3], tempMapD, charsmax(tempMapD));
    410.             }
    411.             else
    412.             {
    413.                 copy(tempMapD, charsmax(tempMapD), "");
    414.             }
    415.            
    416.             log_amx("Vote: ^"%s<%d><%s><>^" vote maps (map#1 ^"%s^") (map#2 ^"%s^") (map#3 ^"%s^") (map#4 ^"%s^")",
    417.                     name, get_user_userid(id), authid,
    418.                     tempMapA, tempMapB, tempMapC, tempMapD)
    419.         }
    420.         case 8: displayVoteMapsMenu(id, ++g_menuPosition[id])
    421.         case 9: displayVoteMapsMenu(id, --g_menuPosition[id])
    422.         default:
    423.         {
    424.             g_voteSelected[id][g_voteSelectedNum[id]++] = g_menuPosition[id] * 7 + key
    425.             displayVoteMapsMenu(id, g_menuPosition[id])
    426.         }
    427.     }
    428.  
    429.     return PLUGIN_HANDLED
    430. }
    431.  
    432. public actionMapsMenu(id, key)
    433. {
    434.     switch (key)
    435.     {
    436.         case 8: displayMapsMenu(id, ++g_menuPosition[id])
    437.         case 9: displayMapsMenu(id, --g_menuPosition[id])
    438.         default:
    439.         {
    440.             new a = g_menuPosition[id] * 8 + key
    441.             new _modName[10]
    442.  
    443.             get_modname(_modName, charsmax(_modName))
    444.             if (!equal(_modName, "zp"))
    445.             {
    446.                 message_begin(MSG_ALL, SVC_INTERMISSION)
    447.                 message_end()
    448.             }
    449.            
    450.             new authid[32], name[MAX_NAME_LENGTH]
    451.            
    452.             get_user_authid(id, authid, charsmax(authid))
    453.             get_user_name(id, name, charsmax(name))
    454.  
    455.             new tempMap[32];
    456.             ArrayGetString(g_mapName, a, tempMap, charsmax(tempMap));
    457.            
    458.             show_activity_key("ADMIN_CHANGEL_1", "ADMIN_CHANGEL_2", name, tempMap);
    459.  
    460.             log_amx("Cmd: ^"%s<%d><%s><>^" changelevel ^"%s^"", name, get_user_userid(id), authid, tempMap)
    461.             set_task(2.0, "delayedChange", 0, tempMap, strlen(tempMap) + 1)
    462.             /* displayMapsMenu(id, g_menuPosition[id]) */
    463.         }
    464.     }
    465.    
    466.     return PLUGIN_HANDLED
    467. }
    468.  
    469. displayMapsMenu(id, pos)
    470. {
    471.     if (pos < 0)
    472.         return
    473.  
    474.     new menuBody[512]
    475.     new tempMap[32]
    476.     new start = pos * 8
    477.     new b = 0
    478.  
    479.     if (start >= g_mapNums)
    480.         start = pos = g_menuPosition[id] = 0
    481.  
    482.     new len = format(menuBody, charsmax(menuBody), g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "CHANGLE_MENU", pos + 1, (g_mapNums / 8 + ((g_mapNums % 8) ? 1 : 0)))
    483.     new end = start + 8
    484.     new keys = MENU_KEY_0
    485.  
    486.     if (end > g_mapNums)
    487.         end = g_mapNums
    488.  
    489.     for (new a = start; a < end; ++a)
    490.     {
    491.         keys |= (1<<b)
    492.         ArrayGetString(g_mapName, a, tempMap, charsmax(tempMap));
    493.         len += format(menuBody[len], charsmax(menuBody) - len, "%d. %s^n", ++b, tempMap)
    494.     }
    495.  
    496.     if (end != g_mapNums)
    497.     {
    498.         format(menuBody[len], charsmax(menuBody) - len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
    499.         keys |= MENU_KEY_9
    500.     }
    501.     else
    502.         format(menuBody[len], charsmax(menuBody) - len, "^n0. %L", id, pos ? "BACK" : "EXIT")
    503.  
    504.     new menuName[64]
    505.     format(menuName, 63, "%L", "en", "CHANGLE_MENU")
    506.  
    507.     show_menu(id, keys, menuBody, -1, menuName)
    508. }
    509. stock bool:ValidMap(mapname[])
    510. {
    511.     if ( is_map_valid(mapname) )
    512.     {
    513.         return true;
    514.     }
    515.     // If the is_map_valid check failed, check the end of the string
    516.     new len = strlen(mapname) - 4;
    517.    
    518.     // The mapname was too short to possibly house the .bsp extension
    519.     if (len < 0)
    520.     {
    521.         return false;
    522.     }
    523.     if ( equali(mapname[len], ".bsp") )
    524.     {
    525.         // If the ending was .bsp, then cut it off.
    526.         // the string is byref'ed, so this copies back to the loaded text.
    527.         mapname[len] = '^0';
    528.        
    529.         // recheck
    530.         if ( is_map_valid(mapname) )
    531.         {
    532.             return true;
    533.         }
    534.     }
    535.    
    536.     return false;
    537. }
    538.  
    539. load_settings(filename[])
    540. {
    541.     new fp = fopen(filename, "r");
    542.    
    543.     if (!fp)
    544.     {
    545.         return 0;
    546.     }
    547.        
    548.  
    549.     new text[256];
    550.     new tempMap[32];
    551.    
    552.     while (!feof(fp))
    553.     {
    554.         fgets(fp, text, charsmax(text));
    555.        
    556.         if (text[0] == ';')
    557.         {
    558.             continue;
    559.         }
    560.         if (parse(text, tempMap, charsmax(tempMap)) < 1)
    561.         {
    562.             continue;
    563.         }
    564.         if (!ValidMap(tempMap))
    565.         {
    566.             continue;
    567.         }
    568.        
    569.         ArrayPushString(g_mapName, tempMap);
    570.         g_mapNums++;
    571.     }
    572.  
    573.     fclose(fp);
    574.  
    575.     return 1;
    576. }
    577.  
    578. public plugin_end()
    579. {
    580.     ArrayDestroy(g_mapName)
    581. }

    Я думаю такое много кому будет полезно
     

    Вложения:

    • mapsmenu.sma
      Размер файла:
      14,2 КБ
      Просмотров:
      2
  2. d3m37r4 Пользователь

    Регистрация:
    19.07.15
    Сообщения:
    166
    Симпатии:
    46
    Пол:
    Мужской
    VKcom:
    id109544387
    Skype:
    d1mas1kw0w
    Это уже было реализовано в стандартном плагине, на другом форуме, если нужно, могу скинуть исходник.
     
  3. maFFyoZZyk Черный Жнец ^_^ Команда форума

    Регистрация:
    14.01.16
    Сообщения:
    1.233
    Симпатии:
    539
    Пол:
    Мужской
    Если автор не запрещает выкладывать исходники, то выложи сюда с ссылкой на источник
     
  4. d3m37r4 Пользователь

    Регистрация:
    19.07.15
    Сообщения:
    166
    Симпатии:
    46
    Пол:
    Мужской
    VKcom:
    id109544387
    Skype:
    d1mas1kw0w

    Вложения:

    • mapsmenu.sma
      Размер файла:
      17,3 КБ
      Просмотров:
      11
    maFFyoZZyk, mattguetta и Punisher нравится это.
  5. Punisher Пользователь

    Регистрация:
    08.02.16
    Сообщения:
    1.530
    Симпатии:
    194
    Пол:
    Мужской
    VKcom:
    wkolopunisher
    Telegram:
    punproject
    Skype:
    punproject
    Посмотрите, решил сделать так же для 1.8.3
    Правильно ли?
     

    Вложения:

    • mapsmenu.sma
      Размер файла:
      14,8 КБ
      Просмотров:
      8
  6. d3m37r4 Пользователь

    Регистрация:
    19.07.15
    Сообщения:
    166
    Симпатии:
    46
    Пол:
    Мужской
    VKcom:
    id109544387
    Skype:
    d1mas1kw0w
    Punisher, так поставьте на сервер сами, просто нет возможности плагин на 1.8.3 протестить, так бы сам проверил)
     
  7. Punisher Пользователь

    Регистрация:
    08.02.16
    Сообщения:
    1.530
    Симпатии:
    194
    Пол:
    Мужской
    VKcom:
    wkolopunisher
    Telegram:
    punproject
    Skype:
    punproject
    d3m37r4, У меня хуже ситуация) На локалке проверю потом)
     
  8. maFFyoZZyk Черный Жнец ^_^ Команда форума

    Регистрация:
    14.01.16
    Сообщения:
    1.233
    Симпатии:
    539
    Пол:
    Мужской
    я вот не пойму, а в чем собственно разница?
    Разница в 3 строчках кода, в 1 - 606, в другом 609
     
  9. Punisher Пользователь

    Регистрация:
    08.02.16
    Сообщения:
    1.530
    Симпатии:
    194
    Пол:
    Мужской
    VKcom:
    wkolopunisher
    Telegram:
    punproject
    Skype:
    punproject
    maFFyoZZyk, Я лично не знаю и во избежании проблем сделал под 1.8.3.
    Разница вроде не в 3х строчках. Написано чуть иначе, не стал мешать
     
  10. Punisher Пользователь

    Регистрация:
    08.02.16
    Сообщения:
    1.530
    Симпатии:
    194
    Пол:
    Мужской
    VKcom:
    wkolopunisher
    Telegram:
    punproject
    Skype:
    punproject
    d3m37r4, Неизвестность последствий страшная штука, но оказалось все норм :)
     
    d3m37r4 нравится это.
  11. Punisher Пользователь

    Регистрация:
    08.02.16
    Сообщения:
    1.530
    Симпатии:
    194
    Пол:
    Мужской
    VKcom:
    wkolopunisher
    Telegram:
    punproject
    Skype:
    punproject
    d3m37r4, не работает...