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

📄 uuser.pas

📁 千年源代码,只缺少控件,可以做二次开发用,好不容易得来的
💻 PAS
📖 第 1 页 / 共 5 页
字号:
   FillChar (CM_MessageTick, sizeof(CM_MessageTick), 0);

   SysopScope := Sysopclass.GetSysopScope (aName);

   if SysopScope >= 100 then SysopScope := 101;

   SpecialWindow := 0;
   CopyHaveItem := nil;

   NetStateID := 0;
   NetStateTick := 0;
   FillChar (SaveNetState, SizeOf (TCNetState), 0);

   FillChar (ItemLogData, SizeOf (TItemLogRecord) * 4, 0);
end;

procedure TUser.StartProcess;
var
   SubData : TSubData;
   boAlertFlag : Boolean;
   tmpGuildName : String;
   tmpManager : TManager;
   rStr : String;
   // timestr, msgstr : String;
begin
   PosMoveX := -1;
   PosMoveY := -1;
   
   inherited StartProcess;
   boTv := FALSE;

   boAlertFlag := FALSE;
   if GuildName <> '' then begin
      if GuildList.CheckGuildUser (GuildName, Name) = true then begin
         GuildServerID := GuildList.GetGuildServerID (GuildName);
         StrPCopy (@BasicData.Guild, GuildName);
         GuildGrade := GuildList.GetUserGrade (GuildName, Name);
         UserList.GuildSay (GuildName, format ('%s (%s)丛捞 立加沁嚼聪促.', [Name, GuildGrade]) );
      end else begin
         tmpGuildName := GuildName;
         GuildName := '';
         GuildGrade := '';
         StrPCopy(@BasicData.Guild, '');
         boAlertFlag := TRUE;
      end;
   end;

   Phone.RegisterUser (BasicData.id, FieldProc, BasicData.X, BasicData.Y);
   Phone.SendMessage (NOTARGETPHONE, FM_CREATE, BasicData, SubData);

   if boAlertFlag = TRUE then begin
      SendClass.SendChatMessage (tmpGuildName + ' 巩颇俊辑 呕硼登菌嚼聪促', SAY_COLOR_NORMAL);
   end;

   if Manager.boPrison = true then begin
      rStr := PrisonClass.GetUserStatus (Name);
      if rStr <> '' then begin
         SendClass.SendChatMessage ('蜡硅瘤俊 荐皑登菌嚼聪促', SAY_COLOR_NORMAL);
         SendClass.SendChatMessage ('@荐皑沥焊 疙飞栏肺 荐皑矫埃阑 犬牢且 荐 乐嚼聪促', SAY_COLOR_NORMAL);
         SendClass.SendChatMessage (rStr, SAY_COLOR_NORMAL);
      end;
   end;

   LetterManager.CheckLetter (StrPas(@BasicData.Name), MailBox);
   RefuseReceiver.Clear;
   MailSender.Clear;

//   rStr := '救崇窍技夸. 玫斥涝聪促.' + #13;
//   rStr := rStr + '捞锅 滚傈狼 函版荤亲俊 包茄 傍瘤涝聪促' + #13;
//   rStr := rStr + '' + #13;
//   rStr := rStr + ' 1. 努腐,歹喉努腐栏肺 酒捞袍 裙垫捞 啊瓷钦聪促' + #13;
//   rStr := rStr + ' 2. 公傍函版矫 秦寸公扁啊 磊悼栏肺 馒侩邓聪促' + #13;
//   rStr := rStr + '' + #13;
//   rStr := rStr + '歹 磊技茄 郴侩篮 权其捞瘤甫 曼绊窍技夸' + #13;
//   rStr := rStr + '坷疵 窍风档 榴玫窍技夸' + #13;

//   SendClass.SendShowSpecialWindow (WINDOW_ALERT, '玫斥 傍瘤荤亲', rStr);
end;

procedure TUser.EndProcess;
var
   i : Integer;
   BasicObject : TBasicObject;
   SubData : TSubData;
begin
   if FboRegisted = FALSE then exit;

   if boTV = true then begin
      MirrorList.DelViewer (Self);
      boTV := false;
   end;

   if GuildName <> '' then begin
      UserList.GuildSay (GuildName, format ('%s (%s)丛捞 唱啊继嚼聪促.', [Name, GuildGrade]));
   end;

   Phone.SendMessage (NOTARGETPHONE, FM_DESTROY, BasicData, SubData);
   Phone.UnRegisterUser (BasicData.id, BasicData.x, BasicData.y);

   SaveUserData (Name);
   inherited EndProcess;
end;

procedure TUser.FinalLayer;
begin
   if UserObj <> nil then begin
      TUser(UserObj).SysopObj := nil;
      UserObj := nil;
   end;
   if SysopObj <> nil then begin
      TUser(SysopObj).SendClass.SendChatMessage ('立加秦力', SAY_COLOR_SYSTEM);
      TUser(SysopObj).UserObj := nil;
      SysopObj := nil;
   end;

   if CopyHaveItem <> nil then begin
      CopyHaveItem.Free;
      CopyHaveItem := nil;
   end;
end;

function TUserList.GetGuildUserInfo (aGuildName: string): string;
var
   i, n : integer;
   str : string;
   TempUser: TUser;
begin
   str := ''; n := 0;
   for i := 0 to DataList.Count -1 do begin
      TempUser := DataList.Items [i];
      if TempUser.GuildName <> aGuildName then continue;
      str := str + TempUser.Name + '  ';
      if (n <> 0) and (n mod 8 = 0) then str := str + #13;
      n := n + 1;
   end;
   Result := '泅犁荤侩磊 : ' + IntToStr(n) + #13 + str;
end;

procedure TUser.UserSay (astr: string);
var
   i, j, k, xx, yy, ret, n, scolor: integer;
   nByte : Byte;
   TempUser : TUser;
   Bo : TBasicObject;
   tempdir : word;
   templength : integer;
   ItemData : TItemData;
   RetStr, Str, searchstr, msgstr, timestr : string;
   strs : array [0..15] of string;
   tmpBasicData : TBasicData;
   SubData : TSubData;
   tmpManager : TManager;
   GuildMagicWindow : TSShowGuildMagicWindow;
   GuildObject : TGuildObject;
   LimitStr : String;
begin
   if astr = '' then exit;

   LimitStr := Copy (aStr, 1, 88);
   aStr := LimitStr;

   str := astr;
   for i := 0 to 15 do begin
      str := GetValidStr3 (str, strs[i], ' ');
      if str = '' then break;
   end;

   case astr[1] of
      '/' :
         begin
            if Strs[0] = INI_WHO then begin
               SetWordString (SubData.SayString, aStr);
               Phone.SendMessage (MANAGERPHONE, FM_CURRENTUSER, BasicData, SubData);
               SendClass.SendChatMessage (GetWordString(SubData.SayString), SAY_COLOR_SYSTEM);
               if GuildName <> '' then begin
                  GuildList.GetGuildInfo (GuildName, Self);
                  str := UserList.GetGuildUserInfo (GuildName);
                  SendClass.SendChatMessage (str, SAY_COLOR_NORMAL);
               end;
            end else if (UpperCase(strs[0]) = '/WHERE') or (UpperCase(strs[0]) = '/绢叼') then begin
               nByte := Maper.GetAreaIndex (BasicData.X, BasicData.Y);
               if nByte > 0 then begin
                  searchstr := AreaClass.GetAreaName (nByte);
                  if searchstr = '' then searchstr := Manager.Title;
               end else begin
                  searchstr := Manager.Title;
               end;
               str := '咯扁绰 ' + searchstr + '涝聪促';
               SendClass.SendChatMessage (str, SAY_COLOR_SYSTEM);
            end;
         end;
      '#' :
         begin
            if Strs[0] = '#' then begin
               if (SysopScope > 50) and (Length(astr) > 4) then begin
                  UserList.SendNoticeMessage ('<SYSTEM>: '+Copy (astr, 2, Length(astr)), SAY_COLOR_NOTICE);
                  exit;
               end;
            end;
         end;
      '@' :
         begin
            if SysopScope > 99 then begin
               if Strs [0] = '@胶乔靛眉农' then begin
                  if boCheckSpeed = false then begin
                     Str := '胶乔靛概农肺 皑矫 矫累';
                     boCheckSpeed := true;
                  end else begin
                     Str := '胶乔靛概农肺 皑矫 辆丰';
                     boCheckSpeed := false;
                  end;
                  SendClass.SendChatMessage (Str, SAY_COLOR_SYSTEM);
                  exit;
               end;
               if Strs [0] = '@某腐磐沥焊' then begin
                  if Strs [1] <> '' then begin
                     Str := GuildList.GetCharInformation (Strs [1]);
                     if Str <> '' then begin
                        SendClass.SendChatMessage (Str, SAY_COLOR_SYSTEM);
                     end;
                  end;
                  exit;
               end;
               if Strs [0] = '@巩颇沥焊' then begin
                  if Strs [1] <> '' then begin
                     Str := GuildList.GetInformation (Strs [1]);
                     if Str <> '' then begin
                        SendClass.SendChatMessage (Str, SAY_COLOR_SYSTEM);
                     end;
                  end;
                  exit;
               end;

               // 措访辑滚侩 抛胶飘 疙飞绢
               if Strs [0] = '@措傈曼咯' then begin
                  SetPositionBS (BasicData.X, BasicData.Y);
                  exit;
               end;
               if UpperCase (Strs [0]) = '@荐访悼沥焊' then begin
                  SendClass.SendChatMessage (ObjectChecker.GetCurInfo, SAY_COLOR_SYSTEM);
                  exit;
               end;
               if UpperCase (Strs [0]) = '@府哩' then begin
                  n := Manager.RegenInterval;
                  Manager.RegenInterval := 1;
                  Manager.Update (mmAnsTick);
                  Manager.RegenInterval := n;
                  exit;
               end;
               if UpperCase (Strs [0]) = '@阁胶磐葛栏扁' then begin
                  if Strs [1] <> '' then begin
                     TMonsterList (Manager.MonsterList).ComeOn (Strs [i], BasicData.X, BasicData.Y);
                  end;
                  exit;
               end;
               if UpperCase (Strs [0]) = '@酒捞袍沥府' then begin
                  HaveItemClass.DeleteAllItem;
                  exit;
               end;
               if UpperCase (strs[0]) = '@荤侩磊沥焊' then begin
                  if Strs[1] = '' then begin
                     UserList.SaveUserInfo ('.\LOG\USERINFO.SDB');
                     SendClass.SendChatMessage ('贸府肯丰', SAY_COLOR_SYSTEM);
                  end else begin
                     TempUser := UserList.GetUserPointer (Strs[1]);
                     if TempUser <> nil then begin
                        RetStr := TempUser.Name + ': IP(' + TempUser.Connector.IpAddr + ') Ver(' + IntToStr (TempUser.Connector.VerNo) + ')'; 
                        SendClass.SendChatMessage (RetStr, SAY_COLOR_SYSTEM);
                     end else begin
                        SendClass.SendChatMessage (format ('%s丛篮 立加登绢 乐瘤 臼嚼聪促', [Strs[1]]), SAY_COLOR_SYSTEM);
                     end;
                  end;
                  exit;
               end;
               if UpperCase (strs[0]) = '@SHOWME' then begin
                  for i := 0 to ViewObjectList.Count - 1 do begin
                     Bo := ViewObjectList.Items [i];
                     SendClass.SendChatMessage (StrPas (@Bo.BasicData.Name) + '(' + IntToStr (Bo.BasicData.X) + ',' + IntToStr (Bo.BasicData.Y) + ')', SAY_COLOR_SYSTEM);
                  end;
                  SendClass.SendChatMessage (format ('%d俺狼 俺眉啊 乐嚼聪促', [ViewObjectList.Count]), SAY_COLOR_SYSTEM);
                  exit;
               end;
               if UpperCase (strs[0]) = '@焊包芒历厘' then begin
                  ItemLog.SaveToSDB ('.\ITEMLOG\ITEMLOG.SDB');
                  SendClass.SendChatMessage ('贸府肯丰', SAY_COLOR_SYSTEM);
                  exit;
               end;
               if UpperCase (strs[0]) = '@焊包芒泪陛' then begin
                  if ItemLog.Enabled = true then begin
                     ItemLog.Enabled := false;
                     SendClass.SendChatMessage ('焊包芒扁瓷沥瘤', SAY_COLOR_SYSTEM);
                  end else begin
                     ItemLog.Enabled := true;
                     SendClass.SendChatMessage ('焊包芒扁瓷劝己', SAY_COLOR_SYSTEM);
                  end;
                  exit;
               end;
               if UpperCase(strs[0]) = '@DAMAGE' then begin
                  boShowHitedValue := not boShowHitedValue;
                  exit;
               end;
               if UpperCase(strs[0]) = '@GUILDDAMAGE' then begin
                  boShowGuildDuraValue := not boShowGuildDuraValue;
                  exit;
               end;
               if UpperCase (strs[0]) = '@NOHIT' then begin
                  SysopScope := 101;
                  exit;
               end;
               if UpperCase (strs[0]) = '@HIT' then begin
                  SysopScope := 100;
                  exit;
               end;

               if UpperCase(strs[0]) = '@CALLGUILD' then begin
                  if GuildList.MoveStone (Strs[1], Manager.ServerID, BasicData.x, BasicData.y) = true then begin
                     SendClass.SendChatMessage ('巩颇檬籍阑 颗板嚼聪促', SAY_COLOR_SYSTEM);
                  end;
                  exit;
               end;
               if UpperCase(strs[0]) = '@CREATEGUILD' then begin
                  if GuildList.CreateStone (Strs[1], '', Manager.ServerID, BasicData.x, BasicData.y) = true then begin
                     SendClass.SendChatMessage ('巩颇檬籍阑 颗板嚼聪促', SAY_COLOR_SYSTEM);
                  end;
                  exit;
               end;

               {
               if UpperCase(strs[0]) = '@READ' then begin
                  SysopClass.ReLoadFromFile;
                  ItemClass.ReLoadFromFile;
                  MonsterClass.ReLoadFromFile;
                  NpcClass.ReLoadFromFile;
                  ManagerList.ReLoadFromFile;
                  exit;
               end;
               }

               // 泅犁 付阑狼 漂沥 谅钎肺 捞悼茄促
               if UpperCase(strs[0]) = '@MOVE' then begin
                  xx := _StrToInt (Strs[1]);
                  yy := _StrToInt (Strs[2]);
                  if Maper.isMoveable (xx, yy) then begin
                     PosMoveX := xx;
                     PosMoveY := yy;
                  end;
                  exit;
               end;

               // 货肺款 付阑狼 漂沥 谅钎肺 捞悼茄促
               if UpperCase(strs[0]) = '@MOVEEX' then begin
                  xx := _StrToInt (Strs[2]);
                  yy := _StrToInt (Strs[3]);

                  tmpManager := ManagerList.GetManagerByTitle (Strs[1]);
                  if tmpManager <> nil then begin
                     if tmpManager.ServerID <> ServerID then begin
                        boNewServer := TRUE;
                        ServerID := tmpManager.ServerID;
                     end;
                     PosMoveX := xx;
                     PosMoveY := yy;
                  end;
                  exit;
               end;

               // 林函 葛电 阁胶磐客 NPC 甫 力芭窃
               if UpperCase(Strs[0]) = '@磊气' then begin
                  SubData.TargetId := 0;
                  if UpperCase(Strs[1]) = 'MOP' then begin
                     Su

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -