⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 introscn.pas

📁 传奇源代码的delphi版本
💻 PAS
📖 第 1 页 / 共 4 页
字号:
      6: begin
          Help1 := 6;
          exit;
        end;
      7: begin
          Help1 := 7;
          exit;
        end;
      8: begin
          Help1 := 8;
          exit;
        end;
      9: begin
          Help1 := 9;
          exit;
        end;
      10: begin
          Help1 := 10;
          exit;
        end;
      11: begin
          Help1 := 11;
          exit;
        end;
      12: begin
          Help1 := 12;
          exit;
        end;
      13: begin
          Help1 := 13;
          exit;
        end;
      14: begin
          Help1 := 14;
          exit;
        end;
    end;
  end;
end;

procedure TSelectChrScene.LoadHelp2;
var
  indexHelp2: Integer;
begin
  Randomize;
  indexHelp2 := Random(29);
  if m_boNowLoading then begin
    case indexHelp2 of
      0: begin
          Help2 := 0;
          exit;
        end;
      1: begin
          Help2 := 1;
          exit;
        end;
      2: begin
          Help2 := 2;
          exit;
        end;
      3: begin
          Help2 := 3;
          exit;
        end;
      4: begin
          Help2 := 4;
          exit;
        end;
      5: begin
          Help2 := 5;
          exit;
        end;
      6: begin
          Help2 := 6;
          exit;
        end;
      7: begin
          Help2 := 7;
          exit;
        end;
      8: begin
          Help2 := 8;
          exit;
        end;
      9: begin
          Help2 := 9;
          exit;
        end;
      10: begin
          Help2 := 10;
          exit;
        end;
      11: begin
          Help2 := 11;
          exit;
        end;
      12: begin
          Help2 := 12;
          exit;
        end;
      13: begin
          Help2 := 13;
          exit;
        end;
      14: begin
          Help2 := 14;
          exit;
        end;
      15: begin
          Help2 := 15;
          exit;
        end;
      16: begin
          Help2 := 16;
          exit;
        end;
      17: begin
          Help2 := 17;
          exit;
        end;
      18: begin
          Help2 := 18;
          exit;
        end;
      19: begin
          Help2 := 19;
          exit;
        end;
      20: begin
          Help2 := 20;
          exit;
        end;
      21: begin
          Help2 := 21;
          exit;
        end;
      22: begin
          Help2 := 22;
          exit;
        end;
      23: begin
          Help2 := 23;
          exit;
        end;
      24: begin
          Help2 := 24;
          exit;
        end;
      25: begin
          Help2 := 25;
          exit;
        end;
      26: begin
          Help2 := 26;
          exit;
        end;
      27: begin
          Help2 := 27;
          exit;
        end;
      28: begin
          Help2 := 28;
          exit;
        end;
    end;
  end;
end;


procedure TSelectChrScene.HideSelectChrBox;
var
  indexNumber: Integer;
begin
  m_nCurFrame := 0;
  m_nMaxFrame := 10;
  Randomize;
  indexNumber := Random(3);
  if m_boNowLoading then begin
    case indexNumber of
      0: begin
          Numbert := 930;
          exit;
        end;
      1: begin
          Numbert := 931;
          exit;
        end;
      2: begin
          Numbert := 932;
          exit;
        end;
    end;
  end;
  if not g_boDoFadeOut and not g_boDoFadeIn then begin
     g_boDoFastFadeOut := TRUE;
     g_nFadeIndex := 29;
     m_boNowLoading := FALSE;
  end;
end;

procedure TSelectChrScene.PlayScene (MSurface: TDirectDrawSurface);
var
   n, bx, by, fx, fy, img: integer;
   ex, ey:Integer; //选择人物时显示的效果光位置
   d, e, f, g, dd: TDirectDrawSurface;
   ax, ay: integer;
   cx,cy: integer;
   svname: string;
begin
   bx:=0;
   by:=0;
   fx:=0;
   fy:=0;
{$IF SWH = SWH800}
   d := g_WMainImages.Images[65];
{$ELSEIF SWH = SWH1024}
   d := g_WMainImages.Images[65];
{$IFEND}
   //显示选择人物背景画面
   if d <> nil then begin
      MSurface.Draw ((SCREENWIDTH - d.Width) div 2,(SCREENHEIGHT - d.Height) div 2, d.ClientRect, d, FALSE);

   end;
   for n:=0 to 2 do begin
      if (not ChrArr[n].Valid) or (ChrArr[n].IsCreating) then begin
        d := nil;
        d := g_WMainImages.Images[44];
        if (not m_boNowLoading) then begin
        cy := 19;
        case n of
          0: begin
            cx := 47;
          end;
          1: begin
            cx := 286;
          end;
          2: begin
            cx := 526;
          end;
        end;
        end;
        MSurface.Draw (cx,cy, d.ClientRect, d, FALSE);
      end;

      if ChrArr[n].Valid then begin
         ex := (SCREENWIDTH - 800) div 2 + 90;
         ey := (SCREENHEIGHT - 600) div 2 + 58;
         case ChrArr[n].UserChr.Job of
            0: begin
               if ChrArr[n].UserChr.Sex = 0 then begin
                  bx := (SCREENWIDTH - 800) div 2 + 138;
                  by := (SCREENHEIGHT - 600) div 2 + 211;
                  fx := bx;
                  fy := by;
               end else begin
                  bx := (SCREENWIDTH - 800) div 2 + 121;
                  by := (SCREENHEIGHT - 600) div 2 + 197;
                  fx := bx;
                  fy := by;
               end;
            end;
            1: begin
               if ChrArr[n].UserChr.Sex = 0 then begin
                  bx := (SCREENWIDTH - 800) div 2 + 130;
                  by := (SCREENHEIGHT - 600) div 2 + 200;
                  fx := bx;
                  fy := by;
               end else begin
                  bx := (SCREENWIDTH - 800) div 2 + 135;
                  by := (SCREENHEIGHT - 600) div 2 + 217;
                  fx := bx;
                  fy := by;
               end;
            end;
            2: begin
               if ChrArr[n].UserChr.Sex = 0 then begin
                  bx := (SCREENWIDTH - 800) div 2 + 138;
                  by := (SCREENHEIGHT - 600) div 2 + 205;
                  fx := bx;
                  fy := by;
               end else begin
                  bx := (SCREENWIDTH - 800) div 2 + 130;
                  by := (SCREENHEIGHT - 600) div 2 + 229;
                  fx := bx;
                  fy := by;
               end;
            end;
         end;
         if n > 0 then begin
            ex := (SCREENWIDTH - 800) div 2;
            ey := (SCREENHEIGHT - 600) div 2;
            bx := bx + 240*n;
            by := by;
            fx := fx + 240*n;
            fy := fy ;
         end;
         if ChrArr[n].Unfreezing then begin
            img := 40 + ChrArr[n].UserChr.Job * 40 + ChrArr[n].UserChr.Sex * 120;
            d := g_WChrSelImages.Images[img + ChrArr[n].aniIndex];
            d := g_WChrSelImages.GetCachedImage((img + ChrArr[n].aniIndex), ax, ay);
            //e := g_WChrSelImages.Images[4 + ChrArr[n].effIndex];
            if (d <> nil) and (not ChrArr[n].IsCreating) then MSurface.Draw (bx + ax , by + ay, d.ClientRect, d, TRUE);
            //if e <> nil then DrawBlend (MSurface, ex, ey, e, 1);
            if GetTickCount - ChrArr[n].StartTime > 50{120} then begin
               ChrArr[n].StartTime := GetTickCount;
               ChrArr[n].aniIndex := ChrArr[n].aniIndex + 1;
            end;
            if GetTickCount - ChrArr[n].startefftime >50{ 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 := 40 + ChrArr[n].UserChr.Job * 40 + ChrArr[n].UserChr.Sex * 120;
            //d := g_WChrSelImages.Images[img + FREEZEFRAME - ChrArr[n].aniIndex - 1];
            d := g_WChrSelImages.GetCachedImage((img + FREEZEFRAME - ChrArr[n].aniIndex - 1), ax, ay);
            if (d <> nil) and (not ChrArr[n].IsCreating) then MSurface.Draw (bx + ax, by + ay, 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 := 20 + ChrArr[n].UserChr.Job * 40 + ChrArr[n].aniIndex + ChrArr[n].UserChr.Sex * 120;
               //d := g_WChrSelImages.Images[img];
               d := g_WChrSelImages.GetCachedImage(img, ax, ay);
               if (d <> nil) and (not ChrArr[n].IsCreating) then begin
                  if ChrArr[n].DarkLevel > 0 then begin
                     dd := TDirectDrawSurface.Create (frmMain.DXDraw.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 + ax, fy + ay, d.ClientRect, d, TRUE)
               end;
            end else begin
               img := 40 + ChrArr[n].UserChr.Job * 40 + ChrArr[n].UserChr.Sex * 120;
//               d := g_WChrSelImages.Images[img];
               d := g_WChrSelImages.GetCachedImage(img, ax, ay);
               if (d <> nil) and (not ChrArr[n].IsCreating) then
                  MSurface.Draw (bx + ax, by + ay, 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 (ChrArr[n].UserChr.Name <> '') and (ChrArr[n].Selected) then begin
               with MSurface do begin
                  SetBkMode (Canvas.Handle, TRANSPARENT);
                  BoldTextOut (MSurface, (SCREENWIDTH - 800) div 2 + 167, (SCREENHEIGHT - 600) div 2 + 458, clWhite, clBlack, inttostr(n+1));
                  BoldTextOut (MSurface, (SCREENWIDTH - 800) div 2 + 167, (SCREENHEIGHT - 600) div 2 + 484, clWhite, clBlack, ChrArr[n].UserChr.Name);
                  BoldTextOut (MSurface, (SCREENWIDTH - 800) div 2 + 167, (SCREENHEIGHT - 600) div 2 + 510, clWhite, clBlack, IntToStr(ChrArr[n].UserChr.Level));
                  BoldTextOut (MSurface, (SCREENWIDTH - 800) div 2 + 167, (SCREENHEIGHT - 600) div 2 + 536, clWhite, clBlack, GetJobName(ChrArr[n].UserChr.Job));
                  Canvas.Release;
               end;
            end;
        if m_boNowLoading then begin
           d := g_WMainImages.Images[Numbert];
              if d <> nil then
                MSurface.Draw (0, 0, d.ClientRect, d, TRUE);

           f := g_WMainImages.Images[1010+help1];
              if d <> nil then
                MSurface.Draw ((SCREENWIDTH - f.Width) div 2, (SCREENHEIGHT - f.Height) div 2 -20, f, TRUE);

           g := g_WMainImages.Images[1040+help2];
              if f <> nil then
                MSurface.Draw ((SCREENWIDTH - g.Width) div 2, (SCREENHEIGHT - g.Height) div 2 + 200, g, TRUE);

              if GetTickCount - m_LoadingTime > 80 then begin
                m_LoadingTime := GetTickCount;
                Inc (m_nCurFrame);
              end;

                if m_nCurFrame >= m_nMaxFrame-1 then begin
                   m_nCurFrame := m_nMaxFrame-1;
                   m_nCurFrame := 0;
                end;
               e := g_WMainImages.Images[940 + m_nCurFrame];
                 if e <> nil then
                  MSurface.Draw ((SCREENWIDTH - e.Width) div 2, (SCREENHEIGHT - e.Height) div 2 + 250, e, TRUE);

        end else begin

         with MSurface do begin
            SetBkMode (Canvas.Handle, TRANSPARENT);
            if BO_FOR_TEST then svname := 'ThedeathRules'
            else svname := g_sServerName;
            BoldTextOut (MSurface, SCREENWIDTH div 2 - Canvas.TextWidth(svname) div 2, (SCREENHEIGHT - 600) div 2 + 8, clWhite, clBlack, svname);
            Canvas.Release;
         end;
      end;
   end;
end;
end;

{----------------------------- TLoading ------------------------------}

{constructor TLoading.Create;
begin
   inherited Create (stLoading);
end;

destructor TLoading.Destroy;
begin
   inherited Destroy;
end;

procedure TLoading.OpenScene;
begin
  m_nCurFrame := 0;
  m_nMaxFrame := 10;
end;

procedure TLoading.CloseScene;
begin
end;

procedure TLoading.PlayScene (MSurface: TDirectDrawSurface);
var
  d: TDirectDrawSurface;
  sWil:Integer;
begin
  case Random(3) of
    0:begin
      sWil:=931;
    end;
    1:begin
      sWil:=931;
    end;
    2:begin
      sWil:=931;
    end;
  end;

    d := g_WMainImages.Images[sWil];

    if d <> nil then begin
      MSurface.Draw ((SCREENWIDTH - 800) div 2, (SCREENHEIGHT - 600) div 2, d.ClientRect, d, FALSE);
    end;
end;}

{--------------------------- TLoginNotice ----------------------------}

{constructor TLoginNotice.Create;
begin
   inherited Create (stLoginNotice);
end;

destructor TLoginNotice.Destroy;
begin
   inherited Destroy;
end;}

{---- Adjust global SVN revision ----}
initialization
  SVNRevision('$Id: IntroScn.pas 326 2006-08-24 19:52:54Z Dataforce $');
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -