📄 ugroup.pas
字号:
tmpConnector.ExitBattleRoom;
exit;
end;
end;
end;
function TBattleRoom.GetJoinCount : Integer;
begin
Result := JoinList.Count;
end;
procedure TBattleRoom.AddJoinConnector (aConnector : TConnector);
begin
JoinList.Add (aConnector);
end;
procedure TBattleRoom.RemoveJoinConnector (aConnector : TConnector);
var
i : Integer;
tmpConnector : TConnector;
begin
for i := 0 to JoinList.Count - 1 do begin
tmpConnector := JoinList.Items [i];
if tmpConnector = aConnector then begin
JoinList.Delete (i);
exit;
end;
end;
end;
function TBattleRoom.GetViewerConnector (aIndex : Integer) : TConnector;
begin
Result := nil;
if ViewerList.Count = 0 then exit;
if aIndex >= ViewerList.Count then exit;
Result := ViewerList.Items [aIndex];
end;
procedure TBattleRoom.Update (CurTick : Integer);
var
Users : TUserList;
OwnConnector, FgtConnector : TConnector;
OwnUser, FgtUser : TUser;
begin
Users := nil;
if UserList <> nil then begin
Users := TUserList (UserList);
Users.Update (CurTick);
end;
if OwnerConnector = nil then exit;
if (OwnerUser = nil) and (Owner <> '') then begin
OwnerUser := Users.GetUserPointer (Owner);
end;
if (FighterUser = nil) and (Fighter <> '') then begin
FighterUser := Users.GetUserPointer (Fighter);
end;
// Users.Update (CurTick);
if (Fighter = '') and (RoomStatus <> brs_waitfighter) and
(RoomStatus <> brs_none) then begin
RoomStatus := brs_none;
if (Stage > 0) and (Stage < TOTAL_SCORE) then begin
if FboRoomGrade = true then begin
SendResultData (OwnerWin, FighterWin, 0, 1);
end;
end;
end;
OwnConnector := TConnector (OwnerConnector);
FgtConnector := TConnector (FighterConnector);
OwnUser := TUser (OwnerUser);
FgtUser := TUser (FighterUser);
Case RoomStatus of
brs_none :
begin
if OwnerUser <> nil then begin
OwnUser.SendClass.SendShowCenterMessage('措访 惑措磊啊 甸绢棵锭鳖瘤 措扁窍咯 林技夸', WinRGB(31, 31, 31));
RoomStatus := brs_waitfighter;
end;
end;
brs_waitfighter :
begin
if (OwnerUser <> nil) and (FighterUser <> nil) then begin
SendRankData (OwnConnector);
SendRankData (FgtConnector);
OwnerName := OwnConnector.CharName;
FighterName := FgtConnector.CharName;
OwnerServer := OwnConnector.ServerName;
FighterServer := FgtConnector.ServerName;
OwnUser.SendRefillMessage (OwnUser.BasicData.ID, OwnUser.BasicData);
FgtUser.SendRefillMessage (FgtUser.BasicData.ID, FgtUser.BasicData);
OwnUser.SendClass.SendBattleBar (Owner, Fighter, OwnerWin, FighterWin, OwnerPercent, FighterPercent, BattleType);
FgtUser.SendClass.SendBattleBar (Owner, Fighter, OwnerWin, FighterWin, OwnerPercent, FighterPercent, BattleType);
if OwnUser.BasicData.X <> OWNER_XPOS then begin
OwnerXpos := OWNER_XPOS;
OwnerDir := DR_2;
OwnUser.EndUser;
OwnUser.BasicData.X := OwnerXpos;
OwnUser.BasicData.Y := BOTH_YPOS;
OwnUser.BasicData.Dir := OwnerDir;
// OwnUser.BasicData.Feature.rfeaturestate := wfs_normal;
OwnUser.SendClass.SendMap (OwnUser.BasicData, OwnUser.Manager.MapName,
OwnUser.Manager.ObjName, OwnUser.Manager.RofName,
OwnUser.Manager.TilName, OwnUser.Manager.SoundBase);
OwnUser.StartUser;
OwnUser.SetActionState (as_ice);
end;
OwnUser.SendClass.SendShowCenterMessage (format ('%s丛捞 措访惑措磊肺,甸绢坷继嚼聪促', [Fighter]), WinRGB (31, 31, 31));
FgtUser.SendClass.SendShowCenterMessage (format ('%s丛阑 措访惑措磊肺,急琶窍继嚼聪促', [Owner]), WinRGB (31, 31, 31));
OwnUser.SendClass.SendChatMessage (format ('%s丛狼 傈利篮 %d铰 %d菩 %d谗辫 %d痢 %d困 涝聪促',
[Fighter, FgtConnector.Win, FgtConnector.Lose, FgtConnector.DisConnected, FgtConnector.Points, FgtConnector.Grade]), SAY_COLOR_SYSTEM);
FgtUser.SendClass.SendChatMessage (format ('%s丛狼 傈利篮 %d铰 %d菩 %d谗辫 %d痢 %d困 涝聪促',
[Owner, OwnConnector.Win, OwnConnector.Lose, OwnConnector.DisConnected, OwnConnector.Points, OwnConnector.Grade]), SAY_COLOR_SYSTEM);
// BattleStartTick := CurTick;
StatusElapsedTick := CurTick;
RoomStatus := brs_ready;
end;
end;
brs_ready :
begin
OwnUser.SendClass.SendShowCenterMessage ('措访霖厚 窍绞矫坷', WinRGB (31, 31, 31));
FgtUser.SendClass.SendShowCenterMessage ('措访霖厚 窍绞矫坷', WinRGB (31, 31, 31));
OwnUser.SendClass.SendShowCenterMessage ('霖厚啊 场唱搁 牢荤(F4)窍绞矫坷', WinRGB (31, 31, 31));
FgtUser.SendClass.SendShowCenterMessage ('霖厚啊 场唱搁 牢荤(F4)窍绞矫坷', WinRGB (31, 31, 31));
OwnerXpos := OWNER_XPOS;
FighterXpos := FIGHTER_XPOS;
OwnerDir := DR_2;
FighterDir := DR_6;
StatusElapsedTick := CurTick;
Stage := 0;
OwnerWin := 0;
FighterWin := 0;
RoomStatus := brs_readyfight;
end;
brs_readyfight :
begin
if CurTick > StatusElapsedTick + 4000 then begin
OwnConnector.SendShowCenterMessage ('霖厚矫埃捞 版苞登绢,措访篮 吝瘤邓聪促', WinRGB (31, 31, 31));
FgtConnector.SendShowCenterMessage ('霖厚矫埃捞 版苞登绢,措访篮 吝瘤邓聪促', WinRGB (31, 31, 31));
FboAllowDelete := true;
StatusElapsedTick := CurTick;
exit;
end;
if Stage >= 1 then begin
if (OwnUser.BasicData.X = OwnerXpos) and (OwnUser.BasicData.Y = BOTH_YPOS) and
(OwnUser.BasicData.Dir = OwnerDir) then begin
if (FgtUser.BasicData.X = FighterXpos) and (FgtUser.BasicData.Y = BOTH_YPOS) and
(FgtUser.BasicData.Dir = FighterDir) then begin
OwnUser.SendClass.SendShowCenterMessage ('磊府甫 颗败 措访阑 矫累钦聪促', WinRGB (31, 31, 31));
FgtUser.SendClass.SendShowCenterMessage ('磊府甫 颗败 措访阑 矫累钦聪促', WinRGB (31, 31, 31));
OwnUser.SendClass.SendShowCenterMessage ('霖厚窍绞矫坷', WinRGB (31, 31, 31));
FgtUser.SendClass.SendShowCenterMessage ('霖厚窍绞矫坷', WinRGB (31, 31, 31));
inc (Stage);
OwnUser.SendClass.SendShowCenterMessage (format ('STAGE %d', [Stage]), WinRGB (31, 31, 31));
FgtUser.SendClass.SendShowCenterMessage (format ('STAGE %d', [Stage]), WinRGB (31, 31, 31));
StatusElapsedTick := CurTick;
BattleStartTick := CurTick;
RoomStatus := brs_fighting;
exit;
end;
end;
end else begin
if (OwnUser.BasicData.X = OwnerXpos) and (OwnUser.BasicData.Y = BOTH_YPOS) and
(OwnUser.BasicData.Dir = OwnerDir) and (OwnerMotion = AM_HELLO) then begin
if (FgtUser.BasicData.X = FighterXpos) and (FgtUser.BasicData.Y = BOTH_YPOS) and
(FgtUser.BasicData.Dir = FighterDir) and (FighterMotion = AM_HELLO) then begin
OwnUser.SendRefillMessage (OwnUser.BasicData.ID, OwnUser.BasicData);
FgtUser.SendRefillMessage (FgtUser.BasicData.ID, FgtUser.BasicData);
OwnUser.SendClass.SendBattleBar (Owner, Fighter, OwnerWin, FighterWin, OwnerPercent, FighterPercent, BattleType);
FgtUser.SendClass.SendBattleBar (Owner, Fighter, OwnerWin, FighterWin, OwnerPercent, FighterPercent, BattleType);
OwnUser.SendClass.SendShowCenterMessage ('措访阑 矫累钦聪促', WinRGB (31, 31, 31));
FgtUser.SendClass.SendShowCenterMessage ('措访阑 矫累钦聪促', WinRGB (31, 31, 31));
inc (Stage);
OwnUser.SendClass.SendShowCenterMessage (format ('STAGE %d', [Stage]), WinRGB (31, 31, 31));
FgtUser.SendClass.SendShowCenterMessage (format ('STAGE %d', [Stage]), WinRGB (31, 31, 31));
OwnerMotion := AM_NONE;
FighterMotion := AM_NONE;
StatusElapsedTick := CurTick;
BattleStartTick := CurTick;
RoomStatus := brs_fighting;
exit;
end;
end;;
end;
end;
brs_fighting :
begin
if OwnConnector.WaitTick = 0 then begin
if OwnUser.GetActionState = as_ice then begin
OwnUser.SetActionState (as_free);
FgtUser.SetActionState (as_free);
OwnConnector.WaitStartTick := 0;
FgtConnector.WaitStartTick := 0;
end;
end;
StatusElapsedTick := CurTick;
{
if TUser (OwnerUser).BasicData.dir <> OwnerDir then begin
TUser (OwnerUser).SendClass.SendChatMessage (format ('%s丛捞 磊府捞呕肺 菩窍继嚼聪促', [Owner]), WinRGB (31, 31, 31));
TUser (FighterUser).SendClass.SendChatMessage (format ('%s丛捞 磊府捞呕肺 菩窍继嚼聪促', [Owner]), WinRGB (31, 31, 31));
inc (FighterWin);
RoomStatus := brs_nextready;
exit;
end else if TUser (FighterUser).BasicData.dir <> FighterDir then begin
TUser (OwnerUser).SendClass.SendChatMessage (format ('%s丛捞 磊府捞呕肺 菩窍继嚼聪促. 促澜措访栏肺 逞绢癌聪促', [Owner]), WinRGB (31, 31, 31));
TUser (FighterUser).SendClass.SendChatMessage (format ('%s丛捞 磊府捞呕肺 菩窍继嚼聪促. 促澜措访栏肺 逞绢癌聪促', [Owner]), WinRGB (31, 31, 31));
inc (OwnerWin);
RoomStatus := brs_nextready;
exit;
end;
}
if OwnUser.BasicData.Feature.rfeaturestate = wfs_die then begin
inc (FighterWin);
OwnUser.SendClass.SendShowCenterMessage (format ('%s丛捞 %d铰 窍继嚼聪促.', [Fighter, FighterWin]), WinRGB (31, 31, 31));
FgtUser.SendClass.SendShowCenterMessage (format ('%s丛捞 %d铰 窍继嚼聪促.', [Fighter, FighterWin]), WinRGB (31, 31, 31));
RoomStatus := brs_nextready;
exit;
end else if FgtUser.BasicData.Feature.rfeaturestate = wfs_die then begin
inc (OwnerWin);
OwnUser.SendClass.SendShowCenterMessage (format ('%s丛捞 %d铰 窍继嚼聪促.', [Owner, OwnerWin]), WinRGB (31, 31, 31));
FgtUser.SendClass.SendShowCenterMessage (format ('%s丛捞 %d铰 窍继嚼聪促.', [Owner, OwnerWin]), WinRGB (31, 31, 31));
RoomStatus := brs_nextready;
exit;
end;
if CurTick > BattleStartTick + 8000 then begin
if OwnerPercent > FighterPercent then begin
inc (OwnerWin);
OwnUser.SendClass.SendShowCenterMessage (format ('%s丛捞 %d铰 窍继嚼聪促.', [Owner, OwnerWin]), WinRGB (31, 31, 31));
FgtUser.SendClass.SendShowCenterMessage (format ('%s丛捞 %d铰 窍继嚼聪促.', [Owner, OwnerWin]), WinRGB (31, 31, 31));
RoomStatus := brs_nextready;
exit;
end else if OwnerPercent < FighterPercent then begin
inc (FighterWin);
OwnUser.SendClass.SendShowCenterMessage (format ('%s丛捞 %d铰 窍继嚼聪促.', [Fighter, FighterWin]), WinRGB (31, 31, 31));
FgtUser.SendClass.SendShowCenterMessage (format ('%s丛捞 %d铰 窍继嚼聪促.', [Fighter, FighterWin]), WinRGB (31, 31, 31));
RoomStatus := brs_nextready;
exit;
end else if OwnerPercent = FighterPercent then begin
OwnUser.SendClass.SendShowCenterMessage ('措访矫埃捞 版苞窍咯 措访阑 辆丰钦聪促', WinRGB (31, 31, 31));
FgtUser.SendClass.SendShowCenterMessage ('措访矫埃捞 版苞窍咯 措访阑 辆丰钦聪促', WinRGB (31, 31, 31));
FboAllowDelete := true;
BattleStartTick := CurTick;
exit;
end;
BattleStartTick := CurTick;
end;
end;
brs_nextready :
begin
{
if Stage < TOTAL_SCORE then begin
if CurTick > StatusElapsedTick + 500 then begin
RemakeBattleChar (Stage);
StatusElapsedTick := CurTick;
end;
end;
if CurTick > StatusElapsedTick + 500 then begin
if Stage = 3 then begin
OwnUser.SetActionState (as_ice);
FgtUser.SetActionState (as_ice);
if OwnerWin = WIN_SCORE then begin
Winner := Owner;
Loser := Fighter;
OwnUser.SendClass.SendShowCenterMessage (format ('%d : %d 肺 %s丛捞,铰府窍继嚼聪促', [OwnerWin, FighterWin, Winner]), WinRGB (31, 31, 31));
FgtUser.SendClass.SendShowCenterMessage (format ('%d : %d 肺 %s丛捞,菩窍继嚼聪促', [OwnerWin, FighterWin, Loser]), WinRGB (31, 31, 31));
end else if FighterWin = WIN_SCORE then begin
Winner := Fighter;
Loser := Owner;
OwnUser.SendClass.SendShowCenterMessage (format ('%d : %d 肺 %s丛捞,菩窍继嚼聪促', [FighterWin, OwnerWin, Loser]), WinRGB (31, 31, 31));
FgtUser.SendClass.SendShowCenterMessage (format ('%d : %d 肺 %s丛捞,铰府窍继嚼聪促', [FighterWin, OwnerWin, Winner]), WinRGB (31, 31, 31));
end;
if FboRoomGrade = true then begin
SendResultData (OwnerWin, FighterWin, 0, 0);
end;
OwnUser.SendClass.SendShowCenterMessage ('措访捞 场车嚼聪促,F4甫 穿福搁 唱哎 荐 乐嚼聪促', WinRGB (31, 31, 31));
FgtUser.SendClass.SendShowCenterMessage ('措访捞 场车嚼聪促,F4甫 穿福搁 唱哎 荐 乐嚼聪促', WinRGB (31, 31, 31));
RoomStatus := brs_end;
end;
end;
}
if CurTick <= StatusElapsedTick + 700 then exit;
RemakeBattleChar (Stage);
StatusElapsedTick := CurTick;
if (OwnerWin = WIN_SCORE) or (FighterWin = WIN_SCORE) then begin
OwnUser.SetActionState (as_ice);
FgtUser.SetActionState (as_ice);
if OwnerWin = WIN_SCORE then begin
Winner := Owner;
Loser := Fighter;
OwnUser.SendClass.SendShowCenterMessage (format ('%d : %d 肺 %s丛捞,铰府窍继嚼聪促', [OwnerWin, FighterWin, Winner]), WinRGB (31, 31, 31));
FgtUser.SendClass.SendShowCenterMessage (format ('%d : %d 肺 %s丛捞,菩窍继嚼聪促', [OwnerWin, FighterWin, Loser]), WinRGB (31, 31, 31));
end else if FighterWin = WIN_SCORE then begin
Winner := Fighter;
Loser := Owner;
OwnUser.SendClass.SendShowCenterMessage (format ('%d : %d 肺 %s丛捞,菩窍继嚼聪促', [FighterWin, OwnerWin, Loser]), WinRGB (31, 31, 31));
FgtUser.SendClass.SendShowCenterMessage (format ('%d : %d 肺 %s丛捞,铰府窍继嚼聪促', [FighterWin, OwnerWin, Winner]), WinRGB (31, 31, 31));
end;
OwnerMotion := AM_NONE;
FighterMotion := AM_NONE;
if FboRoomGrade = true then begin
SendResultData (OwnerWin, FighterWin, 0, 0);
end;
OwnUser.SendClass.SendShowCenterMessage ('措访捞 场车嚼聪促,F4甫 穿福搁 唱哎 荐 乐嚼聪促', WinRGB (31, 31, 31));
FgtUser.SendClass.SendShowCenterMessage ('措访捞 场车嚼聪促,F4甫 穿福搁 唱哎 荐 乐嚼聪促', WinRGB (31, 31, 31));
inc (Stage);
RoomStatus := brs_end;
end else begin
RoomStatus := brs_readyfight;
end;
end;
brs_end :
begin
if (OwnerMotion = AM_HELLO) or (FighterMotion = AM_HELLO) then begin
FboAllowDelete := true;
end;
if CurTick > StatusElapsedTick + 30000 then begin
FboAllowDelete := true;
end;
end;
end;
end;
procedure TBattleRoom.RemakeBattleChar (aStage : Integer);
begin
if (aStage mod 2) = 1 then begin
OwnerXpos := FIGHTER_XPOS;
FighterXpos := OWNER_XPOS;
OwnerDir := DR_6;
FighterDir := DR_2;
end else begin
OwnerXpos := OWNER_XPOS;
FighterXpos := FIGHTER_XPOS;
OwnerDir := DR_2;
FighterDir := DR_6;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -