www.mudconnector.su

Национальный мадконнектор.
Текущее время: Чт мар 28, 2024 9:27 pm

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Файлы классов для MUD World of russian fantasy
СообщениеДобавлено: Ср июн 22, 2011 12:31 pm 
Не в сети

Зарегистрирован: Вт сен 14, 2010 6:06 pm
Сообщений: 396
Вот файлы классов, как и обещал. В архиве.


Вложения:
Комментарий к файлу: классы
class.rar [7.01 KIB]
Скачиваний: 552

_________________
Кодер и билдер MUD Shaal (Мада Мир Шааль).
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср июн 22, 2011 1:05 pm 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1416
Комментов, конечно не хватает остро.
Краткий ревью, искал интересные идеи. Честно - не нашел :(, а хотелось.

area.h
map<int,ROOM> rooms;
map<int,int> number_rooms;
Ммм... это что такое :) ? И зачем их два ?
Время восхода и заката по идее с временем года связаны.


class CONTAINER
int door; - это что :) ?

class EXITS
6 выходов хорошо, но вообще-то их могло бы быть и 10...
Пустые строки не вполне хорошие значения для значений по умолчанию.

class INVENTAR - не понял назначения класса

class MOB
gold = 0;
serebro = 0; - имеет ли смысл отличать одно от другого ?
flags = ""; - string ????
sost = "normal"; - string ????
А где инициализация остального ?

int number_in_area;
int number_area; - не понял что это

string name_1;
string name_2;
string name_3;
string name_4;
string name_5;
string name_6; - это пардон гарантированный секас и мат... у падежей есть названия

string name_room; - ?

int where_sit; - я так понимаю место куда он вернется автоматом после каких-то событий ? каких ?

string rasa;
string clas; - string ?????

string SK;
string sost; - не смог понять что это
map<int,string> opis;
int size_opis; - и это и многое другое

Дальше смотреть не стал.
Возможно мое мнение не интересно, но я все-же его выскажу: структура классов требует серьезной переделки как минимум.
OOP не видно совсем. Почему sosud не является потомком obj ? Кто является потомком хоть кого-либо ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср июн 22, 2011 1:21 pm 
Не в сети

Зарегистрирован: Вт сен 14, 2010 6:06 pm
Сообщений: 396
rooms - массив комнат в арии
numer_rooms - id комнат в арии
Да, закат и восход пока не сделаны

CONTAINER
door - имеет ли объект "двери".
0 - не имеет
1 - имеет и она открыта
2 - закрыта
3 - заперта

EXITS
да, я понимаю, но изначально делал под 6 :)
Все что я не инициализирую должно заполняться из арий, и инициализировать это просто нет смысла

INVENTAR - инвентарь персонажа :) Хранит, кроме id вещей еще и вместительность, вес и так далее

MOB
да, потому что золото - типа долларов :D Серебро - типа рублей :)
flags - флаги на мобе, пока никак не используется (у obj используется)
sost - normal, sit, sleep - пока так, но будет изменено, потому как плохо сделано
number_in_area - номер в арии (относительно арии!), в которой он описан
number_area - номер арии, откуда он создан. То есть мобы могут выйти из любой арии в любую, а эти переменные помогают определить откуда он "родом".
Ну имена - да, плохо :(
name_room - long_name вообщем, как отображается в комнате
where_sit - id объекта на котором персонаж сидит (глупо, понимаю, будет переделано).
SK - не используется (тут в классах куча наработок)
sost - normal, sit, sleep
opis - описание, size_opis - количество строк в нем
Мнение всегда интересно :)
Да, я согласен с этим. Просто писать начинал в 9-м классе, когда о классах было весьма смутное представление. Переделке собираюсь подвергнуть :) ООП и нет, к сожалению :(
Ну, SOSUD объявляется внутри OBJ, что плохо, потому что занимает место у не сосудов :( Наследование отсутствует.

_________________
Кодер и билдер MUD Shaal (Мада Мир Шааль).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср июн 22, 2011 2:39 pm 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1416
ЗЫ. В качестве идей и кусочка того что делал сам. Давно. Не претендую на идеал.
Самая простая иерархия (код синтетический, реальный весьма замусорен и будет непонятен, многое вычеркнуто)

class cAM_Char_Object : public cAM_Alive_Object
{
public:
password", store_dt_String
loadroom", store_dt_Integer
birthdatemud", store_dt_Integer );// BirthDate_MUD // Дата рождения по времени мада все начинают в 20 лет.
timeplayed", store_dt_Integer ); // сколько тиков игрок играет
createdRL", store_dt_Integer ); // Created: [Mon Nov 13],
lastlogonRL", store_dt_Integer ); // Last Logon: [Wed Aug 10]

max_level", store_dt_Integer ); //максимальный левел который когда либо был у игрока в данном реморте
remorts", store_dt_Integer ); //количество ремортов

trains", store_dt_Integer );
trains_spend", store_dt_Integer ); // Количество оставшихся тренировок (отдельно писать логи по получению-расходованию)

hunger", store_dt_Integer );
thirst", store_dt_Integer );
drunk", store_dt_Integer );

death_cnt", store_dt_Integer );
death_pk_cnt", store_dt_Integer );
delevels_counter", store_dt_Integer );

coins", store_dt_Integer );
coins_bank", store_dt_Integer );

clan", store_dt_Integer );
clan_rank", store_dt_Integer );
}

class cAM_Alive_Object : public cAM_Base_Object_With_Noun
{
"ligth_dark", store_dt_Integer ); // Светлый или темный персонаж
"race", store_dt_Integer ); // Раса персонажа
"class", store_dt_Integer ); // Профессия персонажа
"homeland", store_dt_Integer ); // Хоумленд персонажа

"long_desc", store_dt_String );
"title_prefix", store_dt_String );
"title_postfix", store_dt_String );

"level", store_dt_Integer );
"current_lvl_exp", store_dt_Integer );

"def_position", store_dt_Integer ); // Default position: Стоит
"original_move_type", store_dt_Integer ); // : 0(ушел) (аффекты наливаются сверху)

"hp", store_dt_Integer );
"mana", store_dt_Integer );
"move", store_dt_Integer );
}

// Промежуточный класс с существительным внутри
class cAM_Base_Object_With_Noun : public cAM_Base_Object
{
string Name;
string In_Ground_Description;
Russian_Word_Combination* Names;
};


class Russian_Word_Combination_Part - объект хранящий в себе название, выдает наружу
все падежи, которые в разумных пределах автогенерируемы. Там внутри скрыта хренова туча
кода, такие объекты как существительно-прилагательное итп.

Мобы при этом являются разновидностью cAM_Alive_Object.

Очень примитивно, просто чтобы пояснить мысль.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср июн 22, 2011 2:42 pm 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1416
Харч писал(а):
rooms - массив комнат в арии
numer_rooms - id комнат в арии

Зачем и то и другое одновременно ?

Харч писал(а):
CONTAINER
door - имеет ли объект "двери".
0 - не имеет
1 - имеет и она открыта
2 - закрыта
3 - заперта

Контейнер ? Двери ? Предполагается прятаться внутри запираемого лукошка ?

Харч писал(а):
EXITS
да, я понимаю, но изначально делал под 6 :)

И что делать если понадобится 10 :) ? А 20 ?

Харч писал(а):
Все что я не инициализирую должно заполняться из арий, и инициализировать это просто нет смысла

Все, что есть ДОЛЖНО инициализироваться.

Харч писал(а):
number_area - номер арии, откуда он создан. То есть мобы могут выйти из любой арии в любую, а эти переменные помогают определить откуда он "родом".

Тут верная идея. Только лучше сохранять birth_room, т.е. ссылку на него, или номер.

Харч писал(а):
Наследование отсутствует.

Вас ждут недетские проблемы с отладкой копированного кода и модернизацией.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср июн 22, 2011 3:37 pm 
Не в сети

Зарегистрирован: Вт сен 14, 2010 6:06 pm
Сообщений: 396
спасибо, буду разбираться :)

KadVar писал(а):
Харч писал(а):
rooms - массив комнат в арии
numer_rooms - id комнат в арии

Зачем и то и другое одновременно ?


Для более легкого поиска :)
То есть id необязательно идут подряд, а обращение к комнате:
rooms[ID_ROOM]./////
Я знаю что есть итераторы, но мне показалось так проще :)

KadVar писал(а):
Контейнер ? Двери ? Предполагается прятаться внутри запираемого лукошка ?


Это просто называется "дверь", а на самом деле можно же открывать и закрывать шкаф, и так далее? Вот у них и есть "дверь", а фактически это заперт/незаперт и т. д.

KadVar писал(а):
И что делать если понадобится 10 ? А 20 ?


Э... мне вроде не надо :D

Цитата:
Все, что есть ДОЛЖНО инициализироваться.


Согласен, только мне морокой показалось в далеком 9-м :D

KadVar писал(а):
Тут верная идея. Только лучше сохранять birth_room, т.е. ссылку на него, или номер.


Дело в том что у меня нет общего списка комнат как в ромовском движке.
У меня есть список арий, а в каждой арии список комнат, и вот номера этих комнат могут пересекаться. Конечно можно хранить адрес комнаты в памяти, но... что делать при перезагрузке? :D обновлять? Морока. (я имею ввиду петов).

Проблемы - наверное, но я собираюсь вообще полностью очистить файл команд и написать его заново :D так что проблем не будет, просто перепишу все :)

_________________
Кодер и билдер MUD Shaal (Мада Мир Шааль).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср июн 22, 2011 4:07 pm 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1416
Харч писал(а):
Для более легкого поиска :)
То есть id необязательно идут подряд, а обращение к комнате:
rooms[ID_ROOM]./////
Я знаю что есть итераторы, но мне показалось так проще :)


Очень не рекомендую так делать.
И эээ..
Код:
map<int,ROOM> rooms;
map<int,int> number_rooms;

Что мешает ID_ROOM использовать как ключ для map ?
Или map не имеет функционала доступа по ключу (давно я на ++ не писал, может хешмап нужен?) ?
Если не имеет - вы используете не тот список, что вам нужен.


Харч писал(а):
KadVar писал(а):
Контейнер ? Двери ? Предполагается прятаться внутри запираемого лукошка ?

Это просто называется "дверь", а на самом деле можно же открывать и закрывать шкаф, и так далее? Вот у них и есть "дверь", а фактически это заперт/незаперт и т. д.
[/code]
И зачем он называется "дверь" ?
Почему не "заяц" ?


Харч писал(а):
KadVar писал(а):
Тут верная идея. Только лучше сохранять birth_room, т.е. ссылку на него, или номер.

Дело в том что у меня нет общего списка комнат как в ромовском движке.
У меня есть список арий, а в каждой арии список комнат, и вот номера этих комнат могут пересекаться. Конечно можно хранить адрес комнаты в памяти, но... что делать при перезагрузке? :D обновлять? Морока. (я имею ввиду петов).
[/quote]
Не понял силы подхода и его преимущества...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср июн 22, 2011 5:35 pm 
Не в сети

Зарегистрирован: Вт сен 14, 2010 6:06 pm
Сообщений: 396
Цитата:
Что мешает ID_ROOM использовать как ключ для map ?
Или map не имеет функционала доступа по ключу (давно я на ++ не писал, может хешмап нужен?) ?
Если не имеет - вы используете не тот список, что вам нужен.


Гм... всмысле доступ по ключу? Может и имеет, а может я даже им пользуюсь, не зная названия :)

KadVar писал(а):
Не понял силы подхода и его преимущества...


Какого именно подхода?

Ну вот например, в ROM вроде имеются vnum, которые каждой арии выделяются вручную - надо думать и просчитывать, тогда как у меня просчет идет автоматически, я конечно понимаю что весь мир не представляется как огромный набор комнат, а разбивается на арии, но мне кажется так и поиск делать проще, и арию отдельную обрабатывать тоже намного проще.

_________________
Кодер и билдер MUD Shaal (Мада Мир Шааль).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср июн 22, 2011 5:50 pm 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1416
Харч писал(а):
Какого именно подхода?

Ну вот например, в ROM вроде имеются vnum, которые каждой арии выделяются вручную - надо думать и просчитывать, тогда как у меня просчет идет автоматически, я конечно понимаю что весь мир не представляется как огромный набор комнат, а разбивается на арии, но мне кажется так и поиск делать проще, и арию отдельную обрабатывать тоже намного проще.


Подход - Свалить всё в одну кучу.
Что уж проще, для vnum комнаты 999888 - 999 номер зоны, 888 номер комнаты в нём.
И как проще делать поиск, с 999000 по 999999 комнату или среди "всех".
И как проще обрабатывать "арию" :) ?

Чисто формально vnum-ы не особо нужны. Но на практике это большое подспорье именно
в плане "отдельной обработки арии"


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср июн 22, 2011 7:43 pm 
Не в сети

Зарегистрирован: Вт сен 14, 2010 6:06 pm
Сообщений: 396
KadVar писал(а):
Харч писал(а):
Какого именно подхода?

Ну вот например, в ROM вроде имеются vnum, которые каждой арии выделяются вручную - надо думать и просчитывать, тогда как у меня просчет идет автоматически, я конечно понимаю что весь мир не представляется как огромный набор комнат, а разбивается на арии, но мне кажется так и поиск делать проще, и арию отдельную обрабатывать тоже намного проще.


Подход - Свалить всё в одну кучу.
Что уж проще, для vnum комнаты 999888 - 999 номер зоны, 888 номер комнаты в нём.
И как проще делать поиск, с 999000 по 999999 комнату или среди "всех".
И как проще обрабатывать "арию" :) ?

Чисто формально vnum-ы не особо нужны. Но на практике это большое подспорье именно
в плане "отдельной обработки арии"


Да, но это все-таки уже путаница, думать, разделять на первые три цифры и последние, ИМХО так проще запутаться :)
А я и не делаю поиск среди всех :) Я вообще даже поиска нигде практически не делаю (вот только для репопа), избавился от них именно введением таких дополнительных массивов. Если Вы подробнее скажете какой поиск имеете ввиду, для чего - скажу как он происходит. И кстати по времени доступа - к любому объекту мира она одинаковая в текущей системе :) Маленькая, как просто доступ к одному элементу массива.
Ну, насчет арии - какое-то например арийное заклинание, ИМХО проще обращаться areas[ID_AREA].rooms[ID_ROOM].ЧТО_ТО, а не objects[VNUM] (и перед этим вычислять этот VNUM).

_________________
Кодер и билдер MUD Shaal (Мада Мир Шааль).


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции


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

Найти:
Перейти:  
cron