Вернуться   МПМ Былины - Мир Древней Руси > Для игроков > Ф/\Ей|\/|

Ф/\Ей|\/| Ну сами понимаете... должно быть место, которое не модерируется... Но не злоупотребляйте...

Ответ
 
Опции темы Опции просмотра
Старый 19.06.2010, 18:36   #1
prool
Занятой мадер
 
Регистрация: 24.09.2007
Адрес: Харьков
Сообщений: 149
По умолчанию Ошибка в команде mredit

Буду краток.

Делая свой мегамад на основе кода Былин, я нашел серьезную ошибку в этом коде.

В файле item.creation.cpp нарушен баланс фигурных скобок, причем серьезно, я так и не понял, почему этот файл, а точнее команда создания и редактирования рецептов mredit всё таки как-то работает. Ошибка заключается в том, что при вводе ошибочной команды (например вместо выхода "q" я нажал не в том регистре букву "й") не выдается "ошибочный ввод", а мад тупо вываливается в корку. Анализ исходника и показал мне нарушенный баланс скобок, точнее скобки не на том месте (синтаксически верно, компилятор ничего такого не замечает, а выполняется неверно). Анализировался файл item.creation.cpp версии Date: 2009/11/22 08:30:50 Revision: 1.29, полученный сегодня при помощи cvs с сайта Былин, то есть свежий. Вот исправленный файл

http://prool.kharkov.org/mud/bugfixe...m.creation.cpp

Я там в нужном месте пометил комментарием // prool, но лучше сделайте diff с оригинальным файлом и всё будет видно
__________________
Prool

http://prool.kharkov.org
prool вне форума   Ответить с цитированием
Старый 19.06.2010, 21:38   #2
krodo
Гость
 
Сообщений: n/a
По умолчанию

Ну командой очевидно никто не пользовался, не факт, что она вообще доделанная изначально. За скобки эти канеш спасибо, но перед использованием я бы плотно ознакомился че она там вообще редактирует и как. ж)
Цитата:
Сообщение от prool Посмотреть сообщение
Я там в нужном месте пометил комментарием // prool, но лучше сделайте diff с оригинальным файлом и всё будет видно
Дифф на 2000 строк из-за переформатированных под k&r скобок доставил.
  Ответить с цитированием
Старый 20.06.2010, 00:26   #3
prool
Занятой мадер
 
Регистрация: 24.09.2007
Адрес: Харьков
Сообщений: 149
По умолчанию

Цитата:
Сообщение от krodo Посмотреть сообщение
Ну командой очевидно никто не пользовался, не факт, что она вообще доделанная изначально. За скобки эти канеш спасибо, но перед использованием я бы плотно ознакомился че она там вообще редактирует и как. ж)

Дифф на 2000 строк из-за переформатированных под k&r скобок доставил.
Команда работает, билдер из Киева, работающий в моем маде под псевдонимом Младин ею пользовался и создал пару рецептов.

Что же касается диффа, я ничего не пойму, лично я форматирование не менял. Вот мой дифф:

161a162
> #if 1 // prool
235a237
> } // prool
391d392
< }
394a396,397
> #endif
>

На появление строк #if 1 #endif не смотри, я из использовал для экспериментов и отладки. Если число строк не поменялось, мой дифф даст нужную информацию
__________________
Prool

http://prool.kharkov.org
prool вне форума   Ответить с цитированием
Старый 20.06.2010, 00:31   #4
prool
Занятой мадер
 
Регистрация: 24.09.2007
Адрес: Харьков
Сообщений: 149
По умолчанию

Или вот так: расскажу устно:

В функции mredit_parse() в альтернативе case MREDIT_MAIN_MENU: должен быть вот такой фрагмент:

if (sagr == "q") {
// Проверяем не производилось ли изменение
if (OLC_VAL(d)) {
send_to_char("Вы желаете сохранить изменения в рецепте ?(y/n) : ", d
->character);
OLC_MODE(d) = MREDIT_CONFIRM_SAVE;
return;
} else {
// Загружаем рецепты из файла
// Это восстановит текущее состояние дел.
make_recepts.load();
// Очищаем структуры OLC выходим в нормальный режим работы
cleanup_olc(d, CLEANUP_ALL);
return;
}
} // prool
send_to_char("Неверный ввод.\r\n", d->character);
mredit_disp_menu(d);

break;

Помеченную комментарием // prool фигурную скобку я добавил, чтобы правильно закрыть оператор if. А для сохранения баланса скобок надо убрать неправильную закрывающуюся скобку в конце функции.
__________________
Prool

http://prool.kharkov.org
prool вне форума   Ответить с цитированием
Старый 20.06.2010, 02:20   #5
krodo
Гость
 
Сообщений: n/a
По умолчанию

Исправил я эту скобку еще перед тем как ответить, шо ж ты так плохо обо мне думаешь. ж)
На счет дифа - нет в коде давно такого форматирования:
if () {
...
} else {
...
}
Может у тя редактор автоматом меняет и дифф с какими-то умными опциями, я хз.
  Ответить с цитированием
Старый 20.06.2010, 12:47   #6
prool
Занятой мадер
 
Регистрация: 24.09.2007
Адрес: Харьков
Сообщений: 149
По умолчанию

Цитата:
Сообщение от krodo Посмотреть сообщение
Исправил я эту скобку еще перед тем как ответить, шо ж ты так плохо обо мне думаешь. ж)
Да не думаю я про тебя плохо. Humanum erratum est

В файле, вытащенном вчера по cvs с Былин эта ошибка еще была

Цитата:
На счет дифа - нет в коде давно такого форматирования:
if () {
...
} else {
...
}
Может у тя редактор автоматом меняет и дифф с какими-то умными опциями, я хз.
Редактор у меня vi, diff самый обычный, из FreeBSD
__________________
Prool

http://prool.kharkov.org
prool вне форума   Ответить с цитированием
Старый 21.06.2010, 16:49   #7
panas
Новичок
 
Регистрация: 03.04.2005
Сообщений: 26
По умолчанию

Настоящие мадеры настолько суровы, что не пользуются другими текстовыми редакторами, кроме vi
Простите за флейм, не удержался
panas вне форума   Ответить с цитированием
Старый 21.06.2010, 22:43   #8
prool
Занятой мадер
 
Регистрация: 24.09.2007
Адрес: Харьков
Сообщений: 149
По умолчанию

Цитата:
Сообщение от panas Посмотреть сообщение
Настоящие мадеры настолько суровы, что не пользуются другими текстовыми редакторами, кроме vi
Простите за флейм, не удержался
Нет, vi для мадера слишком мощный и слишком визуальный редактор. Во встроенном в мад редакторе объектов, комнат и мобов olc есть встроенный миниредактор текстовых описаний, это даже не vi, это нечто похожее на построчный редактор ed, который был предшественником vi
__________________
Prool

http://prool.kharkov.org
prool вне форума   Ответить с цитированием
Старый 23.06.2010, 22:03   #9
Urik
Отличник форума
 
Регистрация: 06.03.2004
Адрес: Деревня РСП
Сообщений: 1,018
По умолчанию

Святое не трожьте!
__________________
Прыг секунда, скок столетие...
Urik вне форума   Ответить с цитированием
Старый 25.06.2010, 08:54   #10
Jalin
Занятой мадер
 
Регистрация: 01.05.2006
Сообщений: 125
По умолчанию

Цитата:
Сообщение от Urik Посмотреть сообщение
Святое не трожьте!
читить нечем будет?
__________________
Хто до нас з пиво прийде, той за горілкою і побіжить!
Jalin вне форума   Ответить с цитированием
Старый 25.06.2010, 15:09   #11
lexik
Админ форума
 
Регистрация: 05.03.2004
Сообщений: 635
По умолчанию

ты ж уже "прошел эту игру" иди иди
__________________
©º°¨¨°º© МПМ "Былины" ©º°¨¨°º© Мир преданий и сказаний Древней Руси
lexik вне форума   Ответить с цитированием
Ответ


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

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

Быстрый переход


Часовой пояс GMT +4, время: 02:09.


Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot