📄 introscn.pas
字号:
if (not ChrArr[1].Selected) and (ChrArr[1].Valid) then begin
ChrArr[1].Selected := TRUE;
ChrArr[0].Selected := FALSE;
ChrArr[1].Unfreezing := TRUE;
ChrArr[1].AniIndex := 0;
ChrArr[1].DarkLevel := 0;
ChrArr[1].EffIndex := 0;
ChrArr[1].StartTime := GetTickCount;
ChrArr[1].MoreTime := GetTickCount;
ChrArr[1].StartEffTime := GetTickCount;
PlaySound (s_meltstone);
end;
end;
procedure TSelectChrScene.SelChrStartClick;
var
chrname: string;
begin
chrname := '';
if ChrArr[0].Valid and ChrArr[0].Selected then chrname := ChrArr[0].UserChr.Name;
if ChrArr[1].Valid and ChrArr[1].Selected then chrname := ChrArr[1].UserChr.Name;
if chrname <> '' then begin
if not DoFadeOut and not DoFadeIn then begin
DoFastFadeOut := TRUE;
FadeIndex := 29;
end;
FrmMain.SendSelChr (chrname);
end else
FrmDlg.DMessageDlg ('刚历 货 某腐磐甫 父甸绢具 钦聪促.\<NEW CHARACTER>甫 急琶窍矫搁 货 某腐磐甫 父甸 荐 乐嚼聪促.', [mbOk]);
end;
procedure TSelectChrScene.SelChrNewChrClick;
begin
if not ChrArr[0].Valid or not ChrArr[1].Valid then begin
if not ChrArr[0].Valid then MakeNewChar (0)
else MakeNewChar (1);
end else
FrmDlg.DMessageDlg ('茄 拌沥俊 2俺狼 某腐磐鳖瘤父 父甸 荐 乐嚼聪促.', [mbOk]);
end;
procedure TSelectChrScene.SelChrEraseChrClick;
var
n: integer;
begin
n := 0;
if ChrArr[0].Valid and ChrArr[0].Selected then n := 0;
if ChrArr[1].Valid and ChrArr[1].Selected then n := 1;
if (ChrArr[n].Valid) and (not ChrArr[n].FreezeState) and (ChrArr[n].UserChr.Name <> '') then begin
//版绊 皋技瘤甫 焊辰促.
if mrYes = FrmDlg.DMessageDlg ('"' + ChrArr[n].UserChr.Name + '" 某腐磐甫 昏力窍矫摆嚼聪鳖 ?\茄锅 昏力等 某钒磐绰 登倒副 荐 绝阑 挥父 酒聪扼\老沥茄 扁埃 悼救 鞍篮 捞抚狼 某腐磐甫 促矫 父甸 荐 绝嚼聪促.\弊贰档 昏力窍矫摆嚼聪鳖?', [mbYes, mbNo, mbCancel]) then
FrmMain.SendDelChr (ChrArr[n].UserChr.Name);
end;
end;
procedure TSelectChrScene.SelChrCreditsClick;
begin
end;
procedure TSelectChrScene.SelChrExitClick;
begin
FrmMain.Close;
end;
procedure TSelectChrScene.ClearChrs;
begin
FillChar (ChrArr, sizeof(TSelChar)*2, #0);
ChrArr[0].FreezeState := FALSE;
ChrArr[1].FreezeState := TRUE; //扁夯捞 倔绢 乐绰 惑怕
ChrArr[0].Selected := TRUE;
ChrArr[1].Selected := FALSE;
ChrArr[0].UserChr.Name := '';
ChrArr[1].UserChr.Name := '';
end;
procedure TSelectChrScene.AddChr (uname: string; job, hair, level, sex: integer);
var
n: integer;
begin
if not ChrArr[0].Valid then n := 0
else if not ChrArr[1].Valid then n := 1
else exit;
ChrArr[n].UserChr.Name := uname;
ChrArr[n].UserChr.Job := job;
ChrArr[n].UserChr.Hair := hair;
ChrArr[n].UserChr.Level := level;
ChrArr[n].UserChr.Sex := sex;
ChrArr[n].Valid := TRUE;
end;
procedure TSelectChrScene.MakeNewChar (index: integer);
begin
CreateChrMode := TRUE;
NewIndex := index;
if index = 0 then begin
FrmDlg.DCreateChr.Left := 415;
FrmDlg.DCreateChr.Top := 15;
end else begin
FrmDlg.DCreateChr.Left := 75;
FrmDlg.DCreateChr.Top := 15;
end;
FrmDlg.DCreateChr.Visible := TRUE;
ChrArr[NewIndex].Valid := TRUE;
ChrArr[NewIndex].FreezeState := FALSE;
EdChrName.Left := FrmDlg.DCreateChr.Left + 71;
EdChrName.Top := FrmDlg.DCreateChr.Top + 107;
EdChrName.Visible := TRUE;
EdChrName.SetFocus;
SelectChr (NewIndex);
FillChar (ChrArr[NewIndex].UserChr, sizeof(TUserCharacterInfo), #0);
end;
procedure TSelectChrScene.EdChrnameKeyPress (Sender: TObject; var Key: Char);
begin
end;
function TSelectChrScene.GetJobName (job: integer): string;
begin
Result := '';
case job of
0: Result := '战士';
1: Result := '法师';
2: Result := '道士';
end;
end;
procedure TSelectChrScene.SelectChr (index: integer);
begin
ChrArr[index].Selected := TRUE;
ChrArr[index].DarkLevel := 30;
ChrArr[index].starttime := GetTickCount;
ChrArr[index].Moretime := GetTickCount;
if index = 0 then ChrArr[1].Selected := FALSE
else ChrArr[0].Selected := FALSE;
end;
procedure TSelectChrScene.SelChrNewClose;
begin
ChrArr[NewIndex].Valid := FALSE;
CreateChrMode := FALSE;
FrmDlg.DCreateChr.Visible := FALSE;
EdChrName.Visible := FALSE;
if NewIndex = 1 then begin
ChrArr[0].Selected := TRUE;
ChrArr[0].FreezeState := FALSE;
end;
end;
procedure TSelectChrScene.SelChrNewOk;
var
chrname, shair, sjob, ssex: string;
begin
chrname := Trim(EdChrName.Text);
if chrname <> '' then begin
ChrArr[NewIndex].Valid := FALSE;
CreateChrMode := FALSE;
FrmDlg.DCreateChr.Visible := FALSE;
EdChrName.Visible := FALSE;
if NewIndex = 1 then begin
ChrArr[0].Selected := TRUE;
ChrArr[0].FreezeState := FALSE;
end;
shair := IntToStr(1 + Random(5)); //////****IntToStr(ChrArr[NewIndex].UserChr.Hair);
sjob := IntToStr(ChrArr[NewIndex].UserChr.Job);
ssex := IntToStr(ChrArr[NewIndex].UserChr.Sex);
FrmMain.SendNewChr (FrmMain.LoginId, chrname, shair, sjob, ssex); //货 某腐磐甫 父电促.
end;
end;
procedure TSelectChrScene.SelChrNewJob (job: integer);
begin
if (job in [0..2]) and (ChrArr[NewIndex].UserChr.Job <> job) then begin
ChrArr[NewIndex].UserChr.Job := job;
SelectChr (NewIndex);
end;
end;
procedure TSelectChrScene.SelChrNewSex (sex: integer);
begin
if sex <> ChrArr[NewIndex].UserChr.Sex then begin
ChrArr[NewIndex].UserChr.Sex := sex;
SelectChr (NewIndex);
end;
end;
procedure TSelectChrScene.SelChrNewPrevHair;
begin
end;
procedure TSelectChrScene.SelChrNewNextHair;
begin
end;
procedure TSelectChrScene.PlayScene (MSurface: TDirectDrawSurface);
var
n, bx, by, ex, ey, fx, fy, img: integer;
d, e, dd: TDirectDrawSurface;
svname: string;
begin
d := FrmMain.WProgUse.Images[65];
if d <> nil then begin
MSurface.Draw (0, 0, d.ClientRect, d, FALSE);
end;
for n:=0 to 1 do begin
if ChrArr[n].Valid then begin
ex := 90;
ey := 60-2;
case ChrArr[n].UserChr.Job of
0: begin
if ChrArr[n].UserChr.Sex = 0 then begin
bx := 71; by := 75-23; //巢磊
fx := bx; fy := by;
end else begin
bx := 65; by := 75-2-18; //咯磊 倒惑怕
fx := bx-28+28; fy := by-16+16; //框流捞绰 惑怕
end;
end;
1: begin
if ChrArr[n].UserChr.Sex = 0 then begin
bx := 77; by := 75-29;
fx := bx; fy := by;
end else begin
bx := 141+30; by := 85+14-2;
fx := bx-30; fy := by-14;
end;
end;
2: begin
if ChrArr[n].UserChr.Sex = 0 then begin
bx := 85; by := 75-12;
fx := bx; fy := by;
end else begin
bx := 141+23; by := 85+20-2;
fx := bx-23; fy := by-20;
end;
end;
end;
if n = 1 then begin
ex := 430;
ey := 60;
bx := bx + 340;
by := by + 2;
fx := fx + 340;
fy := fy + 2;
end;
if ChrArr[n].Unfreezing then begin //踌绊 乐绰 吝
img := 140 - 80 + ChrArr[n].UserChr.Job * 40 + ChrArr[n].UserChr.Sex * 120;
d := FrmMain.WChrSel.Images[img + ChrArr[n].aniIndex];
e := FrmMain.WChrSel.Images[4 + ChrArr[n].effIndex];
if d <> nil then MSurface.Draw (bx, by, d.ClientRect, d, TRUE);
if e <> nil then DrawBlend (MSurface, ex, ey, e, 1);
if GetTickCount - ChrArr[n].starttime > 120 then begin
ChrArr[n].starttime := GetTickCount;
ChrArr[n].aniIndex := ChrArr[n].aniIndex + 1;
end;
if GetTickCount - ChrArr[n].startefftime > 110 then begin
ChrArr[n].startefftime := GetTickCount;
ChrArr[n].effIndex := ChrArr[n].effIndex + 1;
//if ChrArr[n].effIndex > EFFECTFRAME-1 then
// ChrArr[n].effIndex := EFFECTFRAME-1;
end;
if ChrArr[n].aniIndex > FREEZEFRAME-1 then begin
ChrArr[n].Unfreezing := FALSE; //促 踌疽澜
ChrArr[n].FreezeState := FALSE; //
ChrArr[n].aniIndex := 0;
end;
end else
if not ChrArr[n].Selected and (not ChrArr[n].FreezeState and not ChrArr[n].Freezing) then begin //急琶登瘤 臼疽绰单 踌酒乐栏搁
ChrArr[n].Freezing := TRUE;
ChrArr[n].aniIndex := 0;
ChrArr[n].starttime := GetTickCount;
end;
if ChrArr[n].Freezing then begin //倔绊 乐绰 吝
img := 140 - 80 + ChrArr[n].UserChr.Job * 40 + ChrArr[n].UserChr.Sex * 120;
d := FrmMain.WChrSel.Images[img + FREEZEFRAME - ChrArr[n].aniIndex - 1];
if d <> nil then MSurface.Draw (bx, by, d.ClientRect, d, TRUE);
if GetTickCount - ChrArr[n].starttime > 50 then begin
ChrArr[n].starttime := GetTickCount;
ChrArr[n].aniIndex := ChrArr[n].aniIndex + 1;
end;
if ChrArr[n].aniIndex > FREEZEFRAME-1 then begin
ChrArr[n].Freezing := FALSE; //促 倔菌澜
ChrArr[n].FreezeState := TRUE; //
ChrArr[n].aniIndex := 0;
end;
end;
if not ChrArr[n].Unfreezing and not ChrArr[n].Freezing then begin
if not ChrArr[n].FreezeState then begin //踌酒乐绰惑怕
img := 120 - 80 + ChrArr[n].UserChr.Job * 40 + ChrArr[n].aniIndex + ChrArr[n].UserChr.Sex * 120;
d := FrmMain.WChrSel.Images[img];
if d <> nil then begin
if ChrArr[n].DarkLevel > 0 then begin
dd := TDirectDrawSurface.Create (FrmMain.DXDraw1.DDraw);
dd.SystemMemory := TRUE;
dd.SetSize (d.Width, d.Height);
dd.Draw (0, 0, d.ClientRect, d, FALSE);
MakeDark (dd, 30-ChrArr[n].DarkLevel);
MSurface.Draw (fx, fy, dd.ClientRect, dd, TRUE);
dd.Free;
end else
MSurface.Draw (fx, fy, d.ClientRect, d, TRUE);
end;
end else begin //倔绢乐绰惑怕
img := 140 - 80 + ChrArr[n].UserChr.Job * 40 + ChrArr[n].UserChr.Sex * 120;
d := FrmMain.WChrSel.Images[img];
if d <> nil then
MSurface.Draw (bx, by, d.ClientRect, d, TRUE);
end;
if ChrArr[n].Selected then begin
if GetTickCount - ChrArr[n].starttime > 300 then begin
ChrArr[n].starttime := GetTickCount;
ChrArr[n].aniIndex := ChrArr[n].aniIndex + 1;
if ChrArr[n].aniIndex > SELECTEDFRAME-1 then
ChrArr[n].aniIndex := 0;
end;
if GetTickCount - ChrArr[n].moretime > 25 then begin
ChrArr[n].moretime := GetTickCount;
if ChrArr[n].DarkLevel > 0 then
ChrArr[n].DarkLevel := ChrArr[n].DarkLevel - 1;
end;
end;
end;
if n = 0 then begin
if ChrArr[n].UserChr.Name <> '' then begin
with MSurface do begin
SetBkMode (Canvas.Handle, TRANSPARENT);
BoldTextOut (MSurface, 117, 492+2, clWhite, clBlack, ChrArr[n].UserChr.Name);
BoldTextOut (MSurface, 117, 523, clWhite, clBlack, IntToStr(ChrArr[n].UserChr.Level));
BoldTextOut (MSurface, 117, 553, clWhite, clBlack, GetJobName(ChrArr[n].UserChr.Job));
Canvas.Release;
end;
end;
end else begin
if ChrArr[n].UserChr.Name <> '' then begin
with MSurface do begin
SetBkMode (Canvas.Handle, TRANSPARENT);
BoldTextOut (MSurface, 671, 492+4, clWhite, clBlack, ChrArr[n].UserChr.Name);
BoldTextOut (MSurface, 671, 525, clWhite, clBlack, IntToStr(ChrArr[n].UserChr.Level));
BoldTextOut (MSurface, 671, 555, clWhite, clBlack, GetJobName(ChrArr[n].UserChr.Job));
Canvas.Release;
end;
end;
end;
with MSurface do begin
SetBkMode (Canvas.Handle, TRANSPARENT);
// if BO_FOR_TEST then svname := '抛胶飘辑滚'
if BO_FOR_TEST then svname := '金达测试服务器'
else svname := ServerName;
BoldTextOut (MSurface, 405-Canvas.TextWidth(svname) div 2, 8, clWhite, clBlack, svname);
Canvas.Release;
end;
end;
end;
end;
{--------------------------- TLoginNotice ----------------------------}
constructor TLoginNotice.Create;
begin
inherited Create (stLoginNotice);
end;
destructor TLoginNotice.Destroy;
begin
inherited Destroy;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -