-adding casino scripts (Python)
git-svn-id: svn://svn.code.sf.net/p/crossfire/code/trunk/maps@1958 282e977c-c81d-0410-88c4-b93c2d0d6712master
parent
05e257a93c
commit
7328c87be1
|
@ -0,0 +1,49 @@
|
|||
#CFGamble
|
||||
# Todd Mitchell
|
||||
#The Python control file for Slot Machines and other such nonsense
|
||||
#Please do not put CFPython functions in this file,
|
||||
#but rather place these in the calling file
|
||||
import os.path
|
||||
import shelve
|
||||
import random
|
||||
|
||||
class SlotMachine:
|
||||
#sets up the file that holds all the slotmachine jackpots
|
||||
#make sure this points to your writable var/crossfire directory
|
||||
#you can delete that file to reset all the slotmachine jackpots
|
||||
slotfile = '/usr/local/CF/var/crossfire/SlotMachine_file'
|
||||
slotdb = {}
|
||||
def __init__(self,slotname,slotlist,minpot,maxpot):
|
||||
slotdb = shelve.open(self.slotfile)
|
||||
self.slotname = slotname
|
||||
self.slotlist = slotlist
|
||||
self.minpot = minpot
|
||||
self.maxpot = maxpot
|
||||
|
||||
def placebet(self,amount):
|
||||
if not self.slotdb.has_key(self.slotname):
|
||||
self.slotdb[self.slotname] = self.minpot+amount
|
||||
else:
|
||||
temp=self.slotdb[self.slotname]
|
||||
self.slotdb[self.slotname]=temp+amount
|
||||
|
||||
def payoff(self,amount):
|
||||
temp=self.slotdb[self.slotname]
|
||||
self.slotdb[self.slotname] = temp-amount
|
||||
|
||||
def spin(self,slotnum):
|
||||
result=[]
|
||||
while slotnum >=1:
|
||||
r = self.slotlist[random.randint(0,len(self.slotlist)-1)]
|
||||
result.append(r)
|
||||
slotnum=slotnum-1
|
||||
return result
|
||||
|
||||
def checkslot(self):
|
||||
limit = self.slotdb[self.slotname]
|
||||
if limit >= self.maxpot:
|
||||
self.slotdb[self.slotname] = self.maxpot
|
||||
elif limit < self.minpot:
|
||||
self.slotdb[self.slotname] = self.minpot
|
||||
return self.slotdb[self.slotname]
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
Casino (well so far only slotmachines)
|
||||
|
||||
You will need the Python Plugin running (I've only tested on 2.1 or better however).
|
||||
Copy CFGamble.py to your /maps/python directory
|
||||
Make sure you change the path where it will write the jackpots to your /var/crossfire directory
|
||||
Modify the map links of the slotmachines to point to where your slotmachine scripts are and your slotmachine scripts to point to CFGamble.py
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,91 @@
|
|||
#SlotMachine configuration file
|
||||
#to make a new kind of slot machine, copy this file, change the settings and point the slotmachine to the new file.
|
||||
# Standard type Gold Slots
|
||||
|
||||
import CFPython
|
||||
import sys
|
||||
sys.path.append('/usr/local/CF/share/crossfire/maps/python')
|
||||
import CFGamble
|
||||
|
||||
activator=CFPython.WhoIsActivator()
|
||||
activatorname=CFPython.GetName(activator)
|
||||
whoami=CFPython.WhoAmI()
|
||||
#gets slot name and adds map name for unique jackpot
|
||||
slotname= '%s#%s' %(CFPython.GetName(whoami),CFPython.GetMapPath(CFPython.GetMap(whoami)))
|
||||
x=CFPython.GetXPosition(activator)
|
||||
y=CFPython.GetYPosition(activator)
|
||||
|
||||
cointype = "goldcoin" #What type of coin is this slotmachine using?
|
||||
minpot = 100 #Minimum slot jackpot size
|
||||
maxpot = 50000 #Maxiumum slot jackpot size
|
||||
cost = 1 #Price of usage
|
||||
|
||||
#Change the items on the slot spinner or the number of items.
|
||||
slotlist = ["Club", "Staff", "Shield", "Sword", "Wand", "Scroll", "JackPot"]
|
||||
|
||||
spinners = 4 #How many spinners on the slotmachine?
|
||||
|
||||
|
||||
Slots=CFGamble.SlotMachine(slotname,slotlist,minpot,maxpot)
|
||||
|
||||
if (CFPython.PayAmount(activator, cost*10)):#goldcoin
|
||||
Slots.placebet(cost)
|
||||
results = Slots.spin(spinners)
|
||||
pay = 0
|
||||
pot = Slots.checkslot()
|
||||
CFPython.Write('%s' %results, activator, 7)
|
||||
for item in results:
|
||||
#match all but one - pays out by coin e.g 3 to 1 or 4 to 1
|
||||
if results.count(item) == spinners-1:
|
||||
if item == "Club":
|
||||
pay = 1
|
||||
elif item == "Staff":
|
||||
pay = 2
|
||||
elif item == "Shield":
|
||||
pay = 3
|
||||
elif item == "Sword":
|
||||
pay = 4
|
||||
elif item == "Wand":
|
||||
pay = 5
|
||||
elif item == "Scroll":
|
||||
pay = 10
|
||||
elif item == "JackPot":
|
||||
pay = 20
|
||||
else:
|
||||
break
|
||||
CFPython.Write("%d %ss, a minor win!" %(spinners-1,item),activator)
|
||||
payoff = cost*pay
|
||||
Slots.payoff(payoff)
|
||||
id = CFPython.CreateObject(cointype, (x, y))
|
||||
CFPython.SetQuantity(id, payoff)
|
||||
message = "you win %d %s!" %(payoff,cointype)
|
||||
break
|
||||
elif results.count(item) == spinners:
|
||||
#all match - pays out as percent of pot
|
||||
CFPython.Write('%d %ss, a Major win!' %(spinners,item),activator)
|
||||
if item == "Club":
|
||||
pay = .10
|
||||
elif item == "Staff":
|
||||
pay = .15
|
||||
elif item == "Shield":
|
||||
pay = .25
|
||||
elif item == "Sword":
|
||||
pay = .25
|
||||
elif item == "Wand":
|
||||
pay = .35
|
||||
elif item == "Scroll":
|
||||
pay = .50
|
||||
elif item == "JackPot":
|
||||
pay = 1
|
||||
payoff = pot*pay
|
||||
Slots.payoff(payoff)
|
||||
id = CFPython.CreateObject(cointype, (x, y))
|
||||
CFPython.SetQuantity(id, payoff)
|
||||
message = "you win %d %s!!" %(payoff,cointype)
|
||||
break
|
||||
else:
|
||||
message = "Better luck next time!"
|
||||
CFPython.Write(message,activator)
|
||||
CFPython.Write("%d in the Jackpot, Play again?" %Slots.checkslot(),activator)
|
||||
else:
|
||||
CFPython.Write("Sorry, you do not have enough money",activator)
|
|
@ -0,0 +1,95 @@
|
|||
#SlotMachine configuration file
|
||||
#to make a new kind of slot machine, copy this file, change the settings and point the slotmachine to the new file.
|
||||
# Standard type Platinum Slots
|
||||
|
||||
import CFPython
|
||||
import sys
|
||||
sys.path.append('/usr/local/CF/share/crossfire/maps/python')
|
||||
import CFGamble
|
||||
|
||||
activator=CFPython.WhoIsActivator()
|
||||
activatorname=CFPython.GetName(activator)
|
||||
whoami=CFPython.WhoAmI()
|
||||
#gets slot name and adds map name for unique jackpot
|
||||
slotname= '%s#%s' %(CFPython.GetName(whoami),CFPython.GetMapPath(CFPython.GetMap(whoami)))
|
||||
x=CFPython.GetXPosition(activator)
|
||||
y=CFPython.GetYPosition(activator)
|
||||
|
||||
cointype = "platinacoin" #What type of coin is this slotmachine using?
|
||||
minpot = 300 #Minimum slot jackpot size
|
||||
maxpot = 100000 #Maxiumum slot jackpot size
|
||||
cost = 1 #Price of usage
|
||||
|
||||
#Change the items on the slot spinner or the number of items.
|
||||
slotlist = ["Jester", "Lord", "Lady", "Prince", "Princess", "King", "Queen", "JackPot"]
|
||||
|
||||
spinners = 4 #How many spinners on the slotmachine?
|
||||
|
||||
|
||||
Slots=CFGamble.SlotMachine(slotname,slotlist,minpot,maxpot)
|
||||
|
||||
if (CFPython.PayAmount(activator, cost*50)):#platinumcoin
|
||||
Slots.placebet(cost)
|
||||
results = Slots.spin(spinners)
|
||||
pay = 0
|
||||
pot = Slots.checkslot()
|
||||
CFPython.Write('%s' %results, activator, 7)
|
||||
for item in results:
|
||||
#match all but one - pays out by coin e.g 3 to 1 or 4 to 1
|
||||
if results.count(item) == spinners-1:
|
||||
if item == "Jester":
|
||||
pay = 1
|
||||
elif item == "Lord":
|
||||
pay = 2
|
||||
elif item == "Lady":
|
||||
pay = 3
|
||||
elif item == "Prince":
|
||||
pay = 4
|
||||
elif item == "Princess":
|
||||
pay = 5
|
||||
elif item == "Queen":
|
||||
pay = 10
|
||||
elif item == "King":
|
||||
pay = 20
|
||||
elif item == "Jackpot":
|
||||
pay = 25
|
||||
else:
|
||||
break
|
||||
CFPython.Write("%d %ss, a minor win!" %(spinners-1,item),activator)
|
||||
payoff = cost*pay
|
||||
Slots.payoff(payoff)
|
||||
id = CFPython.CreateObject(cointype, (x, y))
|
||||
CFPython.SetQuantity(id, payoff)
|
||||
message = "you win %d %s!" %(payoff,cointype)
|
||||
break
|
||||
elif results.count(item) == spinners:
|
||||
#all match - pays out as percent of pot
|
||||
CFPython.Write('%d %ss, a Major win!' %(spinners,item),activator)
|
||||
if item == "Jester":
|
||||
pay = .1
|
||||
elif item == "Lord":
|
||||
pay = .15
|
||||
elif item == "Lady":
|
||||
pay = .25
|
||||
elif item == "Prince":
|
||||
pay = .3
|
||||
elif item == "Princess":
|
||||
pay = .4
|
||||
elif item == "Queen":
|
||||
pay = .5
|
||||
elif item == "King":
|
||||
pay = .6
|
||||
elif item == "JackPot":
|
||||
pay = 1
|
||||
payoff = pot*pay
|
||||
Slots.payoff(payoff)
|
||||
id = CFPython.CreateObject(cointype, (x, y))
|
||||
CFPython.SetQuantity(id, payoff)
|
||||
message = "you win %d %s!!" %(payoff,cointype)
|
||||
break
|
||||
else:
|
||||
message = "Better luck next time!"
|
||||
CFPython.Write(message,activator)
|
||||
CFPython.Write("%d in the Jackpot, Play again?" %Slots.checkslot(),activator)
|
||||
else:
|
||||
CFPython.Write("Sorry, you do not have enough money",activator)
|
|
@ -0,0 +1,90 @@
|
|||
#SlotMachine configuration file
|
||||
#to make a new kind of slot machine, copy this file, change the settings and point the slotmachine to the new file.
|
||||
|
||||
import CFPython
|
||||
import sys
|
||||
sys.path.append('/usr/local/CF/share/crossfire/maps/python')
|
||||
import CFGamble
|
||||
|
||||
activator=CFPython.WhoIsActivator()
|
||||
activatorname=CFPython.GetName(activator)
|
||||
whoami=CFPython.WhoAmI()
|
||||
#gets slot name and adds map name for unique jackpot
|
||||
slotname= '%s#%s' %(CFPython.GetName(whoami),CFPython.GetMapPath(CFPython.GetMap(whoami)))
|
||||
x=CFPython.GetXPosition(activator)
|
||||
y=CFPython.GetYPosition(activator)
|
||||
|
||||
cointype = "silvercoin" #What type of coin is this slotmachine using?
|
||||
minpot = 100 #Minimum slot jackpot size
|
||||
maxpot = 50000 #Maxiumum slot jackpot size
|
||||
cost = 1 #Price of usage
|
||||
|
||||
#Change the items on the slot spinner or the number of items.
|
||||
slotlist = ["Maid", "Merchant", "Coin", "Diamond", "Imp", "Devil", "JackPot"]
|
||||
|
||||
spinners = 4 #How many spinners on the slotmachine?
|
||||
|
||||
|
||||
Slots=CFGamble.SlotMachine(slotname,slotlist,minpot,maxpot)
|
||||
|
||||
if (CFPython.PayAmount(activator, cost)):#silvercoin
|
||||
Slots.placebet(cost)
|
||||
results = Slots.spin(spinners)
|
||||
pay = 0
|
||||
pot = Slots.checkslot()
|
||||
CFPython.Write('%s' %results, activator, 7)
|
||||
for item in results:
|
||||
#match all but one - pays out by coin e.g 3 to 1 or 4 to 1
|
||||
if results.count(item) == spinners-1:
|
||||
if item == "Maid":
|
||||
pay = 1
|
||||
elif item == "Merchant":
|
||||
pay = 2
|
||||
elif item == "Coin":
|
||||
pay = 3
|
||||
elif item == "Diamond":
|
||||
pay = 4
|
||||
elif item == "Imp":
|
||||
pay = 5
|
||||
elif item == "Devil":
|
||||
pay = 10
|
||||
elif item == "JackPot":
|
||||
pay = 20
|
||||
else:
|
||||
break
|
||||
CFPython.Write("%d %ss, a minor win!" %(spinners-1,item),activator)
|
||||
payoff = cost*pay
|
||||
Slots.payoff(payoff)
|
||||
id = CFPython.CreateObject(cointype, (x, y))
|
||||
CFPython.SetQuantity(id, payoff)
|
||||
message = "you win %d %s!" %(payoff,cointype)
|
||||
break
|
||||
elif results.count(item) == spinners:
|
||||
#all match - pays out as percent of pot
|
||||
CFPython.Write('%d %ss, a Major win!' %(spinners,item),activator)
|
||||
if item == "Maid":
|
||||
pay = .10
|
||||
elif item == "Merchant":
|
||||
pay = .15
|
||||
elif item == "Coin":
|
||||
pay = .25
|
||||
elif item == "Diamond":
|
||||
pay = .25
|
||||
elif item == "Imp":
|
||||
pay = .35
|
||||
elif item == "Devil":
|
||||
pay = .50
|
||||
elif item == "JackPot":
|
||||
pay = 1
|
||||
payoff = pot*pay
|
||||
Slots.payoff(payoff)
|
||||
id = CFPython.CreateObject(cointype, (x, y))
|
||||
CFPython.SetQuantity(id, payoff)
|
||||
message = "you win %d %s!!" %(payoff,cointype)
|
||||
break
|
||||
else:
|
||||
message = "Better luck next time!"
|
||||
CFPython.Write(message,activator)
|
||||
CFPython.Write("%d in the Jackpot, Play again?" %Slots.checkslot(),activator)
|
||||
else:
|
||||
CFPython.Write("Sorry, you do not have enough money",activator)
|
Loading…
Reference in New Issue