天堂开发笔记(二)
开发记录
角色创建
完成数据库的插入
客户端的正常显示
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()