?? main.pas
字號:
CM_WALK:Begin
PlayerInfo.X:=low(msg.recog);
PlayerInfo.Y:=high(msg.recog);
PlayerInfo.dir:=msg.Tag;
dmsg := MakeDefaultMsg (SM_WALK,0,PlayerInfo.x, PlayerInfo.y, PlayerInfo.dir+light*256);
desc.Feature:=MakeFeature(0,4,2,5,20);
desc.Status:=0;
SendSocket(Socket,EncodeMessage(dmsg)+EncodeBuffer(@desc,sizeof(TCharDesc)));
if (PlayerInfo.X=11) and (playerinfo.Y=14) then
begin
Playerinfo.map:='4';
dmsg := MakeDefaultMsg (SM_NEWMAP, 0, 200, 200, Playerinfo.dir);
SendSocket(Socket,EncodeMessage(dmsg)+EncodeString(Playerinfo.map));
end;
end;
CM_DEALADDITEM:Begin
dmsg := MakeDefaultMsg (SM_DEALADDITEM_OK, 0, 0, 0, 0);
SendSocket(Socket,EncodeMessage(dmsg));
end;
CM_TAKEONITEM:Begin
dmsg := MakeDefaultMsg (SM_TAKEON_OK, 1, 0, 0, 0);
SendSocket(Socket,EncodeMessage(dmsg));
end;
CM_TAKEOFFITEM:Begin
dmsg := MakeDefaultMsg (SM_TAKEOFF_OK, 1, 0, 0, 0);
SendSocket(Socket,EncodeMessage(dmsg));
end;
CM_TURN:begin
PlayerInfo.X:=low(msg.Recog);
PlayerInfo.Y:=high(msg.Recog);
PlayerInfo.dir:=msg.Tag;
dmsg := MakeDefaultMsg (SM_TURN, 0, PlayerInfo.x, PlayerInfo.y, makeword(light,PlayerInfo.dir)); //消息,角色編號,X,Y,dir + light
desc.Feature:=1;
desc.Status:=0;
SendSocket(Socket,EncodeMessage(dmsg)+Encodebuffer(@desc,sizeof(TCharDesc)));
end;
CM_CREATEGROUP:begin
dmsg := MakeDefaultMsg (SM_CREATEGROUP_OK, 0, 0, 0, 0);
SendSocket(Socket,EncodeMessage(dmsg));
end;
CM_RUN:Begin
PlayerInfo.X:=low(msg.Recog);
PlayerInfo.Y:=high(msg.Recog);
PlayerInfo.dir:=msg.Tag;
dmsg := MakeDefaultMsg (SM_RUN, 0, PlayerInfo.x, PlayerInfo.y, makeword(light,PlayerInfo.dir)); //消息,角色編號,X,Y,dir + light
desc.Feature:=0;
desc.Status:=0;
SendSocket(Socket,EncodeMessage(dmsg)+Encodebuffer(@desc,sizeof(TCharDesc)));
end;
CM_OPENDOOR:Begin
dmsg := MakeDefaultMsg (SM_OPENDOOR_OK, 0, msg.param, msg.tag, 0);
SendSocket(Socket,EncodeMessage(dmsg));
end;
end;
end;
procedure TMainForm.AddMsg(S: String);
begin
Memo1.Lines.add(S);
end;
procedure TMainForm.ProcLogin(Socket: TCustomWinSocket; Data: String);
var
LoginID,CharName,Certi,VerNum,Str:String;
dmsg :TDefaultMessage;
wl:TMessageBodyWL;
s:string;
begin
str :=Copy(Data,3,Length(Data)-2);
LoginID:=Copy(Str,1,Pos('/',Str)-1);
delete(Str,1,Pos('/',Str));
CharName:=Copy(Str,1,Pos('/',Str)-1);
delete(Str,1,Pos('/',Str));
Certi:=Copy(Str,1,Pos('/',Str)-1);
delete(Str,1,Pos('/',Str));
VerNum:=Copy(Str,1,Pos('/',Str)-1);
dmsg := MakeDefaultMsg (SM_LOGON, 0, PlayerInfo.x, PlayerInfo.Y, MakeWord(light,PlayerInfo.dir)); //參數(shù):消息,角色號(0/1),位置x,位置y,方向
with wl do
begin
lParam1:=1; //desc.Feature,
lParam2:=0; //desc.Status
lTag1:=0; //Loword(ltag1)=1則可以組隊(duì)
lTag2:=0;
end;
AddMsg('Log On!');
s:='';//EncodeBuffer (@wl,sizeof(TMessageBodyWL));
SendSocket(Socket,EncodeMessage(dmsg)+s);
end;
procedure TMainForm.BroadcaseSay(ActorID:Integer;data:String);
var
i:integer;
dmsg :TDefaultMessage;
s:String;
begin
dmsg:=MakeDefaultMsg(SM_HEAR,ActorID,smallint($FF00 or $0000),0,0);
s:=EncodeMessage(dmsg)+EnCodeString(Data);
for i:= 0 to ssocket.Socket.ActiveConnections - 1 do
begin
SendSocket(ssocket.Socket.Connections[i],s);
end;
end;
procedure TMainForm.Button1Click(Sender: TObject);
var
i:integer;
dmsg :TDefaultMessage;
s:String;
desc:TCharDesc;
begin
dmsg := MakeDefaultMsg (SM_SHOWEVENT, 0, 20, 20, 0);
s:=edit6.text;
SendSocket(ssocket.Socket.Connections[0],EncodeMessage(dmsg)+EncodeString(s));
exit;
dmsg := MakeDefaultMsg (SM_NEWMAP, 0, 20, 20, 0);
s:=edit6.text;
SendSocket(ssocket.Socket.Connections[0],EncodeMessage(dmsg)+EncodeString(s));
exit;
dmsg := MakeDefaultMsg (SM_WALK, 0, PlayerINfo.x, Playerinfo.Y, 0);
desc.Feature:=2;
desc.Status:=0;
SendSocket(ssocket.Socket.Connections[0],EncodeMessage(dmsg)+EncodeBuffer(@desc,sizeof(TCharDesc)));
dmsg:=MakeDefaultMsg(strtointdef(edit1.text,0),strtointdef(edit2.text,0),
strtointdef(edit3.text,0),strtointdef(edit4.text,0),strtointdef(edit5.text,0));
s:=edit6.text;
s:=EncodeMessage(dmsg)+EncodeString(s);
for i:= 0 to ssocket.Socket.ActiveConnections - 1 do
begin
SendSocket(ssocket.Socket.Connections[i],s);
end;
end;
procedure TMainForm.QueryBag(Socket: TCustomWinSocket; Who: String);
var
dmsg:TDefaultMessage;
s:String;
ci:TClientItem;
begin
dmsg := MakeDefaultMsg (SM_BAGITEMS, 0, 0, 0, 0);
s:='';
ci.s.Name:='超級武器';
ci.s.Looks:=100;
ci.s.StdMode:=5;
ci.s.Shape:=45;
ci.s.AC:=10;
ci.MakeIndex:=1;
ci.Dura:=10;
ci.DuraMax:=20;
s:=encodebuffer(@ci,sizeof(TClientItem))+'/';
SendSocket(Socket,EncodeMessage(dmsg)+s);
end;
procedure TMainForm.Button3Click(Sender: TObject);
var
dmsg:TDefaultMessage;
s:String;
ci:TClientItem;
begin
dmsg := MakeDefaultMsg (SM_ADDITEM, 0, 0, 0, 0);
s:='';
ci.s.Name:=edit7.text;
ci.s.Looks:=strtointdef(edit8.text,0);
ci.s.StdMode:=strtointdef(edit9.text,0);;
ci.s.Shape:=strtointdef(edit10.text,0);;
ci.s.AC:=strtointdef(edit11.text,0);
ci.s.MAC:=strtointdef(edit12.text,0);
ci.s.DC:=strtointdef(edit16.text,0);
ci.s.mc:=strtointdef(edit17.text,0);
ci.s.SC:=strtointdef(edit18.text,0);
ci.s.DuraMax:=strtointdef(edit14.text,0);
ci.s.NeedIdentify:=strtointdef(edit16.text,0);
ci.MakeIndex:=strtointdef(edit19.text,0);
ci.Dura:=10;
ci.DuraMax:=20;
s:=encodebuffer(@ci,sizeof(TClientItem));
SendSocket(SSocket.Socket.Connections[0],EncodeMessage(dmsg)+s);
end;
procedure TMainForm.Timer1Timer(Sender: TObject);
var
i:integer;
s:String;
begin
s:='#+GOOD/'+inttostr(gettickcount)+'!';
for i:= 0 to ssocket.Socket.ActiveConnections - 1 do
begin
try
if ssocket.Socket.Connections[i].Connected then
ssocket.Socket.Connections[i].SendText(s);
except
end;
end;
end;
procedure TMainForm.SSocketClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
timer1.Enabled:=false;
end;
function TMainForm.CheckPassword(Userid, password: string): Integer;
var
s:string;
begin
s:=Userinfo.ReadString(UserID,'password','');
if s='' then begin result:=-1;exit;end;
if password=s then
result:=0
else result:=-2;
end;
function TMainForm.QueryChar(LoginID: String): String;
var
i:integer;
s:string;
charname:string;
begin
result:='';
for i:=1 to 2 do
begin
charname:=userinfo.readstring(LoginID,'Char'+inttostr(i),'');
if length(charname)=0 then continue;
result:=result+charname+'/';
result:=result+userinfo.ReadString(charname,'job','0')+'/';
result:=result+userinfo.ReadString(charname,'hair','0')+'/';
result:=result+userinfo.ReadString(charname,'level','1')+'/';
result:=result+userinfo.ReadString(charname,'sex','0')+'/';
end;
end;
procedure TMainForm.GetCharAbility(var Playerinfo: TPlayerinfo);
begin
with Playerinfo.ab do
begin
MP:=UserInfo.ReadInteger(PlayerInfo.CharName,'MP',600);
MaxMP:=UserInfo.ReadInteger(PlayerInfo.CharName,'MaxMP',900);
HP:=UserInfo.ReadInteger(PlayerInfo.CharName,'HP',500);
MaxHP:=UserInfo.ReadInteger(PlayerInfo.CharName,'MaxHP',600);;
Exp:=UserInfo.ReadInteger(PlayerInfo.CharName,'EXP',1000);;
MaxExp:=UserInfo.ReadInteger(PlayerInfo.CharName,'MaxExP',1200);;
Level:=UserInfo.ReadInteger(PlayerInfo.CharName,'Level',1);;
Weight:=UserInfo.ReadInteger(PlayerInfo.CharName,'Weight',0);;
MaxWeight:=UserInfo.ReadInteger(PlayerInfo.CharName,'MaxWeight',100);;
WearWeight:=UserInfo.ReadInteger(PlayerInfo.CharName,'WearWeight',0);;
MaxWearWeight:=UserInfo.ReadInteger(PlayerInfo.CharName,'MaxWearWeight',100);;
HandWeight:=UserInfo.ReadInteger(PlayerInfo.CharName,'HandWeight',0);;
MaxHandWeight:=UserInfo.ReadInteger(PlayerInfo.CharName,'MaxHandWeight',100);
AC:=UserInfo.ReadInteger(PlayerInfo.CharName,'AC',20);;
MAC:=UserInfo.ReadInteger(PlayerInfo.CharName,'MAC',30);;
DC:=UserInfo.ReadInteger(PlayerInfo.CharName,'DC',30);;
SC:=UserInfo.ReadInteger(PlayerInfo.CharName,'SC',25);;
MC:=UserInfo.ReadInteger(PlayerInfo.CharName,'MC',15);;
end;
end;
procedure TMainForm.FormDestroy(Sender: TObject);
begin
UserInfo.Free;
end;
end.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -