+61.72
Рейтинг
10.87
Сила
avatar

Пруль

  • avatar prool
  • 0
Оно пока у меня не работает
  • avatar prool
  • 0
Нашел ветку с чатом, все собралось и запустилось. Но Госсип сервер меня не пускает, так как там нужен логин и пароль :)
  • avatar prool
  • 0
Похоже, нет там чата
  • avatar prool
  • 0
Ну это понятно, слепили свой мад из нескольких, а теперь неторопливо чистят.

Я кстати собрал его, собирается сравнительно просто. Теперь буду искать в коде Gossip
  • avatar prool
  • 0
Буду краток. Мне как олдфагу из списка работающих в данной системе мадов нравится мад Maelstrom, он написан на C и является далеким потомком Diku. Из него можно выдрать коммуникационный блок Gossip.

А еще есть библиотека libgossip, написанная на Objective C
Я кстати неск. месяцев назад начал имплементировать у себя в маде протокол intermudchat/i3, но потом забросил.
  • avatar prool
  • 0
УРРА!!!!!111 Всё ВНЕЗАПНО заработало!
  • avatar prool
  • 0
Тестовый комментарий номер 2
  • avatar prool
  • 0
тестовый комментарий номер один

Пруль
  • avatar prool
  • 0
Ну не знаю, я сторонник того, что надо самому уметь внятно писать (а если не умеешь, учиться). В умные программы не верю, потому что я фанат Азимова и в частности его повести «Профессия»
  • avatar prool
  • 0
Это ничего не дало: аватары не появились
  • avatar prool
  • 0
Закачал каталог uploads
  • avatar prool
  • 0
В жизни не все просто, как оказалось
  • avatar prool
  • 1
Подробности:

Сегодня я перенес околомадовский сайт muder.ru со старого хостинга на новый. Причиной переноса было то, что старый хостинг — фирма «РГ Хостинг» — закрылась. Перенос методом «переносим файлы и базу» не сработал. Пришлось использовать грязный хак: на новом хостинге инсталлировать с нуля такую же версию CMS Livestreet, затем создавать вторую базу данных, вливать туда дамп со старого хостинга и в файле настроек CMS менять базу — пустую, созданную при инсталляции CMS на ту, куда был влит дамп с контентом со старого хостинга. Ситуация была несколько осложнена тем, что кроме установки CMS «с нуля» еще надо было поставить тот же набор плагинов (до подмены баз). И на самом деле переносилась не одна CMS, а две — Livestreet и установленный рядом форум SMF (они использовали одну базу данных, с разным префиксами имен таблиц)
  • avatar prool
  • 0
Я зарегистрирован и в Годвилле и в Сказке. Годвилль мне нравится больше, он какой-то душевный. А Сказка с моей точки зрения перенавороченная (переусложненная). А вот требования доната я там не видел. Можно донатить, а можно и не.
  • avatar prool
  • 0
Черт его знает.
  • avatar prool
  • 0
Ты кого обезьяной назвал? :)
  • avatar prool
  • 0
Вот тебе исправление проблемы методом «очень грязного хака». Два места, в которых я что-то менял, помечены коментом /* prool fool */

Это новый вариант функции для файла ib/sys/obj/user.c

Но у меня описание комнаты на всю ширину экрана вывелось только после того, как я в prooltin дал команду #config charset utf-8
То есть и клиент должен понимать UTF-8

void wrap_message(string str, varargs int chat_flag) {
string msg, *words, *lines;
int width, i, j, sz;

if (!str || str == "") {
return;
}

width = -1;
/* Get the width from the player */
if (player) {
catch(width = player->query_width());
}

rlimits(MAX_DEPTH; MAX_TICKS) {
/* Split the string into lines */
lines = explode(str, "\n");

/* Parse each line */
for (j = 0; j < sizeof(lines); j++) {
str = lines[j];
msg = str;
if (0/*strlen(ansid->strip_colors(str)) > width*/) { /* prool fool */
int adding;
string word_todo;

sz = 0;
words = explode(str, " ");
msg = "";

for (i = 0; i < sizeof(words); i++) {
word_todo = nil;
if (strlen(words[i]) > 4 && (strstr(words[i], "%^") != -1)) {
word_todo = ansid->strip_colors(words[i]);
}
/* word_todo is the word stripped from ansi codes */
if (!word_todo) {
word_todo = words[i];
}

if (0/*sz + strlen(word_todo) + adding > width*/) {/* prool fool */
msg += "\n";

if (chat_flag) {
msg += " ";
}

/* add length of word without ansi codes */
sz = strlen(word_todo) + 2;

/* add word with ansi codes */
msg += words[i];
} else {
if (adding) {
msg += " " + words[i];
} else {
msg += words[i];
}
sz += strlen(word_todo) + adding;
}
/* determine how many spaces will be added next run */
if (sz == 0) {
adding = 0;
} else {
adding = 1;
}
}
}
if (query_player()->query_ansi()) {
msg = ansid->parse_colors(msg);
} else {
msg = ansid->strip_colors(msg);
}

send_message(msg + "\n");
}
}
}
  • avatar prool
  • 0
Самая эффективная борьба с ботами — закрыть игру нафиг
  • avatar prool
  • 0
Это реализация функции strlen, которая правильно считает длину строки с символами UTF-8. Как говорит молодежь «я просто оставлю это здесь». А то потеряю это
  • avatar prool
  • 0
int utf8_strlen(const string& str)
{
int c,i,ix,q;
for (q=0, i=0, ix=str.length(); i < ix; i++, q++)
{
c = (unsigned char) str[i];
if (c>=0 && c<=127) i+=0;
else if ((c & 0xE0) == 0xC0) i+=1;
else if ((c & 0xF0) == 0xE0) i+=2;
else if ((c & 0xF8) == 0xF0) i+=3;
//else if (($c & 0xFC) == 0xF8) i+=4; // 111110bb //byte 5, unnecessary in 4 byte UTF-8
//else if (($c & 0xFE) == 0xFC) i+=5; // 1111110b //byte 6, unnecessary in 4 byte UTF-8
else return 0;//invalid utf8
}
return q;
}