142 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			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.")
 |