Sphereserver / Source-X

Ultima Online server emulator
Apache License 2.0
57 stars 45 forks source link

[Feature Request] New trigger: @VirtualCoin #1151

Open canerksk opened 11 months ago

canerksk commented 11 months ago

A trigger that is triggered when the character's virtual gold changes in any way, increases or decreases, can be a useful trigger to be used to control the characters' virtual money.

eg;

        case CHC_VIRTUALGOLD:
        {
            int64 currentGold = m_virtualGold;
            int64 newGold = s.GetArgLLVal();

            m_virtualGold = newGold;

            if (IsTrigUsed(TRIGGER_VIRTUALCOIN))
            {
                CScriptTriggerArgs Args;
                Args.m_VarsLocal.SetNumNew("CurrentCoin", currentGold);
                Args.m_VarsLocal.SetNumNew("newCoin", newGold);
                Args.m_VarsLocal.SetNumNew("Coin", newGold - currentGold);
                Args.m_VarsLocal.SetNumNew("CoinType", 2);
                Args.m_VarsLocal.SetNumNew("ID", ITEMID_GOLD_C1);
                Args.m_VarsLocal.SetNumNew("Type", IT_GOLD);
                OnTrigger(CTRIG_VirtualCoin, this, &Args);
            }

            UpdateStatsFlag();
            break;
        }

The codes here are purely examples. Although many have been tested, some may need to be rewritten.