Просмотр полной версии : ПРОФА над чаром
Здравствуйте помогите переделать скрипт чтобы над чаром писалась его профа .Сам скрипт:
№ 1
var
m:TMemo;
frm:TForm;
ClassID, i,j,k, ms,ps,mc,cc: Integer;
Message, Name, Class,t: String;
//......................................
//************************************************** *************
procedure Init;
begin
//ShowTab;
frm := TForm.Create(nil);
frm.Caption := 'Char Info!';
frm.BorderStyle := bsSizeable;
frm.Position := poScreenCenter;
frm.Width:=320;
frm.Height:=600;
m:=TMemo.Create(frm);
m.parent:=frm;
m.align:=alClient;
m.ReadOnly:=true;
m.ScrollBars:=ssBoth;
frm.Show;
end;
//......................................
//************************************************** *************
procedure Free;
begin
m.Free;
frm.Free;
//HideTab;
end;
begin
if FromServer and (pck[1]=#$03) then begin
{CharInfo:
22=s(Name)
i=i+116
i=d(MSpeed)
i=d(PSpeed)
i=i+84
i=s(Title)
i=i+27
i=h(cubics:For.0001)
i=i+cubics*2
i=i+8
i=d(classID:Get.ClassID)
i=d(maxCP)
i=d(curCP)
}
i:=22;
Name:=ReadS(i);
i:=i+116;
ms:=readD(i);
ps:=readD(i);
i:=i+84;
j:=i;
t:=reads(i);
k:=i;
i:=i+27;
mc:=ReadH(i);
i:=i+mc*2+8;
classid:=readD(i);
mc:=readD(i);
cc:=readD(i);
case ClassID of
88:class:='hDT';
89:class:='hDN';
90:class:='hPhK';
91:class:='hHK';
93:class:='hAD';
92:class:='hSG';
94:class:='hAM';
95:class:='hST';
96:class:='hAL';
97:class:='hCD';
98:class:='hHPh';
99:class:='eET';
101:class:='eWR';
102:class:='eMlS';
103:class:='eMM';
104:class:='eEM';
105:class:='eEvS';
33:class:='dShK';
106:class:='dShT';
107:class:='dSD';
108:class:='dGH';
37:class:='dPhR';
109:class:='dGS';
110:class:='dStS';
111:class:='dSM';
112:class:='dShS';
113:class:='oTitan';
114:class:='oGK';
115:class:='oDM';
116:class:='oDC';
117:class:='gFS';
118:class:='gMO';
end;
m.Lines.Add(Name+': "'+t+'" '+class+', cp:'+inttostr(ms)+'/'+inttostr(ps)+', cp:'+inttostr(mc)+'/'+inttostr(cc));
Message:=class+'='+inttostr(ms)+'/'+inttostr(ps);
buf:=copy(pck,1,j-1);
WriteS(Message);
j:=length(buf);
buf:=buf+copy(pck,k,length(pck)-k+1);
pck:='';
SendToClient;
end;
end.
TAMBIK, ты бы хоть переменный по-нормальному назвал или прокоментировал бы их по-человечески
З.Ы. для оформления кода используй теги [ HIGHLIGHT = "delphi" ]тут код[ /HIGHLIGHT ] без пробелов.
Добавлено через 1 минуту
если не отрисовывается, значит что-то со смещением накосячил.
Скрипт я нашел в инете там наверно ошибка с определением ClassID но он
выводит:ms,ps над чаром.Вот еще скрипт найден
№ 2
// Скрипт для вывода информации об игроках на сервере
// в User Tab: ник, раса, пол, класс.
// Автор: Furious
// Версия: 0.3
var
m:TMemo;
frm:TForm;
RaceID, SexID, ClassID, i: Integer;
Message, Name, Sex, Race, Class: String;
procedure Init;
begin
//ShowTab;
frm := TForm.Create(nil);
frm.Caption := 'Char Info!';
frm.BorderStyle := bsSizeable;
frm.Position := poScreenCenter;
frm.Width:=400;
frm.Height:=600;
m:=TMemo.Create(frm);
m.parent:=frm;
m.align:=alClient;
m.ReadOnly:=true;
m.ScrollBars:=ssBoth;
frm.Show;
end;
procedure Free;
begin
m.Free;
frm.Free;
//HideTab;
end;
begin
if FromServer and (pck[1]=#$03) then
begin
i:=22;
Name:=ReadS(i);
RaceID:=ReadD(i);
SexID:=ReadD(i);
ClassID:=ReadD(i);
case RaceID of
0:race:='Люди';
1:race:='Светлые эльфы';
2:race:='Темные эльфы';
3:race:='Орки';
4:race:='Гномы';
end;
case SexID of
0:sex:='Мужской';
1:sex:='Женский';
end;
case ClassID of
0:class:='H_Fighter';
1:class:='H_Warrior';
2:class:='H_Gladiator';
88:class:='H_Duelist';
3:class:='H_Warlord';
89:class:='H_Dreadnought';
4:class:='H_Knight';
5:class:='H_Paladin';
90:class:='H_PhoenixKnight';
6:class:='H_DarkAvenger';
91:class:='H_HellKnight';
7:class:='H_Rogue';
8:class:='H_TreasureHunter';
93:class:='H_Adventurer';
9:class:='H_Hawkeye';
92:class:='H_Sagittarius';
10:class:='H_Mage';
11:class:='H_Wizard';
12:class:='H_Sorceror';
94:class:='H_Archmage';
13:class:='H_Necromancer';
95:class:='H_Soultaker';
14:class:='H_Warlock';
96:class:='H_ArcanaLord';
15:class:='H_Cleric';
16:class:='H_Bishop';
97:class:='H_Cardinal';
17:class:='H_Prophet';
98:class:='H_Hierophant';
18:class:='E_Fighter';
19:class:='E_Knight';
20:class:='E_TempleKnight';
99:class:='E_EvaTemplar';
21:class:='E_SwordSinger';
22:class:='E_Scout';
23:class:='E_PlainsWalker';
101:class:='E_WindRider';
24:class:='E_SilverRanger';
102:class:='E_MoonlightSentinel';
25:class:='E_Mage';
26:class:='E_Wizard';
27:class:='E_SpellSinger';
103:class:='E_MysticMuse';
28:class:='E_ElementalSummoner';
104:class:='E_ElementalMaster';
29:class:='E_Oracle';
30:class:='E_Elder';
105:class:='E_EvaSaint';
31:class:='DE_Fighter';
32:class:='DE_PaulusKnight';
33:class:='DE_ShillienKnight';
106:class:='DE_ShillienTemplar';
34:class:='DE_BladeDancer';
107:class:='DE_SpectralDancer';
35:class:='DE_Assassin';
36:class:='DE_AbyssWalker';
108:class:='DE_GhostHunter';
37:class:='DE_PhantomRanger';
109:class:='DE_GhostSentinel';
38:class:='DE_Mage';
39:class:='DE_DarkWizard';
40:class:='DE_Spellhowler';
110:class:='DE_StormScreamer';
41:class:='DE_PhantomSummoner';
111:class:='DE_SpectralMaster';
42:class:='DE_ShillienOracle';
43:class:='DE_ShillienElder';
112:class:='DE_ShillienSaint';
44:class:='O_Fighter';
45:class:='O_Raider';
46:class:='O_Destroyer';
113:class:='O_Titan';
47:class:='O_Monk';
48:class:='O_Tyrant';
114:class:='O_GrandKhauatari';
49:class:='O_Mage';
50:class:='O_Shaman';
51:class:='O_Overlord';
115:class:='O_Dominator';
52:class:='O_Warcryer';
116:class:='O_Doomcryer';
53:class:='D_Fighter';
54:class:='D_Scavenger';
55:class:='D_BountyHunter';
117:class:='D_FortuneSeeker';
56:class:='D_Artisan';
57:class:='D_Warsmith';
118:class:='D_Maestro';
end;
Message:='Раса: '+race+', Пол: '+sex+', Класс: '+class+'.';
m.Lines.Add(Name+': '+Message);
end;
end.
как в нем сделать вывод ClassID над чаром
А если заменить
Message:=class+'='+inttostr(ms)+'/'+inttostr(ps);на
Message:=class;
?
Добавлено через 10 минут
довно уж не играю. поэтому написал на крленке и не тестировал
для С4
ClsShow.txt
var
i,ClassID:integer;
Name,Title:String;
ClassName: TStringList; //названия классов
procedure Init; //Вызывается при включении скрипта
begin
ClassName :=TStringList.Create;
ClassName.LoadFromFile('Scripts\ClassName.ini'); //загрузка из файла
end;
procedure Free; //Вызывается при выключении скрипта
begin
ClassName.free;
end;
begin
if FromServer and (pck[1]=#$03) then begin
i:=22; //пропускаем
ReadS(i); //пропускаем ник
i:=i+8; //пропускаем
ClassID:=ReadD(i); //получаем профу
Title:=ClassName.Strings[ClassID]; //в титл пишем профу
i:=i+144; //пропускаем
buf := copy(pck,1,i-1); //копируем пакет до титла в буфер
ReadS(i); //находим конец титла
WriteS(Title); //вставляем в буфер новый титл
buf := buf+copy(pck,i,length(pck)-1); //копируем в буфер остаток пакета
pck := buf; //меняем пакет
end;
end.
ClassName.ini
Human Fighter
Warrior
Gladiator
Warlord
Human Knight
Paladin
Dark Avenger
Rogue
Treasure Hunter
Hawkeye
Human Mystic
Human Wizard
Sorceror
Necromancer
Warlock
Cleric
Bishop
Prophet
Elven Fighter
Elven Knight
Temple Knight
Swordsinger
Elven Scout
Plainswalker
Silver Ranger
Elven Mystic
Elven Wizard
Spellsinger
Elemental Summoner
Elven Oracle
Elven Elder
Dark Fighter
Palus Knight
Shillien Knight
Bladedancer
Assassin
Abyss Walker
Phantom Ranger
Dark Elven Mystic
Dark Elven Wizard
Spellhowler
Phantom Summoner
Shillien Oracle
Shillien Elder
Orc Fighter
Orc Raider
Destroyer
Orc Monk
Tyrant
Orc Mystic
Orc Shaman
Overlord
Warcryer
Dwarven Fighter
Dwarven Scavenger
Bounty Hunter
Dwarven Artisan
Warsmith
none
none
none
none
none
none
none
none
none
none
none
none
none
none
none
none
none
none
none
none
none
none
none
none
none
none
none
none
none
none
Duelist
DreadNought
Phoenix Knight
Hell Knight
Sagittarius
Adventurer
Archmage
Soultaker
Arcana Lord
Cardinal
Hierophant
Eva Templar
Sword Muse
Wind Rider
Moonlight Sentinel
Mystic Muse
Elemental Master
Evas Saint
Shillien Templar
Spectral Dancer
Ghost Hunter
Ghost Sentinel
Storm Screamer
Spectral Master
Shillien Saint
Titan
Grand Khauatari
Dominator
Doomcryer
Fortune Seeker
Maestro
Спасибо за помощь !!! Мне я извините ненаписал надо для Интерлюда
Я несмыслю в програмирование действую просто методом тыка .В скрипте написано какая команда что делает.Мне это пригодится .СПАСИБО !!
скрипт вроде должен работать на C4 и IL, в T2 надо менять pck[1]=#$03 на pck[1]=#$31 если не изменяет маразм, смещения в пакетах совпадают, и соответственно дописать ClassName.ini новыми классами (см classid.ini)
В скрипте № 1 это
Message:=class+'='+inttostr(ms)+'/'+inttostr(ps);
заменить на
Message:=class+'='+inttostr(mc)+'/'+inttostr(cc);
то над чаром выводится скорость физической и магической атаки
подмена титула в чаринфо на грации, думаю без комментариев....
var
a: integer;
part1, part2, Player, Title :string;
procedure Init;
begin
end;
procedure Free;
begin
end;
procedure OnConnect(WithClient: Boolean);
begin
end;
procedure OnDisonnect(WithClient: Boolean);
begin
end;
begin
if FromServer and (pck[1]=#$31) then
begin
a:=22;
Player:=ReadS(a);
a:=a+272;
part1:=Copy(pck,1,a-1);
Title:=ReadS(a);
part2:=Copy(pck,a,length(pck)-a);
buf:=part1;
WriteS('Losser');
buf:=buf+part2;
pck:=buf;
end;
end.
mks в вашем скрипте пишет Losser
Lineage II The Kamael: Hellbound
сервер Шог
mks в вашем скрипте пишет Losser
Lineage II The Kamael: Hellbound
сервер Шог
Правильно, вставляй туда че хочешь - будет писать что тебе надо, эт я просто пример привел подмены титула
Правильно, вставляй туда че хочешь - будет писать что тебе надо, эт я просто пример привел подмены титула
во вставил
// подмена титула игрока на Class игрока
var
ClassID, i: Integer;
Name, Class,part1,part2,Title: String;
procedure Init;
begin
end;
procedure Free;
begin
end;
procedure OnConnect(WithClient: Boolean);
begin
end;
procedure OnDisonnect(WithClient: Boolean);
begin
end;
begin
if FromServer and (pck[1]=#$31) then
begin
i:=22;
Name:=ReadS(i);
i:=i+8;
ClassID:=ReadD(i);
i:=i+260;
part1:= copy(pck,1,i-1); //копируем пакет до титла в буфеr
Title:=ReadS(i);
case ClassID of
0:class:='H_Fighter';
1:class:='H_Warrior';
2:class:='H_Gladiator';
88:class:='H_Duelist';
3:class:='H_Warlord';
89:class:='H_Dreadnought';
4:class:='H_Knight';
5:class:='H_Paladin';
90:class:='H_PhoenixKnight';
6:class:='H_DarkAvenger';
91:class:='H_HellKnight';
7:class:='H_Rogue';
8:class:='H_TreasureHunter';
93:class:='H_Adventurer';
9:class:='H_Hawkeye';
92:class:='H_Sagittarius';
10:class:='H_Mage';
11:class:='H_Wizard';
12:class:='H_Sorceror';
94:class:='H_Archmage';
13:class:='H_Necromancer';
95:class:='H_Soultaker';
14:class:='H_Warlock';
96:class:='H_ArcanaLord';
15:class:='H_Cleric';
16:class:='H_Bishop';
97:class:='H_Cardinal';
17:class:='H_Prophet';
98:class:='H_Hierophant';
18:class:='E_Fighter';
19:class:='E_Knight';
20:class:='E_TempleKnight';
99:class:='E_EvaTemplar';
21:class:='E_SwordSinger';
22:class:='E_Scout';
23:class:='E_PlainsWalker';
101:class:='E_WindRider';
24:class:='E_SilverRanger';
102:class:='E_MoonlightSentinel';
25:class:='E_Mage';
26:class:='E_Wizard';
27:class:='E_SpellSinger';
103:class:='E_MysticMuse';
28:class:='E_ElementalSummoner';
104:class:='E_ElementalMaster';
29:class:='E_Oracle';
30:class:='E_Elder';
105:class:='E_EvaSaint';
31:class:='DE_Fighter';
32:class:='DE_PaulusKnight';
33:class:='DE_ShillienKnight';
106:class:='DE_ShillienTemplar';
34:class:='DE_BladeDancer';
107:class:='DE_SpectralDancer';
35:class:='DE_Assassin';
36:class:='DE_AbyssWalker';
108:class:='DE_GhostHunter';
37:class:='DE_PhantomRanger';
109:class:='DE_GhostSentinel';
38:class:='DE_Mage';
39:class:='DE_DarkWizard';
40:class:='DE_Spellhowler';
110:class:='DE_StormScreamer';
41:class:='DE_PhantomSummoner';
111:class:='DE_SpectralMaster';
42:class:='DE_ShillienOracle';
43:class:='DE_ShillienElder';
112:class:='DE_ShillienSaint';
44:class:='O_Fighter';
45:class:='O_Raider';
46:class:='O_Destroyer';
113:class:='O_Titan';
47:class:='O_Monk';
48:class:='O_Tyrant';
114:class:='O_GrandKhauatari';
49:class:='O_Mage';
50:class:='O_Shaman';
51:class:='O_Overlord';
115:class:='O_Dominator';
52:class:='O_Warcryer';
116:class:='O_Doomcryer';
53:class:='D_Fighter';
54:class:='D_Scavenger';
55:class:='D_BountyHunter';
117:class:='D_FortuneSeeker';
56:class:='D_Artisan';
57:class:='D_Warsmith';
118:class:='D_Maestro';
123:class:='Kamael Soldier M';
124:class:='Kamael Soldier F';
125:class:='Trooper';
126:class:='Warder';
127:class:='Berserker';
128:class:='Male Soulbreaker';
129:class:='Female Souldbreaker';
130:class:='Arbalester';
131:class:='Doombringer';
132:class:='Male Soulhound';
133:class:='Female Soulhound';
134:class:='Trickster';
135:class:='Inspector';
136:class:='Judicator';
end;
part2:=Copy(pck,i,length(pck)-i);
buf:=part1;
WriteS(''+class+'');
buf:=buf+part2;
pck:=buf;
end;
end.
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot