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

Взаимосвязи скриптов

тут можно задать вопрос по скриптингу
Post Reply
Sed
Neophyte
Neophyte
Posts: 24
Joined: 12.11.2016 15:53

Взаимосвязи скриптов

Post by Sed »

Есть несколько скриптов, как можно организовать связь их вместе, т.е. что нужно:
1. передача параметров из одного скрипта другому
2. запуск/остановка/пауза скрипта из другого скрипта

к примеру: есть пара/тройка лесорубов, рубят лес, и есть чар - охранник, в случае нападения на одного из лесорубов лесоруб посылает "охране" крик о помощи и свои координаты, скрипт ламбера ставится на паузу, и запускается скрипт "выжить пока не подойдет помощь", в свою очередь охрана прилетает на место "вызова" и сражается, умирает/воскресает и тд. до тех пор пока угроза не будет устранена, затем скидывает лесорубу "инфо" "что место очищено" и лесоруб возвращается на точку и снимает с паузы ламбер, продолжая рубить с места остоновки...

ps понимаю что можно запихать два скрипта или даже 3 в один файл и использовать инклюды и вызвать процедуры, но хотелось бы сделать по человечески, каждому скрипту свой файл и программно запускать/останавливать нужные мне скрипты, а не пихать всё в один файл и потом разбираться каждый раз с несколькими тысячами строк
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Взаимосвязи скриптов

Post by drabadan »

Sed wrote:Есть несколько скриптов, как можно организовать связь их вместе, т.е. что нужно:
1. передача параметров из одного скрипта другому
2. запуск/остановка/пауза скрипта из другого скрипта

к примеру: есть пара/тройка лесорубов, рубят лес, и есть чар - охранник, в случае нападения на одного из лесорубов лесоруб посылает "охране" крик о помощи и свои координаты, скрипт ламбера ставится на паузу, и запускается скрипт "выжить пока не подойдет помощь", в свою очередь охрана прилетает на место "вызова" и сражается, умирает/воскресает и тд. до тех пор пока угроза не будет устранена, затем скидывает лесорубу "инфо" "что место очищено" и лесоруб возвращается на точку и снимает с паузы ламбер, продолжая рубить с места остоновки...

ps понимаю что можно запихать два скрипта или даже 3 в один файл и использовать инклюды и вызвать процедуры, но хотелось бы сделать по человечески, каждому скрипту свой файл и программно запускать/останавливать нужные мне скрипты, а не пихать всё в один файл и потом разбираться каждый раз с несколькими тысячами строк
"программно запускать/останавливать нужные мне скрипты" зачем ето если тебе нужно просто ждать. Передавать параметры из скрипта к скрипту можно через объявление глобальных переменных. Тебе нужно организовать n строковых комманд, как "крик о помощи", "ждать команду", "выживай там, всего тебе хорошего", в скрипте в главном цикле как то обрабатывать типа если получил крик о помощи то лечу помогать, если получил ждать команду то жду команду. Не надо упарыватся в "програмные" остановки если ваша цель просто прождать определенное время...
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Взаимосвязи скриптов

Post by Vizit0r »

Sed wrote: к примеру: ...
все это делается в одном скрипте. И да, именно это и есть по-человечески. Использовать несколько скриптов - это НЕправильно.
Sed wrote: ps понимаю что можно запихать два скрипта или даже 3 в один файл и использовать инклюды и вызвать процедуры,
используешь юниты и все. Инклюды - прошлый век, используемый из-за необходимости. Сейчас такой необходимости давно уже нет.


Но если ты все равно упорствуешь - то даю наводку - http://stealth.od.ua/Doc:RU/Manual/Reference/Events - evSetGlobalVar
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

Re: Взаимосвязи скриптов

Post 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
Stealth 8.10.2 | Клиент: 7.0.13.4
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Взаимосвязи скриптов

Post by nah nah »

:?
Тут на два скрипта (лесорубы и охранник), общение между ними через глобалки. SetGlobal GetGlobal
Post Reply