📄 uguild.pas
字号:
SelfData.GuildNpc[i].rName := aName;
SelfData.GuildNpc[i].rX := aX;
SelfData.GuildNpc[i].rY := aY;
SelfData.GuildNpc[i].rSex := aSex;
GuildNpc := TGuildNpc.Create;
GuildNpc.SetManagerClass (Manager);
GuildNpc.Initial (Self, aName, aX, aY, aSex);
if (SelfData.GuildMagic <> '') and (boAddGuildMagic = false) then begin
GuildNpc.boMagicNpc := true;
StrPCopy (@GuildNpc.BasicData.Guild, SelfData.GuildMagic);
MagicClass.GetMagicData (SelfData.GuildMagic, GuildNpc.GuildMagicData, SelfData.MagicExp);
boAddGuildMagic := true;
end;
DieGuildNpcList.Add (GuildNpc);
Result := TRUE;
exit;
end;
end;
end;
function TGuildObject.FieldProc (hfu: Longint; Msg: word; var SenderInfo: TBasicData; var aSubData: TSubData): Integer;
var
i, n, percent : integer;
// xx, yy: word;
str1, str2, str3: string;
str, gname : string;
sayer, objectname, gradename: string;
SubData: TSubData;
BO: TBasicObject;
GuildNpc : TGuildNpc;
begin
Result := PROC_FALSE;
if isRangeMessage ( hfu, Msg, SenderInfo) = FALSE then exit;
Result := inherited FieldProc (hfu, Msg, Senderinfo, aSubData);
if Result = PROC_TRUE then exit;
case Msg of
FM_ADDITEM:
begin
if SelfData.Name = '' then Exit;
if aSubData.ItemData.rKind = ITEM_KIND_DUMMY then begin
if GuildNpcList.Count + DieGuildNpcList.Count >= MAX_GUILDNPC_COUNT then begin
BocSay ('歹捞惑 父甸荐 绝嚼聪促.');
exit;
end;
i := 0;
while true do begin
if aSubData.ItemData.rSex = 2 then begin
gName := INI_GUILD_NPCWOMAN_NAME + IntToStr(i);
if GetGuildNpcByName (gName) = -1 then begin
AddGuildNpc (gName, BasicData.X, BasicData.Y, 2);
Result := PROC_TRUE;
break;
end;
end else begin
gName := INI_GUILD_NPCMAN_NAME + IntToStr(i);
if GetGuildNpcByName (gName) = -1 then begin
AddGuildNpc (gName, BasicData.X, BasicData.Y, 1);
Result := PROC_TRUE;
break;
end;
end;
Inc (i);
end;
end;
end;
FM_HIT :
begin
if SelfData.Name <> '' then begin
if isHitedArea (SenderInfo.dir, SenderInfo.x, SenderInfo.y, aSubData.HitData.HitFunction, percent) then begin
UserList.GuildSay (SelfData.Name, SelfData.Name + ': ' + format ('%s阑 穿啊 锭赋聪促.',[INI_GUILD_STONE]));
Dec (SelfData.Durability, DEC_GUILD_DURA_BY_HIT);
if SelfData.Durability <= 0 then begin
// FboAllowDelete := TRUE;
end;
n := SelfData.Durability;
if n > SelfData.MaxDurability then n := SelfData.MaxDurability;
BocSay (IntToStr (n));
SubData.TargetId := SenderInfo.id;
for i := 0 to GuildNpcList.Count - 1 do begin
GuildNpc := GuildNpcList.Items [i];
if GuildNpc.FieldProc (NOTARGETPHONE, FM_GUILDATTACK, BasicData, SubData) = PROC_TRUE then begin
break;
end;
end;
end;
end;
{
xx := SenderInfo.x; yy := SenderInfo.y;
GetNextPosition (SenderInfo.dir, xx, yy);
if (BasicData.x = xx) and (BasicData.y = yy) then begin
UserList.GuildSay (GuildName, GuildName+ ': '+format ('%s阑 穿啊 锭赋聪促.',[INI_GUILD_STONE]));
Dec (GuildDurability, DEC_GUILD_DURA_BY_HIT);
BocSay (IntToStr (GuildDurability));
SubData.TargetId := SenderInfo.id;
for i := 0 to AnsList.Count -1 do
if TGuildNpc (AnsList[i]).FieldProc (NOTARGETPHONE, FM_GUILDATTACK, BasicData, SubData) = PROC_TRUE then break;
end;
}
end;
FM_PICKUP :
begin
if FboAllowDelete then exit;
if (SelfData.Name = '') and (SelfData.Sysop <> '') then begin
if (StrPas (@SenderInfo.Name) = SelfData.Sysop) then begin
ItemClass.GetItemData (INI_Guild_STONE, SubData.ItemData);
SignToItem (SubData.ItemData, Manager.ServerID, SenderInfo, '');
SubData.ServerId := Manager.ServerId;
if TFieldPhone(Manager.Phone).SendMessage (SenderInfo.id, FM_ADDITEM, BasicData, SubData) = PROC_TRUE then begin
FboAllowDelete := TRUE;
exit;
end;
end;
end;
end;
FM_SAY :
begin
if FboAllowDelete then exit;
if SenderInfo.id = BasicData.id then exit;
if StrPas (@SenderInfo.Name) = SelfData.Sysop then begin
str := GetWordString (aSubData.SayString);
if ReverseFormat (str, '%s: %s 巩颇甫 父电促', str1, str2, str3, 2) then begin
if (not isFullHangul (str2)) or (not isGrammarID(str2)) or (Length(str2) > 12) or (Length(str2) < 2) then begin
BocSay ( '巩颇捞抚捞 肋给登菌嚼聪促.');
exit;
end;
SubData.ServerId := Manager.ServerId;
StrPCopy (@SubData.SubName, Str1);
StrPCopy (@SubData.GuildName, Str2);
if TFieldPhone (Manager.Phone).SendMessage (MANAGERPHONE, FM_ALLOWGUILDNAME, BasicData, SubData) = PROC_FALSE then begin
BocSay ( '捞固 巩颇捞抚捞 乐芭唱,');
BocSay ( '何巩林唱 巩林肺 殿废登绢 乐嚼聪促.');
BocSay ( '巩颇甫 父甸 荐 绝嚼聪促.');
exit;
end else begin
BocChangeProperty;
end;
exit;
end;
end;
if SelfData.Name = '' then exit;
str := GetwordString (aSubData.SayString);
if Pos ('呕硼 矫难林技夸',str) > 0 then begin
str := GetValidStr3 (str, sayer, ':');
// 2000.09.18 NPC狼 捞抚苞 User狼 捞抚捞 鞍阑锭 八祸坷幅滚弊 荐沥 by Lee.S.G
// 呕硼绰 RACE_HUMAN俊辑父 蜡瓤窍促
Bo := GetViewObjectByName (sayer, RACE_HUMAN);
if Bo = nil then exit;
if not (Bo is TUser) then exit;
TUser(Bo).GuildName := '';
TUser(Bo).GuildGrade := '';
StrPCopy(@TUser(Bo).BasicData.Guild, '');
TUser(Bo).BocChangeProperty;
BocSay ('呕硼 登菌嚼聪促.');
exit;
end;
str := GetWordString (aSubData.SayString);
if Pos ('力疙 矫难林技夸', str) > 0 then begin
str := GetValidStr3 (str, sayer, ':');
Bo := GetViewObjectByName (sayer, RACE_HUMAN);
if Bo = nil then exit;
if not (Bo is TUser) then exit;
if (sayer <> SelfData.SubSysop[0]) and (sayer <> SelfData.SubSysop[1]) and (sayer <> SelfData.SubSysop[2]) then begin
BocSay ('何巩林俊 烙疙登绢 乐瘤 臼嚼聪促.');
exit;
end;
if sayer = SelfData.SubSysop[0] then SelfData.SubSysop[0] := ''
else if sayer = SelfData.SubSysop[1] then SelfData.SubSysop[1] := ''
else if sayer = SelfData.SubSysop[2] then SelfData.SubSysop[2] := '';
BocSay ('何巩林俊辑 力疙 登菌嚼聪促.');
exit;
end;
str := GetwordString (aSubData.SayString);
if ReverseFormat (str, '%s: ', sayer, str2, str3, 1) then begin
if (sayer <> SelfData.Sysop) and (sayer <> SelfData.SubSysop[0])
and (sayer <> SelfData.SubSysop[1]) and (sayer <> SelfData.SubSysop[2]) then exit;
end;
if ReverseFormat (str, '%s: %s丛阑 傍拜茄促', sayer, objectname, str3, 2) then begin
Bo := GetViewObjectByName (objectname, RACE_HUMAN);
if Bo = nil then begin BocSay (format ('%s丛篮 绝嚼聪促.',[objectname])); exit; end;
if not (Bo is TUser) then begin BocSay (format ('%s丛篮 荤侩磊啊 酒凑聪促.',[objectname])); exit; end;
if BO.BasicData.Feature.rfeaturestate = wfs_die then exit;
SubData.TargetId := BO.BasicData.id;
for i := 0 to GuildNpcList.Count - 1 do begin
GuildNpc := GuildNpcList.Items [i];
Bo := GetViewObjectByID (GuildNpc.BasicData.ID);
if Bo <> nil then begin
GuildNpc.FieldProc (NOTARGETPHONE, FM_GUILDATTACK, BasicData, SubData);
end;
end;
exit;
end;
if ReverseFormat (str, '%s: 傍拜阑 肛冕促', sayer, objectname, str3, 1) then begin
SubData.TargetId := 0;
for i := 0 to GuildNpcList.Count - 1 do begin
GuildNpc := GuildNpcList.Items [i];
GuildNpc.FieldProc (NOTARGETPHONE, FM_GUILDATTACK, BasicData, SubData);
end;
exit;
end;
if ReverseFormat (str, '%s: %s丛阑 啊涝矫挪促', sayer, objectname, str3, 2) then begin
// 2000.09.18 NPC狼 捞抚苞 User狼 捞抚捞 鞍阑锭 八祸坷幅滚弊 荐沥 by Lee.S.G
// 啊涝篮 RACE_HUMAN俊辑父 蜡瓤窍促
Bo := GetViewObjectByName (objectname, RACE_HUMAN);
if Bo = nil then begin BocSay (format ('%s丛篮 绝嚼聪促.',[objectname])); exit; end;
if not (Bo is TUser) then begin BocSay (format ('%s丛篮 荤侩磊啊 酒凑聪促.',[objectname])); exit; end;
if TUser(Bo).GuildName = SelfData.Name then begin BocSay (format ('%s丛篮 啊涝登绢 乐嚼聪促.',[objectname])); exit; end;
if TUser(Bo).GuildName <> '' then begin BocSay (format ('%s丛篮 促弗 巩颇 涝聪促.',[objectname])); exit; end;
TUser(Bo).GuildName := SelfData.Name;
// 2000.09.16 巩林唱 何巩林狼 啊涝矫 巩颇檬籍狼 郴备己阑 刘啊矫虐扁 困秦
// GetUserGrade() 甫 龋免茄促 by Lee.S.G
TUser(Bo).GuildGrade := GetUserGrade (objectname);
StrPCopy (@TUser(Bo).BasicData.Guild, SelfData.Name);
GuildUserList.AddUser (objectname);
TUser(Bo).BocChangeProperty;
BocSay (format ('%s丛阑 啊涝矫淖嚼聪促.',[objectname]));
end;
if ReverseFormat (str, '%s: %s丛阑 呕硼矫挪促', sayer, objectname, str3, 2) then begin
if GuildUserList.DelUser (objectname) then begin
BocSay (format ('%s丛阑 呕硼矫淖嚼聪促.',[objectname]));
SubData.ServerId := Manager.ServerId;
StrPCopy (@SubData.SubName, objectname);
StrPCopy (@SubData.GuildName, SelfData.Name);
TFieldPhone (Manager.Phone).SendMessage (MANAGERPHONE, FM_REMOVEGUILDMEMBER, BasicData, SubData);
// 2000.09.18 NPC狼 捞抚苞 User狼 捞抚捞 鞍阑锭 八祸坷幅滚弊 荐沥 by Lee.S.G
// 呕硼绰 RACE_HUMAN俊辑父 蜡瓤窍促
{
Bo := GetViewObjectByName (objectname, RACE_HUMAN);
if Bo = nil then exit;
if not (Bo is TUser) then exit;
TUser (Bo).GuildName := '';
// 2000.09.16 GuildGrade档 窃膊 檬扁拳 矫挪促 by Lee.S.G
TUser (Bo).GuildGrade := '';
StrPCopy (@TUser (Bo).BasicData.Guild, '');
TUser(Bo).BocChangeProperty;
}
end else begin
BocSay (format ('%s丛篮 啊涝登绢乐瘤 臼嚼聪促.',[objectname]));
end;
end;
if ReverseFormat (str, '%s: %s丛狼 流窃篮 %s捞促', sayer, objectname, gradename, 3) then begin
if (not isFullHangul (gradename)) or (not isGrammarID(gradename)) or (Length(gradename) > 12) or (Length(gradename) < 2) then begin
BocSay ( '流氓捞抚捞 肋给登菌嚼聪促.');
exit;
end;
if GuildUserList.IsGuildUser (objectname) then begin
BocSay (format ('林绢柳 流氓篮 %s 涝聪促.',[gradename]));
GuildUserList.SetGradeName (objectname, gradename);
end else begin
BocSay (format ('%s丛篮 啊涝登绢乐瘤 臼嚼聪促.',[objectname]));
end;
end;
if ReverseFormat (str, '%s: %s丛阑 何巩林肺 烙疙茄促', sayer, objectname, str3, 2) then begin
if sayer <> SelfData.Sysop then exit;
// 2000.09.18 NPC狼 捞抚苞 User狼 捞抚捞 鞍阑锭 八祸坷幅滚弊 荐沥 by Lee.S.G
// 何巩林绰 RACE_HUMAN俊辑父 蜡瓤窍促
Bo := GetViewObjectByName (objectname, RACE_HUMAN);
if Bo = nil then begin BocSay (format ('%s丛篮 绝嚼聪促.',[objectname])); exit; end;
if not (Bo is TUser) then begin BocSay (format ('%s丛篮 荤侩磊啊 酒凑聪促.',[objectname])); exit; end;
if TUser (Bo).GuildName <> SelfData.Name then begin BocSay (format ('%s丛篮 巩盔捞 酒凑聪促.',[objectname])); exit; end;
if (objectname = SelfData.SubSysop[0]) or (objectname = SelfData.SubSysop[1]) or (objectname = SelfData.SubSysop[2]) then begin
BocSay (format ('%s丛篮 捞固 何巩林 涝聪促.',[objectname]));
exit;
end;
if (SelfData.SubSysop[0] <> '') and (SelfData.SubSysop[1] <> '') and (SelfData.SubSysop[2] <> '') then begin
BocSay ('歹 捞惑 烙疙且 荐 绝嚼聪促.');
BocSay ( format ('何巩林绰 %s, %s, %s丛涝聪促.', [SelfData.SubSysop[0],SelfData.SubSysop[1],SelfData.SubSysop[2]]));
exit;
end;
// 2000.09.20 促弗 巩颇狼 巩林唱 何巩林绰 何巩林肺 烙疙瞪荐 绝促 by Lee.S.G
SubData.ServerId := Manager.ServerId;
StrPCopy (@SubData.SubName, objectname);
StrPCopy (@SubData.GuildName, '');
if TFieldPhone(Manager.Phone).SendMessage (MANAGERPHONE, FM_ALLOWGUILDSYSOPNAME, BasicData, SubData) = PROC_FALSE then begin
BocSay ( '捞固 促弗 巩颇狼 何巩林唱 巩林肺 ');
BocSay ( '殿废登绢 乐嚼聪促.');
Exit;
end;
if SelfData.SubSysop[0] = '' then begin SelfData.SubSysop[0] := objectname; BocSay(format ('%s丛阑 烙疙沁嚼聪促.',[objectname])); exit; end;
if SelfData.SubSysop[1] = '' then begin SelfData.SubSysop[1] := objectname; BocSay(format ('%s丛阑 烙疙沁嚼聪促.',[objectname])); exit; end;
if SelfData.SubSysop[2] = '' then begin SelfData.SubSysop[2] := objectname; BocSay(format ('%s丛阑 烙疙沁嚼聪促.',[objectname])); exit; end;
end;
if ReverseFormat (str, '%s: %s丛阑 何巩林俊辑 力疙茄促', sayer, objectname, str3, 2) then begin
if sayer <> SelfData.Sysop then exit;
if SelfData.SubSysop[0] = objectname then begin SelfData.SubSysop[0] := ''; BocSay(format ('%s丛阑 力疙沁嚼聪促.',[objectname])); exit; end;
if SelfData.SubSysop[1] = objectname then begin SelfData.SubSysop[1] := ''; BocSay(format ('%s丛阑 力疙沁嚼聪促.',[objectname])); exit; end;
if SelfData.SubSysop[2] = objectname then begin SelfData.SubSysop[2] := ''; BocSay(format ('%s丛阑 力疙沁嚼聪促.',[objectname])); exit; end;
BocSay (format ('%s丛篮 何巩林啊 酒凑聪促.',[objectname]));
end;
if ReverseFormat (str, '%s: 巩颇沥焊', str1, str2, str3, 1) then begin
BocSay ('巩颇器凉沥焊');
for i := 0 to GuildNpcList.Count -1 do begin
GuildNpc := GuildNpcList.Items [i];
str := StrPas(@GuildNpc.BasicData.Name);
str := str + ' x:' + IntToStr (GuildNpc.BasicData.X);
str := str + ' y:' + IntToStr (GuildNpc.BasicData.Y);
BocSay (str);
end;
n := SelfData.Durability;
if n > SelfData.MaxDurability then n := SelfData.MaxDurability;
BocSay (format ('巩颇檬籍 : %d/%d',[n, SelfData.MaxDurability]));
exit;
end;
end;
end;
end;
procedure TGuildObject.Initial;
var
i : Integer;
GuildNpc : TGuildNpc;
MagicData : TMagicData;
begin
inherited Initial (SelfData.Name, SelfData.Name);
LoadFromFile (SelfData.Name);
FGuildName := SelfData.Name;
DuraTick := mmAnsTick;
// if (SelfData.MaxDurability = 0) or (SelfData.MaxDurability = 110000) then begin
// SelfData.MaxDurability := MAX_GUILD_DURA;
// end;
BasicData.id := GetNewStaticItemId;
BasicData.x := SelfData.X;
BasicData.y := SelfData.Y;
BasicData.ClassKind := CLASS_GUILDSTONE;
BasicData.Feature.rrace := RACE_STATICITEM;
BasicData.Feature.rImageNumber := 67;
BasicData.Feature.rImageColorIndex := 0;
MagicClass.GetMagicData (SelfData.GuildMagic, MagicData, SelfData.MagicExp);
if MagicData.rName [0] = 0 then begin
SelfData.GuildMagic := '';
SelfData.MagicExp := 0;
end;
boAddGuildMagic := false;
DieGuildNpcList.Clear;
for i := 0 to MAX_GUILDNPC_COUNT - 1 do begin
if SelfData.GuildNpc[i].rName = '' then continue;
GuildNpc := TGuildNpc.Create;
if Manager <> nil then begin
GuildNpc.SetManagerClass (Manager);
end;
GuildNpc.Initial (Self, SelfData.GuildNpc[i].rName, SelfData.GuildNpc[i].rX, SelfData.GuildNpc[i].rY, SelfData.GuildNpc[i].rSex);
if (SelfData.GuildMagic <> '') and (boAddGuildMagic = false) then begin
GuildNpc.boMagicNpc := true;
StrPCopy (@GuildNpc.BasicData.Guild, SelfData.GuildMagic);
MagicClass.GetMagicData (SelfData.GuildMagic, GuildNpc.GuildMagicData, SelfData.MagicExp);
boAddGuildMagic := true;
end;
DieGuildNpcList.Add (GuildNpc);
end;
end;
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -