|
| |||
|
| |||
| |
Здравствуйте. Вы находитесь на сайте Unreal Level. Данный ресурс посвящен редакторам карт игр серии Unreal, UT и Gears of War. Основная цель сайта , помочь всем желающим освоить любой из редакторов вышеперечисленных серий. Наибольшим приоритетом на этом сайте, обладает редактор UnrealED for Unreal Engine 3 и редактор движка Unreal Engine 3.5, входящий в комплект разработки UDK, поскольку это наиболее актуальная на сегодняшний день технология. |
|
Creating a XP system
автор: Brain | 1 Ноября 2010 | Просмотров: 6362
Автор: mktwo Перевод: Voland Оригинал: Creating a XP system Прежде всего убедитесь, что Вы уже знаете как устанавливать эти коды, т.к. в этом уроке это не объясняется. Во-вторых, я полагаю что Вы уже немного знакомы с UnrealScript. Например, Вы должны знать как наследуемые классы работают,и как делается свой тип игры, как сделать свой собственный HUD, PlayerController и т.д. Если Вы не знаете всего этого то можно некоторые вещи посмотреть на этом сайте, также на других русских сайтах и естественно на заморских, например тут. HUD создан по этому уроку. Здесь представлены файлы для работы. MyGame.uc MyPlayerController.uc SeqAct_GiveXP.uc (optional) MyHUD.uc MyGame.uc Скрипт содержит наш созданный тип игры class MyGame extends UTGame; // Функция, которая выполняется после каждого убийства function ScoreKill(Controller Killer, Controller Other) { local MyPlayerController PC; super.ScoreKill(Killer, Other); PC = MyPlayerController(Killer); // переход к пользовательскому классу MyPlayerController PC.GiveXP(100); //Позволяет изменять количество получаемого опыта } DefaultProperties { // DefaultPawnClass = class'UTGame.UTPawn' PlayerControllerClass = class'MyGame.MyPlayerController' HUDType = class'MyGame.MyHUD' } MyPlayerController.uc Здесь мы получаем опыт, повышаем уровень. Функции не находятся в MyPawn для того чтобы опыт сохранялся после смерти. class MyPlayerController extends UTPlayerController config(MyGame); const MAX_LEVEL = 50; const XP_INCREMENT = 500; // Количество опыта до следующего уровня var int XP; // Общая сумма собранных XP var int Level; // Текущий уровень var int XPGatheredForNextLevel; // Количество набранного опыта var int XPRequiredForNextLevel; // Количество необходимых XP до нового уровня //При старте игры мы подсчитываем сколько нужно получить опыта чтобы перейти на новый уровень simulated function PostBeginPlay() { super.PostBeginPlay(); // Обсчитываем свойства при старте игры CalculateLevelProgress(); } //Здесь мы объявляем функцию,которая позволяет поменять кол-во опыта нужного для следующего уровня через Kismet // Функция вызываемая из Kismet public function AddXP(SeqAct_GiveXP action) { GiveXP(action.Amount); // Количество опыта получаемого с учетом установки в Kismete } //Функция добавления опыта public function GiveXP(int amount) { self.XP += amount; CalculateLevelProgress(); while (self.XPGatheredForNextLevel >= self.XPRequiredForNextLevel && self.Level < MAX_LEVEL) { self.Level++; // Пересчитываем опыт после "Level Up" CalculateLevelProgress(); } } //Дальше мы объявляем функцию, которая считает сколько нужно еще опыта для достижения следующего уровня private function CalculateLevelProgress() { local int xpToCurrentLevel; // Текущее количество накопленного опыта xpToCurrentLevel = XP_INCREMENT * (self.Level - 1); self.XPGatheredForNextLevel = self.XP - xpToCurrentLevel; self.XPRequiredForNextLevel = self.Level * XP_INCREMENT; } DefaultProperties { Level = 1; XP = 0; } SeqAct_GiveXP.uc (optional) В этом скрипте мы создаем Sequence Action, который мы будем использовать в Kismet class SeqAct_GiveXP extends SequenceAction; var() int Amount; // Количество XP которое это действие даст //Добавляем немного информации, чтобы было удобнее использовать в kismet DefaultProperties { // Имя функции в Kismet Editor ObjName="Add XP" // Имя функции при использовании HandlerName="AddXP" Amount = 0 // Показывает входы и выходы блока полученного в Kismet VariableLinks(1)=(ExpectedType=class'SeqVar_Int', LinkDesc="Amount", bWriteable=true, PropertyName=Amount) } Используем Kismet для изменения системы получения опыта Сначала Вы должны сделать триггер, жмем Add Actor > Add Trigger. Дальше выбираем триггер и идем в kismet. Добавляем триггер New Event Using Trigger_0 > Touch. Дальше добавляем Add XP-action. Соединяем Touched с In. Дальше New Variable > Player > Player и цепляем к target. New Variable > Int > Int и пишем количество начисляемого опыта за одно убийство и цепляем к Amount. Сохраняемся и наслаждаемся результатом! #1 написал: Brain 1 Ноября 2010 19:25 | ICQ: Не Указано |
#2 написал: netgoblin 2 Ноября 2010 01:02 | ICQ: Не Указано |
#3 написал: FACH 2 Ноября 2010 08:05 | ICQ: 562039160 |
#4 написал: Snoopy 2 Ноября 2010 13:05 | ICQ: 597396906 |
#5 написал: FACH 2 Ноября 2010 14:37 | ICQ: 562039160 |
#6 написал: Snoopy 2 Ноября 2010 16:08 | ICQ: 597396906 |
#7 написал: FACH 2 Ноября 2010 16:48 | ICQ: 562039160 |
#8 написал: Igrom 4 Ноября 2010 12:30 | ICQ: Не Указано |
#9 написал: Snoopy 4 Ноября 2010 18:04 | ICQ: 597396906 |
#10 написал: alexut 5 Ноября 2010 23:16 | ICQ: Не Указано |
#11 написал: nikolayxxx 6 Ноября 2010 04:05 | ICQ: 455775817 |
#12 написал: Igrom 6 Ноября 2010 09:19 | ICQ: Не Указано |
#13 написал: Snoopy 6 Ноября 2010 11:13 | ICQ: 597396906 |
#14 написал: FACH 7 Ноября 2010 17:22 | ICQ: 562039160 |
#15 написал: Snoopy 7 Ноября 2010 19:09 | ICQ: 597396906 |
#16 написал: ScorpyX 10 Ноября 2010 00:57 | ICQ: 333879808 |
#17 написал: SergMD 11 Декабря 2010 11:53 | ICQ: Не Указано |
Информация
Посетители, находящиеся в группе Гости, не могут оставлять Комментарии в данной новости...
|
|
|
При копировании материалов, активная ссылка на UNREAL-LEVEL.RU обязательна! © 2008—2012, UNREAL-LEVEL.RU. Все права защищены. |