Jump to content

Economy Revamp


Recommended Posts

  • Developer

w33bB4V.png
 


Overview


 

User Relevant


 

  • Physical Fiat Money    Your cash is now an item that can be interacted with and has weight!
     
  • Bank Account Entities   Actual Bank-Accounts consisting of Routing Numbers and References are now in place! 
     
  • Pay Method Dialog    Shops and Services (e. g. Barber, Clothing, Gas Stations, etc.) now allow you to decide how to pay! Owners can decide what method of payment they want to allow.
     
  • Scripted Job Payment Switch   Scripted Jobs with a few exceptions (e. g directly sold fish) now pay earned money to your bank account!
     
  • Detailed Transaction Log   A clean transaction history is now available!

Back-End


  • Double-Entry Bookkeeping    Transactions now follow the double-entry system thus allowing for regular calculation of assets!
     
  • Economy Watchdog   A System is in place, monitoring pre- and post-money changes to detect exploits and errors!
     
  • Alt-To-Alt Check    A System is in place monitoring any transfer of items (including the money) to detect alt-alt'ing!

 

 

 


Physical Fiat Money


Your cash is now an item that can be interacted with!

 

AxZovop.pngHB0Ea1W.png

 

 

To move, drop or store cash, just treat it as you would treat any other item.

 

Furthermore, to ease up the process, you can just pass in the word "Money" to any of the item commands and have the script figure out the item index.

 

As the Money has weight to it, appropriate measures to transport large amounts of cash have to be taken. 

 

To split the money, just simply provide the amount to be split to the Item-Command.
 

 

Example: Storing $200 inside a vehicle.

 

/vpitem money 200

 

 

Summary

 

Money is now an item and you can also use the word money in your item commands instead of a number.

 

 


Bank Account Entities


Actual Bank-Accounts consisting of Routing Numbers and References are now in place!

 

As opposed to before actual Bank-Accounts have been introduced which come with their own set of data. Any such Bank-Account contains the following relevant Information*:
 

▪ Routing Number

▪ Name

▪ Balance

*Only listing all relevant and non-backend properties.


 

Routing Number

A 9-Digit Identification Number for any Bank-Account. To receive any payment to your Bank-Account this Information has to be shared with the paying party.

 

Name

The Name of a Bank-Account is not necessarily only limited to your First and Lastname. Organizations and/or any other Name can be applied. This name can be changed as well should there be a need for it for certain events and fundraising.

 

Balance

Kept simply this is the total money you own within a Bank-Account. More specifically, this is the sum of your owed money subtracted by the money you own, resulting in a value that shows the balance between the former and the latter. 

 

 

 

Banking Procedures

 

Any Bank Transfer requires the Routing Number of the Receiving Party.

To obtain your own Routing Number, use /stats or /routing which also display all your other related routing numbers.

 

BzLGhNc.png

Routing Number displayed after using /stats

 

 

6cff8284e84f3ea3babe496c2ddf0e25.png

Routing Numbers displayed after using /routing

 

Going from the above Picture, the Routing Number "010000169" would need to be passed on to any Party that wants to transfer money to the Character with the name Isaac Kerner. Such transfer would be performed with the command /transfer if it was to come from your personal account, /ftransfer if it was to come from your faction account, /btransfer if it was to come from your business account.

 

WvT0Nn7.png

Usage of the command "/transfer"

 

This is a universal command for any transaction, be it for receiving accounts that are online or offline, factions or businesses. All that is required is a valid Routing Number and the above command can be used to transfer money to Characters, Factions, and Businesses.

 

Upon sending the Command with a valid Amount and Routing Number, you will be prompted to Confirm the Transaction with a random Hash. You will also see the Plain-Text Receiver's Name to ensure that you are transferring to the correct Account.

 

So, suppose an account with the Routing Number "010000169" exists and you know it's your friend John since he gave you his Bank Details. To transfer any Amount to John, you would type in the following Command: 

 

/transfer 200 010000169


Or with a comment.

 

/transfer 200 010000169 Your Comment

 

 

Which then prompts you with the following:

 

yIwA7JP.png

Prompt to confirm the transaction to John Doe for an Amount of $200.

 

 

The same procedure would apply to transferring any Amount to Factions or Businesses, for instance, to transfer your CCWP / PF fees to the LSPD, you would need to obtain their Bank Account Routing Number.

 

In Summary, a Routing Number was introduced to act as an Information Layer between the Receiving Party and the Paying Party. It is no longer possible to simply /banktransfer Firstname Lastname without having acquired the Routing Number from a person.

 

This was necessary to Anonymize Bank Accounts and to also to a certain degree stop people from Power Gaming a transaction onto someone else's Bank-Account without the Receiving Party even having shared their Bank-Account Details to the Paying Party.

 

To make a transfer from your personal account to another account, use:

/transfer [amount] [routing] [comment (optional)].

 

To make a transfer from your faction to another account, use:

/ftransfer [amount] [routing] [comment (optional)].
 

To make a transfer from your closest business script account to another account use:

/btransfer [amount] [routing] [comment (optional)].

 

 

Additionally, you can skip the transaction hash safety by enabling fast-transfers. To do so use /fasttransfer.

However, be careful and pay attention to your routings to avoid making wrong transactions.

 

/transfer 100 010000169 From my personal account to an Account with Routing 010000169
/ftransfer 100 010000169 From my faction account to an Account with Routing 010000169
/btransfer 100 010000169 From my first business account to an Account with Routing 010000169

 

 

 

Summary

 

Bankaccounts now have a number that identifies them which is called routing number. Instead of specifying a name like LSRP or John Doe in your transfer-commands, you now transfer to a Routing Number. 

 

 


Pay Method Dialog


Shops and Services (e. g. Barber, Clothing, Gas Stations, etc.) now allow you to decide how to pay!

 

The Option to choose your payment method for Goods and Services has been introduced and you will now be presented with a simple menu that allows you to select your preferred payment method at the checkout.

 

ypY77pq.png

Dialog to select the payment method.


After choosing your Method of Payment your transaction is completed. Employees also receive the information about the payment method chosen and can then decide to accept or decline it (/acceptorder & /denyorder)

 

Shop-Owners can furthermore use /bmethod to limit their buisiness to a certain type of transaction. This can be useful if owners do not want to accept any cash and thereby avoid the dangers of cash transport.

 

/bmethod cash
/bmethod bank
/bmethod all (default)

 

 

 

ab1e012cac8b01b9fabee423c6ca9324.png

Notification for employees after an order has been placed by a customer.

 

 

Example: An owner could be inclined to order his employees to deny all large payments made in cash due to security reasons as large amounts of physical cash (Remember, it has a weight to it now) ending up in his cashbox would need transport to a bank and thereby could lead to Cash-In-Transit Robberies.

 

 

Summary

 

You can now select Pay by Cash or Pay by Bank at shops and such. Owners can limit what you select to stop a certain method at their shop.

 

 


Scripted Job Payment Switch


Scripted Jobs with a few exceptions (e. g directly sold fish) now pay earned money to your bank account!

 

Job Payments are now paid out to your bank instead of cash. This means any character using these jobs to set up a base wealth, does not accumulate their money on their hand, which in itself combats inauthentic robberies at scripted job payment markers. However, the sale of natural products such as fish or meat is an exception to the switch and is still paid out in   

 

 


Detailed Transaction Log


A clean transaction history is now available!

 

Incoming on the UCP throughout the next weeks, thanks to the web developers.

 

 

 

 

DEVELOPMENT DIARY

Back-End Changes! Only Read to Know How The System Works. If you just want to Know How to Use it, Scroll up Again.

 

 


Double-Entry Bookkeeping


Transactions now follow the double-entry system thus allowing for regular calculation of assets!

 

Before the changes are explained, a brief explanation on how Money was transferred before the Update.

 

To transport a certain Amount from A to B, the Script just had to Know B and the Amount. No details about where the money came from (A in this case) were provided. So a transaction between A and B was two individual Operations.

 

"Take Money from A.

Give Money to B."

 

Between these two Operations, no actual link between A (From) and B (To) existed. This made tracking the transport of Money very difficult as an additional log had to be inspected and inspecting a certain transaction would not provide you with any details about where the money came from or where it went to.

 

Nearly 300 re-written Spots inside the Script and several newly introduced Systems later, a System was implemented that combined the Transport of Money into one Operation which did the following: 

 

"Take Money from A AND Give it to B"

 

While this might seem like a small change for the cost of rewriting an immense amount of spots, it is in actuality one of the most important concepts in bookkeeping and the core concept of Double-Entry Bookkeeping. 

 

Not only does this concept allow one to keep a precise record of transactions, but it furthermore allows to detect errors with these transactions. Given the following Formula, Assets = Liabilities + Equity, or for our case, Balance = Incoming - Outgoing.

 

One can now calculate the Balance a certain Account should have by summing all Outgoing Transactions and all Incoming Transactions to an Account and then comparing it with the Actual Balance that Account has.

As an example, suppose you have a Bank Account A, which has a Balance of 100.
Upon looking at all Transactions of this Bank Account A, you would see the following: 

 

[Transaction 1] Incoming Payment 200 from B. 

[Transaction 2] Outgoing Payment 100 to A.

 

Now with the above Formula, we can calculate the Balance of A by simply plugging in the parts:

 

Balance = SUM(Incoming) - SUM(Outgoing) = 200 - 100 = 100. 


And indeed 100 is the Balance so no error has happened on this Bank Account.

 

Should the Balance however not equal 100, or generally speaking the calculated Balance not equal the actual Balance of an Account, it would mean, that an error happened in the history of the Bank Account's transactions.

 

If the calculated amount is for example less than the Actual Balance, then the Account has more Money than it should have. In our case of a Game-Environment a Bug or Exploit likely made the Account acquire more Money than it should have. The same goes for the case that the calculated amount is higher than the actual Balance, which means that the Account is missing some money, likely due to a bug.

 

GTA:World houses multiple Systems that deal with Money on a daily basis, that is the reason why this concept is very useful as it allows someone to quickly detect any leaks within the transaction system and then calculate if Money was obtained through exploits, or if Money was lost due to bugs.

Any Transfer of Money, Cash, Bank runs through this Double-Entry Bookkeeping System. If a Scripted Job such as the Farmer pays you a wage, then that Money is now taken out from one of the many Server-Owned Bank Accounts and transferred to you. 

 

This allows us to quickly and precisely monitor how much certain Bank-Accounts (i. e. the Server-Owned Farmer-Job Bank) pay out to Characters and then compare these payments to balance out the economy more accurately and data-backed.

 

 


Economy Watchdog


A System is in place, monitoring pre- and post-money changes to detect exploits and errors!

 

The Economy Watchdog essentially just is there to ensure that nothing outside of the Double-Entry Bookkeeping Process goes wrong. That means should the Book-Keeping System give a greenlight for a transaction, yet any Game-System fail the Operation, thus, preventing the actual Money Transfer, the Watchdog is there for a last measure to detect it. 

 

It does so by noting down the Money-State Pre-Change (Before any Transaction Operation) along with the operation that is to be executed and eventually after the execution compares the Post-State (After the Transaction Operation) to determine if the process happened correctly. Should this check fail, a log with the backup state is put out so the refunding process is easier.

 

 


Alt-To-Alt Check


A System is in place monitoring any transfer of items (including the money) to detect alt-alt'ing!

 

An Alt-To-Alt Detection System is monitoring any Item-Movement. This is necessary to prevent any transfer of items between the Characters of the same PlayerWith the Physical Fiat Money, this also of course applies to the Money-Item. 

 

It does so by comparing the Initial Owner and the chain with the current Character that is handling an item, then upon noticing an Alt-To-Alt Action, it alerts the Admins as well as Logs this Alert for future investigations.

  • Upvote 26
  • Thanks 1
Link to comment
  • Developer

COMMAND DIRECTORY

 

 

ROUTING


 

routing

Check your routing numbers, including for your faction, business, and personal account.

 

 

 

BASIC TRANSFER


 

transfer [Amount] [Routing] [Comment (Optional)]   

→ Transfer money from your personal account to any other bank account.

 


 

fasttransfer

Enables / Disables Fast-Transfer. Fast-Transfer skips the /transact process, however, always ensure that you double-check the routing!

 


 

 

deposit [Routing (Optional if you want to deposit straight to your business/faction)]

Directly deposit cash into your personal / business or faction account. Just using /deposit deposits by default to your personal account.

 


 

withdraw [Routing (Optional if you want to withdraw straight to your business/faction)]

Directly withdraw cash from your personal / business or faction account. Just using /withdraw withdraws by default from your personal account.

 

 

 

 

FACTION


 

ftransfer [Amount] [Routing] [Comment (Optional)] 

→ Transfer money from your faction account to any other bank account.

 


 

fwithdraw [Amount] [Comment (Optional)] 

Withdraws the specified amount from the bank account of your faction and transfers it to your personal bank account

 


 

fdeposit [Amount] [Comment (Optional)] 

→ Deposits the specified amount of money from your personal bank account to the bank account of your faction.

 

 

 

CASHBOX


 

bcashbox withdraw [Amount]

→ Grab physical money out from your cash register inside your business!

 


 

bcashbox deposit [Amount] 

→ Put physical money into your cash register inside your business!

 

 

 

BUSINESS


 

binfo 

Alternative to /routing to find out your business routing number.

 


 

btransfer [Amount] [Routing] [Comment (Optional)] 

→ Transfer money from your nearest business to any other bank account.

 


 

bwithdraw [Amount] [Comment (Optional)] 

Withdraws the specified amount from the bank account of your nearest business and transfers it to your personal bank account.

 


 

bdeposit [Amount] [Comment (Optional)] 

→ Deposits the specified amount of money from your personal bank account to the bank account of your nearest business.

 


 

bmethod [Bank / Cash / All]

Limit your business payment method so customers can only pay with the specified method.

 


 

bpay [target] [amount] 

→  Offer a card reader to a customer. This will transfer the amount to your business once the customer accepts. You must be on shift (/startshift).

 


 

bpaccept [Hash]

Swipe your card through a card reader. Use the hash that was shown to you in chat to confirm the transaction!

 

 

 

ITEM


 

dropitem money [amount]

Drops the specified amount of money onto the ground.

 


 

vpitem money [amount]

Puts the specified amount of money into your vehicle.

 


 

vtitem money [amount]

→  Takes the specified amount of money from your vehicle.

 


 

ppitem money [amount]

→  Puts the specified amount of money into your property.

 


 

ptitem money [amount]

→ Takes the specified amount of money from your property.

 


 

spitem money [amount]

→ Puts the specified amount of money into your safe.

 


 

stitem money [amount]

→ Takes the specified amount of money from your safe.

 

  • Upvote 3
Link to comment
Guest
This topic is now closed to further replies.
×
×
  • Create New...