То есть, если звук стрельбы под именем " Fire" лежит перед компиляцией в папке Sounds, то записать нужно так:#exec AUDIO IMPORT FILE="Sounds\Fire.wav" NAME="Fire" Верно?
Да. Группа относита к тому, где файл будет лежать уже в пакедже. Точнее лежат они все в куче, а група создана для того, чтоб легче искать когжа пакедж большой.
ЦитатаGadavre ()
Что означает MIPS=ON или MIPS=OFF?
Указывает, использовать ли для этой текстуры mip-maps
ЦитатаGadavre ()
В некоторых мутаторах оружия я вижу интересный код, обьяснения которому найти не удается.
Такие вопросы у вас будут возникать постоянно, и не только к оружею. Чем глубже в код будете лезть тем больше. Для начала стоит подучить английский, значения слов многое прояснят, так как не с потолка взяты. Тем более посреди кода коментарии вон добавлны, там написано все что делаетса. Потом вникать глубже вникать в структуру, что б было видно и понятно что в общем происходит. А потом уже вникать в спецыфику unrealscript, тут есть больше нужного минимума.
Такие вопросы не будут возникать постоянно, так как мне осталось чуть доделать свой мутатор и на этом со скриптингом будет завязано. Но Вы предлагаете учить английский и разбираться в языке программирования человеку без технико-математического образования. То есть, чтобы помочь с решением проблемы неточного прицела, Вы предлагаете мне решить самостоятельно кучу куда более серьезных и непосильных задач. Спасибо за "помощь", буду ждать на форуме Shadow97, он добрее и человечнее. Но мутатор будет доделан, если не в этой, то в следующей жизни!
это точно Но серьезно, вот исходя из этого в вашем посте
ЦитатаGadavre ()
В некоторых мутаторах оружия я вижу интересный код, обьяснения которому найти не удается.
я изволил судить что вы интерисуетесь скриптингом в общем, и хотите научитса большему, в удовольствие это делаете в конце концов... А получаетса
ЦитатаGadavre ()
мне осталось чуть доделать свой мутатор и на этом со скриптингом будет завязано
... вас роботодатель это заставляет сделать чтоли? :( А обьяснять это все мне просто было лень даже начинать, так сначала прийдетса обьяснять целую кучю основ по програмированию, 3D-графике и прочему, которых я сам хорошо не знаю. Ну и плюс ко всему оно к вашей проблеме прямого отношения не имеет...
Я привык по жизни, начиная дело, заканчивать его до конца. В сети можно найти сотни недоделанных мутаторов, что отнюдь не усиливает интерес игроков к игре, а наоборот отталкивает. Я отнюдь не хочу стоять в одном ряду с подобными "девелоперами" :facepalm:. И хочу что-то ценное оставить в жизни от себя, даже в виде программного кода.... Может я Вам скину в личку source code серьезной работы Nali weapones и Вы посмотрите как автор подключил свой прицел к снайперке и напишите мне, а ???. У меня ничего не выходит....
Что именно у вас не выходит-то? Если я предлогаю что-то непровереное то предупреждаю - тот код, что я вам скидал у меня скомпилирован и все роботет. Только текстуру подставить, которую я вам кстати тоже скидал. Разве-что вы оменяли где-то что-то еще. Вот то, что выложено на сайте уже с изменениями. Попробуйте сравнить с вашим.
GP, Урааа! Вы гений! Поначалу не хотело компилироваться, так как Вы неверно записали импорт FILE=Textures\Dot.pcx (имя файла у Вас XDot.pcx), но я исправил и все заработало! Точка снайперки мелкая по сравнению с точкой хаммера, но это я исправлю с помощью Paint'a.. На странице своего мутатора обязательно упомяну Ваш Ник, ник человека сделавшего такую фичу практически не встречающихся в других мутаторах.
И последнее, что бы я хотел сделать это уменьшить время исчезновения оружия после убитых игроков и ботов. Стандартное время до исчезновения оружия примерно 60-70 секунд. Несмотря на то что ограниченно оружие в игре, тем не менее оружия с патронами после убийства ботов остается пока много. Я смотрел оригинальный Deathmatchplus.uc, но функции с переменными контролирующих время до исчезновения оружия я не нашел. Может посмотрите? Я не буду больше Вас и себя мучить, будет выпущена финальная версия и на этом все.
Вот эта функцыя (в стейте обязательно) дублирует стандартную.
Код
state Pickup { function Timer() { if ( RemoteRole != ROLE_SimulatedProxy ) { NetPriority = 1.4; RemoteRole = ROLE_SimulatedProxy; if ( bHeldItem ) { if ( bTossedOut ) SetTimer(15.0, false); else SetTimer(40.0, false); } return; }
if ( bHeldItem ) { if ( (FRand() < 0.1) || !PlayerCanSeeMe() ) Destroy(); else SetTimer(3.0, true); } } }
Таймер без повторов, каждый раз либо запускает себя на определенное время либо уничтожает пушку... Короче, если увеличить все значения в settimer, должно помочь. Ну и это надо добавить в клас пушки, а не куда-то еще.
GP, А можно ли сделать так чтобы цвет прицела определялся настройкой игры? А то Игрок выставит , например, желтый цвет прицела в настройках, а прицел пушки как был белый так и останется. То есть у Хаммера желтый, у снайперки белый. Удаление строчек начинающихся с Canvas.DrawColor не помогло.
Удаление строчек начинающихся с Canvas.DrawColor не помогло.
А как удаление установки цвета могло помочь? Он же тогда просто рисуетса последним цветом который использовалса перед этим. Цвет прицела хранитса в настройках hud-а, но читать каждый раз из user.ini это глупо. Можно читать прямо из класа hud-a, если он есть:
GP, Точка прицела моей снайперки меньше стандартной точки второго оружия Хаммера. А какая может быть причина? Я использовал ведь стандартную иконку прицела точки (64 на 64) , которую я экспортировал из едитора. Кстати Ваш XDot. pcx (16 на 16)прицел также выглядит как и мой. Не знаю, это нормально в глазах игроков будет или вызовет насмешки... Как Вы думаете, стоит ли оставить так как есть или нужно менять размер точки?
Не знаю, это же ваш мутатор. В общем стоит учесть зависимость от монитора - чем больше соотношение разрешения к размерам тем меньше будет выглядеть прицел. Мне наапример на экране 1280х800 и эта чуть великовата кажетса. А применение скейлига относительно разрешения экрана (как стандартный прицел) грозит такими-же смещениями из=за округления.
Если что, Gadavre, есть один режим игры, который делал мой друг, он тут вроде ещё остался на сайте, там оружие вообще не изчезает.
На карте не было бесконечных пикапов оружия, было лежачее и раскиданное по всей карте и при смерти игрок его дропал обратно, а патроны с разных пушек не стакались, для этого были точки пополения боеприпасов, тоже не бесконечные
Мой IP сменился с 89.113.234.78/185.42.146.32 на 83.167.1.167. Теперь будет этот. Надолго. Порты те же. http-сервер .do impossible beat unbeatable
Если что, Gadavre, есть один режим игры, который делал мой друг, он тут вроде ещё остался на сайте, там оружие вообще не изчезает.
В том-то и весь смак, чтобы оружие быстро исчезало! Прозевал, не подобрал - будешь бегать без патронов с молотком. Но посмотреть то надо. В моем мутаторе несмотря на тот код, что мне дал GP, подобрать нужные значения переменных видимо не реально. Максимум, что я добился, это то, что оружие исчезает через рендомное время (25-40 секунд). А я хотел ровно через 30. В оригинале это дело было до 80-ти секунд. Тестировал так: Ставил карту без ботов и убивал себя десятки раз. Смотрел на снайперку и отсчитывал секунды по ее миганиям до исчезновения.
Смотрел на снайперку и отсчитывал секунды по ее миганиям до исчезновения.
а вы обратили внимание на то, что в коде учитываетса "случайная составляющая" + то, видит кто-нибудь пушку или нет (чтоб минимизировать исчезновения на глазах). Код ведь - копия стандартной функцыи, если например сделать ее пустой то вероятно вообще исчезать не будет.
GP, Я снова по поводу того кода понижения здоровья, что написал Вам в личку. Как я уже писал, я хотел бы , чтобы критическая точка здоровья, когда худ начинает мигать начинался не с 49 единиц, а с 19-ти или даже с 9-ти. Я даже раскопал с оригинальной игры этот код (из СhallengeHUD.uc), но подружить со cвоим мутатором не смог. Выскакивала ошибка при компиляции. Вот этот код:
simulated function DrawStatus(Canvas Canvas) { local float StatScale, ChestAmount, ThighAmount, H1, H2, X, Y, DamageTime; Local int ArmorAmount,CurAbs,i; Local inventory Inv,BestArmor; local bool bChestArmor, bShieldbelt, bThighArmor, bJumpBoots, bHasDoll; local Bot BotOwner; local TournamentPlayer TPOwner; local texture Doll, DollBelt;
ArmorAmount = 0; CurAbs = 0; i = 0; BestArmor=None; for( Inv=PawnOwner.Inventory; Inv!=None; Inv=Inv.Inventory ) { if (Inv.bIsAnArmor) { if ( Inv.IsA('UT_Shieldbelt') ) bShieldbelt = true; else if ( Inv.IsA('Thighpads') ) { ThighAmount += Inv.Charge; bThighArmor = true; } else { bChestArmor = true; ChestAmount += Inv.Charge; } ArmorAmount += Inv.Charge; } else if ( Inv.IsA('UT_JumpBoots') ) bJumpBoots = true; else { i++; if ( i > 100 ) break; // can occasionally get temporary loops in netplay } }
DrawBigNum(Canvas, Max(0, PawnOwner.Health), X + 4 * Scale, Y + 16 * Scale, 1);
Canvas.DrawColor = HUDColor; if ( bHideStatus && bHideAllWeapons ) { X = 0.5 * Canvas.ClipX - 128 * Scale; Y = Canvas.ClipY - 64 * Scale; } else { X = Canvas.ClipX - 128 * StatScale - 140 * Scale; Y = 0; } Canvas.SetPos(X, Y); Canvas.DrawTile(Texture'BotPack.HudElements1', 128*Scale, 64*Scale, 0, 192, 128.0, 64.0); if ( bHideStatus && bShieldBelt ) Canvas.DrawColor = GoldColor; else Canvas.DrawColor = WhiteColor; DrawBigNum(Canvas, Min(150,ArmorAmount), X + 4 * Scale, Y + 16 * Scale, 1); }
Если я Вас правильно понял, единственное решение подмена Худа? То есть нужно создать отдельный класс худа для арены и прописать все эти строки? Или полностью строки c ChallengeHUD.uc? И вот как еще подключить класс худа к классу арены вот вопрос?! Пробывал подключить эту часть худа к арене, но не компилируется. Че-то не нравиться выделенная строка ему в коде
class Survival extends Mutator;
var bool Initialized;
function PostBeginPlay() { if (Initialized) return; Initialized = True;
Level.Game.RegisterDamageMutator( Self );
SetTimer(1,true); // 1 - интервал снятия здоровья в секундах }
function Timer () {
local Pawn P;
for ( P=Level.PawnList; P!=None; P=P.nextPawn ) { if (P.IsA('PlayerPawn') == true) // проверка на человечность {
P.Health -= 1; // порцыя здоровья которая снимаетса if (P.Health < 1 ) P.GibbedBy(P); }
} }
simulated function DrawStatus(Canvas Canvas) //37-я строка { local float StatScale, ChestAmount, ThighAmount, H1, H2, X, Y, DamageTime;
Ну другого способа пока никто не придумал. Но переписывать все не обязательно - новый клас просто указываетса как "extends ChallengeHUD", и вписываетса толко то что нужно добавить/заменить - функцыя целиком и в нужном стейте, если он есть. А вот сама подмена худа не простое дело - какой клас худа использовать указано в класе игры, она их спавнит. Подмена переменной в уже созданом (заспавненом) эксземпляре игры если и поможет, то посети это уже точно не поможет. Спавнить самостоятельно и форсить - кода раз в 10 больше - а результат тот-же. Поэтому и предлагалось делать свой режым игры, в котором просто указываетса свой клас худа.. и по сети это норм. роботатет.
О какой игре речь, интересно? В UT2004 менять HUD необязательно, там есть функция "HudOverlay" позволяющая убирать элементы старого HUD-а и отрисовывать на экране любые новые элементы. Правда, работает она через Tick.
А вот сама подмена худа не простое дело... Поэтому и предлагалось делать свой режим игры, в котором просто указываетса свой клас худа.. и по сети это норм. работает.
Так реально ли сделать мутатор,в котором будет частично свой худ и будет работать по сети? Если так, то как привязать класс нового худа к основному классу игры мутатора? Ведь сам по себе он не будет подхватываться движком, верно? Могли бы дать примерный код? Допустим основной класс называется у меня classSurvival extends Mutator (код выше) Свой класс худа такой: classSurvivalHUD extends HUD config