@Seiwer

.5f это число? А если и нет то где искать число?

Привет всем! В общем я тут подучиваю язык программирования на опыте ковыряя исходный код движка и модифицируя стоковые карты и скрипты. И я столкнулся со странной проблемой....

В общем я модифицирую карту где ты выживаешь 5 волн тварей всяких, и я захотел добавить новую волну увеличив количество тварюг до 100 (хардкор под конец)..

И сижу значит роюсь в исходном коде и вот что нашел:

Значит количество тварюг в 1 волне выглядит так в коде:

string GetCreateEnemyTypeName()
		{
			float bug = 0;
			float zombie = 0;
			float robot = 0;

			switch( level )
			{
			case 1:
				zombie = 1;
				break;

			case 2:
				bug = .5f;
				zombie = .5f;
				break;

			case 3:
				zombie = .4f;
				bug = .5f;
				robot = .1f;
				break;

			case 4:
				zombie = .1f;
				bug = .7f;
				robot = .2f;
				break;

			case 5:
				bug = .7f;
				robot = .3f;
				break;
				
			case 6:
				bug = .17f;
				robot = .4f;
				zombie = .30f;
				break;
			}


Значит 1 волна имеет такой код

case 1:
				zombie = 1;
				break;


И вот какое колво тварюг в самой карте:

Screenshot002.png

И вот опять же тварюги но в последней волне:

case 5:
				bug = .7f;
				robot = .3f;
				break;


И вот колво в самой игре:

Screenshot003.png

И я вот не могу понять.... Я могу добавить новые волны... А колво не могу изменить.... И я вот думаю, это я неправильно число изменяю что ничего не меняется и колво такое же как в 5? А может я в целом не там рою где то?

Вот приложу исходный уровня: https://pastebin.com/TxWcJwDm

(Извиняюсь если я как то непонятно выразил вопрос)

Зараннее спасибо)
  • Вопрос задан
  • 265 просмотров
Решения вопроса 2
Это процент каждого типа врагов от общего числа в волне. Обратите внимание, что все они в сумме дают единицу (кроме того, что вы добавили).
Ответ написан
@Seiwer Автор вопроса
В общем я когда внимательно снова перечитал после подсказки понял что система волн сделана на костылях и изоленте...

Как сказал Алексей Уколов то что я смотрел это оказались таблицы процентов определнных мобов для каждой волны

То есть

1 - это 100%
.5f - это 50%
А .1f - это 10%

А то сколько мобов будет рождаться описано вот в этом куске кода:

void GameStart()
		{
			if( level > 6 )
				level = 1;

			remainingCount = 40 + level * 30;
			createInterval = 20.0f / ( level + 30 );

			gameTime = .001f;
			remainingCreateCount = remainingCount;
			GameEngineApp.Instance.ControlManager.PlaySound( "Sounds/Feedback/Accept.ogg" );

			MainPlayerUnitSubscribeToDestroying();

			Turret turret = Entities.Instance.GetByName( "Turret_Game" ) as Turret;
			if( turret != null )
				turret.Health = turret.Type.HealthMax;

			UpdateVictoryObjects( false );
		}


Нас тут интересует только 2 строчки

Первая строчка отвечает за то сколько волн будет запускаться

if( level > 6 )

Если бы мы вписали только проценты мобов в таблице то волну было бы невозможно запустить. Но если тут заменить 5 на другое колво волн (в моем случае на 6) , то ваши созданные волны можно будет запустить

Хоть и будет игра думать что это конец и запустит фейрверки победные на карте но билборд не будет отображать поздравление, а будет отображать вашу созданную волну и только после ее прохождения уже билборд покажет конец....

А инструкция по колве спавна мобов указана тут

remainingCount = 20 + level * 3;
            createInterval = 20.0f / ( level + 15 );

Первая строчка remainingCount = 20 + level * 3;:
Она на первой волне дает 23 всего мобов и с каждой новой волной она будет добавлять по 3 моба на карту. То есть если я изменю 3 на допустим 30 то вот как будут уже выглядеть волны

1 волна - 20
2 волна - 50
3 волна - 80
и т.д

А вторая строчка в этой конструкции (createInterval = 20.0f / ( level + 15 );)
Отвечает за то сколько мобов нужно за раз спавнить на карте во время волны

То есть если всего у вас 140 мобов то каждые 20 секунд на карте будут спавниться 15 мобов до тех пор, пока их итоговое число не будет 140....
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы