⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 battle.py

📁 大型多人在线游戏开发 这本书的光盘内容。 包括一些脚本代码和图片
💻 PY
字号:
# battle.py
#
# A SafeSandbox that represents a combat arena, where 
# fighting is allowed.
#

class Battle:
  """A place where you can engage in combat."""
  def Init(self):
    print 'Battle.Init()'
    self.RegisterHandler(gameeventkeys.ByEvent(gameevents.ACTION_ATTACK_SUCCESS), self.OnAttackSuccess)
    self.RegisterHandler(gameeventkeys.ByEvent(gameevents.ACTION_ATTACK_FAILURE), self.OnAttackFailure)

    # create some stuff
    self.CreateItem('Weapon', 'Longsword')
    self.CreateItem('Weapon', 'Shortsword')

  def OnPlayerEnter(self, key):
    print 'OnPlayerEnter( %s )' % (key,)    
    self.ClientMessage(key.subj, 'Let the battle begin!')

  def OnPlayerExit(self, key):
    print 'OnPlayerExit( %s )' % (key,)    
    player = self.GetGameObject(key.subj)
    if player.GetHealth() > 0:
      self.ClientMessage(key.subj, 'You are lucky to escape alive.')
    else:
      self.ClientMessage(key.subj, 'You suffered a crushing defeat.')

  def OnAttackSuccess(self, key, damage):
    print 'OnAttackSuccess( %s, %s )' % (key, damage)
    source = self.GetGameObject(key.src)
    target = self.GetGameObject(key.subj)
    for playerid in self.playerids:
      if playerid != key.subj and playerid != key.src:
        # don't notify or target - they already know
        self.ClientMessage(playerid, '%s attacked %s for %s damage.' % (source.GetName(), target.GetName(), damage))

  def OnAttackFailure(self, key):
    print 'OnAttackFailure( %s )' % (key,)
    source = self.GetGameObject(key.src)
    target = self.GetGameObject(key.subj)
    for playerid in self.playerids:
      if playerid != key.subj and playerid != key.src:
        # don't notify source or target - they already know
        self.ClientMessage(playerid, '%s attacked %s and missed.' % (source.GetName(), target.GetName()))



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -