Ru-MaNGOS

Вернуться   Ru-MaNGOS > Дополнения > Tools

Важная информация

Tools Обсуждение программ для MaNGOS

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.04.2011, 21:03   #1
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Код:
void logcustom(uint8 lvl, Color color, const char *str, ...)
{
	char *charutf8 = str_convert_log(str, CP_UTF8, 866);

    if(!str || loglevel < lvl)
        return;
    va_list ap;
    _log_setcolor(true,color);
    if(logtime)
        printf("%s ", GetTimeString().c_str());
    va_start(ap, charutf8);
    vprintf(charutf8, ap);
    va_end(ap);
    _log_resetcolor(true);

    printf("\n");

    if(logfile)
    {
        fprintf(logfile, "%s", getDateString().c_str());
        va_start(ap, charutf8);
        vfprintf(logfile, charutf8, ap);
        fprintf(logfile, "\n" );
        va_end(ap);
        fflush(logfile);
    }
    fflush(stdout);

	delete[] charutf8;
какая строчка вызывает падение ? так чисто визуально вроде не видно где тут можно рухнуть

P.S. этот код может быть не корректен, так как конвертируется только строка формата, а все параметры остаются в изначальной кодировке и если utf8 строки передаются в качестве параметра, то тут то и наступят грабли

Последний раз редактировалось Йоха; 21.04.2011 в 23:49.
Йоха вне форума   Ответить с цитированием
Старый 21.04.2011, 23:14   #2
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

вот так 100% верно:
Код:
void logcustom(uint8 lvl, Color color, const char *str, ...)
{
	char buf[4096]; //

    if(!str || loglevel < lvl)
        return;
    va_list ap;
    _log_setcolor(true,color);
    if(logtime)
        printf("%s ", GetTimeString().c_str());
    va_start(ap, str);
    vsprintf(buf, str, ap );
    va_end(ap);
	char* str_oem = str_convert_log(buf, CP_UTF8, 866);
	printf("%s\n", str_oem);
    _log_resetcolor(true);

    if(logfile)
    {
        fprintf(logfile, "%s %s\n", getDateString().c_str(), str_oem);
        fflush(logfile);
    }
    fflush(stdout);
	delete[] str_oem;
}

Последний раз редактировалось Йоха; 21.04.2011 в 23:49.
Йоха вне форума   Ответить с цитированием
Старый 22.04.2011, 13:51   #3
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию

Код:
void logcustom(uint8 lvl, Color color, const char *str, ...)
можно нубский вопрос?
Что означают три точки в аргументах функции?
__________________
Konctantin вне форума   Ответить с цитированием
Старый 22.04.2011, 13:58   #4
Hantet
Ученый
 
Аватар для Hantet
 
Регистрация: 07.03.2010
Адрес: Санкт-Петербург
Сообщений: 163
Сказал(а) спасибо: 124
Поблагодарили 111 раз(а) в 52 сообщениях
Hantet Скоро придёт к известностиHantet Скоро придёт к известности
Отправить сообщение для Hantet с помощью ICQ
По умолчанию

Цитата:
Сообщение от Konctantin Посмотреть сообщение
Код:
void logcustom(uint8 lvl, Color color, const char *str, ...)
можно нубский вопрос?
Что означают три точки в аргументах функции?
Трудно объяснить. В общем это значит, что можно передавать неограниченное кол-во аргументов, которые потом использовать для подстановки например.

Вот пример где это реализовано:
Код:
int printf(const char *format, ...);
Вызывается так:
Код:
int a = 0, b = 1, c = 2;
printf("Numbers: %i, %i, %i", a, b, c);
Выведет
Numbers: 0, 1, 2
__________________
Галя: Вот почему когда я пуск делаю и по ярлыку две то запускается, а если вот мне к примеру надо не из пуска её то ничего и в красном показывает, а надо ведь чтобы квадратик жёлтенький открывал и там 3 кнопки должно быть?
admin: О Боже!
admin: Кто-нибудь, пришлите ко мне уборщицу, пусть мой мозг со стен и потолка отмоет
Hantet вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Konctantin (22.04.2011)
Старый 22.04.2011, 14:03   #5
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Hantet Посмотреть сообщение
Трудно объяснить. В общем это значит, что можно передавать неограниченное кол-во аргументов
Что тут трудного ? все правильно говоришь. Многоточие означает что функция может принимать любое количество аргументов, которые потом получаются при помощи макросов va_arg, va_end, va_start.
Йоха вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Konctantin (22.04.2011)
Старый 22.04.2011, 14:15   #6
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию

все ясно, можно было не расписывать, в С# аналог тоже есть
Код:
void Test(string format, params object arg)
__________________
Konctantin вне форума   Ответить с цитированием
Старый 22.04.2011, 15:13   #7
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

KiriX, заработало ? или еще не пробовал ?
Йоха вне форума   Ответить с цитированием
Старый 25.04.2011, 17:34   #8
KiriX
Умный
Старожил
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

Цитата:
Сообщение от Йоха Посмотреть сообщение
KiriX, заработало ? или еще не пробовал ?
Я в отъезде. Вернусь - проверю.
KiriX вне форума   Ответить с цитированием
Старый 24.04.2011, 01:25   #9
Kujbor
Новичок
 
Аватар для Kujbor
 
Регистрация: 13.03.2010
Адрес: Самара
Сообщений: 20
Сказал(а) спасибо: 13
Поблагодарили 2 раз(а) в 1 сообщении
Записей в дневнике: 1
Kujbor На верном пути
По умолчанию

Насколько функционально gui у этого клиента? У меня получился только некий "вид со стороны". Ни чата, ни какого бы то ни было управления персонажем, вообще ничего. только пейзаж, непонятно прорисованные npc, непонятно прорисованный мой персонаж и fps сверху пишется. Движение камеры причем происходит строго по ландшафту, т.е. если например зайти в огри, то ходить придется под ним. И это все только камера, сам персонаж остается на своем месте. Это только у меня так или так и должно быть?
Kujbor вне форума   Ответить с цитированием
Ответ

Метки
pseuwow, альтернативный клиент


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клиент Катаклизма evilstar Флудильня 5 04.12.2010 12:58
Нужна помощь по установке сервера mangos в дата центр Kolyasamec Корзина 1 25.09.2010 21:28
Портативный SQL клиент selector Новичкам 10 09.07.2010 17:12
я проста с линуксом сталковаюсь первый раз vsalda Флудильня 7 12.06.2010 03:40
Клиент не пускает в мир mangos koloff Корзина 1 19.04.2010 00:29


Текущее время: 07:02. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot