传奇源码分析-客户端(游戏逻辑处理源分析四)

本文详细分析了传奇客户端的游戏逻辑处理源代码,包括CWHApp、CWHWindow和CWHDXGraphicWindow的创建及初始化,以及玩家操作如鼠标点击时的处理流程。当玩家点击鼠标,会触发一系列事件,如发送游戏状态更新、物品丢弃、拾取和NPC交互等。同时,客户端与服务器之间的通信也得到了阐述,涉及到物品操作、地图移动和NPC交互的服务器响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
 
现在假设玩家开始操作游戏:
传奇的客户端源代码工程WindHorn
一、CWHApp派生CWHWindow和CWHDXGraphicWindow。
二、CWHDefProcess派生出CloginProcess、CcharacterProcess、CgameProcess
客户端WinMain调用CWHDXGraphicWindow g_xMainWnd;创建一个窗口。
客户端 CWHDXGraphicWindow 在自己的Create函数中调用了CWHWindow的Create来创建窗口,然后再调用自己的CreateDXG()来初始化DirectX。
 
消息循环:
因此,当客户端鼠标单击的时候,先调用CWHWindow窗口的回调函数WndProc,即:    g_pWHApp->MainWndProc g_pWHApp定义为: static CWHApp* g_pWHApp = NULL ;在CWHApp
构造函数中赋值为: g_pWHApp = this;
g_pWHApp->MainWndProc 便调用了CWHApp::MainWndProc,这是一个虚函数,实际上则是调用它的派生类 CWHDXGraphicWindow::MainWndProc
   if ( m_pxDefProcess )
       return m_pxDefProcess->DefMainWndProc(hWnd, uMsg, wParam, lParam);
根据g_xMainWnd.m_pxDefProcess和全局变量g_bProcState标记当前的处理状态。调用
     CLoginProcess->DefMainWndProc     
CCharacterProcess->DefMainWndProc 
CGameProcess->DefMainWndProc      
 
当用户进行游戏之后,点击鼠标
本来打算等录完教程在开,后来发现实在是没时间,怕大家等不及,先开了再说吧。大家先拿去研究,等我忙完这一阵有时间了录一个流程讲解,方便大家修改码! 下面大概给大家介绍下服务器客户端的交互流程 服务器线程分类:玩家更新,怪物更新,数据接收,地图更新,数据库,界面更新,网管接收 玩家类里的更新和怪物类里的更新大致一样,是操作攻击是否击中,掉血计算,buff到期时间等不是立即生效的东西都在更新里。 服务器的设计思路比较清楚,所以还未见过内存方面报错(数组越界有可能会有,比如部分玩法,目前不稳定的都关闭了暂时没时间修复,大家可以自己动手) 暂时关闭的不稳定玩法:行会争霸,团战(尚未测试),摆摊,交易系统。 玩家视野我设计的是每个地图格子一个整数数组存放玩家或怪物编号,怪物编号以>0开始,玩家以<0开始,每次移动都会去地图类里取视野 另外服务器上的菜单:刷怪控制、管理这两个尚未测试应该有bug,自己注意修复一下 本服务器设计的非常安全,不会有任何变态挂,加速挂,锁血挂等出现,因为所有计算都是在服务器上完成的,计算效率也是杠杆的 不过有人可能说效率不行呀 cpu太高,带几十个人就卡了。那是因为 易语言 在码调试下运行本身就会慢5-10倍左右,所以测试性能建议编译后在试试 另外微端的事情我说一下,大家直接把RES资下载到客户端目录下,然后屏蔽微端连接,就可以了,不需要微端了就,但是需要下载好整个游戏就行了 上一个客户端版本我附带在这里大家可以去下载: https://bbs.125.la/forum.php?mod=viewthreadtid=14496289 讨论易语言游戏制作和发展的 QQ群:336787216 ,欢迎一起携手造就易语言游戏的未来,个人认为易语言写游戏真的很容易。主要是引擎非常效率,引擎用的是凤影龙鸣作者封装的
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值