Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import time
- import json
- import random
- from bge import logic
- import socket
- import sys
- import pickle
- import time
- import bge
- import bpy
- from mathutils import *
- class Server:
- def __init__(self):
- self.objects = self.scene.objects
- if 'Stickman_proxy.002' in self.objects:
- # Create a UDP socket
- self.server_address = ('192.168.2.15', 6379)
- if 'username' not in self.obj: # Will only run once, or when the var gets removed
- #access objects
- self.controller = logic.getCurrentController()
- self.obj = self.controller.owner
- self.scene = bge.logic.getCurrentScene()
- self.obj['username'] = "Player-" + str(random.randint(1, 10000))
- self.obj['socket'] = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- self.obj['socket'].setblocking(1)
- self.obj['players'] = {}
- def sendAndReceive(self):
- #Create dict player data
- data = {}
- data['username'] = self.obj['username']
- data['position'] = {'x': self.obj.position[0],
- 'y': self.obj.position[1],
- 'z': self.obj.position[2]}
- data['rotation'] = {'x': self.obj.localOrientation.to_euler()[0],
- 'y': self.obj.localOrientation.to_euler()[1],
- 'z': self.obj.localOrientation.to_euler()[2]}
- data['isShooting'] = False
- data['health'] = 100
- try:
- sent = self.obj['socket'].sendto(pickle.dumps(data), self.server_address)
- except:
- pass
- #receive
- try:
- playerData = self.obj['socket'].recv(500)
- players = pickle.loads(playerData)
- for playerID in players:
- player = players[playerID]
- #Check if it is you
- if player['username'] != self.obj['username']:
- #Check if in players online array
- if player['username'] not in self.obj['players']:
- #create player with username
- otherPlayer = self.scene.addObject('Stickman_proxy.002', self.obj)
- otherPlayer['username'] = player['username']
- otherPlayer.localPosition = Vector((player['position']['x'], player['position']['y'], player['position']['z']))
- self.obj['players'][player['username']] = otherPlayer
- print(self.obj['players'])
- else:
- if self.obj['players']:
- speler = self.obj['players'][player['username']]
- speler.localPosition = Vector((player['position']['x'], player['position']['y'], player['position']['z']))
- except Exception as e:
- print(e)
- server = Server()
- server.sendAndReceive()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement