PDA

Просмотр полной версии : ПРОФА над чаром


TAMBIK
13.03.2009, 14:46
Здравствуйте помогите переделать скрипт чтобы над чаром писалась его профа .Сам скрипт:
№ 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.

QaK
13.03.2009, 14:58
TAMBIK, ты бы хоть переменный по-нормальному назвал или прокоментировал бы их по-человечески
З.Ы. для оформления кода используй теги [ HIGHLIGHT = "delphi" ]тут код[ /HIGHLIGHT ] без пробелов.

Добавлено через 1 минуту
если не отрисовывается, значит что-то со смещением накосячил.

TAMBIK
14.03.2009, 11:48
Скрипт я нашел в инете там наверно ошибка с определением 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 над чаром

PanAm
16.03.2009, 18:39
А если заменить
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

TAMBIK
19.03.2009, 17:24
Спасибо за помощь !!! Мне я извините ненаписал надо для Интерлюда

Я несмыслю в програмирование действую просто методом тыка .В скрипте написано какая команда что делает.Мне это пригодится .СПАСИБО !!

PanAm
20.03.2009, 15:21
скрипт вроде должен работать на C4 и IL, в T2 надо менять pck[1]=#$03 на pck[1]=#$31 если не изменяет маразм, смещения в пакетах совпадают, и соответственно дописать ClassName.ini новыми классами (см classid.ini)

TAMBIK
03.04.2009, 15:17
В скрипте № 1 это
Message:=class+'='+inttostr(ms)+'/'+inttostr(ps);
заменить на
Message:=class+'='+inttostr(mc)+'/'+inttostr(cc);
то над чаром выводится скорость физической и магической атаки

mks
04.04.2009, 11:09
подмена титула в чаринфо на грации, думаю без комментариев....

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.

TAMBIK
22.04.2009, 11:24
mks в вашем скрипте пишет Losser
Lineage II The Kamael: Hellbound
сервер Шог

mks
22.04.2009, 22:10
mks в вашем скрипте пишет Losser
Lineage II The Kamael: Hellbound
сервер Шог
Правильно, вставляй туда че хочешь - будет писать что тебе надо, эт я просто пример привел подмены титула

TAMBIK
23.04.2009, 19:46
Правильно, вставляй туда че хочешь - будет писать что тебе надо, эт я просто пример привел подмены титула
во вставил
// подмена титула игрока на 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.