Online MUD игра АРДА
Общедоступные => Ошибки игры => Тема начата: Фили от 11.10.05, 15:26:30
-
Сад Форноста. Дерусь, убегаю.
Ожившее дерево пришло с запада.
Ожившее дерево пришло с запада.
west
Вы не можете идти в этом направлении
Действительно, в списке выходов запада нет. А пеньки оттуда ходят. В принципе понятно, почему так получается, но все равно - нелогично как-то.
-
наверно это будет самое последнее исправление до которого дойдут руки Единого ;)
-
Давно указывал на эту ошибку. Случай был у духа дерева, Джулиан туда с свевера пришёл. Аланныч обещал исправить. Нет ни фикса, ни славы.
*** (Alanna) Я обещала подумать и написать Морису, это только он может поправить.
-
там комнаты как-то поворачиваются, водят так сказать. Может из-за этого?:gigi: Хотя всякое может быть
-
Любой билдер знает как это получилось. Фикса этого не будет )) это точно.
-
есть два варианта решения проблемы, первая, наиболее легкая
смотрим файл 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. все равно не исправят
(Добавление)
ошибка кроется не столько в рандоме комнат, сколько в неправильной логике обработки
а именно, указывая, откуда пришел персонаж, делается реверс хода по отношению той комнаты, где он был, а надо по отношению той комнаты, куда он пришел
-
Пришел откуда-то было бы, имхо, ролеплейнее.
Ни у кого в Арде нет компаса, и направления сторон света выбираются каким-то другим образом - по звездам, или по памяти, или по мху на камнях... То есть по ориентирам. Поэтому механизм блужданий и действует так, что пошел, скажем, на восток, а попал в комнату на юге. Заблудился и перепутал стороны света.
Таким образом, два варианта:
1. Если ничего не менять, то заблудившемуся (перепутавшему стороны света) кажется, что моб пришел с востока, он пытается идти на восток (а не в том же направлении), и не может, потому что неверно определил сторону. Немного криво.
2. Заблудившийся видит, что пришел моб, но не может понять, с какой стороны (вернее, не может определить, север это или запад, или вообще верх). То есть моб пришел "откуда-то" (см. пост Алдарила). Тем более, если моб пришел через односторонний вход. Тоже не без недостатков, но гораздо приличнее первого варианта.