📄 guild.pas
字号:
end;
GuildRank18.MemberList.AddObject(PlayObject.m_sCharName,TObject(PlayObject));
UpdateGuildFile();
Result:=True;
end;
function TGuild.DelMember(sHumName: String): Boolean;//00498DCC
var
I,II: Integer;
GuildRank:pTGuildRank;
begin
Result:=False;
for I := 0 to m_RankList.Count - 1 do begin
GuildRank:=m_RankList.Items[I];
for II := 0 to GuildRank.MemberList.Count - 1 do begin
if GuildRank.MemberList.Strings[II] = sHumName then begin
GuildRank.MemberList.Delete(II);
Result:=True;
break;
end;
end;
if Result then break;
end;
if Result then UpdateGuildFile;
end;
function TGuild.CancelGuld(sHumName: String): Boolean;//00498A50
var
GuildRank:pTGuildRank;
begin
Result:=False;
if m_RankList.Count <> 1 then exit;
GuildRank:=m_RankList.Items[0];
if GuildRank.MemberList.Count <> 1 then exit;
if GuildRank.MemberList.Strings[0] = sHumName then begin
BackupGuildFile();
Result:=True;
end;
end;
function TGuild.UpdateRank(sRankData: String): Integer; //00499140
procedure ClearRankList(var RankList:TList);//004990DC
var
I: Integer;
GuildRank:pTGuildRank;
begin
for I := 0 to RankList.Count - 1 do begin
GuildRank:=RankList.Items[I];
GuildRank.MemberList.Free;
Dispose(GuildRank);
end;
RankList.Free;
end;
var
I :Integer;
II :Integer;
III :Integer;
GuildRankList :TList;
GuildRank :pTGuildRank;
NewGuildRank :pTGuildRank;
sRankInfo :String;
sRankNo :String;
sRankName :String;
sMemberName :String;
n28 :Integer;
n2C :Integer;
n30 :Integer;
boCheckChange :Boolean;
PlayObject :TPlayObject;
begin
Result := -1;
GuildRankList := TList.Create;
GuildRank := nil;
while (True) do begin
if sRankData = '' then break;
sRankData:=GetValidStr3(sRankData,sRankInfo,[#$0D]);
sRankInfo:=Trim(sRankInfo);
if sRankInfo = '' then Continue;
if sRankInfo[1] = '#' then begin //取得职称的名称
sRankInfo:=Copy(sRankInfo,2,Length(sRankInfo) - 1);
sRankInfo:=GetValidStr3(sRankInfo,sRankNo,[' ','<']);
sRankInfo:=GetValidStr3(sRankInfo,sRankName,['<','>']);
if length(sRankName) > 30 then //Jacky 限制职倍的长度
sRankName:=Copy(sRankName,1,30);
if GuildRank <> nil then begin
GuildRankList.Add(GuildRank);
end;
New(GuildRank);
GuildRank.nRankNo := Str_ToInt(sRankNo,99);
GuildRank.sRankName := Trim(sRankName);
GuildRank.MemberList := TStringList.Create;
Continue;
end;
if GuildRank = nil then Continue;
I:=0;
while (True) do begin //将成员名称加入职称表里
if sRankInfo = '' then break;
sRankInfo:=GetValidStr3(sRankInfo,sMemberName,[' ',',']);
if sMemberName <> '' then GuildRank.MemberList.Add(sMemberName);
Inc(I);
if I >= 10 then break;
end;
end;
if GuildRank <> nil then begin
GuildRankList.Add(GuildRank);
end;
//0049931F 校验成员列表是否有改变,如果未修改则退出
if m_RankList.Count = GuildRankList.Count then begin
boCheckChange:=True;
for I := 0 to m_RankList.Count - 1 do begin
GuildRank:=m_RankList.Items[I];
NewGuildRank:=GuildRankList.Items[I];
if (GuildRank.nRankNo = NewGuildRank.nRankNo) and
(GuildRank.sRankName = NewGuildRank.sRankName) and
(GuildRank.MemberList.Count = NewGuildRank.MemberList.Count) then begin
for II := 0 to GuildRank.MemberList.Count - 1 do begin
if GuildRank.MemberList.Strings[II] <> NewGuildRank.MemberList.Strings[II] then begin
boCheckChange:=False; //如果有改变则将其置为FALSE
break;
end;
end;
end else begin
boCheckChange:=False;
break;
end;
end;
if boCheckChange then begin
Result:= -1; //$FFFFFFFF
ClearRankList(GuildRankList);
exit;
end;
end;
//0049943D 检查行会掌门职业是否为空
Result:= -2; //$FFFFFFFE
if (GuildRankList.Count > 0) then begin
GuildRank:=GuildRankList.Items[0];
if GuildRank.nRankNo = 1 then begin
if GuildRank.sRankName <> '' then begin
Result:= 0;
end else begin
Result:= -3; //$FFFFFFFD
end;
end;
end;
//检查行会掌门人是否在线(???)
if Result = 0 then begin //0049947A
GuildRank:=GuildRankList.Items[0];
if GuildRank.MemberList.Count <= 2 then begin
n28:=GuildRank.MemberList.Count;
for I := 0 to GuildRank.MemberList.Count - 1 do begin
if UserEngine.GetPlayObject(GuildRank.MemberList.Strings[I]) = nil then begin
Dec(n28);
break;
end;
end;
if n28 <= 0 then Result:= -5; //$FFFFFFFB
end else begin
Result:= -4; //$FFFFFFFC
end;
end;
if Result = 0 then begin //00499517
n2C:=0;
n30:=0;
for I := 0 to m_RankList.Count - 1 do begin
GuildRank:=m_RankList.Items[I];
boCheckChange:=True;
for II := 0 to GuildRank.MemberList.Count - 1 do begin
boCheckChange:=False;
sMemberName:=GuildRank.MemberList.Strings[II];
Inc(n2C);
for III := 0 to GuildRankList.Count - 1 do begin //搜索新列表
NewGuildRank:=GuildRankList.Items[III];
for n28 := 0 to NewGuildRank.MemberList.Count - 1 do begin
if NewGuildRank.MemberList.Strings[n28] = sMemberName then begin
boCheckChange:=True;
break;
end;
end;
if boCheckChange then break;
end;
if not boCheckChange then begin //原列表中的人物名称是否在新的列表中
Result:= -6; //$FFFFFFFA
break;
end;
end;
if not boCheckChange then break;
end;
//00499640
for I := 0 to GuildRankList.Count - 1 do begin
GuildRank:=GuildRankList.Items[I];
boCheckChange:=True;
for II := 0 to GuildRank.MemberList.Count - 1 do begin
boCheckChange:=False;
sMemberName:=GuildRank.MemberList.Strings[II];
Inc(n30);
for III := 0 to GuildRankList.Count - 1 do begin
NewGuildRank:=GuildRankList.Items[III];
for n28 := 0 to NewGuildRank.MemberList.Count - 1 do begin
if NewGuildRank.MemberList.Strings[n28] = sMemberName then begin
boCheckChange:=True;
break;
end;
end;
if boCheckChange then break;
end;
if not boCheckChange then begin
Result:= -6; //$FFFFFFFA
break;
end;
end;
if not boCheckChange then break;
end;
if (Result = 0) and (n2C <> n30) then begin
Result:= -6;
end;
end;//0049976A
if Result = 0 then begin //检查职位号是否重复及非法
for I := 0 to GuildRankList.Count - 1 do begin
n28:=pTGuildRank(GuildRankList.Items[I]).nRankNo;
for III := I + 1 to GuildRankList.Count - 1 do begin
if (pTGuildRank(GuildRankList.Items[III]).nRankNo = n28) or (n28 <= 0) or (n28 > 99) then begin
Result:= -7; //$FFFFFFF9
break;
end;
end;
if Result <> 0 then break;
end;
end;//004997E9
if Result = 0 then begin
ClearRankList(m_RankList);
m_RankList:=GuildRankList;
//更新在线人物职位表
for I := 0 to m_RankList.Count - 1 do begin
GuildRank:=m_RankList.Items[I];
for III := 0 to GuildRank.MemberList.Count - 1 do begin
PlayObject:=UserEngine.GetPlayObject(GuildRank.MemberList.Strings[III]);
if PlayObject <> nil then begin
GuildRank.MemberList.Objects[III]:=TObject(PlayObject);
PlayObject.RefRankInfo(GuildRank.nRankNo,GuildRank.sRankName);
PlayObject.RefShowName(); //10/31
end;
end;
end;
UpdateGuildFile();
end else begin //004998C3
ClearRankList(GuildRankList);
end;
end;
function TGuild.IsNotWarGuild(Guild: TGuild): Boolean;//00499C98
var
I: Integer;
begin
Result:=False;
for I := 0 to GuildWarList.Count - 1 do begin
if pTWarGuild(GuildWarList.Objects[I]).Guild = Guild then begin
exit;
end;
end;
Result:=True;
end;
function TGuild.AllyGuild(Guild: TGuild): Boolean;//00499C2C
var
I: Integer;
begin
Result:=False;
for I := 0 to GuildAllList.Count - 1 do begin
if GuildAllList.Objects[I] = Guild then begin
exit;
end;
end;
GuildAllList.AddObject(Guild.sGuildName,Guild);
SaveGuildInfoFile();
Result:=True;
end;
function TGuild.AddWarGuild(Guild:TGuild):pTWarGuild;
var
I: Integer;
WarGuild:pTWarGuild;
begin
Result:=nil;
if Guild <> nil then begin
if not IsAllyGuild(Guild) then begin
WarGuild:=nil;
for I := 0 to GuildWarList.Count - 1 do begin
if pTWarGuild(GuildWarList.Objects[I]).Guild = Guild then begin
WarGuild:=pTWarGuild(GuildWarList.Objects[I]);
WarGuild.dwWarTick:=GetTickCount();
WarGuild.dwWarTime:=g_Config.dwGuildWarTime{10800000};
SendGuildMsg('***' + Guild.sGuildName + '行会战争将持续三个小时。');
break;
end;
end;
if WarGuild = nil then begin
New(WarGuild);
WarGuild.Guild:=Guild;
WarGuild.dwWarTick:=GetTickCount();
WarGuild.dwWarTime:=g_Config.dwGuildWarTime{10800000};
GuildWarList.AddObject(Guild.sGuildName,TObject(WarGuild));
SendGuildMsg('***' + Guild.sGuildName + '行会战争开始(三个小时)');
end;
Result:=WarGuild;
end;
end;
RefMemberName();
UpdateGuildFile();
end;
procedure TGuild.sub_499B4C(Guild: TGuild);//00499B4C
begin
SendGuildMsg('***' + Guild.sGuildName + '行会战争结束');
end;
function TGuild.GetMemberCount: Integer;
var
I: Integer;
GuildRank:pTGuildRank;
begin
Result:=0;
for I := 0 to m_RankList.Count - 1 do begin
GuildRank:=m_RankList.Items[I];
Inc(Result,GuildRank.MemberList.Count);
end;
end;
function TGuild.GetMemgerIsFull: Boolean;
begin
Result:=False;
if GetMemberCount >= g_Config.nGuildMemberMaxLimit then begin
Result:=True;
end;
end;
procedure TGuild.StartTeamFight;
begin
nContestPoint:=0;
boTeamFight:=True;
TeamFightDeadList.Clear;
end;
procedure TGuild.EndTeamFight;
begin
boTeamFight:=False;
end;
procedure TGuild.AddTeamFightMember(sHumanName: String);
begin
TeamFightDeadList.Add(sHumanName);
end;
procedure TGuild.SetAuraePoint(nPoint: Integer);
begin
m_nAurae:=nPoint;
boChanged:=True;
end;
procedure TGuild.SetBuildPoint(nPoint: Integer);
begin
m_nBuildPoint:=nPoint;
boChanged:=True;
end;
procedure TGuild.SetFlourishPoint(nPoint: Integer);
begin
m_nFlourishing:=nPoint;
boChanged:=True;
end;
procedure TGuild.SetStabilityPoint(nPoint: Integer);
begin
m_nStability:=nPoint;
boChanged:=True;
end;
procedure TGuild.SetChiefItemCount(nPoint: Integer);
begin
m_nChiefItemCount:=nPoint;
boChanged:=True;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -