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