Иконка ресурса

Savescores lite 1.1

Черная вдова

Участник
Сообщения
2,795
Реакции
670
  • Автор ресурса
  • #1

wayLANder

Где AlmazON?
Сообщения
1,742
Реакции
577
Мб я чего-то не понимаю, но по-моему это уже давненько реализовано в самой игре
 

Черная вдова

Участник
Сообщения
2,795
Реакции
670
  • Автор ресурса
  • #8
Мб я чего-то не понимаю, но по-моему это уже давненько реализовано в самой игре
У меня когда я отключаюсь с сервера обнуляются деньги, убийства и смерти
Когда захожу в наблюдатели и обратно обнуляются деньги
Я использую
mp_backup_round_file ""
mp_backup_round_file_last ""
mp_backup_round_file_pattern ""
mp_backup_round_auto "0"
Возможно из-за этого проблемы, это необходимо что бы изменять деньги для vip
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
Переписал для себя:
PHP:
#include <sdktools_gamerules>

enum {STEAM, STATS};
ArrayList g_hArray[2];
bool g_bGame, g_bActivateSave;

public APLRes AskPluginLoad2(Handle hMySelf, bool bLate, char[] szError, int iErrMax)
{
    if(GetEngineVersion() == Engine_CSGO) g_bGame = true;
    else g_bGame = false;
 
    return APLRes_Success;
}

public void OnPluginStart()
{
    for(int i; i < 2; i++) g_hArray[i] = new ArrayList(ByteCountToCells(32));
    HookEvent("round_start", RoundStart, EventHookMode_PostNoCopy);
    HookEvent("player_team", PlayerTeam, EventHookMode_Pre);
}

public void OnMapStart()
{
    g_bActivateSave = false;
    for(int i; i < 2; i++)
    {
        if(g_hArray[i] != null) g_hArray[i].Clear();
    }
}

public void RoundStart(Event hEvent, const char[] sEvName, bool bDbc)
{
    if(!g_bGame || !GameRules_GetProp("m_bWarmupPeriod")) g_bActivateSave = true;
}

public void PlayerTeam(Event hEvent, const char[] sEvName, bool bDbc)
{
    if(g_bActivateSave)
    {
        int iClient;
        if((iClient = GetClientOfUserId(hEvent.GetInt("userid"))) && !IsFakeClient(iClient))
        {
            int iOldTeam = GetClientTeam(iClient), iNewTeam = hEvent.GetInt("team");
            if(iOldTeam > 1 && iNewTeam  == 1) SaveStats(iClient);
            else if(iOldTeam < 2 && iNewTeam > 1)
            {
                int iIndex;
                if((iIndex = g_hArray[STEAM].FindValue(GetSteamAccountID(iClient))) != -1)
                {
                    char sBuffer[30];
                    g_hArray[STATS].GetString(iIndex, sBuffer, sizeof(sBuffer));

                    char sExplodeBuffer[3][10];
                    ExplodeString(sBuffer, " ", sExplodeBuffer, sizeof(sExplodeBuffer), sizeof(sExplodeBuffer[]));

                    SetEntProp(iClient, Prop_Send, "m_iAccount", StringToInt(sExplodeBuffer[0]));
                    SetEntProp(iClient, Prop_Data, "m_iFrags", StringToInt(sExplodeBuffer[1]));
                    SetEntProp(iClient, Prop_Data, "m_iDeaths", StringToInt(sExplodeBuffer[2]));
            
                    for(int i; i < 2; i++) g_hArray[i].Erase(iIndex);
                }
            }
        }
    }
}

public void OnClientDisconnect(int iClient)
{
    if(g_bActivateSave && IsClientInGame(iClient) && !IsFakeClient(iClient) && GetClientTeam(iClient) > 1) SaveStats(iClient);
}

void SaveStats(int iClient)
{
    g_hArray[STEAM].Push(GetSteamAccountID(iClient));

    char sBuffer[30];
    FormatEx(sBuffer, sizeof(sBuffer), "%i %i %i",    GetEntProp(iClient, Prop_Send, "m_iAccount"),
                                                    GetEntProp(iClient, Prop_Data, "m_iFrags"),
                                                    GetEntProp(iClient, Prop_Data, "m_iDeaths"));

    g_hArray[STATS].PushString(sBuffer);
}
PHP:
#include <sdktools_gamerules>

StringMap g_hTrie;
bool g_bGame, g_bActivateSave;

public APLRes AskPluginLoad2(Handle hMySelf, bool bLate, char[] sError, int iErrMax)
{
    if(GetEngineVersion() == Engine_CSGO) g_bGame = true;
    else g_bGame = false;
  
    return APLRes_Success;
}

public void OnPluginStart()
{
    g_hTrie = new StringMap();
    HookEvent("round_start", RoundStart, EventHookMode_PostNoCopy);
    HookEvent("player_team", PlayerTeam, EventHookMode_Pre);
}

public void OnMapStart()
{
    g_bActivateSave = false;
    if(g_hTrie != null) g_hTrie.Clear();
}

public void RoundStart(Event hEvent, const char[] sEvName, bool bDbc)
{
    if(!g_bGame || !GameRules_GetProp("m_bWarmupPeriod")) g_bActivateSave = true;
}

public void PlayerTeam(Event hEvent, const char[] sEvName, bool bDbc)
{
    if(g_bActivateSave)
    {
        int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
        if(!IsFakeClient(iClient))
        {
            int iOldTeam = GetClientTeam(iClient), iNewTeam = hEvent.GetInt("team");
            if(iOldTeam > 1 && iNewTeam  == 1) SaveStats(iClient);
            else if(iOldTeam < 2 && iNewTeam > 1)
            {
                char sBuffer[64], sId[32];
                IntToString(GetSteamAccountID(iClient), sId, sizeof(sId));

                if((g_hTrie.GetString(sId, sBuffer, sizeof(sBuffer))))
                {
                    char sExplodeBuffer[3][10];
                    ExplodeString(sBuffer, " ", sExplodeBuffer, sizeof(sExplodeBuffer), sizeof(sExplodeBuffer[]));

                    SetEntProp(iClient, Prop_Send, "m_iAccount", StringToInt(sExplodeBuffer[0]));
                    SetEntProp(iClient, Prop_Data, "m_iFrags", StringToInt(sExplodeBuffer[1]));
                    SetEntProp(iClient, Prop_Data, "m_iDeaths", StringToInt(sExplodeBuffer[2]));
                  
                    g_hTrie.Remove(sId);
                }
            }
        }
    }
}

public void OnClientDisconnect(int iClient)
{
    if(g_bActivateSave && IsClientInGame(iClient) && !IsFakeClient(iClient) && GetClientTeam(iClient) > 1) SaveStats(iClient);
}

void SaveStats(int iClient)
{
    char sBuffer[32], sId[32];
    FormatEx(sBuffer, sizeof(sBuffer), "%i %i %i",    GetEntProp(iClient, Prop_Send, "m_iAccount"),
                                                    GetEntProp(iClient, Prop_Data, "m_iFrags"),
                                                    GetEntProp(iClient, Prop_Data, "m_iDeaths"));

    IntToString(GetSteamAccountID(iClient), sId, sizeof(sId));
    g_hTrie.SetString(sId, sBuffer);
}
 
Последнее редактирование:

VovaWender

Участник
Сообщения
64
Реакции
7
L 09/14/2018 - 14:07:39: [SM] Exception reported: Client 11 is not in game
L 09/14/2018 - 14:07:39: [SM] Blaming: savescoreslite.smx
L 09/14/2018 - 14:07:39: [SM] Call stack trace:
L 09/14/2018 - 14:07:39: [SM] [0] GetClientTeam
L 09/14/2018 - 14:07:39: [SM] [1] Line 97, D:\wcs\csgo_ds\csgo\addons\sourcemod\scripting\savescoreslite.sp::OnClientDisconnect
 

Черная вдова

Участник
Сообщения
2,795
Реакции
670
  • Автор ресурса
  • #13
L 09/14/2018 - 14:07:39: [SM] Exception reported: Client 11 is not in game
L 09/14/2018 - 14:07:39: [SM] Blaming: savescoreslite.smx
L 09/14/2018 - 14:07:39: [SM] Call stack trace:
L 09/14/2018 - 14:07:39: [SM] [0] GetClientTeam
L 09/14/2018 - 14:07:39: [SM] [1] Line 97, D:\wcs\csgo_ds\csgo\addons\sourcemod\scripting\savescoreslite.sp::OnClientDisconnect
Пользователь Черная вдова обновил ресурс Savescores lite новой записью:

Мелкое исправление



Узнать больше об этом обновлении...
 

FaraON

Участник
Сообщения
38
Реакции
1
L 09/15/2018 - 13:54:03: [SM] Exception reported: Client 4 is not in game
L 09/15/2018 - 13:54:03: [SM] Blaming: savescoreslite.smx
L 09/15/2018 - 13:54:03: [SM] Call stack trace:
L 09/15/2018 - 13:54:03: [SM] [0] GetClientTeam
L 09/15/2018 - 13:54:03: [SM] [1] Line 97, D:\wcs\csgo_ds\csgo\addons\sourcemod\scripting\savescoreslite.sp::OnClientDisconnect
L 09/15/2018 - 13:55:23: Error log file session closed.
 
Сверху Снизу