Chaos92 Posted August 12, 2014 Group: Members Topic Count: 49 Topics Per Day: 0.01 Content Count: 1826 Reputation: 288 Joined: 08/03/12 Last Seen: 2 hours ago Share Posted August 12, 2014 If you have any sourcecode that can exclude vending players, mind to share with me ? Quote Link to comment Share on other sites More sharing options...
Emistry Posted August 12, 2014 Group: Forum Moderator Topic Count: 93 Topics Per Day: 0.02 Content Count: 10018 Reputation: 2369 Joined: 10/28/11 Last Seen: Sunday at 05:32 PM Share Posted August 12, 2014 if( pl_sd->state.vending || pl_sd->state.buyingstore || pl_sd->state.autotrade ) continue; add this during the @recallall checking part 1 Quote Link to comment Share on other sites More sharing options...
1 Napster Posted August 12, 2014 Group: Members Topic Count: 11 Topics Per Day: 0.00 Content Count: 196 Reputation: 72 Joined: 12/12/11 Last Seen: November 6, 2016 Share Posted August 12, 2014 (edited) open atcommand.cand find recallallreplace this ACMD_FUNC(recallall) { struct map_session_data* pl_sd; struct s_mapiterator* iter; int count; nullpo_retr(-1, sd); memset(atcmd_output, '\0', sizeof(atcmd_output)); if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { clif_displaymessage(fd, msg_txt(sd,1032)); // You are not authorized to warp someone to your current map. return -1; } count = 0; iter = mapit_getallusers(); for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) ) { if (sd->status.account_id != pl_sd->status.account_id && !( pl_sd->state.vending || pl_sd->state.buyingstore || pl_sd->state.autotrade ) && pc_get_group_level(sd) >= pc_get_group_level(pl_sd)) { if (pl_sd->bl.m == sd->bl.m && pl_sd->bl.x == sd->bl.x && pl_sd->bl.y == sd->bl.y) continue; // Don't waste time warping the character to the same place. if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) count++; else { if (pc_isdead(pl_sd)) { //Wake them up pc_setstand(pl_sd, true); pc_setrestartvalue(pl_sd,1); } pc_setpos(pl_sd, sd->mapindex, sd->bl.x, sd->bl.y, CLR_RESPAWN); } } } mapit_free(iter); clif_displaymessage(fd, msg_txt(sd,92)); // All characters recalled! if (count) { sprintf(atcmd_output, msg_txt(sd,1033), count); // Because you are not authorized to warp from some maps, %d player(s) have not been recalled. clif_displaymessage(fd, atcmd_output); } return 0; } Edited August 12, 2014 by Napster 1 Quote Link to comment Share on other sites More sharing options...
Lelouch vi Britannia Posted August 12, 2014 Group: Members Topic Count: 45 Topics Per Day: 0.01 Content Count: 715 Reputation: 84 Joined: 01/05/12 Last Seen: April 10, 2023 Share Posted August 12, 2014 I remember there was a topic on eA about this that exclude vendor and pub users to recallall but still working. In src/map/atcommand.c find ACMD_FUNC(recallall) and between line 3545 and 3546 add this line else if ( pl_sd->vender_id || pl_sd->chatID || pl_sd->state.autotrade ); If this wont work go try Emistry and Napster's post. Quote Link to comment Share on other sites More sharing options...
Chaos92 Posted August 12, 2014 Group: Members Topic Count: 49 Topics Per Day: 0.01 Content Count: 1826 Reputation: 288 Joined: 08/03/12 Last Seen: 2 hours ago Author Share Posted August 12, 2014 thanks sir ! Im gonna try these open atcommand.cand find recallallreplace this ACMD_FUNC(recallall) { struct map_session_data* pl_sd; struct s_mapiterator* iter; int count; nullpo_retr(-1, sd); memset(atcmd_output, '\0', sizeof(atcmd_output)); if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { clif_displaymessage(fd, msg_txt(sd,1032)); // You are not authorized to warp someone to your current map. return -1; } count = 0; iter = mapit_getallusers(); for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) ) { if (sd->status.account_id != pl_sd->status.account_id && !( pl_sd->state.vending || pl_sd->state.buyingstore || pl_sd->state.autotrade ) && pc_get_group_level(sd) >= pc_get_group_level(pl_sd)) { if (pl_sd->bl.m == sd->bl.m && pl_sd->bl.x == sd->bl.x && pl_sd->bl.y == sd->bl.y) continue; // Don't waste time warping the character to the same place. if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) count++; else { if (pc_isdead(pl_sd)) { //Wake them up pc_setstand(pl_sd, true); pc_setrestartvalue(pl_sd,1); } pc_setpos(pl_sd, sd->mapindex, sd->bl.x, sd->bl.y, CLR_RESPAWN); } } } mapit_free(iter); clif_displaymessage(fd, msg_txt(sd,92)); // All characters recalled! if (count) { sprintf(atcmd_output, msg_txt(sd,1033), count); // Because you are not authorized to warp from some maps, %d player(s) have not been recalled. clif_displaymessage(fd, atcmd_output); } return 0; } got error when compiled with this :/ Quote Link to comment Share on other sites More sharing options...
Question
Chaos92
If you have any sourcecode that can exclude vending players, mind to share with me ?
Link to comment
Share on other sites
4 answers 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.