Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- #include <fvault>
- #include <cstrike>
- #include <ColorChat>
- #define maxranks 15
- #define maxlevels 50
- #define xPrefix "RANK"
- #define RANKS_RECRUTA 0
- #define RANKS_SOLDADO 1
- #define RANKS_SOLDADO_RASO 2
- #define RANKS_ESPECIALISTA 3
- #define RANKS_ESPECIALISTA_TECNICO 4
- #define RANKS_PATRULEIRO 5
- #define RANKS_CABO 6
- #define RANKS_LIDER_DE_TIRO 7
- #define RANKS_SARGENTO 8
- #define RANKS_SARGENTO_DE_APOIO 9
- #define RANKS_SARGENTO_MESTRE 10
- #define RANKS_SARGENTO_MAIOR 11
- #define RANKS_INTENDENTE 12
- #define RANKS_ASPIRANTE 13
- #define RANKS_GUERREIRO 14
- #define PLUGIN "Patente Magnatas"
- #define VERSION "1.3"
- #define AUTHOR "Feeh SK' [CLAN MAGNATAS]"
- new const db_save[] = "level_xp_rank"
- new message[192], nome[32]
- new sayText, teamInfo, maxPlayers, g_AdminListen, g_AdminListenFlag
- new strName[191], strText[191], alive[11]
- new level[33], xp[33], rank[33], cvars[3], g_status_sync
- new const xp_num[maxlevels+1] = { 15, 70, 150, 250, 350, 450, 550, 650, 750, 850, 950, 1050, 1150, 1250, 1350, 1450, 1550, 1650,
- 1750, 1850, 1950, 2050, 2150, 2250, 2350, 2450, 2550,2650, 2750, 2850, 2950, 3050, 3150, 3250, 3350, 3450, 3550, 3650,
- 3750, 3850, 3950, 4050, 4150, 4250, 4350, 4450, 4550, 4650, 4750, 5000 }
- new const g_szTag[][] = {
- "",
- "DONO",
- "GIRL",
- "VIP",
- "MASTER",
- "ADMIN",
- "SUPREMO"
- }
- new const ranks_nomes[maxranks][]=
- {
- "Recruta",
- "Soldado",
- "Soldado Raso",
- "Especialista",
- "Especialista Tecnico",
- "Patrulheiro",
- "Cabo",
- "Lider de Tiro",
- "Sargento",
- "Sargento de Apoio",
- "Sargento Mestre",
- "Sargento Maior",
- "Intendente",
- "Aspirante",
- "Gurreiro Das Trevas"
- }
- public plugin_init()
- {
- register_plugin(PLUGIN, VERSION, AUTHOR);
- g_AdminListen = register_cvar("amx_listen", "1")
- g_AdminListenFlag = register_cvar("amx_listen_flag", "c")
- // sistema de xp+lvl+rank
- cvars[1] = register_cvar("rank_salvamente_tipo", "2") // 1 - IP || 2 - Nick || 3 - SteamID
- register_event("StatusValue", "showStatus", "be", "1=2", "2!0")
- register_event("StatusValue", "hideStatus", "be", "1=1", "2=0")
- register_event("DeathMsg", "xDeathMsg", "a", "1>0") // Usado para add xps, e etc..
- register_clcmd("say", "hook_say")
- register_clcmd("say_team", "hook_teamsay")
- sayText = get_user_msgid("SayText")
- teamInfo = get_user_msgid("TeamInfo")
- maxPlayers = get_maxplayers()
- g_status_sync = CreateHudSyncObj()
- }
- /*----------------------------------------------------------------------------------------------------------------
- -HUD DO JOGO
- ----------------------------------------------------------------------------------------------------------------*/
- public hud_status(id)
- {
- if(!is_user_alive(id) || !is_user_connected(id) )
- return;
- if(level[id] >= maxlevels)
- {
- static r, g, b; r = random_num(0, 255), g = random_num(0, 255), b = random_num(0, 255);
- set_hudmessage(r, g, b, 0.80, -1.0, 0, 1.0, 1.1, 0.0, 0.0, -1)
- show_hudmessage(id,"» Level: %d/%d^n» Rank: %s^n» XP: %d/%d", level[id], maxlevels, ranks_nomes[rank[id]], xp[id], xp[id])
- }
- else
- {
- set_hudmessage(255, 255, 255, 0.80, -1.0, 0, 1.0, 1.1, 0.0, 0.0, -1)
- show_hudmessage(id,"» Level: %d/%d^n» Rank: %s^n» XP: %d/%d", level[id], maxlevels, ranks_nomes[rank[id]], xp[id], xp_num[level[id]])
- }
- }
- /*----------------------------------------------------------------------------------------------------------------
- -EVENTO PARA ADD XP
- ----------------------------------------------------------------------------------------------------------------*/
- public xDeathMsg()
- {
- new id = read_data(1)
- new hs = read_data(3)
- xp[id]++
- if(hs)
- xp[id] += 3
- check_level(id, 1)
- salvar_dados(id)
- }
- /*----------------------------------------------------------------------------------------------------------------
- -PATENTE NO SAY
- ----------------------------------------------------------------------------------------------------------------*/
- public hook_say(id)
- {
- read_args(message, 191)
- remove_quotes(message)
- if(message[0] == '@' || message[0] == '/' || message[0] == '!' || message[0] == '#' || message[0] == '$' || equal(message, ""))
- return PLUGIN_CONTINUE
- get_user_name(id, nome, charsmax(nome))
- new isAlive
- new admin = 0, iFlags = get_user_flags(id)
- if(iFlags & ADMIN_LEVEL_A) admin = 1 //dono
- else if(iFlags & ADMIN_LEVEL_B) admin = 2 //girl
- else if(iFlags & ADMIN_LEVEL_C) admin = 3 //vip
- else if(iFlags & ADMIN_LEVEL_D) admin = 4 //master
- else if(iFlags & ADMIN_LEVEL_G) admin= 5 //admin
- else if(iFlags & ADMIN_LEVEL_F) admin = 8 //supremo
- if(is_user_alive(id))
- {
- isAlive = 1
- alive = "^x01"
- }
- else
- {
- isAlive = 0
- alive = "^x01*MORTO* "
- }
- static color[10]
- if(admin)
- {
- get_user_team(id, color, 9)
- format(strName, 191, "%s^x04[%s] ^x01[^x04%s^x01] ^x03%s", alive, g_szTag[admin], ranks_nomes[rank[id]], nome)
- format(strText, 191, "^x04%s", message)
- }
- else
- {
- get_user_name(id, nome, 32)
- get_user_team(id, color, 9)
- format(strName, 191, "%s^x01[^x04%s^x01] ^x03%s", alive, ranks_nomes[rank[id]], nome)
- format(strText, 191, "%s", message)
- }
- format(message, 191, "%s^x01: %s", strName, strText)
- sendMessage(color, isAlive)// Sends the colored message
- return PLUGIN_CONTINUE;
- }
- public hook_teamsay(id)
- {
- read_args(message, 191)
- remove_quotes(message)
- if(message[0] == '@' || message[0] == '/' || message[0] == '!' || message[0] == '#' || message[0] == '$' || equal(message, "")) // Ignores Admin Hud Messages, Admin Slash commands
- return PLUGIN_CONTINUE
- new playerTeam = get_user_team(id)
- new playerTeamName[19]
- switch(playerTeam) // Team names which appear on team-only messages
- {
- case 1: copy(playerTeamName, 3, "TRs")
- case 2: copy(playerTeamName, 3, "CTs")
- default: copy(playerTeamName, 9, "Spectador")
- }
- get_user_name(id, nome, charsmax(nome))
- new isAlive
- new admin = 0, iFlags = get_user_flags(id)
- if(iFlags & ADMIN_LEVEL_A) admin = 1 //dono
- else if(iFlags & ADMIN_LEVEL_B) admin = 2 //girl
- else if(iFlags & ADMIN_LEVEL_C) admin = 3 //vip
- else if(iFlags & ADMIN_LEVEL_D) admin = 4 //master
- else if(iFlags & ADMIN_LEVEL_G) admin= 5 //admin
- else if(iFlags & ADMIN_LEVEL_F) admin = 8 //supremo
- if(is_user_alive(id))
- {
- isAlive = 1
- alive = "^x01"
- }
- else
- {
- isAlive = 0
- alive = "^x01*MORTO* "
- }
- static color[10]
- if(admin)
- {
- get_user_team(id, color, 9)
- format(strName, 191, "%s(%s) ^x04[%s] ^x01[^x04%s^x01] ^x03%s", alive, playerTeamName, g_szTag[admin], ranks_nomes[rank[id]], nome)
- format(strText, 191, "^x04%s", message)
- }
- else
- {
- get_user_name(id, nome, 32)
- get_user_team(id, color, 9);
- format(strName, 191, "%s(%s) ^x01[^x04%s^x01] ^x03%s", alive, playerTeamName, ranks_nomes[rank[id]], nome)
- format(strText, 191, "%s", message)
- }
- format(message, 191, "%s^x01: %s", strName, strText)
- sendTeamMessage(color, isAlive, playerTeam)
- return PLUGIN_CONTINUE
- }
- public sendMessage(color[], alive)
- {
- new teamName[10]
- for(new player = 1; player < maxPlayers; player++)
- {
- if(!is_user_connected(player))
- continue
- get_pcvar_string(g_AdminListenFlag, cvars, charsmax(cvars))
- if(alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(cvars))
- {
- get_user_team(player, teamName, 9)// Stores user's team name to change back after sending the message
- changeTeamInfo(player, color)// Changes user's team according to color choosen
- writeMessage(player, message)// Writes the message on player's chat
- changeTeamInfo(player, teamName)// Changes user's team back to original
- }
- }
- }
- public sendTeamMessage(color[], alive, playerTeam)
- {
- new teamName[10]
- for(new player = 1; player < maxPlayers; player++)
- {
- if(!is_user_connected(player))
- continue
- get_pcvar_string(g_AdminListenFlag, cvars, charsmax(cvars))
- if(get_user_team(player) == playerTeam || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(cvars))
- {
- if(alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(cvars))
- {
- get_user_team(player, teamName, 9)// Armazena o nome da equipe do usuário para mudar de volta depois de enviar a mensagem
- changeTeamInfo(player, color)// Changes user's team according to color choosen
- writeMessage(player, message)// Writes the message on player's chat
- changeTeamInfo(player, teamName)// Changes user's team back to original
- }
- }
- }
- }
- public changeTeamInfo(player, team[])
- {
- message_begin(MSG_ONE, teamInfo, _, player)// Tells to to modify teamInfo(Which is responsable for which time player is)
- write_byte(player)// Write byte needed
- write_string(team)// Changes player's team
- message_end()// Also Needed
- }
- public writeMessage(player, message[])
- {
- message_begin(MSG_ONE, sayText, {0, 0, 0}, player)// Tells to modify sayText(Which is responsable for writing colored messages)
- write_byte(player)// Write byte needed
- write_string(message)// Effectively write the message, finally, afterall
- message_end()// Needed as always
- }
- /*----------------------------------------------------------------------------------------------------------------
- -CHECAR O LEVEL OU ADD++
- ----------------------------------------------------------------------------------------------------------------*/
- public check_level(id, sound)
- {
- if(!is_user_connected(id)) return PLUGIN_HANDLED;
- new nome[32]; get_user_name(id, nome, 31)
- if(level[id] < maxlevels)
- {
- while(xp[id] >= xp_num[level[id]])
- {
- level[id]++
- if(sound)
- {
- if(level[id] == maxlevels)
- {
- ColorChat(id, NORMAL, "!g[%s] !yVoce atingiu o level maximo. Level maximo: !t%s!y.", xPrefix, level[id])
- ColorChat(0, NORMAL, "!g%s !yatingiu o level maximo. Level maximo: !t%s!y.", nome, level[id])
- client_cmd(0, "spk ambience/wolfhowl02.wav")
- return PLUGIN_HANDLED
- }
- set_ranks(id)
- }
- }
- }
- // Prevençoes de bugs... (Voltar ao maximo)
- if(level[id] == maxlevels && xp[id] > xp_num[level[id]-1])
- {
- xp[id] = xp_num[level[id]-1]
- salvar_dados(id)
- }
- if(level[id] >= maxlevels)
- {
- level[id] = maxlevels
- xp[id] = xp_num[level[id]-1]
- salvar_dados(id)
- }
- return PLUGIN_HANDLED
- }
- /*----------------------------------------------------------------------------------------------------------------
- -SETAR A POSICAO DO RANK
- ----------------------------------------------------------------------------------------------------------------*/
- public set_ranks(id)
- {
- if(level[id] <= 2) rank[id] = RANKS_RECRUTA
- if(level[id] >= 2) rank[id] = RANKS_SOLDADO
- if(level[id] >= 5) rank[id] = RANKS_SOLDADO_RASO
- if(level[id] >= 8) rank[id] = RANKS_ESPECIALISTA
- if(level[id] >= 11) rank[id] = RANKS_ESPECIALISTA_TECNICO
- if(level[id] >= 14) rank[id] = RANKS_PATRULEIRO
- if(level[id] >= 17) rank[id] = RANKS_CABO
- if(level[id] >= 20) rank[id] = RANKS_LIDER_DE_TIRO
- if(level[id] >= 23) rank[id] = RANKS_SARGENTO
- if(level[id] >= 26) rank[id] = RANKS_SARGENTO_DE_APOIO
- if(level[id] >= 29) rank[id] = RANKS_SARGENTO_MESTRE
- if(level[id] >= 32) rank[id] = RANKS_SARGENTO_MAIOR
- if(level[id] >= 33) rank[id] = RANKS_INTENDENTE
- if(level[id] >= 36) rank[id] = RANKS_ASPIRANTE
- if(level[id] >= 43) rank[id] = RANKS_GUERREIRO
- }
- /*----------------------------------------------------------------------------------------------------------------
- -SALVAR LEVEL,XP E RANK
- ----------------------------------------------------------------------------------------------------------------*/
- public salvar_dados(id)
- {
- if(!is_user_connected(id)) return PLUGIN_HANDLED;
- new auth[40], data[50]
- switch(get_pcvar_num(cvars[1]))
- {
- case 1: get_user_ip(id, auth, charsmax(auth), 1)
- case 2: get_user_name(id, auth, charsmax(auth))
- case 3: get_user_authid(id, auth, charsmax(auth))
- }
- formatex(data, charsmax(data), "%d %d", level[id], xp[id])
- fvault_pset_data(db_save, auth, data)
- return PLUGIN_HANDLED;
- }
- /*----------------------------------------------------------------------------------------------------------------
- -CARREGAR DADOS
- ----------------------------------------------------------------------------------------------------------------*/
- public client_putinserver(id)
- {
- new auth[40], data[50], x1[10], x2[10]
- switch(get_pcvar_num(cvars[1]))
- {
- case 1: get_user_ip(id, auth, charsmax(auth), 1)
- case 2: get_user_name(id, auth, charsmax(auth))
- case 3: get_user_authid(id, auth, charsmax(auth))
- }
- fvault_get_data(db_save, auth, data, charsmax(data))
- parse(data, x1, charsmax(x1), x2, charsmax(x2))
- level[id] = str_to_num(x1)
- xp[id] = str_to_num(x2)
- set_task(2.0, "set_ranks", id)
- check_level(id, 0)
- set_task(1.1, "hud_status", id, _, _, "b")
- }
- /*----------------------------------------------------------------------------------------------------------------
- -MOSTRAR XP AO MIRAR NA PESSOA
- ----------------------------------------------------------------------------------------------------------------*/
- public showStatus(id)
- {
- if(!is_user_bot(id) && is_user_connected(id))
- {
- new name[32], pid = read_data(2)
- get_user_name(pid, name, 31)
- new color1 = 0, color2 = 0
- new xxx = get_user_team(id)
- new xxx2 = get_user_team(pid)
- new team1 = xxx == 1, team2 = xxx2 == 1
- if (team2 == 1)
- color1 = 255
- else
- color2 = 255
- if (team1 == team2) // friend
- {
- set_hudmessage(color1, 50, color2, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01, -1)
- ShowSyncHudMsg(id, g_status_sync, "Nome: %s^nRank: %s^nLevel: %d^nXP: %d/%d", name, ranks_nomes[rank[pid]], level[pid], xp[pid], xp_num[level[pid]])
- }
- }
- }
- public hideStatus(id)
- {
- ClearSyncHud(id, g_status_sync)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement