📄 betoutside设计说明.txt
字号:
// BetOutside设计说明
// 服务端:仙剑修,2001.1.4
// 客户端:?
一、消息流程:
(一)加入:
1、上传JOIN:申请加入赌局
2、广播JOIN:文字广播某人加入了
3、下传STATE:广播当前状态(状态、当前赌注表) // 玩家表、
4、上传LEAVE:申请离开
5、广播LEAVE:文字广播某人离开(该玩家的下注同时撤销)
(二)下赌:
1、上传BET:押注(TYPE、金额)
2、广播BET:押注(玩家、TYPE,金额)
3、下传BET:出错时回传(超过下注时间/重复下注/超过金额限制/异常‘钱不足等’) // “超过金额限制”保留
(三)结果:
1、广播DICE:色了点数(色子1、色子2、色子3、色子4) // 色子3、4保留,以备扩充
2、广播RESULT:多条赌局结果(玩家、输赢、金额)
(四)时钟:
1、广播TIMER:剩余时间(时间/清空)
二、问题:
1、每个游戏世界一个赌局,还是每个地图一个赌局?(多个)
2、每注是否有金额上限?(有上限,按赔率算)
3、赌局结果中是否显示“输钱”的玩家信息?(不显示)
4、服务器保留当天输赢列表,用于统计。是指整个世界的所有此类赌博吧?
5、每日赌王统计是以00:00截止,还是其它时间?
6、组队状态下,队长不能加入赌局吧?
7、玩家下注后退出赌局,不退还赌资吧?
三、设计:
(一)任务块:
1、在地图类中加入一个BET类对象,BET对象属于地图类。
2、在世界类中加入一个BETTOPS类对象,统计当日BET赌王。
3、在频道中加入一个BET聊天频道。
4、在全局心跳函数中调用BET类的时钟处理函数OnTimer()。
(二)消息格式:
1、CMsgBODice: char(1) + char(2) + char(3) + char(4)。表示这颗色子,通知客户端播放色子滚动的动画,以及色子的结果。
每个char值域为 1 - 6 。
(1)下传char(1) + char(2): 通知进入“开局”阶段。播放色子滚动的动画。
2、CMsgBOBet: OBJID(玩家ID) + char(TYPE) + DWORD(MONEY)。表示玩家的下注类型和钱数。
enum EDice { c_diceNone = 0, c_diceEqu, c_dice212, c_dice311, c_dice410, c_dice59, c_dice68, c_dice7,
c_diceSmall, c_diceBig, c_diceEndAll };
(1)下传ID_NONE:通知进入“下注”阶段。
(2)上传NPCID + TYPE + MONEY:下注。NPCID是指客户端记录下的NPC的ID号。
(3)下传ID + TYPE + MONEY:“下注”阶段中广播下注。“开局”阶段中广播赢家结果。
(4)下传ID + TYPE(c_diceNone) + MONEY:清除已下注(玩家离开时)
3、CMsgNpc: EVENT_JOINBETOUTSIDE, EVENT_LEAVEBETOUTSIDE 子消息
四、升级指南:
当需要设计下一步扩充功能时:
1、要将NPC的初始化从CGAMEMAP移到NPC创建模块中。
2、NPC的ID要统一管理
3、改造CMSGNPC,以适应各种NPC的消息处理。
4、可在USER中加一指针,指向该NPC,以便于快速定位NPC,同时也可在切屏时检查是否需要LEAVE赌局。
五、客户端接口:
(一)上传:
1、当玩家点击赌博NPC时,上传CMsgNpc(NPCID, EVENT_JOINBETOUTSIDE)消息。NPCID暂时与地图ID相同。
2、当玩家关闭赌博界面时,上传CMsgNpc(NPCID, EVENT_LEAVEBETOUTSIDE)消息。NPCID暂时与地图ID相同。
3、玩家下注时,上传CMsgBOBet消息(NPCID, DICETYPE, MONEY)消息。
(二)下传:
1、“下注”状态时,接收到CMsgBODice消息:立即切换到“开局”状态,并播放色子滚动的动画。
2、“开局”状态时,接收到CMsgBODice消息:立即切换到“下注”状态,接受玩家下注动作。
3、“下注”状态时,接收到CMsgBODice(ID,TYPE,MONEY):在列表框中显示玩家下注情况。如TYPE为0,则清除该玩家的下注内容。
4、“开局”状态时,接收到CMsgBODice(ID,TYPE,MONEY):等待色子滚动动画播放完毕后,再在列表框中显示玩家赢钱的清单。
六、修改:将色子滚动消息改为本地图广播(2002.1.18)
1、MSGBODICE改为本地图广播
2、玩家刚进入时有可能会再次收到MSGBODICE,这时应该只同步“状态”,不再重新播放色子滚动动画。
七、文字消息类型:
。组队时,禁止加入: "带这么多人来干什么?打架呀?"
。广播XX加入了: "%s加入到赌局中。"
。给本人的欢迎加入信息:"来了,下注吧。"
。广播XX退出了: "%s离开了赌局。"
。给本人的欢送信息: "不玩了? 下次再来哟。"
。不允许重复下注的信息:"你已经下过注了。"
。不允许作弊的信息: "怎么,想出老千呀,我揍死你。"
。下注小于最低限: "兄弟,有没有钱呀,没钱就别来玩。"
。下注过多,不允许: "哇,原来是位款爷。你老下这么大的注,我可玩不起。"
。下注太迟: "你投注太慢了,下次请快一点。"
。停止下注,将要开局的提示:"买定离手!"
。开局的信息: “开了,12点大”
。开始下注的提示: "下注了,下注了。"
2002-03-06 15:56:31 潘一郎(gogo)
七、文字消息类型:
。组队时,禁止加入: "带部队来干什么?想砸我的场子?我可是合法经营啊!"
。广播XX加入了: "%s准备试试手气,加入到赌局中。"
。给本人的欢迎加入信息:"这位爷,请您下注吧。"
。广播XX退出了: "%s意志坚定,离开了赌局。"
。给本人的欢送信息: "爷咋不玩了呢? 下次一定再来哟。"
。不允许重复下注的信息:"不要着急,你已经下过注了。"
。不允许作弊的信息: "怎么,想出老千呀,我揍死你。"
。下注小于最低限: "兄弟,有没有钱呀,没钱就站边上看啊。"
。下注过多,不允许: "哇,款爷啊。您老下这么大的注,是不是黑钱啊,恕不奉陪!"
。下注太迟: "拜托老弟,下次请快一点。"
。停止下注,将要开局的提示:"买定离手!我开!"
。开局的信息: “各位爷看清楚,12点大!”
。开始下注的提示: "该出手时就出手!下注了!下注了!"
八、改进:
。每半小时统计总的输赢。
。超过最大注的两倍(>20000)时,本地图公告。
。新进入不要下传历史表。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -