Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

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

тут можно задать вопрос по скриптингу
Scripts Writer
Novice
Novice
Posts: 130
Joined: 06.05.2008 18:03

Re: Re:

Post by Scripts Writer »

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

П.С. Я тоже недавно перечитывал свои уроки, которые писал на форуме Inject'a примерно в твоём же возрасте. Улыбался. 2006 год, 16 лет, ну да.
Проще научить человека ловить рыбу, чем постоянно ею его кормить. (с) Destruction
jian
Neophyte
Neophyte
Posts: 14
Joined: 18.11.2011 7:08

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

Post by jian »

Подскажите, функции работы с журналом поддерживают регулярки? Найденные подстроки могут вернуть? Или есть для этого другие ф-и в стелсе?
CFA
Developer
Developer
Posts: 492
Joined: 20.04.2006 6:03
Contact:

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

Post by CFA »

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

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

Post by jian »

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

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

Post by CFA »

Да, конечно это все возможно. Получил строку, разбил на части сам (функции Pos, Copy) или в помощью встроенной функции (StrBreakApart).
Стелс использует в качестве скриптового языка почти полноценный Pascal.
jian
Neophyte
Neophyte
Posts: 14
Joined: 18.11.2011 7:08

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

Post by jian »

procedure StrBreakApart(const S,Delimeter: String; Parts: TStrings); // Режет строку S на подстроки, используя разделитель Delimeter. Результат запишет в Parts
Возникает закономерный вопрос - что же такое этот Parts? array of char? Как его объявить чтобы пользоваться результатом работы StrBreakApart? Или как к нему обратиться, если он объявляется автоматически?
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

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

Post 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.
Новый стелс лежит тут. Стелс это произведение искусства! :)
jian
Neophyte
Neophyte
Posts: 14
Joined: 18.11.2011 7:08

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

Post by jian »

Спасибо! Нельзя ли этот пример в вики внести?
Вообще гугление показало, что это что-то из дельфи? На будущее интересуюсь просто, т.к. гуглил вопросы с обяз. упоминанием паскаля.
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

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

Post by Alex »

добавил пример в вики) это не из делфи, кто-то из наших ребят добавил такую функцию в стелс =)
Новый стелс лежит тут. Стелс это произведение искусства! :)
jian
Neophyte
Neophyte
Posts: 14
Joined: 18.11.2011 7:08

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

Post by jian »

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

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

Code: Select all

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

Code: Select all

UOSay('.ph');
StrBreakApart(Journal(InJournal('Power Hour')), ' ', SL);
Miralex
Developer
Developer
Posts: 656
Joined: 11.03.2005 19:12
Contact:

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

Post by Miralex »

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

Alex, угадай кто добавил... :wink:
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

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

Post by Alex »

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

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

jian, вот по этой ссылке есть список функций для работы с журналом(раздел Обзор журнала), надежнее всего InJournalBetweenTimes
Новый стелс лежит тут. Стелс это произведение искусства! :)
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

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

Post 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
Stealth 8.10.2 | Клиент: 7.0.13.4
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

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

Post 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
в редакторе в каком сохранял, мб чота не то с кодировочками?
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

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

Post by GeeZeR »

В родном вот только что перенабрал и в новый файл сохранил - та же хрень, не нравятся ему скобки... Стелс 7.6.2.
Причём UseSkill(); - нормально всё, а Cast(); не пашет
Stealth 8.10.2 | Клиент: 7.0.13.4
Post Reply