Originally posted by [b]MadMarine[/b]
http://www.eathena.ws/board/index.php?autocom=bugtracker&showbug=2132
These commands when using a negative value do not remove points. The problem is in pc.c in pc_paycash (around line 2810).
This:
Atcommand.c
CODE
if( !strcmpi(command+1,"cash") )
{
if( value > 0 )
pc_getcash(sd, value, 0);
else
pc_paycash(sd, value, 0);
}
else
{ // @points
if( value > 0 )
pc_getcash(sd, 0, value);
else
pc_paycash(sd, value, value);
}
and this:
charcommand.c
CODE
if( !strcmpi(command+1,"cash") )
{
if( value > 0 )
pc_getcash(pl_sd, value, 0);
else
pc_paycash(pl_sd, value, 0);
clif_displaymessage(fd, "Character's Cash Points changed!.");
}
else
{ // @points
if( value > 0 )
pc_getcash(pl_sd, 0, value);
else
pc_paycash(pl_sd, value, value);
clif_displaymessage(fd, "Character's Kafra Points changed!.");
}
Need to be this:
atcommand.c
CODE
if( !strcmpi(command+1,"cash") )
{
if( value > 0 )
pc_getcash(sd, value, 0);
else
pc_paycash(sd, -value, 0);
}
else
{ // @points
if( value > 0 )
pc_getcash(sd, 0, value);
else
pc_paycash(sd, -value, -value);
}
and this:
charcommand.c
CODE
if( !strcmpi(command+1,"cash") )
{
if( value > 0 )
pc_getcash(pl_sd, value, 0);
else
pc_paycash(pl_sd, -value, 0);
clif_displaymessage(fd, "Character's Cash Points changed!.");
}
else
{ // @points
if( value > 0 )
pc_getcash(pl_sd, 0, value);
else
pc_paycash(pl_sd, -value, -value);
clif_displaymessage(fd, "Character's Kafra Points changed!.");
}
and the problem is fixed.
Edited: Old version messed up shops a bit. This isn't as clean, but fixes the problem.
Edit again: Made more clear. Problem should be fixed though.
This post has been edited by MadMarine: Aug 28 2008, 05:05 AM