Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (1): [1]   

> Описание: Визуальный Редактор диалогов
grBIN
Отправлено: 11 Марта, 2018 - 04:13:14
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 41
Дата рег-ции: Нояб. 2017  
Откуда: Псков
Репутация: 2




Вообщем вот диалог, после виз.редактора. Лимиты не превысил.
Файл виз.редактора
Ни до доработки, ни после работать не хочет, вернее такое ощущение что просто луп висит, а диалог не отображается.
Сам код, после небольшой доработки, для читабельности (Отобразить)
 
 Top
Zireael
Отправлено: 11 Марта, 2018 - 10:00:38
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
createdialog(3
showdialog(3

Максимум 3 диалога, т. е. номера 0, 1, 2.
 
 Top
grBIN
Отправлено: 11 Марта, 2018 - 12:02:52
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 41
Дата рег-ции: Нояб. 2017  
Откуда: Псков
Репутация: 2




 Zireael пишет:
Максимум 3 диалога, т. е. номера 0, 1, 2.


Я думал, можно вызывать 3 диалога одновременно а не всего 3 диалога. Я суммарно хотел использовать 5 по очереди. То есть главное окно, 3 различных опции которые используют свой скрипт и еще одно во время скрипта.
До вашего сообщения хотел просто инклудить их в начале скрипта (закомментив showdialog)
А потом просто вызывать их там где нужно, с помощью showdialog, и закрыть с hidedialog.

Получается сейчас мне нужно раскидать 3 диалога по разным файлам типа dialog1_1,
dialog1_2, dialog1_3. убрать из этих файлов объявление переменных.
Затем объявить переменные в начале основного скрипта, а вызывать диалоги уже инклудами этих файлов? и закрывать их с помощью destroydialog().

Звучит как то хреново, потому что вместо того что бы 1 раз в начале скрипта создать диалоги, а потом просто вызывать их по мере необходимости. нужно фактически каждый раз создавать их заново и тащить весь этот код каждый раз при вызове.
#include dialog1_0 (Отобразить)

Есть еще какие то выходы из ситуации, или я верно думаю?
P.S. В описании диалоговых окон нашел такую строчку
Спойлер (Отобразить)

(Добавление)
Сейчас еще раз прошелся по коду, обратил внимание на то, что createdialog использует указатели на массивы
CODE:
createdialog(3, BUTTON, #pos_size_button3[0][0], #text_button3[0], #flag_button3[0] |
EDIT, #pos_size_edit3[0][0], #text_edit3[0] |
STATIC, #pos_size_static3[0][0], #text_static3[0]);

А это значит что если у меня, допустим 2 диалога с номерами 1, 2 и в:
1 будет 10 кнопок
2 будет 5 кнопок
и я вызову их по очереди то:
объявляю переменные;
#include dialog1_1 сработает как надо.
destroydialog(1)
#include dialog1_2 заменит значения для 5 первых кнопок, для остальных оставит то же,
а createdialog, раз использует указатель - сделает интерфейс со всеми кнопками 1-5 и 6-10
значит нужно как то: либо изменять массив, либо указать кол-во кнопок createdialog.
P.S. А если старые 5 кнопок будут за пределами этого диалога, возможно вызовет ошибку.
P.S.S. Даже если допустить, что destroydialog удаляет старые массивы, то мне тупо компилятор не даст закинуть два раза в скрипте #include dialog1_1 и #include dialog1_2 с объявлением переменных, т.к. увидит что я объявил их 2 раза

В общем я в замешательстве...

(Отредактировано автором: 11 Марта, 2018 - 12:07:44)

 
 Top
Kibor
Отправлено: 11 Марта, 2018 - 13:10:44
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8218
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Можно 3 Одновременно
Для использования 5 или 50 диалогов, никто не мешает их создавать по мере необходимости. На лету выполнения программы и удалять когда они не нужны.

А одновременно можно не более 3.
(Добавление)
Вот 2 диалога одновременно.
При их создание надо изменить лишь переменную в свойствах диалога (0 1 2)
И будут разные диалоги которые можно запускать одновременно и которые будут иметь разные переменные.

CODE:
int pos_size_button0[1][4];
string text_button0[1];
int flag_button0[1];

pos_size_button0[0][0]=103; pos_size_button0[0][1]=126; pos_size_button0[0][2]=100; pos_size_button0[0][3]=20;
text_button0[0]="Кнопка 0 диалога";

//////////

int pos_size_edit0[1][4];
string text_edit0[1];

pos_size_edit0[0][0]=49; pos_size_edit0[0][1]=72; pos_size_edit0[0][2]=100; pos_size_edit0[0][3]=20;
text_edit0[0]="Поле 0 диалога";

//////////

int pos_size_static0[1][4];
string text_static0[1];

pos_size_static0[0][0]=23; pos_size_static0[0][1]=22; pos_size_static0[0][2]=100; pos_size_static0[0][3]=20;
text_static0[0]="Текст 0 диалога";

//////////

createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0] |
EDIT, #pos_size_edit0[0][0], #text_edit0[0] |
STATIC, #pos_size_static0[0][0], #text_static0[0]);
//////////

showdialog(0, "Диалог 0", 558, 234, 250, 206, 1, 1);
//////////










int pos_size_button1[1][4];
string text_button1[1];
int flag_button1[1];

pos_size_button1[0][0]=103; pos_size_button1[0][1]=126; pos_size_button1[0][2]=100; pos_size_button1[0][3]=20;
text_button1[0]="Кнопка 1 диалога";

//////////

int pos_size_edit1[1][4];
string text_edit1[1];

pos_size_edit1[0][0]=49; pos_size_edit1[0][1]=72; pos_size_edit1[0][2]=100; pos_size_edit1[0][3]=20;
text_edit1[0]="Поле 1 диалога";

//////////

int pos_size_static1[1][4];
string text_static1[1];

pos_size_static1[0][0]=23; pos_size_static1[0][1]=22; pos_size_static1[0][2]=100; pos_size_static1[0][3]=20;
text_static1[0]="Текст 1 диалога";

//////////

createdialog(1, BUTTON, #pos_size_button1[0][0], #text_button1[0], #flag_button1[0] |
EDIT, #pos_size_edit1[0][0], #text_edit1[0] |
STATIC, #pos_size_static1[0][0], #text_static1[0]);
//////////

showdialog(1, "Диалог 1", 758, 234, 250, 206, 1, 1);
//////////

loop() sleep(10);//Убрать после теста

(Добавление)
Создание 5 диалогов с одновременным вызовом трех.
CODE:
//Создаем перемпенные на 5 диалогов
int кнопка0[1][4];
string текст_кнопка0[1];
int флаг_кнопка0[1];

кнопка0[0][0]=37; кнопка0[0][1]=48; кнопка0[0][2]=100; кнопка0[0][3]=20;
текст_кнопка0[0]="Кнопка 0";

////////////////
int кнопка1[1][4];
string текст_кнопка1[1];
int флаг_кнопка1[1];

кнопка1[0][0]=37; кнопка1[0][1]=48; кнопка1[0][2]=100; кнопка1[0][3]=20;
текст_кнопка1[0]="Кнопка 1";


////////////////
int кнопка2[1][4];
string текст_кнопка2[1];
int флаг_кнопка2[1];

кнопка2[0][0]=37; кнопка2[0][1]=48; кнопка2[0][2]=100; кнопка2[0][3]=20;
текст_кнопка2[0]="Кнопка 2";

////////////////
int кнопка3[1][4];
string текст_кнопка3[1];
int флаг_кнопка3[1];

кнопка3[0][0]=37; кнопка3[0][1]=48; кнопка3[0][2]=100; кнопка3[0][3]=20;
текст_кнопка3[0]="Кнопка 3";

////////////////
int кнопка4[1][4];
string текст_кнопка4[1];
int флаг_кнопка4[1];

кнопка4[0][0]=37; кнопка4[0][1]=48; кнопка4[0][2]=100; кнопка4[0][3]=20;
текст_кнопка4[0]="Кнопка 4";



//////////
//Вызываем одновременно 0 3 и 4
createdialog(0, BUTTON, #кнопка0[0][0], #текст_кнопка0[0], #флаг_кнопка0[0]);
showdialog(0, "Диалог0", 158, 234, 176, 158, 1, 1);
//////////
createdialog(1, BUTTON, #кнопка3[0][0], #текст_кнопка3[0], #флаг_кнопка3[0]);
showdialog(1, "Диалог3", 358, 234, 176, 158, 1, 1);
//////////
createdialog(2, BUTTON, #кнопка4[0][0], #текст_кнопка4[0], #флаг_кнопка4[0]);
showdialog(2, "Диалог4", 558, 234, 176, 158, 1, 1);



loop()
{
if (флаг_кнопка3[0]>0)//при нажатие на кнопку среденего диалога он уничтожится и вызовится диалог четвертый
{
флаг_кнопка3[0]=0;
destroydialog(1);
createdialog(1, BUTTON, #кнопка2[0][0], #текст_кнопка2[0], #флаг_кнопка2[0]);
showdialog(1, "Диалог2", 358, 234, 176, 158, 1, 1);
}
sleep(10);//Убрать после теста
}
 
 Top
Zireael
Отправлено: 11 Марта, 2018 - 14:02:51
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




Ещё вариант:
code (Отобразить)
 
 Top
grBIN
Отправлено: 11 Марта, 2018 - 14:08:03
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 41
Дата рег-ции: Нояб. 2017  
Откуда: Псков
Репутация: 2




Спойлер (Отобразить)

Все понял, я просто все усложнил =)
В #include оставляем только объявление переменных и там без разницы какой номер диалога.
а когда вызываем указываем номер от 0 до 2 и указываем необходимый номер переменной.
Спасибо =)Надеюсь не я один такой дурак и кому то еще это пригодится.
 
 Top
Kibor
Отправлено: 11 Марта, 2018 - 14:15:12
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8218
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Переменные вообще могут быть без номеров.
Это просто визуальный редактор дописывает им номера для видимости.
Важно только на какие переменные мы даем указатели в
createdialog
showdialog
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 2 (гостей: 2, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by