Hi rAthena,
I have this code taken from easycore's Extended Battleground
/*==========================================
* Guild Skill Usage for Guild Masters
*------------------------------------------*/
ACMD_FUNC(bgskill)
{
int i, skillnum = 0, skilllv = 0;
unsigned int tick = gettick();
struct battleground_data *bgd;
const struct { char skillstr[3]; int id; } skills[] = {
{ "BO", 10010 },
{ "RG", 10011 },
{ "RS", 10012 },
{ "EC", 10013 },
};
// Check for Skill ID
for( i = 0; i < ARRAYLENGTH(skills); i++ )
{
if( strncmpi(message, skills[i].skillstr, 3) == 0 )
{
skillnum = skills[i].id;
break;
}
}
if( !skillnum )
{
clif_displaymessage(fd, "Invalid Skill string. Use @bgskill EC/RS/RG/BO");
return -1;
}
if( !map_getmapflag(sd->bl.m, MF_BATTLEGROUND) )
{
clif_displaymessage(fd, "This command is only available for Battleground.");
return -1;
}
else
{
if( (bgd = sd->bmaster_flag) != NULL )
{
if( bgd->skill_block_timer[skillnum] == INVALID_TIMER )
skilllv = bg_checkskill(bgd, skillnum);
else
{
bg_block_skill_status(bgd, skillnum);
skilllv = 0;
}
}
else
{
clif_displaymessage(fd, "This command is reserved for Team Leaders Only.");
return -1;
}
}
if( pc_cant_act(sd) || pc_issit(sd) || skill_isNotOk(skillnum, sd) || sd->ud.skilltimer != -1 || sd->sc.option&(OPTION_WEDDING|OPTION_XMAS|OPTION_SUMMER) || sd->state.only_walk || sd->sc.data[SC_BASILICA] )
return -1;
if( DIFF_TICK(tick, sd->ud.canact_tick) < 0 )
return -1;
if( sd->menuskill_id )
{
if( sd->menuskill_id == SA_TAMINGMONSTER )
sd->menuskill_id = sd->menuskill_val = 0; //Cancel pet capture.
else if( sd->menuskill_id != SA_AUTOSPELL )
return -1; //Can't use skills while a menu is open.
}
sd->skillitem = sd->skillitemlv = 0;
if( skilllv ) unit_skilluse_id(&sd->bl, sd->bl.id, skillnum, skilllv);
return 0;
}
I would like to create another one with this function that enables the guild leader to use @guildskill EC/RS/RG/BO inside the castles.
Can anyone point out which changes should I made?
Thank you