Местный
Регистрация: 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', не меняет таргет, не делает прочего, чего бы туда ни хотелось засунуть Только включает скилы со своей 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.
|