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 | } |