📄 uguild.pas
字号:
procedure TGuildObject.StartProcess;
var
SubData : TSubData;
begin
inherited StartProcess;
TFieldPhone(Manager.Phone).RegisterUser (BasicData.id, FieldProc, BasicData.X, BasicData.Y);
TFieldPhone(Manager.Phone).SendMessage (0, FM_CREATE, BasicData, SubData);
end;
procedure TGuildObject.EndProcess;
var
i : integer;
SubData : TSubData;
GuildNpc : TGuildNpc;
begin
if FboRegisted = FALSE then exit;
for i := DieGuildNpcList.Count - 1 downto 0 do begin
GuildNpc := DieGuildNpcList.Items [i];
GuildNpc.Free;
DieGuildNpcList.Delete (i);
end;
for i := GuildNpcList.Count - 1 downto 0 do begin
GuildNpc := GuildNpcList.Items [i];
GuildNpc.EndProcess;
GuildNpc.Free;
GuildNpcList.Delete (i);
end;
TFieldPhone(Manager.Phone).SendMessage (0, FM_DESTROY, BasicData, SubData);
TFieldPhone(Manager.Phone).UnRegisterUser (BasicData.id, BasicData.x, BasicData.y);
inherited EndProcess;
end;
procedure TGuildObject.ShowGuildInfo (aUser : TUser);
var
i : Integer;
gi : TSShowGuildInfoWindow;
begin
FillChar (gi, SizeOf (TSShowGuildInfoWindow), 0);
gi.rMsg := SM_SHOWSPECIALWINDOW;
gi.rWindow := WINDOW_GUILDINFO;
gi.rboEdit := 1;
gi.rGuildName := GuildName;
gi.rGuildX := SelfData.X;
gi.rGuildY := SelfData.Y;
gi.rCreateDate := SelfData.MakeDate;
gi.rSysop := SelfData.Sysop;
for i := 0 to MAX_SUBSYSOP_COUNT - 1 do begin
gi.rSubSysop[i] := SelfData.SubSysop[i];
end;
for i := 0 to MAX_GUILDNPC_COUNT - 1 do begin
gi.rGuildNpc [i] := SelfData.GuildNpc[i].rName;
gi.rGuildNpcX [i] := SelfData.GuildNpc[i].rX;
gi.rGuildNpcY [i] := SelfData.GuildNpc[i].rY;
end;
gi.rGuildTitle := SelfData.Title;
gi.rGuildMagic := SelfData.GuildMagic;
gi.rGuildAward := IntToStr (SelfData.AwardPoint);
gi.rGuildDura := SelfData.Durability;
aUser.SendClass.SendData (@gi, SizeOf (TSShowGuildInfoWindow));
end;
function TGuildObject.MakeGuild (aMakeGuildData : PTCMakeGuildData; aUser : TUser) : Boolean;
var
i, Cnt : Integer;
str, RetStr, GuildStr : String;
pUser : TUser;
begin
Result := false;
GuildStr := Trim (aMakeGuildData^.rGuildName);
if (not isFullHangul (GuildStr)) or (not isGrammarID(GuildStr)) or (Length(GuildStr) > 12) or (Length(GuildStr) < 2) then begin
aUser.SendClass.SendChatMessage ('巩颇捞抚捞 棵官福瘤 臼嚼聪促', SAY_COLOR_SYSTEM);
exit;
end;
if GuildList.AllowGuildCondition (GuildStr, aUser.Name, RetStr) = false then begin
aUser.SendClass.SendChatMessage (RetStr, SAY_COLOR_SYSTEM);
exit;
end;
for i := 0 to MAX_AGREESUBSYSOP_COUNT - 1 do begin
str := Trim (aMakeGuildData^.rSubSysop [i]);
if str = '' then begin
aUser.SendClass.SendChatMessage ('何巩林 3疙狼 捞抚阑 葛滴 盲况林技夸', SAY_COLOR_SYSTEM);
exit;
end;
pUser := TUser (GetViewObjectByName (str, RACE_HUMAN));
if pUser = nil then begin
aUser.SendClass.SendChatMessage (str + '丛篮 立加吝捞 酒凑聪促', SAY_COLOR_SYSTEM);
aUser.SendClass.SendChatMessage ('巩颇汲赋矫俊绰 悼狼磊 葛滴啊 立加窍绊 乐绢具父 钦聪促', SAY_COLOR_SYSTEM);
exit;
end;
if pUser.BasicData.Guild[0] <> 0 then begin
aUser.SendClass.SendChatMessage (str + '丛篮 捞固 促弗 巩颇俊 啊涝登绢 乐嚼聪促', SAY_COLOR_SYSTEM);
exit;
end;
if GuildList.AllowGuildCondition (GuildStr, pUser.Name, RetStr) = false then begin
aUser.SendClass.SendChatMessage (RetStr, SAY_COLOR_SYSTEM);
exit;
end;
end;
for i := 0 to MAX_AGREECHAR_COUNT - 1 do begin
str := Trim (aMakeGuildData^.rAgreeChar [i]);
if str = '' then begin
aUser.SendClass.SendChatMessage (format ('巩盔 %d疙狼 捞抚阑 葛滴 盲况林技夸', [MAX_AGREECHAR_COUNT]), SAY_COLOR_SYSTEM);
exit;
end;
pUser := TUser (GetViewObjectByName (str, RACE_HUMAN));
if pUser = nil then begin
aUser.SendClass.SendChatMessage (str + '丛篮 立加吝捞 酒凑聪促', SAY_COLOR_SYSTEM);
aUser.SendClass.SendChatMessage ('巩颇汲赋矫俊绰 悼狼磊 葛滴啊 立加窍绊 乐绢具父 钦聪促', SAY_COLOR_SYSTEM);
exit;
end;
if pUser.BasicData.Guild[0] <> 0 then begin
aUser.SendClass.SendChatMessage (str + '丛篮 捞固 促弗 巩颇俊 啊涝登绢 乐嚼聪促', SAY_COLOR_SYSTEM);
exit;
end;
if GuildList.AllowGuildCondition (GuildStr, pUser.Name, RetStr) = false then begin
aUser.SendClass.SendChatMessage (RetStr, SAY_COLOR_SYSTEM);
exit;
end;
end;
if MakeGuildData = nil then begin
New (MakeGuildData);
end;
FillChar (MakeGuildData^, SizeOf (TMakeGuildData), 0);
MakeGuildData^.GuildName := GuildStr;
MakeGuildData^.Sysop := aUser.Name;
RetStr := format ('%s丛捞 %s 巩颇甫 芒汲窍妨绊 钦聪促. 芒汲 悼狼磊肺 瘤沥登菌嚼聪促. 巩颇芒汲俊 悼狼窍矫摆嚼聪鳖?', [aUser.Name, GuildStr]);
for i := 0 to MAX_AGREESUBSYSOP_COUNT - 1 do begin
str := aMakeGuildData^.rSubSysop [i];
pUser := TUser (GetViewObjectByName (str, RACE_HUMAN));
if pUser <> nil then begin
if pUser.isSpecialWindow = true then begin
aUser.SendClass.SendChatMessage (str + '丛篮 背券芒/焊包芒阑 剁况初篮 惑怕涝聪促', SAY_COLOR_SYSTEM);
pUser.SendClass.SendChatMessage (str + '泅犁狼 芒(背券芒/焊包芒)阑 摧酒 林矫扁 官而聪促', SAY_COLOR_SYSTEM);
exit;
end;
pUser.SetSpecialWindowSt (WINDOW_AGREE, AGREE_GUILDMAKE, BasicData.ID);
pUser.SendClass.SendShowSpecialWindow (WINDOW_AGREE, '巩颇芒汲 悼狼', RetStr);
end;
MakeGuildData^.AgreeChar [i] := str;
end;
for i := 0 to MAX_AGREECHAR_COUNT - 1 do begin
str := aMakeGuildData^.rAgreeChar [i];
pUser := TUser (GetViewObjectByName (str, RACE_HUMAN));
if pUser <> nil then begin
if pUser.isSpecialWindow = true then begin
aUser.SendClass.SendChatMessage (str + '丛篮 背券芒/焊包芒阑 剁况初篮 惑怕涝聪促', SAY_COLOR_SYSTEM);
pUser.SendClass.SendChatMessage (str + '泅犁狼 芒(背券芒/焊包芒)阑 摧酒 林矫扁 官而聪促', SAY_COLOR_SYSTEM);
exit;
end;
pUser.SetSpecialWindowSt (WINDOW_AGREE, AGREE_GUILDMAKE, BasicData.ID);
pUser.SendClass.SendShowSpecialWindow (WINDOW_AGREE, '巩颇芒汲 悼狼', RetStr);
end;
MakeGuildData^.AgreeChar [MAX_AGREESUBSYSOP_COUNT + i] := str;
end;
aUser.SendClass.SendChatMessage ('葛电 悼狼甫 掘绊 唱搁 巩颇啊 磊悼栏肺 积己邓聪促', SAY_COLOR_SYSTEM);
aUser.SendClass.SendChatMessage ('泪矫 扁促妨 林矫扁 官而聪促', SAY_COLOR_SYSTEM);
Result := true;
end;
procedure TGuildObject.AgreeMakeGuild (aName : String; aFlag : Boolean);
var
i : Integer;
RetStr, Str, GuildName : String;
aUser, pUser : TUser;
begin
if MakeGuildData = nil then exit;
if aFlag = true then begin
for i := 0 to MAX_AGREESUBSYSOP_COUNT + MAX_AGREECHAR_COUNT - 1 do begin
if MakeGuildData^.AgreeChar [i] = aName then begin
MakeGuildData^.boAgree [i] := true;
break;
end;
end;
for i := 0 to MAX_AGREESUBSYSOP_COUNT + MAX_AGREECHAR_COUNT - 1 do begin
if MakeGuildData^.AgreeChar [i] = '' then continue;
if MakeGuildData^.boAgree [i] = false then exit;
end;
GuildName := MakeGuildData^.GuildName;
aUser := TUser (GetViewObjectByName (MakeGuildData^.Sysop, RACE_HUMAN));
if aUser = nil then begin
Dispose (MakeGuildData);
MakeGuildData := nil;
exit;
end;
// 巩颇疙 棺 巩盔甸阑 促矫 茄锅 八荤茄促
if GuildList.AllowGuildCondition (GuildName, MakeGuildData^.Sysop, RetStr) = false then begin
aUser.SendClass.SendChatMessage (RetStr, SAY_COLOR_SYSTEM);
Dispose (MakeGuildData);
MakeGuildData := nil;
exit;
end;
for i := 0 to MAX_AGREESUBSYSOP_COUNT - 1 do begin
str := Trim (MakeGuildData^.AgreeChar [i]);
if str = '' then begin
aUser.SendClass.SendChatMessage ('何巩林 3疙狼 捞抚阑 葛滴 盲况林技夸', SAY_COLOR_SYSTEM);
Dispose (MakeGuildData);
MakeGuildData := nil;
exit;
end;
pUser := TUser (GetViewObjectByName (str, RACE_HUMAN));
if pUser = nil then begin
aUser.SendClass.SendChatMessage (str + '丛篮 立加吝捞 酒凑聪促', SAY_COLOR_SYSTEM);
aUser.SendClass.SendChatMessage ('巩颇汲赋矫俊绰 悼狼磊 葛滴啊 立加窍绊 乐绢具父 钦聪促', SAY_COLOR_SYSTEM);
Dispose (MakeGuildData);
MakeGuildData := nil;
exit;
end;
if pUser.BasicData.Guild[0] <> 0 then begin
aUser.SendClass.SendChatMessage (str + '丛篮 捞固 促弗 巩颇俊 啊涝登绢 乐嚼聪促', SAY_COLOR_SYSTEM);
Dispose (MakeGuildData);
MakeGuildData := nil;
exit;
end;
if GuildList.AllowGuildCondition (GuildName, pUser.Name, RetStr) = false then begin
aUser.SendClass.SendChatMessage (RetStr, SAY_COLOR_SYSTEM);
Dispose (MakeGuildData);
MakeGuildData := nil;
exit;
end;
end;
for i := 0 to MAX_AGREECHAR_COUNT - 1 do begin
str := Trim (MakeGuildData^.AgreeChar [MAX_AGREESUBSYSOP_COUNT + i]);
if str = '' then begin
aUser.SendClass.SendChatMessage (format ('巩盔 %d疙狼 捞抚阑 葛滴 盲况林技夸', [MAX_AGREECHAR_COUNT]), SAY_COLOR_SYSTEM);
Dispose (MakeGuildData);
MakeGuildData := nil;
exit;
end;
pUser := TUser (GetViewObjectByName (str, RACE_HUMAN));
if pUser = nil then begin
aUser.SendClass.SendChatMessage (str + '丛篮 立加吝捞 酒凑聪促', SAY_COLOR_SYSTEM);
aUser.SendClass.SendChatMessage ('巩颇汲赋矫俊绰 悼狼磊 葛滴啊 立加窍绊 乐绢具父 钦聪促', SAY_COLOR_SYSTEM);
Dispose (MakeGuildData);
MakeGuildData := nil;
exit;
end;
if pUser.BasicData.Guild[0] <> 0 then begin
aUser.SendClass.SendChatMessage (str + '丛篮 捞固 促弗 巩颇俊 啊涝登绢 乐嚼聪促', SAY_COLOR_SYSTEM);
Dispose (MakeGuildData);
MakeGuildData := nil;
exit;
end;
if GuildList.AllowGuildCondition (GuildName, pUser.Name, RetStr) = false then begin
aUser.SendClass.SendChatMessage (RetStr, SAY_COLOR_SYSTEM);
Dispose (MakeGuildData);
MakeGuildData := nil;
exit;
end;
end;
// 巩颇甫 角疙拳茄促
BocSay (format ('巩颇捞抚篮 %s涝聪促.',[GuildName]));
StrPCopy (@BasicData.Name, GuildName);
SelfData.Name := GuildName;
FGuildName := GuildName;
BocChangeProperty;
BocChangeFeature;
SelfData.MakeDate := DateToStr (Date);
// 悼狼磊甫 巩盔甸阑 葛滴 啊涝矫挪促
for i := 0 to MAX_AGREESUBSYSOP_COUNT + MAX_AGREECHAR_COUNT - 1 do begin
Str := MakeGuildData^.AgreeChar [i];
if Str = '' then continue;
pUser := TUser (GetViewObjectByName (Str, RACE_HUMAN));
if pUser <> nil then begin
pUser.GuildName := GuildName;
pUser.GuildGrade := GetUserGrade (Str);
StrPCopy (@pUser.BasicData.Guild, GuildName);
GuildUserList.AddUser (Str);
pUser.BocChangeProperty;
end;
end;
end else begin
BocSay (format ('%s丛捞 悼狼窍瘤 臼疽扁 锭巩俊 巩颇芒汲篮 秒家邓聪促.',[aName]));
Dispose (MakeGuildData);
MakeGuildData := nil;
end;
end;
function TGuildObject.MoveStone (aServerID, ax, ay: integer) : Boolean;
var
i, nX, nY : integer;
nIndex : Byte;
SubData : TSubData;
tmpManager : TManager;
GuildNpc : TGuildNpc;
begin
Result := false;
if Manager = nil then exit;
tmpManager := ManagerList.GetManagerByServerID (aServerID);
if tmpManager = nil then exit;
if tmpManager.boMakeGuild = false then exit;
nIndex := TMaper (tmpManager.Maper).GetAreaIndex (aX, aY);
if nIndex = 0 then exit;
if AreaClass.CanMakeGuild (nIndex) = false then exit;
nX := aX; nY := aY;
// TMaper (tmpManager.Maper).GetMoveableXY (nX, nY, 10);
// if not TMaper (tmpManager.Maper).isMoveable (nX, nY) then exit;
TFieldPhone(Manager.Phone).SendMessage (NOTARGETPHONE, FM_DESTROY, BasicData, SubData);
TFieldPhone(Manager.Phone).UnRegisterUser (BasicData.id, BasicData.x, BasicData.y);
SelfData.MapID := aServerID;
SelfData.X := nX; SelfData.Y := nY;
BasicData.x := nx; BasicData.y := ny;
SetManagerClass (tmpManager);
TFieldPhone(Manager.Phone).RegisterUser (BasicData.id, FieldProc, BasicData.X, BasicData.Y);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -