Page 1 of 2
Прокачка спирит спика
Posted: 27.09.2006 2:14
by Edred
Code: Select all
Program Spirit;
{$Include 'all.inc'}
var
k : integer;
ctime : TDateTime;
procedure TrySpirit;
begin
repeat
waitconnection(3000);
ctime := Now;
k := 0
UseSkill('Spirit Speak');
repeat
wait(100);
k := k + 1;
until (InJournalBetweenTimes('You fail|You channel|You lack|You establish', ctime, Now)<>-1) or (Mana < (MaxMana - 50)) or (k > 300);
wait(500);
If (InJournalBetweenTimes('You establish', ctime, Now)<>-1) then
begin
wait(5000);
SetWarMode(true);
wait(500);
SetWarMode(false);
end;
until (Mana < (MaxMana - 50));
end;
procedure TryMedit;
begin
while (Mana < MaxMana) do
begin
waitconnection(3000);
ctime := Now;
k := 0
UseSkill('Meditation');
repeat
wait(100);
k := k + 1;
until (InJournalBetweenTimes('reached full mana|lost', ctime, Now)<>-1) or (k > 600);
wait(500);
end;
end;
Begin
while not Dead do
begin
TrySpirit;
TryMedit;
end;
End.
Posted: 23.12.2006 22:55
by id
Что-то всё очень сложно в этом скрипте.
Надо только проверять если скилл не удалось заюзать (You fail your attempt at contacting the netherworld.), то повторить ещё раз через 3 секунды, если удалось (You establish a connection to the netherworld.), то следующий раз через 5 минут + 10 сек на всякий случай.
Это для ДРВ

Posted: 24.12.2006 0:25
by Edred
А приведенный выше скрипт написан для Форест Варз. Тупой скрипт, я давно его переписал на каст стрелки в себя и лечение спиритом.
Posted: 24.12.2006 10:18
by id
Попытался переписать так, как я описал. Не хочет компилиться:
Code: Select all
Program Spirit;
{$Include 'all.inc'}
var
k : integer;
ctime : TDateTime;
const fizzle = 'You fail your attempt';
const success = 'You establish a connection';
procedure SpSpeak;
begin
ClearJournal;
repeat
UseSkill('Spirit Speak');
k := 1;
repeat
Wait(100);
k: = k+1;
until (InJournal(fizzle|success)>0) OR k>600
until InJournal(success)
end;
procedure UseSp;
begin
SpSpeak;
ctime := Now;
if (Now-ctime)/600>5 then
begin
SpSpeak;
ctime = Now;
end
else
Wait(500);
end;
begin
while not Dead do
begin
UseSp;
end;
End.
В чем ошибка? Подскажи, пожалуйста.
Стелс пишет так: Compiler: [Error] (spirit_speak.sc at 19:5): Assignment expected
Posted: 24.12.2006 20:15
by Edred
В чем ошибка? Подскажи, пожалуйста.
Стелс пишет так: Compiler: [Error] (spirit_speak.sc at 19:5): Assignment expected
Стелс же тебе говорит, рой строку 19, позицию 5 (табуляции считаются за один знак каждая).
Зачем здесь пробел? Пробел - это разделитель, а оператор присваивания
Но у тебя быстрее всего могут еще вылезти проблемы в строке:
Паскаль строго, в отличие от других языков, относится к типам переменных. Ты здесь из TDateTime вычитаешь TDateTime (нормально), потом делишь на Integer (плохо) и сравниваешь с Integer. Я не уверен, что Паскаль сам по дороге преобразует типы, быстрее всего он ругнется. Смотри функции преобразования типов, топик "все функции" в разделе Help. Тебе надо отказаться от деления (зачем оно?) и сравнивать результат с
5 минут.
Кроме того, не забывай такую вещь:
В инжекте:
В паскале:
Вот это - неверно:
Posted: 24.12.2006 22:22
by id
В принципе всё, что ты сказал - я знал, просто я не внимательный какой-то

Спасибо, что направил. Попробую завтра переписать, сейчас нет настроя)
Posted: 26.12.2006 17:35
by id
Code: Select all
Program Spirit;
{$Include 'all.inc'}
var
k : integer;
ctime : TDateTime;
const fizzle = 'You fail your attempt';
const success = 'You establish a connection';
procedure SpSpeak;
begin
ClearJournal;
repeat
UseSkill('Spirit Speak');
k:= 1;
repeat
Wait(100);
k:= k+1;
until (InJournal(success+'|'+success)>0) OR k>600
until InJournal(success)
end;
procedure UseSp;
begin
SpSpeak;
ctime:= Now;
if (Now-ctime)%600>5 then
begin
SpSpeak;
ctime: = Now;
end
else
Wait(500);
end;
begin
while not Dead do
begin
UseSp;
end;
End.
Стелс: Compiler: [Error] (sspeak2.txt at 20:52): Type mismatch
Опять не понятно в чём ошибка.
Вижу ошибку: типы не совпадают в этой строке: until (InJournal(success+'|'+success)>0) OR k>600, но в чём здесь дело?
PS. И вобще логика моего скрипта правильная для моего описания?
Заранее спасибо.
Posted: 26.12.2006 18:15
by Edred
Точки с запятой за тебя кто ставить будет?
ЗЫ: Если ты опять ответишь, что ты все это знал, но просто невнимателен - следующую подсказку получишь через месяц после вопроса. Вижу у тебя в скрипте еще одну описку - не скажу, сам смотри.
Posted: 26.12.2006 19:16
by id
Опять же я сейчас не могу проверить скрипт, я дома, а качаться оставляю на работе

Но попробую головой, не забитой работой подумать:
1. Точки с запятой после обеих строк:
Code: Select all
until (InJournal(success+'|'+success)>0) OR k>600
until InJournal(success)
я ставил.
2. Наверно опечатка тут:
Code: Select all
until (InJournal(success+'|'+success)>0) OR k>600
Надо
брать в скобки.
3. И вот здесь опять опечаточка:
Вроде больше ничего не вижу.
Ответь пожалуйста на мой предидущий вопрос: логика того, что я хочу вобще верно реализована?
Posted: 26.12.2006 23:10
by Edred
Логику не смотрел и смотреть не буду, тут уж сам. Точки с запятой ставил - зачем убрал? Без них работать не будет. В скобки взять - рекомендуется. Опечатки - это на твоей совести. Есть у тебя там описка (не опечатка), которая работать скрипту мешать не будет, но скрипт будет работать криво. Так что тренируй внимательность.
to ALL: Не подсказывать!
Posted: 26.12.2006 23:40
by SLAK
Edred wrote:
to ALL: Не подсказывать!
Хе-хе... Вижу растиш нового скриптёра

Posted: 27.12.2006 10:18
by id
Вроде написал нормально. Переделал полностью.
В этом значительно легче писать оказалось
http://img404.imageshack.us/img404/604/stealthbp7.png
А проверить не могу пока из-за этой проблемы:
http://stealth.od.ua/forum/viewtopic.php?t=819
Проверю и покажу.
Posted: 27.12.2006 14:32
by id
Проверил. Работает как-то не совсем однозначно. Ошибок нет. Что-то не так в логике.
Code: Select all
Program Spirit;
{$Include 'all.inc'}
var
ctime : TDateTime;
const fizzle = 'You fail your attempt';
const success = 'You establish a connection';
procedure SpSpeak;
begin
ClearJournal;
repeat
UseSkill('Spirit Speak');
Wait(1000);
until InJournal(success)<=0;
ctime:=Now;
end;
begin
SpSpeak;
while not Dead do
begin
if Trunc((Now-ctime)/600)>5 then SpSpeak else wait(500);
end;
End.
Прошу консультации

Posted: 27.12.2006 14:52
by Miralex
Постоянно чистить журнал - не удачный вариант. Используй временные сканирования журнала с помошью InJournalBetweenTimes.
Posted: 27.12.2006 14:57
by id
Спасибо. Исправился сам после того, как внимательно прочитал этот топик:
http://stealth.od.ua/forum/viewtopic.php?t=475