Advertisement
Guest User

blender

a guest
May 22nd, 2018
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.07 KB | None | 0 0
  1. import time
  2. import json
  3. import random
  4. from bge import logic
  5. import socket
  6. import sys
  7. import pickle
  8. import time
  9. import bge
  10. import bpy
  11. from mathutils import *
  12.  
  13. class Server:
  14. def __init__(self):
  15.  
  16. self.objects = self.scene.objects
  17.  
  18. if 'Stickman_proxy.002' in self.objects:
  19. # Create a UDP socket
  20. self.server_address = ('192.168.2.15', 6379)
  21.  
  22. if 'username' not in self.obj: # Will only run once, or when the var gets removed
  23. #access objects
  24. self.controller = logic.getCurrentController()
  25. self.obj = self.controller.owner
  26. self.scene = bge.logic.getCurrentScene()
  27.  
  28. self.obj['username'] = "Player-" + str(random.randint(1, 10000))
  29. self.obj['socket'] = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  30. self.obj['socket'].setblocking(1)
  31. self.obj['players'] = {}
  32.  
  33. def sendAndReceive(self):
  34. #Create dict player data
  35. data = {}
  36. data['username'] = self.obj['username']
  37. data['position'] = {'x': self.obj.position[0],
  38. 'y': self.obj.position[1],
  39. 'z': self.obj.position[2]}
  40. data['rotation'] = {'x': self.obj.localOrientation.to_euler()[0],
  41. 'y': self.obj.localOrientation.to_euler()[1],
  42. 'z': self.obj.localOrientation.to_euler()[2]}
  43. data['isShooting'] = False
  44. data['health'] = 100
  45. try:
  46. sent = self.obj['socket'].sendto(pickle.dumps(data), self.server_address)
  47. except:
  48. pass
  49.  
  50. #receive
  51.  
  52. try:
  53. playerData = self.obj['socket'].recv(500)
  54.  
  55. players = pickle.loads(playerData)
  56.  
  57. for playerID in players:
  58. player = players[playerID]
  59.  
  60. #Check if it is you
  61. if player['username'] != self.obj['username']:
  62. #Check if in players online array
  63. if player['username'] not in self.obj['players']:
  64. #create player with username
  65.  
  66. otherPlayer = self.scene.addObject('Stickman_proxy.002', self.obj)
  67. otherPlayer['username'] = player['username']
  68. otherPlayer.localPosition = Vector((player['position']['x'], player['position']['y'], player['position']['z']))
  69. self.obj['players'][player['username']] = otherPlayer
  70. print(self.obj['players'])
  71. else:
  72. if self.obj['players']:
  73. speler = self.obj['players'][player['username']]
  74. speler.localPosition = Vector((player['position']['x'], player['position']['y'], player['position']['z']))
  75. except Exception as e:
  76. print(e)
  77.  
  78. server = Server()
  79. server.sendAndReceive()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement