with LViewOnline.Items.Add do begin
Caption := p_Login^.NickName;
SubItems.Add('空 闲');
SubItems.Add('0'); //无房间
LIP:= p_Login^.Head.LIP;
SubItems.Add(LIP);
LPort:= p_Login^.Head.LPort;
SubItems.Add(IntToStr(LPort));
SubItems.Add('-2'); //无座位
end;
for i:=0 to LViewOnline.Items.Count-1 do begin
tmpNickName:= LViewOnline.Items[i].Caption; //昵称
tmpStatus:= LViewOnline.Items[i].SubItems[0]; //状态
tmpRoom:= LViewOnline.Items[i].SubItems[1]; //房间号
tmpIP:= LViewOnline.Items[i].SubItems[2]; //IP
tmpPort:= LViewOnline.Items[i].SubItems[3]; //端口
tmpChairIndex:= StrToInt(LViewOnline.Items[i].SubItems[4]); //座位号
//前5项为包的内容,后两项为收包地址
SendOnlineList(tmpNickName, tmpStatus, tmpRoom, tmpIP, tmpPort, vIP, vPort);
if tmpChairIndex<> -1 then SendHall(tmpNickName, tmpStatus, tmpChairIndex, vIP, vPort);
end;
//删除服务器上该玩家
for i:=LViewOnline.Items.Count-1 downto 0 do begin
if (LViewOnline.Items[i].SubItems[2]= vIP) and
(LViewOnline.Items[i].SubItems[3]= IntToStr(vPort) ) then begin
str:= LViewOnline.Items[i].Caption+ ' 离开了游戏大厅';
MemoInfo.Lines.Add(str);
vChairIndex:= StrToInt(LViewOnline.Items[i].SubItems[4]);
p_Logout^.ChairIndex:= vChairIndex;
LViewOnline.Items.Delete(i);
end;
end;
for i:= 0 to LViewOnline.Items.Count-1 do begin
if (LViewOnline.Items[i].SubItems[2]= vIP) and
(LViewOnline.Items[i].SubItems[3]= IntToStr(vPort)) then begin
LViewOnline.Items[i].SubItems[0]:= vStatusStr;
LViewOnline.Items[i].SubItems[1]:= IntToStr((vChairIndex div 2)+1); //房间号
LViewOnline.Items[i].SubItems[4]:= IntToStr(vChairIndex);
break;
end;
end;