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

📄 usendcls.pas

📁 千年源代码,只缺少控件,可以做二次开发用,好不容易得来的
💻 PAS
📖 第 1 页 / 共 2 页
字号:
      ComData.Cnt := SizeOf (TSTurn);
   end;
   Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
end;

procedure  TSendClass.SendMove (var aSenderinfo: TBasicData);
var
   ComData : TWordComData;
   psMove : PTSMove;
begin
   psMove := @ComData.Data;
   with psMove^ do begin
      rmsg := SM_MOVE;
      rId := aSenderInfo.id;
      rdir := aSenderInfo.dir;
      rx := aSenderInfo.x;
      ry := aSenderInfo.y;
      ComData.Cnt := SizeOf (TSMove);
   end;
   Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
end;

procedure TSendClass.SendSetPosition (var aSenderinfo: TBasicData);
var
   ComData : TWordComData;
   psSetPosition : PTSSetPosition;
begin
   psSetPosition := @ComData.Data;
   with psSetPosition^ do begin
      rmsg := SM_SETPOSITION;
      rid := aSenderInfo.id;
      rdir := aSenderInfo.dir;
      rx := aSenderInfo.x;
      ry := aSenderInfo.y;
      ComData.Cnt := SizeOf (TSSetPosition);
   end;
   Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
end;

procedure  TSendClass.SendMap (var aSenderInfo: TBasicData; amap, aobj, arof, atil, aSoundBase: string);
var
   ComData : TWordComData;
   psNewMap : PTSNewMap;
begin
   SendSoundBase ('', 100);

   psNewMap := @ComData.Data;
   FillChar (psNewMap^, SizeOf (TSNewMap), 0);
   with psNewMap^ do begin
      rmsg := SM_NEWMAP;
      StrPCopy (@rMapName, aMap);
      StrCopy (@rCharName, @aSenderInfo.Name);
      rId := aSenderInfo.id;
      rx := aSenderInfo.x;
      ry := aSenderInfo.y;
      StrPCopy (@rObjName, aobj);
      StrPCopy (@rRofName, arof);
      StrPCopy (@rTilName, atil);
      ComData.Cnt := SizeOf (TSNewMap);
   end;
   Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));

   if aSoundBase <> '' then begin
      SendSoundBase (aSoundBase + '.wav', 100);
   end;
end;

procedure  TSendClass.SendShow (var aSenderinfo: TBasicData);
var
   ComData : TWordComData;
   psShow : PTSShow;
//   psShowItem : PTSShowItem;
//   psShowDynamicObject : PTSShowDynamicObject;
   str : shortstring;
begin
   if (aSenderInfo.Feature.rrace = RACE_HUMAN) or (aSenderInfo.Feature.rRace = RACE_MONSTER)
      or (aSenderInfo.Feature.rRace = RACE_NPC) then begin
      psShow := @ComData.Data;
      with psShow^ do begin
         str := StrPas (@aSenderInfo.Name);
         // if aSenderInfo.Guild[0] <> 0 then
         //    str := str + ',' + StrPas (@aSenderInfo.Guild);

         if aSenderInfo.ServerName [0] <> 0 then
            str := str + ',' + StrPas (@aSenderInfo.ServerName);

         if Length (str) >= 18 then str := Copy (str, 1, 18);

         rmsg := SM_SHOW;
         rId := aSenderInfo.id;
         StrPCopy (@rNameString, str);
         rdir := aSenderInfo.dir;
         rx := aSenderInfo.x;
         ry := aSenderInfo.y;
         rFeature := aSenderInfo.Feature;
         if rFeature.rrace = RACE_NPC then rFeature.rrace := RACE_MONSTER;
         SetWordString (rWordString, '');

         ComData.Cnt := sizeof(TSShow)-sizeof(twordstring)+sizeofwordstring(rwordstring);
      end;
      Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
      exit;
   end;
{
   if (aSenderInfo.Feature.rRace = RACE_ITEM)
      or (aSenderInfo.Feature.rRace = RACE_STATICITEM) then begin
      psShowItem := @ComData.Data;
      with psShowItem^ do begin
         rmsg := SM_SHOWITEM;
         rid := aSenderInfo.id;
         rNameString := aSenderInfo.Name;
         rx := aSenderInfo.x;
         ry := aSenderInfo.y;
         rShape := aSenderInfo.Feature.rImageNumber;
         rColor := aSenderInfo.Feature.rImageColorIndex;
         rRace := aSenderInfo.Feature.rRace;
         ComData.Cnt := SizeOf (TSShowItem);
      end;
      Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
      exit;
   end;

   if aSenderInfo.Feature.rrace = RACE_DYNAMICOBJECT then begin
      psShowDynamicObject := @ComData.Data;
      with psShowDynamicObject^ do begin
         rmsg := SM_SHOWDYNAMICOBJECT;
         rid := aSenderInfo.id;
         rNameString := aSenderInfo.Name;
         rx := aSenderInfo.x;
         ry := aSenderInfo.y;
         rShape := aSenderInfo.Feature.rImageNumber;
         rState := TDynamicObjectState (aSenderInfo.Feature.rHitMotion);
         ComData.Cnt := SizeOf (TSShowDynamicObject);
      end;
      Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
      exit;
   end;
}   
end;

procedure TSendClass.SendHide (var aSenderinfo: TBasicData);
var
   ComData : TWordComData;
   psHide : PTSHide;
begin
   psHide := @ComData.Data;
   with psHide^ do begin
      rmsg := SM_HIDE;
      if isObjectItemId (aSenderInfo.id) or isStaticItemId (aSenderInfo.id) then rmsg := SM_HIDEITEM;
      if isDynamicObjectID (aSenderInfo.id) then rmsg := SM_HIDEDYNAMICOBJECT;

      rid := aSenderInfo.id;
      ComData.Cnt := SizeOf (TSHide);
   end;
   Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
end;

procedure TSendClass.SendMotion (aid, amotion: integer);
var
   ComData : TWordComData;
   psMotion : PTSMotion;
begin
   psMotion := @ComData.Data;
   with psMotion^ do begin
      rmsg := SM_MOTION;
      rId := aid;
      rmotion := amotion;
      ComData.Cnt := SizeOf (TSMotion);
   end;
   Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
end;

procedure  TSendClass.SendStructed (aid, apercent: integer; aRace : Byte);
var
   ComData : TWordComData;
   psStructed : PTSStructed;
begin
   psStructed := @ComData.Data;
   with psStructed^ do begin
      rmsg := SM_STRUCTED;
      rId := aid;
      rRace := aRace;
      rpercent := apercent;
      ComData.Cnt := SizeOf (TSStructed);
   end;
   Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
end;

procedure TSendClass.SendBattleBar (aLeftName, aRightName : String; aLeftWin, aRightWin : Byte; aLeftPercent, aRightPercent, aBattleType : Integer);
var
   ComData : TWordComData;
   psShowBar : PTSShowBattleBar;
begin
   psShowBar := @ComData.Data;

   with psShowBar^ do begin
      rMsg := SM_SHOWBATTLEBAR;
      rWinType := aBattleType;
      StrPCopy (@rLeftName, aLeftName);
      rLeftWin := aLeftWin;
      rLeftPercent := aLeftPercent;
      StrPCopy (@rRightName, aRightName);
      rRightWin := aRightWin;
      rRightPercent := aRightPercent;
      ComData.Cnt := SizeOf (TSShowBattleBar);
   end;

   Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
end;

procedure TSendClass.SendChatMessage (astr: string; aColor: byte);
var
   ComData : TWordComData;
   psChatMessage : PTSChatMessage;
begin
   psChatMessage := @ComData.Data;
   with psChatMessage^ do begin
      rmsg := SM_CHATMESSAGE;
      case acolor of
         SAY_COLOR_NORMAL : begin rFColor := WinRGB (22,22,22); rBColor := WinRGB (0, 0,  0); end;
         SAY_COLOR_SHOUT  : begin rFColor := WinRGB (22,22,22); rBColor := WinRGB (0, 0, 24); end;
         SAY_COLOR_SYSTEM : begin rFColor := WinRGB (22,22, 0); rBColor := WinRGB (0, 0,  0); end;
         SAY_COLOR_NOTICE : begin rFColor := WinRGB (255 div 8, 255 div 8, 255 div 8); rBColor := WinRGB (133 div 8, 133 div 8, 133 div 8); end;

         SAY_COLOR_GRADE0 : begin rFColor := WinRGB (18, 16, 14); rBColor := WinRGB (2,4,5); end;
         SAY_COLOR_GRADE1 : begin rFColor := WinRGB (26, 23, 21); rBColor := WinRGB (2,4,5); end;
         SAY_COLOR_GRADE2 : begin rFColor := WinRGB (31, 29, 27); rBColor := WinRGB (2,4,5); end;
         SAY_COLOR_GRADE3 : begin rFColor := WinRGB (22, 18,  8); rBColor := WinRGB (1,4,11); end;
         SAY_COLOR_GRADE4 : begin rFColor := WinRGB (23, 13,  4); rBColor := WinRGB (1,4,11); end;
         SAY_COLOR_GRADE5 : begin rFColor := WinRGB (31, 29, 21); rBColor := WinRGB (1,4,11); end;

         else begin rFColor := WinRGB (22,22,22); rBColor := WinRGB (0, 0 ,0); end;
      end;

      SetWordString (rWordstring, aStr);
      ComData.Cnt := Sizeof(TSChatMessage) - Sizeof(TWordString) + sizeofwordstring(rWordString);
   end;
   Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
end;

procedure TSendClass.SendShowCenterMessage (aStr : String; aColor : Word);
var
   ComData : TWordComData;
   psShowCenterMsg : PTSShowCenterMsg;
begin
   psShowCenterMsg := @ComData.Data;

   with psShowCenterMsg^ do begin
      rMsg := SM_SHOWCENTERMSG;
      rColor := aColor;
      SetWordString (rText, aStr);
      ComData.Cnt := SizeOf (TSShowCenterMsg) - SizeOf (TWordString) + SizeOfWordString (rText);
   end;
   Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));

   if Connector.WaitStartTick = 0 then Connector.WaitStartTick := mmAnsTick;
   Inc (Connector.WaitTick, 300);
end;

procedure TSendClass.SendStatusMessage (astr: string);
var
   ComData : TWordComData;
   psMessage : PTSMessage;
begin
   psMessage := @ComData.Data;
   with psMessage^ do begin
      rmsg := SM_MESSAGE;
      rkey := MESSAGE_GAMEING;
      SetWordString (rWordstring, astr);
      ComData.Cnt := Sizeof(TSMessage) - Sizeof(TWordString) + sizeofwordstring(rWordString);
   end;
   Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
end;

procedure TSendClass.SendHaveItem (akey: word; var ItemData: TItemData);
var
   ComData : TWordComData;
   psHaveItem : PTSHaveItem;
begin
   psHaveItem := @ComData.Data;
   with psHaveItem^ do begin
      rmsg := SM_HAVEITEM;
      rkey := akey;
      rName := ItemData.rname;
      rCount := ItemData.rCount;
      rColor := Itemdata.rcolor;
      rShape := Itemdata.rShape;
      ComData.Cnt := SizeOf (TSHaveItem);
   end;
   Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
end;

procedure TSendClass.SendWearItem (akey: word; var ItemData: TItemData);
var
   ComData : TWordComData;
   psWearItem : PTSHaveItem;
begin
   psWearItem := @ComData.Data;
   with psWearItem^ do begin
      rmsg := SM_WEARITEM;
      rkey := akey;
      rName := Itemdata.rname;
      rColor := Itemdata.rcolor;
      rShape := Itemdata.rShape;
      ComData.Cnt := SizeOf (TSHaveItem);
   end;
   Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));

   if aKey = 1 then begin
      with psWearItem^ do begin
         rmsg := SM_WEARITEM;
         rkey := 5;
         rName := Itemdata.rname;
         rColor := Itemdata.rcolor;
         rShape := Itemdata.rShape;
         ComData.Cnt := SizeOf (TSHaveItem);
      end;
      Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
   end;
end;

procedure TSendClass.SendHaveMagic (akey: word; var MagicData: TMagicData);
var
   ComData : TWordComData;
   psHaveMagic : PTSHaveMagic;
begin
   psHaveMagic := @ComData.Data;
   with psHaveMagic^ do begin
      rmsg := SM_HAVEMAGIC;
      rkey := akey;
      rShape := MagicData.rShape;
      rName := MagicData.rname;
      rSkillLevel := MagicData.rcSkillLevel;
      rpercent := 0;
      ComData.Cnt := SizeOf (TSHaveMagic);
   end;
   Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
end;

procedure TSendClass.SendBasicMagic (akey: word; var MagicData: TMagicData);
var
   ComData : TWordComData;
   psHaveMagic : PTSHaveMagic;
begin
   psHaveMagic := @ComData.Data;
   with psHaveMagic^ do begin
      rmsg := SM_BASICMAGIC;
      rkey := akey;
      rShape := Magicdata.rShape;
      rName := MagicData.rname;
      rSkillLevel := Magicdata.rcSkillLevel;
      rpercent := 0;
      ComData.Cnt := SizeOf (TSHaveMagic);
   end;
   Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
end;

procedure  TSendClass.SendSoundEffect (asoundname: string; ax, ay : Word);
var
   ComData : TWordComData;
   psSoundString: PTSSoundString;
begin
   psSoundString := @ComData.Data;
   with psSoundString^ do begin
      rmsg := SM_SOUNDEFFECT;
      rHiByte := Length (asoundname);
      rLoByte := 0;
      StrPCopy (@rSoundName, asoundname);
      rX := ax;
      rY := ay;
      ComData.Cnt := SizeOf (TSSoundString);
   end;
   Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
end;

procedure  TSendClass.SendSoundBase (asoundname: string; aRoopCount: integer);
var
   ComData : TWordComData;
   psSoundBaseString: PTSSoundBaseString;
begin
   psSoundBaseString := @ComData.Data;
   with psSoundBaseString^ do begin
      rmsg := SM_SOUNDBASESTRING;
      rRoopCount := aroopcount;
      SetWordString (rWordString, asoundname);
      ComData.Cnt := Sizeof(TSSoundBaseString) - Sizeof(TWordString) + sizeofwordstring(rWordString);
   end;
   Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
end;

procedure  TSendClass.SendSoundBase2 (asoundname: string; aRoopCount: integer);
var
   ComData : TWordComData;
   psSoundBaseString: PTSSoundBaseString;
begin
   psSoundBaseString := @ComData.Data;
   with psSoundBaseString^ do begin
      rmsg := SM_SOUNDBASESTRING2;
      rRoopCount := aroopcount;
      SetWordString (rWordString, aSoundName);
      ComData.Cnt := Sizeof(TSSoundBaseString) - Sizeof(TWordString) + sizeofwordstring(rWordString);
   end;
   Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
end;

procedure  TSendClass.SendShowSpecialWindow (aWindow : Byte; aCaption : String; aComment : String);
var
   ComData : TWordComData;
   pSShowSpecialWindow : PTSShowSpecialWindow;
begin
   psShowSpecialWindow := @ComData.Data;

   with psShowSpecialWindow^ do begin
      rmsg := SM_SHOWSPECIALWINDOW;
      rWindow := aWindow;
      StrPCopy (@rCaption, aCaption);
      SetWordString (rWordString, aComment);
      ComData.Cnt := sizeof(TSShowSpecialWindow) - sizeof(TWordString) + sizeofwordstring(rwordstring);
   end;
   Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
end;

procedure TSendClass.SendLogItem (akey: word; var ItemData: TItemData);
var
   ComData : TWordComData;
   psLogItem : PTSLogItem;
begin
   psLogItem := @ComData.Data;
   with psLogItem^ do begin
      rmsg := SM_LOGITEM;
      rkey := aKey;
      rName := ItemData.rname;
      rCount := ItemData.rCount;
      rColor := Itemdata.rcolor;
      rShape := Itemdata.rShape;
      ComData.Cnt := SizeOf (TSLogItem);
   end;
   Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
end;

procedure TSendClass.SendData (aData : PChar; aSize : Integer);
var
   ComData : TWordComData;
begin
   ComData.Cnt := aSize;
   Move (aData^, ComData.Data, aSize);
   Connector.AddSendData (@ComData, ComData.Cnt + SizeOf (Word));
end;

end.

⌨️ 快捷键说明

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