аа фсе вкурил!!=)
пойду спать, завтро доделаю, и буду мучить завтро!))
так что прошу быть на месте
спасибо!
Добавлено через 20 часов 44 минуты
ну вот еще адын вариант.. только он чота выдает ашибку=((
Код:
const
Name='Kooper';
ItemID=148;
AdenID=54;
max=100;
var
ItemBaseS:array[1..max] of integer;
KolvoI, KolvoM: integer;
procedure Init;
begin
end;
procedure Free;
begin
end;
procedure GiveAden;
var o: integer;
begin
ItemBase;
for o:=1 to max-10 do begin
buf:=hstr('C6 C0 13 00 00 19 00 00 00 01 00 00 00 81 00 00 00');
SendToServerEx(Name);
buf:=hstr('A7 30 7D 8D 12 C0 A5 5F 03 01 00 00 00');
SendToServerEx(Name);
delay(200);
UpdateItemBase;
end;
delay(1000);
SellItem;
end;
procedure ItemBase;
var i,ss,j,ObjID,ItmID,ListCount,Count,aug:integer;
begin
ss:=1;
j:=4;
ListCount:=ReadH(j);
if ListCount>max then ListCount:=max;
j:=8;
for i:=1 to ListCount do begin
ObjID:=ReadD(j);
ItmID:=ReadD(j);
Count:=ReadD(j);
j:=j+14;
aug:=ReadD(j);
case ItmID of
ItemID: begin
ItemBaseS[ss]:=ObjID;
inc(ss);
end;
AdenID: begin
KolvoM:=Count;
end;
end;
j:=j+6;
end;
end;
procedure UpdateItemBase;
var i,ii,j,ObjID,ItmID,ListCount,Count,UpdType,aug: integer;
begin
ListCount:=ReadH(2);
j:=4;
for i:=1 to ListCount do begin
UpdType:=ReadH(j);
j:=j+2;
ObjID:=ReadD(j);
ItmID:=ReadD(j);
Count:=ReadD(j);
j:=j+14;
aug:=ReadD(j);
case UpdType of
1:case ItmID of
ItemID: begin
for ii:=1 to max do
if ItemBaseS[ii]=0 then begin
ItemBaseS[ii]:=ObjID;
KolvoI:=KolvoI+1;
break;
end;
end;
AdenID: begin
KolvoM:=Count;
end;
end;
end;
end;
j:=j+6;
end;
procedure SellItem;
var i: integer;
ll,ss1: string;
begin
buf:=HStr('1E 00 00 00 00');
ll:=HStr(IntToStr(KolvoI));
WriteD(ll);
for i:=1 to max do begin
ss1:=HStr(IntToStr(ItemBaseS[i]));
WriteD(ssq);
ll:=HStr('9E 00 00 00 01 00 00 00');
WriteD(ll);
end;
SendToServerEx(Name);
Clear;
end;
procedure Clear;
var i: integer;
begin
for i:=1 to max do begin
ItemBaseS[i]:=0;
end;
KolvoI:=0;
end;
begin
if FromClient and (pck[1]=#$04) then begin
GiveAden;
end;
if KolvoM=2147483648 then begin
exit;
end;
end.
вот тут ошибка
buf:=HStr('1E 00 00 00 00');
ll:=HStr(IntToStr(KolvoI));
WriteD(ll); <пишет что Incompatible types :"Integer", "String"
ну я так понимаю что это тип ненравится, но я же вроде перевел уже в строку чего он парится??
Последний раз редактировалось M6vsKGB, 23.04.2009 в 19:53.
Причина: Добавлено сообщение
мхх чота ничего не идеет=(((((((((((((((
может я чонить пропустил =(
Добавлено через 22 минуты
почему то когда я выделяю торговца ПХ начинает бурно работать, но когда я жму действие он ничег оне делает=(
точнее не хочет он продавать а еще точнее не хочет делать базу предметов=((
Добавлено через 1 час 27 минут
Код:
procedure SellItem;
var i: integer;
ll: string;
begin
buf:=HStr('1E 00 00 00 00');
WriteD(KolvoI);
for i:=1 to max do begin
WriteD(ItemBase[1,i]);
ll:=HStr('9E 00 00 00 01 00 00 00');
WriteS(ll);
end;
SendToServerEx(Name);
end;
прально написано?
где ItemBase[1,i] ObjID предмета
KolvoI количество предметов
Последний раз редактировалось M6vsKGB, 23.04.2009 в 21:53.
Причина: Добавлено сообщение
procedure Init; //Вызывается при включении скриптаbeginend;
procedure Free; //Вызывается при выключении скриптаbeginend;
procedure OnConnect(WithClient: Boolean); //Вызывается при установке соединенияbeginend;
procedure OnDisonnect(WithClient: Boolean); //Вызывается при потере соединенияbeginend;
//основная часть скрипта//вызывается при приходе каждого пакета если скрипт включенbeginend.
Далее, начинаешь наполнять переменными, вспомогательными функциями/процедурами, таймерами и в основном теле обработчиками пакетов.
//имя программы (не обязательно)program newscript;
//здесь надо описывать константыconst
Name='Имя чара';
maxitems=250; //max количество предметов в базе{...}//далее описывать переменныеvar
MyX, MyY, MyZ : integer;
//требуется для поддержки БД BuyList
BaseBuyItems: array[1..maxitems, 1..2] ofinteger; //все предметы в инвентаре продавца
BuyListID: integer; //ID списка на продажу (всегда новый){...}procedure Init; //Вызывается при включении скриптаbegin//в этой процедуре обычно описываем переменные, которые надо инициализировать//также здесь описываем создание форм и объектов{...}end;
procedure Free; //Вызывается при выключении скриптаbegin//здесь описываем освобождение занятых ресурсов объектами и формами{...}end;
procedure OnConnect(WithClient: Boolean); //Вызывается при установке соединенияbeginend;
procedure OnDisonnect(WithClient: Boolean); //Вызывается при потере соединенияbeginend;
//здесь надо описывать процедуры и функции{...}procedure BuyList;
{Создаем базу BaseBuyItems}var
i, j, k: integer;
ListCount: integer;
begin
j:=6; //смещение для ListID
BuyListID:=ReadD(j);
ListCount:=ReadH(j); //количество итемов не должно превышать max!for i:=1to maxitems dobeginif(i<=ListCount)thenbegininc(j,6);
BaseBuyItems[i,1]:=ReadD(j); //ItemIDinc(j,18);
BaseBuyItems[i,2]:=ReadD(j); //Price*TaxRateinc(j,32);
endelsefor k:=1to2do BaseBuyItems[i,k]:=0; // забиваем нулямиend;
end;
//основная часть скрипта//вызывается при приходе каждого пакета если скрипт включенbegin//здесь описываем вызовы обработчиков пакетов или если обработчики короткие, то можно писать их и здесь//не обрабатываем пустые пакеты, сразу на выходif pck=''thenexit;
//пошли обработчики серверных пакетовif(ConnectName=Name)and FromServer thenbegincase pck[1] of
#$07: begin//07=BuyList
BuyList; //вызываем процедуру обработки пакета BuyListend;
{...}end;
end;
//пошли обработчики клиентских пакетовif(ConnectName=Name)and FromClient thenbegincase pck[1] of//ValidatePosition пакет от клиента с моими кординатами//59=ValidatePosition:d(X)d(Y)d(Z)d(Heading)d(Data)
#$59: begin//обрабатываем пакет без вызова обработчика
MyX:=ReadD(2); //получаю координату х моего чара
MyY:=ReadD(6); //получаю координату у моего чара
MyZ:=ReadD(10); //получаю координату z моего чараend;
{...}end;
end;
end.
дык я спрашиваю про саму процедуру, она прошла проверку.. ну синтаксис правильный.....
а правильно ли я ее написал в смысле, она будет исполняться?
просто я несовсем все понимаю, а написать нужно)
Последний раз редактировалось M6vsKGB, 24.04.2009 в 17:32.