Page 2 of 8

Re: Re:

Posted: 07.08.2011 21:14
by Scripts Writer
Unholy wrote:
Scripts Writer wrote:
Всё хорошо написал, единственная поправочка:
Все это можно вместить в 10 слов "Называйте переменные так, чтоб вы понимали что в них хранится."
Я бы изменил на "Называйте переменные так, чтоб не только вы понимали что в них хранится, но и другие пользователи, которые, возможно, будут читать и в дальнейшем сопровождать Ваш код. Особенно, это важно, когда с момента разработки проходит длительное время и становится сложно разобраться, для чего и где в дальнейшем эта переменная могла использоваться. Так же, не лишним, будут комментарии к Вашему коду."

П.С. Я тоже недавно перечитывал свои уроки, которые писал на форуме Inject'a примерно в твоём же возрасте. Улыбался. 2006 год, 16 лет, ну да.

Re: Скриптинг в Stealth для чайников.

Posted: 18.11.2011 7:13
by jian
Подскажите, функции работы с журналом поддерживают регулярки? Найденные подстроки могут вернуть? Или есть для этого другие ф-и в стелсе?

Re: Скриптинг в Stealth для чайников.

Posted: 18.11.2011 7:33
by CFA
jian wrote:Подскажите, функции работы с журналом поддерживают регулярки? Найденные подстроки могут вернуть? Или есть для этого другие ф-и в стелсе?
Регуляток нет, но можно объединить несколько строк с помощью '|' - например InJournal('word1|word2') функция вернет индекс строки в журнале, или -1 если ничего не найдено. Саму строку можно получить с помощью функции Journal(StringIndex : Integer) : String
Все функции работы с журналом можно посмотреть в вики, но описание/примеры есть не для всех.

Re: Скриптинг в Stealth для чайников.

Posted: 18.11.2011 10:41
by jian
CFA wrote:
jian wrote:Подскажите, функции работы с журналом поддерживают регулярки? Найденные подстроки могут вернуть? Или есть для этого другие ф-и в стелсе?
Регуляток нет, но можно объединить несколько строк с помощью '|' - например InJournal('word1|word2') функция вернет индекс строки в журнале, или -1 если ничего не найдено. Саму строку можно получить с помощью функции Journal(StringIndex : Integer) : String
Все функции работы с журналом можно посмотреть в вики, но описание/примеры есть не для всех.
Т.е. минимальный размер - строка? Или можно разбить на подстроки, пусть без регулярок, просто по пробелам допустим? И получить нужную подстроку (слово) из строки по индексу? Конкретно интересует получение цифр из строки, т.е. потом потребуется преобразование типа, оно возможно будет вообще?

Re: Скриптинг в Stealth для чайников.

Posted: 18.11.2011 11:41
by CFA
Да, конечно это все возможно. Получил строку, разбил на части сам (функции Pos, Copy) или в помощью встроенной функции (StrBreakApart).
Стелс использует в качестве скриптового языка почти полноценный Pascal.

Re: Скриптинг в Stealth для чайников.

Posted: 20.11.2011 20:15
by jian
procedure StrBreakApart(const S,Delimeter: String; Parts: TStrings); // Режет строку S на подстроки, используя разделитель Delimeter. Результат запишет в Parts
Возникает закономерный вопрос - что же такое этот Parts? array of char? Как его объявить чтобы пользоваться результатом работы StrBreakApart? Или как к нему обратиться, если он объявляется автоматически?

Re: Скриптинг в Stealth для чайников.

Posted: 20.11.2011 21:11
by Alex
jian wrote:
procedure StrBreakApart(const S,Delimeter: String; Parts: TStrings); // Режет строку S на подстроки, используя разделитель Delimeter. Результат запишет в Parts
Возникает закономерный вопрос - что же такое этот Parts? array of char? Как его объявить чтобы пользоваться результатом работы StrBreakApart? Или как к нему обратиться, если он объявляется автоматически?
вот так:

Code: Select all

Program StrBreakApartDemo;
var i : Integer;
    SL : TStringList;

Begin
{Before working with TStringList Object - You must CREATE it!}
SL := TStringList.Create;

StrBreakApart('This is a StrBreakApart Demo', ' ', SL);
if SL.Count > 0 then for i := 0 to SL.Count - 1 do
    begin
    AddToSystemJournal(SL.Strings[i]);
    end;

{Note:
When you finish working with TStringList Object - You must FREE it!}
SL.Free;

End.

Re: Скриптинг в Stealth для чайников.

Posted: 20.11.2011 21:47
by jian
Спасибо! Нельзя ли этот пример в вики внести?
Вообще гугление показало, что это что-то из дельфи? На будущее интересуюсь просто, т.к. гуглил вопросы с обяз. упоминанием паскаля.

Re: Скриптинг в Stealth для чайников.

Posted: 21.11.2011 0:08
by Alex
добавил пример в вики) это не из делфи, кто-то из наших ребят добавил такую функцию в стелс =)

Re: Скриптинг в Stealth для чайников.

Posted: 21.11.2011 12:41
by jian
Подскажите еще, как правильней будет работать с журналом с т.з. надёжности срабатывания:

первый вариант:

Code: Select all

ClearJournal;
UOSay('.ph');
wait(300);
StrBreakApart(LastJournalMessage, ' ', SL);
или второй:

Code: Select all

UOSay('.ph');
StrBreakApart(Journal(InJournal('Power Hour')), ' ', SL);

Re: Скриптинг в Stealth для чайников.

Posted: 24.11.2011 11:54
by Miralex
jian wrote: Вообще гугление показало, что это что-то из дельфи?
Источник: http://delphiworld.narod.ru/base/str_sep.html

Alex, угадай кто добавил... :wink:

Re: Скриптинг в Stealth для чайников.

Posted: 24.11.2011 12:16
by Alex
Miralex wrote:
jian wrote: Вообще гугление показало, что это что-то из дельфи?
Источник: http://delphiworld.narod.ru/base/str_sep.html

Alex, угадай кто добавил... :wink:
похоже что ты)) но может и Визитор, не знаю :oops:

jian, вот по этой ссылке есть список функций для работы с журналом(раздел Обзор журнала), надежнее всего InJournalBetweenTimes

Re: Скриптинг в Stealth для чайников.

Posted: 08.09.2016 15:27
by GeeZeR
То ли я перегрелся то ли глюк, короче сохранил простой скрипт в файле Cast.sc

Code: Select all

PROGRAM Cast;
BEGIN
Cast('Cure');
END.
Пытаюсь запустить и мне выдаёт:

13:59:41:576 [UO Evolution (Drac)]: Compiling
13:59:41:626 [UO Evolution (Drac)]: Compiler: [Error] (Cast.sc at 3:12): Cannot apply () to "Cast" ;
Error line is: " Cast('Cure'); "
13:59:41:628 [UO Evolution (Drac)]: Compiling failed
13:59:41:629 [UO Evolution (Drac)]: Script Cast.sc stopped successfuly

Шард: UO Evolution
Клиент: 7.0.13.4

Re: Скриптинг в Stealth для чайников.

Posted: 08.09.2016 15:59
by drabadan
GeeZeR wrote:То ли я перегрелся то ли глюк, короче сохранил простой скрипт в файле Cast.sc

Code: Select all

PROGRAM Cast;
BEGIN
Cast('Cure');
END.
Пытаюсь запустить и мне выдаёт:

13:59:41:576 [UO Evolution (Drac)]: Compiling
13:59:41:626 [UO Evolution (Drac)]: Compiler: [Error] (Cast.sc at 3:12): Cannot apply () to "Cast" ;
Error line is: " Cast('Cure'); "
13:59:41:628 [UO Evolution (Drac)]: Compiling failed
13:59:41:629 [UO Evolution (Drac)]: Script Cast.sc stopped successfuly

Шард: UO Evolution
Клиент: 7.0.13.4
в редакторе в каком сохранял, мб чота не то с кодировочками?

Re: Скриптинг в Stealth для чайников.

Posted: 08.09.2016 16:26
by GeeZeR
В родном вот только что перенабрал и в новый файл сохранил - та же хрень, не нравятся ему скобки... Стелс 7.6.2.
Причём UseSkill(); - нормально всё, а Cast(); не пашет