• Страница 2 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Форум - Russian Tournament » Игры » Unreal Tournament 3 » мутатор на Лонгбоу АВРиЛ (изменение характеристик)
мутатор на Лонгбоу АВРиЛ
XCanG
Цитата GP ()
ucc
Он был лучше гораздо в тукее.

А по поводу кода - он тебе ничего не даст, но раз так хочешь то попробуй найти эту ошибку: http://pastebin.com/6CkFHEG0

Добавлено (22 Января 15, 00:38)
---------------------------------------------
Кроме того вместе со скриптами лежат UTAmmo_LongbowAvril.uc (патроны), UTProj_LongbowAvrilRocket.uc (прожектиль (где я увеличил ему скорость, как просили)), UTWeap_LongbowAvril.uc (подклас UTWeapon), UTWeap_LongbowAvril_Content.uc (подклас предыдущего файла, т.к. он шёл вместе с дефолтным аврилом)


Мой IP сменился с 89.113.234.78/185.42.146.32 на 83.167.1.167. Теперь будет этот. Надолго. Порты те же.
http-сервер
.do impossible   beat unbeatable
GP
А теперь мои "идеи":
1 - в тукее например не нужны исходники классов, которые уже скомпилированы и роботают. Нужны только те скрипты которые ты делаеш - соответственно скачаные исходники ложыть никуда не надо - они нужны чтоб разобратса как роботает код и скорее всего просто не скомпилируютса (попробуй скомпилируй в тукее пакедж engine например)
2 - исходя их структуры тех же стандартных исходников, система похожа.
Цитата XCanG ()
C:\Users\имя_юзера\Documents\My Games\Unreal Tournament 3\UTGame\Src\класс\Classes\
- че за х___я??? Ты хочеш запихнуть свою пушку в пакедж UTGame??? Считай что Development = Unreal Tournament 3,
должно быть (по моему мнению) C:\Users\имя_юзера\Documents\My Games\Unreal Tournament 3\LongbowAvrilPackage\Classes\LongbowAvril.uc
3 - ини файл править уже под это.

Добавлено (22 Января 15, 00:47)
---------------------------------------------
Ты сначала попробуй успешно скомпилировать файл с одной строчкой, который просто extend стандартный avril, кроме него ничего в папке classes быть не должно. А тогда уже можна гулять.

Добавлено (22 Января 15, 01:01)
---------------------------------------------
И ещо, не являетса ли граблями на первой строчке кодировка? писано что надо ANSI. Хорошее обьяснение для 'i', которого не существует.
Сообщение отредактировал GP - Четверг, 22 Января 15, 01:05
XCanG
... походу ты не понял как всё тут устроено. Для начала прочитай статью как делать моды на УТ3 по ссылке Аншейма, например.
Собственно да, я туда положил свои файлы, но ты ошибаешься, я остальные файлы из архива не брал, они вообще нигде там не лежат и не пытаются скомпилироваться.
Но этот вариант не прокатил и вышла та ошибка, что на скриншоте. И тут вот в чём загвоздка! В том архиве с исходниками была какая-то папка, а в ней подпапка Developments, а в ней Src. Это просто совпадение, что путь в ошибке совпадает с путём в архиве исходников? Однако этого пути нету в ini-файле, в нём путь который был описан в статье, ЕСЛИ БЫ там была ссылка на диск C с моими документами (хотябы переменная среды), но ведь там написано ..\UTGame, что означает (пример) "C:\A\b\c\d\launcher.exe make" проверяет каталог C:\A\b\c\UTGame, но не C:\Users\.......
Поэтому я компилировал после первой ошибки в ...Unreal Tourmanent 3\Development\Src\класс\Classes и я уже сказал, но у меня ведь ошибки небыло и "типа" прошла компиляция, вот только в обещаном ModOutputDir=..\UTGame\Unpublished\CookedPC\Script, ни вообще на компьютере, скомпилированного .u не оказалось. Третий вариант это поместить в ...Unreal Tourmanent 3\UTGame\Src, но в этом случае мне компилятор выдал другую ошибку, что пакадж мой не найден нигде и компиляция невозможна.

Добавлено (22 Января 15, 01:04)
---------------------------------------------
Этот код оринтировочно правильный в стиле UT2004. Я всё специально сверил, вот только в чём дело и проблема ли вообще в самом коде, а не компиляторе, я не знаю.


Мой IP сменился с 89.113.234.78/185.42.146.32 на 83.167.1.167. Теперь будет этот. Надолго. Порты те же.
http-сервер
.do impossible   beat unbeatable
XCanG
UnShame, у тебя файлы лежали в моих документах? И кодировка UTF-8 или UTF-8 without BOM?
Сейчас и вчера у меня все .uc файлы были в кодировке UTF-8.

Я тут подумал может это стимовский UT3 какой-то не такой или что. У тебя какой установлен?

Добавлено (22 Января 15, 15:01)
---------------------------------------------
Да, сделал UTF-8 without BOM и теперь компилирование пошло дальше, а всё лежало в моих документах.
Вот только теперь ему не нравится ошибка в стандартном коде, который я не менял пока.

Код
simulated function EndFire(byte FireModeNum)
{
  local UTPlayerController PC;
  local int i;
  local UTProj_AvrilRocketBase Rocket;
  local UTPawn P;

  if (FireModeNum == 1 && bTargetingLaserActive)
  {
   // targeting laser altfire
   bTargetingLaserActive = false;
   LaserEffect.DeactivateSystem();
   WeaponPlaySound(TargetingLaserStopSound);
   ClearFlashLocation();
   P = UTPawn(Instigator);
   if (P != None)
   {
    P.SetWeaponAmbientSound(None);
   }
   // lose target lock on any rockets we were controlling
   for (i = 0; i < TargetedProjectiles.length; i++)
   {
    Rocket = UTProj_AvrilRocketBase(TargetedProjectiles[i]);
    if (Rocket != None && Rocket.LockingWeapon == self && Rocket.MyWeapon != self)
    {
     Rocket.SetTarget(None, self); // ошибка в этой строчке, это 615-ая строка
    }
   }
   TargetedProjectiles.length = 0;
  }

  PC = UTPlayerController(Instigator.Controller);
  if (PC != None && LocalPlayer(PC.Player) != none && FireModeNum < bZoomedFireMode.Length && bZoomedFireMode[FireModeNum] != 0)
  {
   if ( GetZoomedState() != ZST_NotZoomed )
   {
    PC.EndZoom();
   }
  }
  Super(Weapon).EndFire(FireModeNum);
}

Мой IP сменился с 89.113.234.78/185.42.146.32 на 83.167.1.167. Теперь будет этот. Надолго. Порты те же.
http-сервер
.do impossible   beat unbeatable
XCanG
UnShame, этот код из того архива, что ты скинул, я в этом файле пока только имя пакаджей поменял на свои и всё.

Мой IP сменился с 89.113.234.78/185.42.146.32 на 83.167.1.167. Теперь будет этот. Надолго. Порты те же.
http-сервер
.do impossible   beat unbeatable
GP
Ну я предупредил, что это всго-лиш
Цитата GP ()
"идеи"
. Так как я понял из туториалов в ини файле мы говорим компилятору где скрипты лежат, тоесть ModPackagesInPath=..\UTGame\Src - папка мода, в которой все пакеджы мода, а ModPackages=LongbowAvril - папка-пакедж в которой непосредственно папка с классами.

По ошыбке: ошибка говорит, что второй параметр в Rocket.SetTarget(None, self) не того типа, что должен быть. Например функцыя хочет чтоб там был павн, а ты пихаеш туда переменную A, которая в var описана как актор (var Actor A), и может быть чем угодно. И даже если ты проверил павн ли это, надо писать Pawn(A). в таком случае если А павн или подклас павна - то все ок, а если нет то там просто получитса none.
Если покороче то нужно: посмотреть какого типа вторая переменная в класе UTProj_AvrilRocketBase, т.к. он кастомный, то в его суперкласе. посмотрел...
если твой UTWeap_LongbowAvril extends UTWeap_Avril можно self заменить на UTWeap_Avril(self), или в класе прожектиля прожектиля изменить чтоб он обращалса не к UTWeap_Avril а к UTWeap_LongbowAvril.
XCanG
Цитата GP ()
или в класе прожектиля прожектиля изменить чтоб он обращалса не к UTWeap_Avril а к UTWeap_LongbowAvril
в том коде я ничего не нашёл, что бы обращалось к какому-то классу. я сначала сам думал что изменить, но там и менять то нечего


Предположитльно хотелось бы второй вариант сделать, так как если я буду наследовать, то возможно появятся проблемы из-за другой системы прицеливания (которую я собирался настроить после первой удачной компиляции -_-), поэтому я наследую от UTWeapon, а не от Аврила. Это в случае с патронами, с прожектилем я могу наследовать от аврильских патронов и прожектиля, изменив только defaultproperties.

Мой IP сменился с 89.113.234.78/185.42.146.32 на 83.167.1.167. Теперь будет этот. Надолго. Порты те же.
http-сервер
.do impossible   beat unbeatable
Сообщение отредактировал XCanG - Четверг, 22 Января 15, 22:15
GP
Extennds - расшыряет, дополняет... каждый клас наследует все функцыи предшественника и то что ты их не копировал ничего не значит - они там есть, там даже есть все функцыи которые есть в Actor и тем более в Object. Ты их не пишеш, но они берутса "которая ближе по дереву". (очевидно, но на всякий случай пишу) У тебя UTProj_LongbowAvrilRocket это подклас UTProj_AvrilRocket, он в свою очередь подклас UTProj_AvrilRocketBase.
Другими словами: открой UTProj_AvrilRocket, в нем нет функцыи которую вызывает пушка, значит лезеш в его суперклас - UTProj_AvrilRocketBase. Вот в нем есть функцыя
"function bool SetTarget(Actor NewTarget, UTWeap_Avril NewLockOwner)"
Как видиш второй параметр имеет тип UTWeap_Avril. Вот эту функцыю целиком с кишками копируеш в свой прожектиль изменив тип с UTWeap_Avril на UTWeap_LongbowAvril. Только тогда ты своей функцыей "затмиш" функцыю суперкласа. НО! В тукее например такое не всегда получаетса провернуть: содержымое функцыии можно поменять, а вот шапку, которая идет в описание редко. Так что лучше первый вариант.
Как по мне первый вариант "правильней" - так как ты не меняеш того что тебе не надо менять.
Проблем с самонаводкой не будет, так как твоя пушка подклас стандартной, и ей свойственно все, что свойственно ей до тех пор, только если это не переделать криво, поэтому нет ничего кривого в обращении к стандартному прожектилю типа "смотри, я тоже стандартная пушка а не что-попало".
Сообщение отредактировал GP - Четверг, 22 Января 15, 22:58
XCanG
Цитата GP ()
UTProj_AvrilRocketBase.
Ааа, вот она где собака зарыта, вот именно этот класс мне надо изменить. Я думал сначала что этот класс для другого нужен и не стал его дубликат делать.

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

Добавлено (22 Января 15, 23:20)
---------------------------------------------
Если тупо не менять код, а изменить наследование, то мне компилятор выдал варинги на все функции, что они уже объявлены, но компиляция наконец-то прошла успешно.


Мой IP сменился с 89.113.234.78/185.42.146.32 на 83.167.1.167. Теперь будет этот. Надолго. Порты те же.
http-сервер
.do impossible   beat unbeatable
GP

Цитата XCanG ()
Если я первым вариантом сделаю, тогда я могу избавиться в UTWeap_LongbowAvril от тех функций, где я не вношу никаких изменений

В иделе, те функцыи, которых ты не меняеш писать не надо, они есть сами по себе, просто пишеш моя_херня extends стандартная_херня, и все, может быть пустой файл - это уже копия, в нем уже все есть что есть в стандартной_херне, не надо копировать текст из оригинала. Копируеш толко те функцыи, которые ты переделываеш, и те которые жестко задают типы (вот эта последняя ошыбка). Чесно говоря, смотря на то как тут все сделано, я бы тебе посоветовал просто скопировать все что связано с аврилом. Тоесть не делать свою пушку как подклас аврила, прожектиль как подклас стандартного и т.д, а сделать просто копию всех файлов со всем их содержымым просто с другими названиями, не менять им екстендс. А уже в самих файлах менять везде где есть посылка на стандартное поставить свои названия. Торетически это длинный путь, но он надежный, и менять можно будет что угодно без гемороя.
к примеру поменял ты название с "прожектиль" на "новый_прожектиль", и просто во всех файлах ищеш поиском где попадаетса слово "прожектиль" и меняеш его на "новый_прожектиль", и так скаждым.
XCanG
Настроил скорость. И кстати, лол, нашёл опечатку в коде yaoming

Так-же сделал так, чтобы после сброса фокуса с цели автонаведение не терялось, но вот что не получается, так это наведение на павн.

Вот что по теме я нашёл в коде, но привязки именно к технике я не заметил и тут ступор.
Код
native function UpdateLockTarget(Actor NewLockTarget);

/**
  *  This function is used to adjust the LockTarget.
  *  Called by UpdateLockTarget() only when NewLockTarget is different from LockTarget
  */
event AdjustLockTarget(actor NewLockTarget)
{
  if ( (NewLockTarget == None) || NewLockTarget.bDeleteMe )
  {
   // Clear the lock
   if (bLockedOnTarget)
   {
   }
  }
  else
  {
   // Set the lock
   bLockedOnTarget = true;
   LockedTarget = NewLockTarget;
   if ( LockAcquiredSound != None && Instigator != None  && Instigator.IsHumanControlled() )
   {
    PlayerController(Instigator.Controller).ClientPlaySound(LockAcquiredSound);
   }
  }

  CheckLockZoom();

  if (MyRocket != none)
  {
   MyRocket.SetTarget(NewLockTarget, self);
  }
}
Код
/**
  * Given an actor (TA) determine if we can lock on to it.  By default only allow locking on
  * to pawns.  Some weapons may want to be able to lock on to other actors.
  */
native function bool CanLockOnTo(Actor TA);

Что тут изменить, чтобы наведение было и на игроков я не знаю.

Добавлено (23 Января 15, 00:52)
---------------------------------------------

Цитата GP ()
может быть пустой файл
Это то я знаю. Конкретно интересовал тот факт, когда я делаю обращение к функции, код которой не написан в этом контексте (то есть ни одного упоминания), то нужно ли её наличие или нет. Эта вещь мне пришла от опытов в программировании на С, когда мы классы объявляли public или private, либо когда работа была с мультипоточной оптимизацией и объявление функции в одном потоке не всегда означало, что второй поток сможет получить к ней доступ без дублирования оной.
Цитата GP ()
к примеру поменял ты название с "прожектиль" на "новый_прожектиль", и просто во всех файлах ищеш поиском где попадаетса слово "прожектиль" и меняеш его на "новый_прожектиль", и так скаждым.
Это и тому подобное я сделал сразу же, как только сделал дубликаты кода, ещё до того момента как написал мутатор, заменяющий оружие на карте.

Добавлено (23 Января 15, 00:53)
---------------------------------------------
В общем у меня готово всё, кроме наведения на пехоту.

Добавлено (23 Января 15, 00:56)
---------------------------------------------
UnShame, кстати, раз ты компилировал тоже, ты не в курсе как безопасно можно закрыть консоль? В саму консоль написать ничего нельзя (в тукее можно было ввесли quit), а любая попытка её закрыть вызывает окно, словно компилятор повис ("программа не отвечает, что выберете: поиск в инете, закрыть принудительно, отладка приложения") и каждый раз я закрываю её таким способом, лол.


Мой IP сменился с 89.113.234.78/185.42.146.32 на 83.167.1.167. Теперь будет этот. Надолго. Порты те же.
http-сервер
.do impossible   beat unbeatable
GP
Цитата XCanG ()
как безопасно можно закрыть консоль
если ты запустил ярлыком или бат-файлом, хз. Если запускал из консоли, та что "типа дос", то можно юзать кнопку Pause/Break, но не факт что здесь поможет.
Цитата XCanG ()
привязки именно к технике я не заметил и тут ступор.

Цитата GP ()
проверки как таковой игрок это или вехикл там нету - пустой ивент с коментарием, что стандартно мол лочимся только на павнах, а другие пушки могут захотеть на чем-то другом, и это надо будет проверять сдесь (где коментарий). Вариант - дописать в пустом can_lockon "return true", но вероятно пушка начнет лочитса на всем подряд.
Идеальный вариант - скопировать функцыю (adjust_lock*** ) от рокетланчера - там отличие только в двух местах: у рокета есть строчка с чем-то относительно PRI (player replication info?), а у аврила есть кусок касательно ракеты (у рокета сложная система зарядки, и видать это в другом месте).

Сейчас не уверен что там только 2 отличия, в детали проверок не вникал. Возьми ту функцыю из рокет ланчера и замени ей, от авриловской оставь только кусок про прожектиль в конце, которого у рокетланчера явно нет.
XCanG
GP, запускал в Win+R "путь до приложения" make

Попробовал поизменять всякие параметры и true приписал и функцию дополнил, ещё сам пошурудил подозрительные на эту тему строчки, но ничего не помогло. Я тут загуглил, это случайно не по той же теме шаманят с этой строчкой https://forums.epicgames.com/threads....ectiles тут вроде бы как лочатся на сферках шоки или хелебендера и я так понял если это в тему, то можно заставить лочиться на акторах игроков?

Мой IP сменился с 89.113.234.78/185.42.146.32 на 83.167.1.167. Теперь будет этот. Надолго. Порты те же.
http-сервер
.do impossible   beat unbeatable
Сообщение отредактировал XCanG - Пятница, 23 Января 15, 03:13
GP
Там не получаетса и советуют делать все вручную, как сделано в тукее - пушка постоянно трейсит, проверяет то, в что упираетса, потом задержки сколько надо продержать чтоб залочилось и сколько надо промазывать чтоб разлочилось, и когда спавнитса прожектиль ему записываетса цель. Ну а прожектиль сам в тике обрабатывает свой полет, к примеру двигаетса прямо, и если у него есть цель то постоянно поворачиваетса в ее сторону, а чтоб самонаводка не была абсолютной ограничиваетса скорость поворота или контролируетса не скорость а ускорене, что физически более правильно и тогда ракету "заносит" на крутых поворотах. Это не проблема в общем, делал не раз, но учитывая мою граматику то что все через форум то займет вечность.
XCanG
Мдэ...
В принципе я могу выложить уже эту версию, ибо кроме этой функции остальное думаю что готово, хотя я не все тесты провёл. Например если кто-то покинет технику то останется ли самонаводка без направления игроком и водителя, а также случай с несколькими целями. Но это я проверю позже.

Мой IP сменился с 89.113.234.78/185.42.146.32 на 83.167.1.167. Теперь будет этот. Надолго. Порты те же.
http-сервер
.do impossible   beat unbeatable
GP
Смотри че нашел в прожектиле:

и что в авриле:


Теоретически в твой аврил надо вписать такое:

Код
simulated function Projectile ProjectileFire()
{
MyRocket = UTProj_AvrilRocketBase(Super.ProjectileFire());
if (MyRocket != None )
MyRocket.ForceLock(PendingLockedTarget);

return MyRocket;
}
Сообщение отредактировал GP - Пятница, 23 Января 15, 03:40
XCanG
Цитата GP ()
Теоретически в твой аврил надо вписать такое:
Код то правильный для компилятора, но прицеливание на павнах всёравно не работает.

Значит дело в PendingLockedTarget? Так как в ней нету среди целей акторов игроков?

Мой IP сменился с 89.113.234.78/185.42.146.32 на 83.167.1.167. Теперь будет этот. Надолго. Порты те же.
http-сервер
.do impossible   beat unbeatable
GP
painface Стоп. Ну рокетанчер в ут3 же лочитса на игроках? Может просто ему поменять модель и режимы огня? Иначе придетса делать вручную. Как ты проверял, что рицеливание не роботает ?
Тут цель ловитса в момент выстрела прожектиля, поэтому визуальных признаков того, что цель захвачена может не быть. Попробуй просто пострелять по павнах и посмотреть, как летит ракета.
Сообщение отредактировал GP - Пятница, 23 Января 15, 18:43
XCanG
Цитата GP ()
Ну рокетанчер в ут3 же лочитса на игроках?
Да, но как и в тукее нужно подождать секунды две (на скидку).
Я не думаю что тут надо менять на рокет, ибо потом всёравно надо на технику ставить лок, да и придётся время убрать и альт-огонь убрать.
К тому же проблема такая,что у рокет ланчера вроде как 3 типа ракеты. Просто прожектиль ракеты, потом другая версия для закрученных ракет (они с предпросчётом похоже) и с самонаводкой. То есть там всё разделено. Просто пальнув ракетой рокета мы не сможем её заставить наводиться. Поэтому и ракету надо будет переделывать.

Мой IP сменился с 89.113.234.78/185.42.146.32 на 83.167.1.167. Теперь будет этот. Надолго. Порты те же.
http-сервер
.do impossible   beat unbeatable
Сообщение отредактировал XCanG - Пятница, 23 Января 15, 22:47
GP
рокетанчер в ут3 не лочитса на технике? вот что значит б___ь универсализацыя, что проще вручную. А в уе4 еще эти блюпринты, кажысь вообще хрен разберешся.
Сообщение отредактировал GP - Пятница, 23 Января 15, 22:54
Форум - Russian Tournament » Игры » Unreal Tournament 3 » мутатор на Лонгбоу АВРиЛ (изменение характеристик)
  • Страница 2 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:

Поддержать сайт

ВКонтакте