Rick Tanner wrote: > On crossfire.metalforge.net, I'm seeing the following error when players > try to deposit gold coins at the Scorn bank. [...] > File "/home/crossfire/share/crossfire/maps/python/IPO/banksay.py", line 64, in ? > if (CFPython.PayAmount(activator, (int(text[1])*exchange_rate)*fees)): > SystemError: Objects/longobject.c:689: bad argument to internal function The problem seems to be that a float is passed to PayAmount() (which expects an integer). After adding an explicit type cast (see attached patch), it did work for me again. -------------- next part -------------- Index: python/IPO/banksay.py =================================================================== RCS file: /cvsroot/crossfire/maps-bigworld/python/IPO/banksay.py,v retrieving revision 1.8 diff -w -c -5 -r1.8 banksay.py *** python/IPO/banksay.py 6 Dec 2004 04:48:05 -0000 1.8 --- python/IPO/banksay.py 13 Feb 2005 15:19:55 -0000 *************** *** 59,69 **** \nA service charge of %d percent will be placed on all deposits' \ %(service_charge) elif text[0] == 'deposit': if len(text)==2: ! if (CFPython.PayAmount(activator, (int(text[1])*exchange_rate)*fees)): bank.deposit(activatorname, int(text[1])) message = '%d recieved, %d imperials deposited to bank account. %s' \ %((int(text[1])*(exchange_rate/50))*fees,int(text[1]),random.choice(thanks_message)) else: message = 'You would need %d gold'%((int(text[1])*(exchange_rate/10))*fees) --- 59,69 ---- \nA service charge of %d percent will be placed on all deposits' \ %(service_charge) elif text[0] == 'deposit': if len(text)==2: ! if (CFPython.PayAmount(activator, int((int(text[1])*exchange_rate)*fees))): bank.deposit(activatorname, int(text[1])) message = '%d recieved, %d imperials deposited to bank account. %s' \ %((int(text[1])*(exchange_rate/50))*fees,int(text[1]),random.choice(thanks_message)) else: message = 'You would need %d gold'%((int(text[1])*(exchange_rate/10))*fees)