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