Страница 2 из 4«1234»
Форум - Russian Tournament » Игры » Unreal Tournament 3 » мутатор на Лонгбоу АВРиЛ (изменение характеристик)
мутатор на Лонгбоу АВРиЛ
Creativ
Цитата GP ()
Да я видел, просто удивилса что там нельзя декомпилировать. Порылса в коде аврила... того что советовал не нашел))) там возможность самонаводки учтена в коренном класе прожектиля... ну и как-то все универсализировано - осуждать не берусь, но после тукейного кода очень непривычно на такое смотреть. Но к сути: проверки как таковой игрок это или вехикл там нету - пустой ивент с коментарием, что стандартно мол лочимся только на павнах, а другие пушки могут захотеть на чем-то другом, и это надо будет проверять сдесь (где коментарий). Вариант - дописать в пустом can_lockon "return true", но вероятно пушка начнет лочитса на всем подряд.
Идеальный вариант - скопировать функцыю (adjust_lock*** ) от рокетланчера - там отличие только в двух местах: у рокета есть строчка с чем-то относительно PRI (player replication info?), а у аврила есть кусок касательно ракеты (у рокета сложная система зарядки, и видать это в другом месте).
Короч если кто возьметса то помогу с дебагингом))э
Это пи..дец полный. Вы с какой планеты? А я когда комп купил, думал тоже игру какую нибудь сделать... Ага б..ядь.
Сообщение отредактировал Creativ - Среда, 21 Января 15, 08:27
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 в студию
Сообщение отредактировал GP - Среда, 21 Января 15, 21:51
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 в студию

тяжело скопипастить в спойлер?
Сообщение отредактировал GP - Четверг, 22 Января 15, 00:25
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
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
Сообщение отредактировал 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 отличия, в детали проверок не вникал. Возьми ту функцыю из рокет ланчера и замени ей, от авриловской оставь только кусок про прожектиль в конце, которого у рокетланчера явно нет.
Форум - Russian Tournament » Игры » Unreal Tournament 3 » мутатор на Лонгбоу АВРиЛ (изменение характеристик)
Страница 2 из 4«1234»
Поиск: