本单元提供系统中的所有对话框显示
MAINIMAGEFILE = 'Data\Prguse.wil';
MAINIMAGEFILE2 = 'Data\Prguse2.wil';
MAINIMAGEFILE3 = 'Data\Prguse3.wil';
CHRSELIMAGEFILE = 'Data\ChrSel.wil';
MINMAPIMAGEFILE = 'Data\mmap.wil';
TITLESIMAGEFILE = 'Data\Tiles.wil';
SMLTITLESIMAGEFILE = 'Data\SmTiles.wil';
HUMWINGIMAGESFILE = 'Data\HumEffect.wil';
MAGICONIMAGESFILE = 'Data\MagIcon.wil';
HUMIMGIMAGESFILE = 'Data\Hum.wil';
HAIRIMGIMAGESFILE = 'Data\Hair.wil';
WEAPONIMAGESFILE = 'Data\Weapon.wil';
NPCIMAGESFILE = 'Data\Npc.wil';
MAGICIMAGESFILE = 'Data\Magic.wil';
MAGIC2IMAGESFILE = 'Data\Magic2.wil';
EVENTEFFECTIMAGESFILE = EFFECTIMAGEDIR + 'Event.wil';
BAGITEMIMAGESFILE = 'Data\Items.wil';
STATEITEMIMAGESFILE = 'Data\StateItem.wil';
DNITEMIMAGESFILE = 'Data\DnItems.wil';
OBJECTIMAGEFILE = 'Data\Objects.wil';
OBJECTIMAGEFILE1 = 'Data\Objects%d.wil';
MONIMAGEFILE = 'Data\Mon%d.wil';
DRAGONIMAGEFILE = 'Data\Dragon.wil';
EFFECTIMAGEFILE = 'Data\Effect.wil';
MONIMAGEFILEEX = 'Graphics\Monster\%d.wil';
MONPMFILE = 'Graphics\Monster\%d.pm';
g_MovingItem.Index
0-5 来自快捷物品栏
0..MAXBAGITEM - 1 g_ItemArr
-1..-13 g_UseItems -(idx + 1) [0..12] 老版9格,-1 ..-9
-30..-20 g_DealItems
{------------------------------------------------------------------------------}
//玩家状态面板框
{------------------------------------------------------------------------------}
商店物品
MenuList
g_SaveItemList
ShowDice()
分析
m_Dice[0..9] 骰子数组 10
m_nDiceCount 骰子个数 大概是这数组的10个不是全用。
一个骰子的情况m_nDiceCount为1
n67C < 20
GetTickCount dwPlayTick时间 大于100
如果n67C div 5 = 4 (这个不可能执行了)
nPlayPoint等于Random(6) + 1
如果n67C不等于20
执行nPlayPoint n67C div 5 + 8 为0,1,2,3(8,9,10,11)
数值分段了?
dwPlayTick := GetTickCount
n67C增1
退出
n67C >= 20
nPlayPoint := nDicePoint
GetTickCount时间dwPlayTick超过1.5秒 对话框关闭?
退出。
多个骰子的情况
设置标志bo05 true
循环到m_nDiceCount
n67C 小于n680
GetTickCount dwPlayTick时间 大于100
n67C 等于20 (n67C div 5 = 4)
nPlayPoint := Random(6) + 1;随机0-5 +1
n67C 不等于20
nPlayPoint等于n67C div 5 + 8 也是以5分段在n680的限制内
dwPlayTick取当前时间点, n67C增1
标志bo05 false
n67C 大于等于n680
nPlayPoint := nDicePoint
时间点判断dwPlayTick小于2秒,标志bo05 false
最后判断 bo05 关闭DMsgDlg.Visible := False
这个函数应该是不停的调用的
所以n67C 在不断的递增1
还有个时间的判断大于上次的100毫秒,进行计算
在超过1.5秒(2秒)关闭对话框?
单个骰子n67C是20的阀值
对nPlayPoint 赋值,超过就是赋值nDicePoint
多个骰子n67C是同n680比较 n680是阀值
对nPlayPoint 赋值,超过就是赋值nDicePoint
用标志bo05判断
在超过(2秒)关闭对话框
SM_PLAYDICE
消息里面 给骰子装载数据
赋值了 m_nDiceCount
和nDicePoint
DialogSize := 0;数据复位?
DMessageDlg('', []);
发送商人对话框输框,
如果服务器发来的字符串是@@
客户端输入把@@ + 输入的内容发给服务器?
那么这个nDicePoint 和nPlayPoint 代表什么?
DMessageDlg
消息显示对话框
大概看明白了
3种对话框,
小的,普通的, 竖型的
对应不同的素材图片
里面有几种按钮。
显示投骰子功能 也在这个里面实现,有个数组来支持
还有输入功能,输入行会名称的?
其完全是当一个控件来使用的,
还有事件,
绘图时间,
键盘按下事件。
感觉这都是在循着VCL 的按钮,面板,编辑框这些的控件规则
给改造了一下。
StdMode 物品种类
0 药品 强效金创要
1干肉?
2 ?
3 地牢逃脱卷 战神油,祝福油,修复油 行会回城卷 ,回城卷 随机传送卷,彩票
攻击力药水
4 技能书
31 打捆类物品?超级金创药,超级魔法药 金创药(小)包,中包 地牢逃脱卷包 筹码包 打捆护身符
5..6: //武器
10, 11: //男衣服, 女衣服
15, //头盔,捧备
19, 20, 21, //项链
22, 23, //戒指
24, 26, //手镯
51,
52, 62, //鞋
53, 63,
54, 64: //腰带
19, 53: //项链
20, 24, 52: //项链 及 手镯:
21, 54: //项链
23: //戒指
62: //Boots
63: //Charm
25: //护身符及毒药
30: //照明物
40: //肉
42: //药材
43: //矿石
1,//玩家状态面板框
2,//创建角色框
3,
gOkDirectPaint
if doFullScreen in DxDraw.Options then
begin //窗口
end
else
begin
Width := SCREENWIDTH; //窗口
AddHeight := FrmMain.Height - ClientRect.Bottom; //窗口
Height := SCREENHEIGHT + AddHeight; //窗口
Left := (Screen.Width - Frmmain.Width) div 2; //窗口
Top := (Screen.Height - Frmmain.Height) div 2; //窗口
g_boNoDarkness := TRUE;
end;