Go to trade.c and search:
// Players can not request trade from far away, unless they are allowed to use @trade.
if (!pc_can_use_command(sd, "trade", COMMAND_ATCOMMAND) &&
(sd->bl.m != target_sd->bl.m || !check_distance_bl(&sd->bl, &target_sd->bl, TRADE_DISTANCE))) {
clif_tradestart(sd, 0); // too far
return ;
}
target_sd->trade_partner = sd->status.account_id;
sd->trade_partner = target_sd->status.account_id;
clif_traderequest(target_sd, sd->status.name);
}
Replace to:
// Players can not request trade from far away, unless they are allowed to use @trade.
// Edited By [PromisE] (GMS Can trade on distance)
if ( pc_get_group_level(sd) <= 50 && !pc_can_use_command(sd, "trade", COMMAND_ATCOMMAND) && (sd->bl.m != target_sd->bl.m || !check_distance_bl(&sd->bl, &target_sd->bl, TRADE_DISTANCE))) {
clif_tradestart(sd, 0); // too far
return ;
}
target_sd->trade_partner = sd->status.account_id;
sd->trade_partner = target_sd->status.account_id;
clif_traderequest(target_sd, sd->status.name);
}
Then find:
if (type != 3)
return; //If client didn't send accept, it's a broken packet?
// Players can not request trade from far away, unless they are allowed to use @trade.
// Check here as well since the original character could had warped.
if ( !pc_can_use_command(sd, "trade", COMMAND_ATCOMMAND) &&
(sd->bl.m != tsd->bl.m || !check_distance_bl(&sd->bl, &tsd->bl, TRADE_DISTANCE))) {
clif_tradestart(sd, 0); // too far
sd->trade_partner=0;
tsd->trade_partner = 0;
return;
}
replace:
if (type != 3)
return; //If client didn't send accept, it's a broken packet?
// Players can not request trade from far away, unless they are allowed to use @trade.
// Check here as well since the original character could had warped.
// Edited By [PromisE]
if ( pc_get_group_level(tsd) <= 50 && !pc_can_use_command(sd, "trade", COMMAND_ATCOMMAND) && (sd->bl.m != tsd->bl.m || !check_distance_bl(&sd->bl, &tsd->bl, TRADE_DISTANCE))) {
clif_tradestart(sd, 0); // too far
sd->trade_partner=0;
tsd->trade_partner = 0;
return;
}
Then compile and restart your server.