|
|
|
Пару Вопросов |
|
|
Barracoon |
27.7.2006, 17:08
|
Adept
Сообщений: 1.169
Регистрация: 21.1.2006 Группа: Пользователи Наличность: 0 Из: Vladivostok
Пользователь №: 4.839
|
Цитата(Solar @ 27.7.2006, 18:12) 1) Какую рануо лучше всего ставить? См. ниже Цитата(NFx @ 27.7.2006, 20:04) 1.) Скорее всего RunUO 2.0RC1 т.к. самая новая Самая новая сеичас - RunUO 2.0, ревизия 66, а не RC1(22 ревизия - ее уже почти никто неиспользует) - лучше оба поставьте её(всмысле 66'ую) - я вечером небольшую колекцию(2 метра в инсталяторе - комплект из RunUO 1.0, RunUO:RE 1.2.7.0, RunUO2 22 ревизия(rc1), и RunUO, 66 ревизия...) на какой-нить бесплатных хост выложу(чтобы вам некачать лишние 10-80 метров)... (IMG: style_emoticons/default/rolleyes.gif) Цитата(Solar @ 27.7.2006, 18:12) 2) Нормальная ли версия раноуо RunUO-Beta-36? Цитата(NFx @ 27.7.2006, 20:04) 2.) Версия как версия, вроде после нее ранка стала 1.0, значит там уже багов не должно быть Ну вполне нормальная - ток неочень-то развернешся на ней - т.к. это полукомерческий билд - хотя жить можно... Насчет того что сразу она вышла после 1.0 - между неи и 1.0 было еше несколько билдов - ток непомню открытых или закрытых (IMG: style_emoticons/default/unsure.gif) Цитата(Solar @ 27.7.2006, 18:12) 3) Где можно достать ньюби справочник и учебник по скриптингу? Цитата(NFx @ 27.7.2006, 20:04) 3.) Скриптинг в РанУО - на языке C#, учебники по нему в любом магазине. ранковские команды есть в папке с рануо в директории docs Скриптинга в RunUO - нет, и пока непредпологается, по краиней мере официально - есть компиляция исходных кодов основной части(Server.exe), и компиляция исходников дополнительного "плагина" - scripts.cs.dll или scripts.vb.dll - их исходники находятся в папке "scripts". Многие отказываются от этого(т.к неочень удобно), и совмешают обе части в одну, заодно выкидывая все ненужное. Насчет справочника и учебника - имхо лучшее по C# - MSDN или ECMA. Если охото подержать бумажный вариант - возьми "Полный справочник по C#" Герберта Шилдта - там довольно неплохо все описано. По RunUO статей на европеиских языках довольно мало - несколько на форуме runuo.com, несколько на ultima.cz, на runuo.uodev.de(на немецком - кстати лучшее из того что есть в европе)... Но большая(и лучшая) часть - на китаиских и кореиских саитах... естевственно на родных языках (IMG: style_emoticons/default/huh.gif) На русском по RunUO почти нечего нет - возможно когда-нибудь я всетаки решусь, и выложу свои статьи на эту тему(уже который раз их переписываю (IMG: style_emoticons/default/sad.gif)). Цитата(NFx @ 27.7.2006, 20:04) папке с рануо в директории docs Перевод всех внутриигровых команд также есть и на этом форуме - в этом-же разделе...
|
|
|
|
Barracoon |
27.7.2006, 17:09
|
Adept
Сообщений: 1.169
Регистрация: 21.1.2006 Группа: Пользователи Наличность: 0 Из: Vladivostok
Пользователь №: 4.839
|
Цитата(Solar @ 27.7.2006, 18:12) 4) Я читал в одном топпе чтобы добавить прелметы в статику нужно юзать [freeze. Она у меня не работает. Я читал что нужно прописывать строку: private static string CustomPath = @"D:\UO_WORK\data\";
в DataPath.cs
Я добавил её в самое начало этого файла, но у меня потом ранка не запустилась(((
Куда именно нужно её записывать? Нужно было вместо Код private static string CustomPath = null; написать, а не добовлять в начало, и вместо "D:\UO_WORK\data\" - нужно прописать путь к своей папке с копией некторых Mul'ов(их список есть в том топике который ты читал) Цитата(Solar @ 27.7.2006, 19:08) 5) Как поменять название шарда Открываеш Scripts\Misc\ServerList.cs, ишеш там Код public const string ServerName = "RunUO TC"; и пишеш вместо "RunUO TC"(такая строка в 2.0) свое название. Цитата(Solar @ 27.7.2006, 19:08) 6) как сделать авторегистрацию? В "Scripts\Accounting\AccountHandler.cs" ишеш Код private static bool AutoAccountCreation = false; и меняеш на Код private static bool AutoAccountCreation = true; там-же можеш поменять количесво аккаунтов на 1 ip(поменяй еденицу на нужное число): Код private static int MaxAccountsPerIP = 1; или можеш вобше отключить ограничение на количесво аккаунтов на IP - удалив эти строки: Исходный код if ( !CanCreate( state.Address ) ) { Console.WriteLine( "Login: {0}: Account '{1}' not created, ip already has {2} account{3}.", state, un, MaxAccountsPerIP, MaxAccountsPerIP == 1 ? "" : "s" ); return null; } Цитата(NFx @ 27.7.2006, 20:04) 6.) она же по умолчанию(1 ип - 1 акк) В некторых билдах - стандартно выключено. Цитата(NFx @ 27.7.2006, 20:04) Цитата(Solar @ 27.7.2006, 19:08) 7) Как другим игрокам коннектиться ко мне? 7.) когда запускаешь РанУО в самом конце тебе выдает три ИПишника. Вообщем-то по ним. Если у тебя локальная сеть и нет собственного ИП(реального ип? не помню как называется), то из интернета никак не присоединиться. Почему-же можно - при желании можно весь трафик RunUO переадресовывать через комп у которого есть "реальный IP" - но это только если сеть того "к кому соеденяются" недоступна тем "кто соеденяется" - в остальных случаях - просто указывается тот ip, по которому сервер "виден" тем, "кто соеденяется" Цитата(Solar @ 27.7.2006, 20:14) И как плевел выставить чару? в игре админом: Код где вместо "i": - Player - 0
- Counselor - 1
- GameMaster - 2
- Seer - 3
- Administrator - 4
- Developer - 5
- Owner - 6
Или через меню [admin
|
|
|
|
Barracoon |
29.7.2006, 18:20
|
Adept
Сообщений: 1.169
Регистрация: 21.1.2006 Группа: Пользователи Наличность: 0 Из: Vladivostok
Пользователь №: 4.839
|
Цитата(Solar @ 29.7.2006, 20:46) Спасибо и щеё вопросы: Какую ранку лучше всего ставит под UO ML? Будет ли эта ранка поддерживать такой 3д клиент как на рисунке: http://newuo.ru/modules.php?name=coppermin...n&album=3&pos=6Уже в котором топике пишу - то что изображено на том скрине - просто фан-арт сделаный в каком-то 3D редакторе... Если хочеш увидеть того что на самом деле является ML: http://newuo.ru/modules/coppermine/albums/...1/129946095.jpgML - лиш дополнение - добавлено много новых вешей, животных... Но с графической стороны небыло ничего изменено еше со времен T2A Цитата(Solar @ 29.7.2006, 20:46) Если я сейчас на RunUO Beta 36 засклю мир смогули я его перенести на RunUO 2.0? Вполне... По идее с бетки на 2.0 все должно вполне гладко переити.. Скорее всего даже ненужно будет менять ниодной строчки... Хотя точно хз - непроверял Цитата(Solar @ 29.7.2006, 20:46) У меня мир очень часто сейвится. Как сделать пореже сейвы? В "Scripts\Misc\AutoSave.cs": Код private static TimeSpan m_Delay = TimeSpan.FromMinutes( 5.0 ); Меняеш "5.0" на необходимое время(в минутах)
|
|
|
|
Barracoon |
31.7.2006, 21:04
|
Adept
Сообщений: 1.169
Регистрация: 21.1.2006 Группа: Пользователи Наличность: 0 Из: Vladivostok
Пользователь №: 4.839
|
Цитата(Solar @ 31.7.2006, 21:51) Например я поставил мунгейт. Как задать ему координаты? И как прописываются координаты? Ну координаты можно прописать в обычный(Moongate) и в мунгеит с сообшением(ConfirmationMoongate) - вобшем ставиш один из них, набираеш [props, тыкаеш на мунгеит и ставиш там(стрелка сбоку от своиства): Цитата Dispellable - можно ли уничтожить мунгеит спеллом "dispell" Target - координаты куда необходимо телепортировать TargetMap - карта на которую телепортировать или прописываеш вручную Код [add moongate // добавляем мунгеит [set Dispellable False // нельзя уничтожить [set Target (123,456,789) // координаты - к примеру x=123,y=456,z=789 [set TargetMap 0 // 0 - Felucca
Цитата(Solar @ 31.7.2006, 21:51) И ещё, как сделать стоун, чтобы при дабл клике на нём тебя кое куда телепортило? Ну а для этого новый аитем создавать надо - можеш использовать этот(в образовательных целях я прокоментировал каждую строку): Исходный код using Server.Items; // Объявляем использование класса Server.Items, что позволяет нам использовать корокие имена
namespace Server.Items // Обьявляем то, что клас будет помешен в пространство имен "Server.Items" { public class MoonGateStone : Moongate // Объявляем новый класс "MoonGateStone", он будет потомком класса "Moongate" { [Constructable] // Указываем на то, что этот аитем можно будет добавлять через меню "ADD" public MoonGateStone() : base( false ) // Создаем основной конструктор класса { this.ItemID=0xED5; // Присваеваем ItemID значение 0xED5(могильный камень) this.Name="MoonGate Stone"; // Присваеваем аитему имя - "MoonGate Stone" }
public override void OnDoubleClick(Mobile from) // Перезаписываем для текушего класса метод "OnDoubleClick", вызывающийся при двоином клике на аитеме { if ( from.Player ) // Если плеер, base.CheckGate( from, 2 ); // проверяем с помошью метода условия для телепортации(с помошью метода "СheckGate", находяшегося в базовом классе "MoonGate"), и если все нормально - телепортируем }
public override bool OnMoveOver(Mobile m) // Перезаписываем метод "OnMoveOver", вызывающися при наступлении на аитем { return false; // Возврашаем "false"(лож) }
public MoonGateStone( Serial serial ) : base( serial ) // Обьявлем конструктор сериализации(сохранения мира) { }
public override void Serialize( GenericWriter writer ) // Перезаписываем метод "Serialize"(вызывается при сохранении аитема из мира в файл) { base.Serialize( writer ); // Вызываем базовый метод "Serialize"(так-же отвечаюший за сохранение аитема из мира в файл) writer.Write((int) 0 ); // Записываем число - текушую версию аитема(дабы иметь от версии к версии изменять данные записываемые/загружаемые аитемом) } public override void Deserialize( GenericReader reader ) // Перезаписываем метод "Deserialize"(вызывается при загрузки аитема из файла в мир) { base.Deserialize( reader ); // Вызываем базовый метод "Serialize"(отвечает за загрузку аитема из файла в мир) int version = reader.ReadInt(); // Читаем текушую версию в переменную "version", далее можно добавить проверку, в которой в зависимости от значения этой переменной будут читатся различные данные } } }
|
|
|
|
Barracoon |
1.8.2006, 16:11
|
Adept
Сообщений: 1.169
Регистрация: 21.1.2006 Группа: Пользователи Наличность: 0 Из: Vladivostok
Пользователь №: 4.839
|
Цитата(Solar @ 1.8.2006, 18:17) Спасибо огромное! И ещё вопрос: Можно ли зделать регион безопасным без скриптов, ну чтобы бить друг друга нельзя было? Нет, без введения дополнительных классов(надеюсь ты незабыл то, что в RunUO скрипты несушествуют?) неполучится, хотя сам класс впринципе несложный(опять-же в образовательных целях коментирую каждую строку): Исходный код using Server; // Объявляем использование класса Server, что позволит использовать корокие имена
namespace Server.Regions // Указываем пространство имен - "Server.Regions" { public class SafeRegion : Region // создаем клас "SafeRegion" базируюшийся на класе "Region" { public SafeRegion() : base("","SafeZone Region",Map.Felucca) // Создаем конструктор класса { }
public static void Initialize() // Создаем процедуру "Initialize" - метод который вызывается при загрузке класса { Region.AddRegion(new SafeRegion()); // Добавляем наш класс региона в глобальный масив регионов с помошью метода "Region.AddRegion" }
public override bool AllowHousing(Mobile from, Point3D p) // Перезаписываем метод отвечаюший за возможность построики домов в данном регионе { return false; // Возврашаем "false" - дома ставить нельзя }
public override bool OnBeginSpellCast(Mobile m, ISpell s) // Перезаписываем метод отвечаюший за возможность каста спеллов в регионе { m.SendLocalizedMessage( 0x7AB65 ); // Выводим кастуюшему(m) локализованое сообшение (SendLocalizedMessage) "You cannot cast spells here."(номер этого сообшения в клилоке - 0x7AB65) return false; // Возврашаем "false" - никакие спелы нельзя кастовать }
public override bool OnSkillUse(Mobile m, int Skill) // Перезаписываем метод отвечаюший за возможность использования скилов в регионе { m.SendLocalizedMessage( 0x7A12D ); // Выводим чару который использует скилы(m) локализованое сообшение (SendLocalizedMessage) "You cannot use skills"(номер этого сообшения в клилоке - 0x7A12D) return false; // Возврашаем "false" - никакие скилы использовать нельзя }
public override bool OnCombatantChange(Mobile m, Mobile Old, Mobile New) // Перезаписываем метод отвечаюший за возможность атаки { return false; // Возврашаем "false" - никого атаковать нельзя } } } И потом просто создаеш с помошью Region Editor'а(если неошибаюсь - ссылка есть в разделе "дополнительный софт") создаеш регион с таким-же именем(SafeZone Region) Цитата(Solar @ 1.8.2006, 18:17) И где можно поменять координаты при создании чара? В "Scripts\Misc\CharacterCreation.cs" есть метод "GetStartLocation" - вот он за это и отвечает за места, куда попадают чары при создании: Исходный код private static CityInfo GetStartLocation( CharacterCreatedEventArgs args, bool isYoung ) { switch ( args.Profession ) // Пишем конструкцию для сравнения(switch) числа находяшегося в переменной "args.Profession" { case 4: // Если професия(args.Profession) равна 4(Некромансер) { return new CityInfo( "Umbra", "Mardoth's Tower", 2114, 1301, -50, Map.Malas ); // Возврашаем "CityInfo" с координатами Амбры } case 5: // Если 5(паладин) { return new CityInfo( "Haven", "Uzeraan's Mansion", 3578, 2589, 0, Map.Trammel ); // Возврашаем "CityInfo" с координатами "Хевена" } case 6: // Если 6(Самурай) { return new CityInfo( "Samurai DE", "Haoti's Grounds", 368, 780, -1, Map.Malas ); // Возврашаем "CityInfo" с координатами "квестовой плашадки" самураев } case 7:// Если 7(нинзя) { return new CityInfo( "Ninja DE", "Enimo's Residence", 414,823, -1, Map.Malas ); // Возврашаем "CityInfo" с координатами "квестовой плашадки" нинзь } default: // Если ничего выше неподошло { if( isYoung ) // Если это "молодой"(Young) плеер return new CityInfo( "Haven", "Uzeraan's Mansion", 3582, 2587, 0, Map.Trammel ); // возврашаем "CityInfo" с координатами "Хевена" else // иначе return args.City; // Возврашаем "CityInfo" с местом которое выбрал плеер при создании } } } так вот, тут место выбирается в зависимости от професии(switch ( args.Profession )), и возврашается тип "CityInfo", содержаший следуюшие параметры: Код CityInfo( "НазваниеМеста", "ОписаниеМеста", координата_X, координата_Y, координата_Z, карта ); Можеш менять любые координаты в этом методе. А если к примеру ты хочеш чтобы все чары при создании появлялись в одном месте, с координатами 123,456,789 и это место находится на карте "Felucca", то необходмо заменить весь метод на подобный этому: Код private static CityInfo GetStartLocation( CharacterCreatedEventArgs args, bool isYoung ) { return new CityInfo( "MoeMesto", "Opisanie Moego Mesta", 123, 456, 789, Map.Felucca ); } P.S. Я обьеденил твои посты идушие подряд(заодно удалил флуд про sphere.ini) - пользуися в следуший раз кнопкой "изменить". (IMG: style_emoticons/default/wink.gif)
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|