maps/python/pshop/entry.py

142 lines
3.9 KiB
Python

import Crossfire,datetime,CFDataBase
CFDB=CFDataBase.CFDataBase("PShop")
def GetObjectByWeightLimit(object, WeightLimit):
while object.WeightLimit!=WeightLimit:
object=object.Above
if not object:
return 0
return object
def GetObjectByName(object, Name):
while object.Name!=Name:
object=object.Above
if not object:
return 0
return object
def find_player(object):
while (object.Type != 1) : #1 is type 'Player'
object = object.Above
if not object:
return 0
return object
def GetObjectAt(Map,X,Y,Name):
Object=Map.ObjectAt(X,Y)
while Object!=None:
if Object.Name==Name:
return Object
else:
Object=Object.Above
return Object
def Expire():
global Owner
Inventory=mymap.ObjectAt(43,2)
MailMap=Crossfire.ReadyMap("/planes/IPO_storage")
while Inventory!=None:
if Inventory.Name!="Vault":
package=whoami.CreateObject("package")
package.Name="IPO-package F: Your-Private-Shop T: "+Owner
Inventory.InsertInto(package)
package.Teleport(MailMap,2,2)
Inventory=Inventory.Above
Inventory=mymap.ObjectAt(43,2)
while Inventory!=None:
if Inventory.Name!="Vault":
package=whoami.CreateObject("package")
package.Name="IPO-package F: Your-Private-Shop T: "+Owner
Inventory.InsertInto(package)
package.Teleport(MailMap,2,2)
Inventory=Inventory.Below
Dict=CFDB.get("pshop")
for i in Dict:
whoami.Say(i)
This=Dict.get(i)
whoami.Say(str(This))
if This[1]!="PickedUp":
That=mymap.ObjectAt(This[1][0],This[1][1])
whoami.Say(str(That))
if That!=None:
That=GetObjectByWeightLimit(That,int(i))
whoami.Say(str(That))
if That!=0:
That.Teleport(whoami.Map,37,0)
CFDB.store('pshop',{})
Owner="Unowned"
Chest=mymap.ObjectAt(30,8)
Chest=GetObjectByName(Chest, "Rent Box")
if Chest!=0:
Chest.Teleport(mymap, 15,10)
for i in range(0,34):
for a in range(0,35):
b=GetObjectAt(whoami.Map,i,a,'NoBuild')
b.Remove
b=GetObjectAt(whoami.Map,i,a,'NoSpell')
b.Remove()
GetObjectAt(whoami.Map,30,5,"Brazier material").Remove()
GetObjectAt(whoami.Map,30,6,"Firepot material").Remove()
GetObjectAt(whoami.Map,30,7,"Bright Firepot Material").Remove()
GetObjectAt(whoami.Map,29,8,"Red CWall material").Remove()
whoami.Map.ObjectAt(49,5).Teleport(whoami.Map,30,5)
whoami.Map.ObjectAt(49,4).Teleport(whoami.Map,30,6)
whoami.Map.ObjectAt(49,6).Teleport(whoami.Map,30,7)
whoami.Map.ObjectAt(49,7).Teleport(whoami.Map,29,8)
whoami=Crossfire.WhoAmI()
activator=Crossfire.WhoIsActivator()
activatorname=activator.Name
mymap=activator.Map
Variables=GetObjectByName(mymap.ObjectAt(49,0),"Variables")
VariableList= Variables.Message.split('\n')
Owner=VariableList[0]
Date=VariableList[1]
Days=VariableList[2]
Owner=Owner.split(": ")[1]
Date=Date.split(": ")[1]
Days=int(Days.split(": ")[1])
Year, Month, Day=Date.split("-")
LastDate=datetime.datetime(int(Year),int(Month),int(Day))
Today=datetime.date(1,2,3).today()
Today=datetime.datetime(Today.year, Today.month, Today.day)
DaysPast=(Today-LastDate).days
Days-=DaysPast
if Days<=0:
global Owner
Expire()
Variables.Message="Owner: "+Owner+"\nDate: "+str(Today.year)+"-"+str(Today.month)+"-"+str(Today.day)+"\nDays: "+str(Days)
if activatorname==Owner:
message=Crossfire.WhatIsMessage()
if (message.upper().find("ENTER")>-1) or (message.upper().find("YES")>-1):
X=activator.X
Y=activator.Y
activator.Teleport(mymap, 37,3)
activator.Teleport(mymap, X, Y)
whoami.Say("Greetings sire, you have "+str(Days)+" days left.")
else:
whoami.Say("Greetings sire, would you like entry?")
else:
if Owner!="Unowned":
whoami.Say("You are not alowed beyond this point. The rent will by up in "+str(Days)+" and you may rent it yourself then. If the current owner doesn't pay, that is.")
else:
whoami.Say("You are currently not alowed beyond this point. The rent is past due. If you wish to proceed, place a platinum coin in the deposit box.")