I found this but is not finished.
Код:
#include <amxmodx>
#include <amxmisc>
#include <dhudmessage>
#include <hl>
#include <hamsandwich>
// #define VERSION "2.0"
#define VERSION "2.4"
/*
Based on version 2.0
- fixed syncrinosation with score table
*/
#pragma semicolon 1
new const SND_BLUEWINS[] = "blue_wins.wav";
new const SND_REDWINS[] = "red_wins.wav";
new MaxPlayers;
new ScoreRed = 0;
new ScoreBlue = 0;
new gMsg_TeamScore;
new g_iTeam[33];
new mp_timer;
new g_iPlayerScore[33];
enum
{
TEAM_NONE = 0,
TEAM_BLUE,
TEAM_RED,
TEAM_SPEC
}
public plugin_init()
{
register_plugin("HL Teams Score By killing", VERSION, "Kuma & D-AIRY");
register_event("DeathMsg", "player_killed", "a");
// register_event("30", "change_level_event", "a");
gMsg_TeamScore = get_user_msgid("TeamScore");
register_message(gMsg_TeamScore, "msg_teamScore");
set_task(1.0,"score_round",_,_,_,"b");
mp_timer = get_cvar_pointer("mp_timelimit");
MaxPlayers = get_maxplayers();
register_clcmd("say c", "check");
}
public plugin_precache()
{
precache_sound(SND_BLUEWINS);
precache_sound(SND_REDWINS);
}
/*public client_command(id)
{
new cmd[33];
read_argv(0, cmd, charsmax(cmd));
if(equal(cmd, "spectate"))
{
if(g_iTeam[id] == TEAM_BLUE)
{
server_print("Disconnected. ScoreBlue -= %d\n", g_iPlayerScore[id]);
ScoreBlue -= g_iPlayerScore[id];
}
if(g_iTeam[id] == TEAM_RED)
{
server_print("Disconnected. ScoreRed -= %d\n", g_iPlayerScore[id]);
ScoreRed -= g_iPlayerScore[id];
}
g_iPlayerScore[id] = 0;
}
return(PLUGIN_CONTINUE);
}*/
public client_infochanged(id)
{
new tid = get_user_team(id);
switch(tid)
{
case TEAM_BLUE:
if(g_iTeam[id] != TEAM_BLUE)
{
if(g_iTeam[id] == TEAM_RED)
{
ScoreRed -= g_iPlayerScore[id];
}
g_iTeam[id] = TEAM_BLUE;
ScoreBlue += g_iPlayerScore[id];
}
case TEAM_RED:
if(g_iTeam[id] != TEAM_RED)
{
if(g_iTeam[id] == TEAM_BLUE)
{
ScoreBlue -= g_iPlayerScore[id];
}
g_iTeam[id] = TEAM_RED;
ScoreRed += g_iPlayerScore[id];
}
case TEAM_NONE:
{
if(g_iTeam[id] == TEAM_BLUE)
{
ScoreBlue -= g_iPlayerScore[id];
}
if(g_iTeam[id] == TEAM_BLUE)
{
ScoreBlue -= g_iPlayerScore[id];
}
}
default: return;
}
}
public client_disconnect(id)
{
//new i;
//new bool:bNeedRestart = false;
/*for(i = 0; i < 32; i++)
{
if(is_user_connected(i))
{
return;
}
}
ScoreRed = 0;
ScoreBlue = 0;*/
if(g_iTeam[id] == TEAM_BLUE)
{
server_print("Disconnected. ScoreBlue -= %d\n", g_iPlayerScore[id]);
ScoreBlue -= g_iPlayerScore[id];
}
if(g_iTeam[id] == TEAM_RED)
{
server_print("Disconnected. ScoreRed -= %d\n", g_iPlayerScore[id]);
ScoreRed -= g_iPlayerScore[id];
}
g_iPlayerScore[id] = 0;
}
public client_putinserver(id)
{
g_iPlayerScore[id] = 0;
}
public player_killed()
{
new iKiller = read_data(1);
new id = read_data(2);
new iAdd = 1;
new iGift = 0;
new tid = hl_get_user_team(iKiller);
switch(tid)
{
case 1: g_iTeam[iKiller] = TEAM_BLUE;
case 2: g_iTeam[iKiller] = TEAM_RED;
default: return;
}
if(id == iKiller || !(1 <= iKiller <= MaxPlayers))
{
if(hl_get_user_team(id) == TEAM_BLUE )
{
ScoreBlue -= iAdd;
g_iPlayerScore[id] -= iAdd;
//client_print(0 , print_chat, "Blue lost -1 point")
}
if( hl_get_user_team(id) == TEAM_RED )
{
ScoreRed -= iAdd;
g_iPlayerScore[id] -= iAdd;
//client_print(0 , print_chat, "Red lost -1 point")
}
}
else if(1 <= iKiller <= MaxPlayers)
{
if(hl_get_user_team(id) == tid)
{
if(tid == TEAM_BLUE )
{
ScoreBlue -= iAdd;
g_iPlayerScore[id] -= iAdd;
}
if(tid == TEAM_RED )
{
ScoreRed -= iAdd;
g_iPlayerScore[id] -= iAdd;
}
}
else
{
if(tid == TEAM_BLUE )
{
ScoreBlue += iAdd;
g_iPlayerScore[iKiller] += iAdd;
}
if(tid == TEAM_RED )
{
ScoreRed += iAdd;
g_iPlayerScore[iKiller] += iAdd;
}
}
}
/* if(ScoreBlue == 50){ //here i add gift +5 score for each teams get 50 points
set_hudmessage(0, 20, 200, -1.0, 0.29, 2, 6.0, 3.0)
show_hudmessage(0, "Blue Team +5 Frags")
ScoreBlue += iGift;
g_iPlayerScore[iKiller] += iGift;
}
if(ScoreRed == 50){ //here i add gift +5 score for each teams get 50 points
set_hudmessage(200, 20, 0, -1.0, 0.29, 2, 6.0, 3.0)
show_hudmessage(0, "Red Team +5 Frags")
ScoreRed += iGift;
g_iPlayerScore[iKiller] += iGift;
} */
if(ScoreBlue == 500 || ScoreRed == 500)
{ //here 200 is frag limit for each teams
on_change_level();
}
}
public NextMap()
{
new szMap[33];
get_cvar_string("amx_nextmap" , szMap, charsmax(szMap));
client_print(0, print_chat, "Nextmap will be %s" , szMap);
server_cmd("changelevel %s", szMap);
}
public check()
{
new szMap[32];
get_cvar_string("amx_nextmap" , szMap, 31);
client_print (0 , print_chat, "Nextmap will be %s" , szMap);
set_pcvar_num(mp_timer, 1);
}
public msg_teamScore()
{
static szTeam[32];
get_msg_arg_string(1, szTeam, 1);
switch(szTeam[0])
{
case 1: set_msg_arg_int(2, ARG_SHORT, ScoreBlue);
case 2: set_msg_arg_int(2, ARG_SHORT, ScoreRed);
}
}
// public change_level_event()
public on_change_level()
{
new szMsg[48];
new szFormat[192];
formatex(szFormat, charsmax(szFormat), "Blue %d : %d Red %s", ScoreBlue,ScoreRed, szMsg);
client_print(0, print_center, szFormat);
log_message("Blue %d : %d Red", ScoreBlue,ScoreRed);
if(ScoreBlue <= ScoreRed)
{
client_cmd(0, "spk ^"%s^"", SND_REDWINS);
}else if(ScoreRed <= ScoreBlue)
{
client_cmd(0, "spk ^"%s^"", SND_BLUEWINS);
}
set_task(10000, "NextMap");
}
public score_round()
{
set_dhudmessage(0, 70, 200, -1.0, 0.0, 0, 0.5, 1.1, 0.08, 1.1, true);
show_dhudmessage(0,"Blue :%d| ", ScoreBlue);
set_dhudmessage(200, 0, 0, -1.0, 0.0, 0, 0.5, 2.0, 0.08, 2.0, true);
show_dhudmessage(0," |%d: Red", ScoreRed);
}
But something wrong [LOG]TeamScoreDS.sma::player_killed (line 163)
L 07/14/2017 - 16:02:34: Start of error session.
L 07/14/2017 - 16:02:34: Info (map "crossfire") (file "addons/amxmodx/logs/error_20170714.log")
L 07/14/2017 - 16:02:34: Invalid player id 0
L 07/14/2017 - 16:02:34: [AMXX] Displaying debug trace (plugin "TeamScoreDS.amxx")
L 07/14/2017 - 16:02:34: [AMXX] Run time error 10: native error (native "get_user_info")
L 07/14/2017 - 16:02:34: [AMXX] [0] hl.inc::hl_get_user_team (line 175)
L 07/14/2017 - 16:02:34: [AMXX] [1] TeamScoreDS.sma::player_killed (line 163)