⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uguild.pas

📁 千年源代码,只缺少控件,可以做二次开发用,好不容易得来的
💻 PAS
📖 第 1 页 / 共 5 页
字号:
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 + -