I would like to ask support on how to make the @duel command check first if there is an ongoing "dance skill" like Bragi, Whistle, etc. before @duel triggers. If there are ongoing dance skills (for bard/dancer class) then the @duel command will not go though and giving a dispbottom "Cannot duel while in Dance Skill.".
Here is my @duel code from my atcommand.c :
/*==========================================
* Duel organizing functions [LuzZza]
*
* @duel [limit|nick] - create a duel
* @invite <nick> - invite player
* @accept - accept invitation
* @reject - reject invitation
* @leave - leave duel
*------------------------------------------*/
ACMD_FUNC(invite)
{
unsigned int did = sd->duel_group;
struct map_session_data *target_sd = map_nick2sd((char *)message);
if(did <= 0) {
// "Duel: @invite without @duel."
clif_displaymessage(fd, msg_txt(350));
return 0;
}
if(duel_list[did].max_players_limit > 0 &&
duel_list[did].members_count >= duel_list[did].max_players_limit) {
// "Duel: Limit of players is reached."
clif_displaymessage(fd, msg_txt(351));
return 0;
}
if(target_sd == NULL) {
// "Duel: Player not found."
clif_displaymessage(fd, msg_txt(352));
return 0;
}
if(target_sd->duel_group > 0 || target_sd->duel_invite > 0) {
// "Duel: Player already in duel."
clif_displaymessage(fd, msg_txt(353));
return 0;
}
if(battle_config.duel_only_on_same_map && target_sd->bl.m != sd->bl.m)
{
sprintf(atcmd_output, msg_txt(364), message);
clif_displaymessage(fd, atcmd_output);
return 0;
}
duel_invite(did, sd, target_sd);
// "Duel: Invitation has been sent."
clif_displaymessage(fd, msg_txt(354));
return 0;
}
ACMD_FUNC(duel)
{
char output[CHAT_SIZE_MAX];
unsigned int maxpl=0, newduel;
struct map_session_data *target_sd;
if(sd->duel_group > 0) {
duel_showinfo(sd->duel_group, sd);
return 0;
}
if(sd->duel_invite > 0) {
// "Duel: @duel without @reject."
clif_displaymessage(fd, msg_txt(355));
return 0;
}
if(!duel_checktime(sd)) {
// "Duel: You can take part in duel only one time per %d minutes."
sprintf(output, msg_txt(356), battle_config.duel_time_interval);
clif_displaymessage(fd, output);
return 0;
}
if( message[0] ) {
if(sscanf(message, "%d", &maxpl) >= 1) {
if(maxpl < 2 || maxpl > 65535) {
clif_displaymessage(fd, msg_txt(357)); // "Duel: Invalid value."
return 0;
}
duel_create(sd, maxpl);
} else {
target_sd = map_nick2sd((char *)message);
if(target_sd != NULL) {
if((newduel = duel_create(sd, 2)) != -1) {
if(target_sd->duel_group > 0 || target_sd->duel_invite > 0) {
clif_displaymessage(fd, msg_txt(353)); // "Duel: Player already in duel."
return 0;
}
duel_invite(newduel, sd, target_sd);
clif_displaymessage(fd, msg_txt(354)); // "Duel: Invitation has been sent."
}
} else {
// "Duel: Player not found."
clif_displaymessage(fd, msg_txt(352));
return 0;
}
}
} else
duel_create(sd, 0);
return 0;
}
ACMD_FUNC(leave)
{
if(sd->duel_group <= 0) {
// "Duel: @leave without @duel."
clif_displaymessage(fd, msg_txt(358));
return 0;
}
duel_leave(sd->duel_group, sd);
clif_displaymessage(fd, msg_txt(359)); // "Duel: You left the duel."
return 0;
}
ACMD_FUNC(accept)
{
char output[CHAT_SIZE_MAX];
if(!duel_checktime(sd)) {
// "Duel: You can take part in duel only one time per %d minutes."
sprintf(output, msg_txt(356), battle_config.duel_time_interval);
clif_displaymessage(fd, output);
return 0;
}
if(sd->duel_invite <= 0) {
// "Duel: @accept without invititation."
clif_displaymessage(fd, msg_txt(360));
return 0;
}
if( duel_list[sd->duel_invite].max_players_limit > 0 && duel_list[sd->duel_invite].members_count >= duel_list[sd->duel_invite].max_players_limit )
{
// "Duel: Limit of players is reached."
clif_displaymessage(fd, msg_txt(351));
return 0;
}
duel_accept(sd->duel_invite, sd);
// "Duel: Invitation has been accepted."
clif_displaymessage(fd, msg_txt(361));
return 0;
}
ACMD_FUNC(reject)
{
if(sd->duel_invite <= 0) {
// "Duel: @reject without invititation."
clif_displaymessage(fd, msg_txt(362));
return 0;
}
duel_reject(sd->duel_invite, sd);
// "Duel: Invitation has been rejected."
clif_displaymessage(fd, msg_txt(363));
return 0;
}
/*===================================
Question
johnbond
Hello everyone!
I would like to ask support on how to make the @duel command check first if there is an ongoing "dance skill" like Bragi, Whistle, etc. before @duel triggers. If there are ongoing dance skills (for bard/dancer class) then the @duel command will not go though and giving a dispbottom "Cannot duel while in Dance Skill.".
Here is my @duel code from my atcommand.c :
Any help will be greatly appreciated.
Thank you guys!
Anyone please?
EDIT:
Nevermind friends I already found it.
Thank you.
Mods kindly delete or close this topic. Thanks.
Edited by johnbondLink to comment
Share on other sites
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.