Местный
Регистрация: 29.04.2008
Сообщений: 830
Сказал Спасибо: 80
Имеет 230 спасибок в 169 сообщенях
|
Может сразу сделать работу только с макросами имеющими определенное имя (напр. cut1, cut2...cut12), и проверять наличие свободных ячеек под вновь создаваемые - что бы не переживать за сохранность ранее созданных
Пока вылилось в "это":
Оффтоп
delphi Код:
const
rec='Lapeno';
donor='Freya';
var
SkillsNameEng,ItemsNameEng,StringList:TStringList;
i,ii,iii,SKID,Slot:integer;
SkillID:integer;
Pskill:array[1..12] of string; //массив с именами скилов панельки
PskillID:array[1..12] of integer;//массив с ИД --//--
values:array[0..100] of variant;
procedure Init; //Вызывается при включении скрипта
begin
StringList:=TStringList.Create;
SkillsNameEng:=TStringList.Create;
ItemsNameEng:=TStringList.Create;
try
SkillsNameEng.LoadFromFile('skillseng.ini');
except
Sendmsg('SkillsidEng.ini не найден!');
exit;
end;
try
ItemsNameEng.LoadFromFile('itemseng.ini');
except
Sendmsg('ItemsIDEng.ini не найден!');
exit;
end;
end;
procedure Free; //Вызывается при выключении скрипта
begin
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if fromserver and (connectname=donor) and (pck[1]=#$45) then begin //InitCut
i:=(ReadD(2)); //kol-vo Cuts
Sendmsg('Kol-vo Cuts: '+Inttostr(i));
ii:=6;
for iii:=1 to i do begin
case (ReadD(ii)) of
1:begin //item
ReadMask('ddddddhh',2,values);
ii:=ii+28;
end;
2:begin
//skill
Slot:=ReadD(ii);
SKID:=ReadD(ii);
ReadD(ii);
ReadC(ii);
ReadD(ii);
if (slot>107) then begin //Запись только с 10ой панельки
Pskill[(slot-107)]:=(SkillsNameEng.Values[InttoStr(SKID)]);
if (Pskill[(slot-107)]='') then Pskill[(slot-107)]:=('Unkn: '+Inttostr(skid));
PskillID[(slot-107)]:=skid;
Sendmsg(Pskill[(Slot-107)]+' ID skill: '+inttostr(PskillID[(slot-107)]));
Sendmsg('Slot '+Inttostr(slot));
Sendmsg('SKID '+Inttostr(SKID));
buf:=#$CD;
WriteMask('DSSSCCCCDCS',[(15+(slot-107)),((Pskill[(Slot-107)])),'',(Inttostr(SKID)),0,1,1,3,0,0,('Use Skill: '+inttostr(PskillID[(Slot-107)]))]);
Sendmsg(Strtohex(buf));
Sendtoserverex(rec);
end;
end;
3:begin //social action
ReadMask('ddd',2,values);
ii:=ii+12;
end;
4:begin //macro
ReadMask('ddd',2,values);
ii:=ii+12;
end;
5:begin //recipe
ReadMask('ddd',2,values);
ii:=ii+12;
end;
end;
end;
end;
if fromclient and (connectname=rec) and (pck[1]=#$49) and (Copy(ReadS(2),1,10)='Use Skill:') then begin
SkillID:= StrtoInt(Copy(ReadS(4),11,4)); //из команды в чат считываем ИД скила
pck:=''; //
buf:=#$39; // формируем пакет MagicSkillUse
WriteMask('ddc',[SkillID,0,0]); // и отправляем его
Sendtoserverex(donor); // в клиент 'donor'
end;
end.
- Пока что оно "переносит" только скилы, не бегает за 'rec', не меняет таргет, не делает прочего, чего бы туда ни хотелось засунуть ![](images/smilies/smile.gif) Только включает скилы со своей 10ой панели (предварительно таргет надо взять)
И все бы ничего, но только зарраза чат блокирует периодически, при спаме макроса
PS: файлы skillseng.ini и itemseng.ini - взяты от более старой версии - L2phx 3.2.1, изза этого будут недочеты...
__________________
На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."
А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?
Последний раз редактировалось Breadfan, 23.07.2010 в 21:04.
|