Skocz do zawartości

Nowy szablon forum

mygo.pl

Stworzyliśmy dla Was nowy wygląd forum. Z pewnością znajdziesz rzeczy, które wg Ciebie mogą zostać zmienione - wspomnij o tym w specjalnym wątku.

Czytaj więcej

Jak założyć własną sieć

serwerów CS

Zastanawiasz się nad prowadzeniem własnej sieci serwerów? Przeczytaj podstawowe informacje, na które należy zwrócić uwagę, przy takim projekcie.

Czytaj więcej

Tworzymy spis sieci

dodaj swoją

Dodaj sieć do której należysz, pozwoli to na promocję i budowę ogólnopolskiej bazy sieci CS.

Czytaj więcej

Cała aktywność

Kanał aktualizowany automatycznie

  1. Dzisiaj
  2. I would also like in that plugin for the votemap commands and all of others to be usable with "/" Code: Code: // vim: set ts=4 sw=4 tw=99 noet: // // AMX Mod X, based on AMX Mod by Aleksander Naszko ("OLO"). // Copyright (C) The AMX Mod X Development Team. // // This software is licensed under the GNU General Public License, version 3 or higher. // Additional exceptions apply. For full license details, see LICENSE.txt or visit: // https://alliedmods.net/amxmodx-license // // Admin Votes Plugin // #include <amxmodx> #include <amxmisc> new g_Answer[128] new g_optionName[4][64] new g_voteCount[4] new g_validMaps new g_yesNoVote new g_coloredMenus new g_voteCaller new g_Execute[256] new g_execLen new bool:g_execResult new Float:g_voteRatio public plugin_init() { register_plugin("Admin Votes", AMXX_VERSION_STR, "AMXX Dev Team") register_dictionary("adminvote.txt") register_dictionary("common.txt") register_dictionary("mapsmenu.txt") register_menucmd(register_menuid("Change map to "), MENU_KEY_1|MENU_KEY_2, "voteCount") register_menucmd(register_menuid("Choose map: "), MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4, "voteCount") register_menucmd(register_menuid("Kick "), MENU_KEY_1|MENU_KEY_2, "voteCount") register_menucmd(register_menuid("Ban "), MENU_KEY_1|MENU_KEY_2, "voteCount") register_menucmd(register_menuid("Vote: "), MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4, "voteCount") register_menucmd(register_menuid("The result: "), MENU_KEY_1|MENU_KEY_2, "actionResult") register_concmd("amx_votemap", "cmdVoteMap", ADMIN_KICK, "<map> [map] [map] [map]") register_concmd("amx_votekick", "cmdVoteKickBan", ADMIN_KICK, "<name or #userid>") register_concmd("amx_voteban", "cmdVoteKickBan", ADMIN_BAN, "<name or #userid>") register_concmd("amx_vote", "cmdVote", ADMIN_KICK, "<question> <answer#1> <answer#2>") register_concmd("amx_cancelvote", "cmdCancelVote", ADMIN_KICK, "- cancels last vote") register_clcmd("say /votemap", "cmdVoteMap", ADMIN_KICK) g_coloredMenus = colored_menus() } public cmdCancelVote(id, level, cid) { if (!cmd_access(id, level, cid, 0)) return PLUGIN_HANDLED if (task_exists(99889988, 1)) { new authid[32], name[MAX_NAME_LENGTH] get_user_authid(id, authid, charsmax(authid)) get_user_name(id, name, charsmax(name)) log_amx("Vote: ^"%s<%d><%s><>^" cancel vote session", name, get_user_userid(id), authid) new msg[256]; for (new i = 1; i <= MaxClients; i++) { if (is_user_connected(i) && !is_user_bot(i)) { // HACK: ADMIN_CANC_VOTE_{1,2} keys were designed very poorly. Remove all : and %s in it. LookupLangKey(msg, charsmax(msg), "ADMIN_CANC_VOTE_1", i); replace_all(msg, charsmax(msg), "%s", ""); replace_all(msg, charsmax(msg), ":", ""); trim(msg); show_activity_id(i, id, name, msg); } } console_print(id, "%L", id, "VOTING_CANC") client_print(0,print_chat,"%L",LANG_PLAYER,"VOTING_CANC") remove_task(99889988, 1) set_cvar_float("amx_last_voting", get_gametime()) } else console_print(id, "%L", id, "NO_VOTE_CANC") return PLUGIN_HANDLED } public delayedExec(cmd[]) server_cmd("%s", cmd) public autoRefuse() { log_amx("Vote: %L", "en", "RES_REF") client_print(0, print_chat, "%L", LANG_PLAYER, "RES_REF") } public actionResult(id, key) { remove_task(4545454) switch (key) { case 0: { set_task(2.0, "delayedExec", 0, g_Execute, g_execLen) log_amx("Vote: %L", "en", "RES_ACCEPTED") client_print(0, print_chat, "%L", LANG_PLAYER, "RES_ACCEPTED") } case 1: autoRefuse() } return PLUGIN_HANDLED } public checkVotes() { new best = 0 if (!g_yesNoVote) { for (new a = 0; a < 4; ++a) if (g_voteCount[a] > g_voteCount[best]) best = a } new votesNum = g_voteCount[0] + g_voteCount[1] + g_voteCount[2] + g_voteCount[3] new iRatio = votesNum ? floatround(g_voteRatio * float(votesNum), floatround_ceil) : 1 new iResult = g_voteCount[best] new players[MAX_PLAYERS], pnum, i get_players(players, pnum, "c") if (iResult < iRatio) { new lVotingFailed[64] for (i = 0; i < pnum; i++) { format(lVotingFailed, 63, "%L", players[i], "VOTING_FAILED") if (g_yesNoVote) client_print(players[i], print_chat, "%L", players[i], "VOTING_RES_1", lVotingFailed, g_voteCount[0], g_voteCount[1], iRatio) else client_print(players[i], print_chat, "%L", players[i], "VOTING_RES_2", lVotingFailed, iResult, iRatio) } format(lVotingFailed, 63, "%L", "en", "VOTING_FAILED") log_amx("Vote: %s (got ^"%d^") (needed ^"%d^")", lVotingFailed, iResult, iRatio) return PLUGIN_CONTINUE } g_execLen = format(g_Execute, charsmax(g_Execute), g_Answer, g_optionName[best]) + 1 if (g_execResult) { g_execResult = false if (is_user_connected(g_voteCaller)) { new menuBody[512], lTheResult[32], lYes[16], lNo[16] format(lTheResult, charsmax(lTheResult), "%L", g_voteCaller, "THE_RESULT") format(lYes, charsmax(lYes), "%L", g_voteCaller, "YES") format(lNo, charsmax(lNo), "%L", g_voteCaller, "NO") new len = format(menuBody, charsmax(menuBody), g_coloredMenus ? "\y%s: \w%s^n^n" : "%s: %s^n^n", lTheResult, g_Execute) len += format(menuBody[len], charsmax(menuBody) - len, g_coloredMenus ? "\y%L^n\w" : "%L^n", g_voteCaller, "WANT_CONTINUE") format(menuBody[len], charsmax(menuBody) - len, "^n1. %s^n2. %s", lYes, lNo) show_menu(g_voteCaller, 0x03, menuBody, 10, "The result: ") set_task(10.0, "autoRefuse", 4545454) } else set_task(2.0, "delayedExec", 0, g_Execute, g_execLen) } new lVotingSuccess[32] for (i = 0; i < pnum; i++) { format(lVotingSuccess, charsmax(lVotingSuccess), "%L", players[i], "VOTING_SUCCESS") client_print(players[i], print_chat, "%L", players[i], "VOTING_RES_3", lVotingSuccess, iResult, iRatio, g_Execute) } format(lVotingSuccess, charsmax(lVotingSuccess), "%L", "en", "VOTING_SUCCESS") log_amx("Vote: %s (got ^"%d^") (needed ^"%d^") (result ^"%s^")", lVotingSuccess, iResult, iRatio, g_Execute) return PLUGIN_CONTINUE } public voteCount(id, key) { if (get_cvar_num("amx_vote_answers")) { new name[MAX_NAME_LENGTH] get_user_name(id, name, charsmax(name)) if (g_yesNoVote) client_print(0, print_chat, "%L", LANG_PLAYER, key ? "VOTED_AGAINST" : "VOTED_FOR", name) else client_print(0, print_chat, "%L", LANG_PLAYER, "VOTED_FOR_OPT", name, key + 1) } ++g_voteCount[key] return PLUGIN_HANDLED } public cmdVoteMap(id, level, cid) { if (!cmd_access(id, level, cid, 2)) return PLUGIN_HANDLED new Float:voting = get_cvar_float("amx_last_voting") if (voting > get_gametime()) { console_print(id, "%L", id, "ALREADY_VOTING") return PLUGIN_HANDLED } if (voting && voting + get_cvar_float("amx_vote_delay") > get_gametime()) { console_print(id, "%L", id, "VOTING_NOT_ALLOW") return PLUGIN_HANDLED } new argc = read_argc() if (argc > 5) argc = 5 g_validMaps = 0 g_optionName[0][0] = 0 g_optionName[1][0] = 0 g_optionName[2][0] = 0 g_optionName[3][0] = 0 for (new i = 1; i < argc; ++i) { read_argv(i, g_optionName[g_validMaps], 31) if (is_map_valid(g_optionName[g_validMaps])) g_validMaps++ } if (g_validMaps == 0) { new lMaps[16] format(lMaps, charsmax(lMaps), "%L", id, (argc == 2) ? "MAP_IS" : "MAPS_ARE") console_print(id, "%L", id, "GIVEN_NOT_VALID", lMaps) return PLUGIN_HANDLED } new menu_msg[256], len = 0 new keys = 0 if (g_validMaps > 1) { keys = MENU_KEY_0 len = format(menu_msg, charsmax(menu_msg), g_coloredMenus ? "\y%L: \w^n^n" : "%L: ^n^n", LANG_SERVER, "CHOOSE_MAP") new temp[128] for (new a = 0; a < g_validMaps; ++a) { format(temp, charsmax(temp), "%d. %s^n", a+1, g_optionName[a]) len += copy(menu_msg[len], charsmax(menu_msg) - len, temp) keys |= (1<<a) } format(menu_msg[len], charsmax(menu_msg) - len, "^n0. %L", LANG_SERVER, "NONE") g_yesNoVote = 0 } else { new lChangeMap[32], lYes[16], lNo[16] format(lChangeMap, charsmax(lChangeMap), "%L", LANG_SERVER, "CHANGE_MAP_TO") format(lYes, charsmax(lYes), "%L", LANG_SERVER, "YES") format(lNo, charsmax(lNo), "%L", LANG_SERVER, "NO") format(menu_msg, charsmax(menu_msg), g_coloredMenus ? "\y%s %s?\w^n^n1. %s^n2. %s" : "%s %s?^n^n1. %s^n2. %s", lChangeMap, g_optionName[0], lYes, lNo) keys = MENU_KEY_1|MENU_KEY_2 g_yesNoVote = 1 } new authid[32], name[MAX_NAME_LENGTH] get_user_authid(id, authid, charsmax(authid)) get_user_name(id, name, charsmax(name)) if (argc == 2) log_amx("Vote: ^"%s<%d><%s><>^" vote map (map ^"%s^")", name, get_user_userid(id), authid, g_optionName[0]) else log_amx("Vote: ^"%s<%d><%s><>^" vote maps (map#1 ^"%s^") (map#2 ^"%s^") (map#3 ^"%s^") (map#4 ^"%s^")", name, get_user_userid(id), authid, g_optionName[0], g_optionName[1], g_optionName[2], g_optionName[3]) new msg[256]; for (new i = 1; i <= MaxClients; i++) { if (is_user_connected(i) && !is_user_bot(i)) { // HACK: ADMIN_VOTE_MAP_{1,2} keys were designed very poorly. Remove all : and %s in it. LookupLangKey(msg, charsmax(msg), "ADMIN_VOTE_MAP_1", i); replace_all(msg, charsmax(msg), "%s", ""); replace_all(msg, charsmax(msg), ":", ""); trim(msg); show_activity_id(i, id, name, msg); } } g_execResult = true new Float:vote_time = get_cvar_float("amx_vote_time") + 2.0 set_cvar_float("amx_last_voting", get_gametime() + vote_time) g_voteRatio = get_cvar_float("amx_votemap_ratio") g_Answer = "changelevel %s" show_menu(0, keys, menu_msg, floatround(vote_time), (g_validMaps > 1) ? "Choose map: " : "Change map to ") set_task(vote_time, "checkVotes", 99889988) g_voteCaller = id console_print(id, "%L", id, "VOTING_STARTED") g_voteCount = {0, 0, 0, 0} return PLUGIN_HANDLED } public cmdVote(id, level, cid) { if (!cmd_access(id, level, cid, 4)) return PLUGIN_HANDLED new Float:voting = get_cvar_float("amx_last_voting") if (voting > get_gametime()) { console_print(id, "%L", id, "ALREADY_VOTING") return PLUGIN_HANDLED } if (voting && voting + get_cvar_float("amx_vote_delay") > get_gametime()) { console_print(id, "%L", id, "VOTING_NOT_ALLOW") return PLUGIN_HANDLED } new quest[48] read_argv(1, quest, charsmax(quest)) trim(quest); if (containi(quest, "sv_password") != -1 || containi(quest, "rcon_password") != -1) { console_print(id, "%L", id, "VOTING_FORBIDDEN") return PLUGIN_HANDLED } new count=read_argc(); for (new i=0;i<4 && (i+2)<count;i++) { read_argv(i+2, g_optionName[i], charsmax(g_optionName[])); } new authid[32], name[MAX_NAME_LENGTH] get_user_authid(id, authid, charsmax(authid)) get_user_name(id, name, charsmax(name)) log_amx("Vote: ^"%s<%d><%s><>^" vote custom (question ^"%s^") (option#1 ^"%s^") (option#2 ^"%s^")", name, get_user_userid(id), authid, quest, g_optionName[0], g_optionName[1]) new msg[256]; for (new i = 1; i <= MaxClients; i++) { if (is_user_connected(i) && !is_user_bot(i)) { // HACK: ADMIN_VOTE_CUS_{1,2} keys were designed very poorly. Remove all : and %s in it. LookupLangKey(msg, charsmax(msg), "ADMIN_VOTE_CUS_1", i); replace_all(msg, charsmax(msg), "%s", ""); replace_all(msg, charsmax(msg), ":", ""); trim(msg); show_activity_id(i, id, name, msg); } } new menu_msg[512], lVote[16] format(lVote, charsmax(lVote), "%L", LANG_SERVER, "VOTE") count-=2; if (count>4) { count=4; } // count now shows how many options were listed new keys=0; for (new i=0;i<count;i++) { keys |= (1<<i); } new len=formatex(menu_msg, charsmax(menu_msg), g_coloredMenus ? "\y%s: %s\w^n^n" : "%s: %s^n^n", lVote, quest); for (new i=0;i<count;i++) { len+=formatex(menu_msg[len], charsmax(menu_msg) - len ,"%d. %s^n",i+1,g_optionName[i]); } g_execResult = false new Float:vote_time = get_cvar_float("amx_vote_time") + 2.0 set_cvar_float("amx_last_voting", get_gametime() + vote_time) g_voteRatio = get_cvar_float("amx_vote_ratio") replace_all(quest, charsmax(quest), "%", ""); format(g_Answer, charsmax(g_Answer), "%s - ^"%%s^"", quest) show_menu(0, keys, menu_msg, floatround(vote_time), "Vote: ") set_task(vote_time, "checkVotes", 99889988) g_voteCaller = id console_print(id, "%L", id, "VOTING_STARTED") g_voteCount = {0, 0, 0, 0} g_yesNoVote = 0 return PLUGIN_HANDLED } public cmdVoteKickBan(id, level, cid) { if (!cmd_access(id, level, cid, 2)) return PLUGIN_HANDLED new Float:voting = get_cvar_float("amx_last_voting") if (voting > get_gametime()) { console_print(id, "%L", id, "ALREADY_VOTING") return PLUGIN_HANDLED } if (voting && voting + get_cvar_float("amx_vote_delay") > get_gametime()) { console_print(id, "%L", id, "VOTING_NOT_ALLOW") return PLUGIN_HANDLED } new cmd[32] read_argv(0, cmd, charsmax(cmd)) new voteban = equal(cmd, "amx_voteban") new arg[32] read_argv(1, arg, charsmax(arg)) new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF) if (!player) return PLUGIN_HANDLED if (voteban && is_user_bot(player)) { new imname[MAX_NAME_LENGTH] get_user_name(player, imname, charsmax(imname)) console_print(id, "%L", id, "ACTION_PERFORMED", imname) return PLUGIN_HANDLED } new keys = MENU_KEY_1|MENU_KEY_2 new menu_msg[256], lYes[16], lNo[16], lKickBan[16] format(lYes, charsmax(lYes), "%L", LANG_SERVER, "YES") format(lNo, charsmax(lNo), "%L", LANG_SERVER, "NO") format(lKickBan, charsmax(lKickBan), "%L", LANG_SERVER, voteban ? "BAN" : "KICK") ucfirst(lKickBan) get_user_name(player, arg, charsmax(arg)) format(menu_msg, charsmax(menu_msg), g_coloredMenus ? "\y%s %s?\w^n^n1. %s^n2. %s" : "%s %s?^n^n1. %s^n2. %s", lKickBan, arg, lYes, lNo) g_yesNoVote = 1 new bool:ipban=false; if (voteban) { get_user_authid(player, g_optionName[0], charsmax(g_optionName[])); // Do the same check that's in plmenu to determine if this should be an IP ban instead if (equal("4294967295", g_optionName[0]) || equal("HLTV", g_optionName[0]) || equal("STEAM_ID_LAN", g_optionName[0]) || equali("VALVE_ID_LAN", g_optionName[0])) { get_user_ip(player, g_optionName[0], charsmax(g_optionName[]), 1); ipban=true; } } else { num_to_str(get_user_userid(player), g_optionName[0], charsmax(g_optionName[])) } new authid[32], name[MAX_NAME_LENGTH] get_user_authid(id, authid, charsmax(authid)) get_user_name(id, name, charsmax(name)) log_amx("Vote: ^"%s<%d><%s><>^" vote %s (target ^"%s^")", name, get_user_userid(id), authid, voteban ? "ban" : "kick", arg) new msg[256]; new right[256]; new dummy[1]; for (new i = 1; i <= MaxClients; i++) { if (is_user_connected(i) && !is_user_bot(i)) { formatex(lKickBan, charsmax(lKickBan), "%L", i, voteban ? "BAN" : "KICK"); // HACK: ADMIN_VOTE_FOR{1,2} keys are really weird. Tokenize and ignore the text before the : LookupLangKey(msg, charsmax(msg), "ADMIN_VOTE_FOR_1", i); strtok(msg, dummy, 0, right, charsmax(right), ':'); trim(right); show_activity_id(i, id, name, right, lKickBan, arg); } } g_execResult = true new Float:vote_time = get_cvar_float("amx_vote_time") + 2.0 set_cvar_float("amx_last_voting", get_gametime() + vote_time) g_voteRatio = get_cvar_float(voteban ? "amx_voteban_ratio" : "amx_votekick_ratio") if (voteban) { if (ipban==true) { g_Answer = "addip 30.0 %s"; } else { g_Answer = "banid 30.0 %s kick"; } } else { g_Answer = "kick #%s"; } show_menu(0, keys, menu_msg, floatround(vote_time), voteban ? "Ban " : "Kick ") set_task(vote_time, "checkVotes", 99889988) g_voteCaller = id console_print(id, "%L", id, "VOTING_STARTED") g_voteCount = {0, 0, 0, 0} return PLUGIN_HANDLED } Przeczytaj cały wpis
  3. A plugin for Setting a Client's Team, this was mainly made so admins can either force bots onto a specific team or choose a team for someone. In this plugin you can only specify all the way up to TeamNum 5 which is the max for Open Fortress and might be about the same for Team Fortress 2 Classic. This is another command invoking plugin that uses ent_fire as the base to set a target's team which means sv_cheats must be enabled and that person must have the rights to use ent_fire in the first place. Some of the code was largely based off of the plugin cexec, which i had originally made this idea into a small plugin that when combined with cexec would allow the admin to change the team of a client, but now you can do it all in one here! Cvars: sm_setteam <CLIENT> <TEAMNUMBER> Attached Files Setteam.smx (4.7 KB) Get Plugin or Get Source (Setteam.sp - 1.9 KB) Wyświetl pełny artykuł
  4. A plugin that was made for admins to put the addcond conditions onto specified clients when sv_cheats 1 is enabled, you'd typically need to combine sv_cheats with some form of anti cheat command plugin that makes sv_cheats relatively useless for non-admin clients. So have fun applying conditions to your players! Keep in mind that this plugin can only invoke the addcond command and doesn't use it's own custom condtion functions to make conditions apply to players, as that would be too complicated so instead we use addcond as the base and apply the command to the specified target! Btw this was also mainly centered around TF2 and it's sourcemod's so feel free to use this plugin on those games aswell! Cvars: sm_addcond <Client> <Condition Number> Attached Files AddcondPlugin.smx (4.7 KB) Get Plugin or Get Source (AddcondPlugin.sp - 2.2 KB) Wyświetl pełny artykuł
  5. Wczoraj
  6. This is a simple plugin who add the country of the player in the chat when he join the game. Ex: Ranily has joined the game from germany No CVAR command for now, and work in english only, but new update can come soon ! This plugins doesn't need anything, just put the .smx on the /addons/sourcemod/plugins folder and that's it ! Source Code Attached Files Get Plugin or Get Source (Country_Message.sp - 727 Bytes) Wyświetl pełny artykuł
  7. Prosze o usuniecie mojej wiadomosci @Siwy | KILL4U.PL
  8. hello im currently making a cz tour of duty that adds cut content of condition zero im currently finding a m60 plugin i kept searching but the other doesnt work if anyone knows a m60 plugin please help Przeczytaj cały wpis
  9. This is a simple plugin who add the country of the player in the chat when he join the game. Ex: Ranily has joined the game from germany This plugins doesn't need anything, just put the .smx on the /addons/sourcemod/plugins folder and that's it ! Source Code Attached Files Get Plugin or Get Source (Country_Message.sp - 727 Bytes) Przeczytaj cały wpis
  10. Ostatni tydzień
  11. MYGO.pl

    RSSWelcome

    Hi Iv been looking for a plugin cs1.6 or somehow to welcome every player that joins the server with a welcome ie welcome "new player name " to "server name" This message too come up in the chat messages area bottom left with all the other messages, a colour choice would be good also. I sure its out there but I cant find it or anything like it, hopefully someone out there does know. Thanks Przeczytaj cały wpis
  12. https://dev-cs.ru/resources/494/ I saw it from this website Because I couldn’t find any relevant content here (or I didn’t see it myself) Players will throw C4 randomly or in places where it cannot be picked up. Attached Files Get Plugin or Get Source (c4_drop_0_7.sma - 2.0 KB) Przeczytaj cały wpis
  13. Descriptionsince the compatibility of my restart empty server plugin is not perfect, I deviced to provide this plugin. It can load custom commands on server empty. Cvars PHP Code: load_command_on_empty_path "data/load_command_on_empty.txt" Change log Spoiler Code: 1.0 (2024-04-30: -init public release. Configs installationcreate a file named "load_command_on_empty.txt" at "sourcemod/data/", put commands into each line of the file. if you changed the "path" cvar, you have to change the file name or path too! Attached Files Get Plugin or Get Source (load_command_on_empty.sp - 2.1 KB) Wyświetl pełny artykuł
  14. I decided after a while of toying around the internet trying to find ways to put a calculator into my favorite source engine game, i came up with this handy tool to solve all your basic math problems! Since i couldn't find anything on the internet about a sourcemod calculator plugin i decided to make this for the community to play with! This was made purely for fun but i wanted to share it with you all! What plugin can do: - Calculate Addition ( + ) - Calculate Subtraction ( - ) - Calculate Multiplication ( * ) - Calculate Division ( / ) However the division portion may be finnicky because machines usually dont get division correct... Cvars: sm_calc (<NUMBER> [+,-,*,/] <LAST NUMBER> ) Attached Files sm_calc.smx (4.6 KB) Get Plugin or Get Source (sm_calc.sp - 1.6 KB) Wyświetl pełny artykuł
  15. This is a plugin designed to allow admins to effectively ban or unban a user by their STEAM_ID, this plugin also comes with a built in feature for grabbing the STEAM_ID of a client that is ready to be banned from the server and the plugin automatically intercepts the STEAM_ID as it is connect and essentially bans them from the server on that one account This plugin logs the STEAM_ID's to a configuration file called bannedplayers.ini in your configs folder this is where the plugin stores all available STEAM_ID's of banned users and saves them until unbanned to which the ID's will be promptly removed allowing the user to play the server again. Attached Files sm_banbysteamid.smx (6.7 KB) Get Plugin or Get Source (sm_banbysteamid.sp - 5.2 KB) Wyświetl pełny artykuł
  16. Sprawdz - > https://github.com/sapsanDev/CS2--DemoRecoder
  17. Descriptionreplacement for Change Map On Empty and Auto Enable/Disable "sb_all_bot_game". knowns work for linux. Current Tested Support Game:L4D2 Cvars PHP Code: restart_server_on_empty_enable "1" restart_server_on_empty_log "1" CreditsDragokas - for the original plugin Restart Empty Server (or Map) Change log Spoiler Code: 1.2 (2024-04-29: -prevent unload crash report extenstion by "exit/quit". 1.1 (2024-04-29: -add response for failed to exec "crash" command. 1.0 (2024-04-29: -init public release. Attached Files Get Plugin or Get Source (restart_server_on_empty.sp - 3.3 KB) Wyświetl pełny artykuł
  18. I'm using this plugin, when there are only 2 players left, you can challenge your opponent to a knife duel by hitting the wall with the knife 3 times. There is one bug though. If someone challenges you and you don't accept or refuse and let the menu open until next round, you can accept the challenge then and everyone is forced into the duel and get stripped of their weapons. How can I fix that? I've tried closing the menu automatically when a new round starts, but nothing seems to work. PHP Code: #include <amxmodx> #include <fakemeta> #include <hamsandwich> #define PLUGIN "CS Revo: Knife Duel" #define VERSION "1.0" #define AUTHOR "Alka | Wilian M." #define CBASE_CURRWPN_ENT 373 #define OFFSET_ENT_TO_INDEX 43 #define PREFIX_CHAT "^4[ ^1CS Revo! ^4]" new const g_szKnifeSound[] = "weapons/knife_hitwall1.wav"; new const g_szSpawnClassname[] = "info_player_deathmatch"; new Float:g_fHit[33]; new iHitCount[33]; new g_iChallenged, g_iChallenger; new Float:g_vKnifeOrigin[2][3]; new bool:g_bInChallenge; new bool:g_bProtect; new g_iTimer; enum _:max_cvars { CVAR_COUNT = 0, CVAR_TIMER, CVAR_MAXDISTANCE, CVAR_PROTECTION, CVAR_ANNOUNCE, CVAR_RESET }; new g_Pcvar[max_cvars]; new g_iFwdSpawn; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); register_forward(FM_EmitSound, "fwd_EmitSound", 1); register_forward(FM_PlayerPreThink, "fwd_PlayerPreThink_post", 1); RegisterHam(Ham_Killed, "player", "fwd_Killed", 1); unregister_forward(FM_Spawn, g_iFwdSpawn, 1); register_logevent("logevent_RoundEnd", 2, "1=Round_End", "1=Round_Draw"); g_Pcvar[CVAR_COUNT] = register_cvar("kd_knifecount", "3"); g_Pcvar[CVAR_TIMER] = register_cvar("kd_preparetime", "10"); g_iTimer = get_pcvar_num(g_Pcvar[CVAR_TIMER]); g_Pcvar[CVAR_PROTECTION] = register_cvar("kd_protection", "1"); g_Pcvar[CVAR_MAXDISTANCE] = register_cvar("kd_maxdistance", "600"); g_Pcvar[CVAR_ANNOUNCE] = register_cvar("kd_announce", "1"); g_Pcvar[CVAR_RESET] = register_cvar("kd_resethp", "1") } public plugin_precache() g_iFwdSpawn = register_forward(FM_Spawn, "fwd_Spawn", 1); public client_disconnected(id) { if((id == g_iChallenged) || (id == g_iChallenger)) { g_bInChallenge = false; g_bProtect = false; } } public fwd_Spawn(ent) { if(!pev_valid(ent)) return FMRES_IGNORED; static szClassname[32]; pev(ent, pev_classname, szClassname, sizeof szClassname - 1); if(equal(szClassname, g_szSpawnClassname)) { if(vec_null(g_vKnifeOrigin[0])) { pev(ent, pev_origin, g_vKnifeOrigin[0]); } else if(!vec_null(g_vKnifeOrigin[0]) && vec_null(g_vKnifeOrigin[1])) { static Float:vTmp[3]; pev(ent, pev_origin, vTmp); if((300.0 <= vector_distance(g_vKnifeOrigin[0], vTmp) < 600.0)) g_vKnifeOrigin[1] = vTmp; } } return FMRES_IGNORED; } public fwd_EmitSound(id, channel, const sound[]) { if(!is_user_alive(id)) return FMRES_IGNORED; if(!equal(sound, g_szKnifeSound)) return FMRES_IGNORED; static Float:fGmTime; fGmTime = get_gametime(); if((fGmTime - g_fHit[id]) >= 1.0) { iHitCount[id] = 0; g_fHit[id] = fGmTime; } ++iHitCount[id]; g_fHit[id] = fGmTime; if((iHitCount[id] >= get_pcvar_num(g_Pcvar[CVAR_COUNT])) && check_players() && !g_bInChallenge) { new iOpponent = get_opponent(3 - get_user_team(id)); if(!iOpponent) return FMRES_IGNORED; fnChallenge(id, iOpponent); iHitCount[id] = 0; } return FMRES_IGNORED; } public fwd_PlayerPreThink_post(id) { if(!is_user_alive(id) || !g_bInChallenge) return FMRES_IGNORED; static iWpn; iWpn = get_pdata_cbase(id, CBASE_CURRWPN_ENT); if(pev_valid(iWpn)) { if(get_pdata_int(iWpn, OFFSET_ENT_TO_INDEX) != CSW_KNIFE) engclient_cmd(id, "weapon_knife"); } static iOpponent; if(id == g_iChallenged) iOpponent = g_iChallenger; else iOpponent = g_iChallenged; if(!is_user_connected(iOpponent)) return FMRES_IGNORED; if((fm_get_entity_distance(id, iOpponent) >= get_pcvar_float(g_Pcvar[CVAR_MAXDISTANCE])) && g_bProtect) { static Float:vVel[3]; fm_get_speed_vector2(id, iOpponent, 100.0, vVel); set_pev(id, pev_velocity, vVel); } return FMRES_IGNORED; } public fwd_Killed(id, idattacker, shouldgib) { if(!get_pcvar_num(g_Pcvar[CVAR_ANNOUNCE])) return HAM_IGNORED; if(check_players()) { for(new i = 0 ; i <= MaxClients ; i++) { if(!is_user_alive(i)) continue; client_print_color(i, print_team_default, "%s ^3You can challenge your enemy to a knife duel hitting the wall 3 times!", PREFIX_CHAT) } } return HAM_IGNORED; } public fnChallenge(id, opponent) { new szName[32], szOppName[32]; get_user_name(id, szName, sizeof szName - 1); get_user_name(opponent, szOppName, sizeof szOppName - 1); new szTitle[64]; formatex(szTitle, sizeof szTitle - 1, "\r%s \yis challenging you to a knife duel", szName); new iMenu = menu_create(szTitle, "menu_MainHandler", 0); menu_additem(iMenu, "Accept", "1", 0, -1); menu_additem(iMenu, "No, thanks", "2", 0, -1); menu_setprop(iMenu, MPROP_EXIT, MEXIT_NEVER); menu_display(opponent, iMenu, 0); client_print_color(0, print_team_default, "%s ^4%s ^3challenged ^4%s ^3to a knife duel.", PREFIX_CHAT, szName, szOppName) g_iChallenger = id; g_iChallenged = opponent; g_bInChallenge = true; } public menu_MainHandler(id, menu, item) { if(!is_user_connected(id)) return 1; new szData[6], iAccess, iCallBack; menu_item_getinfo(menu, item, iAccess, szData, sizeof szData - 1, _, _, iCallBack); new iKey = str_to_num(szData); new szName[32]; get_user_name(id, szName, sizeof szName - 1); switch(iKey) { case 1: { client_print_color(0, print_team_default, "%s ^4%s ^3accepted the knife duel.", PREFIX_CHAT, szName) fnStartDuel(); } case 2: { client_print_color(0, print_team_default, "%s ^4%s ^3refused the knife duel.", PREFIX_CHAT, szName) g_bInChallenge = false; } } return 1; } public fnStartDuel() { if(!is_user_connected(g_iChallenged) || !is_user_connected(g_iChallenger)) return; engfunc(EngFunc_SetOrigin, g_iChallenged, g_vKnifeOrigin[0]); engfunc(EngFunc_SetOrigin, g_iChallenger, g_vKnifeOrigin[1]); fm_entity_set_aim(g_iChallenged, g_iChallenger, 0); fm_entity_set_aim(g_iChallenger, g_iChallenged, 0); fm_set_user_godmode(g_iChallenged, 1); fm_set_user_godmode(g_iChallenger, 1); if(get_pcvar_num(g_Pcvar[CVAR_RESET])) { set_pev(g_iChallenged, pev_health, 100.0); set_pev(g_iChallenger, pev_health, 100.0); } set_task(1.0, "taskDuelThink", 'x', "", 0, "b", 0); if(get_pcvar_num(g_Pcvar[CVAR_PROTECTION])) g_bProtect = true; } public taskDuelThink() { if(g_iTimer > 0) { set_hudmessage(255, 100, 0, -1.0, 0.3, 0, 6.0, 1.0, 0.1, 0.9, 1); show_hudmessage(0, "Countdown: %d", g_iTimer--); } else { set_hudmessage(255, 100, 0, -1.0, 0.3, 0, 6.0, 1.0, 0.1, 0.5, 1); show_hudmessage(0, "The duel started!"); g_iTimer = get_pcvar_num(g_Pcvar[CVAR_TIMER]); remove_task('x'); for(new i = 0 ; i <= MaxClients ; i++) { if(!is_user_alive(i)) continue; fm_set_user_godmode(i, 0); } } } public logevent_RoundEnd() { g_bInChallenge = false; g_bProtect = false; } stock fm_entity_set_aim(id, ent, bone = 0) { if(!is_user_connected(id) || !pev_valid(ent)) return 0; new Float:vOrigin[3]; pev(ent, pev_origin, vOrigin); new Float:vEntOrigin[3], Float:vAngles[3]; if(bone) engfunc(EngFunc_GetBonePosition, id, bone, vEntOrigin, vAngles); else pev(id, pev_origin, vEntOrigin); vOrigin[0] -= vEntOrigin[0]; vOrigin[1] -= vEntOrigin[1]; vOrigin[2] -= vEntOrigin[2]; new Float:v_length; v_length = vector_length(vOrigin); new Float:vAimVector[3]; vAimVector[0] = vOrigin[0] / v_length; vAimVector[1] = vOrigin[1] / v_length; vAimVector[2] = vOrigin[2] / v_length; new Float:vNewAngles[3]; vector_to_angle(vAimVector, vNewAngles); vNewAngles[0] *= -1; if(vNewAngles[1] > 180.0) vNewAngles[1] -= 360; if(vNewAngles[1] < -180.0) vNewAngles[1] += 360; if(vNewAngles[1] == 180.0 || vNewAngles[1] == -180.0) vNewAngles[1] = -179.9; set_pev(id, pev_angles, vNewAngles); set_pev(id, pev_fixangle, 1); return 1; } stock vec_null(Float:vec[3]) { if(!vec[0] && !vec[1] && !vec[2]) return 1; return 0; } stock bool:check_players() { new iNum[2]; for(new i = 1 ; i <= MaxClients ; i++) { if(!is_user_alive(i)) continue; if(get_user_team(i) == 1) ++iNum[0]; else if(get_user_team(i) == 2) ++iNum[1]; } if((iNum[0] == 1) && (iNum[1] == 1)) return true; return false; } stock get_opponent(team) { for(new i = 0 ; i <= MaxClients ; i++) { if(!is_user_alive(i)) continue; if(get_user_team(i) == team) return i; } return 0; } stock fm_set_user_godmode(index, godmode = 0) { set_pev(index, pev_takedamage, godmode == 1 ? DAMAGE_NO : DAMAGE_AIM); return 1; } stock fm_get_speed_vector2(ent1, ent2, Float:speed, Float:new_velocity[3]) { if(!pev_valid(ent1) || !pev_valid(ent2)) return 0; static Float:vOrigin1[3]; pev(ent1, pev_origin, vOrigin1); static Float:vOrigin2[3]; pev(ent2, pev_origin, vOrigin2); new_velocity[0] = vOrigin2[0] - vOrigin1[0]; new_velocity[1] = vOrigin2[1] - vOrigin1[1]; new_velocity[2] = vOrigin2[2] - vOrigin1[2]; new Float:fNum = floatsqroot(speed * speed / (new_velocity[0] * new_velocity[0] + new_velocity[1] * new_velocity[1] + new_velocity[2] * new_velocity[2])); new_velocity[0] *= fNum; new_velocity[1] *= fNum; new_velocity[2] *= fNum; return 1; } stock Float:fm_get_entity_distance(ent1, ent2) { if(!pev_valid(ent1) || !pev_valid(ent2)) return 0.0; static Float:vOrigin1[3]; pev(ent1, pev_origin, vOrigin1); static Float:vOrigin2[3]; pev(ent2, pev_origin, vOrigin2); return vector_distance(vOrigin1, vOrigin2); } Przeczytaj cały wpis
  19. Simple plugin to regen tank health with configurable delay and option to regen only player tanks. Cvars: Quote: // Time in seconds for a healing tick of 'tank MAX HP / l4d2_tank_regen_quotient' // - // Default: "0.4" l4d2_tank_regen_delay "0.4" // Wether or not tank bots should regen their hp | 0 - disabled / 1 - enabled // - // Default: "0" l4d2_tank_regen_heal_bots "0" // Multiplier to heal over tank MAX HP // - // Default: "1.0" l4d2_tank_regen_overheal_multiplier "1.0" // Amount that the MAX HP of the tank will be divided by // - // Default: "320.0" l4d2_tank_regen_quotient "320.0" Changelog: Code: 1.0 - First ReleaseRequired: Left 4 DHooks Direct Clicking 'Get Plugin' won't work, download the .smx and put it into sourcemod\plugins or download source and compile it yourself. Attached Files tankHPRegen.smx (6.6 KB) Get Plugin or Get Source (tankHPRegen.sp - 3.8 KB) Wyświetl pełny artykuł
  20. Witam, szukam skryptu do automatycznego pakowania demek do rar, oraz przesyłanie demek na moją stronę www i zezwolenie na pobierania ich przez każdego.
  21. Hello This is a grenade known mainly from the Worms game series. It works similarly to the original item from the above-mentioned game. The plugin works in Zombie Plague 4.3 and classic mode Cvars: zp_holygrenade_dmg "2500" // Holy grenade damage. Defult: 2500 zp_holygrenade_cost "20" // Price holy grenade. Default: 20 Spoiler Version: 2.1 Presentation: Attached Files Get Plugin or Get Source (holy_grenade.sma - 9.1 KB) Get Plugin or Get Source (zp_holy_grenade.sma - 9.1 KB) HolyHandGrenade2.1.zip (1,021.1 KB) Przeczytaj cały wpis
  22. Hello! I've been looking everywhere around the internet but i cannot seem to find this type of Zombie class and download it! Here are some information i know about since i see some videos about the class: -It was heavily known as the "Hunter Zombie" -(IMPORTANT) Once you were infected you were given this as a chatmessage: "Press "G" (or O) To adjust your jump height/gravity" (Now this is not 100% what it said but its really close) I've tried looking at every hunter zombie but there's like 2-3 and those do not have the option to adjust or change your jump height or gravity! If anyone could help me, i would appreciate it alot! Przeczytaj cały wpis
  23. I need help to find one plugin.The function of that plugin is to enable CT team to sabotage c4 on button E.Player has to get near the c4(when c4 is on ground,but not planted) than press and hold button E.After that sabotage,if Ts player plant c4,c4 will explode short after and wictory goes to Ct team. Przeczytaj cały wpis
  24. https://gamebanana.com/mods/39961 Przeczytaj cały wpis
  25. Mamy za chwilę początek Maja i co dalej @angel?
  26. Parameters inside each_health 1 I changed it to each_health 5 There is only 1 skill point, and 5 parts can be deducted. Skill points will become -4 How to solve it? Attached Files skills_menu.inc (6.0 KB) Get Plugin or Get Source (12Box_level.sma - 25.1 KB) Przeczytaj cały wpis
  27. Oki doki przyjacielu, akurat się sprzedaje bardzo dobrze. Więcej bumpów od wiernych fanów mile widziane 😉❤️ Lubię jak boli tam was na dole 😄
  28. Preamble If you are using one of those plugins and want to use xFix, you will need to remove them as they are included within xFix: FoV Frag Sprite Fix T-Pose Fix Shotgun Lag Compensation Fix Physcannon Fix Sprint Delay Fix Player Model FixConnect Status Per material footstep sounds Timeleft on HUD Missing Sounds Fix SteamID Hijack Protection Description xFix is a plugin that originally created by harper for XMS ( Extended Match System ) that combined multiple fixes, such as shotgun lag compensation, frag sprite and t-pose, while adding another set of large number of fixes. I have taken the liberty of taking this plugin and providing more fixes. Those fixes were progressively added throughout the months and released to a small circle of HL2DM enthusiasts, which is why its version is at 1.6.4. However, I believe that xFix needs to reach a wider audience, which is why I am releasing it here. Fixes and additionsBug fixes Sprint delay by Chanz Physcannon hold fix by Benni Frag trail fix by Sidez T-Pose fix by Toizy Force respawn bypass fix Broken spectators menu removed Removal of a pointless duplicate third person view Spectator noclip fixes 1 HP HUD fix ( hides hud while as a spectator ) Crosshair removed in free look mode as a spectator Sprinting as a spectator fix Use key spam when dead fix Schrödinger's Crouch fix Scoring fixes Server cvar spam fix Prop angles fix Missing sounds fix Crossbow bolt attach All missing physcannon sounds Whoosh sound for underhand grenade throws Player model fix ( server-side, not the player's in-game options ) Prop's gravity on sv_gravity change fix Chat fixes and enhancement Additions & Enhancements Fall damage mp_falldamage <value>-1 -> No fall damage 0 -> Default 10 point fall damage behavior 1 -> Default realistic fall damage 2 and above -> Apply this fixed amount of fall damage mp_falldamage_multiplier <value> -> When set, multiplies ( or divides if less than 1.0 ) the amount of fall damage. FoV <value> -> Sets the desired field of view between 70 and 110 ( default min and max ). Connect status -> Shows connecting, connected and disconnecting clients with better formatting. Plugin messages -> Queries for cl_showpluginsmessages whenever a player connects and sends a message if that cvar is set to 0. Per material footstep sounds Timeleft on HUD Backpack reload for SMG and AR2 -> HL2DM never had backpack reload ( automatic reloading of weapons when not actively held for 3 seconds by default ) for those two weapons. This behavior has been enabled for them now and is tied to sk_auto_reload_time. The weapon bob animation when walking cannot, sadly, be fixed. I see what the issue is in the C++ code ( thanks to https://www.youtube.com/watch?v=reVpIiCZi6Q ), but this is shared between client and server. ...and more! Available ConVars sm_show_playermodel_msg_global Def. 1 -> Show or hide the message "Adjusting your player model to match your team." server-wide. sm_playermodel_fix Def. 1 -> Enable/Disable player model fix. sm_connect_status_enable Def. 1 -> Enable/Disable the new formatted connect status messages. sm_chat_fix Def. 1 -> Enable/Disable chat fixes and enhancement. sm_timeleft_hud_enable Def. 1 -> Display or hide time left on the HUD. sm_timeleft_x Def. -1.0 -> Position the timer on the X axis (left/right). sm_timeleft_y Def. 0.01 -> Position the timer on the Y axis (up/down). sm_timeleft_r Def. 255 -> Red color intensity. sm_timeleft_g Def. 220 -> Green color intensity. sm_timeleft_b Def. 0 -> Blue color intensity. sm_timeleft_i Def. 255 -> Alpha/Intensity fov_minfov Def. 70 -> Min fov to allow. fov_maxfov Def. 110 -> Max fov to allow. fov_defaultfov Def. 90 -> Default fov to apply to players the first time they connect. mp_falldamage Def. 0 -> Fall damage type. -1: No fall damage, 0: Default 10 point damage, 1: Realistic fall damage, 2 and above: Fixed fall damage to this amount. mp_falldamage_multiplier Def. 1.0 -> if mp_falldamage is set to 2 or above, adjust the actual fall damage by multiplying it by this amount (a value set to 2.0 will multiply the fall damage by 2). Use a value less than 1.0 to divide (0.5 is half the fall damamge). m_pluginmessages_check Def. 1 -> Show or hide the cl_showpluginsmessages help message. sm_missing_sounds_fix Def. 1 -> Enable/Disable missing sounds fix server-wide. sm_hl2_footsteps Def. 1 -> Enable/Disable hl2 footstep sounds server-wide. Public Commands sm_plmdl_msg -> Show or hide the message "Adjusting your player model to match your team." [Setting is saved in a cookie]. sm_fov -> Set your FOV (min. 70 & max. 110) [Setting is saved in a cookie]. sm_footsteps -> Toggle between HL2 and default footstep sounds. [Setting is saved in a cookie]. sm_sndfix -> Toggle between having the missing sounds play or not. [Setting is saved in a cookie]. xfix -> Credits listing. Installation Download and extract the content of the ZIP folder into your server's mod folder e.g. C:\hl2mp Dependencies Vphysics is required for this plugin to work properly. A copy is provided in the ZIP folder. Also includes a fixed copy of the include file. Plugin Contributors Benni - Gravity Gun prop hold fix Chanz - Sprint delay fix Grey83 - Set local angles fix Harper - Creator of xFix and fixed a myriad of HL2MP issues! Peter Brev - Additional HL2MP fixes Sidez - Grenade glow edict fix Toizy - Jesus/T-Pose animation fix V952 - Shotgun lag compensation fix Xutaxkamay - Bullet fix Attached Files xFix.zip (257.8 KB) Wyświetl pełny artykuł
  1. Pokaż więcej elementów aktywności
×
×
  • Dodaj nową pozycję...