Тексты в одном месте.
#21

Quote:

Предыстория.
Была поставлена задача:
создать простую систему текстов
которая бы не являлась набором функций
была наглядно понятна
имела возможность легкого перевода на любой язык
легко определялся смысл текста внутри кода
высокая скорость работы

А чем наш способ не соответствует задаче?

Все просто
это не набор функций
незнаю, что может быть нагляднее ini файла
анологично
ы

Quote:

Нечитаемо?

Честно?
Reply
#22

Quote:
Originally Posted by Mutha_X
View Post
Ты уверен что существует, ещё один путь с такими задачами и такой, что лучше твоего? Мы тоже, вот тебе альтернативы на довольствие)
Я не понял вопроса, зачем мне искать альтернативный метод когда я нашел себе подходящий, кстати проверенный годами?
Quote:
Originally Posted by OKStyle
View Post
pawn Code:
SendClientMessage(playerid, COLOR, Languages[PlayerLanguage[playerid]][0][ROW]);
Нечитаемо?
Что такое 0?
И я так пологая ROW это define, если да то значит мне нужно ещё и набор define иметь? enum в отличии от define привязан к массиву, а массив к enum.
Quote:
Originally Posted by jhonyxakep
View Post
это не набор функций
незнаю, что может быть нагляднее ini файла
анологично
Да ну, хоть одно из приведенных ваших решений работает без функций? Не утруждайся. Нет.
Из последнего предложения: SetGVarString(name[], text[], id); это вот что?

Сравнивать в скорости обращения к этой функции и к ячейки памяти я даже не стану, результат очевиден.

И кстати по поводу переноса строк, а если он мне нужен в тексте, все встроенные средства чтения файлов тут же отсекаются?!
Reply
#23

Quote:
Originally Posted by Stepashka
View Post
И кстати по поводу переноса строк, а если он мне нужен в тексте, все встроенные средства чтения файлов тут же отсекаются?!
Я эту проблему решил очень просто, получилось что-то вроде BB кодов:
pawn Code:
#define LANG_BB_N "[n]"

stock check_BB(string[])
{
    new buf, len_n = strlen(LANG_BB_N);
   
    while ( (buf = strfind(string,LANG_BB_N)) != -1 )
    {
        strdel(string, buf, buf+len_n);
        strins(string, "\n", buf, MAX_STRING+32);
    }
}
Reply
#24

Quote:
Originally Posted by ZiGGi
View Post
Я эту проблему решил очень просто, получилось что-то вроде BB кодов:
про скорость можно забыть.
Это как в анекдоте:
Quote:

Нанимают мужика разметку на дороге рисовать.
Ну в первый день проверяют работу, а он нарисовал разметки на 60км.
Ну хвалят, мол лучше чем все старые бригады поработал, они вон только по 40км рисуют.
Во второй день мужик нарисовал на 30км.
Ну списали на усталость.
В третий день мужик нарисовал только 5км дороги.
Ну тут начальство не выдерживает и спрашивает:
- "Ты в первый день 60км нарисовал, а во второй 30км, так почему сейчас всего 5км?"
- "До ведра далеко бегать."

Reply
#25

А RAMDisk не в моде уже?

Да и с базой MySQL тоже очень удобно и редактировать и добавлять. Тока при этом сервер офигеет от кол-во запросов, - нужно вводить типа ttl. Но это делов на 5 минут.
Reply
#26

Quote:
Originally Posted by -Stranger-
View Post
А RAMDisk не в моде уже?
И где в SA-MP средства для работы с данной технологией.

Читайте сперва преследуемые мной цели прежде чем что-то предлагать.

Я понимаю что решений данного вопроса много, но они все должны себя оправдывать.

И ещё у меня такое адское чувство что половина здесь отписавшихся не видит разницы между статичными и редактируемыми текстами приложения.
Reply
#27

Stepashka, ну использование БД тоже, "где в SA-MP средства для работы с данной технологией." Но как вариант это очень даже ...

Использовать массив можно, если в коде строк 10-20 а если их там десятки тысяч? - помойка получиться, где разобраться невозможно...

Так что все варианты хороши тока в своём случае, а если говорить про универсальный способ, то тут тока БД или рамдиск+файлы.
Под универсальностью я подразумеваю чтение потенциально бесконечное кол-во строк, с простой правкой и использованием.
Reply
#28

Quote:
Originally Posted by jhonyxakep
View Post
Честно?
Да, по сравнению с вышеприведённым кодом.

Quote:
Originally Posted by Stepashka
View Post
И я так пологая ROW это define
Нет. ROW - это строка в выбранном языке. 0 - индекс начала текста.

Quote:
Originally Posted by Stepashka
View Post
не видит разницы между статичными и редактируемыми текстами приложения.
В моём способе менять текст можно только перекомпиляцией мода... Как и все остальные, которые не на файлах или БД.
Reply
#29

pawn Code:
stock FixText(string[]) {
     new result[256];
     for(new i=0; i < 256; i++) {
          switch(string[i]) {
               case 'а':result[i] = 'a';
               case 'А':result[i] = 'A';
               case 'б':result[i] = '—';
               case 'Б':result[i] = 'Ђ';
               case 'в':result[i] = 'ў';
               case 'В':result[i] = '‹';
               case 'г':result[i] = '™';
               case 'Г':result[i] = '‚';
               case 'д':result[i] = 'љ';
               case 'Д':result[i] = 'ѓ';
               case 'е':result[i] = 'e';
               case 'Е':result[i] = 'E';
               case 'ё':result[i] = 'e';
               case 'Ё':result[i] = 'E';
               case 'ж':result[i] = '›';
               case 'Ж':result[i] = '„';
               case 'з':result[i] = 'џ';
               case 'З':result[i] = '€';
               case 'и':result[i] = 'њ';
               case 'И':result[i] = '…';
               case 'й':result[i] = 'њ';
               case 'Й':result[i] = '…';
               case 'к':result[i] = 'k';
               case 'К':result[i] = 'K';
               case 'л':result[i] = 'ћ';
               case 'Л':result[i] = '‡';
               case 'м':result[i] = 'Ї';
               case 'М':result[i] = 'M';
               case 'н':result[i] = '®';
               case 'Н':result[i] = '*';
               case 'о':result[i] = 'o';
               case 'О':result[i] = 'O';
               case 'п':result[i] = 'Ј';
               case 'П':result[i] = 'Њ';
               case 'р':result[i] = 'p';
               case 'Р':result[i] = 'P';
               case 'с':result[i] = 'c';
               case 'С':result[i] = 'C';
               case 'т':result[i] = '¦';
               case 'Т':result[i] = 'Џ';
               case 'у':result[i] = 'y';
               case 'У':result[i] = 'Y';
               case 'ф':result[i] = '';
               case 'Ф':result[i] = 'Ѓ';
               case 'х':result[i] = 'x';
               case 'Х':result[i] = 'X';
               case 'ц':result[i] = '*';
               case 'Ц':result[i] = '‰';
               case 'ч':result[i] = '¤';
               case 'Ч':result[i] = 'Ќ';
               case 'ш':result[i] = 'Ґ';
               case 'Ш':result[i] = 'Ћ';
               case 'щ':result[i] = 'Ў';
               case 'Щ':result[i] = 'Љ';
               case 'ь':result[i] = '©';
               case 'Ь':result[i] = '’';
               case 'ъ':result[i] = 'ђ';
               case 'Ъ':result[i] = '§';
               case 'ы':result[i] = 'Ё';
               case 'Ы':result[i] = '‘';
               case 'э':result[i] = 'Є';
               case 'Э':result[i] = '“';
               case 'ю':result[i] = '«';
               case 'Ю':result[i] = '”';
               case 'я':result[i] = '¬';
               case 'Я':result[i] = '•';
               default:result[i]=string[i];
          }
     }
     return result;
}

GameTextForPlayer(i, FixText("~w~ваш клиент~n~~r~вышел из игры"), 5000, 1);
вы не об этом?
Reply
#30

Нет, мы не об этом.
Reply
#31

Quote:

Sergey_Walter

о боже О_О

Прочитай первый пост
Reply
#32

Quote:
Originally Posted by Sergey_Walter
View Post
вы не об этом?
Выскочка, которая не читает тему - сразу попадает в лужу.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)