View difference between Paste ID: tb4mJEkz and DAgE3bk4
SHOW: | | - or go back to the newest paste.
1
#include <amxmodx>
2
#include <amxmisc>
3
#include <cstrike>
4
#include <nvault>
5
6
#define IsPlayer(%1)  (1 <= %1 <= g_players) 
7
#define TOTALLEVELS 12
8
9
10
get_user_id,ent);
11
}
12
13
14
new const RANK[TOTALLEVELS] = 
15
{
16
 500, 
17
 1000,
18
 2000,
19
 2500,
20
 3000,
21
 4500,
22
 6000,
23
 8000,
24
 9000,
25
 9500,
26
 10000,
27
 15000
28
}
29
30
new const XP[TOTALLEVELS] = 
31
{
32
 1000, 
33
 2000,
34
 3000,
35
 4500,
36
 5000,
37
 6500,
38
 7000,
39
 8000,
40
 9000,
41
 9500,
42
 10000,
43
 25000
44
}
45
46
new const RANKNAMES[TOTALLEVELS][] =
47
{
48
 "Conscript",
49
 "Private",
50
 "Sergeant",
51
 "Master Sergeant",
52
 "First Sergeant",
53
 "Master Cheif",
54
 "Sergeant Major",
55
 "Ensign",
56
 "Commander",
57
 "Veteran",
58
 "Proffesional",
59
 "Master"
60
}
61
62
new gXP[33], gLevel[33];
63
new points_kill, points_hs;
64
new g_vault, g_players;
65
66
public plugin_init()
67
{
68
	register_plugin("Cod Rank", "1.0", "Mostwanted");
69
 
70
	register_event("DeathMsg", "eDeath", "a");
71
 
72
	points_kill = register_cvar("rank_kill", "1");
73
	points_hs = register_cvar("codrank_hs","1");
74
	g_vault = nvault_open("CODRANK");
75
	g_players = get_maxplayers();
76
	
77
	register_clcmd("say /codrank", "ShowHud");
78
	register_clcmd("say_team /codrank", "ShowHud");
79
}
80
81
public plugin_end()
82
{
83
	nvault_close(g_vault);
84
}
85
86
public eDeath() 
87
{
88
	new killer = read_data(1);
89
	new victim = read_data(2);
90
	new gpoints_kill = get_pcvar_num(points_kill);
91
	new gpoints_hs = get_pcvar_num(points_hs);
92
 
93
	if( IsPlayer(killer) && is_user_connected(killer) )
94
	{
95
		if( victim != killer )
96
		{
97
			if( cs_get_user_team(victim) != cs_get_user_team(killer) )
98
			{
99
				if( is_user_alive(killer) )
100
				{					
101
					if(!read_data(3))
102
					{
103
						gXP[killer] += gpoints_kill
104
						Print(killer, "You recived %d Points!", gpoints_kill );
105
					}
106
					else if(read_data(3))
107
					{
108
						gXP[killer] += (gpoints_kill + gpoints_hs);
109
						Print(killer, "You recived %d Points!^x01 for doing a Headshot!", (gpoints_hs + gpoints_kill ) );
110
					}
111
	
112
					CheckLevel(killer);
113
					SaveData(killer);
114
				}
115
			}
116
		}
117
	}
118
	
119
	return PLUGIN_HANDLED;
120
}
121
122
public CheckLevel(id)
123
{
124
	if( gXP[id] >= RANK[gLevel[id]] )
125
	{
126
		gLevel[id]++;
127
		new szName[33];
128
		get_user_name(id, szName, charsmax(szName));
129
		Print(0, "Good work to^3 %s^1! He is now [Lvl:^3 %i^1/%i] and has the new title^3 %s^1!", szName, gLevel[id], TOTALLEVELS, RANKNAMES[gLevel[id]-1]);
130
		Print(0, "^3%s^1 was awarded^3 %i^1 XP for gaining a lvl", szName, XP[gLevel[id]]);
131
		xp_add_user_xp( id, XP[gLevel[id]-1] );
132
	}
133
}
134
135
public ShowHud(id)
136
{
137
	new iLevelName[100];
138
	if( gLevel[id] > 0 )
139
	{
140
		formatex(iLevelName, charsmax(iLevelName), "%s", RANKNAMES[gLevel[id]]);
141
	}
142
	else 
143
	{
144
		formatex(iLevelName, charsmax(iLevelName), "Unranked");
145
	}
146
	
147
	new szName[33];
148
	get_user_name(id, szName, charsmax(szName));
149
	Print(0, "^3%s^1 have got:^3 %d/%d Points^1! Title:^3 %s^1!", szName, gXP[id], RANK[gLevel[id]], iLevelName);
150
}
151
152
public client_connect(id)
153
{
154
	LoadData(id);
155
}
156
public client_disconnect(id)
157
{
158
	SaveData(id);
159
	gXP[id] = 0;
160
	gLevel[id] = 0;
161
}
162
public SaveData(id)
163
{
164
	new AuthID[35];
165
	get_user_authid(id,AuthID,34);
166
167
	new vaultkey[64],vaultdata[256];
168
	format(vaultkey,63,"%s-COD", AuthID);
169
	format(vaultdata,255,"%i#%i#",gXP[id],gLevel[id]);
170
	nvault_set(g_vault,vaultkey,vaultdata);
171
	return PLUGIN_CONTINUE;
172
}
173
LoadData(id)
174
{
175
	new AuthID[35];
176
	get_user_authid(id,AuthID,34);
177
178
	new vaultkey[64],vaultdata[256];
179
	format(vaultkey,63,"%s-COD",AuthID);
180
	format(vaultdata,255,"%i#%i#",gXP[id],gLevel[id]);
181
	nvault_get(g_vault,vaultkey,vaultdata,255);
182
183
	replace_all(vaultdata, 255, "#", " ");
184
185
	new playerxp[32], playerlevel[32];
186
187
	parse(vaultdata, playerxp, 31, playerlevel, 31);
188
189
	gXP[id] = str_to_num(playerxp);
190
	gLevel[id] = str_to_num(playerlevel);
191
192
	return PLUGIN_CONTINUE;
193
194
}
195
Print(iPlayer, const sMsg[], any:...)
196
{
197
	static i; i = iPlayer ? iPlayer : get_Player();
198
	if ( !i ) return;
199
	
200
	new sMessage[256];
201
	new len = formatex(sMessage, sizeof(sMessage) - 1, "^x04Server using Rank mod by Mostwanted^x03 ");
202
	vformat(sMessage[len], sizeof(sMessage) - 1 - len, sMsg, 3);
203
	sMessage[192] = '^0';
204
		
205
	static msgid_SayText;
206
	if ( !msgid_SayText ) msgid_SayText = get_user_msgid("SayText");
207
	
208
	new const team_Names[][] =
209
	{
210
		"",
211
		"TERRORIST",
212
		"CT",
213
		"SPECTATOR"
214
	};
215
		
216
	new sTeam = get_user_team(i);
217
	
218
	team_Info(i, iPlayer, team_Names[0]);
219
		
220
	message_begin(iPlayer ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgid_SayText, _, iPlayer);
221
	write_byte(i);
222
	write_string(sMessage);
223
	message_end();
224
		
225
	team_Info(i, iPlayer, team_Names[sTeam]);
226
}
227
team_Info(receiver, sender, sTeam[])
228
{
229
	static msgid_TeamInfo;
230
	if ( !msgid_TeamInfo ) msgid_TeamInfo = get_user_msgid("TeamInfo");
231
	
232
	message_begin(sender ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgid_TeamInfo, _, sender);
233
	write_byte(receiver);
234
	write_string(sTeam);
235
	message_end();
236
}
237
get_Player()
238
{
239
	for ( new iPlayer = 1; iPlayer <= get_maxplayers(); iPlayer++ )
240
	{
241
		return iPlayer;
242
	}
243
	
244
	return 0;
245
}