Page 1 of 2
Мб кто знает...
Posted: 15.09.2009 1:18
by pr0Zak
Запускаю скрипт на фишинг и выдает вот такую ошибку :
Code: Select all
2:05:31 [XBOCT]: Compiler: [Error] (Ôèø.SC at 600:4): Identifier expected
2:05:31 [XBOCT]: Compiling failed
2:05:31 [XBOCT]: Script Ôèø.SC stoped successfuly
ошибка указывает на поледний
END.
ps. Все енды и бегины проверил вроде все норм немогу понять в чем ошибка, кто знает подскажите))
Posted: 15.09.2009 7:58
by Vizit0r
Posted: 15.09.2009 13:47
by pr0Zak
Читал, но Я всеровно не нечево непонял!!
зы. Я заметил что после попытки запуска скрипта помимо ошибки весь русский текст в скрипте приобразовалсо в такой вид:
Posted: 15.09.2009 13:52
by pr0Zak
Пыталса вчера написать ищо один скрипт, де чар должен был убивать тварей и лутить их и опять меня настигла таже ошибка, непойму в чем прикол))
Сам скрипт:
Code: Select all
Program Hobat;
Const
MaxHits = 140; // Хп при котором чар начинает хилитса
var
Corpse: Cardinal;
Item: array [1..10] of integer;
ItemID: Cardinal;
//***************************************************************
//ОЖИДАНИЕ КОНЕКТА
//***************************************************************
procedure WaitConnection;
begin
if Connected then exit;
while not Connected do wait(100);
wait(3000);
end;
//***************************************************************
// РЕСЕНД
//***************************************************************
procedure Resend;
begin
Wait(1000);
UOSay(Chr(39)+'resend');
Wait(5000);
end;
//***************************************************************
// ЧЕК ХП
//***************************************************************
procedure CheckHeal;
begin
If Life < MaxHits then
begin
UOSay('Нэ вбЫвай плз! :)');
while Life < Str do
begin
If isDead(self) then exit;
UOSay(Chr(39)+'pc heal self');
Wait(3000);
addtosystemjournal('Лечимся');
end;
end;
end;
//***************************************************************
// ОДЕВАЕТ КАТАНУ И ЩИТ
//***************************************************************
Procedure CheckEquip;
begin
If (FindType($13FF, self) = 0) or (FindType($1B76, self) = 0) then
begin
WaitConnection;
Disarm;
wait(1000);
If FindType($13FF, backpack) = 0 then UOSay('Катана в сумке не найдена');
If FindType($13FF, backpack) <> 0 then Equip(RhandLayer, finditem);
If FindType($1B76, backpack) = 0 then UOSay('Щит в сумке не найден');
If FindType($1B76, backpack) <> 0 then Equip(LhandLayer, finditem);
wait(1000);
end;
end;
//***************************************************************
// Розделка трупа
//***************************************************************
procedure FindMobs;
VAR
Corpse: Cardinal;
j: integer;
BEGIN
while true do
begin
FindDistance := 1;
if FindType($2006, ground) <> 0 then
begin
AddToSystemJournal('Найден труп ' + IntToStr(finditem));
Corpse := finditem;
If FindType($13FF, backpack) <> -1 then
begin
AddToSystemJournal('Режем труп');
WaittargetObject(Corpse);
Wait(1000);
UseObject(finditem);
Wait(3500);
end;
UseObject(Corpse);
Wait(1000);
Ignore(Corpse);
begin
j := 1;
UseObject(Backpack);
Wait(3200);
UOSay(Chr(39)+'resend');
Wait(1000);
while j < 10 do
begin
If FindType(Item[j], Corpse) > 0 then
begin
ItemID := finditem;
If not(isDead(self)) then MoveItem(ItemID, 0, backpack, 0, 0, 0);
Wait(1000);
end
else
begin
j := j + 1;
end;
AddToSystemJournal('Закончили с трупом.');
end;
end;
end;
end;
//***************************************************************
// Основная часть
//***************************************************************
BEGIN
AddToSystemJournal('Инициализируем переменные...');
Item[1] := $0F21; // Стар сапфиры
Item[2] := $0EED; // Золото
Item[3] := $0F85; // Гинс
Item[4] := $0F86; // Мр
Item[5] := $0F7B; // Блуд мус
Item[6] := $0F88; // Нс
Item[7] := $0F7A; // БП
Item[8] := $0F84; // Гарлик
Item[9] := $0F8C; // Сульфур
Item[10] := $0F8D; // СС
AddToSystemJournal('Готово...');
AddToSystemJournal('Запускаю макрос на хобот...');
Ignore(self);
FindDistance := 1;
if FindType($2006, ground) <> 0 then
begin
AddToSystemJournal('Найден труп ' + IntToStr(finditem));
FindMobs;
end;
If not(isDead(self)) then CheckEquip;
If not(isDead(self)) then CheckHeal;
END.
Ошибка такаяже как и впридведущем посте, де указывает на последний ЕНД.
Posted: 15.09.2009 14:39
by grundick
Code: Select all
procedure FindMobs;
VAR
Corpse: Cardinal;
j: integer;
BEGIN
while true do
begin
FindDistance := 1;
if FindType($2006, ground) <> 0 then
begin
AddToSystemJournal('Найден труп ' + IntToStr(finditem));
Corpse := finditem;
If FindType($13FF, backpack) <> -1 then
begin
AddToSystemJournal('Режем труп');
WaittargetObject(Corpse);
Wait(1000);
UseObject(finditem);
Wait(3500);
end;
UseObject(Corpse);
Wait(1000);
Ignore(Corpse);
begin <---- этот begin тут явно лишний
j := 1;
UseObject(Backpack);
Wait(3200);
UOSay(Chr(39)+'resend');
Wait(1000);
while j < 10 do
begin
If FindType(Item[j], Corpse) > 0 then
begin
ItemID := finditem;
If not(isDead(self)) then MoveItem(ItemID, 0, backpack, 0, 0, 0);
Wait(1000);
end
else
begin
j := j + 1;
end;
AddToSystemJournal('Закончили с трупом.');
end;
end;
end;
END;
Posted: 15.09.2009 17:19
by WladL
Смени кодировку файла скрипта (например на Plain text) , и все будет ок с русским текстом.Проверено.
Posted: 15.09.2009 18:30
by pr0Zak
Спс действительно вся проблема была в лишнем Бегин
Ищо вопрос, почему нехотят работать ети процедуры в макросе на фиш?
Code: Select all
procedure Dig; // ничего менять больше не надо
begin
Disarm;
wait(1000);
FindType(Tools[1],backpack);
if FindCount > 0 then
Equip(RhandLayer,finditem)
else
begin
FindType(Tools[1],MainBox);
Equip(RhandLayer,finditem);
end;
If TargetPresent then
CancelTarget;
AddToSystemJournal('Начинаем ловить...');
Wait(3500);
WaitTargetTile(FishPos[PosNum].tile, FishPos[PosNum].x, FishPos[PosNum].y, FishPos[PosNum].z);
UseObject(Tools[1]);
WaitConnection(3000);
end;
Code: Select all
procedure Dig; // ничего менять больше не надо
begin
Disarm;
wait(1000);
FindType(Tools[1],backpack);
if FindCount > 0 then
Equip(RhandLayer,finditem)
else
begin
FindType(Tools[1],MainBox);
Equip(RhandLayer,finditem);
end;
if TargetPresent then CancelTarget;
waitconnection(3000);
AddToSystemJournal('Начинаем ловить...');
Wait(3500);
UseObject(ObjAtLayerEx(RHandLayer,self));
WaitForTarget(3000);
If TargetPresent then TargetToTile(FishPos[PosNum].tile, FishPos[PosNum].x, FishPos[PosNum].y, FishPos[PosNum].z);
end;
Выдает вот такую ошибку:
Code: Select all
19:14:28 [XBOCT]: Çàïóñêàþ ìàêðîñ...
19:14:29 [XBOCT]: Íà÷èíàåì ëîâèòü...
19:14:33 [XBOCT]: UseObject error: Object not finded.
19:14:34 [XBOCT]: Íà÷èíàåì ëîâèòü...
19:14:38 [XBOCT]: UseObject error: Object not finded.
Posted: 15.09.2009 18:55
by grundick
Для начала определи, правильно ли ты задаёшь руку. Левая или правая? Возьми удочку в руку и проверь, в какой руке она находиться.
Posted: 15.09.2009 19:19
by pr0Zak
grundick wrote:Для начала определи, правильно ли ты задаёшь руку. Левая или правая? Возьми удочку в руку и проверь, в какой руке она находиться.
Рука правая, а процедуры обе неработают немогу понять почему, тайп правельно стоит и нехочет юзать на удочку, он ее кстате воще даже в руки неберет!!
Posted: 15.09.2009 19:21
by Vizit0r
может потому что в эквипе рука таки-да неправильно указана, а?
хватит лениться - проверь стелсом, а не визуально клиентом - тот весьма часто руку показывает неправильно.
Posted: 15.09.2009 19:23
by grundick
Сдаётся мне, что не тот тип поступает в FindType .
Code: Select all
FindType(Tools[1],backpack);
if FindCount > 0 then
Equip(RhandLayer,finditem)
else
begin
FindType(Tools[1],MainBox);
Equip(RhandLayer,finditem);
end;
У тебя в обоих случаях ищет тип Tools[1]
Re: Мб кто знает...
Posted: 15.09.2009 20:29
by Edred
pr0Zak wrote:ошибка указывает на поледний END.
ps. Все енды и бегины проверил вроде все норм немогу понять в чем ошибка, кто знает подскажите))
Не хватает значит End-а, быстрее всего. Если бы отступы в скрипте делал как надо - сразу было бы видно. А так - считай на пальцах, где какой энд соответствует какому бегину.
Posted: 15.09.2009 21:05
by Vano
1. На сколько я помню, двуручное оружие (включая удочки) всегда берётся в левую руку. Соответственно, надо изменить слоя.
Смотреть в клиенте в какой руке чар держит удочку в корне неверно.
2.
Вот это откровенная лажа, команда использования объекта, а подсовывается тип...
Posted: 16.09.2009 19:04
by pr0Zak
Все верно удочка беретса в левую руку хотя, если смотреть на папердоле то удочка в правой руке-)
И теперь он на удочку юзает но незакидует удочку-)
Code: Select all
procedure Dig; // ничего менять больше не надо
begin
Disarm;
wait(1000);
FindType(Tools[1],backpack);
if FindCount > 0 then
Equip(RhandLayer,finditem)
else
begin
FindType(Tools[1],MainBox);
Equip(RhandLayer,finditem);
end;
if TargetPresent then CancelTarget;
waitconnection(3000);
AddToSystemJournal('Начинаем ловить...');
Wait(3500);
UseObject(ObjAtLayerEx(RHandLayer,self));
WaitForTarget(3000);
If TargetPresent then TargetToTile(FishPos[PosNum].tile, FishPos[PosNum].x, FishPos[PosNum].y, FishPos[PosNum].z);
end;
Posted: 16.09.2009 21:09
by WladL
Проверяй что в момент заброса хранится в (FishPos[PosNum].tile, FishPos[PosNum].x, FishPos[PosNum].y, FishPos[PosNum].z) и расстояние свое до этой точки.
Что в UO Journal пишет в этот момент (есть ли сообщение о том что удочку заюзали)?