Raised This Month: $32 Target: $400
 8% 

Crash server rounds knife


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
szogun
Senior Member
Join Date: Apr 2016
Old 01-15-2019 , 12:32   Crash server rounds knife
Reply With Quote #1

Hey, I have a small problem with the plug, after the round knife the server resets

PHP Code:
#include <sourcemod>
#include <sdktools>
#include <cstrike>

#pragma semicolon                1
#pragma newdecls                required

#define MAX_PLAYERS                32

#define TEAM_CT                    2
#define TEAM_TT                    3

public Plugin myinfo =
{
    
name "Knife round",
    
author "Vasto_Lorde",
    
description "Plugin sets up an additional knife round after warmup ends",
    
version "1.2",
    
url "http://cs-plugin.com/"
};

bool g_bKnifeRoundEnded false;

int g_iRoundNumber 0;
int g_iWonTeam 0;

int iClientsNumWinners 0;
int iClientsWinnersID[MAX_PLAYERS+1];
int iClientsWinnersDecision[MAX_PLAYERS+1];

ConVar cvInfo;
ConVar cvTime;
ConVar cvVote;
ConVar cvAllowAllTalk;
int g_iCvarInfo;
float g_fCvarRoundTime;
float g_fCvarVoteTime;
int g_iCvarAllowAllTalk;

ConVar cvBuyTimeNormal;
ConVar cvBuyTimeImmunity;
ConVar cvTalkDead;
ConVar cvTalkLiving;
float g_fCvarBuyTimeNormal;
float g_fCvarBuyTimeImmunity;
int g_iCvarTalkDead;
int g_iCvarTalkLiving;

Handle hHUD;

public 
void OnPluginStart()
{
    
HookEvent("round_start"RoundStart);
    
HookEvent("round_end"RoundEnd);
    
HookEvent("player_spawn"PlayerSpawn);
    
    
cvInfo CreateConVar("knifer_info""2""How should messages be displayed? (0 - none, 1 - chat, 2 - HUD)"_true0.0true2.0);
    
cvTime CreateConVar("knifer_roundtime""60.0""How much time should knife round take? (0.5 to 60.0 minutes)"_true0.5true60.0);
    
cvVote CreateConVar("knifer_votetime""10.0""How much time should vote take? (5 to 20 seconds)"_true5.0true20.0);
    
cvAllowAllTalk CreateConVar("knifer_alltalk""1""Should there be alltalk enabled while knife round? (1 - enabled, 0 - disabled)"_true0.0true1.0);
    
    
cvBuyTimeNormal FindConVar("mp_buytime");
    
cvBuyTimeImmunity FindConVar("mp_buy_during_immunity");
    
cvTalkDead FindConVar("sv_talk_enemy_dead");
    
cvTalkLiving FindConVar("sv_talk_enemy_living");
    
    
g_bKnifeRoundEnded false;
    
g_iRoundNumber 0;
    
    
hHUD CreateHudSynchronizer();
    
    
AutoExecConfig(true"knife_round");
    
LoadTranslations("knife_round.phrases");
}

public 
void OnConfigsExecuted()
{
    
g_iCvarInfo GetConVarInt(cvInfo);
    
g_fCvarRoundTime GetConVarFloat(cvTime);
    
g_fCvarVoteTime GetConVarFloat(cvVote);
    
g_iCvarAllowAllTalk GetConVarInt(cvAllowAllTalk);
    
    
g_fCvarBuyTimeNormal GetConVarFloat(cvBuyTimeNormal);
    
g_fCvarBuyTimeImmunity GetConVarFloat(cvBuyTimeImmunity);
    
g_iCvarTalkDead GetConVarInt(cvTalkDead);
    
g_iCvarTalkLiving GetConVarInt(cvTalkLiving);
}

public 
void OnMapStart()
{
    
g_bKnifeRoundEnded false;
    
g_iRoundNumber 0;
}

public 
void OnMapEnd()
{
    
g_bKnifeRoundEnded false;
    
g_iRoundNumber 0;
}

public 
Action PlayerSpawn(Handle event, const char[] namebool dontBroadcast)
{
    if (
g_iRoundNumber == && g_bKnifeRoundEnded == false)
        
StripOnePlayerWeapons(GetClientOfUserId(GetEventInt(event"userid")));
}

public 
Action RoundStart(Handle event, const char[] namebool dontBroadcast)
{
    if (
GetClientCount(true) < || GetClientCountTeams() < || GameRules_GetProp("m_bWarmupPeriod"))
    {
        
g_iRoundNumber 0;
        
g_bKnifeRoundEnded false;
        return;
    }
    
    if (
g_bKnifeRoundEnded)
        return;
    
    
g_iRoundNumber++;
    if (
g_iRoundNumber == 1)
    {
        
PrepareForKnifeRound();
    }
    else if(
g_iRoundNumber == && g_bKnifeRoundEnded == false//round after warmup
    
{
        
StripAllPlayersWeapons();
        
        
char cTempTextHUD[256];
        
Format(cTempTextHUD255"%t""Knife_Start");
        
SendTextToAll(cTempTextHUD);
    }
}

public 
Action RoundEnd(Handle event, const char[] namebool dontBroadcast)
{
    if (
GetClientCount(true) < || GetClientCountTeams() < || GameRules_GetProp("m_bWarmupPeriod"))
    {
        
g_iRoundNumber 0;
        
g_bKnifeRoundEnded false;
        return;
    }
    
    if (
g_bKnifeRoundEnded)
        return;
    
    if (
g_iRoundNumber == 2)
    {
        
g_bKnifeRoundEnded true;
        
AfterKnifeRound();
        
        
g_iWonTeam GetEventInt(event"winner");
        if (
g_iWonTeam != TEAM_CT && g_iWonTeam != TEAM_TT)
        {
            
char cTempTextHUD[256];
            
Format(cTempTextHUD255"%t""Win_None");
            
SendTextToAll(cTempTextHUD);
            
            
RestartLastTime();
        }
        else
            
MakeVote();
    }
}

stock void MakeVote()
{
    
char cTempTextHUD[256];
    
Format(cTempTextHUD255"%t""Voting_Start");
    
SendTextToAll(cTempTextHUD);
    
    
iClientsNumWinners 0;
    for (
int i 1;<= MAX_PLAYERS;i++) //counting winning guys to show them menu
    
{
        if (
IsClientValid(i) && !IsClientSourceTV(i))
        {
            if (
GetClientTeam(i) == g_iWonTeam)
            {
                
iClientsWinnersID[iClientsNumWinners] = i;
                ++
iClientsNumWinners;
            }
        }
    }
    
    
Handle hMenu CreateMenu(ShowVotingMenuHandle);
    
char cTempBuffer[128];
    
Format(cTempBuffer127"%t""Menu_Title");
    
SetMenuTitle(hMenucTempBuffer);
    
    
AddMenuItem(hMenu"CT""CT");
    
AddMenuItem(hMenu"TT""TT");
    
    
SetMenuExitButton(hMenufalse);
    
SetMenuExitBackButton(hMenufalse);
    
    for(
int i 0;iClientsNumWinners;i++)
        
DisplayMenu(hMenuiClientsWinnersID[i], MENU_TIME_FOREVER);
    
CreateTimer(g_fCvarVoteTimeEndTheVote);
}

public 
int ShowVotingMenuHandle(Handle hMenuMenuAction actionint clientint choose)
{
    if (
action == MenuAction_End)
    {
        if (
IsValidHandle(hMenu)) CloseHandle(hMenu);
    }
    else if (
action == MenuAction_Select)
    {
        
choose += 2;
        if (
choose == TEAM_CT)
        {
            
iClientsWinnersDecision[client] = TEAM_CT;
        }
        else if (
choose == TEAM_TT)
        {
            
iClientsWinnersDecision[client] = TEAM_TT;
        }
    }


public 
Action EndTheVote(Handle hTimer)
{
    
int iCTNum 0;
    
int iTTNum 0;
    for (
int i 1<= MAX_PLAYERSi++) //counting winning guys to show them menu
    
{
        if (
IsClientValid(i) && !IsClientSourceTV(i))
        {
            switch(
iClientsWinnersDecision[i])
            {
                case 
TEAM_CT: { ++iCTNum; }
                case 
TEAM_TT: { ++iTTNum; }
            }
        }
    }
    
    
int iWantedTeam 0;
    
bool bDoSwap false;
    
    if (
iCTNum >= iTTNum)
        
iWantedTeam TEAM_CT;
    else
        
iWantedTeam TEAM_TT;
    
    
g_iWonTeam g_iWonTeam == TEAM_CT TEAM_TT TEAM_CT;//team won jak CT wygraj********* == 3 a jak TT to == 2
    
    
if (g_iWonTeam != iWantedTeam)
    {
        
bDoSwap true;
    }
    
    if (
bDoSwap)
    {
        
char cTempTextHUD[256];
        
Format(cTempTextHUD255"%t""Winning_Swap");
        
SendTextToAll(cTempTextHUD);
        
        
RestartSwapLastTime();
    }
    else
    {
        
char cTempTextHUD[256];
        
Format(cTempTextHUD255"%t""Winning_Stay");
        
SendTextToAll(cTempTextHUD);
        
        
RestartLastTime();
    }
}

stock void PrepareForKnifeRound()
{
    if (
g_iCvarAllowAllTalk)
    {
        
ServerCommand("sv_talk_enemy_dead 1");
        
ServerCommand("sv_talk_enemy_living 1");
    }
    
ServerCommand("mp_roundtime %f"g_fCvarRoundTime);
    
ServerCommand("mp_roundtime_defuse %f"g_fCvarRoundTime);
    
ServerCommand("mp_buytime 0");
    
ServerCommand("mp_buy_during_immunity 0");
    
ServerCommand("mp_startmoney 0");
    
ServerCommand("mp_restartgame 1");
}

stock void AfterKnifeRound()
{
    if (
g_iCvarAllowAllTalk)
    {
        
ServerCommand("sv_talk_enemy_dead %i"g_iCvarTalkDead);
        
ServerCommand("sv_talk_enemy_living %i"g_iCvarTalkLiving);
    }
    
ServerCommand("mp_roundtime 1.92");
    
ServerCommand("mp_roundtime_defuse 1.92");
    
ServerCommand("mp_pause_match");
}

stock void RestartLastTime()
{
    
ServerCommand("mp_buytime %f"g_fCvarBuyTimeNormal);
    
ServerCommand("mp_buy_during_immunity %f"g_fCvarBuyTimeImmunity);
    
ServerCommand("mp_startmoney 800");
    
ServerCommand("mp_unpause_match");
    
ServerCommand("mp_restartgame 1");
}

stock void RestartSwapLastTime()
{
    
ServerCommand("mp_buytime %f"g_fCvarBuyTimeNormal);
    
ServerCommand("mp_buy_during_immunity %f"g_fCvarBuyTimeImmunity);
    
ServerCommand("mp_startmoney 800");
    
ServerCommand("mp_unpause_match");
    
ServerCommand("mp_swapteams");
}

stock void StripAllPlayersWeapons()
{
    for (
int i 1;<= MAX_PLAYERS;i++)
    {
        
StripOnePlayerWeapons(i);
    }
}

stock void StripOnePlayerWeapons(int client)
{
    if (
IsClientValid(client) && IsPlayerAlive(client))
    {
        
int iTempWeapon = -1;
        for (
int j 05j++)
            if ((
iTempWeapon GetPlayerWeaponSlot(clientj)) != -1)
            {
                if (
== 2)
                    continue;
                if (
IsValidEntity(iTempWeapon))
                    
RemovePlayerItem(clientiTempWeapon);
            }
        
ClientCommand(client"slot3");// zmienia bro********* na n*********
    
}
}

stock bool IsClientValid(int client)
{
    return (
client && client <= MAX_PLAYERS && IsClientInGame(client));
}

stock int GetClientCountTeams()
{
    
int iTempSum 0;
    for (
int i 1<= MAX_PLAYERSi++)
    {
        if (
IsClientValid(i) && IsClientAuthorized(i) && !IsClientSourceTV(i))
        {
            ++
iTempSum;
        }
    }
    return 
iTempSum;
}

stock void SendTextToAll(char[] text)
{
    if (
g_iCvarInfo == 1)
        
PrintToChatAll(text);
    else if (
g_iCvarInfo == 2)
    {
        
Handle hData CreateDataPack();
        
WritePackString(hDatatext);
        
        
CreateTimer(2.0FixHUDmsghData);
    }
}

public 
Action FixHUDmsg(Handle hTimerHandle hData)
{
    
ResetPack(hData);
    
    
char cTempText[255];
    
ReadPackString(hDatacTempTextsizeof(cTempText));
    
    for (
int i 1<= MAX_PLAYERSi++)
    {
        if (
IsClientValid(i))
        {
            
SetHudTextParams(-1.0, -1.04.025525525520000.00.00.0);
            
ShowSyncHudText(ihHUDcTempText);
        }
    }

szogun is offline
szogun
Senior Member
Join Date: Apr 2016
Old 01-15-2019 , 14:19   Re: Crash server rounds knife
Reply With Quote #2

Crash id - 3X6J-XYBL-33V4
szogun is offline
Bacardi
Veteran Member
Join Date: Jan 2010
Location: mom's basement
Old 01-15-2019 , 14:42   Re: Crash server rounds knife
Reply With Quote #3

Perhaps
RemovePlayerItem()

try this
[SNIPPET][CSGO] Safely remove weapons without crashes
__________________
Do not Private Message @me
Bacardi is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 10:12.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode