亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? psmclient.py

?? 在客戶端和服務器架構中
?? PY
?? 第 1 頁 / 共 2 頁
字號:
  print g_programName+'new actor id is %s' % (newActorId,)
  newActor = actor.Actor()
  newActor.SetAllStateIds([p,m,a])
  g_actorDict[newActorId] = newActor
  print g_inputPrompt
  return data[4:]


def Recv_StateCorrection(data):
  """
  A state correction has been recieved from
  the server.  This means this client allowed
  an action for the local actor that was not
  allowed on the server, so immediately correct
  the local actor to reflect the server specified
  state.
  """
  actor = g_actorDict[g_actorId]
  p, m, a = struct.unpack("<BBB", data[0:3])
  data = data[3:]
  blockedDict = {}
  (numEntries,) = struct.unpack("<B", data[0])
  data = data[1:]
  for i in range(1, numEntries+1):
    stateId, blockCount = struct.unpack("<BB", data[0:2])
    blockedDict[shared._GetStateModuleById(stateId)] = blockCount
    data = data[2:]

  actor.SetAllStateIds([p,m,a])
  actor.SetBlockedStateDict(blockedDict)
  print g_programName+'received correction to [%s] [%s] [%s] for local actor [%s]' % (_ParseStateName(actor.GetPostureState()),  \
                                                                                      _ParseStateName(actor.GetMovementState()), \
                                                                                      _ParseStateName(actor.GetActionState()), \
                                                                                      g_actorId) 
  print g_inputPrompt
  return data


def Recv_StateChange(data):
  """
  A normal state change has occured for the
  specified actor (who is not local). Set that
  actors states to the ones specified in the
  message.
  """
  actorId, p, m, a = struct.unpack("<BBBB", data[0:4]) #TODO ONLY ONE STATE
  actor = g_actorDict[actorId]
  actor.SetAllStateIds([p,m,a])
  print g_programName+'actor [%s] changed state to [%s] [%s] [%s]' % (actorId, _ParseStateName(actor.GetPostureState()),  \
                                                                               _ParseStateName(actor.GetMovementState()), \
                                                                               _ParseStateName(actor.GetActionState()))
  return data[4:]


def Recv_ActorFrozen(data):
  """
  An actor got frozen.  Transition them to the 
  states then prevents them from moving any more
  """
  global g_actorDict
  (frozenActorId,) = struct.unpack("<B", data[0:1])
  if g_actorId == frozenActorId:
    print g_programName+'Local actor [%s] is frozen!' % (frozenActorId,)
  else:
    print g_programName+'Actor [%s] is frozen!' % (frozenActorId,)
  frozenActor = g_actorDict[frozenActorId]
  frozenActor.ForceDefaultStates()
  frozenActor.BlockMovement()
  print g_inputPrompt
  return data[1:]


def Recv_ActorDead(data):
  """
  An actor died.  Transition them to the dead
  state which makes sure they won't be able to
  do anything.
  """
  global g_actorDict
  (deadActorId,) = struct.unpack("<B", data[0:1])
  if g_actorId == deadActorId:
    print g_programName+'Local actor [%s] is dead!' % (deadActorId,)
  else:
    print g_programName+'Actor [%s] is dead!' % (deadActorId,)
  deadActor = g_actorDict[deadActorId]
  deadActor.TransitionTo(_dead)
  print g_inputPrompt
  return data[1:]


def Recv_LoginAck(data):
  """
  Login acknowledgement from server.  Assign
  the local actor id to the value passed in
  the message and create the actor instance.
  The instance is stored for subsequent use
  """
  global g_actorId
  global g_actorDict
  (g_actorId,) = struct.unpack("<B", data[0])
  print g_programName+'Login ok, local actor id is %s' % (g_actorId,)
  print g_inputPrompt
  g_actorDict[g_actorId] = actor.Actor()
  return data[1:]


def _ReadNetwork(s):
  """
  Selects on the specifid socket s, if any data
  comes through, parse the message type and
  send the remaining data along to the method
  called for the particular message type.  The
  handling method must return any data it did not
  process.
  """
  input, ignored, ignored = select.select([s], [], [], 0)
  for sock in input:
    data = sock.recv(1024)
    while len(data):
      (msgType,) = struct.unpack("<B", data[0])
      data = data[1:]
      if msgType == MSG_TYPE_LOGIN_ACK:
        data = Recv_LoginAck(data)
      elif msgType == MSG_TYPE_NEW_ACTOR:
        data = Recv_NewActor(data)
      elif msgType == MSG_TYPE_ACTOR_LEFT:
        data = Recv_ActorLeft(data)
      elif msgType == MSG_TYPE_STATE_CORRECTION:
        data = Recv_StateCorrection(data)
      elif msgType == MSG_TYPE_STATE_CHANGE:
        data = Recv_StateChange(data)
      elif msgType == MSG_TYPE_ACTOR_FROZEN:
        data = Recv_ActorFrozen(data)
      elif msgType == MSG_TYPE_ACTOR_DEAD:
        data = Recv_ActorDead(data)
      elif msgType == MSG_TYPE_SHUTDOWN:
        return 0
      else:
        print g_programName+'unknown message type %s, abort' % (msgType,)
        data = ''
  
  return 1



def main():
  """
  main() - main program loop
  """
  # Parse the port argument if passed
  global g_port
  global g_serverName
  if len(sys.argv) > 1:
    g_serverName = sys.argv[1]
    if len(sys.argv) > 2:
      value = int(sys.argv[2])
      if value > 0:
        g_port = value
  
  global g_userInput
  global g_inputValue

  # connect to the server and send it a login message
  s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  try:
    print g_programName+'connecting to [%s] on port [%s]...' % (g_serverName, g_port)
    s.connect((g_serverName, g_port))
    data = struct.pack("<B", MSG_TYPE_LOGIN)
    s.send(data)
    s.setblocking(0)
  except:
    # server not up, we go down...
    print g_programName + 'unable to connect, is server running?'
    return

  # start a separate thread to get user input
  inputThread = threading.Thread(None, _GetInput)
  inputThread.start()

  # loop forever checking for user input and messages from the server
  try:
    while 1:
      if inputThread.isAlive():
        # checking for user input
        if g_userInput:
          a = threading.Lock()
          a.acquire()
          # valid user input, call the appropriate method
          _InvokeMethod(g_inputValue, s)
          g_userInput = 0
          g_inputValue = None
          a.release()

        # check for incoming network messages          
        if _ReadNetwork(s) == 0:
          print g_programName+'got shutdown message. Press [Enter] to continue.'
          inputThread._Thread__stop()
          s.close()
          break
      else:
        # user selected to exit program
        print g_programName+'exiting'
        s.close()
        break
  except KeyboardInterrupt:
    # if the user decides to ctrl-c to exit
    print g_programName+'exiting'
    s.close()
    
  del inputThread
  

# run main()  
if __name__ == '__main__':
 print g_programName+'starting up...'
 main()

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日本视频在线| 一区二区三区四区中文字幕| 中文字幕av一区二区三区免费看 | 久久久蜜桃精品| 亚洲免费色视频| 久草精品在线观看| 欧美精品电影在线播放| 亚洲欧美色综合| 成人在线视频一区| 精品国产制服丝袜高跟| 亚洲不卡在线观看| 在线一区二区三区| 国产精品国产馆在线真实露脸| 久久精品国产久精国产爱| 在线视频一区二区免费| 国产精品久久夜| 国产69精品久久99不卡| 精品国产髙清在线看国产毛片| 一区二区三区免费在线观看| 成人av网站免费观看| 欧美精品一区二区三区蜜桃| 美美哒免费高清在线观看视频一区二区| 色欧美88888久久久久久影院| 国产欧美日韩在线视频| 国产精品伊人色| 久久久www成人免费无遮挡大片| 日韩精品亚洲一区二区三区免费| 欧美亚洲动漫精品| 亚洲国产综合91精品麻豆| 欧美亚洲丝袜传媒另类| 一区二区三区91| 在线一区二区三区四区五区| 亚洲天堂精品在线观看| 99国产欧美久久久精品| 亚洲人成7777| 欧美伊人久久大香线蕉综合69| 一区二区三区国产精华| 欧洲国内综合视频| 午夜精品久久久久影视| 欧美日本高清视频在线观看| 婷婷综合另类小说色区| 日韩午夜在线影院| 国精产品一区一区三区mba视频| 2024国产精品视频| 成人h动漫精品一区二区| 《视频一区视频二区| 色婷婷精品大视频在线蜜桃视频| 亚洲免费资源在线播放| 欧美美女直播网站| 精品亚洲国产成人av制服丝袜| 久久久蜜桃精品| 99久久精品国产麻豆演员表| 一区二区在线看| 678五月天丁香亚洲综合网| 久久精品久久99精品久久| 国产亚洲精品中文字幕| 91麻豆精品一区二区三区| 丝袜诱惑制服诱惑色一区在线观看 | www.欧美亚洲| 亚洲一区二区三区小说| 日韩西西人体444www| 国产成人亚洲精品狼色在线| 亚洲视频狠狠干| 欧美精品123区| 国产成人精品免费在线| 一区二区三区日韩精品| 日韩女优av电影在线观看| 不卡的av网站| 日韩成人一级片| 国产精品国产馆在线真实露脸| 欧美狂野另类xxxxoooo| 国产91富婆露脸刺激对白| 亚洲福利国产精品| 欧美经典三级视频一区二区三区| 在线观看亚洲a| 国产成人高清在线| 日韩一区精品字幕| 中文字幕中文字幕在线一区| 日韩一区二区三区精品视频| 成人午夜免费视频| 久久国产精品无码网站| 亚洲综合一区二区三区| 欧美极品美女视频| 日韩精品在线看片z| 欧美日韩一区二区三区不卡| 成人黄色小视频在线观看| 蜜臀久久99精品久久久久宅男| 亚洲欧美日韩国产手机在线| 国产午夜一区二区三区| 欧美一区二区三区日韩视频| 色哟哟一区二区在线观看| 国v精品久久久网| 久久精品国产99国产| 午夜精品久久久久久久久| 亚洲三级在线免费观看| 国产视频不卡一区| 精品国产百合女同互慰| 日韩三级视频在线观看| 欧美精选在线播放| 精品视频全国免费看| 色婷婷精品大视频在线蜜桃视频| 国产+成+人+亚洲欧洲自线| 久久精品国产999大香线蕉| 午夜电影一区二区三区| 亚洲一区欧美一区| 亚洲自拍偷拍综合| 夜夜揉揉日日人人青青一国产精品 | 日韩免费电影网站| 欧美美女激情18p| 欧美日韩国产天堂| 欧美视频在线一区二区三区 | 国产精品一级黄| 国产一区二区三区黄视频 | 日本成人在线视频网站| 亚洲国产wwwccc36天堂| 亚洲二区在线视频| 亚洲gay无套男同| 丝袜诱惑亚洲看片| 美女高潮久久久| 国产一区二三区| 粉嫩av一区二区三区在线播放| 国产成人免费视频一区| 成年人国产精品| 日本精品裸体写真集在线观看| 色婷婷精品久久二区二区蜜臀av| 91国产丝袜在线播放| 精品视频在线免费观看| 欧美一区二区三区四区五区| 日韩一区二区电影网| 欧美va亚洲va| 国产日产欧美精品一区二区三区| 日本一区二区三区视频视频| 亚洲欧美在线视频| 亚洲夂夂婷婷色拍ww47 | 日韩亚洲欧美综合| 久久综合精品国产一区二区三区 | 成人美女视频在线观看18| 色欧美日韩亚洲| 欧美一区二区在线看| 久久综合成人精品亚洲另类欧美| 国产精品少妇自拍| 亚洲精品欧美在线| 日韩国产高清在线| 国产成人无遮挡在线视频| 色综合视频在线观看| 在线不卡中文字幕播放| 久久精品人人做人人综合 | 欧美日韩一区二区电影| 精品免费国产一区二区三区四区| 国产精品美女久久久久高潮| 亚洲成人三级小说| 高清成人在线观看| 欧美日韩精品一区二区三区蜜桃 | 亚洲va国产va欧美va观看| 国产在线乱码一区二区三区| 91麻豆文化传媒在线观看| 日韩欧美色电影| 亚洲色图都市小说| 久久电影网站中文字幕 | 日韩一级片在线观看| 国产精品久久免费看| 日韩中文字幕1| av网站一区二区三区| 欧美v日韩v国产v| 亚洲一卡二卡三卡四卡五卡| 国产一区二区伦理| 91.麻豆视频| 亚洲婷婷综合久久一本伊一区| 裸体歌舞表演一区二区| 欧美吻胸吃奶大尺度电影| 国产三级精品视频| 免费在线观看日韩欧美| 91国产丝袜在线播放| 国产精品乱码一区二三区小蝌蚪| 麻豆久久一区二区| 欧美性感一区二区三区| 中文字幕亚洲一区二区va在线| 久热成人在线视频| 欧美日韩国产不卡| 亚洲精品成人a在线观看| 成人高清在线视频| 欧美精品一区二区久久婷婷| 午夜欧美在线一二页| 色婷婷香蕉在线一区二区| 欧美国产一区二区| 国产在线精品免费| 日韩精品中午字幕| 蜜桃av一区二区在线观看 | 91国偷自产一区二区开放时间 | 亚洲一区二区五区| 色综合久久久网| 亚洲人一二三区| 97久久超碰国产精品| 中文字幕中文在线不卡住| 成人中文字幕在线| 国产精品另类一区| www.av亚洲| 亚洲欧美激情视频在线观看一区二区三区 | 日本一区二区不卡视频| 大美女一区二区三区|