📄 guild.pas
字号:
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 m_GuildWarList.Count - 1 do
begin
if pTWarGuild(m_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);
UpdateCommite(Guild,0,'0',True);
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 m_GuildWarList.Count - 1 do
begin
if pTWarGuild(m_GuildWarList.Objects[i]).Guild = Guild then
begin
WarGuild := pTWarGuild(m_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);
if WarGuild<>nil then
Begin
WarGuild.Guild := Guild;
WarGuild.dwWarTick := GetTickCount();
WarGuild.dwWarTime := g_Config.dwGuildWarTime {10800000};
m_GuildWarList.AddObject(Guild.sGuildName, TObject(WarGuild));
SendGuildMsg('***' + Guild.sGuildName + '行会战争开始(三个小时)');
End;
end;
Result := WarGuild;
end;
end;
RefMemberName();
if WarGuild<>nil then
UpdateCommite(TGUild(WarGuild.Guild),1,Inttostr(WarGuild.dwWarTime),True);
// 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
m_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;
procedure TGUild.saveRank;
var
i : integer;
GuildRank : pTGuildRank;
GuildRankName : String;
SqlStr : String;
begin
GuildRankName:='';
for i:=0 to m_RankList.Count-1 do
Begin
GuildRank := m_RankList.Items[i];
if GuildRank<>nil then
Begin
GuildRankName:=GuildRankName+'#'+GuildRank.sRankName+'/'+Inttostr(GuildRank.nRankNo)+'!';
End;
End;
try
SqlStr:='UpDate D_Guild set GuildRankName='+''''+GuildRankName+''''+' where GuildName='+''''+sGuildName+'''';
g_GuildManager[DbIndex mod 2].Query.close;
g_GuildManager[DbIndex mod 2].Query.SQL.Clear;
g_GuildManager[DbIndex mod 2].Query.SQL.Add(SQLStr);
g_GuildManager[DbIndex mod 2].Query.ExecSQL;
finally
End;
end;
procedure TGUild.SaveGuildInfoFile;
var
i,ii : integer;
GuildRank : pTGuildRank;
GuildRankName : String;
SqlStr : String;
charname : String;
randid : Integer;
begin
GuildRankName:='';
for i:=0 to m_RankList.Count-1 do
Begin
GuildRank := m_RankList.Items[i];
if GuildRank<>nil then
Begin
GuildRankName:=GuildRankName+'#'+GuildRank.sRankName+'/'+Inttostr(GuildRank.nRankNo)+'!';
End;
End;
try
SqlStr:='UpDate D_Guild set Buildpoint=:d1,Aurae=:d2,Stability=:d3,Flourishing=:d4,chiefItemCount=:d5,Notice=:d6,GuildRankName=:d7 where GuildName=:d8';
g_GuildManager[dbindex mod 2].Query.close;
g_GuildManager[dbindex mod 2].Query.SQL.Clear;
g_GuildManager[dbindex mod 2].Query.SQL.Add(SQLStr);
g_GuildManager[dbindex mod 2].Query.Parameters.ParamByName('d1').Value:=nBuildPoint;
g_GuildManager[dbindex mod 2].Query.Parameters.ParamByName('d2').Value:=nAurae;
g_GuildManager[dbindex mod 2].Query.Parameters.ParamByName('d3').Value:=nStability;
g_GuildManager[dbindex mod 2].Query.Parameters.ParamByName('d4').Value:=nFlourishing;
g_GuildManager[dbindex mod 2].Query.Parameters.ParamByName('d5').Value:=nchiefItemCount;
g_GuildManager[dbindex mod 2].Query.Parameters.ParamByName('d6').Value:=NoticeList.Text;
g_GuildManager[dbindex mod 2].Query.Parameters.ParamByName('d7').Value:=GuildRankName;
g_GuildManager[dbindex mod 2].Query.Parameters.ParamByName('d8').Value:= sGuildName;
g_GuildManager[dbindex mod 2].Query.ExecSQL;
finally
End;
for i := 0 to m_RankList.Count - 1 do
begin
GuildRank := m_RankList.Items[i];
if GuildRank=nil then Continue;
if GuildRank.MemberList=nil then Continue;
randid :=Guildrank.nRankNo;
for ii := 0 to GuildRank.MemberList.Count - 1 do
begin
charname:=GuildRank.MemberList[ii];
g_GuildManager[dbindex mod 2].Query.close;
g_GuildManager[dbindex mod 2].Query.SQL.Clear;
g_GuildManager[dbindex mod 2].Query.SQL.Add('Select * from D_GuildMember where (charname='+''''+charname+''''+')');
g_GuildManager[dbindex mod 2].Query.Active:=True;
if g_GuildManager[dbindex mod 2].Query.RecordCount=0 then
g_GuildManager[dbindex mod 2].Query.Append
else
g_GuildManager[dbindex mod 2].Query.Edit;
g_GuildManager[dbindex mod 2].Query.FieldByName('CharName').AsString:=charname;
g_GuildManager[dbindex mod 2].Query.FieldByName('GuildName').AsString:=sGuildName;
g_GuildManager[dbindex mod 2].Query.FieldByName('GuildRankId').AsInteger:=randid;
g_GuildManager[dbindex mod 2].Query.Post;
end;
end;
end;
procedure TGUild.UpdateCommite(Guild: TGUild; nType: Integer;stime:String;
IsAdd: Boolean);
var
sqlstr : string;
begin
if Guild=nil then exit;
if isadd then
Begin
SqlStr:='Insert into D_Guild_COMMUNITY (GuildName,GuildNameof,nType,ntime) values ('+''''+sGuildName+''''+','+''''+Guild.sGuildName+''''+','+inttostr(ntype)+','+stime+')';
End
else
Sqlstr:='Delete FROM D_Guild_COMMUNITY where (GuildName='+''''+sGuildName+''''+') and (GuildNameof='+''''+Guild.sGuildName+''''+')';
try
g_GuildManager[dbindex mod 2].Query.close;
g_GuildManager[dbindex mod 2].Query.SQL.Clear;
g_GuildManager[dbindex mod 2].Query.SQL.Add(SQLStr);
g_GuildManager[dbindex mod 2].Query.ExecSQL;
finally
End;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -