Page 1 of 1
Экзекуция (execution) скрипта из скрипта
Posted: 23.04.2019 16:06
by kopiluvak
- Список выполняемых функций в стелсе
- Снимок экрана 2019-04-23 в 15.11.19.png (11.71 KiB) Viewed 40640 times
^^ Как сделать это с помощью скрипта? ^^
Чтобы при запуске одного скрипта открывался/загружался другой и выполнялся?
Как все знают в инжекте это реализуемо так:
Code: Select all
if not uo.funRunning('test2') then
uo.exec('test2')
uo.colorPrint(0x0446, 'Test2 запущен!')
end if
if uo.funRunning('test3') then
uo.exec('terminate test3')
uo.colorPrint(0x0446, 'Test3 остановлен!')
end if
Re: Экзекуция (execution) скрипта из скрипта
Posted: 23.04.2019 16:09
by drabadan
А в чем необходимость, почему такая задача стоит?
Re: Экзекуция (execution) скрипта из скрипта
Posted: 23.04.2019 16:17
by kopiluvak
drabadan wrote:А в чем необходимость, почему такая задача стоит?
Процедурный подход такой какой сейчас есть в Stealth подходит для простых задач. А мне нужны параллельно выполняющиеся процессы для более сложных задач. Сейчас это можно сделать "расплодив" кучу скриптов в разных файлах, поочерёдно загрузить и запустить их. Это работает все ок, но мягко говоря не очень удобно. А так был бы один скрипт autoload.sc, где прописаны файлы, которые нужно запустить и было бы гуд!
P.S. ответил на вопрос, постарался раскрыть тему. Очень актуально! Услышал бы разработчик
Re: Экзекуция (execution) скрипта из скрипта
Posted: 23.04.2019 16:28
by drabadan
"Процедурный подход такой какой сейчас есть в Stealth подходит для простых задач. А мне нужны параллельно выполняющиеся процессы для более сложных задач." - тут можно долго спорить. Есть например масса ивентов, которые позволяют решать задачи любой сложности.
Может есть конкретный пример по которому можно понять, что без 2х скриптов паралельно совсем никак?
Re: Экзекуция (execution) скрипта из скрипта
Posted: 23.04.2019 18:13
by DDoS
Никак
Re: Экзекуция (execution) скрипта из скрипта
Posted: 23.04.2019 20:14
by kopiluvak
drabadan wrote:"Процедурный подход такой какой сейчас есть в Stealth подходит для простых задач. А мне нужны параллельно выполняющиеся процессы для более сложных задач." - тут можно долго спорить. Есть например масса ивентов, которые позволяют решать задачи любой сложности.
Может есть конкретный пример по которому можно понять, что без 2х скриптов паралельно совсем никак?
Код ниже не рабочий – это просто набросок, пример того, что такое плохо.
Code: Select all
Program myProgram;
var
idLastMob, idLastCorpse : Cardinal;
function findMob() : Cardinal;
var
mob : Cardinal;
begin
mob := $0D00F000;
Result := mob;
end;
function attackMob(idMob : Cardinal) : Boolean;
var
begin
if (WarTargetID <> idMob) then
attack(idMob);
while not isDead(idMob) and not dead do
begin
wait(100);
end;
// если сам умер, то атака оказалась безуспешна
if dead then
begin
Result := false;
end
else
begin
Result := true;
end;
end;
function findCorpse() : Cardinal;
var
corpse : Cardinal;
begin
corpse := $0D00FC00;
Result := corpse;
end;
function lootCorpse(idCorpse : Cardinal) : Boolean;
begin
// здесь код. Ищем нужные айтемы и перекладываем их себе
end;
function checkPK() : Boolean;
begin
// проверка не напал ли ПК
end;
begin
while true do
begin
idLastMob := findMob();
if idLastMob > 0 then
begin
addToSystemJournal('Моб найден, атакуем его');
attackMob(idLastMob);
idLastCorpse := findCorpse();
if idLastCorpse > 0 then
begin
addToSystemJournal('Труп найден, лутаем его');
lootCorpse(idLastCorpse);
checkPK(); // получается, что чтобы проверить не атакует ли кто
// нужно дождаться пока выполнение кода дойдет до
// этого момента. Либо тыкать эту проверку во все
// места кода. В этом случае чар сдохнет уже, а код
// будет пытаться выполниться. Или превратить код в
// кашу и сломать голову, предусматривая куда еще
// нужно поставить проверку на ПК
end;
end;
wait(500);
end;
end.
А при параллельном выполнении задач нам не нужно дожидаться выполнения всей простыни кода. Скрипты при параллельном выполнении держат связь между собой через
Code: Select all
getGlobal('char', name : string) : string
setGlobal('char', name : string, value : string)
Re: Экзекуция (execution) скрипта из скрипта
Posted: 23.04.2019 20:22
by drabadan
http://stealth.od.ua/Doc:RU/Manual/Reference/Events
evDrawObject : [ID] - отрисовка чара (не обязательно нашего!)
просто подпишись на событие, в коллбеке обнови флаг основного лупа и вуаля. Ничего никуда не нужно тыкать.
"пример того, что такое плохо" - что ето значит, не только лишь все из нас тут топ1 мира программисты, мало кто, на самом деле. Любая реализация любой задачи имеет место на существование, если код удовлятворяет и отвечает на поставленную задачу - этот код нормальный.
Re: Экзекуция (execution) скрипта из скрипта
Posted: 23.04.2019 23:22
by kopiluvak
drabadan wrote:"пример того, что такое плохо" - что ето значит, не только лишь все из нас тут топ1 мира программисты, мало кто, на самом деле.
Нет, это не про того товарища о котором вы предположили. Это всего лишь цитата В. В. Маяковского.
Я видел это в гайде и как-то сразу не воспринял всерьез. Но если вы утверждаете, что в это стоит вникнуть я сейчас постараюсь понять, как это работает. Там не совсем хорошо описано, но как говорится методом тыка потестирую. Благодарю!
Если по первоначальной теме, то судя по немногословному ответу DDos вопрос снят
Re: Экзекуция (execution) скрипта из скрипта
Posted: 24.04.2019 8:45
by Vizit0r
Ивенты перекрывают большую часть потребностей в этом плане.
Только прочитай в разделе faq инфу по ивентам
И да, я вполне осознанно не даю доступ юзерам к управлению скриптами, чтобы народ не плодил кучи скриптов с вызовами одного из другого.
Re: Экзекуция (execution) скрипта из скрипта
Posted: 24.04.2019 15:56
by GeeZeR
Да пусть плодят, тебе что жалко? )) есть же у нас goto...
Re: Экзекуция (execution) скрипта из скрипта
Posted: 25.04.2019 8:17
by Vizit0r
Я заранее перекрываю просто вагон потенциальных багов, утечек и всего такого.
А goto вполне себе нормальная вещь, если использовать с умом.