Спасибо! Так конечно помогает, но тогда как, добавить скажем 100 денег, если левел персонажа становится больше и в условии стоит что при получении левела 1 деньги должны увеличиваться. Неужели нет функции, которая бы срабатывала 1 раз и сразу останавливалась??
Немного открою карты, чтоб было совсем понятно что я хочу ))
- Код: Выделить всё
//ЗАДАЕМ ОСНОВНЫЕ ПАРАМЕТРЫ
//ПРИСОЕДИНЯЕМ КОНТРОЛЛЕР
var playerInfo : gamecontroller;
//имя
var PlayerName = "Player";
//деньги
var money : int = 0;
//уровень
var level : int = 0;
//ЗАДАЕМ УМЕНЯ
//сила(нанесение повреждений)
var strong : int = 0;
//выносливость(количество максимальных жизней)
var stamina : int = 0;
//защита
var difence : int = 0;
//ловкось(скорость)
var skill : int = 0;
private var showOptions : boolean = false;
//ДЕЛАЕМ ПОЛОСКУ ЖИЗНЕЙ, МАНЫ И ОПЫТА
var imageHealth : Texture;
var imageMana : Texture;
var imageExperience : Texture;
var health : float = 100;
var maxHealth : float = 100;
var mana : float = 100;
var maxMana : float = 100;
var experience : float = 0;
var maxexperience : float = 100;
function OnGUI(){
var rectHP : Rect = Rect(10,500,150 * health/maxHealth ,20);
var rectMP : Rect = Rect(10,525,150 * mana/maxMana ,20);
var rectEXP : Rect = Rect(10,550,150 * experience/maxexperience ,20);
GUI.DrawTexture (rectHP , imageHealth );
GUI.DrawTexture (rectMP , imageMana );
GUI.DrawTexture (rectEXP , imageExperience );
GUI.Label (Rect (10, 500, 100, 30), "HP: " + health);
GUI.Label (Rect (10, 525, 100, 30), "MP: " + mana);
GUI.Label (Rect (10, 550, 100, 30), "EXP: " + experience);
GUI.Label (Rect (70, 500, 100, 30), "/" + maxHealth);
GUI.Label (Rect (70, 525, 100, 30), "/" + maxMana);
GUI.Label (Rect (70, 550, 100, 30), "/" + maxexperience);
//ЗАКОНЧИЛИ ПОЛОСКУ ЖИЗНЕЙ, МАНЫ И ОПЫТА
//ДЕЛАЕМ ОКНО СТАТИСТИКИ ПЕРСОНАЖА
if (GUI.Button(new Rect(Screen.width-85,550,80,25), "Stats")) {
showOptions = !showOptions;
}
if (showOptions) {
GUI.Window (0, new Rect (Screen.width-180-5, 30, 180, 375), WindowFunction, "Player stats");
}
}
//ОКНО СТАТИСТИКИ ПЕРСОНАЖА
function WindowFunction (id : int) {
GUILayout.BeginVertical();
//показываем имя персонажа
GUI.Label (Rect(10,20,150,25), "Name: " + PlayerName );
GUI.Label (Rect(10,40,150,25), "Level: " + level );
GUI.Label (Rect(10,60,150,25), "Money: " + money );
GUI.Label (Rect(10,80,150,25), "Strong: " + strong );
GUI.Label (Rect(10,100,150,25), "Stamina: " + stamina );
GUI.Label (Rect(10,120,150,25), "Difence: " + difence );
GUI.Label (Rect(10,140,150,25), "Skill: " + skill );
GUILayout.EndVertical();
}
//ПАРАМЕТРИРУЕМ ПОВЫШЕНИЕ НАВЫКОВ ПРИ ПОВЫШЕНИИ УРОВНЯ
function Update () {
if (experience==100) {
level++;
experience++;
}
if (level==1) {
//сила(нанесение повреждений)
strong = 1;
//выносливость(количество максимальных жизней)
stamina = 1;
//защита
difence = 1;
//ловкось(скорость)
skill = 1;
//деньги
money=200;
}
questMilk = playerInfo.moloko;
if (questMilk==5) {
experience+=100;
}
if (stamina==1) {
maxHealth=150;
}
}
Так вот, что не понятно: если бесконечное увеличение опыта я ограничиваю добавлением единицы опыта, но с увеличением на единицу левела это уже слишком )) и как быть с деньгами?
Ну ведь должен же быть простой выход,а?
Пробовал
- Код: Выделить всё
BroadcastMessage ("AddMoney", 100.0);
function AddMoney (money : float) {
print (money);
}
И ведь принтит он правильную сумму денег (200) с учетом того что изначально есть 100. А как сделать чтоб не принт, а все таки money+=100???