Страница 2 из 4«1234»
Форум - Russian Tournament » Игры » Unreal Tournament 3 » мутатор на Лонгбоу АВРиЛ (изменение характеристик)
мутатор на Лонгбоу АВРиЛ
Creativ
Цитата GP ()
Да я видел, просто удивилса что там нельзя декомпилировать. Порылса в коде аврила... того что советовал не нашел))) там возможность самонаводки учтена в коренном класе прожектиля... ну и как-то все универсализировано - осуждать не берусь, но после тукейного кода очень непривычно на такое смотреть. Но к сути: проверки как таковой игрок это или вехикл там нету - пустой ивент с коментарием, что стандартно мол лочимся только на павнах, а другие пушки могут захотеть на чем-то другом, и это надо будет проверять сдесь (где коментарий). Вариант - дописать в пустом can_lockon "return true", но вероятно пушка начнет лочитса на всем подряд.
Идеальный вариант - скопировать функцыю (adjust_lock*** ) от рокетланчера - там отличие только в двух местах: у рокета есть строчка с чем-то относительно PRI (player replication info?), а у аврила есть кусок касательно ракеты (у рокета сложная система зарядки, и видать это в другом месте).
Короч если кто возьметса то помогу с дебагингом))э
Это пи..дец полный. Вы с какой планеты? А я когда комп купил, думал тоже игру какую нибудь сделать... Ага б..ядь.
UnShame
XCanG
Что-то странное они намутили с тем компилятором. Я в принципе все скрипты сделал, но вот в чём проблема, если как в той статье я ложу файлы в (только в 7 в:) C:\Users\имя_юзера\Documents\My Games\Unreal Tournament 3\UTGame\Src\класс\Classes\ и компилирую, то мне выдаёт ошибку

Собственно используется почему-то путь в папке стима, хотя непонятно почему, ну допустим, иду я в UTEditor.ini, а там такое написано:
Код
[ModPackages]
ModPackagesInPath=..\UTGame\Src
ModOutputDir=..\UTGame\Unpublished\CookedPC\Script
ModPackages=LongbowAvril
А тут и слова про \Development\Src\ нету, ведт в данном случае проверяется ни путь в документах, ни путь в девелопменте, а в папке стима подпапке UTGame\Src.
Проповал переложить в эту папку из инишки - вообще не видит, а если положу туда, где возникает ошибка, то компилятор считает, что ничего компилировать не нужно (он эти исходные коды видит, но .u файл не сохраняет, как будто он уже есть).

В общем что-за херомантия тут творится? Кто-нибуть сможет разобрать это без бутылки?
Ну а почти всё, что нужно было написать в кодах самого аврила я уже сделал, только затестить не могу (потому что не компилируется).

Мой IP сменился с 89.113.234.78/185.42.146.32 на 83.167.1.167. Теперь будет этот. Надолго. Порты те же.
http-сервер
.do impossible   beat unbeatable
GP
Что значит
Цитата XCanG ()
а если положу туда, где возникает ошибка
?
По содержымому красной строчки ошыбка в самом коде в первой строчке ( начинаетса с 0, тоесть вторая). Unexpected 'i' скорее всего значит что компилятор не понимает что с этим 'i' делать, мол не ожыдал. Причина часто не в той строчке куда тычет ошыбка, а где-то до и или после - точка с запятой не стоят, скобка там... К примеру если не поставить скобку где-то в конце функцыи, ошыбка может возникнуть в самом конце, где не будет хватать скобки, напишет типа "Unexpected end of class" и т.д. - логика нарушытса, но просечет он это уже в полной жопе. Компилятор проверяет код поуровнево - скобки, "граматику, и т.д., от макроструктуры к деталям.
Если хочеш конкретики - файл LongBowAvril.uc в студию
XCanG
GP, первая строчка это вообще наследование и вообще в коде у меня нет никаких i, разделённых пробелами, но суть в том, что у меня файлы лежат в моих документах, а не на диске D в папке стима.

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

Цитата GP ()
начинаетса с 0, тоесть вторая

Цитата XCanG ()
у меня нет никаких i

Цитата GP ()
Причина часто не в той строчке куда тычет ошыбка

Цитата XCanG ()
суть в том, что у меня файлы лежат в моих документах, а не на диске D в папке стима

и что? а у меня исключительно звуки импортируютса только с робочего стола и хоть сдохни, в коде так и пишу ... Audio Import File=С:\Users\....\xxx.wav...
Как я могу помочь не видя кода? А относитьльно путей - вспомни танцы с бубном вокруг UDE... пути-пути... ucc компилирует те файлы, которые есть где нужно. Если их вообще нет - другая ошыбка 100%, если нет конкретного файла - ошыбка будет в том файле который первый хочет использовать недостающий (тип переменной, заспавнить и т.д) и то, какая в таком случае будет ошыбка зависит от алгоритма роботы компилятора и структуры кода.

Цитата GP ()
файл LongBowAvril.uc в студию

тяжело скопипастить в спойлер?
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', которого не существует.
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
UnShame
Цитата GP ()
- че за х___я??? Ты хочеш запихнуть свою пушку в пакедж UTGame??? Считай что Development = Unreal Tournament 3,
должно быть (по моему мнению) C:\Users\имя_юзера\Documents\My Games\Unreal Tournament
На UE3 можно сразу несколько проектов иметь, то есть у тебя может быть UTGame и еще что-то, и они будут независимо друг от труга работать.
В ут3 тотальные конверсии таким образом работают.

Добавлено (22 Января 15, 12:11)
---------------------------------------------
Попробовал скомпилировать, получил туже ошибку, оказалось, что проблема в кодировке
поменял на UTF-8, все скомпилировалось


http://rusut.ru/_fr/14/links.txt
https://www.mediafire.com/folder/1ww9zpl63q2pc/RT
http://rusut.ru/files/dump/filesDump.html
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
UnShame
Цитата XCanG ()
UTF-8 или UTF-8 without BOM
я сейчас посмотрел, вообще Unicode нужно
Цитата XCanG ()
Вот только теперь ему не нравится ошибка в стандартном коде, который я не менял пока.
если ты не юзал исходный код, а декомпилировал, то из-за этого

иначе - хз

Добавлено (22 Января 15, 15:33)
---------------------------------------------
вообще, в гугле по UE3 куча информации, значительно больше, чем про UE2, так что ищи там, если что-то не работает


http://rusut.ru/_fr/14/links.txt
https://www.mediafire.com/folder/1ww9zpl63q2pc/RT
http://rusut.ru/files/dump/filesDump.html
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
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. Только тогда ты своей функцыей "затмиш" функцыю суперкласа. НО! В тукее например такое не всегда получаетса провернуть: содержымое функцыии можно поменять, а вот шапку, которая идет в описание редко. Так что лучше первый вариант.
Как по мне первый вариант "правильней" - так как ты не меняеш того что тебе не надо менять.
Проблем с самонаводкой не будет, так как твоя пушка подклас стандартной, и ей свойственно все, что свойственно ей до тех пор, только если это не переделать криво, поэтому нет ничего кривого в обращении к стандартному прожектилю типа "смотри, я тоже стандартная пушка а не что-попало".
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 отличия, в детали проверок не вникал. Возьми ту функцыю из рокет ланчера и замени ей, от авриловской оставь только кусок про прожектиль в конце, которого у рокетланчера явно нет.
Форум - Russian Tournament » Игры » Unreal Tournament 3 » мутатор на Лонгбоу АВРиЛ (изменение характеристик)
Страница 2 из 4«1234»
Поиск: