info rank csstatsx sql

Сообщения
184
Реакции
316
Помог
1 раз(а)
Хотел добавить разницу в скилле меж прошлым и настоящим раундами.
Вроде делал по аналогии с ранком, но не выходит, мб кто подскажет?
Код:
/*    Formatright © 2009, ConnorMcLeod

Info Rank is free software;
you can redistribute it and/or modify it under the terms of the
GNU General Public License as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Info Rank; if not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/

/* Added Skill letter and vallue from seerfreeman`s plugin aes_statsx_cstrike */

/* Configuration */
#define ENABLED_BY_DEFAULT 0
#define NVAULT_MAX_DAYS_SAVE 30
/* DON'T CHANGE ANYTHING BELOW */

#include <amxmodx>
#include <nvault>
#include <csstatsx_sql>


// User stats parms id
#define STATS_KILLS 0
#define STATS_DEATHS 1
#define STATS_HS 2
#define STATS_TKS 3
#define STATS_SHOTS 4
#define STATS_HITS 5
#define STATS_DAMAGE 6

#if AMXX_VERSION_NUM < 183
#include <colorchat>

#define print_team_default DontChange
#define print_team_grey Grey
#define print_team_red Red
#define print_team_blue Blue
#endif


#define VERSION "0.4.5"

#define MAX_PLAYERS 32
#define A_DAY_IN_SECONDS 86400 // 60 * 60 * 24
#define CHECK_DELAY 0.5

new g_iOldRank[MAX_PLAYERS+1]
new g_iOldSkill[MAX_PLAYERS+1]

new playerbitStatsEnabled
#define EnablePlayerStats(%0) playerbitStatsEnabled |= 1<<(%0&31)
#define DisablePlayerStats(%0) playerbitStatsEnabled &= ~(1<<(%0&31))
#define ArePlayerStatsEnabled(%0) playerbitStatsEnabled & 1<<(%0&31)
#define TogglePlayerStats(%0) playerbitStatsEnabled ^= 1<<(%0&31)

new playerbitDisplayStats
//#define DisplayStatsOnNextResetHUDEvent(%0) playerbitDisplayStats |= 1<<(%0&31)
#define DontDisplayStatsOnNextResetHUDEvent(%0) playerbitDisplayStats &= ~(1<<(%0&31))
#define ShouldDisplayStatsOnNextResetHUDEvent(%0) playerbitDisplayStats & 1<<(%0&31)

new g_iEnabledByDefault = ENABLED_BY_DEFAULT
new g_iNvault
new g_pCvarInfoRank

new const g_skill_letters[][] = {
"L-",
"L",
"L+",
"M-",
"M",
"M+",
"H-",
"H",
"H+",
"P-",
"P",
"P+",
"G"
}


new Float:g_skill_opt[sizeof g_skill_letters]

public plugin_init()
{
register_plugin("Info Rank", VERSION, "ConnorMcLeod")

g_pCvarInfoRank = register_cvar("amx_inforank", "1")
register_event("HLTV", "Event_HLTV_New_Round", "a", "1=0", "2=0")
register_event("ResetHUD", "Event_ResetHUD", "b")

g_iNvault = nvault_open("inforank")
nvault_prune(g_iNvault, 0, get_systime(-(A_DAY_IN_SECONDS * NVAULT_MAX_DAYS_SAVE)) )
}


public plugin_cfg()
{
new levelString[512],stPos,ePos,rawPoint[20],cnt
new g_pCvarSkill = get_cvar_pointer("aes_statsx_skill")

get_pcvar_string(g_pCvarSkill,levelString,charsmax(levelString))

// парсер значений для скилла
do {
ePos = strfind(levelString[stPos]," ")

formatex(rawPoint,ePos,levelString[stPos])
g_skill_opt[cnt] = str_to_float(rawPoint)

stPos += ePos + 1

cnt++

if(cnt > sizeof g_skill_letters - 1)
break
} while (ePos != -1)
}

public client_putinserver(id) {
set_task( CHECK_DELAY, "CheckStats", id ) // we need to use delay otherwise we will get rank = 0
}

public CheckStats(id)
{
if( is_user_connected(id) )
{
new szSteamId[32]
get_user_authid(id, szSteamId, charsmax(szSteamId))
if( szSteamId[0] == 'S' ) // skip bots
{
new mOsef[8]
g_iOldRank[id] = get_user_stats_sql(id, mOsef, mOsef)

new Float:skill
get_user_skill(id, skill)
g_iOldSkill[id] = get_user_skill(id, skill)

new szPlayerSettings[2]
nvault_get(g_iNvault,szSteamId, szPlayerSettings, charsmax(szPlayerSettings))

switch( szPlayerSettings[0] )
{
case '0': DisablePlayerStats(id)
case '1': EnablePlayerStats(id)
default: g_iEnabledByDefault ? (EnablePlayerStats(id)) : (DisablePlayerStats(id))
}
}
else
{
DisablePlayerStats(id)
}
}
}

public plugin_end()
{
nvault_close(g_iNvault)
}

public Event_HLTV_New_Round()
{
if( get_pcvar_num(g_pCvarInfoRank) )
{
playerbitDisplayStats = 0xFFFFFFFF // set everyone enabled
}
}

public Event_ResetHUD(id)
{
if( ShouldDisplayStatsOnNextResetHUDEvent(id) && ArePlayerStatsEnabled(id) )
{
DontDisplayStatsOnNextResetHUDEvent(id)
set_task(0.3, "DisplayStats", id)
}
}

public DisplayStats(id)
{
if( is_user_connected(id) )
{
new Stats[8], BodyHits[8], iRank, iSkill, iOldRank, iOldSkill
new Float:skill, skill_id
iRank = get_user_stats_sql(id, Stats, BodyHits)
get_user_skill(id, skill)
skill_id = aes_statsx_get_skill_id(skill)
iSkill = get_user_skill(id, skill)

iOldRank = g_iOldRank[id]
iOldSkill = g_iOldSkill[id]
if( !iOldRank ) // First Spawn
{
iOldRank = iRank
}
g_iOldRank[id] = iRank

new iDiff = iOldRank - iRank
new iDiffSkill = iOldSkill - iSkill

if(iDiff > 0)
{
switch( iDiff )
{
case 1, 21, 31, 41, 51, 61, 71, 81, 91 :
client_print_color(id, print_team_blue, "^4[Rank] ^1Поднялся на ^3+%d ^1место. Твой ранг ^4%d ^1из ^3%d^1. Скилл ^4%s ^1(%.2f (^3+%.2f^1))", iDiff, iRank, get_statsnum_sql(), g_skill_letters[skill_id], skill, iDiffSkill)
case 2..4, 22..24, 32..34, 42..44, 52..54, 62..64, 72..74, 82..84, 92..94 :
client_print_color(id, print_team_blue, "^4[Rank] ^1Поднялся на ^3+%d ^1места. Твой ранг ^4%d ^1из ^3%d^1. Скилл ^4%s ^1(%.2f (^3+%.2f^1))", iDiff, iRank, get_statsnum_sql(), g_skill_letters[skill_id], skill, iDiffSkill)
default :
client_print_color(id, print_team_blue, "^4[Rank] ^1Поднялся на ^3+%d ^1мест. Твой ранг ^4%d ^1из ^3%d^1. Скилл ^4%s ^1(%.2f (^3+%.2f^1))", iDiff, iRank, get_statsnum_sql(), g_skill_letters[skill_id], skill, iDiffSkill)
}
}
else if(iDiff < 0)
{
switch( -iDiff )
{
case 1, 21, 31, 41, 51, 61, 71, 81, 91 :
client_print_color(id, print_team_red, "^4[Rank] ^1Опустился на ^3%d ^1место. Твой ранг ^4%d ^1из ^3%d^1. Скилл ^4%s ^1(%.2f (^3%.2f^1))", iDiff, iRank, get_statsnum_sql(), g_skill_letters[skill_id], skill, iDiffSkill)
case 2..4, 22..24, 32..34, 42..44, 52..54, 62..64, 72..74, 82..84, 92..94 :
client_print_color(id, print_team_red, "^4[Rank] ^1Опустился на ^3%d ^1места. Твой ранг ^4%d ^1из ^3%d^1. Скилл ^4%s ^1(%.2f (^3%.2f^1))", iDiff, iRank, get_statsnum_sql(), g_skill_letters[skill_id], skill, iDiffSkill)
default :
client_print_color(id, print_team_red, "^4[Rank] ^1Опустился на ^3%d ^1мест. Твой ранг ^4%d ^1из ^3%d^1. Скилл ^4%s ^1(%.2f (^3%.2f^1))", iDiff, iRank, get_statsnum_sql(), g_skill_letters[skill_id], skill, iDiffSkill)
}
}
else if(iDiff == 0)
{
client_print_color(id, print_team_default, "^4[Rank] ^1Все ровно! Твой ранк ^4%d ^1из ^3%d^1. Скилл ^4%s ^1(%.2f (^3%.2f^1))", iRank, get_statsnum_sql(), g_skill_letters[skill_id], skill, iDiffSkill)
}
}
}

aes_statsx_get_skill_id(Float:skill)
{
for(new i ; i < sizeof g_skill_opt ; i++)
{
if(skill < g_skill_opt)
{
return i
}
}

return (sizeof g_skill_opt - 1)
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/

 

Вложения

Сообщения
77
Реакции
127
Помог
12 раз(а)
переменная iSkill бесполезна и её надо убрать
используй skill
Код:
/*  Formatright © 2009, ConnorMcLeod

  Info Rank is free software;
  you can redistribute it and/or modify it under the terms of the
  GNU General Public License as published by the Free Software Foundation.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with Info Rank; if not, write to the
  Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  Boston, MA 02111-1307, USA.
*/

/* Added Skill letter and vallue from seerfreeman`s plugin aes_statsx_cstrike */

/* Configuration */
#define ENABLED_BY_DEFAULT  0
#define NVAULT_MAX_DAYS_SAVE  30
/* DON'T CHANGE ANYTHING BELOW */

#include <amxmodx>
#include <nvault>
#include <csstatsx_sql>


// User stats parms id
#define STATS_KILLS  0
#define STATS_DEATHS  1
#define STATS_HS  2
#define STATS_TKS  3
#define STATS_SHOTS  4
#define STATS_HITS  5
#define STATS_DAMAGE  6

#if AMXX_VERSION_NUM < 183
  #include <colorchat>
 
  #define print_team_default DontChange
  #define print_team_grey Grey
  #define print_team_red Red
  #define print_team_blue Blue
#endif


#define VERSION "0.4.5"

#define MAX_PLAYERS 32
#define A_DAY_IN_SECONDS  86400 // 60 * 60 * 24
#define CHECK_DELAY  0.5

new g_iOldRank[MAX_PLAYERS+1]
new Float:g_fOldSkill[MAX_PLAYERS+1]

new playerbitStatsEnabled
#define EnablePlayerStats(%0)  playerbitStatsEnabled |= 1<<(%0&31)
#define DisablePlayerStats(%0)  playerbitStatsEnabled &= ~(1<<(%0&31))
#define ArePlayerStatsEnabled(%0)  playerbitStatsEnabled & 1<<(%0&31)
#define TogglePlayerStats(%0)  playerbitStatsEnabled ^= 1<<(%0&31)

new playerbitDisplayStats
//#define DisplayStatsOnNextResetHUDEvent(%0)  playerbitDisplayStats |= 1<<(%0&31)
#define DontDisplayStatsOnNextResetHUDEvent(%0)  playerbitDisplayStats &= ~(1<<(%0&31))
#define ShouldDisplayStatsOnNextResetHUDEvent(%0)  playerbitDisplayStats & 1<<(%0&31)

new g_iEnabledByDefault = ENABLED_BY_DEFAULT
new g_iNvault
new g_pCvarInfoRank

new const g_skill_letters[][] = {
  "L-",
  "L",
  "L+",
  "M-",
  "M",
  "M+",
  "H-",
  "H",
  "H+",
  "P-",
  "P",
  "P+",
  "G"
}


new Float:g_skill_opt[sizeof g_skill_letters]

public plugin_init()
{
  register_plugin("Info Rank", VERSION, "ConnorMcLeod")

  g_pCvarInfoRank = register_cvar("amx_inforank", "1")
  register_event("HLTV", "Event_HLTV_New_Round", "a", "1=0", "2=0")
  register_event("ResetHUD", "Event_ResetHUD", "b")

  g_iNvault = nvault_open("inforank")
  nvault_prune(g_iNvault, 0, get_systime(-(A_DAY_IN_SECONDS * NVAULT_MAX_DAYS_SAVE)) )
}


public plugin_cfg()
{
  new levelString[512],stPos,ePos,rawPoint[20],cnt
  new g_pCvarSkill = get_cvar_pointer("aes_statsx_skill")

  get_pcvar_string(g_pCvarSkill,levelString,charsmax(levelString))
 
  // парсер значений для скилла
  do {
  ePos = strfind(levelString[stPos]," ")
 
  formatex(rawPoint,ePos,levelString[stPos])
  g_skill_opt[cnt] = str_to_float(rawPoint)
 
  stPos += ePos + 1
 
  cnt++
 
  if(cnt > sizeof g_skill_letters - 1)
  break
  } while (ePos != -1)
}

public client_putinserver(id) {
  set_task( CHECK_DELAY, "CheckStats", id )  // we need to use delay otherwise we will get rank = 0
}

public CheckStats(id)
{
  if( is_user_connected(id) )
  {
  new szSteamId[32]
  get_user_authid(id, szSteamId, charsmax(szSteamId))
  if( szSteamId[0] == 'S' ) // skip bots
  {
  new mOsef[8]
  g_iOldRank[id] = get_user_stats_sql(id, mOsef, mOsef)
 
  get_user_skill(id, g_fOldSkill[id])

  new szPlayerSettings[2]
  nvault_get(g_iNvault,szSteamId, szPlayerSettings, charsmax(szPlayerSettings))

  switch( szPlayerSettings[0] )
  {
  case '0': DisablePlayerStats(id)
  case '1': EnablePlayerStats(id)
  default: g_iEnabledByDefault ? (EnablePlayerStats(id)) : (DisablePlayerStats(id))
  }
  }
  else
  {
  DisablePlayerStats(id)
  }
  }
}

public plugin_end()
{
  nvault_close(g_iNvault)
}

public Event_HLTV_New_Round()
{
  if( get_pcvar_num(g_pCvarInfoRank) )
  {
  playerbitDisplayStats = 0xFFFFFFFF // set everyone enabled
  }
}

public Event_ResetHUD(id)
{
  if( ShouldDisplayStatsOnNextResetHUDEvent(id) && ArePlayerStatsEnabled(id) )
  {
  DontDisplayStatsOnNextResetHUDEvent(id)
  set_task(0.3, "DisplayStats", id)
  }
}

public DisplayStats(id)
{
  if( is_user_connected(id) )
  {
  new Stats[8], BodyHits[8], iRank, iOldRank, Float:fOldSkill
  new Float:skill, skill_id
  iRank = get_user_stats_sql(id, Stats, BodyHits)
  get_user_skill(id, skill)
  skill_id = aes_statsx_get_skill_id(skill)
  get_user_skill(id, skill)
 
  iOldRank = g_iOldRank[id]
  fOldSkill = g_fOldSkill[id]
  if( !iOldRank ) // First Spawn
  {
  iOldRank = iRank
  }
  g_iOldRank[id] = iRank

  new iDiff = iOldRank - iRank
  new Float:fDiffSkill = fOldSkill - skill

  if(iDiff > 0)
  {
  switch( iDiff )
  {
  case 1, 21, 31, 41, 51, 61, 71, 81, 91 :
  client_print_color(id, print_team_blue, "^4[Rank] ^1Поднялся на ^3+%d ^1место. Твой ранг ^4%d ^1из ^3%d^1. Скилл ^4%s ^1(%.2f (^3+%.2f^1))", iDiff, iRank, get_statsnum_sql(), g_skill_letters[skill_id], skill, fDiffSkill)
  case 2..4, 22..24, 32..34, 42..44, 52..54, 62..64, 72..74, 82..84, 92..94 :
  client_print_color(id, print_team_blue, "^4[Rank] ^1Поднялся на ^3+%d ^1места. Твой ранг ^4%d ^1из ^3%d^1. Скилл ^4%s ^1(%.2f (^3+%.2f^1))", iDiff, iRank, get_statsnum_sql(), g_skill_letters[skill_id], skill, fDiffSkill)
  default :
  client_print_color(id, print_team_blue, "^4[Rank] ^1Поднялся на ^3+%d ^1мест. Твой ранг ^4%d ^1из ^3%d^1. Скилл ^4%s ^1(%.2f (^3+%.2f^1))", iDiff, iRank, get_statsnum_sql(), g_skill_letters[skill_id], skill, fDiffSkill)
  }
  }
  else if(iDiff < 0)
  {
  switch( -iDiff )
  {
  case 1, 21, 31, 41, 51, 61, 71, 81, 91 :
  client_print_color(id, print_team_red, "^4[Rank] ^1Опустился на ^3%d ^1место. Твой ранг ^4%d ^1из ^3%d^1. Скилл ^4%s ^1(%.2f (^3%.2f^1))", iDiff, iRank, get_statsnum_sql(), g_skill_letters[skill_id], skill, fDiffSkill)
  case 2..4, 22..24, 32..34, 42..44, 52..54, 62..64, 72..74, 82..84, 92..94 :
  client_print_color(id, print_team_red, "^4[Rank] ^1Опустился на ^3%d ^1места. Твой ранг ^4%d ^1из ^3%d^1. Скилл ^4%s ^1(%.2f (^3%.2f^1))", iDiff, iRank, get_statsnum_sql(), g_skill_letters[skill_id], skill, fDiffSkill)
  default :
  client_print_color(id, print_team_red, "^4[Rank] ^1Опустился на ^3%d ^1мест. Твой ранг ^4%d ^1из ^3%d^1. Скилл ^4%s ^1(%.2f (^3%.2f^1))", iDiff, iRank, get_statsnum_sql(), g_skill_letters[skill_id], skill, fDiffSkill)
  }
  }
  else if(iDiff == 0)
  {
  client_print_color(id, print_team_default, "^4[Rank] ^1Все ровно! Твой ранк ^4%d ^1из ^3%d^1. Скилл ^4%s ^1(%.2f (^3%.2f^1))", iRank, get_statsnum_sql(), g_skill_letters[skill_id], skill, fDiffSkill)
  }
  }
}

aes_statsx_get_skill_id(Float:skill)
{ 
  for(new i ; i < sizeof g_skill_opt ; i++)
  {
  if(skill < g_skill_opt[i])
  {
  return i
  }
  }
 
  return (sizeof g_skill_opt - 1)
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/
 
Последнее редактирование:

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу