📄 uuser.pas
字号:
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 + -