Page 1 of 1
Взаимосвязи скриптов
Posted: 03.01.2017 9:52
by Sed
Есть несколько скриптов, как можно организовать связь их вместе, т.е. что нужно:
1. передача параметров из одного скрипта другому
2. запуск/остановка/пауза скрипта из другого скрипта
к примеру: есть пара/тройка лесорубов, рубят лес, и есть чар - охранник, в случае нападения на одного из лесорубов лесоруб посылает "охране" крик о помощи и свои координаты, скрипт ламбера ставится на паузу, и запускается скрипт "выжить пока не подойдет помощь", в свою очередь охрана прилетает на место "вызова" и сражается, умирает/воскресает и тд. до тех пор пока угроза не будет устранена, затем скидывает лесорубу "инфо" "что место очищено" и лесоруб возвращается на точку и снимает с паузы ламбер, продолжая рубить с места остоновки...
ps понимаю что можно запихать два скрипта или даже 3 в один файл и использовать инклюды и вызвать процедуры, но хотелось бы сделать по человечески, каждому скрипту свой файл и программно запускать/останавливать нужные мне скрипты, а не пихать всё в один файл и потом разбираться каждый раз с несколькими тысячами строк
Re: Взаимосвязи скриптов
Posted: 03.01.2017 10:32
by drabadan
Sed wrote:Есть несколько скриптов, как можно организовать связь их вместе, т.е. что нужно:
1. передача параметров из одного скрипта другому
2. запуск/остановка/пауза скрипта из другого скрипта
к примеру: есть пара/тройка лесорубов, рубят лес, и есть чар - охранник, в случае нападения на одного из лесорубов лесоруб посылает "охране" крик о помощи и свои координаты, скрипт ламбера ставится на паузу, и запускается скрипт "выжить пока не подойдет помощь", в свою очередь охрана прилетает на место "вызова" и сражается, умирает/воскресает и тд. до тех пор пока угроза не будет устранена, затем скидывает лесорубу "инфо" "что место очищено" и лесоруб возвращается на точку и снимает с паузы ламбер, продолжая рубить с места остоновки...
ps понимаю что можно запихать два скрипта или даже 3 в один файл и использовать инклюды и вызвать процедуры, но хотелось бы сделать по человечески, каждому скрипту свой файл и программно запускать/останавливать нужные мне скрипты, а не пихать всё в один файл и потом разбираться каждый раз с несколькими тысячами строк
"программно запускать/останавливать нужные мне скрипты" зачем ето если тебе нужно просто ждать. Передавать параметры из скрипта к скрипту можно через объявление глобальных переменных. Тебе нужно организовать n строковых комманд, как "крик о помощи", "ждать команду", "выживай там, всего тебе хорошего", в скрипте в главном цикле как то обрабатывать типа если получил крик о помощи то лечу помогать, если получил ждать команду то жду команду. Не надо упарыватся в "програмные" остановки если ваша цель просто прождать определенное время...
Re: Взаимосвязи скриптов
Posted: 03.01.2017 11:23
by Vizit0r
Sed wrote:
к примеру: ...
все это делается в одном скрипте. И да, именно это и есть по-человечески. Использовать несколько скриптов - это НЕправильно.
Sed wrote:
ps понимаю что можно запихать два скрипта или даже 3 в один файл и использовать инклюды и вызвать процедуры,
используешь юниты и все. Инклюды - прошлый век, используемый из-за необходимости. Сейчас такой необходимости давно уже нет.
Но если ты все равно упорствуешь - то даю наводку -
http://stealth.od.ua/Doc:RU/Manual/Reference/Events - evSetGlobalVar
Re: Взаимосвязи скриптов
Posted: 03.01.2017 14:33
by GeeZeR
Даа, SetEventProc судя по описанию мощная штука, а "юниты" это что такое?
Короче я бы разделил такого бота на 2 файла, так легче читать код:
Файл №1 это файл со всеми процедурами, одна процедура это одна функция бота (функция ходьбы, рубки, телепорта и т.д.).
Файл №2 это основной цикл программы с логикой использования функций:
Code: Select all
PROGRAM LumberjackBot;
USES <имя файла с процедурами>;
BEGIN
// накидать SetEventProc() чтоб лишней логики не писать.
Repeat // Основной цикл программы
Repeat
// тут организовываешь набор функций и процедур для рубки, ходьбы и т.д.
// добавляешь условие c Break из этого цикла в случае опасности
Until false;
Repeat
// набор функций и процедур для твоего гвард-бота
// условия выхода как закончит
Until false;
Until false;
END.
Т.е. один цикл это рубка, а второй это твой гвард бот, как только рубщик заметил опасность он выходит из своего цикла и начинается цикл гвард-бота. Когда гвард закончил снова начинается цикл рубки. Пример как делать инклюд:
http://stealth.od.ua/forum/viewtopic.ph ... ION#p18055
Re: Взаимосвязи скриптов
Posted: 03.01.2017 16:35
by nah nah
Тут на два скрипта (лесорубы и охранник), общение между ними через глобалки.
SetGlobal GetGlobal