Register

Автор Тема: вы не можете идти в этом направлении  (Прочитано 1738 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Фили

  • Орден Теней
  • Постоялец
  • *
  • Сообщений: 180
  • Карма: 0
    • http://whiteidol.by.ru
Сад Форноста. Дерусь, убегаю.

Цитировать
Ожившее дерево пришло с запада.
Ожившее дерево пришло с запада.

west

Вы не можете идти в этом направлении


Действительно, в списке выходов запада нет. А пеньки оттуда ходят. В принципе понятно, почему так получается, но все равно - нелогично как-то.
автономная борода гнома

Оффлайн Paola

  • Бессмертные
  • Постоялец
  • *****
  • Сообщений: 189
  • Карма: 4
наверно это будет самое последнее исправление до которого дойдут руки Единого ;)

Оффлайн Strori

  • Путешественник
  • **
  • Сообщений: 264
  • Карма: 0
    • http://www.nilfgard.com
Давно указывал на эту ошибку. Случай был у духа дерева, Джулиан туда с свевера пришёл.  Аланныч обещал исправить. Нет ни фикса, ни славы.

*** (Alanna) Я обещала подумать и написать Морису, это только он может поправить.
« Последнее редактирование: 13.10.05, 21:03:33 от Alanna »
Out in the real world

Оффлайн Бельзен

  • Лесной Полк
  • Вредный
  • ***
  • Сообщений: 1146
  • Карма: 5
  • Пол: Мужской
там комнаты как-то поворачиваются, водят так сказать. Может из-за этого?:gigi: Хотя всякое может быть
Я так думаю

Оффлайн Кирд

  • Победитель нежити
  • **
  • Сообщений: 432
  • Карма: 3
    • http://www.grey-legion.org
Любой билдер знает как это получилось. Фикса этого не будет )) это точно.
С ув. Кирд

Оффлайн aldaril

  • Постоялец
  • *
  • Сообщений: 169
  • Карма: 2
  • Пол: Мужской
есть два варианта решения проблемы, первая, наиболее легкая
смотрим файл act_move.c функция move_char line ~1153 (по оригинальным исходникам SMAUG 1.4a)
     dtxt = rev_exit(door);
после нее идут строки
     if ( ch->mount )
     {
   sprintf( buf, "$n %s from %s upon $N.", txt, dtxt );
   act( AT_ACTION, buf, ch, NULL, ch->mount, TO_ROOM );
     }
     else
     {
   sprintf( buf, "$n %s from %s.", txt, dtxt );
   act( AT_ACTION, buf, ch, NULL, NULL, TO_ROOM );
     }

итак, решение первое,
если из комнаты, куда заходит персонаж нет прохода по направлению door, то просто указываем "непонятно откуда-то"
вариант второй, мой
вместо строки
     dtxt = rev_exit(door);
пишем:
EXIT_DATA *is_exit;
for ( is_exit = to_room->first_exit; is_exit; is_exit = is_exit->next )
{
 if ( is_exit->to_room && is_exit->to_room == from_room )
  {
     dtxt = dir_name[is_exit->vdir];
     break;
  }
}

пояснения, from_room и to_room задан ранее как
in_room = ch->in_room;
from_room = in_room;
to_room = pexit->to_room

вместо массива dir_name я бы ввел другую, например dir_name2 где прописал бы русские названия как то севера,востока и т.д.

патч я еще не проверял, пока другие задачи стоят, но по теории должно работать
во всяком случае где надо исправлять и фиксить, я указал
p.s. все равно не исправят


(Добавление)
ошибка кроется не столько в рандоме комнат, сколько в неправильной логике обработки
а именно, указывая, откуда пришел персонаж, делается реверс хода по отношению той комнаты, где он был, а надо по отношению той комнаты, куда он пришел

Оффлайн Gardiel

  • Завсегдатай
  • *
  • Сообщений: 50
  • Карма: 0
Пришел откуда-то было бы, имхо, ролеплейнее.

Ни у кого в Арде нет компаса, и направления сторон света выбираются каким-то другим образом - по звездам, или по памяти, или по мху на камнях... То есть по ориентирам. Поэтому механизм блужданий и действует так, что пошел, скажем, на восток, а попал в комнату на юге. Заблудился и перепутал стороны света.
Таким образом, два варианта:
1. Если ничего не менять, то заблудившемуся (перепутавшему стороны света) кажется, что моб пришел с востока, он пытается идти на восток (а не в том же направлении), и не может, потому что неверно определил сторону. Немного криво.
2. Заблудившийся видит, что пришел моб, но не может понять, с какой стороны (вернее, не может определить, север это или запад, или вообще верх). То есть моб пришел "откуда-то" (см. пост Алдарила). Тем более, если моб пришел через односторонний вход. Тоже не без недостатков, но гораздо приличнее первого варианта.