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

📄 usendcls.pas

📁 千年源代码,只缺少控件,可以做二次开发用,好不容易得来的
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit uSendCls;

interface

uses
  Windows, SysUtils, Classes, Usersdb, Deftype, AnsUnit,
  AnsImg2, AUtil32, subutil, uConnect;

type

   TSendClass = class
   private
     Name : String; 
     Connector : TConnector;
   public
     constructor Create;
     destructor Destroy; override;

     procedure SetConnector (aConnector : TConnector);
     procedure SetName (aName : String);

     procedure  SendCancelExChange;
     procedure  SendShowExChange (pexleft, pexright: PTExChangedata);
     procedure  SendShowCount (aCountId, aSourKey, aDestKey, aCntMax: integer; acaption: string);

     procedure  SendShowInputString (aInputStringId: integer; aCaptionString: string; aListString: string);
     procedure  SendShiftAttack (abo: Boolean);
     procedure  SendAttribFightBasic (astr: string);
     procedure  SendAttribBase (var AttribData: TAttribData; var CurAttribData: TCurAttribData);
     procedure  SendAttribValues (var AttribData: TAttribData; var CurAttribData: TCurAttribData);
     procedure  SendChangeFeature (var aSenderinfo: TBasicData);
     procedure  SendChangeProperty (var aSenderinfo: TBasicData);
     procedure  SendSay (var aSenderinfo: TBasicData; astr: string);
     procedure  SendSayUseMagic (var aSenderinfo: TBasicData; astr: string);
     procedure  SendEventString (astr: string);
     procedure  SendUsedMagicString (astr: string);
     procedure  SendShootMagic (var aSenderinfo: TBasicData; atid: integer; ax, ay, abowimage, abowspeed : word; atype : Byte);
     procedure  SendTurn (var aSenderinfo: TBasicData);
     procedure  SendMove (var aSenderinfo: TBasicData);
     procedure  SendMotion (aid, amotion: integer);
     procedure  SendStructed (var aSenderInfo : TBasicData; aPercent: integer);
     procedure  SendChatMessage (astr: string; aColor: byte);
     procedure  SendStatusMessage (astr: string);
     procedure  SendShow (var aSenderinfo: TBasicData);
     procedure  SendHide (var aSenderinfo: TBasicData);
     procedure  SendHaveItem (akey: word; var ItemData: TItemData);
     procedure  SendHaveMagic (akey: word; var MagicData: TMagicData);
     procedure  SendBasicMagic (akey: word; var MagicData: TMagicData);
     procedure  SendWearItem (akey: word; var ItemData: TItemData);
     procedure  SendMap (var aSenderInfo: TBasicData; amap, aobj, arof, atil, aSoundBase: string);
     procedure  SendSetPosition (var aSenderinfo: TBasicData);
     procedure  SendSoundEffect (asoundname: string; ax, ay : Word);

     procedure  SendSoundBase (asoundname: string; aRoopCount: integer);
     procedure  SendSoundBase2 (asoundname: string; aRoopCount: integer);

     procedure  SendItemMoveInfo (ainfostr: string);
     procedure  SendRainning (aRain : TSRainning);

     procedure  SendLogItem (akey: word; var ItemData: TItemData);
     procedure  SendShowSpecialWindow (aWindow : Byte; aCaption : String; aComment : String);
     procedure  SendShowGuildMagicWindow (aMagicWindowData : PTSShowGuildMagicWindow);
     procedure  SendNetState (aID, aTick : Integer);
   end;

implementation

uses
   FSockets, svClass;

///////////////////////////////////
//         TSendClass
///////////////////////////////////
procedure  TSendClass.SendShowCount (aCountID, aSourKey, aDestKey, aCntMax: Integer; aCaption: String);
var
   ComData : TWordComData;
   psCount : PTSCount;
begin
   psCount := @ComData.Data;
   with psCount^ do begin
      rMsg := SM_SHOWCOUNT;
      rCountID := aCountID;
      rSourKey := aSourKey;
      rDestKey := aDestKey;
      rCountCur := 0;
      rCountMax := aCntMax;
      SetWordString (rCountName, aCaption);
      ComData.Size := SizeOf(TSCount) - sizeof(TWordString) + sizeofWordstring(rCountName);
   end;
   Connector.AddSendData (@ComData, ComData.Size + SizeOf (Word));
end;

procedure  TSendClass.SendCancelExChange;
var
   ComData : TWordComData;
   pcKey : PTCKey;
begin
   pcKey := @ComData.Data;
   with pcKey^ do begin
      rmsg := SM_HIDEEXCHANGE;
      ComData.Size := SizeOf (TCKey);
   end;
   Connector.AddSendData (@ComData, ComData.Size + SizeOf (Word));
end;

procedure  TSendClass.SendShowExChange (pexleft, pexright: PTExChangedata);
var
   ComData : TWordComData;
   i : integer;
   str : string;
   psExChange : PTSExChange;
begin
   psExChange := @ComData.Data;
   with psExChange^ do begin
      rmsg := SM_SHOWEXCHANGE;
      rCheckLeft := pexleft^.rboCheck;
      rCheckRight := pexright^.rboCheck;

      str := format ('%s,%s,', [pexright^.rExChangeName, pexleft^.rExChangeName]);

      for i := 0 to 4 - 1 do begin
         if pexleft^.rItems[i].rItemCount <> 0 then begin
            rIcons[i] := pexleft^.rItems[i].ricon;
            rColors[i] := pexleft^.rItems[i].rColor;
            str := str + pexleft^.rItems[i].rItemViewName + ':' + InttoStr (pexleft^.rItems[i].rItemCount) + ',';
         end else begin
            rIcons[i] := 0;
            rColors[i] := 0;
            str := str + ',';
         end;
      end;

      for i := 0 to 4-1 do begin
         if pexright^.rItems[i].rItemCount <> 0 then begin
            rIcons[i+4] := pexright^.rItems[i].ricon;
            rColors[i+4] := pexright^.rItems[i].rColor;
            str := str + pexright^.rItems[i].rItemViewName + ':' + InttoStr (pexright^.rItems[i].rItemCount) + ',';
         end else begin
            rIcons[i+4] := 0;
            rColors[i+4] := 0;
            str := str + ',';
         end;
      end;

      SetWordString (rWordString, str);

      ComData.Size := Sizeof(TSExChange) - sizeof(TWordString) + SizeofWordString(rWordString);
   end;
   
   Connector.AddSendData (@ComData, ComData.Size + SizeOf (Word));
end;

procedure  TSendClass.SendShowInputString (aInputStringId: integer; aCaptionString: string; aListString: string);
var
   ComData : TWordComData;
   cnt : integer;
   psShowInputString: PTSShowInputString;
begin
   psShowInputString := @ComData.Data;
   with psShowInputString^ do begin
      rmsg := SM_SHOWINPUTSTRING;
      rInputStringid := aInputStringId;
      SetWordString (rWordString, aCaptionString + ',' + aListString);
      ComData.Size := sizeof(TSShowInputString) - sizeof(TWordString) + sizeofwordstring(rWordString);
   end;
   Connector.AddSendData (@ComData, ComData.Size + SizeOf (Word));
end;

procedure  TSendClass.SendRainning (aRain : TSRainning);
var
   ComData : TWordComData;
   psRainning : PTSRainning;
begin
   psRainning := @ComData.Data;
   Move (aRain, psRainning^, SizeOf (TSRainning));
   ComData.Size := SizeOf (TSRainning);
   
   Connector.AddSendData (@ComData, ComData.Size + SizeOf (Word));
end;

procedure  TSendClass.SendItemMoveInfo (ainfostr: string);
var
   cnt : integer;
   usd : TStringData;
begin
   usd.rmsg := 1;
   SetWordString (usd.rWordString, ainfostr + Connector.IpAddr + ',');
   cnt := sizeof(usd) - sizeof(TWordString) + sizeofwordstring (usd.rwordstring);
   
   FrmSockets.UdpItemMoveInfoAddData (cnt, @usd);
end;

constructor TSendClass.Create;
begin
   Connector := nil;
end;

destructor TSendClass.Destroy;
begin
   inherited destroy;
end;

procedure TSendClass.SetConnector (aConnector : TConnector);
begin
   Connector := aConnector;
end;

procedure TSendClass.SetName (aName : String);
begin
   Name := aName;
end;

procedure  TSendClass.SendShiftAttack (abo: Boolean);
var
   ComData : TWordComData;
   pcKey: PTCKey;
begin
   pcKey := @ComData.Data;
   with pcKey^ do begin
      rmsg := SM_BOSHIFTATTACK;
      if abo then rkey := 0
      else rkey := 1;
      ComData.Size := SizeOf (TCKey);
   end;
   Connector.AddSendData (@ComData, ComData.Size + SizeOf (Word));
end;

procedure  TSendClass.SendAttribFightBasic (astr: string);
var
   ComData : TWordComData;
   cnt : integer;
   psAttribFightBasic: PTSAttribFightBasic;
begin
   psAttribFightBasic := @ComData.Data;
   with psAttribFightBasic^ do begin
      rmsg := SM_ATTRIB_FIGHTBASIC;
      SetWordString (rWordString, astr);
      ComData.Size := sizeof(TSAttribFightBasic) - sizeof(TWordString) + sizeofwordstring(rwordstring);
   end;
   Connector.AddSendData (@ComData, ComData.Size + SizeOf (Word));
end;

procedure  TSendClass.SendAttribValues (var AttribData: TAttribData; var CurAttribData: TCurAttribData);
var
   ComData : TWordComData;
   psAttribValues: PTSAttribValues;
begin
   psAttribValues := @ComData.Data;
   with psAttribValues^ do begin
      rmsg := SM_ATTRIB_VALUES;

      rLight := AttribData.cLight;
      rDark := AttribData.cDark;
      rMagic := AttribData.cMagic;

      rTalent := AttribData.cTalent;
      rGoodChar := AttribData.cGoodChar;
      rBadChar := AttribData.cBadChar;
      rLucky := AttribData.cLucky;
      rAdaptive := AttribData.cAdaptive;
      rRevival := AttribData.cRevival;
      rimmunity := AttribData.cimmunity;
      rVirtue := AttribData.cVirtue;

      rhealth := CurAttribData.Curhealth * 10000 div AttribData.cHealth;
      rsatiety := CurAttribData.Cursatiety * 10000 div AttribData.cSatiety;
      rpoisoning := CurAttribData.Curpoisoning * 10000 div AttribData.cPoisoning;

      rHeadSeak := CurAttribData.CurHeadSeak * 10000 div AttribData.cHeadSeak;
      rArmSeak := CurAttribData.CurArmSeak * 10000 div AttribData.cArmSeak;
      rLegSeak := CurAttribData.CurLegSeak * 10000 div AttribData.cLegSeak;
      ComData.Size := SizeOf (TSAttribValues);
   end;

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

procedure  TSendClass.SendAttribBase (var AttribData: TAttribData; var CurAttribData: TCurAttribData);
var
   ComData : TWordComData;
   psAttribBase : PTSAttribBase;
begin
   psAttribBase := @ComData.Data;
   with psAttribBase^ do begin
      rmsg := SM_ATTRIBBASE;
      rAge := AttribData.cAge;

      rEnergy := AttribData.cEnergy;
      rCurEnergy := CurAttribData.CurEnergy;

      rInPower := AttribData.cInPower;
      rCurInPower := CurAttribData.CurInPower;

      rOutPower := AttribData.cOutPower;
      rCurOutPower := CurAttribData.CurOutPower;

      rMagic := AttribData.cMagic;
      rCurMagic := CurAttribData.CurMagic;

      rLife := AttribData.cLife;
      rCurLife := CurAttribData.CurLife;
      ComData.Size := SizeOf (TSAttribBase);
   end;
   Connector.AddSendData (@ComData, ComData.Size + SizeOf (Word));
end;

procedure  TSendClass.SendChangeFeature (var aSenderinfo: TBasicData);
var
   ComData : TWordComData;
   psChangeFeature : PTSChangeFeature;
   psChangeState : PTSChangeState;
begin
   if isDynamicObjectID (aSenderInfo.id) then begin
      psChangeState := @ComData.Data;
      with psChangeState^ do begin
         rmsg := SM_CHANGESTATE;
         rId := aSenderInfo.id;
         rState := aSenderInfo.Feature.rHitMotion;
         rFrameStart := aSenderInfo.nx;
         rFrameEnd := aSenderInfo.ny;
         ComData.Size := SizeOf (TSChangeFeature);
      end;
      Connector.AddSendData (@ComData, ComData.Size + SizeOf (Word));
   end else begin
      psChangeFeature := @ComData.Data;
      with psChangeFeature^ do begin
         rmsg := SM_CHANGEFEATURE;
         rId := aSenderInfo.id;
         rFeature := aSenderInfo.Feature;
         if rFeature.rrace = RACE_NPC then rFeature.rrace := RACE_MONSTER;
         ComData.Size := SizeOf (TSChangeFeature);
      end;
      Connector.AddSendData (@ComData, ComData.Size + SizeOf (Word));
   end;
end;

procedure  TSendClass.SendChangeProperty (var aSenderinfo: TBasicData);
var
   ComData : TWordComData;
   psChangeProperty : PTSChangeProperty;
   str : String;
begin
   psChangeProperty := @ComData.Data;
   with psChangeProperty^ do begin
      str := StrPas (@aSenderInfo.ViewName);
      if aSenderInfo.Guild[0] <> 0 then
         str := str + ',' + StrPas (@aSenderInfo.Guild);
      if Length (str) >= 18 then str := Copy (str, 1, 18);

      rmsg := SM_CHANGEPROPERTY;
      rId := aSenderInfo.id;
      StrPCopy(@rNameString, str);
      ComData.Size := SizeOf (TSChangeProperty);
   end;

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

procedure  TSendClass.SendEventString (astr: string);
var
   ComData : TWordComData;
   cnt : integer;
   psEventString : PTSEventString;
begin
   psEventString := @ComData.Data;
   with psEventString^ do begin
      rmsg := SM_EVENTSTRING;
      SetWordString (rWordString, astr);
      ComData.Size := sizeof(TSEventString) - sizeof(TWordString) + sizeofwordstring(rwordstring);
   end;
   Connector.AddSendData (@ComData, ComData.Size + SizeOf (Word));
end;

procedure  TSendClass.SendUsedMagicString (astr: string);
var
   ComData : TWordComData;
   cnt : integer;
   psEventString : PTSEventString;
begin
   psEventString := @ComData.Data;
   with psEventString^ do begin
      rmsg := SM_USEDMAGICSTRING;
      SetWordString (rWordString, astr);
      ComData.Size := sizeof(TSEventString) - sizeof(TWordString) + sizeofwordstring(rwordstring);
   end;
   Connector.AddSendData (@ComData, ComData.Size + SizeOf (Word));
end;

procedure  TSendClass.SendShootMagic (var aSenderinfo: TBasicData; atid: integer; ax, ay, abowimage, abowspeed: word; atype : byte);
var
   ComData : TWordComData;
   psMovingMagic: PTSMovingMagic;
begin
   psMovingMagic := @ComData.Data;
   with psMovingMagic^ do begin
      rmsg := SM_MOVINGMAGIC;
      rsid := aSenderInfo.id;
      reid := atid;
      rtx := ax;
      rty := ay;
      rMoveingstyle := 0;
      rsf := 0;
      rmf := abowimage;
      ref := 0;
      rspeed := abowspeed; //rspeed := 20;

      rafterimage := 0;
      rafterover := 0;
      rtype := atype;
      
      ComData.Size := SizeOf (TSMovingMagic);
   end;
   Connector.AddSendData (@ComData, ComData.Size + SizeOf (Word));
end;


procedure  TSendClass.SendSayUseMagic (var aSenderinfo: TBasicData; astr: string);
var
   ComData : TWordComData;
   cnt : integer;
   psSay : PTSSay;
begin
   psSay := @ComData.Data;
   with psSay^ do begin
      rmsg := SM_SAYUSEMAGIC;
      rId  := aSenderInfo.id;
      rkind := 0;
      SetWordString (rWordString, astr);
      ComData.Size := sizeof(TSSay) - sizeof(TWordString) + sizeofwordstring(rwordstring);
   end;
   Connector.AddSendData (@ComData, ComData.Size + SizeOf (Word));
end;

procedure  TSendClass.SendSay (var aSenderinfo: TBasicData; astr: string);
var
   ComData : TWordComData;
   cnt : integer;
   psSay : PTSSay;
begin
   psSay := @ComData.Data;
   with psSay^ do begin
      rmsg := SM_SAY;
      rId  := aSenderInfo.id;
      rkind := 0;
      SetWordString (rWordString, astr);
      ComData.Size := sizeof(TSSay) - sizeof(TWordString) + sizeofwordstring(rwordstring);
   end;
   Connector.AddSendData (@ComData, ComData.Size + SizeOf (Word));
end;

procedure  TSendClass.SendTurn (var aSenderinfo: TBasicData);
var
   ComData : TWordComData;
   psTurn : PTSTurn;

⌨️ 快捷键说明

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