Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Немодальный диалог и много строк в комбо

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

1. Adomb - 24 Августа, 2015 - 04:41:58 - перейти к сообщению
Kibor, здравствуй.
Есть, допустим, 20 комбо, в каждом комбо по 300 одинаковых строк.
Создал 300 переменных типа string, каждой присвоил свой текст,
потом соотнёс text_combo0 с нужной переменной. Получилось -
text_combo0[0][0]=s0; text_combo0[0][1]=s1; text_combo0[0][2]=s2; и т.д.
-//-
-//-
text_combo0[19][0]=s0; text_combo0[19][1]=s1; text_combo0[19][2]=s2; и т.д.
Всего в коде диалога вышло почти 2000 строк.
Запускаю скрипт далога, кибор пытается минут пять запустить скрипт и вылетает.
Вопрос, 20 комбо по 300 строк это чересчур? Или я неправильно строю код?
2. Kibor - 24 Августа, 2015 - 05:47:23 - перейти к сообщению
можно по 30 разных контролов. нормально

бот для даркорбит имеет 5600 строк и живет..

для начала надо зайти в настройки трансляции и установить 500 выделения памяти.
потом если не поможет код надо..
(Добавление)
 Adomb пишет:
Всего в коде диалога вышло почти 2000 строк.

хм.. может лучше применить текстовый файл?
ну я так предположил.. не знаю зачем это
3. Adomb - 24 Августа, 2015 - 22:33:26 - перейти к сообщению
Вобщем запустить диалог больше 8 комбо с 300 строками в каждом у меня не получилось. ) Присваивал значения переменным комботекста через чтение файла.
По наивности начал так -
freadline(text_combo0[0][0], text_combo0[1][0], итд); Улыбка
Оказалось, freadline только одной переменной одновременно присвоить значение может.
Ну да ладно.
И вот ещё вопрос.
код (Отобразить)

Выше двойки - не запускается. То есть в скрипте не может быть больше трёх диалогов? Просто тему прочитал, там написано, что одновременно не может быть больше трёх.
4. Kibor - 25 Августа, 2015 - 03:24:11 - перейти к сообщению
 Adomb пишет:
Просто тему прочитал, там написано, что одновременно не может быть больше трёх.

одновременно не может

может быть сколько угодно разных но не одновременно.

 Цитата:
int pos_size_button0[1][4];
string text_button0[1];
int flag_button0[1];

pos_size_button0[0][0]=10; pos_size_button0[0][1]=120; pos_size_button0[0][2]=100; pos_size_button0[0][3]=20;
text_button0[0]="Кнопка 0";

//////////

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

pos_size_button1[0][0]=10; pos_size_button1[0][1]=120; pos_size_button1[0][2]=100; pos_size_button1[0][3]=20;
text_button1[0]="Кнопка 1";

//////////

int pos_size_button2[1][4];
string text_button2[1];
int flag_button2[1];

pos_size_button2[0][0]=10; pos_size_button2[0][1]=120; pos_size_button2[0][2]=100; pos_size_button2[0][3]=20;
text_button2[0]="Кнопка 2";

//////////

//messagebox ("");
createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0]);
showdialog(0, "Диалог", 158, 234, 120, 300, 1, 1);
//////////
createdialog(1, BUTTON, #pos_size_button1[0][0], #text_button1[0], #flag_button1[0]);
showdialog(1, "Диалог", 358, 234, 120, 300, 1, 1);
//////////
createdialog(2, BUTTON, #pos_size_button2[0][0], #text_button2[0], #flag_button2[0]);
showdialog(2, "Диалог", 558, 234, 120, 300, 1, 1);
//////////



loop:

if (flag_button0[0] == 1 || flag_button1[0] == 1 || flag_button2[0] == 1)
{
flag_button0[0] =0; flag_button1[0] =0; flag_button2[0] = 0;

destroydialog(0);destroydialog(1);destroydialog(2);

int pos_size_button3[1][4];
string text_button3[1];
int flag_button3[1];
int pos_size_edit3[1][4];
string text_edit3[1];


pos_size_button3[0][0]=13; pos_size_button3[0][1]=37; pos_size_button3[0][2]=100; pos_size_button3[0][3]=53;
text_button3[0]="Кнопка 4";
pos_size_edit3[0][0]=14; pos_size_edit3[0][1]=10; pos_size_edit3[0][2]=100; pos_size_edit3[0][3]=20;
text_edit3[0]="Поле 0";
//////////
createdialog(0, BUTTON, #pos_size_button3[0][0], #text_button3[0], #flag_button3[0] |
EDIT, #pos_size_edit3[0][0], #text_edit3[0]);


//createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0]);


//////////
showdialog(0, "Диалог", 416, 290, 132, 140, 1, 1);
//////////

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









}
sleep(10);
goto loop;//Убрать после теста
5. Adomb - 27 Августа, 2015 - 09:55:34 - перейти к сообщению
Kibor, 22 комбо по 300 строк в диалоге запустить не получилось. Пошёл по другому пути, через edit (поле для ввода) их нужно 44, а как оказалось предусмотрено только 30.
Это диалоговое окно нужно для торговли в игре. Как обойти ограничение или может можно доработать программу? Просто получается большой облом. Огорчение
6. Kibor - 27 Августа, 2015 - 21:57:45 - перейти к сообщению
я бы сделал это в текстовом файле, в котором был бы список типа

CODE:
имя_товара_1 - кактус
имя_товара_2 - шпиндель
имя_товара_3 - велосипед
7. Adomb - 28 Августа, 2015 - 03:17:17 - перейти к сообщению
Так а как пользователь укажет боту что на что торговать? Нужно выбрать из 300 наименований своего товара, указать количество, потом выбрать из тех же 300 наименований товара с рынка, на что ты хочешь поменять, тоже указать количество, выставить лот и так 11 раз подряд. Вот я и делал 11 комбо со стороны пользователя и 11 комбо со стороны рынка, чтобы пользователь сразу указал 11 сделок и ушёл, а бот выставил 11 торгов. В каждом комбо 300 строк с названием товара, каждое комбо брало эти названия из текстового файла, но больше 8 комбо кибор не мог запустить и память больше 2 гигов кушать начинал. Тогда я решил через поле edit делать, человек вносит номер товара и количество, сколько от себя и сколько и чего с рынка. Вот картинка.
торговый диалог (Отобразить)

Но больше 30 полей сделать нельзя , а надо 44, иначе как полноценно указать всю информацию боту, чем ему торговать? Если в текстовом файле прописывать для бота информацию о нужных сделках, то игроку это будет не удобно да и не каждый разберётся, как правильно ему подготавливать текстовый файл для торговли и уж точно за такую реализацию клиент не заплатит. )
Получается в киборе нельзя лимит на 30 всего в диалоге убрать?
8. Kibor - 28 Августа, 2015 - 10:32:22 - перейти к сообщению
нельзя. это не лимит.
не знаю что посоветовать. надо придумывать что то..
9. Adomb - 28 Августа, 2015 - 10:38:00 - перейти к сообщению
Понятно. Думаю сделаю GUI в AutoHotkey, оно будет записывать выбранные позиции в файл, а кибор будет с файла уже читать, что делать. Как то так.

Powered by ExBB FM 1.0 Final