Jump to content

Scirey

Members
  • Posts

    4
  • Joined

  • Last visited

Posts posted by Scirey

  1. 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

×
×
  • Create New...