EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Development: Custom Code (https://www.eqemulator.org/forums/forumdisplay.php?f=665)
-   -   GetCarriedPlatinum (perl_client) (https://www.eqemulator.org/forums/showthread.php?t=36830)

NatedogEZ 05-11-2013 03:58 AM

GetCarriedPlatinum (perl_client)
 
There is already a GetCarriedMoney ... which takes all your money and puts it into Copper. In perl that only about 2.14~million plat total before you get Negative numbers!!!


This will allow to check how much platinum is in a players CURRENT inventory up to 2.14~billion plat!

This doesn't replace anything at all... just added around those lines listed in my source.

Can easily do a Buff bot that checks platinum and just
$client->TakeMoneyFromPP

Or other various money related scripts... since people mostly deal with Platinum on custom servers anyways!



// client.cpp // 2306//

Code:

uint64 Client::GetCarriedPlatinum() {

        return (
          (static_cast<uint64>(m_pp.platinum) ));
}


// client.h // 618 //

Code:

uint64        GetCarriedPlatinum();




// perl_client.cpp // 5420//

Code:

XS(XS_Client_GetCarriedPlatinum); /* prototype to pass -Wmissing-prototypes */
XS(XS_Client_GetCarriedPlatinum)
{
        dXSARGS;
        if (items != 1)
                Perl_croak(aTHX_ "Usage: Client::GetCarriedPlatinum(THIS)");
        {
                Client *        THIS;
                int                RETVAL;
                dXSTARG;

                if (sv_derived_from(ST(0), "Client")) {
                        IV tmp = SvIV((SV*)SvRV(ST(0)));
                        THIS = INT2PTR(Client *,tmp);
                }
                else
                        Perl_croak(aTHX_ "THIS is not of type Client");
                if(THIS == NULL)
                        Perl_croak(aTHX_ "THIS is NULL, avoiding crash.");

                RETVAL = THIS->GetCarriedPlatinum();
                XSprePUSH; PUSHi((IV)RETVAL);
        }
        XSRETURN(1);
}



// perl_client.cpp // 5897//

Code:

newXSproto(strcpy(buf, "GetCarriedPlatinum"), XS_Client_GetCarriedPlatinum, file, "$");

wolfwalkereci 05-11-2013 05:12 PM

Quote:

Negative numbers!!!
zomg no not the evil negative numbers.

lerxst2112 05-11-2013 09:40 PM

Did you try just returning the int64? You could also try returning an unsigned int for double the range assuming Perl handles that properly.

NatedogEZ 05-12-2013 01:31 AM

Quote:

Originally Posted by wolfwalkereci (Post 220838)
zomg no not the evil negative numbers.

Hey you are back and yes... negative numbers! lol



Money doesn't seem to go negative anymore.

So this returns the max amount of platinum you can hold on your character in their base inventory.. which is what I wanted it for.. maybe others might want it too?

Returning the money as anything higher would be pointless since Platinum will not exceed the cap.


Most servers don't deal with billions... but some do millions and it only takes 2.2~million platinum to get "GetCarriedMoney" to return the incorrect amount.


I tried returning all platinum ... banked / invetory / ect ect... and that number can go higher than my Perl will handle.. :(


All times are GMT -4. The time now is 07:48 AM.

Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.