608 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			608 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			Python
		
	
	
| # Script for say event of Imperial Bank Tellers
 | |
| #
 | |
| # Copyright (C) 2002 Joris Bontje
 | |
| #
 | |
| # This program is free software; you can redistribute it and/or modify
 | |
| # it under the terms of the GNU General Public License as published by
 | |
| # the Free Software Foundation; either version 2 of the License, or
 | |
| # (at your option) any later version.
 | |
| #
 | |
| # This program is distributed in the hope that it will be useful,
 | |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| # GNU General Public License for more details.
 | |
| #
 | |
| # You should have received a copy of the GNU General Public License
 | |
| # along with this program; if not, write to the Free Software
 | |
| # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | |
| #
 | |
| # The author can be reached via e-mail at jbontje@suespammers.org
 | |
| #
 | |
| # Updated to use new path functions in CFPython and broken and
 | |
| # modified a bit by -Todd Mitchell
 | |
| 
 | |
| 
 | |
| import Crossfire
 | |
| 
 | |
| import string
 | |
| import random
 | |
| import CFBank
 | |
| import CFItemBroker
 | |
| import CFMail
 | |
| mail=CFMail.CFMail()
 | |
| Skuds="Imperial-Bank-Of-Skud"+str("Imperial-Bank-Of-Skud".__hash__()) #account to put fees into.  Let's everyone see how much the bank is actually being used.
 | |
| activator = Crossfire.WhoIsActivator()
 | |
| activatorname = activator.Name
 | |
| whoami = Crossfire.WhoAmI()
 | |
| import sys
 | |
| sys.stdout=sys.stderr=open('/tmp/checks.log','w')
 | |
| x = activator.X
 | |
| y = activator.Y
 | |
| CoinTypes={"SILVER":1,"GOLD":10,"PLATINUM":50,"JADE":5000,"AMBERIUM":500000, "IMPERIAL NOTE":10000,"10 IMPERIAL NOTE":100000,"100 IMPERIAL NOTE":1000000}
 | |
| ArchType={"SILVER":"silvercoin","GOLD":"goldcoin","PLATINUM":"platinacoin","JADE":"jadecoin","AMBERIUM":"ambercoin", "IMPERIAL NOTE":"imperial","10 IMPERIAL NOTE":"imperial10","100 IMPERIAL NOTE":"imperial100"}
 | |
| 
 | |
| conversionfactorgold=10
 | |
| conversionfactorplat=50
 | |
| conversionfactorjade=5000
 | |
| conversionfactoramber=50*10000
 | |
| 
 | |
| #EASILY SETTABLE PARAMETERS
 | |
| service_charge = 1    # service charges for transactions as a percent
 | |
| 
 | |
| bankdatabase = "ImperialBank_DB"
 | |
| 
 | |
| fees = (service_charge/100.0)+1
 | |
| bank = CFBank.CFBank(bankdatabase)
 | |
| 
 | |
| 
 | |
| thanks_message = [ \
 | |
| 	'Thank you for banking the Imperial Way.', \
 | |
| 	'Thank you for banking the Imperial Way.', \
 | |
| 	'Thank you, please come again.', \
 | |
| 	'Thank you, please come again.', \
 | |
| 	'Thank you for your patronage.', \
 | |
| 	'Thank you for your patronage.', \
 | |
| 	'Thank you, have a nice day.', \
 | |
| 	'Thank you, have a nice day.', \
 | |
| 	'Thank you. "Service" is our middle name.', \
 | |
| 	'Thank you. "Service" is our middle name.', \
 | |
| 	'Thank you. Hows about a big slobbery kiss?' ]
 | |
| 
 | |
| mymap=activator.Map
 | |
| if whoami.Name.find("Deposit Box")>-1:
 | |
| 	
 | |
| 	ScriptParm=Crossfire.ScriptParameters()
 | |
| 	if ScriptParm=="Close":
 | |
| 		t=activator.CheckInventory("SkudCtrl")
 | |
| 		
 | |
| 		
 | |
| 		
 | |
| 		Total=float(t.Title)
 | |
| 		Total=long(Total)
 | |
| 		
 | |
| 		t.Quantity=0
 | |
| 		
 | |
| 		MyInv=whoami.Inventory
 | |
| 		Value=0
 | |
| 		while MyInv!=None:
 | |
| 			if (MyInv.Name!="Apply") and (MyInv.Name!="Close"):
 | |
| 				
 | |
| 				Value+=MyInv.Value*MyInv.Quantity
 | |
| 				MyInv1=MyInv.Below
 | |
| 				MyInv.Teleport(mymap, 15,3)
 | |
| 				MyInv=MyInv1
 | |
| 			else:
 | |
| 				MyInv=MyInv.Below
 | |
| 		
 | |
| 		bank.deposit(activatorname, Value)
 | |
| 		Difference=abs(Value-Total)
 | |
| 		
 | |
| 		
 | |
| 		Fee=Difference-(Difference/fees)
 | |
| 		bank.withdraw(activatorname, int(Fee))
 | |
| 		
 | |
| 		whoami.Say("A Service charge of "+str(int(Fee))+" silver coins has been charged on this transaction.")
 | |
| 		
 | |
| 		
 | |
| 		
 | |
| 	else:
 | |
| 		
 | |
| 		balance=bank.getbalance(activatorname)
 | |
| 		Total=balance
 | |
| 		
 | |
| 		if balance >= 1000000:
 | |
| 			
 | |
| 			t=whoami.CreateObject("imperial100")
 | |
| 			
 | |
| 			bank.withdraw(activatorname,1000000)
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		if balance >= 1000000/2:
 | |
| 			t=whoami.CreateObject("ambercoin")
 | |
| 			bank.withdraw(activatorname,1000000/2)
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		if balance >= 1000000/2:
 | |
| 			t=whoami.CreateObject("ambercoin")
 | |
| 			bank.withdraw(activatorname,1000000/2)
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		
 | |
| 		if balance >= 100000:
 | |
| 			t=whoami.CreateObject("imperial10")
 | |
| 			bank.withdraw(activatorname,100000)
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		if balance >= 100000:
 | |
| 			t=whoami.CreateObject("imperial10")
 | |
| 			bank.withdraw(activatorname,100000)
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		if balance >= 100000:
 | |
| 			t=whoami.CreateObject("imperial10")
 | |
| 			bank.withdraw(activatorname,100000)
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		if balance >= 100000:
 | |
| 			t=whoami.CreateObject("imperial10")
 | |
| 			bank.withdraw(activatorname,100000)
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		if balance >= 100000:
 | |
| 			t=whoami.CreateObject("imperial10")
 | |
| 			bank.withdraw(activatorname,100000)
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		
 | |
| 		if balance >= 10000:
 | |
| 			t=whoami.CreateObject("imperial")
 | |
| 			bank.withdraw(activatorname,10000)
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		if balance >= 10000:
 | |
| 			t=whoami.CreateObject("imperial")
 | |
| 			bank.withdraw(activatorname,10000)
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		if balance >= 10000:
 | |
| 			t=whoami.CreateObject("imperial")
 | |
| 			bank.withdraw(activatorname,10000)
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		if balance >= 10000:
 | |
| 			t=whoami.CreateObject("imperial")
 | |
| 			bank.withdraw(activatorname,10000)
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		if balance >= 10000:
 | |
| 			t=whoami.CreateObject("imperial")
 | |
| 			bank.withdraw(activatorname,10000)
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		if balance >= 10000:
 | |
| 			t=whoami.CreateObject("imperial")
 | |
| 			bank.withdraw(activatorname,10000)
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		if balance >= 10000:
 | |
| 			t=whoami.CreateObject("imperial")
 | |
| 			bank.withdraw(activatorname,10000)
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		if balance >= 10000:
 | |
| 			t=whoami.CreateObject("imperial")
 | |
| 			bank.withdraw(activatorname,10000)
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		if balance >= 10000:
 | |
| 			t=whoami.CreateObject("imperial")
 | |
| 			bank.withdraw(activatorname,10000)
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		if balance >= 10000:
 | |
| 			t=whoami.CreateObject("imperial")
 | |
| 			bank.withdraw(activatorname,10000)
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		if balance >= 10000/2:
 | |
| 			t=whoami.CreateObject("jadecoin")
 | |
| 			bank.withdraw(activatorname,10000/2)
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		if balance >= 10000/2:
 | |
| 			t=whoami.CreateObject("jadecoin")
 | |
| 			bank.withdraw(activatorname,10000/2)
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		if balance >= 5000:
 | |
| 			t=whoami.CreateObject("platinacoin")
 | |
| 			bank.withdraw(activatorname,5000)
 | |
| 			t.Quantity=100
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		if balance >= 1000:
 | |
| 			t=whoami.CreateObject("goldcoin")
 | |
| 			bank.withdraw(activatorname,1000)
 | |
| 			t.Quantity=100
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		if balance >= 1000:
 | |
| 			t=whoami.CreateObject("silvercoin")
 | |
| 			bank.withdraw(activatorname,1000)
 | |
| 			t.Quantity=1000
 | |
| 			balance=bank.getbalance(activatorname)
 | |
| 		balance=bank.getbalance(activatorname)
 | |
| 		Total=Total-balance
 | |
| 		t=activator.CreateObject("force")
 | |
| 		t.Name="SkudCtrl"
 | |
| 		t.Title=str(Total)
 | |
| 		
 | |
| 		
 | |
| 			#tnew=t.InserInto(whoami)
 | |
| if (whoami.Name != "Deposit Box"):
 | |
| 	text = Crossfire.WhatIsMessage().split()
 | |
| 	if text[0] == 'help' or text[0] == 'yes':
 | |
| 		message ='You can:\n-deposit,-withdraw,-balance,-exchange, -cash, -transfer, -checks, -profits\
 | |
| 		\nAll transactions are in imperial notes\n(1 : 1000 gold coins). \
 | |
| 		\nA service charge of %d percent will be placed on all deposits.' \
 | |
| 		%(service_charge)
 | |
| 		if activator.DungeonMaster==1:
 | |
| 			message+="\nYou can also zero the balance for the bank of skud's profit with the zero-balance command."
 | |
| 	elif text[0]=="zero-balance":
 | |
| 		bank.withdraw(Skuds, bank.getbalance(Skuds))
 | |
| 		message="Balance zeroed."
 | |
| 	elif text[0]=="profits":
 | |
| 		message="The Imperial Bank of Skud has made "+str(bank.getbalance(Skuds)*0.029394968)+" pounds sterling in profit to date."
 | |
| 
 | |
| 	elif text[0] == 'deposit':
 | |
| 		import sys
 | |
| 		sys.stderr=open('/tmp/output.log','w')
 | |
| 		if len(text)==2:
 | |
| 			if text[1]=='check':
 | |
| 				whoami.Say('x')
 | |
| 				inv=activator.CheckInventory('bankcard')
 | |
| 				whoami.Say('x')
 | |
| 				if inv:
 | |
| 					whoami.Say('y')
 | |
| 					name1=string.split(inv.Name, "'")
 | |
| 					payer=name1[0]
 | |
| 					information=inv.Message
 | |
| 					information = string.split(information, "\n")
 | |
| 					if (information[0] !="CANCELED"):
 | |
| 						
 | |
| 						payee = string.split(information[0], ' ')
 | |
| 			#   whoami.Say(str(payee))
 | |
| 						
 | |
| 						payee=payee[5]
 | |
| 						if payee != activator.Name:
 | |
| 							if payee.upper() != "BEARER":
 | |
| 								message = "This check is not made out to you!"
 | |
| 				
 | |
| 								mail.send(1, payee, "The-Imperial-Bank-of-Skud", 'Dear Sir or Madam:'+ "\n" + 'It has come to our attention that an attempt to cash a check made out to you by someone other than you has been made.  The check was made out by' + payer + '; and, the attempt to cash it was made by' + activator.Name + '.  We apologise for any trouble this may cause, and would like to inform you that we are always at your service.' + "\n \n" + 'Sincerly,'+ "\n"+'The Imperial Bank of Skud' )
 | |
| 								mail.send(1, payer, "The-Imperial-Bank-of-Skud", 'Dear Sir or Madam:' + "\n" 'It has come to our attention that an attempt to cash a check made out by you to '+ payee + ' has been made by ' +activator.Name + '.  We apologise for any trouble this may cause; and, we would like to inform you that we are always at your service.'+"\n"+ "\n"+'Sincerly,'+"\n"+' The Imperial Bank of Skud') 
 | |
| 							if payee.upper() == "BEARER":
 | |
| 								payee = activator.Name
 | |
| 						if payee == activator.Name:
 | |
| 								balanceavailable=bank.getbalance(payer)
 | |
| 								amount=string.split(information[1],' ')
 | |
| 								signer = string.split(information[2])
 | |
| 								signer = signer[1]
 | |
| 								if payer == signer:
 | |
| 									cointype=amount[1]
 | |
| 						#print amount
 | |
| 				#		whoami.Say(str(amount))
 | |
| 									cointypecoin=amount[2]
 | |
| 									amount=int(amount[1])
 | |
| 						#print cointype
 | |
| 						#print amount
 | |
| 			
 | |
| 					#	conversionfactor=1
 | |
| 					#	cointype1='silvercoin'
 | |
| 									if cointypecoin=="Silver":
 | |
| 										conversionfactor=1
 | |
| 										cointype1='silvercoin'
 | |
| 									elif cointypecoin == "'Gold'":
 | |
| 										conversionfactor=10
 | |
| 										cointype1='goldcoin'
 | |
| 									elif cointypecoin == "'Platinum'":
 | |
| 										conversionfactor=50
 | |
| 										cointype1='platinacoin'
 | |
| 									elif cointypecoin == "Jade":
 | |
| 										conversionfactor = 5000
 | |
| 										cointype1='jadecoin'
 | |
| 
 | |
| 									elif cointypecoin == "'Amberium'":
 | |
| 										conversionfactor = 500000
 | |
| 										cointype1='amberiumcoin'
 | |
| 									elif cointypecoin == "'Imperial'":
 | |
| 										conversionfactor = 10000
 | |
| 										cointype1='imperial'
 | |
| 									cashonhand=balanceavailable
 | |
| 									quantity = (((amount)*conversionfactor))
 | |
| 									if cashonhand >= quantity:
 | |
| 										if amount <= 0:
 | |
| 											message = "I'm sorry, We do not accept checks with a zero balance."
 | |
| 										elif amount == 1:
 | |
| 											message = "Okay, %s %s transfered to your account." %(cointype, cointypecoin)
 | |
| 											inv.Message="CANCELED\n"+inv.Message
 | |
| 											inv.Name = inv.Name + " (CANCELED)"
 | |
| 											bank.withdraw(payer,quantity)
 | |
| 											bank.deposit(payee,quantity)
 | |
| 								
 | |
| 										else:
 | |
| 											message = "Okay, %s %s transfered to your account." %(str(amount), cointypecoin)
 | |
| 											inv.Message="CANCELED\n"+inv.Message
 | |
| 											inv.Name = inv.Name + " (CANCELED)"
 | |
| 											bank.withdraw(payer,quantity)
 | |
| 											bank.deposit(payee,quantity)
 | |
| 									else:
 | |
| 										message = "I'm sorry, but it appears that %s does not have enough money in his account to cover this transaction." %(payer)
 | |
| 								else:
 | |
| 									message = "The signature on this check is invalid."
 | |
| 									mail.send(1,payer,"The-Imperial-Bank-Of-Skud", "Dear Sir or Madam:\nIt has come to our attention that an attempt to cash an improperly signed check was made.  The check was made out to " + payee + "and the attempt was made by " + activator.Name+".  The value of the check was " + str(amount[1]) +" "+str(amount[2])+' '+str(amount[3])+'.  We apologise for any trouble this may cause and would like to inform you that we are always at your service.'+"\n"+'Sincerly,'+"\n"+'The Imperial Bank of Skud')
 | |
| 					else:
 | |
| 						message="This check has already been cashed!"
 | |
| 				else:
 | |
| 					message = "Come back when you have a check to cash."
 | |
| 					whoami.Say('z')
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 						
 | |
| 				
 | |
| 		if len(text) >= 3:
 | |
| 			amount = int(text[1])
 | |
| 			Type=''
 | |
| 			for i in text[2:]:
 | |
| 				Type+=i+" "
 | |
| 			Type=Type[:len(Type)-1]
 | |
| 			
 | |
| 			if Type[len(Type)-1]=='s':
 | |
| 				Type=Type[:len(Type)-1]
 | |
| 			
 | |
| 			try:
 | |
| 				
 | |
| 				exchange_rate=CoinTypes.get(Type.upper())
 | |
| 				if amount <= 0:
 | |
| 					message = 'Usage "deposit <amount> <cointype>\n or deposit <issuer>\'s check"'
 | |
| 				
 | |
| 				elif activator.PayAmount(int(amount*exchange_rate)):
 | |
| 					bank.deposit(activatorname, int((amount*exchange_rate)/fees))
 | |
| 					bank.deposit(Skuds, int((amount*exchange_rate)-((amount*exchange_rate)/fees)))
 | |
| 					
 | |
| 					message = '%d %s received, %d %s deposited to bank account. %s' \
 | |
| 					%((amount),Type, int(amount/fees),Type, random.choice(thanks_message))
 | |
| 				else:
 | |
| 					message = 'You would need %d gold'%((amount*(exchange_rate/10)))
 | |
| 			except:
 | |
| 				message="Valid CoinTypes are Silver, Gold, Platinum, Jade, Amberium, Imperial Note, 10 Imperial Note, 100 Imperial Note.  \nPlease by sure to specify one of these types."
 | |
| 		else:
 | |
| 			#message = 'Usage "deposit <amount> <cointype>\n or deposit <issuer>\'s check"'
 | |
| 			pass
 | |
|  
 | |
| 	elif text[0] == 'withdraw':
 | |
| 		if len(text) >=3:
 | |
| 			amount = int(text[1])
 | |
| 			Type=''
 | |
| 			for i in text[2:]:
 | |
| 				Type+=i+" "
 | |
| 			Type=Type[:len(Type)-1]
 | |
| 			
 | |
| 			if Type[len(Type)-1]=='s':
 | |
| 				Type=Type[:len(Type)-1]
 | |
| 			try:
 | |
| 				
 | |
| 				exchange_rate=int(CoinTypes.get(Type.upper()))
 | |
| 				if amount <= 0:
 | |
| 					message = 'Usage "withdraw <amount> <cointype>"'
 | |
| 				
 | |
| 				
 | |
| 				elif bank.withdraw(activatorname, amount*exchange_rate):
 | |
| 					
 | |
| 					message = '%d %s withdrawn from bank account. %s' \
 | |
| 					%(amount,Type, random.choice(thanks_message))
 | |
| 					
 | |
| 					
 | |
| 					id = activator.Map.CreateObject(ArchType.get(Type.upper()), x, y)
 | |
| 					CFItemBroker.Item(id).add(amount)
 | |
| 					activator.Take(id)
 | |
| 				else:
 | |
| 					message = 'Not enough silver on your account'
 | |
| 			except:
 | |
| 				
 | |
| 				message="Valid CoinTypes are Silver, Gold, Platinum, Jade, Amberium, Imperial Note, 10 Imperial Note, 100 Imperial Note.  \nPlease by sure to specify one of these types."
 | |
| 				
 | |
| 		else:
 | |
| 			message = 'Usage "withdraw <amount in imperials>"'
 | |
| 
 | |
| 
 | |
| 	elif text[0] == 'exchange':
 | |
| 		if len(text) == 2:
 | |
| 			amount = int(text[1])
 | |
| 			if amount <= 0:
 | |
| 				message = 'Usage "exchange <amount>" (imperials to platinum coins)'
 | |
| 			elif amount > 10000:
 | |
| 				message = 'Sorry, we do not exchange more than 10000 imperials all at once.'
 | |
| 			else:
 | |
| 				inv = activator.CheckInventory('imperial')
 | |
| 				if inv:
 | |
| 					pay = CFItemBroker.Item(inv).subtract(amount)
 | |
| 					if pay:
 | |
| 						exchange_rate=10000
 | |
| 
 | |
| 						# Drop the coins on the floor, then try
 | |
| 						# to pick them up. This effectively
 | |
| 						# prevents the player from carrying too
 | |
| 						# many coins.
 | |
| 						id = activator.Map.CreateObject('platinum coin', x, y)
 | |
| 						CFItemBroker.Item(id).add(int(amount*(exchange_rate/50)))
 | |
| 						activator.Take(id)
 | |
| 
 | |
| 						message = random.choice(thanks_message)
 | |
| 					else:
 | |
| 						message = 'Sorry, you do not have %d imperials'%(amount)
 | |
| 				else:
 | |
| 					message = 'Sorry, you do not have any imperials'
 | |
| 		else:
 | |
| 			message = 'Usage "exchange <amount>" (imperials to platinum coins)'
 | |
| 	
 | |
| 
 | |
| 	elif text[0] == 'balance':
 | |
| 		if len(text)>=2:
 | |
| 			Type=''
 | |
| 			
 | |
| 			for i in text[1:]:
 | |
| 				Type+=i+" "
 | |
| 			Type=Type[:len(Type)-1]
 | |
| 			if Type[len(Type)-1]=='s':
 | |
| 				Type=Type[:len(Type)-1]
 | |
| 			exchange_rate=CoinTypes.get(Type.upper())
 | |
| 			balance=bank.getbalance(activatorname)/exchange_rate
 | |
| 			message= "Amount in bank: "
 | |
| 			if int(balance)==1:
 | |
| 				message+="1 "+Type+'.'
 | |
| 			elif int(balance)>1:
 | |
| 				message+=str(int(balance))+" "+Type
 | |
| 				
 | |
| 				if Type.find("Note")==-1:
 | |
| 					message+=" Coins."
 | |
| 				
 | |
| 				
 | |
| 			else:
 | |
| 				message="Your balance is less than 1 "+Type+'.'
 | |
| 		else:
 | |
| 			balance = bank.getbalance(activatorname)
 | |
| 			if balance == 1:
 | |
| 				message = 'Amount in bank: 1 silver coin'
 | |
| 			elif balance:
 | |
| 				message = 'Amount in bank: %d pounds sterling or %d silver coins.'%(balance*0.029394968, balance)
 | |
| 			else:
 | |
| 				message = 'Sorry, you have no balance.'
 | |
| 	elif text[0] == 'checks':
 | |
| 	
 | |
| 
 | |
|  
 | |
| 
 | |
| 
 | |
| 		balance=bank.getbalance(activatorname)
 | |
| 		if balance >=100:
 | |
| 			bank.withdraw(activatorname, 100)
 | |
| 
 | |
| 			mailmap=Crossfire.ReadyMap('/planes/IPO_storage')
 | |
| 			
 | |
| 			if mailmap:
 | |
| 				pack=activator.Map.CreateObject('package', 1, 1)
 | |
| 				pack.Name = 'IPO-package F: The-Imperial-Bank-of-Skud T: ' + activator.Name
 | |
| 				pack.Teleport(mailmap, 2, 2)
 | |
| 				cheque = mailmap.ObjectAt(int (5), int (0))
 | |
| 				message = "Your checks will be mailed to you shortly.  Thank you for your patronage."
 | |
| 				cheque.Name = str(activator.Name + "'s Checkbook")
 | |
| 				cheques=cheque.CheckArchInventory("bankcard")
 | |
| 				cheques.Name = str(activator.Name + "'s Check")
 | |
| 				cheques.NamePl = str(activator.Name + "'s Checks")
 | |
| 				chequenew = cheque.InsertInto(pack)
 | |
| 
 | |
| 
 | |
| 			
 | |
| 			
 | |
| 		else:
 | |
| 			message = "You do not have sufficient funds in your bank account."
 | |
| 
 | |
| 
 | |
| 	elif text[0] == 'cash':
 | |
| 		inv=activator.CheckInventory('bankcard')
 | |
| 	 
 | |
| 		if inv:
 | |
| 			name1=string.split(inv.Name, "'")
 | |
| 			payer=name1[0]
 | |
| 			information=inv.Message
 | |
| 			information = string.split(information, "\n")
 | |
| 			if (information[0] !="CANCELED"):
 | |
| 				payee = string.split(information[0], ' ')
 | |
| 	#   whoami.Say(str(payee))
 | |
| 				
 | |
| 				payee=payee[5]
 | |
| 				if payee != activator.Name:
 | |
| 					if payee.upper() != "BEARER":
 | |
| 						message = "This check is not made out to you!"
 | |
| 		
 | |
| 						mail.send(1, payee, "The-Imperial-Bank-of-Skud", 'Dear Sir or Madam:'+ "\n" + 'It has come to our attention that an attempt to cash a check made out to you by someone other than you has been made.  The check was made out by' + payer + '; and, the attempt to cash it was made by' + activator.Name + '.  We apologise for any trouble this may cause, and would like to inform you that we are always at your service.' + "\n \n" + 'Sincerly,'+ "\n"+'The Imperial Bank of Skud' )
 | |
| 						mail.send(1, payer, "The-Imperial-Bank-of-Skud", 'Dear Sir or Madam:' + "\n" 'It has come to our attention that an attempt to cash a check made out by you to '+ payee + ' has been made by ' +activator.Name + '.  We apologise for any trouble this may cause; and, we would like to inform you that we are always at your service.'+"\n"+ "\n"+'Sincerly,'+"\n"+' The Imperial Bank of Skud') 
 | |
| 					if payee.upper() == "BEARER":
 | |
| 						payee = activator.Name
 | |
| 				if payee == activator.Name:
 | |
| 						balanceavailable=bank.getbalance(payer)
 | |
| 						amount=string.split(information[1],' ')
 | |
| 						signer = string.split(information[2])
 | |
| 						signer = signer[1]
 | |
| 						if payer == signer:
 | |
| 							cointype=amount[1]
 | |
| 				#print amount
 | |
| 		#		whoami.Say(str(amount))
 | |
| 							cointypecoin=amount[2]
 | |
| 							amount=int(amount[1])
 | |
| 				#print cointype
 | |
| 				#print amount
 | |
| 	
 | |
| 			#	conversionfactor=1
 | |
| 			#	cointype1='silvercoin'
 | |
| 							if cointypecoin=="Silver":
 | |
| 								conversionfactor=1
 | |
| 								cointype1='silvercoin'
 | |
| 							elif cointypecoin == "'Gold'":
 | |
| 								conversionfactor=10
 | |
| 								cointype1='goldcoin'
 | |
| 							elif cointypecoin == "'Platinum'":
 | |
| 								conversionfactor=50
 | |
| 								cointype1='platinacoin'
 | |
| 							elif cointypecoin == "Jade":
 | |
| 								conversionfactor = 5000
 | |
| 								cointype1='jadecoin'
 | |
| 
 | |
| 							elif cointypecoin == "'Amberium'":
 | |
| 								conversionfactor = 500000
 | |
| 								cointype1='amberiumcoin'
 | |
| 							elif cointypecoin == "'Imperial'":
 | |
| 								conversionfactor = 10000
 | |
| 								cointype1='imperial'
 | |
| 							cashonhand=balanceavailable
 | |
| 							quantity = (((amount)*conversionfactor))
 | |
| 							if cashonhand >= quantity:
 | |
| 								if amount <= 0:
 | |
| 									message = "I'm sorry, We do not accept checks with a zero balance."
 | |
| 								elif amount == 1:
 | |
| 									message = "Okay, here is your %s %s." %(cointype, cointypecoin)
 | |
| 									inv.Message="CANCELED\n"+inv.Message
 | |
| 									inv.Name = inv.Name + " (CANCELED)"
 | |
| 									bank.withdraw(payer,quantity)
 | |
| 							
 | |
| 									id = activator.Map.CreateObject(cointype1, x, y)
 | |
| 									activator.Take(id)
 | |
| 						
 | |
| 								else:
 | |
| 									message = "Okay, here are your %s %s." %(str(amount), cointypecoin)
 | |
| 									inv.Message="CANCELED\n"+inv.Message
 | |
| 									inv.Name = inv.Name + " (CANCELED)"
 | |
| 									bank.withdraw(payer,quantity)
 | |
| 									id = activator.Map.CreateObject(cointype1, x, y)
 | |
| 									CFItemBroker.Item(id).add(int(amount))
 | |
| 									activator.Take(id)
 | |
| 							
 | |
| 							else:
 | |
| 								message = "I'm sorry, but it appears that %s does not have enough money in his account to cover this transaction." %(payer)
 | |
| 						else:
 | |
| 							message = "The signature on this check is invalid."
 | |
| 							mail.send(1,payer,"The-Imperial-Bank-Of-Skud", "Dear Sir or Madam:\nIt has come to our attention that an attempt to cash an improperly signed check was made.  The check was made out to " + payee + "and the attempt was made by " + activator.Name+".  The value of the check was " + str(amount[1]) +" "+str(amount[2])+' '+str(amount[3])+'.  We apologise for any trouble this may cause and would like to inform you that we are always at your service.'+"\n"+'Sincerly,'+"\n"+'The Imperial Bank of Skud')
 | |
| 			else:
 | |
| 				message="This check has already been cashed!"
 | |
| 		else:
 | |
| 			message = "Come back when you have a check to cash."
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 	else:
 | |
| 		message = 'Do you need help?'
 | |
| 
 | |
| 	whoami.Say(message)
 | |
| 	Crossfire.SetReturnValue(1)
 |