RSSy MYGO.pl Opublikowano Lipiec 11, 2023 o 07:07 RSSy Udostępnij Opublikowano Lipiec 11, 2023 o 07:07 MultiMod Manager (Counter Strike)Introduction Hi :3, this is my first post here. I want to share with you this project that I have published for 2 years now on my personal GitHub. A project that arose from the fact of improving old multimod plugins that had few features and limitations. Now I feel more confident to share it with you, since it is in a stable version. The project is open to new ideas and suggestions to continue improving it even more. I want to thank the collaborators who have participated and those who are still participating, both in the development of ideas, in testing and debugging. Special thanks to metita who has been the one who has helped me the most in testing and debugging. Post in spanish: https://amxmodx-es.com/Thread-MultiMod-Manager--25264 (Not tested in CS:CZ)Contributorsmetita Mía Totopizza Roccoxx r0ma Maxi605 RequirementsAmxModX >= 1.9.0.5263 ReHLDS >= 3.9.0.752-dev ReGameDLL >= 5.20.0.516-dev ReAPI >= 5.19.0.217 ReSemiclip >= 2.3.9 (Optional) FeaturesConfigurations through JSON file Votemod Votemap Nominations RTV (Rock The Vote) Admin commands Recently played mods and maps Config file (JSON) (e.g) addons/amxmodx/configs/multimod_manager/configs.json Code: { "global_chat_prefix": "!g[MULTIMOD]", // !g = ^4 (Green color) // !t = ^3 (Team color) // !y = ^1 (con_color cvar) "adminflags": { "menu": "u", // menu access "managemods": "a", // immunity "selectmenu": "f", // amx_map command "forcevotemod": "f",// amx_map command "votemenu": "j" // amx_vote and other vote commands }, "rockthevote": { "enable": true, // true / false "cooldown": 120, // min = 0 (disabled) "minplayers": 3, // min = 0 (disabled) | max = 32 "percentage": 75 // min = 0 (disabled) | max = 100 }, "nomination": { "mods": true, // true / false "maps": true // true / false }, "admin_max_options_in_menu": 9, // min = 2 | max = 9 "mods_in_menu": 9, // min = 2 | max = 9 "maps_in_menu": 9, // min = 2 | max = 9 "max_recent_mods": 5, // min = 0 "max_recent_maps": 5, // min = 0 "overwrite_mapcycle": true, // true / false (overwrites the mapcycle.txt with the maps of the selected mod) "resemiclip_path": "", // Path where the add-on is located // Leave empty to disable this option ("") // If the path does not exist, it will be considered as disabled // E.g.: "addons/resemiclip" "change_game_description": true, // true / false (Changes the game description with the name of the mod) "mods": [ // The first mode will always be the default mode, it cannot be blocked { "modname": "GunGame", // Mod name. // E.g.: "GunGame" "mod_tag": "gg", // Mod tag // E.g.: "gg" "mapsfile": "gungame_maps.ini", // Only the file name along with the extension. // The file must be located in "addons/amxmodx/configs/multimod_manager/mapsfiles/" // E.g.: "gungame_maps.ini" "change_map_type": 0, // "change_map_type": 0 (The map will change at the end of the map) // "change_map_type": 1 (The map will change at the end of the round) // "change_map_type": 2 (Allows to play 1 more round and then changes the map) "cvars": [ "sv_gravity 900", "sv_alltalk 1" ], // Cvars that are executed when starting the mode, all the ones you want // Each cvar in quotes and separated by commas // E.g.: "cvars": [ "sv_gravity 900", "sv_alltalk 1", "hostname My CS Server", "mp_roundtime 6" ] // Leave "cvars": [ ] // to not load cvars "plugins": [ "plugin10.amxx", "plugin20.amxx" ], // Plugins that are needed for this mode, all the ones you want // Each plugin in quotes, separated by commas and with its corresponding extension // E.g.: "plugins": [ "gungame.amxx", "ultimate_sounds.amxx", "csstats.amxx" ] // Leave "plugins": [ ] // to not load cvars "resemiclip_config": { "semiclip": "1", "team": "3", // 0 = all | 1 = T | 2 = CT | 3 = Team "time": "0", "crouch": "0", "effects": "0", "distance": "250", "transparency": "0", "penetfire": "0" } }, { "modname":"DeathMatch", "mod_tag": "dm", "mapsfile":"deathmatch_maps.ini", "change_map_type": 1, "cvars": [ "sv_gravity 900", "sv_alltalk 1" ], "plugins": [ "plugin11.amxx", "plugin21.amxx", "plugin33.amxx", "plugin44.amxx", "plugin5.amxx" ], "resemiclip_config": { "semiclip": "1", "team": "3", "time": "0", "crouch": "0", "effects": "0", "distance": "250", "transparency": "0", "penetfire": "0" } }, { "modname":"Fruta", "mod_tag": "fr", "mapsfile":"fruta_maps.ini", "change_map_type": 1, "cvars": [ "sv_gravity 900", "sv_alltalk 1" ], "plugins": [ "plugin12.amxx", "plugin22.amxx", "plugin32.amxx", "plugin42.amxx" ], "resemiclip_config": { "semiclip": "1", "team": "3", "time": "0", "crouch": "0", "effects": "0", "distance": "250", "transparency": "0", "penetfire": "0" } }, { "modname":"Zombie Plague", "mod_tag": "zp", "mapsfile":"zp_maps.ini", "change_map_type": 1, "cvars": [ "sv_gravity 900", "sv_alltalk 1" ], "plugins": [ "plugin13.amxx", "plugin23.amxx", "plugin33.amxx", "plugin43.amxx", "plugin53.amxx", "plugin63.amxx", "plugin73.amxx" ], "resemiclip_config": { "semiclip": "1", "team": "3", "time": "0", "crouch": "0", "effects": "0", "distance": "250", "transparency": "0", "penetfire": "0" } }, { "modname":"PaintBall", "mod_tag": "pb", "mapsfile":"paintball_maps.ini", "change_map_type": 1, "cvars": [ "sv_gravity 900", "sv_alltalk 1" ], "plugins": [ "plugin14.amxx", "plugin24.amxx", "plugin34.amxx", "plugin44.amxx" ], "resemiclip_config": { "semiclip": "1", "team": "3", "time": "0", "crouch": "0", "effects": "0", "distance": "250", "transparency": "0", "penetfire": "0" } }, { "modname":"HNS", "mod_tag": "hns", "mapsfile":"hns_maps.ini", "change_map_type": 1, "cvars": [ "sv_gravity 900", "sv_alltalk 1" ], "plugins": [ "plugin15.amxx", "plugin25.amxx", "plugin35.amxx", "plugin45.amxx" ], "resemiclip_config": { "semiclip": "1", "team": "3", "time": "0", "crouch": "0", "effects": "0", "distance": "250", "transparency": "0", "penetfire": "0" } }, { "modname":"Surf", "mod_tag": "sf", "mapsfile":"surf_maps.ini", "change_map_type": 1, "cvars": [ "sv_gravity 900", "sv_alltalk 1" ], "plugins": [ "plugin15.amxx", "plugin25.amxx", "plugin35.amxx" ], "resemiclip_config": { "semiclip": "1", "team": "3", "time": "0", "crouch": "0", "effects": "0", "distance": "250", "transparency": "0", "penetfire": "0" } } ] }Say commandsrecentmods: Opens a list of recently played mods. recentmaps: Opens a list of recently played maps of the current mod. currentmod: Shows the current mod. currentmap: Shows the current map. nextmod: Shows the next voted mod. nextmap: Shows the next voted map. timeleft: Shows the remaining time or remaining rounds. Console commandsamx_multimod: Opens an admin command menu. API (natives) PHP Code: /** * Return the current mod index based on JSON position. * * @return (int) Index of the current mod. */ native mm_get_mod_id(); /** * Retrieves mod name. * * @note If the destination buffer is too small to hold the source string, the * destination will be truncated. * * @param iModId Mod index. * @param szOutput Buffer to copy mod name to. * @param iLen Buffer size. * * @return (int) -1 on error. * >= 0 Number of cells written. */ native mm_get_mod_name(const iModId, szOutput[], const iLen); /** * Retrieves mod tag. * * @note If the destination buffer is too small to hold the source string, the * destination will be truncated. * * @param iModId Mod index. * @param szOutput Buffer to copy mod tag to. * @param iLen Buffer size. * * @return (int) -1 on error. * >= 0 Number of cells written. */ native mm_get_mod_tag(const iModId, szOutput[], const iLen); /** * Return the next mod index based on JSON position if nextmod is already chosen. * * @return (int) -1 if nextmod is not chosen yet. * >= 0 Index of the next mod. */ native mm_get_nextmod_id(); /** * Retrieves next mod name. * * @note If the destination buffer is too small to hold the source string, the * destination will be truncated. * * @param szOutput Buffer to copy mod name to. * @param iLen Buffer size. * * @return (int) -1 on error. * >= 0 Number of cells written. */ native mm_get_nextmod_name(szOutput[], const iLen); /** * Force a votemod. * * @return (int) 1 on success, 0 otherwise */ native mm_force_votemod(); Compilation Download the repository to any folder, open the multimod_manager.sma file and compile from there with your favorite text editor (Sublime Text, VSCode recommended). It is not necessary to copy the .inc files to the includes folder where you have the compiler, but it is recommended if you compile from there.Repositoryhttps://github.com/FEDERICOMB96/amxx-multimod-manager Attached Files amxx-multimod-manager-main.zip (55.4 KB) Przeczytaj cały wpis Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi