Issue information

Issue ID
#2132
Status
Fixed
Severity
None
Started
Hercules Elf Bot
Aug 27, 2008 3:05
Last Post
Hercules Elf Bot
Aug 27, 2008 3:05
Confirmation
N/A

Hercules Elf Bot - Aug 27, 2008 3:05

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