Показать сообщение отдельно
Старый 15.02.2013, 13:36   #1
Местный
 
Аватар для Elecktron
 
Регистрация: 27.10.2011
Адрес: Харьков
Сообщений: 106
Сказал Спасибо: 24
Имеет 11 спасибок в 7 сообщенях
Elecktron пока неопределено
По умолчанию парсинг текста или скрипты в боте

дорос мой бот до скриптов, ибо намертво зашитый функционал слишком не гибкий и давно уже не соответствует требованиям...

казалось бы - вполне хватит команд "а ля валкер" - ничего сложного вроде нет, вносим скрипт в Memo и запускаем.. но не тут то было!

в коде реализуем функции типа:
UseItem(id)
UseSkill(id)
MTL(x,y,z)

и дергать будем их из скрипта.
вопрос только в том, как распознать какую функцию и с каким параметром дернуть..

решение вида:
PHP код:
  while (i<Memo1->Lines->Count)
  {
    
0;
    
opr Memo1->Lines->Strings[i];
    while (
c<Memo1->Lines->Strings[i].Length())
    {
     
c++;
     if (
opr[c] != '#')
      {
       if (
opr[c] == 'M' && opr[c+1] == 'T' && opr[c+2] == 'L')
       
ShowMessage("MTL");
      }
     else
     {
      
Memo1->Lines->Strings[i].Length();
      
ShowMessage("закоментированная строка");
     }
    }
   
i++;
  } 
действенно, но несколько не изящно и громоздко
когда количество скриптовых команд разрастется до 10+ можно будет в этом коде сломать не только голову...
к тому же могут возникнуть проблемы с параметрами, количество символов в которых может варьироваться.

гуглю не первый день, в выдаче странные результаты, местами мало относящиеся к моей теме.
использовать сторонние библиотеки и движки не вижу смысла, да нет желания прикручивать в Visual C++..

буду признателен за любые идеи и подсказки...

"нюхом чую", что решение где-то рядом, и совсем простое..
__________________
C++Builder 6, Delphi 7, RAD Studio XE2, MS VC++...
Elecktron вне форума   Ответить с цитированием