PDA

Просмотр полной версии : Проблема со скриптом.


smqkvova
14.08.2010, 16:13
Люди такая проблема с нашего форума жук я взял скрипт для точки на интерлюд когда я ставлю вылезает окно (типо ид итема точки и т.д)
Всё идеально но не неходит itemid.txt я перелазил скприт в надежде что где-то путь можно прописать не нашол помогите скажите где или дайте хороший скрипт пожалуйста для ***PHX***

4ibiZz
14.08.2010, 18:15
на сколько я понимаю , у тебя в этом файле должны быть прописаны id всех итемов .
phx берёт всю инфу от туда и точить что нужно

smqkvova
14.08.2010, 18:38
Да но скрипт не находит можете кто нить кинуть другой скрипт или что-то такое ?

HeroWMZ
07.09.2010, 18:57
держи// Auto_enchant_maxlvl - interlude + покупка !!!!!!!!!!
// хроники Interlude
// ======================================
const

myname='HeroWMZ'; //<<== пишем свой НИК

max=300;//<<== колличество ячеек в рюкзаке

xxx=120;//<<== колличество skrol при котором будет закупка

chat = 3;// <<== какой ЧАТ выводить сообщения
// 3 - Party; 4 - Clan; 9 - Alli; 10 - anons ; 17 - Hero;
// ======================================
// в пати чат пишем уровень заточки
// можно менять в процесе работы скрипта
// заточить один раз чтоб запомнить чем и что точить
// можно точить для запоминания несколько предметов соответствующие
// применяемому skrol
// СТАРТ нажать соцдействие ДА
// СТОП нажать соцдействие НЕТ
// включить системные сообщения соцдействие - приветствие \ hello
// выключить системные сообщения соцдействие - победа \ victory
// дальше скрипт сам точит до указаного уровня заточки
// все предметы одинаковые с первыми заточеными
// точит первый предмет до Заданного уровень заточки потом второй и т.д
//------------------------
// есть возможность для закупки skrol для этого
// поговорить с нпс и купить skrol столько ===сколько надо докупать
// скрипт должен запомнить
// нпс должен быть выделен
// АВТОР ==>>>> TAMBIK
var
BaseItems:array[1..max,1..9] of integer;
BaseID:array[1..max] of integer;
Timer01: TTimer;
Timer02: TTimer;
Timer03: TTimer;
Action,BypassToServer,MultiSell:string;
autostart,autoskrol:Boolean;
autoMsg:Boolean;
flag,start:Boolean;
mytext:string;
ListSize,ItemEnch:word;
textID,itemID:integer;
enchantObjectID:integer;
enchantID,skrolObjectID:integer;
ItemOID,objectOID: integer;
sumskrol,sumitemID,sumadena: integer;
x,y,ii:integer;
t,l,d,a,i:integer;
maxlvl: integer;
GetiD:integer;
skrolID,skrolObj:integer;

//-----------------------------------------
procedure SendMsg2(msg:string);
begin
if autoMsg then begin
buf:=#$4A;
WriteD(0);
WriteD(chat);// <<= куда выводить сообщения
WriteS('');
WriteS(msg);
SendToClientEx(myname);
end;
end;
//===========================================
procedure Resultmaxlvl;
var
i:integer;
begin
i:=2;
mytext:=ReadS(i);
textID:=ReadD(i);
if (textID=3) then begin
maxlvl:=StrToInt(mytext);
SendMsg2( ' Установлен MAX Уровень Заточки : '+IntToStr(maxlvl)+'' );
pck:='';
exit;
end;
end;
//.....................................
procedure ItemList;
var
i, j, k: integer;
count:integer;
begin
deleteBase;
j:=4;
ListSize:=ReadH(j);
for i:=1 to ListSize do
if (i<=ListSize) then begin
BaseItems[i,1]:=ReadH(j);
BaseItems[i,2]:=ReadD(j);//ObjectID
BaseItems[i,3]:=ReadD(j);//ItemID
BaseItems[i,4]:=ReadD(j);// count: 1интерлюд
BaseItems[i,5]:=ReadH(j);//
BaseItems[i,6]:=ReadH(j);//
BaseItems[i,7]:=ReadH(j);//
BaseItems[i,8]:=ReadD(j);//
BaseItems[i,9]:=ReadH(j);//-EnchantLevel:
inc(j,10);
end else for k:=1 to 9 do BaseItems[i,k]:=0;

if (skrolID > 0) then begin
sumskrol:=0;
sumskrol:=Getsumitem(skrolID,3,4);// счет скоко свитков
SendMsg2 (' = Всего = Skroll : '+IntToStr(sumskrol)+' Ш Т ');
end;
if (sumskrol = xxx) and (autoskrol = true) then begin
SendMsg2 (' _ З А К У П К А S K R O L L _ ');
SendMsg2 ('____________________________________ ');
start:=false;
Timer02.enabled:=false;
a:=1;
Timer01.enabled:=true;
end;
if start and (sumskrol > 0) then GetItemID ;//находим в базе ItemID
if start and (sumskrol = 0) then begin
autoMsg:=true;
start:=false;
SendMsg2 ('........ НЕДОСТАТОЧНО SKROL........ ');
SendMsg2 (' ___ О С Т А Н О В Л Е Н О ___ ');
Timer02.enabled:=false;
end;
end;
//-----------------------------------------
procedure OnTimer01(Sender: TObject);
begin
case a of
1:begin
buf:=Action;
SendToServerEx(myname);
inc(a);
SendMsg2( '............... Action ...............' );
end;
2:begin
buf:=BypassToServer;
SendToServerEx(myname);
inc(a);
SendMsg2( '..........BypassToServer..........' );
end;
3:begin
buf:= MultiSell;
SendToServerEx(myname);
a:=0;
SendMsg2( '.............MultiSell...............' );
Timer01.enabled:=false;
start:=true;
GetItemID ;//находим в базе ItemID Timer02.enabled:=true;
end;
end;
end;
//=============================
procedure EnchantResult;
var
i,j:integer;
begin

end;
//=============================
procedure deleteBase;
var
i,j,k:integer;
begin
for i:=1 to max do
if (BaseItems[i,2] > 0) then begin
BaseItems[i,1]:=0;
BaseItems[i,2]:=0; //ObjectID
BaseItems[i,3]:=0; //ItemID
BaseItems[i,4]:=0;
BaseItems[i,5]:=0;
BaseItems[i,6]:=0;
BaseItems[i,7]:=0;
BaseItems[i,8]:=0;
BaseItems[i,9]:=0;
end;
end;
//===========================================
// СЧИТАЕМ ПРЕДМЕТЫ
// НАХОДИМ ObjectID и ID ПРЕДМЕТа
//===========================
//счет скоко свитков и находим ObjectID, ItemID предметa
function Getitem(Obj,up,down:integer): integer;
var
i: integer;
begin
Result:= 0; //В начале у нас 0
for i:=1 to max do
if (BaseItems[i,up]=Obj) then begin
Result:=BaseItems[i,down];
end;
end;
//счет скоко всего предметов
//===========================
function Getsumitem(Obj,up,down:integer): integer;
var
i: integer;
begin
Result:= 0; //В начале у нас 0
for i:=1 to max do
if (BaseItems[i,up]=Obj) then begin
Result:=Result+BaseItems[i,down];
end;
end;
//=================================
//добавляем в базу ID предмета
procedure addIDtoarray(ItemOID:integer);
begin
sumitemID:=0;
SendMsg2( '------------------------------------- ' );
SendMsg2 (' -- Добавим в Базу ID предмета -- ');
flag:=false;
for ii:=1 to max do
if (BaseID[ii]=ItemOID) then begin // текущий ID уже есть в массиве,
flag := true;
sumitemID:=Getsumitem(ItemOID,3,4);//счет скоко предметов
SendMsg2 (' предмет в базе есть с ID : '+IntToStr(ItemOID)+' шт : '+IntToStr(sumitemID)+' ');
SendMsg2( '------------------------------------- ' );
Break; // прерываем дальнейший перебор массива.
end;
if (flag = false) then begin
for ii:=1 to max do
if (BaseID[ii]=0) then begin // добавим ID в массив,
BaseID[ii]:=ItemOID;
sumitemID:=Getsumitem(ItemOID,3,4);//счет скоко предметов
SendMsg2 (' Добавлен в Базу Предмет с ID : '+IntToStr(ItemOID)+' : '+IntToStr(sumitemID)+' ШТ ');
SendMsg2( '------------------------------------- ' );
Break; // прерываем дальнейший перебор массива.
end;
end;
end;
//=============================
procedure ChooseInventory;
begin
if start then begin
objectOID:=0;
objectOID:= GetObjectID(itemID);//находим по ItemID предмет с ObjectID
if (objectOID = 0) then begin
SendMsg2 ('Больше Предметов c ID : '+IntToStr(itemID)+' для заточки НЕТ !!! ');
for ii:=1 to max do
if (BaseID[ii] = itemID) then begin
BaseID[ii]:=0;
GetItemID ;//находим в базе ItemID предмет для Заточки
Break;
end;
end;
end;
end;
//=================================
//находим ItemID предмета для Заточки в базе ItemID
procedure GetItemID ;
begin
if start then begin
SendMsg2( '*******************************************' );
SendMsg2 (' ..... ПОИСК ______ ПРЕДМЕТА..... ');
SendMsg2( '------------------------------------- ' );
itemID:=0;
for ii:=1 to max do
if (BaseID[ii] <> 0) then begin
itemID:=BaseID[ii];
SendMsg2 (' Нашли Предмет с ID = '+IntToStr(itemID)+' ');
SendMsg2( '------------------------------------- ' );
skrolObj:=0;
skrolObj:=Getitem(skrolID,3,2);//находим ObjectID skrol
if (itemID > 0) and (skrolObj > 0) then Timer02.enabled:=true;
Break;
end;
if (itemID = 0) then begin
autoMsg:=true;
start:=false;
SendMsg2 (' ___ НЕТ ПРЕДМЕТОВ ДЛЯ ЗАТОЧКИ ___ ');
SendMsg2 (' ___ О С Т А Н О В Л Е Н О ___ ');
end;
end;
end;
//=================================
//находим enchantID предмета по ItemID для заточки
function GetObjectID(itemID:integer) : integer;
var
i:integer;
begin
SendMsg2 (' Находим по ID : ' +IntToStr(itemID)+' ObjectID Предмета ');
SendMsg2( '------------------------------------- ' );
enchantID:=0;
ItemEnch:=0;
Result:=0;
if (itemID > 0) then begin
for i:=1 to max do
if (BaseItems[i,3] = itemID) and (BaseItems[i,9] < maxlvl) then begin
Result:=BaseItems[i,2];
ItemEnch:=BaseItems[i,9];
enchantID:=BaseItems[i,2];
SendMsg2(' ..... Найден ObjectID Предмета ..... ');
SendMsg2(' ID : '+IntToStr(itemID)+' и ObjectID : '+IntToStr(enchantID)+' заточен до : '+IntToStr(ItemEnch)+' ');
SendMsg2( '------------------------------------- ' );
if start and (enchantID > 0) then Timer03.enabled:=true;
Break;
end;
end;
end;
//===================================
procedure OnTimer02(Sender: TObject);
begin
SendMsg2( ' Активирован SKROL ObjectID : '+IntToStr(skrolObj)+' ' );
SendMsg2( '------------------------------------- ' );
buf:=#$14;
WriteD(skrolObj);
WriteD(0);
SendToServerEx(myname);
Timer02.enabled:=false;
end;
//--------------------------
procedure OnTimer03(Sender: TObject);
begin
buf:=#$58;
WriteD(enchantID);
SendToServerEx(myname);
Timer03.enabled:=false;
SendMsg2( ' ..... Точим Предмет ..... ' );
SendMsg2( ' ID : '+IntToStr(itemID)+' и ObjectID : '+IntToStr(enchantID)+' до : '+IntToStr(maxlvl)+' ' );
SendMsg2( '------------------------------------- ' );
enchantID:=0;
end;
//-----------------------------------------
procedure Init;
begin
a:=0;t:=0;l:=0;d:=0;
flag:=false; start:=false;autoMsg:=true;
autoskrol:=false; autostart:=false;
GetiD:=0; objectOID:=0; itemID:=0;
sumskrol:=0;sumadena:=0;
enchantID:=0; ItemEnch:=0;
skrolObjectID:=0;enchantObjectID:=0;
maxlvl:=0;skrolID:=0;

Timer01:=TTimer.Create(nil);
Timer01.OnTimer:=@OnTimer01;
Timer01.enabled:=false;
Timer01.interval:=500; //<<== время между разговором

Timer02:=TTimer.Create(nil);
Timer02.OnTimer:=@OnTimer02;
Timer02.enabled:=false;
Timer02.interval:=300; //<<== время выбора скролл

Timer03:=TTimer.Create(nil);
Timer03.OnTimer:=@OnTimer03;
Timer03.enabled:=false;
Timer03.interval:=500; //<<== время между заточкой
SendMsg2( ' привет от TAMBIKa !' );
SendMsg2( 'в пати чат пишем уровень заточки' );
SendMsg2( ' заточить предмет ! ! !' );
SendMsg2( ' СТАРТ соцдействие ДА ' );
SendMsg2( ' СТОП соцдействие НЕТ' );
SendMsg2( ' В К Л сообщения соцдействие - приветствие \ hello ' );
SendMsg2( ' ВЫКЛ сообщения соцдействие - победа \ victory ' );
SendMsg2( '------------------------------------- ' );
deleteBase;
for ii:=1 to max do
BaseID[ii]:=0;
OpenInventory;//открыть инвентарь
end;
procedure Free;
begin
Timer01.free;
Timer02.free;
Timer03.free;
end;
//=========================
procedure OpenInventory;//открыть инвентарь.0F=RequestItemList
begin
buf:=hstr('0F');
SendToServerEx(myname);
end;
//=========================
procedure RequestActionUse;
begin
case ReadD(2) of
02:begin autoMsg:=true;end;
03:begin autoMsg:=false;end;
06:begin
if (maxlvl=0) then SendMsg2( ' НЕ ЗАДАН УРОВЕНЬ ЗАТОЧКИ !' );
if (autostart=false) then SendMsg2( 'предмет незаточен или пакеты неприняты !' );
if (ItemOID=0) then SendMsg2( 'ненайден ID предмета! заточите еще раз !' );
if autostart and (maxlvl > 0) and (ItemOID > 0) then begin
SendMsg2( ' ! ! ! П О Е Х А Л И ! ! !' );
start:=true;
OpenInventory;//открыть инвентарь
end;
end;
05:begin
deleteBase;
start:=false;
enchantID:=0;
ItemEnch:=0;
Timer03.enabled:=false;
Timer02.enabled:=false;
Timer01.enabled:=false;
SendMsg2( ' ! ! ! С Т О П ! ! ! ' );
SendMsg2 ('___ О С Т А Н О В Л Е Н О ___ ');
end;
end;
end;
//=========
begin
if pck='' then exit;
if FromServer and (pck[1]=#$6F) then begin
skrolID:=0;
skrolID:=ReadD(2);
ChooseInventory;
end;
if FromServer and (pck[1]=#$81) then begin EnchantResult;end;
if FromServer and (pck[1]=#$1B) then begin ItemList;end;

if FromClient and (pck[1]=#$38) then begin Resultmaxlvl;end;
if FromClient and (pck[1]=#$1B) then begin RequestActionUse;pck:='';exit;end;
if FromClient and (pck[1]=#$04) then begin Action:=pck;end;
if FromClient and (pck[1]=#$21) then begin BypassToServer:=pck;end;
if FromClient and (pck[1]=#$A7) then begin autoskrol:=true; MultiSell:=pck;
SendMsg2( '-- АВТОЗАКУПКА SKROL ВКЛ ----' );
end;
begin
if (start=false) and FromClient then
case pck[1] of
#$14:begin
t:=0;
autostart:=false;
skrolObjectID:=0;
skrolObjectID:=ReadD(2);
if (skrolObjectID > 0 ) then begin
SendMsg2( ' Активирован SKROLL с ObjectID : '+IntToStr(skrolObjectID)+' ' );
t:=1;
end;
end;
#$58:begin
d:=0;
ItemOID:=0;
enchantObjectID:=0;
enchantObjectID:=ReadD(2);
if (enchantObjectID > 0 ) then ItemOID:=Getitem(enchantObjectID,2,3);
if (ItemOID > 0) then begin
d:=1;
SendMsg2( ' Заточен Предмет с ID : '+IntToStr(ItemOID)+' ' );
addIDtoarray(ItemOID);
if (t=1) and (d=1) then autostart:=true;
end;
end;
end;
end;
end.