Code:
enum _:Achieves // Logros disponibles
{
MURDER,
SURVIVOR,
AIMKEY,
EXECUTION,
ONEHPHERO
}
new const AchName[Achieves][] = // Nombre de cada uno
{
"I like Murdering",
"Survivor",
"Aimkey",
"Round of Execution",
"1 HP Hero"
}
new const AchDescription[Achieves][] = // Descripcion de cada uno
{
"Kill 500 Enemies",
"Surieve 250 Rounds",
"Make 125 Headshots",
"Kill 5 Enemies in one Round",
"Kill 5 Enemies with 1 HP"
}
new const AchRequirement[Achieves] = // Requerimiento para cada uno
{
500,
250,
125,
5,
5
}
new Achievement[33][Achieves]
new szTemp[555 char]
public plugin_init()
{
register_plugin("Achievements", "5.0", "fLaXXiE")
register_event("DeathMsg", "Event_DeathMsg", "a")
register_logevent("EventRoundStart", 2, "1=Round_Start")
register_clcmd("say /achievements", "CmdAch")
register_clcmd("say /ach", "CmdAch")
register_clcmd("say /a", "CmdAch")
}
public CmdAch(iPlayer)
{
new g_AchMenu = menu_create("\wAchievements^n^n", "Achievements_Handler")
new Key[6]
for(new iAch = 0; iAch < Achieves; iAch++)
{
if(Achievement[iPlayer][iAch] == 0) formatex(szTemp, charsmax(szTemp), "\d%s - [%s] [%d/%d]", AchName[iAch], AchDescription[iAch], Achievement[iPlayer][iAch], AchRequirement[iAch])
else if(Achievement[iPlayer][iAch] >= AchRequirement[iAch]) formatex(szTemp, charsmax(szTemp), "\y%s \w- [\rCOMPLETED\w]", AchName[iAch])
else formatex(szTemp, charsmax(szTemp), "\y%s \w- [\r%s\w]\w [\r%d\w/\r%d\w]", AchName[iAch], AchDescription[iAch], Achievement[iPlayer][iAch], AchRequirement[iAch])
menu_additem(g_AchMenu, szTemp, Key)
}
menu_setprop(g_AchMenu, MPROP_EXIT, MEXIT_ALL)
menu_display(iPlayer, g_AchMenu, 0)
}
/*public Achievements_Handler(iPlayer, g_AchMenu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(g_AchMenu)
return PLUGIN_HANDLED
}
else
{
if(Achievement[iPlayer][item] >= AchRequirement[item])
{
iAchTag[iPlayer] = item+1
ColorChat (iPlayer, GREY, "%s You have chosen^4 %s^3 as your tag", prefix, AchName[item])
}
else
{
ColorChat(iPlayer, GREY, "%s You have not unlocked the achievement yet.", prefix)
}
}
return PLUGIN_CONTINUE
}*/
///////////////////////////////////////////////////
///////// START OF ACHIEVEMENT ACTIONS ////////////
///////////////////////////////////////////////////
public Event_DeathMsg()
{
new iKiller = read_data(1)
new iVictim = read_data(2)
new szName[33]; get_user_name(iKiller, szName, charsmax(szName))
if(is_user_alive(iKiller) && get_user_team(iKiller) != get_user_team(iVictim))
{
Achievement[iKiller][EXECUTION]++
if(Achievement[iKiller][EXECUTION] == AchRequirement[EXECUTION])
{
ColorChat(0, GREY, "%s %s successfully unlocked the achievement %s!", prefix, szName, AchName[EXECUTION])
}
if(is_user_alive(iKiller) && get_user_team(iKiller) != get_user_team(iVictim))
{
Achievement[iKiller][MURDER]++
if(Achievement[iKiller][MURDER] == AchRequirement[MURDER])
{
ColorChat(0, GREY, "%s %s successfully unlocked the achievement %s!", prefix, szName, AchName[MURDER])
}
}
if(get_user_health(iKiller) == 1)
{
Achievement[iKiller][ONEHPHERO]++
if(Achievement[iKiller][ONEHPHERO] == AchRequirement[ONEHPHERO])
{
ColorChat(0, GREY, "%s %s successfully unlocked the achievement %s!", prefix, szName, AchName[ONEHPHERO])
}
}
if(read_data(3))
{
Achievement[iKiller][AIMKEY]++
if(Achievement[iKiller][AIMKEY] == AchRequirement[AIMKEY])
{
ColorChat(0, GREY, "%s %s successfully unlocked the achievement %s!", prefix, szName, AchName[AIMKEY])
}
}
}
return PLUGIN_CONTINUE
}
public EventRoundStart()
{
new iPlayers[32], iNum, iPlayer, szName[33]
get_players(iPlayers, iNum, "a")
for(new i = 0; i < iNum; i++)
{
iPlayer = iPlayers[i]
get_user_name(iPlayer, szName, charsmax(szName))
if(Achievement[iPlayer][EXECUTION] < 5)
Achievement[iPlayer][EXECUTION] = 0
if(is_user_alive(iPlayer))
{
Achievement[iPlayer][SURVIVOR]++
if(Achievement[iPlayer][SURVIVOR] == AchRequirement[SURVIVOR])
{
ColorChat(0, GREY, "%s %s successfully unlocked the achievement %s!", prefix, szName, AchName[SURVIVOR])
}
}
}
return PLUGIN_CONTINUE
}
///////////////////////////////////////////////////
////////// END OF ACHIEVEMENT ACTIONS /////////////
///////////////////////////////////////////////////
... Es facil hacerlo, a mi me andubieron al pelo, solo tengo q optimizarlo bien asi no me mata la ram xD