Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sourcemod>
- #include <sdktools>
- #include <clientprefs>
- #pragma semicolon 1
- #define PLUGIN_VERSION "1.7"
- new Handle:g_cookieKnife;
- new Handle:g_hEnabled = INVALID_HANDLE;
- new Handle:g_hSpawnMessage = INVALID_HANDLE;
- new Handle:g_hSpawnMenu = INVALID_HANDLE;
- new Handle:g_hWelcomeMessage = INVALID_HANDLE;
- new Handle:g_hWelcomeMenu = INVALID_HANDLE;
- new Handle:g_hWelcomeMessageTimer = INVALID_HANDLE;
- new Handle:g_hWelcomeMenuTimer = INVALID_HANDLE;
- new Handle:g_hKnifeChosenMessage = INVALID_HANDLE;
- new Handle:g_hDonorFlag = INVALID_HANDLE;
- new knife_choice[MAXPLAYERS+1];
- public Plugin:myinfo =
- {
- name = "Knife Upgrade",
- author = "Klexen",
- description = "Choose and a save custom knife skin for this server.",
- version = PLUGIN_VERSION
- }
- public OnPluginStart()
- {
- HookEvent("player_spawn", PlayerSpawn);
- CreateConVar("sm_knifeupgrade_version", PLUGIN_VERSION, "Knife Upgrade Version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY);
- g_hEnabled = CreateConVar("sm_knifeupgrade_on", "1", "Enable / Disable Plugin", FCVAR_NONE, true, 0.0, true, 1.0);
- g_hSpawnMessage = CreateConVar("sm_knifeupgrade_spawn_message", "0", "Show Plugin Message on Spawn", FCVAR_NONE, true, 0.0, true, 1.0);
- g_hSpawnMenu = CreateConVar("sm_knifeupgrade_spawn_menu", "0", "Show Knife Menu on Spawn", FCVAR_NONE, true, 0.0, true, 1.0);
- g_hWelcomeMessage = CreateConVar("sm_knifeupgrade_welcome_message", "1", "Show Plugin Message on player connect.", FCVAR_NONE, true, 0.0, true, 1.0);
- g_hWelcomeMessageTimer = CreateConVar("sm_knifeupgrade_welcome_message_timer", "12.0", "When (in seconds) the message should be displayed after the player joins the server.", FCVAR_NONE, true, 12.0, true, 90.0);
- g_hWelcomeMenuTimer = CreateConVar("sm_knifeupgrade_welcome_menu_timer", "15.0", "When (in seconds) the knife menu should be displayed after the player joins the server.", FCVAR_NONE, true, 12.0, true, 90.0);
- g_hWelcomeMenu = CreateConVar("sm_knifeupgrade_welcome_menu", "0", "Show Knife Menu on player connect.", FCVAR_NONE, true, 0.0, true, 1.0);
- g_hKnifeChosenMessage = CreateConVar("sm_knifeupgrade_chosen_message", "1", "Show message to player when player chooses a knife.", FCVAR_NONE, true, 0.0, true, 1.0);
- g_hDonorFlag = CreateConVar("sm_knifeupgrade_donor_flag", "", "Admin flag required to use plugin. (Blank for everyone to have access)");
- g_cookieKnife = RegClientCookie("knife_choice", "", CookieAccess_Private);
- AddCommandListener(Event_Say, "say");
- AddCommandListener(Event_Say, "say_team");
- AutoExecConfig(true, "sm_knifeupgrade");
- for(new i = 1; i <= MaxClients; i++) {
- if(IsClientInGame(i) && !IsFakeClient(i) && AreClientCookiesCached(i)) {
- OnClientCookiesCached(i);
- }
- }
- }
- public OnClientCookiesCached(client)
- {
- decl String:value[12];
- GetClientCookie(client, g_cookieKnife, value, sizeof(value));
- knife_choice[client] = StringToInt(value);
- }
- public Action:Event_Say(clientIndex, const String:command[], arg)
- {
- decl String:strFlag[32];
- GetConVarString(g_hDonorFlag, strFlag, sizeof(strFlag));
- new flag = ReadFlagString(strFlag);
- if (clientIndex != 0 && GetConVarBool(g_hEnabled) && CheckCommandAccess(clientIndex, "sm_admin", flag, true) == true)
- {
- decl String:text[24];
- GetCmdArgString(text, sizeof(text));
- StripQuotes(text);
- TrimString(text);
- if (StrEqual(text, "!knife", false))
- {
- KnifeMenu(clientIndex);
- return Plugin_Handled;
- }
- else if (StrEqual(text, "!knief", false))
- {
- KnifeMenu(clientIndex);
- return Plugin_Handled;
- }
- else if (StrEqual(text, "!knifes", false))
- {
- KnifeMenu(clientIndex);
- return Plugin_Handled;
- }
- else if (StrEqual(text, "!knfie", false))
- {
- KnifeMenu(clientIndex);
- return Plugin_Handled;
- }
- else if (StrEqual(text, "!knifw", false))
- {
- KnifeMenu(clientIndex);
- return Plugin_Handled;
- }
- else if (StrEqual(text, "!knives", false))
- {
- KnifeMenu(clientIndex);
- return Plugin_Handled;
- }
- else if (StrEqual(text, "!knif", false))
- {
- KnifeMenu(clientIndex);
- return Plugin_Handled;
- }
- //Knife Shortcut Triggers
- if (StrEqual(text, "!bayonet", false))
- {
- SetBayonet(clientIndex);
- return Plugin_Handled;
- }
- if (StrEqual(text, "!gut", false))
- {
- SetGut(clientIndex);
- return Plugin_Handled;
- }
- if (StrEqual(text, "!flip", false))
- {
- SetFlip(clientIndex);
- return Plugin_Handled;
- }
- if (StrEqual(text, "!m9", false))
- {
- SetM9(clientIndex);
- return Plugin_Handled;
- }
- if (StrEqual(text, "!karambit", false))
- {
- SetKarambit(clientIndex);
- return Plugin_Handled;
- }
- if (StrEqual(text, "!huntsman", false))
- {
- SetHuntsman(clientIndex);
- return Plugin_Handled;
- }
- if (StrEqual(text, "!butterfly", false))
- {
- SetButterfly(clientIndex);
- return Plugin_Handled;
- }
- if (StrEqual(text, "!default", false))
- {
- SetDefault(clientIndex);
- return Plugin_Handled;
- }
- }
- return Plugin_Continue;
- }
- public Action:PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
- {
- new client = GetClientOfUserId(GetEventInt(event, "userid"));
- if(!IsValidClient(client, true)) return;
- CreateTimer(0.3, OnSpawn, client);
- }
- public Action:OnSpawn(Handle:timer, any:client)
- {
- Equipknife(client);
- if (GetConVarBool(g_hSpawnMessage))
- {
- PrintToChat(client, "Type \x04!knife \x01or chat triggers to select a new knife skin.");
- PrintToChat(client, "Triggers: \x07!bayonet !gut !flip !m9 !karambit !huntsman !butterfly");
- }
- if (GetConVarBool(g_hSpawnMenu)) KnifeMenu(client);
- }
- public OnClientPostAdminCheck(client)
- {
- if (GetConVarBool(g_hWelcomeMessage)) CreateTimer(GetConVarFloat(g_hWelcomeMessageTimer), Timer_Welcome, client);
- if (GetConVarBool(g_hWelcomeMenu)) CreateTimer(GetConVarFloat(g_hWelcomeMenuTimer), Timer_Welcome, client);
- }
- public Action:Timer_Welcome(Handle:timer, any:client)
- {
- if (GetConVarBool(g_hWelcomeMessage))
- {
- PrintToChat(client, "Type \x04!knife \x01or chat triggers to select a new knife skin.");
- PrintToChat(client, "Triggers: \x07!bayonet !gut !flip !m9 !karambit !huntsman !butterfly");
- }
- if (GetConVarBool(g_hWelcomeMenu)) KnifeMenu(client);
- }
- Equipknife(client)
- {
- decl String:strFlag[32];
- GetConVarString(g_hDonorFlag, strFlag, sizeof(strFlag));
- new flag = ReadFlagString(strFlag);
- if(!IsValidClient(client, true) || !GetConVarBool(g_hEnabled) || !CheckCommandAccess(client, "sm_admin", flag, true) == true) return;
- new iWeapon = GetPlayerWeaponSlot(client, 2);
- if(iWeapon != INVALID_ENT_REFERENCE)
- {
- RemovePlayerItem(client, iWeapon);
- AcceptEntityInput(iWeapon, "Kill");
- }
- new iItem;
- switch(knife_choice[client]) {
- case 1:
- {
- iItem = GivePlayerItem(client, "weapon_bayonet");
- }
- case 2:
- {
- iItem = GivePlayerItem(client, "weapon_knife_gut");
- }
- case 3:
- {
- iItem = GivePlayerItem(client, "weapon_knife_flip");
- }
- case 4:
- {
- iItem = GivePlayerItem(client, "weapon_knife_m9_bayonet");
- }
- case 5:
- {
- iItem = GivePlayerItem(client, "weapon_knife_karambit");}
- case 6:
- {
- iItem = GivePlayerItem(client, "weapon_knife_tactical");
- }
- case 7:
- {
- iItem = GivePlayerItem(client, "weapon_knife_butterfly");
- }
- case 8:
- {
- iItem = GivePlayerItem(client, "weapon_knife");
- }
- default: {return;}
- }
- if(IsValidClient(client, true) && iItem != 0) EquipPlayerWeapon(client, iItem);
- else {return;}
- }
- KnifeMenu(client)
- {
- DID(client);
- PrintToConsole(client, "Knife Menu is open");
- }
- SetBayonet(client)
- {
- knife_choice[client] = 1;
- new String:knifeValue[] = "1";
- SetClientCookie(client, g_cookieKnife, knifeValue);
- OnClientCookiesCached(client);
- Equipknife(client);
- if (GetConVarBool(g_hKnifeChosenMessage)) PrintToChat(client, " \x04 You have chosen the Bayonet!");
- }
- SetGut(client)
- {
- knife_choice[client] = 2;
- new String:knifeValue[] = "2";
- SetClientCookie(client, g_cookieKnife, knifeValue);
- OnClientCookiesCached(client);
- Equipknife(client);
- if (GetConVarBool(g_hKnifeChosenMessage)) PrintToChat(client, " \x04 You have chosen the Gut knife!");
- }
- SetFlip(client)
- {
- knife_choice[client] = 3;
- new String:knifeValue[] = "3";
- SetClientCookie(client, g_cookieKnife, knifeValue);
- OnClientCookiesCached(client);
- Equipknife(client);
- if (GetConVarBool(g_hKnifeChosenMessage)) PrintToChat(client, " \x04 You have chosen the Flip knife!");
- }
- SetM9(client)
- {
- knife_choice[client] = 4;
- new String:knifeValue[] = "4";
- SetClientCookie(client, g_cookieKnife, knifeValue);
- OnClientCookiesCached(client);
- Equipknife(client);
- if (GetConVarBool(g_hKnifeChosenMessage)) PrintToChat(client, " \x04 You have chosen the M9-Bayonet!");
- }
- SetKarambit(client)
- {
- knife_choice[client] = 5;
- new String:knifeValue[] = "5";
- SetClientCookie(client, g_cookieKnife, knifeValue);
- OnClientCookiesCached(client);
- Equipknife(client);
- if (GetConVarBool(g_hKnifeChosenMessage)) PrintToChat(client, " \x04 You have chosen the Karambit!");
- }
- SetHuntsman(client)
- {
- knife_choice[client] = 6;
- new String:knifeValue[] = "6";
- SetClientCookie(client, g_cookieKnife, knifeValue);
- OnClientCookiesCached(client);
- Equipknife(client);
- if (GetConVarBool(g_hKnifeChosenMessage)) PrintToChat(client, " \x04 You have chosen the Huntsman knife!");
- }
- SetButterfly(client)
- {
- knife_choice[client] = 7;
- new String:knifeValue[] = "7";
- SetClientCookie(client, g_cookieKnife, knifeValue);
- OnClientCookiesCached(client);
- Equipknife(client);
- if (GetConVarBool(g_hKnifeChosenMessage)) PrintToChat(client, " \x04 You have chosen the Butterfly knife!");
- }
- SetDefault(client)
- {
- knife_choice[client] = 8;
- new String:knifeValue[] = "8";
- SetClientCookie(client, g_cookieKnife, knifeValue);
- OnClientCookiesCached(client);
- Equipknife(client);
- if (GetConVarBool(g_hKnifeChosenMessage)) PrintToChat(client, " \x04 You have chosen the Default knife!");
- }
- public Action:DID(clientId)
- {
- new Handle:menu = CreateMenu(DIDMenuHandler);
- SetMenuTitle(menu, "Choose your knife");
- AddMenuItem(menu, "option2", "!Bayonet");
- AddMenuItem(menu, "option3", "!Gut");
- AddMenuItem(menu, "option4", "!Flip");
- AddMenuItem(menu, "option5", "!M9");
- AddMenuItem(menu, "option6", "!Karambit");
- AddMenuItem(menu, "option7", "!Huntsman");
- AddMenuItem(menu, "option8", "!Butterfly");
- AddMenuItem(menu, "option9", "!Default");
- SetMenuExitButton(menu, true);
- DisplayMenu(menu, clientId, 0);
- return Plugin_Handled;
- }
- public DIDMenuHandler(Handle:menu, MenuAction:action, client, itemNum)
- {
- if ( action == MenuAction_Select )
- {
- new String:info[32];
- GetMenuItem(menu, itemNum, info, sizeof(info));
- //Bayonet
- if ( strcmp(info,"option2") == 0 )
- {
- SetBayonet(client);
- }
- //Gut
- else if ( strcmp(info,"option3") == 0 )
- {
- SetGut(client);
- }
- //Flip
- else if ( strcmp(info,"option4") == 0 )
- {
- SetFlip(client);
- }
- //M9-Bayonet
- else if ( strcmp(info,"option5") == 0 )
- {
- SetM9(client);
- }
- //Karambit
- else if ( strcmp(info,"option6") == 0 )
- {
- SetKarambit(client);
- }
- //Huntsman
- else if ( strcmp(info,"option7") == 0 )
- {
- SetHuntsman(client);
- }
- //Butterfly
- else if ( strcmp(info,"option8") == 0 )
- {
- SetButterfly(client);
- }
- //Default
- else if ( strcmp(info,"option9") == 0 )
- {
- SetDefault(client);
- }
- }
- else if (action == MenuAction_End)
- {
- CloseHandle(menu);
- }
- }
- stock bool:IsValidClient(client, bool:alive = false)
- {
- return (client >= 1 && client <= MaxClients && IsClientConnected(client) && GetClientTeam(client) > 1 && IsClientInGame(client) && (alive == false || IsPlayerAlive(client)));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement