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

Вопросы начинающего скриптера

тут можно задать вопрос по скриптингу
Post Reply
Sumrak
Posts: 5
Joined: 02.11.2012 14:33

Вопросы начинающего скриптера

Post by Sumrak »

Всем привет!
Вот все-таки решил начать учиться скриптить. Проблема только в том, что программировал я только в школе на базике, и питоне в свободное время, но все уже забыл. То есть вы уже видете мой уровень знаний... В связи с этим у меня появляется очень много вопросов, причем в основном- нубских. Я как и все начинающие программисты собираюсь написать ПОЛНОЦЕННЫЙ ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ, посему прошу не грубить а мягко спустить меня на землю если я несу бред.=)

1. Все ли функции поддерживаются питоном? И если разница какой версии этот самый питон?
2. А может лучше паскаль?
3. Что есть Stealth API? Ну я так поразмыслил, что, допустим как в простых языках- Питон и паскаль это грамматика а API это словарный запас. Ну или грамматика и энциклопедические термины/понятия. Я прав?

4. Есть ли где-то список этого АПИ чтоб скачать его одним файлом?
5. Может что-то ещё надо для написания скриптов, какие-то другие термины, понятия?
6. Есть ли возможность протестировать скрипты без выхода в интернет, или например эмулятор сервера для стелса чтобы работать в оффлайн?

7. Собственно можно ли написать ПОЛНОЦЕННЫЙ ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ?
8. Можно ли написать рандомный выбор процедур? Например задать сначала три билда с определенным набором скиллов и способом, и последовательностью прокачки. А потом пустить скрипт рандомного выбора пути дальнейшей жизни... или не рандомного например если пошел дождь- то качаем мага, а если снег- то воина...а после самого выбора, другие варианты отбросить навсегда как ненужные. (это чисто для примера).
Потом если что буду доспрашивать если что непонятно. Да и собственно реально ли писать скрипты без выхода в интернет?
Я чайник со свистком!
admir
Novice
Novice
Posts: 97
Joined: 28.10.2008 20:44

Re: Вопросы начинающего скриптера

Post by admir »

В оффлайн режиме тестить можно.
Для этого скачай сервер, например http://sphereserver.com/
Команды по созданию чаров на своем сервере там же найдешь.
http://eof.nm.ru/Sphere_Server/listcommand.html

После чего (настроив фаерволы на компе) ты можешь обычным клиентом, как и стелсом подключится к себе по 127.0.0.1

Далее стелс использует паскаль скрипт.
Синтаксис простой как в паскале.
Все возможные функции для работы с уо, описание к ним можно найти тут.
http://stealth.od.ua/Doc:RU/Manual
Также там всякие фишечки типа подключение ГУИ, работы с интернетом и другое.
Все достаточно понятно описано.
Есть много примеров + в разделе скриптс на форуме много чужих примеров, работ.

В стелсе есть хорошая умная ходилка, одна из загвоздок для большинства других программ типа инжекта изи уо и тд.
Есть еще Events, события которые помогут тебе с всяческими нештатными ситуациями типа твоего снежка, дождика (вроде есть в стелсе обработчик пакета на погоду).
Интеллект написать можно и покрайней мере скажу точно что если вдруг твоему интеллекту потребуется знать какой-то редко используемый пакет в уо, то есть Vizitor, который и по сей день трудится для нас всех фанатов уо, и скорей всего он сделает функцию на этот пакет)
Дерзай.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Вопросы начинающего скриптера

Post by Vizit0r »

дополню предыдущего оратора.
сейчас в стелсе (4.4 версии) только питон является полноценным языком, ПС весьма убог. В 5й версии (которая будет через недель пару, может раньше) паскальскрипт уже абсолютно полноценный язык. На чем писать - личное дело каждого, кому что ближе. Лично я терпеть не могу питон, но это не мешает ему жить в стелсе вполне комфортно :)
Sumrak wrote: Ну я так поразмыслил, что, допустим как в простых языках- Питон и паскаль это грамматика а API это словарный запас. Ну или грамматика и энциклопедические термины/понятия. Я прав?
нет. API в любом языке (и не только языке, взять тот же Windows API) это набор методов (функций, процедур) которые доступны пользователям.
В стелсе апи - это 400 функций(ну и процедур) - вчера как раз для своих нужд файл списка формировал - прикрепил его к посту.
Sumrak wrote:5. Может что-то ещё надо для написания скриптов, какие-то другие термины, понятия?
да, минимальные знания языка, в котором ты собираешься скриптовать :)
Sumrak wrote:8. Можно ли написать рандомный выбор процедур? Например задать сначала три билда с определенным набором скиллов и способом, и последовательностью прокачки. А потом пустить скрипт рандомного выбора пути дальнейшей жизни... или не рандомного например если пошел дождь- то качаем мага, а если снег- то воина...а после самого выбора, другие варианты отбросить навсегда как ненужные. (это чисто для примера).
можно. всё можно. но нужно ли? скриптов (как и программ) без багов не бывает, и чем больше сложность кода - тем их больше. В твоем случае код практически нереально будет отладить, и соответственно рано или поздно твой ""ИИ" сдохнет с ошибкой. Впрочем, дело хозяйское.
Sumrak wrote:1. Все ли функции поддерживаются питоном? И если разница какой версии этот самый питон?
да (но трогать threads не стоит). нет.
Sumrak wrote:2. А может лучше паскаль?
может.

по поводу эмуляторов - еще готовый к употреблению сервер лежит на runuo.com. сферу незнаю, не загружал, возможно там тоже готовое к использованию.
Attachments
rtti.txt
(17.79 KiB) Downloaded 477 times
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
admir
Novice
Novice
Posts: 97
Joined: 28.10.2008 20:44

Re: Вопросы начинающего скриптера

Post by admir »

Готовые шарды есть
http://dl.uokit.com/cat8.html
Sumrak
Posts: 5
Joined: 02.11.2012 14:33

Re: Вопросы начинающего скриптера

Post by Sumrak »

admir, Visit0r, спасибо!
ещё вопрос, Sphere или RunUO... Стелсу параллельно?
Я чайник со свистком!
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Вопросы начинающего скриптера

Post by Vizit0r »

еще нехватало чтобы стелс зависел от эмулятора сервера :)
стелс и на официале себя отлично чувствует.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Sumrak
Posts: 5
Joined: 02.11.2012 14:33

Re: Вопросы начинающего скриптера

Post by Sumrak »

RunUO.com накрылся... А на сфере я не играл никогда, для меня это чуждо, но для скриптинга думаю норм.
Я чайник со свистком!
admir
Novice
Novice
Posts: 97
Joined: 28.10.2008 20:44

Re: Вопросы начинающего скриптера

Post by admir »

Не вижу препятствий на каком эмуляторе работает сервер.
M@xim
Neophyte
Neophyte
Posts: 38
Joined: 05.06.2013 3:40

Re: Вопросы начинающего скриптера

Post by M@xim »

Code: Select all

program Test;
begin
repeat;
uosay('12345');
wait(5000);
until Dead;
end.
Для чего нужна ; ? Так

Code: Select all

program Test;
begin
repeat
uosay('12345')
wait(5000)
until Dead
end.
тоже работает, для чего ставить ;
Так же не нашел в разделе Справочник, пункт Сообщения, пришлось искать на форуме как отправить сообщение в клиент(uosay).
M@xim
Neophyte
Neophyte
Posts: 38
Joined: 05.06.2013 3:40

Re: Вопросы начинающего скриптера

Post by M@xim »

Какой командой остановить текущий скрипт из него же если нужно, в инжекте это terminate и return, а в стелсе?
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Вопросы начинающего скриптера

Post by Vizit0r »

если ты в основном блоке программы, то Exit;
если зашел в какую-то процедуру, то выходишь из нее, а потом из скрипта.

в 6м стелсе вроде можно было с любого места выходить через Halt
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
M@xim
Neophyte
Neophyte
Posts: 38
Joined: 05.06.2013 3:40

Re: Вопросы начинающего скриптера

Post by M@xim »

Первый скрипт сваял, все работает за исключением одного момента, есть место где скрипт ожидает сообщение в журнале, в итоге в этом месте срабатывает на все сообщения как нужно, а на одно не реагирует, ждет до установленного таймера и идет дальше

Code: Select all

WaitJournalLine(now, allmsg, 4500)
, как будто такого текста нет. Текст нужных сообщений копировался из журнала стелса - ошибок нет. Сообщение на которое не реагирует - lack empty, После того как прошел таймер, идет часть где так же проверяется это сообщение

Code: Select all

if injournalbetweentimes('lack empty', starttime, now) > 0 then
и в этом месте срабатывает как надо. Так же подскажите, может где-то есть программа которая расставляет отступы в скрипте типа http://nmy.id.lv/codesweeper.htm

Code: Select all

program Alchemy;
const allmsg = 'potions in|potion in|failed|lack empty|lack reagents|world save';
var starttime : tdatetime;
begin
repeat
starttime := now
waitgump('802')
usetype($0E9B, $0000)
wait(150)
waitgump('13')
WaitJournalLine(now, allmsg, 4500)
if injournalbetweentimes('world save', starttime, now) > 0 then
begin
WaitJournalLine(now, allmsg, 25000)
end;
if injournalbetweentimes('lack empty', starttime, now) > 0 then
begin
waittargettype($0F0C)
usetype($1940, -1)
wait(500)
end;
if injournalbetweentimes('lack reagents', starttime, now) > 0 then
begin
if findtype($0F85, $400332233) > 0 then
begin
moveitem(finditem, 500, backpack, 0, 0, 0)
wait(500)
end
else
begin
playwav('Alarm.wav')
exit
end;
end;
until dead
end.
Post Reply