from Plasma import *
from PlasmaTypes import *
import xRandom
warpPlayers = ptAttribSceneobjectList(1, 'obj: player warps')
sdlStartPt = 'warpPlayerStartPt'
listWarpPlayers = []
class warpMagic(ptResponder,):
def __init__(self):
ptResponder.__init__(self)
self.version = 1
def OnServerInitComplete(self):
global byteStartPt
LocalAvatar = PtGetLocalAvatar()
ageSDL = PtGetAgeSDL()
ageSDL.setFlags(sdlStartPt, 1, 1)
ageSDL.sendToClients(sdlStartPt)
ageSDL.setNotify(self.key, sdlStartPt, 0.0)
byteStartPt = ageSDL[sdlStartPt][0]
print 'warpMagic.OnServerInitComplete(): byteStartPt = ',
print byteStartPt
for warp in warpPlayers.value:
pt = warp.getName()
listWarpPlayers.append(pt)
if (not len(PtGetPlayerList())):
print 'warpMagic.OnServerInitComplete(): on link-in, am only player here. Will reset player start point'
newPoint = byteStartPt
while (newPoint == byteStartPt):
newPoint = xRandom.randint(0, (len(listWarpPlayers) - 1))
byteStartPt = newPoint
elif (len(PtGetPlayerList()) == 1):
print 'warpMagic.OnServerInitComplete(): on link-in, 1 player already here. Will warp 2 points away (across from previous point)'
byteStartPt = (byteStartPt + 2)
if (byteStartPt == 4):
byteStartPt = 0
elif (byteStartPt >= 5):
byteStartPt = 1
else:
print 'warpMagic.OnServerInitComplete(): on link-in, 2 or more players already here. Will warp to next point'
if (byteStartPt == 0):
byteStartPt = 2
elif (byteStartPt == 1):
byteStartPt = 0
elif (byteStartPt == 2):
byteStartPt = 3
elif (byteStartPt == 3):
byteStartPt = 1
print 'warpMagic.OnServerInitComplete(): player start point = ',
print byteStartPt
warpPt = warpPlayers.value[byteStartPt].getKey()
LocalAvatar.physics.warpObj(warpPt)
ageSDL[sdlStartPt] = (byteStartPt,)
def OnSDLNotify(self, VARname, SDLname, playerID, tag):
global byteStartPt
ageSDL = PtGetAgeSDL()
PtDebugPrint(('warpMagic.OnSDLNotify():\t VARname: %s, SDLname: %s, tag: %s, value: %d' % (VARname,
SDLname,
tag,
ageSDL[VARname][0])))
if (VARname == sdlStartPt):
byteStartPt = ageSDL[sdlStartPt][0]
print 'warpMagic.OnSDLNotify(): byteStartPt = ',
print byteStartPt
VAR BYTE warpPlayerStartPt[1] DEFAULT=0 DISPLAYOPTION=red
<object name>:
logic:
actions:
- type: pythonfile
pythonfile:
file: warpMagic
parameters:
- type: sceneobjectlist
refs: ['scnobj:LinkInPointOne', 'scnobj:LinkInPointTwo', 'scnobj:LinkInPointThree', 'scnobj:LinkInPointFour']
Users browsing this forum: No registered users and 5 guests