传奇一条龙,复古传奇,GM基地,传奇服务端

 找回密码
 立即注册

QQ登录

只需一步,快速开始

网友自助信息发布区,请自行甄别

查看: 721|回复: 3

Eiserver源码2004版传奇3 1.45引擎源代码

[复制链接]

624

帖子

2132

钻石

1355

积分

管理员

Rank: 9Rank: 9Rank: 9

在线时间
110 小时
发表于 2018-12-3 00:24:14 | 显示全部楼层 |阅读模式
Eiserver源码2004版传奇3 1.45引擎源代码框架


Uses Windows,SysUtils,Classes,tList32,Dialogs;

const
    CmdStr:array[0..4] of String=('拜师','收徒','删除徒弟','调整掌门','销毁门派');
    CmdCount=4;

var tlMaster:TStringList;
    MasterModify:TRTLCriticalSection;
    OnPlayerLogin_ret:DWORD=$4F7FBF;
    ToDisPlay_ret:DWORD=$507a9c;

implementation

uses comman,_function,_Param;

function CreateNewTMaster(MS,ST:DWORD;MSS,STS:String):Boolean;
var cMaster:TMaster;
    TUS1,TUS2:TPlayer;
begin
  ReSult:=False;
  try
  cMaster:=TMaster.Create;
  InitializeCriticalSection(cMaster.ModStu);
  InitializeCriticalSection(cMaster.ModAig);
  cMaster.SzID:=PDWORD(cMaster)^;
  cMaster.SzMaster:=MSS;
  cMaster.Students:=TStringList.Create;
  cMaster.Students.Clear;
  cMaster.Students.Add(STS);
  cMaster.AlignMent:=TStringList.Create;
  cMaster.AlignMent.Clear;
  try
  EnterCriticalSection(MasterModify);
  tlMaster.AddObject(MSS,cMaster);
  finally LeaveCriticalSection(MasterModify); end;
  EnterCriticalSection(PlayerModiy);
  TUS1:=Player.IndexOfObject(MS) as TPlayer;
  TUS2:=Player.IndexOfObject(ST) as TPlayer;
  LeaveCriticalSection(PlayerModiy);
  TUS1.Master:=cMaster as TMaster;
  TUS2.Master:=cMaster as TMaster;
  TUS1.ParamType[0]:=1;
  TUS1.ParamType[0]:=2;
  PDWORD(MS+$B3C)^:=TUS1.Master.SzID;
  PDWORD(ST+$B3C)^:=TUS2.Master.SzID;
  NameProcess_(MS,MSS);
  NameProcess_(ST,STS);
  ReSult:=TRUE;
  except end;
end;

procedure CmdTranslation(PID,_CmdMsg,_LParam:DWORD);
var CmdMsg,LParam:string;
    i,j:integer;
    UserInfo,UserInfo_:TPlayer;
    _Player:string;
    DID:DWORD;
begin
  if _CmdMsg<>0 then
   begin
     SetLength(CmdMsg,PDWORD(_CmdMsg-4)^);
     StrCopy(PCHAR(CmdMsg),PCHAR(_CmdMsg));
     j:=-1;
     for i:=0 to CmdCount do
      begin
       if comparetext(CmdMsg,CmdStr[I])=0 then
        begin
          j:=i;
          break;
        end;
      end;
     if j<>-1 then
      begin
        case j of
         0:begin
             EnterCriticalSection(PlayerModiy);
             UserInfo:=Player.IndexOfObject(PID) as TPlayer;
             LeaveCriticalSection(PlayerModiy);
             UserInfo.ParamBool[0]:=UserInfo.ParamBool[0] xor 1;
             case UserInfo.ParamBool[0] of
               0: LineMsgPrivate(PID,'拜师状态:关闭');
               1: LineMsgPrivate(PID,'拜师状态:开启');
             end;
           end;
         1:begin
             EnterCriticalSection(PlayerModiy);
             UserInfo:=Player.IndexOfObject(PID) as TPlayer;
             LeaveCriticalSection(PlayerModiy);
             SetLength(_Player,PDWORD(PDWORD(PID+$2C)^-4)^);
             StrCopy(PCHAR(_Player),PCHAR(PDWORD(PID+$2C)^));
{已经有师门} if ((UserInfo.ParamType[0]=1) and (UserInfo.Master<>nil) and (_Player=UserInfo.Master.SzMaster) and (_LParam<>0)) then
               begin
                 SetLength(LParam,PDWORD(_LParam-4)^);
                 StrCopy(PCHAR(LParam),PCHAR(_LParam));
                 DID:=IsOnline(LParam);
                 if DID<>0 then
                   begin
                     EnterCriticalSection(PlayerModiy);
                     UserInfo_:=Player.IndexOfObject(DID) as TPlayer;
                     LeaveCriticalSection(PlayerModiy);
                     if ((UserInfo_.Master=nil) and (UserInfo_.ParamType[0]=0) and (PByte(DID+$40)^<=_ParamS.ParamVar[41])) then
                       if UserInfo_.ParamBool[0]=1 then
                         if IsFaceToFace(PID,DID)=TRUE then
                           begin
                             try
                               EnterCriticalSection(UserInfo.Master.ModStu);
                               UserInfo_.Master:=UserInfo.Master;
                               UserInfo_.Master.Students.Add(LParam);
                             finally LeaveCriticalSection(UserInfo.Master.ModStu);end;
                             UserInfo_.ParamType[0]:=2;
                             PDWORD(DID+$B3C)^:=UserInfo_.Master.SzID;
                             NameProcess_(DID,LParam);
                             LineMsgPrivate(PID,'恭喜,收徒成功!');
                             LineMsgPrivate(DID,'恭喜,拜师成功!');
                           end
                         else LineMsgPrivate(PID,'必须面对面')
                       else LineMsgPrivate(PID,'对方拜师状态处于:关闭');
                   end;
               end
{没有师门}  else if ((UserInfo.ParamType[0]=0) and (UserInfo.Master=nil) and (_LParam<>0) and(PByte(PID+$40)^>=_ParamS.ParamVar[40])) then
               begin
                 SetLength(LParam,PDWORD(_LParam-4)^);
                 StrCopy(PCHAR(LParam),PCHAR(_LParam));
                 DID:=IsOnline(LParam);
                 if DID<>0 then
                   begin
                     EnterCriticalSection(PlayerModiy);
                     UserInfo_:=Player.IndexOfObject(DID) as TPlayer;
                     LeaveCriticalSection(PlayerModiy);
                     if ((UserInfo_.Master=nil) and (UserInfo_.ParamType[0]=0) and (PByte(DID+$40)^<=_ParamS.ParamVar[41])) then
                       if UserInfo_.ParamBool[0]=1 then
                         if IsFaceToFace(PID,DID)=TRUE then
                           begin
                             try
                             SetLength(_Player,PDWORD(PDWORD(PID+$2C)^-4)^);
                             StrCopy(PCHAR(_Player),PCHAR(PDWORD(PID+$2C)^));
                             if CreateNewTMaster(PID,DID,_Player,LParam)=TRUE then
                              begin
                               LineMsgPrivateS(PID,'恭喜,收徒成功!');
                               LineMsgPrivateS(DID,'恭喜,拜师成功!');
                              end;
                             except end;
                           end
                         else LineMsgPrivate(PID,'必须面对面')
                       else LineMsgPrivate(PID,'对方拜师状态处于:关闭');
                   end;
               end;

游客,如果您要查看本帖隐藏内容请回复

回复

使用道具 举报

38

帖子

5

钻石

48

积分

初级GM

Rank: 1

在线时间
2 小时
发表于 2019-3-11 11:16:55 | 显示全部楼层
Eiserver源码2004版传奇3 1.45引擎源代码
回复

使用道具 举报

9

帖子

46

钻石

9

积分

初级GM

Rank: 1

在线时间
0 小时
发表于 2020-1-20 08:39:37 | 显示全部楼层
Eiserver源码2004版传奇3 1.45引擎源代码框架
回复

使用道具 举报

17

帖子

52

钻石

18

积分

初级GM

Rank: 1

在线时间
1 小时
发表于 2020-3-20 17:50:05 | 显示全部楼层
看看,传奇3的源码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|85ji.com Inc.最大的GM论坛交流基地 ( 粤ICP备11015868号-18 ) 传奇私服 Array7.2 版权所有 © 八五论坛 Comsenz Inc.

快速回复 快速发帖 返回顶部 返回列表