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