def loadEntities(self): startingPoint = (100, 0, 10) self.AIworld = AIWorld(render) self.collision = Collision(Monster.monster) #terrain, initialPos, slimeModelPath, floorPos, scale, lifePoint, volumicMass, movingSpeed, dt self.slime = Slime(self.terrain, startingPoint, "assets/models/slime.egg", 10, 10, 100, 0.01, 5, self.dt, "slime", self.collision) self.spawn = Spawn([self.slime]+Monster.monster, self.terrain, self.AIworld, self.collision) self.spawn.spawn()
def CmdGiveMonster(mob, args): if not len(args): return mspawn = ' '.join(args) lowerSpawn = mspawn.lower() for monsterSpawn in mob.player.monsterSpawns: if monsterSpawn.spawn.lower() == lowerSpawn: mob.player.sendGameText( RPG_MSG_GAME_DENIED, "You already have the %s monster template.\\n" % monsterSpawn.spawn) return from spawn import Spawn try: con = Spawn._connection.getConnection() spawn = Spawn.get( con.execute( "SELECT id FROM spawn WHERE lower(name)=\"%s\" LIMIT 1;" % lowerSpawn).fetchone()[0]) mspawn = spawn.name except: mob.player.sendGameText(RPG_MSG_GAME_DENIED, "No such spawn %s.\\n" % mspawn) return from player import PlayerMonsterSpawn PlayerMonsterSpawn(player=mob.player, spawn=mspawn) mob.player.sendGameText( RPG_MSG_GAME_GAINED, "You now have the %s monster template.\\n" % mspawn)
def CmdGrantMonster(mob, args): if len(args) < 2: return pname = args[0] lowerPName = pname.lower() args = args[1:] mspawn = ' '.join(args) lowerSpawn = mspawn.lower() from player import Player try: con = Player._connection.getConnection() player = Player.get( con.execute( "SELECT id FROM player WHERE lower(public_name) = \"%s\" LIMIT 1;" % lowerPName).fetchone()[0]) pname = player.publicName except: mob.player.sendGameText(RPG_MSG_GAME_DENIED, "No player by public name %s.\\n" % pname) return if not player.party or not len(player.party.members): mob.player.sendGameText(RPG_MSG_GAME_DENIED, "Player isn't logged in %s.\\n" % pname) return for monsterSpawn in player.monsterSpawns: if monsterSpawn.spawn.lower() == lowerSpawn: mob.player.sendGameText( RPG_MSG_GAME_DENIED, "%s already has the %s monster template.\\n" % (pname, monsterSpawn.spawn)) return from spawn import Spawn try: con = Spawn._connection.getConnection() spawn = Spawn.get( con.execute( "SELECT id FROM spawn WHERE lower(name) = \"%s\" LIMIT 1;" % lowerSpawn).fetchone()[0]) mspawn = spawn.name except: mob.player.sendGameText(RPG_MSG_GAME_DENIED, "No such spawn %s.\\n" % mspawn) return from player import PlayerMonsterSpawn PlayerMonsterSpawn(player=player, spawn=mspawn) mob.player.sendGameText( RPG_MSG_GAME_GAINED, "You have granted %s the %s monster template.\\n" % (pname, mspawn)) if player.zone: player.sendGameText( RPG_MSG_GAME_GAINED, "You now have the %s monster template.\\n" % mspawn)
def __init__(self, target, size=200): self.target = target self.size = size self.spawns = [Spawn(self.target) for x in range(size)] self.mating_pool = [] self.generation = 0 self.evolved = 0 self.fitness = 0
def CmdSpawn(mob, args): try: # Check if there were coords supplied. if args[-1].endswith(']'): # Extract the coords argument. # It should look like this: [x.x y.y z.z]. x = float(args[-3][1:]) y = float(args[-2]) z = float(args[-1][:-1]) spawnName = ' '.join(args[:-3]) # Otherwise take the immortals position. else: mypos = mob.simObject.position x = mypos[0] y = mypos[1] z = mypos[2] spawnName = ' '.join(args) except: mob.player.sendGameText( RPG_MSG_GAME_DENIED, "Invalid arguments to immortal spawn command. Syntax is '/imm spawn <spawn name> [x-coord y-coord z-coord]' where the coords with their '[]' brackets are optional.\\n" ) return # Get the spawn. try: con = Spawn._connection.getConnection() spawn = Spawn.get( con.execute( "SELECT id FROM spawn WHERE lower(name)=lower(\"%s\") LIMIT 1;" % spawnName).fetchone()[0]) except: mob.player.sendGameText(RPG_MSG_GAME_DENIED, \ "Failure spawning %s, this spawn doesn't exist.\\n"%spawnName) return # Put the transform together. rot = mob.simObject.rotation transform = (x, y, z, rot[0], rot[1], rot[2], rot[3]) # Spawn the desired mob. mob.zone.spawnMob(spawn, transform, -1) # Give feedback about the successful spawning. mob.player.sendGameText(RPG_MSG_GAME_GAINED, \ "%s spawned at [%0.2f %0.2f %0.2f].\\n"%(spawnName,x,y,z))
def CmdGrantMonster(mob,args): if len(args) < 2: return pname = args[0] lowerPName = pname.lower() args = args[1:] mspawn = ' '.join(args) lowerSpawn = mspawn.lower() from player import Player try: con = Player._connection.getConnection() player = Player.get(con.execute("SELECT id FROM player WHERE lower(public_name) = \"%s\" LIMIT 1;"%lowerPName).fetchone()[0]) pname = player.publicName except: mob.player.sendGameText(RPG_MSG_GAME_DENIED,"No player by public name %s.\\n"%pname) return if not player.party or not len(player.party.members): mob.player.sendGameText(RPG_MSG_GAME_DENIED,"Player isn't logged in %s.\\n"%pname) return for monsterSpawn in player.monsterSpawns: if monsterSpawn.spawn.lower() == lowerSpawn: mob.player.sendGameText(RPG_MSG_GAME_DENIED,"%s already has the %s monster template.\\n"%(pname,monsterSpawn.spawn)) return from spawn import Spawn try: con = Spawn._connection.getConnection() spawn = Spawn.get(con.execute("SELECT id FROM spawn WHERE lower(name) = \"%s\" LIMIT 1;"%lowerSpawn).fetchone()[0]) mspawn = spawn.name except: mob.player.sendGameText(RPG_MSG_GAME_DENIED,"No such spawn %s.\\n"%mspawn) return from player import PlayerMonsterSpawn PlayerMonsterSpawn(player=player,spawn=mspawn) mob.player.sendGameText(RPG_MSG_GAME_GAINED,"You have granted %s the %s monster template.\\n"%(pname,mspawn)) if player.zone: player.sendGameText(RPG_MSG_GAME_GAINED,"You now have the %s monster template.\\n"%mspawn)
def CmdSpawn(mob, args): try: # Check if there were coords supplied. if args[-1].endswith(']'): # Extract the coords argument. # It should look like this: [x.x y.y z.z]. x = float(args[-3][1:]) y = float(args[-2]) z = float(args[-1][:-1]) spawnName = ' '.join(args[:-3]) # Otherwise take the immortals position. else: mypos = mob.simObject.position x = mypos[0] y = mypos[1] z = mypos[2] spawnName = ' '.join(args) except: mob.player.sendGameText(RPG_MSG_GAME_DENIED,"Invalid arguments to immortal spawn command. Syntax is '/imm spawn <spawn name> [x-coord y-coord z-coord]' where the coords with their '[]' brackets are optional.\\n") return # Get the spawn. try: con = Spawn._connection.getConnection() spawn = Spawn.get(con.execute("SELECT id FROM spawn WHERE lower(name)=lower(\"%s\") LIMIT 1;"%spawnName).fetchone()[0]) except: mob.player.sendGameText(RPG_MSG_GAME_DENIED, \ "Failure spawning %s, this spawn doesn't exist.\\n"%spawnName) return # Put the transform together. rot = mob.simObject.rotation transform = (x,y,z,rot[0],rot[1],rot[2],rot[3]) # Spawn the desired mob. mob.zone.spawnMob(spawn,transform,-1) # Give feedback about the successful spawning. mob.player.sendGameText(RPG_MSG_GAME_GAINED, \ "%s spawned at [%0.2f %0.2f %0.2f].\\n"%(spawnName,x,y,z))
def CmdGiveMonster(mob,args): if not len(args): return mspawn = ' '.join(args) lowerSpawn = mspawn.lower() for monsterSpawn in mob.player.monsterSpawns: if monsterSpawn.spawn.lower() == lowerSpawn: mob.player.sendGameText(RPG_MSG_GAME_DENIED,"You already have the %s monster template.\\n"%monsterSpawn.spawn) return from spawn import Spawn try: con = Spawn._connection.getConnection() spawn = Spawn.get(con.execute("SELECT id FROM spawn WHERE lower(name)=\"%s\" LIMIT 1;"%lowerSpawn).fetchone()[0]) mspawn = spawn.name except: mob.player.sendGameText(RPG_MSG_GAME_DENIED,"No such spawn %s.\\n"%mspawn) return from player import PlayerMonsterSpawn PlayerMonsterSpawn(player=mob.player,spawn=mspawn) mob.player.sendGameText(RPG_MSG_GAME_GAINED,"You now have the %s monster template.\\n"%mspawn)
def spawn_source(self,position, parent = None, color=None): new_spawn=Spawn(size, position, parent,color, self.invader) self.spawns.append(new_spawn)
class MyApp(ShowBase): def __init__(self): self.debug = False ShowBase.__init__(self) self.accept("escape",sys.exit) # the dt should depend on the framerate self.dt = 0.25 """try: self.database = Database() self.ranking = self.database.getRankingFromDatabase() except: pass""" self.musicManager.setConcurrentSoundLimit(2) #initiate game state self.state = 'Menu' self.terrain = Terrain(1024) """try: self.classement = Classement(self.ranking) self.classement.hideMenu() except: pass""" self.menu = Menu() self.loadStartMenu() if(self.debug == False): self.disableMouse() def loadStartMenu(self): self.accept("Menu-Start-Parkour", self.loadGame) self.accept("Menu-Start-World", self.loadGame) self.accept("Menu-Start-Ranking", self.loadRankingMenu) self.menu.showStartMenu() self.show_cursor() def exitStartMenu(self): self.ignore("Menu-Start-Ranking") self.ignore("Menu-Start-World") self.ignore("Menu-Start-Parkour") self.menu.hideStartMenu() def loadGameOverMenu(self,score): self.gameover = Gameover(score) taskMgr.doMethodLater(5, self.restartGame,'timer') self.show_cursor() def loadRankingMenu(self): self.accept("Menu-Ranking-Return", self.exitRankingMenu) self.exitStartMenu() self.classement.showMenu() self.show_cursor() def exitRankingMenu(self): print("hidding ranking menu") self.ignore("Menu-Ranking-Return") self.classement.hideMenu() self.loadStartMenu() def loadGame(self): self.exitStartMenu() print("Loading game") self.state = 'Loading' if(self.debug == False): self.hide_cursor self.setLights() self.terrain.load() self.hud = Hud() self.hud.show() self.loadEntities() #positionate the camera if(self.debug == False): self.camera.lookAt(self.slime.model) # Load Skybox Skybox(self.render) #register events self.ydelta = 300 self.zdelta = 60 self.accept("wheel_up", self.camzoom,[True]) self.accept("wheel_down", self.camzoom,[False]) #register tasks self.task_mgr.add(self.mainLoop, "MainTask") if(self.debug == False): self.task_mgr.add(self.updateCamera, "CameraTask") self.startGame() def startGame(self): print("Starting game") #Load music self.music = base.loader.loadMusic("assets/sounds/hytale-ost-kweebec-village.mp3") self.music.play() self.music.setVolume(0.1) self.setFrameRateMeter(True) self.state = 'Game' #init console """ self.userConsole = pc.Console() commands = {"restart":self.__init__, "teleport": self.slime.teleport, "color": self.slime.setColor, "stop": self.endGame } self.userConsole.create(commands,app=self) """ def endGame(self): self.state = 'Finished' print("SCORE : "+str(Monster.score)) self.music.stop() self.loadGameOverMenu(Monster.score) today = date.today() name = getpass.getuser() """try: self.database.insertValues(name.capitalize(),Monster.score,today.strftime("%d/%m/%Y")) except: pass""" def restartGame(self,task): os.execl(sys.executable, sys.executable, *sys.argv) def loadEntities(self): startingPoint = (100, 0, 10) self.AIworld = AIWorld(render) self.collision = Collision(Monster.monster) #terrain, initialPos, slimeModelPath, floorPos, scale, lifePoint, volumicMass, movingSpeed, dt self.slime = Slime(self.terrain, startingPoint, "assets/models/slime.egg", 10, 10, 100, 0.01, 5, self.dt, "slime", self.collision) self.spawn = Spawn([self.slime]+Monster.monster, self.terrain, self.AIworld, self.collision) self.spawn.spawn() def setLights(self): sun = DirectionalLight("sun") sun.setColor((1, 1, 0.9, 1)) sun.setScene(render) self.sunNp = render.attachNewNode(sun) self.sunNp.setPos(-10, -10, 30) self.sunNp.lookAt(0,0,0) render.setLight(self.sunNp) alight = AmbientLight('alight') alight.setColor((0.35, 0.35, 0.35, 1)) alnp = render.attachNewNode(alight) render.setLight(alnp) def mainLoop(self,task): if(self.state == "Finished"): return if(self.slime.lifePoint <= 0 or self.slime.scale >= 1000): self.endGame() self.AIworld.update() self.spawn.spawn() for e in [self.slime]+Monster.monster: e.update() self.hud.setLifeBarValue(self.slime.lifePoint) self.hud.setScore(Monster.score) return task.cont def camzoom(self,decrease): if(decrease): self.ydelta-=5 self.zdelta-=1 else: self.ydelta+=5 self.zdelta+=1 def updateCamera(self,task): if(self.state != 'Game'): return self.cam.setPos(self.slime.pos.getX(),self.slime.pos.getY()-self.ydelta,self.slime.pos.getZ()+self.zdelta) #print("x:"+str(self.camera.getX()-self.slime.pos.getX())+" y:"+str(self.camera.getY()-self.slime.pos.getY())+" z:"+str(self.camera.getZ())) #print(self.cam.getHpr()) self.cam.lookAt(self.slime.model) return task.cont def hide_cursor(self): props = WindowProperties() props.setCursorHidden(True) self.win.requestProperties(props) def show_cursor(self): """set the Cursor visible again""" props = WindowProperties() props.setCursorHidden(False) self.win.requestProperties(props)
def __init__(self): self.tile_grid = [[ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 ], [ 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9 ], [ 9, 1, 1, 7, 7, 7, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 6, 6, 6, 1, 1, 9 ], [ 9, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 6, 6, 6, 1, 1, 9 ], [ 9, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 6, 6, 6, 1, 1, 9 ], [ 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9 ], [ 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9 ], [ 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9 ], [ 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9 ], [ 9, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 9 ], [ 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9 ], [ 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9 ], [ 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9 ], [ 9, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9 ], [ 9, 1, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 5, 5, 1, 1, 1, 9 ], [ 9, 1, 1, 8, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 5, 5, 5, 5, 1, 1, 9 ], [ 9, 1, 1, 1, 8, 8, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 1, 9 ], [ 9, 1, 1, 1, 1, 8, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9 ], [ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 ]] map_dict = { 9: Tile_Highgrass, 8: Tile_Water, 7: Tile_Tree, 6: Tile_Farm, 5: Tile_Mountain, 3: Tile_Dirt, 2: Tile_Wall, 1: Tile_Grass, 0: Tile_Door } self.border_tile = [] for i in range(len(self.tile_grid)): for j in range(len(self.tile_grid[i])): self.tile_grid[i][j] = map_dict[self.tile_grid[i][j]]() if isinstance(self.tile_grid[i][j], Tile_Highgrass): self.border_tile.append(self.tile_grid[i][j]) castle_home = [] for i in range(5): for j in range(5): castle_home.append(self.tile_grid[i + 7][j + 10]) self.spawn = Spawn(self, self.tile_grid[0][12]) self.castle = Castle(castle_home) self.particle_holder = ParticleHolder() self.set_move_values()