| 
 | |||||||
| Ф/\Ей|\/| Ну сами понимаете... должно быть место, которое не модерируется... Но не злоупотребляйте... | 
|  | 
|  | Опции темы | Опции просмотра | 
|  19.06.2010, 19:36 | #1 | 
| Занятой мадер  Регистрация: 25.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 с оригинальным файлом и всё будет видно | 
|   |   | 
|  19.06.2010, 22:38 | #2 | 
| Гость 
					Сообщений: n/a
				 |   
			
			Ну командой очевидно никто не пользовался, не факт, что она вообще доделанная изначально. За скобки эти канеш спасибо, но перед использованием я бы плотно ознакомился че она там вообще редактирует и как. ж) Дифф на 2000 строк из-за переформатированных под k&r скобок доставил. | 
|   | 
|  20.06.2010, 01:26 | #3 | |
| Занятой мадер  Регистрация: 25.09.2007 Адрес: Харьков 
					Сообщений: 149
				 |   Цитата: 
 Что же касается диффа, я ничего не пойму, лично я форматирование не менял. Вот мой дифф: 161a162 > #if 1 // prool 235a237 > } // prool 391d392 < } 394a396,397 > #endif > На появление строк #if 1 #endif не смотри, я из использовал для экспериментов и отладки. Если число строк не поменялось, мой дифф даст нужную информацию | |
|   |   | 
|  20.06.2010, 01:31 | #4 | 
| Занятой мадер  Регистрация: 25.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. А для сохранения баланса скобок надо убрать неправильную закрывающуюся скобку в конце функции. | 
|   |   | 
|  20.06.2010, 03:20 | #5 | 
| Гость 
					Сообщений: n/a
				 |   
			
			Исправил я эту скобку еще перед тем как ответить, шо ж ты так плохо обо мне думаешь. ж) На счет дифа - нет в коде давно такого форматирования: if () { ... } else { ... } Может у тя редактор автоматом меняет и дифф с какими-то умными опциями, я хз. | 
|   | 
|  20.06.2010, 13:47 | #6 | ||
| Занятой мадер  Регистрация: 25.09.2007 Адрес: Харьков 
					Сообщений: 149
				 |   Цитата: 
 В файле, вытащенном вчера по cvs с Былин эта ошибка еще была Цитата: 
 | ||
|   |   | 
|  21.06.2010, 17:49 | #7 | 
| Новичок Регистрация: 03.04.2005 
					Сообщений: 26
				 |   
			
			Настоящие мадеры настолько суровы, что не пользуются другими текстовыми редакторами, кроме  vi   Простите за флейм, не удержался   | 
|   |   | 
|  21.06.2010, 23:43 | #8 | 
| Занятой мадер  Регистрация: 25.09.2007 Адрес: Харьков 
					Сообщений: 149
				 |   
			
			Нет, vi для мадера слишком мощный и слишком визуальный редактор. Во встроенном в мад редакторе объектов, комнат и мобов olc есть встроенный миниредактор текстовых описаний, это даже не vi, это нечто похожее на построчный редактор ed, который был предшественником vi
		 | 
|   |   | 
|  23.06.2010, 23:03 | #9 | 
| Отличник форума  Регистрация: 06.03.2004 Адрес: Деревня РСП 
					Сообщений: 1,018
				 |   
			
			Святое не трожьте!
		 
				__________________ Прыг секунда, скок столетие... | 
|   |   | 
|  25.06.2010, 09:54 | #10 | 
| Занятой мадер  Регистрация: 01.05.2006 
					Сообщений: 125
				 |   
				__________________ Хто до нас з пиво прийде, той за горілкою і побіжить! | 
|   |   | 
|  25.06.2010, 16:09 | #11 | 
| Админ форума  Регистрация: 05.03.2004 
					Сообщений: 635
				 |   
			
			ты ж уже "прошел эту игру"   иди иди   
				__________________ ©º°¨¨°º© МПМ "Былины" ©º°¨¨°º© Мир преданий и сказаний Древней Руси | 
|   |   |