Страница 38 из 46«1236373839404546»
Форум - Russian Tournament » Игры » UnrealED » Просьбы, подсказки, помощь.
Просьбы, подсказки, помощь.
GP
1 - ModifyPlayer роботает один раз, так не пойдет.
2 - Не уверен что "IsA" есть в 99-м, скорее что нет.
Это делать надо в самой пушке, мутатор может только ставить кастомный молоток. В пушке должно быть две функцыи которые отробатывают при виборе и убирании (в 2k4 это BringUp и PutDown). При выборе пушки проверяем бот ли владелец, и если да то увеличиваем скорость, при убирании тоже проверяем и ставим дефолтную. Скорость должна быть в свойствах Pawn-a. По памяти в 99-м вроде Botидет отдельным подкласом павна, поэтому колупать надо в том направлении.
Алсо я не забросил кодинг, я забросил 2k4 и негодую по поводу безпредела в UT4 fuckyea
UberSoldier
UT4 тоже будешь отрабатывать? Моды там всякие и прочее.

Infinite War v5.0.2 construction
UIP 2.0 - UIPP(UIP 2.1)
GP
Пока только играть, мб хоть научусь нормально. Надо железо чтоб хотя б в FullHD можно было движок насиловать, два монитора для редактора и прочее... ноут не вариант, да и времени не очень много. Как минимум пока альфы-бэты я лезть точно не буду.
UberSoldier
Да там играть то в нечего, только дизайн и графику посмотреть.

Infinite War v5.0.2 construction
UIP 2.0 - UIPP(UIP 2.1)
Gadavre
Цитата UberSoldier ()
Да там играть то в нечего, только дизайн и графику посмотреть.
Мне не понравилась возможность онлайн игры  с обязательным входом в аккаунт, который вместе с достижениями храниться на серверах разрабов.  Раньше такого не было! Любой сбой на сервере и все достижения могут просто стереться. и онлайн игра будет невозможна пока не создашь новый аккаунт. Простой пример из жизни: мой отчим фанат world of tanks, прокачал почти все танки, заработал кучу победных очков, но в один прекрасный момент  его аккаунт, его адрес электронки  просто были стерты или похищены... матерился трехэтажном матом anger , но делать нечего, стал играть заново как новичок и с новичками. pactalom

Отсутствие  сингл компании  и игры в нее в офлайне  также не  красит игру. .. Это не соответствует нашей классической анриловской традиции :)

А попытка разрабов  называть UT4  как первым турнаментом вообше кощунственна и оскарбляет чувства фанов..., если перенесли часть звуков, музыки и физики из ut99 в ut4, то это не повод называть  современный и недоработанный  вариант именем великой классики , именем игры, в которую свое время играло народу  намного больше чем играет сейчас в  ut4, именем игры ради которой покупали новые компьютеры и рубились часами в клубах, забывая о еде и сне...
UberSoldier

Цитата
аккаунт, который вместе с достижениями храниться на серверах разрабов.
Это плохо и вообще если игра катает только через инет это не ок. Я думаю со временем с этим все проще будет и по другому. Да и какие там достижения? Мои достижения в 99 это поиграть в него на своем компе.

Infinite War v5.0.2 construction
UIP 2.0 - UIPP(UIP 2.1)
Gadavre
UberSoldier,
Знаю, есть такая фича в модах, когда одним выстрелом можно заработать несколько фрагов. Ты не думал о том, чтобы добавить эту фичу в свой мод? То есть , если 2 вражеских танка находяться на одной линии и танк игрока буквально одним выстрелом прошивает эти 2 танка, то игрок получает 2 фрага! Круто, не правда?
UberSoldier
Не прокатит, снарады танка не прошибают на сквозь. А вот Взорванный танк зацепит другие объекты находящиеся рядом с ним взрывной волной, будь это пехота которая бежит рядом с танком или другой полуживой танк. Если в танке сидят более одного человека, то вынесешь ты всех оттуда, особенно если это Бредли, который по мимо водилы, еще 4 тела везти может, этого да, с крупного калибра можно с ваншота вынести если под башню зарядить. С БТРом таже история, там 6 тел.
Моя система пробития не такая как в BOT и даже не рядом, смысл почти такой же, но по исполнению совсем другой. Можно конечно сделать такой же, но это нудно и не к чему.

Infinite War v5.0.2 construction
UIP 2.0 - UIPP(UIP 2.1)
GP
Цитата UberSoldier ()
там играть то в нечего
ну преальфа вроде как, не? Все-равно что эпики посчитают ненужным доделаем сами winnerface
Gadavre
GP,
Посмотрите пожалуйста  эту секцию оригинального кода для пушки ImpactHammerI
function float RateSelf( out int bUseAltMode )
{
local float EnemyDist;
local bool bRetreating;
local Pawn P;

bUseAltMode = 0;
P = Pawn(Owner);

if ( (P == None) || (P.Enemy == None) )
return 0;

EnemyDist = VSize(P.Enemy.Location - Owner.Location);
if ( (EnemyDist < 750) && P.IsA('Bot' ) && Bot(P).bNovice && (P.Skill <= 2) && !P.Enemy.IsA('Bot' ) && (ImpactHammer(P.Enemy.Weapon) != None) )
return FClamp(300/(EnemyDist + 1), 0.6, 0.75);

if ( EnemyDist > 400 )
return 0.1;
if ( (P.Weapon != self) && (EnemyDist < 120) )
return 0.25;

return ( FMin(0.8, 81/(EnemyDist + 1)) );
}


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

if ( (EnemyDist < 750) && P.IsA('Bot' ) && Bot(P).bNovice && (P.Skill <= 2) && !P.Enemy.IsA('Bot' ) && (ImpactHammer(P.Enemy.Weapon) != None) )
return FClamp(300/(EnemyDist + 1), 0.6, 0.75);

if ( EnemyDist > 400 )
return 0.1;
if ( (P.Weapon != self) && (EnemyDist < 120) )
return 0.25;

return ( FMin(0.8, 81/(EnemyDist + 1)) );
UberSoldier
Может выучить Английский? Там же указано что начальная дистанция равна 750 и в зависимости от скила круг как говорится сужается.

Infinite War v5.0.2 construction
UIP 2.0 - UIPP(UIP 2.1)
GP
Этот код не "указывает", а выдает оценку "собственных шансов" с этой пушкой и какой режым огня лучше (bUseAltMode). Бот использует это при выборе пушки в зависимости от собственного кода, скорость его реакцыи сдесь не поправить.
Gadavre
GP

Как прочесть это условие для молотка в  функции function ProcessAltTraceHit?  что означают == ?

Код
if ( (Other == None) || (Other == Owner) || (Other == self) || (Owner == None) )
        return;
В классе снайперки в функции ProcessTraceHit этот же код пишут по другому.
Код
if ( (Other != self) && (Other != Owner) && (Other != None) )
{
        if ( Other.bIsPawn )
            Other.PlaySound(Sound 'ChunkHit',, 4.0,,100);
        Other.TakeDamage(100, Pawn(Owner), HitLocation, 30000 * X, MyDamageType);
}
GP
"==" это проверка равности, так-же как ">=" больше или равно и "<=" меньше или равно.
"!=" это не равно, тоесть если "(Other == Owner)" равняетса "True" то "(Other != Owner)" будет равно "False".
"||" это "или", "&&" это "и", ну и скобки по тем же правилам что и в математике.

Код
if ( (Other != self) && (Other != Owner) && (Other != None) )
"(Other != self) && (Other != Owner) && (Other != None)" это X
"if ( X )" = "Если X равно истина"
"(Other != self)" это А
"(Other != Owner)" это B
"(Other != None)" это C
"if ( X )" = "if ( A && B && C )" = "X равно истина если (A равно истина и B равно истина и C равно истина)"
А равно истина если Other не равно себе (актор в котором исполняетса код)
В равно истина если Other не равно собственнику (актора в котором исполняетса код)
С равно истина елси Other не равно пустоте

Добавлено (24 Октября 16, 15:38)
---------------------------------------------

Цитата Gadavre ()
if ( (Other == None) || (Other == Owner) || (Other == self) || (Owner == None) )
return;

тут "если ((Other равно пустоте) или (Other равно собственнику) или (Other равно себе) или (Собственник равен пустоте))", тоесть если что-либо из списка правда то делаетса return функцыя кончаетса.
Gadavre
Цитата GP ()
тоесть если что-либо из списка правда то делаетса return функцыя кончаетса.
То есть функция при вышеназванных условиях не выполняется?
Кстати Owner  - это сам игрок, который применяет оружие.  Понял я по этой строчке  молотка
Код
if ( (Other == Level) || Other.IsA('Mover' ))
    {
        Owner.TakeDamage(100.0, Pawn(Owner), HitLocation, -40000.0 * X, MyDamageType);
    }

Если поставить вместо 100,0  0,0 то можно наносить удары в пол и стены и не получать повреждений  от своего оружия
А вот (Other == self) - это, видимо другой игрок или бот, хотя все равно непонятно, ведь self с английского переводиться как "сам".  Если считать (Other == self) тем игроком, кто делает выстрел, то кто же тогда (Other == Owner)?

а вот в этой строке повреждение получает бот или игрок, в которых стреляют
Код
Other.TakeDamage(100, Pawn(Owner), HitLocation, 30000 * X, MyDamageType);
GP
self это сам актор чей код исполняетса, в коде пушки это пушка, в коде игрока это игрок, в коде ракеты ракета и т.д. В ракете например можно писать damage а можно написать self.damage - это одна и та-же переменная.
owner это владелец, по умолчанию то, в чьем коде создалса обьект (если не указан другой)
тоесть владелец ракеты обычно пушка, владелей пушки - игрок и т.д. это абстракцыи для связи всего воедино
функцыя должна чегото возвращать (y = sin(x)), по этому на return-е код заканчиваетса, даже если возвращать нечего (None, void и т.д.)
Gadavre
GP
Вот нарыл в одном мутаторе, но интересует звездочка *, как она влияет на скорость передвижения?  я так понимаю с этим знаком скорость не 1.4 ?
Код
function ModifyPlayer(Pawn Other)
{
    if ( MyGame.bMegaSpeed )
    {
        Other.GroundSpeed *= 1.4;
    }

    Super.ModifyPlayer(Other);
}
UberSoldier

Цитата
*, как она влияет
Вроде "Умножить на..." не?

Infinite War v5.0.2 construction
UIP 2.0 - UIPP(UIP 2.1)
GP
"A += B" = "A = A + B"
"A -= B" = "A = A - B"
"A /= B" = "A = A / B"
"A *= B" = "A = A * B"
Gadavre
Цитата GP ()
"A *= B" = "A = A * B"

если в defaultproperties GroundSpeed игрока равна 400.000000, то согласно этому коду
Код
Other.GroundSpeed *= 1.4;
A (400) умножаем на B(1.4)  и получаем 560 единиц точной скорости передвижения игрока, верно?

Хотя было проще и понятнее записать:
Код
Other.GroundSpeed = 560;
Не так ли? :)
Форум - Russian Tournament » Игры » UnrealED » Просьбы, подсказки, помощь.
Страница 38 из 46«1236373839404546»
Поиск: