diff --git a/python/IPO/say.py b/python/IPO/say.py index 9fb899ac1..e7a842636 100755 --- a/python/IPO/say.py +++ b/python/IPO/say.py @@ -26,10 +26,10 @@ # mailscroll - drops mailscroll to on the floor # mailwarning - drops mailwarning to on the floor -# Constant price values -priceWritingPen=100 -priceScrollOfLiteracy=5000 -priceMailScroll=5 +# Constant price values (all prices in platinum coins) +priceWritingPen = 100 +priceScrollOfLiteracy = 5000 +priceMailScroll = 5 priceBag = 5 pricePackage = 50 priceCarton = 200 @@ -47,74 +47,85 @@ import Crossfire import string import CFLog -activator=Crossfire.WhoIsActivator() -activatorname=activator.Name -whoami=Crossfire.WhoAmI() -x=activator.X -y=activator.Y +activator = Crossfire.WhoIsActivator() +activatorname = activator.Name +whoami = Crossfire.WhoAmI() +x = activator.X +y = activator.Y log = CFLog.CFLog() text = string.split(Crossfire.WhatIsMessage()) if text[0] == 'help' or text[0] == 'yes': - message = 'How can I help you ? Here is a quick list of commands:\n\n- pen (%s platinum)\n- literacy (%s platinum)\n- mailscroll (%s platinum)\n- bag (%s platinum)\n- package (%s platinum)\n- carton (%s platinum)\n- send \n- receive'%(priceWritingPen,priceScrollOfLiteracy,priceMailScroll,priceBag,pricePackage,priceCarton) - whoami.Say(message) - + # split the help message in two parts to prevent the server from truncating it. + message = 'How can I help you?\nHere is a quick list of commands I understand:\n\n- pen (%s platinum)\n- literacy (%s platinum)\n- mailscroll (%s platinum)\n- bag (%s platinum)\n- package (%s platinum)'%(priceWritingPen, priceScrollOfLiteracy, priceMailScroll, priceBag, pricePackage) + whoami.Say(message) + + message = '- carton (%s platinum)\n- send \n- receive'%(priceCarton) + if activator.DungeonMaster: + message += '\n- mailwarning ' + whoami.Say(message) + elif text[0] == 'pen': - if (activator.PayAmount(priceWritingPen*priceFactor)): + if activator.PayAmount(priceWritingPen*priceFactor): whoami.Say('Here is your IPO Writing Pen') id = activator.Map.CreateObject('writing pen', x, y) - id.Name='IPO Writing Pen' - id.Value=0 + id.Name = 'IPO Writing Pen' + id.Value = 0 else: whoami.Say('You need %s platinum for an IPO Writing Pen'%priceWritingPen) + elif text[0] == 'literacy': - if (activator.PayAmount(priceScrollOfLiteracy*priceFactor)): + if activator.PayAmount(priceScrollOfLiteracy*priceFactor): whoami.Say('Here is your IPO Scroll of Literacy') id = activator.Map.CreateObject('scroll of literacy', x, y) - id.SetName='IPO Scroll of Literacy' - id.SetValue=0 + id.Name = 'IPO Scroll of Literacy' + id.NamePl = 'IPO Scrolls of Literacy' + id.Value = 0 else: whoami.Say('You need %s platinum for an IPO Scroll of Literacy'%priceScrollOfLiteracy) elif text[0] == 'mailscroll': - if len(text)==2: + if len(text) == 2: if log.info(text[1]): - if (activator.PayAmount(priceMailScroll*priceFactor)): + if activator.PayAmount(priceMailScroll*priceFactor): whoami.Say('Here is your mailscroll') id = activator.Map.CreateObject('scroll', x, y) - id.Name='mailscroll T: '+text[1]+' F: '+ activatorname - id.Value=0 + id.Name = 'mailscroll T: '+text[1]+' F: '+activatorname + id.NamePl = 'mailscrolls T: '+text[1]+' F: '+activatorname + id.Value = 0 else: whoami.Say('You need %s platinum for a mailscroll'%priceMailScroll) else: - whoami.Say('I don\'t know any %s'%text[1]) + whoami.Say('I don\'t know %s'%text[1]) else: whoami.Say('Usage "mailscroll "') elif text[0] == 'mailwarning': - if (activator.IsDungeonMaster): - if len(text)==2: + if activator.DungeonMaster: + if len(text) == 2: if log.info(text[1]): whoami.Say('Here is your mailwarning') id = activator.Map.CreateObject('diploma', x, y) - id.Name='mailwarning T: '+text[1]+' F: '+ activatorname - id.Value=0 + id.Name = 'mailwarning T: '+text[1]+' F: '+activatorname + id.NamePl = 'mailwarnings T: '+text[1]+' F: '+activatorname + id.Value = 0 else: whoami.Say('I don\'t know any %s'%text[1]) else: - whoami.Say('Usage "mailwarning "') + whoami.Say('Usage "mailwarning "') else: whoami.Say('You need to be DM to be able to use this command') + elif text[0] == 'bag' or text[0] == 'package' or text[0] == 'carton': - if (len(text) == 2): + if len(text) == 2: if log.info(text[1]): if text[0] == 'bag': price = priceBag @@ -129,15 +140,14 @@ elif text[0] == 'bag' or text[0] == 'package' or text[0] == 'carton': max = 100000 item = 'r_sack' - if ( activator.PayAmount(price*priceFactor) ): - box = activator.Map.CreateObject(item, x, y) - box.Name=sackName + ' T: ' + text[1] + ' F: ' + activatorname - box.WeightLimit=max - box.Strength=0 - whoami.Say(whoami, 'Here is your %s'%text[0]) - activator.InsertObject(box) + if activator.PayAmount(price*priceFactor): + box = activator.CreateObject(item) + box.Name = sackName+' T: '+text[1]+' F: '+activatorname + box.WeightLimit = max + box.Str = 0 + whoami.Say('Here is your %s'%text[0]) else: - whoami.Say('You need %s platinum to buy a %s'%( price, text[0] ) ) + whoami.Say('You need %s platinum to buy a %s'%(price, text[0])) else: whoami.Say('I don\'t know any %s'%text[1]) @@ -145,44 +155,55 @@ elif text[0] == 'bag' or text[0] == 'package' or text[0] == 'carton': else: whoami.Say('Send a %s to who?'%text[0] ) + elif text[0] == 'send': if len(text) == 2: + count = 0 inv = activator.CheckInventory(sackName) - map = 0 - if inv != 0: - while inv: - next = inv.Below - text2=string.split(inv.Name) - if text2[0]==sackName and text2[1]=='T:' and text2[3]=='F:' and text2[2] == text[1]: - map = Crossfire.ReadyMap(storage_map) - if map == 0: - whoami.Say('I\'m sorry but the post can\'t send your package now.') - else: - inv.Teleport(map, storage_x, storage_y) - whoami.Say('Package sent') - inv = next - else: + while inv: + next = inv.Below + text2 = string.split(inv.Name) + if len(text2) == 5 and text2[0] == sackName and text2[1] == 'T:' and text2[3] == 'F:' and text2[2] == text[1]: + map = Crossfire.ReadyMap(storage_map) + if map: + # rename container to prevent sending it multiple times + inv.Name = sackName+' F: '+text2[4]+' T: '+text2[2] + + inv.Teleport(map, storage_x, storage_y) + count = count+1 + else: + whoami.Say('I\'m sorry but the post can\'t send your package now.') + inv = next + if count <= 0: whoami.Say('No package to send.') + elif count == 1: + whoami.Say('Package sent.') + else: + whoami.Say('%d packages sent.'%count) else: whoami.Say('Send packages to who?') + + elif text[0] == 'receive': map = Crossfire.ReadyMap(storage_map) - if ( map != 0 ): - item = map.ObjectAt(storage_x, storage_y) + if map: count = 0 + item = map.ObjectAt(storage_x, storage_y) while item: previous = item.Above text2 = string.split(item.Name) - if ( len(text2) == 5 ) and ( text2[0] == sackName ) and ( text2[2] == activatorname ): - activator.InsertObjectInside(item) - count = count + 1 + if len(text2) == 5 and text2[0] == sackName and text2[4] == activatorname: + item.InsertInto(activator) + count = count+1 item = previous - if ( count == 0 ): + if count <= 0: whoami.Say('No package for you, sorry.') else: whoami.Say('Here you go.') else: whoami.Say('Sorry, our package delivery service is currently in strike. Please come back later.') + + else: whoami.Say('Do you need help?') Crossfire.SetReturnValue(1) diff --git a/python/IPO/send.py b/python/IPO/send.py index c1a566d2e..b0ee3411e 100755 --- a/python/IPO/send.py +++ b/python/IPO/send.py @@ -27,55 +27,33 @@ from time import localtime, strftime, time mail = CFMail.CFMail() date = strftime("%a, %d %b %Y %H:%M:%S CEST", localtime(time())) -activator=Crossfire.WhoIsActivator() -activatorname=activator.Name -whoami=Crossfire.WhoAmI() -idlist=[] +activator = Crossfire.WhoIsActivator() +activatorname = activator.Name +whoami = Crossfire.WhoAmI() +idlist = [] -inv = whoami.CheckInventory("mailscroll") -if inv != None: - while inv!=None: - print("INV:%s" %inv.Name) - text=string.split(inv.Name) - if text[0]=='mailscroll' and text[1]=='T:' and text[3]=='F:': - idlist.append(inv) - toname=text[2] - fromname=text[4] - message='From: %s\nTo: %s\nDate: %s\n\n%s\n' % (fromname, toname, date, inv.Message[:-1]) - activator.Write('mailscroll to '+toname+' sent.') - mail.send(1, toname, fromname, message) - elif text[0]=='mailscroll' and text[1]=='F:' and text[3]=='T:': - idlist.append(inv) - fromname=text[2] - toname=text[4] - message=inv.Message[:-1]+'\n' - mail.send(1, toname, fromname, message) +inv = whoami.Inventory +while inv: + text = string.split(inv.Name) + if text[0] == 'mailscroll' or text[0] == 'mailwarning': + if text[0] == 'mailscroll': + type = 1 else: - print "ID: %d"%inv - print "Name: "+inv.Name - inv=inv.Below - -inv = whoami.CheckInventory("mailwarning") -if inv != None: - while inv!=None: - text=string.split(inv.Name) - if text[0]=='mailwarning' and text[1]=='T:' and text[3]=='F:': + type = 3 + if text[1] == 'T:' and text[3] == 'F:': idlist.append(inv) - toname=text[2] - fromname=text[4] - message='From: %s\nTo: %s\nDate: %s\n\n%s\n' % (fromname, toname, date, inv.Message[:-1]) - activator.Write('mailwarning to '+toname+' sent.') - mail.send(3, toname, fromname, message) - elif text[0]=='mailwarning' and text[1]=='F:' and text[3]=='T:': + toname = text[2] + fromname = text[4] + message = 'From: %s\nTo: %s\nDate: %s\n\n%s\n'%(fromname, toname, date, inv.Message[:-1]) + activator.Write(text[0]+' to '+toname+' sent.') + mail.send(type, toname, fromname, message) + elif text[1] == 'F:' and text[3] == 'T:': idlist.append(inv) - fromname=text[2] - toname=text[4] - message=inv.Message[:-1]+'\n' - mail.send(3, toname, fromname, message) - else: - print "ID: %d"%inv - print "Name: "+inv.Name - inv=inv.Below + fromname = text[2] + toname = text[4] + message = inv.Message[:-1]+'\n' + mail.send(type, toname, fromname, message) + inv = inv.Below for inv in idlist: inv.Remove()