Цитата(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)