Files
NGECore2/scripts/commands/tip.py
T

133 lines
5.6 KiB
Python

from java.util import Date
from services.chat import ChatService
from services.chat import Mail
from services.sui import SUIWindow
from services.sui import SUIService
from services.sui.SUIWindow import Trigger
from services.sui.SUIService import MessageBoxType
from java.util import Vector
from main import NGECore
import sys
# initialize global vars (happens at compile time)
commandArgs = ""
commandLength = 0
actorID = long(0)
targetID = long(0)
tipAmount = 0
tipAmountBank = 0
bankSurcharge = 0
def setup():
return
def run(core, actor, target, commandString):
# set the global variables
global actorID
global targetID
global commandArgs
global commandLength
global tipAmount
global tipAmountBank
global bankSurcharge
actorID = actor.getObjectID()
targetID = target.getObjectID()
commandArgs = commandString.split(" ")
commandLength = len(commandArgs)
tipAmount = commandArgs[0]
tipAmountBank = commandArgs[0]
bankSurcharge = int(0.05) * int(tipAmountBank)
#/tip int || /tip target int
if commandLength == 1:
tipAmount = commandArgs[0]
actorFunds = actor.getCashCredits()
currentTarget = core.objectService.getObject(target.getObjectId())
if (actor.inRange(target.getPosition(), 100)): # 100 = 10m
if int(tipAmount) > 0 and int(tipAmount) <= 1000000:
if actorFunds >= int(tipAmount):
currentTarget.setCashCredits(int(tipAmount))
actor.setCashCredits(actorFunds - int(tipAmount))
currentTarget.sendSystemMessage(actor.getCustomName() + ' tips you ' + tipAmount + ' credits.', 0)
actor.sendSystemMessage('You successfully tip ' + tipAmount + ' credits to ' + currentTarget.getCustomName() + '.', 0)
return
actor.sendSystemMessage('You lack the cash funds to tip ' + tipAmount + ' credits to ' + currentTarget.getCustomName() + '.', 0)
return
actor.sendSystemMessage('Invalid tip amount, set amount between 1 and 1,000,000 credits', 0)
return
actor.sendSystemMessage('Target is too far away. Try a wire bank transfer instead.', 0)
return
#/tip target 30000000 bank
if commandLength == 2:
suiSvc = core.suiService
suiWindow = suiSvc.createMessageBox(MessageBoxType.MESSAGE_BOX_YES_NO, "@base_player:tip_wire_title", "@base_player:tip_wire_prompt", actor, actor, 10)
returnParams = Vector()
returnParams.add('btnOk:Text')
returnParams.add('btnCancel:Text')
suiWindow.addHandler(0, '', Trigger.TRIGGER_OK, returnParams, handleBankTip)
suiWindow.addHandler(1, '', Trigger.TRIGGER_CANCEL, returnParams, handleBankTip)
suiSvc.openSUIWindow(suiWindow)
return
return
def handleBankTip(owner, window, eventType, returnList):
core = NGECore.getInstance()
chatSvc = core.chatService
actorGlobal = core.objectService.getObject(actorID)
targetGlobal = core.objectService.getObject(targetID)
actorFunds = actorGlobal.getBankCredits()
totalLost = int(tipAmountBank) + bankSurcharge
if eventType == 0:
if int(totalLost) > actorFunds:
actorGlobal.sendSystemMessage('You do not have ' + str(totalLost) + ' credits (surcharge included) to tip the desired amount to ' + targetGlobal.getCustomName() + '.', 0)
return
if int(tipAmount) > 0 and int(actorFunds) >= int(totalLost):
date = Date()
targetName = targetGlobal.getCustomName()
targetMail = Mail()
targetMail.setMailId(chatSvc.generateMailId())
targetMail.setTimeStamp((int) (date.getTime() / 1000))
targetMail.setRecieverId(targetID)
targetMail.setStatus(Mail.NEW)
targetMail.setMessage(tipAmount + ' credits from ' + actorGlobal.getCustomName() + ' have been successfully delivered from escrow to your bank account')
targetMail.setSubject('@base_player:wire_mail_subject')
targetMail.setSenderName('bank')
actorMail = Mail()
actorMail.setMailId(chatSvc.generateMailId())
actorMail.setRecieverId(actorID)
actorMail.setStatus(Mail.NEW)
actorMail.setTimeStamp((int) (date.getTime() / 1000))
actorMail.setMessage('An amount of ' + tipAmount + ' credits have been transfered from your bank to escrow. It will be delivered to ' +
targetGlobal.getCustomName() + ' as soon as possible.')
actorMail.setSubject('@base_player:wire_mail_subject')
actorMail.setSenderName('bank')
targetGlobal.setBankCredits(int(tipAmount) + int(targetGlobal.getBankCredits()))
actorGlobal.setBankCredits(int(actorFunds) - int(totalLost))
actorGlobal.sendSystemMessage('You have successfully sent ' + tipAmount + ' bank credits to ' + targetGlobal.getCustomName(), 0)
targetGlobal.sendSystemMessage('You have successfully received ' + tipAmount + ' bank credits from ' + actorGlobal.getCustomName(), 0)
chatSvc.storePersistentMessage(actorMail)
chatSvc.storePersistentMessage(targetMail)
chatSvc.sendPersistentMessageHeader(actorGlobal.getClient(), actorMail)
chatSvc.sendPersistentMessageHeader(targetGlobal.getClient(), targetMail)
return
else:
actorGlobal.sendSystemMessage('You lack the bank funds to wire ' + tipAmount + ' bank funds to ' + targetGlobal.getCustomName() + '.', 0)
return
return