天堂开发笔记(二)

开发记录

角色创建

完成数据库的插入
客户端的正常显示

Object

天堂对象抽象:

属性:

  • 对象资源唯一标识
  • 对象所在地图
  • 对象在地图内的位置

方法:

  • 更新画面内的对象
  • 计算与其他对象的距离
  • 响应其他对象的对话而采取的行为
  • 响应其他对象而采取的行为

需要实现:

  • 全局唯一标识的获取:IdFactory.py
  • 地图数据结构的表示和读取:Map.py、V1Map.py、WorldMap.py、MapReader.py、TextMapReader.py、MapsTable.py
  • 位置的描述(地图 + 地图内坐标):Location.py

Character(Object)

天堂人物对象抽象:

属性:

  • 姓名
  • 经验
  • 等级
  • 血魔
  • 属性
  • 抗性(物理防御、魔法防御、属性防御)

方法:

  • 计算人物的血魔、抗性和经验

需要实现:

  • 人物对象的描述:Object.py、Character.py

PcInstance(Character)

天堂玩家抽象:

属性:

  • 职业
  • 装备槽(延后实现)

方法:

  • 计算不同职业血魔、抗性
  • 装备武器/防具,并更新装备槽(延后实现)

需要实现:

  • 玩家对象的描述:PcInstance.py、Karma.py
  • 游戏角色的创建、更新、加载、删除和存储(characters表操作):CharacterTable.py、MySqlCharacterStorage.py、Karma.py

创建角色

DEBUG:Receive Packet:
0000: 3A 32 33 32 00 01 00 14 0C 0E 09 0C 08 39 F0 37    :232.........9.7

INFO:account exists
DEBUG:Send Packet:
0000: 1D 02 00 00 00 00 00 00 00 00 00 00                     ............

INFO:charname: 232 classId: 61
DEBUG:Send Packet:
0000: 62 32 33 32 00 00 01 00 00 00 10 00 01 00 00 01    b232............
0010: 14 0C 0E 09 0C 08 00 80 82 2C 58                         .........,X

客户端发起C_OPCODE_NEWCHAR = 58 # 請求創造角色(3A)请求,服务器返回S_OPCODE_NEWCHARWRONG = 29 # 角色創造例外(1D)S_OPCODE_NEWCHARPACK = 98 # 角色創造成功(62)

相关文件:S_MPUpdate.py、S_HPUpdate.py、S_CharAmount.py、S_CharCreateStatus、S_CharPacks.py、C_CreateChar.py

时间的转换

import time
from datetime import datetime

def datetime2timestamp(dt):
    return time.mktime(dt.timetuple())

def timestamp2datetime(ts):
    return datetime.fromtimestamp(ts)

# 获取当前时间
dt = datetime.now()
# 获取当前时间的年月日
dt.date()
posted @ 2017-10-14 12:13  银魔术师  阅读(528)  评论(0编辑  收藏  举报