Jump to content

Handepsilon

Totem Arts Staff
  • Posts

    2008
  • Joined

  • Last visited

Everything posted by Handepsilon

  1. Ah but I don't think it's just TmX. It felt like a portion of the list was taken away
  2. Why not... class STankMutator extends UTMutator; function bool CheckReplacement(Actor Other) { if (Other.IsA('Rx_Vehicle_StealthTank') && !Other.IsA('Rx_Vehicle_StealthTank_MOD')) { ReplaceWith(Other, "Rx_Vehicle_StealthTank_MOD"); } } ReplaceWith() is a thing btw. Also, the other if is to make sure that the MOD version does not get replaced again, over and over (IsA() also reads children as their parents)
  3. Seems like it also affects some RenX servers, including TmX's US server and the ALL DECK ALL DAY. I see fewer servers running on the list... O well, let's download Carnage Club first
  4. It is such a long and complicated process. You might as well look for the Mastering Unreal Technology book or if you like free, go search UDN for the general basics of mapping, and then you can go lay down the building prefabs and set up the game infos
  5. Did you put the ModEditPackage line of your mod BELOW the ModEditPackage=Renx_Game line? If not, that's the problem
  6. So like.... you'd rather be kept blind and be forced to take time to check what has changed and then scream about who had the atrocity to rebalance your game? I think it's here so peeps can voice their opinion about the balance now and then it can be modified as necessary emphasis 'as necessary'
  7. I'm gonna have to agree with HaTe. It takes skills and good framerate to snipe, you know, unless they move straightforwardly or just stand still, which is almost never the case. I do much better as Soldier, Shotgunner, Officer, or McFarland when it comes to infantry fight, mainly because they need less precise aiming to actually kill people (Even kill more Engis as Soldier than as anything else)
  8. Thanks RypeL. From the looks of it, it might indeed save some time for me
  9. Actually it's just a copy paste. I really don't have that much time, so the progress would be slow indeed. This piece is just to pave path for any dev to include needed feature for the AI I referenced from the UTBot scripts sometimes but... since I'm not really much of a coder, the whole thing felt so complicated to me.
  10. Not the IRC bot, dude. The AI bots
  11. Okay, so I'm working on a more decent bot for RenX. Current Progress : Currently trying to get them to go disarm beacon when one is spotted. class Rx_Bot_Extended extends Rx_Bot; function class BotBuy(Rx_Bot Bot, bool bJustRespawned) { local int PickedVehicle; local int PickedChar; local class PickedCharClass; local Rx_PurchaseSystem PurchaseSystem; PurchaseSystem = Rx_Game(WorldInfo.Game).GetPurchaseSystem(); if(ShouldFindBeacon()) { //Single-minded mode, prioritize Beacon first `log("Enemy Beacon Detected!!!"); if(Bot.GetCredits() >= 350) PickedChar = 14; else PickedChar = 4; } else { if(Bot.TargetMoney == 0 || (Bot.DeathsTillTargetMoneySwitch == 0 && Bot.GetCredits() < Bot.TargetMoney)) { Bot.TargetMoney = Bot.GetNewTargetMoney(); if(FRand() < 0.7) Bot.DeathsTillTargetMoneySwitch = 3; else Bot.DeathsTillTargetMoneySwitch = 2; } if(Bot.GetCredits() >= Bot.TargetMoney) { PickedVehicle = -1; if(Bot.GetOrders() == 'ATTACK' && Bot.GetCredits() >= 350 && ! PurchaseSystem.AreVehiclesDisabled(GetTeamNum(), None) && FRand() <= 0.8) { if(Bot.GetTeamNum() == TEAM_GDI) { PickedVehicle = GetGdiVehicle(); } else { PickedVehicle = GetNodVehicle(); } } else if(Bot.GetOrders() == 'DEFEND' && Bot.GetCredits() >= 350 && FRand() <= 0.4) { PickedChar = 14; } else if(Bot.GetCredits() >= 15000) { PickedChar = 4 + Rand(9); } else if(Bot.GetCredits() >= 800) { PickedChar = 10 + Rand(3); } else if(Bot.GetCredits() >= 800) { PickedChar = 7 + Rand(3); } else if(Bot.GetCredits() >= 750) { PickedChar = 7 + Rand(3); } else if(Bot.GetCredits() >= 500) { PickedChar = 7 + Rand(3); } else if(Bot.GetCredits() >= 225) { PickedChar = 4 + Rand(3); } if(PurchaseSystem.AreHighTierPayClassesDisabled(GetTeamNum())) { PickedChar = Rand(4); } if(PickedVehicle != -1) { if(PurchaseSystem.PurchaseVehicle(Rx_Pri (Bot.PlayerReplicationInfo), Bot.GetTeamNum(), PickedVehicle)) { Bot.SetBaughtVehicle(PickedVehicle); if(Bot.GetCredits() >= 15000) { PickedChar = 4 + Rand(9); } else if(! PurchaseSystem.AreHighTierPayClassesDisabled(GetTeamNum()) && FRand() < 0.25) { if(Bot.GetCredits() >= 1000) { PickedChar = 10 + Rand(3); } else if(Bot.GetCredits() >= 800) { PickedChar = 7 + Rand(3); } else if(Bot.GetCredits() >= 750) { PickedChar = 7 + Rand(3); } else if(Bot.GetCredits() >= 500) { PickedChar = 7 + Rand(3); } else if(Bot.GetCredits() >= 225) { PickedChar = 4 + Rand(3); } } else if(FRand() < 0.5) { PickedChar = 3; } } } if(PickedChar != 0) { if(Bot.GetTeamNum() == TEAM_GDI) { PickedCharClass = PurchaseSystem.GDIInfantryClasses[PickedChar]; Rx_Pri(Bot.PlayerReplicationInfo).RemoveCredits (PurchaseSystem.GDIInfantryPrices[PickedChar]); } else { PickedCharClass = PurchaseSystem.NODInfantryClasses[PickedChar]; Rx_Pri(Bot.PlayerReplicationInfo).RemoveCredits (PurchaseSystem.NODInfantryPrices[PickedChar]); } Bot.TargetMoney = 0; `LogRxPub("GAME" `s "Purchase;" `s "character" `s PickedCharClass.name `s "by" `s `PlayerLog(Bot.PlayerReplicationInfo)); return PickedCharClass; } } else if(Bot.GetCredits() > 0) { Bot.DeathsTillTargetMoneySwitch--; } } if(bJustRespawned) { return PurchaseSystem.GetStartClass(Bot.Pawn.GetTeamNum()); } else { return UTPlayerReplicationInfo (Bot.PlayerReplicationInfo).CharClassInfo; }} function bool AssignSquadResponsibility() { if(Rx_Vehicle(Pawn) != None && Enemy != None && !Rx_Vehicle (Pawn).ValidEnemyForVehicle(Enemy)) { //loginternal("LoseEnemy"); Enemy = None; //LoseEnemy(); } if(bStrafingDisabled && Pawn.Anchor == None) { return false; } if(BaughtVehicleIndex != -1) { if(GoToBaughtVehicle()) { return true; } } if(UTVehicle(Pawn) == None && HasRepairGun()) { if(ShouldFindBeacon()) { `log("Enemy Beacon Detected!!!"); return true; } if(RepairCloseVehicles()) { return true; } } return super(UTBot).AssignSquadResponsibility(); } State Defending { Begin: WaitForLanding(); CampTime = bShortCamp ? 0.3 : 3.0; bShortCamp = false; if ( Pawn.bStationary ) { Goto('Pausing'); } SetRouteGoal(); if ( Pawn.ReachedDestination(RouteGoal) ) { Goto('Pausing'); } else { Moving: Pawn.bWantsToCrouch = false; MoveToward(MoveTarget); if (Pawn.ReachedDestination(RouteGoal)) { ShouldDefendPosition(); // will change state/label if true } } LatentWhatToDoNext(); Disarm: MoveToward(MoveTarget); if (Pawn.ReachedDestination(RouteGoal)) { FireWeaponAt(Focus); `log("Found Enemy Beacon!"); } if(Focus == None) GoTo('Begin'); LatentWhatToDoNext(); Pausing: if (UTVehicle(Pawn) != None && UTVehicle(Pawn).bShouldLeaveForCombat) { UTVehicle(Pawn).DriverLeave(false); } StopMovement(); Pawn.bWantsToCrouch = IsSniping() && !WorldInfo.bUseConsoleInput; if ( DefensePoint != None ) { if ( Pawn.ReachedDestination(DefensePoint) ) { Focus = None; SetFocalPoint( Pawn.Location + vector (DefensePoint.Rotation) * 1000.0 ); } } else if ( (DefensivePosition != None) && Pawn.ReachedDestination (DefensivePosition) ) { SuggestDefenseRotation(); } SwitchToBestWeapon(); Sleep(0.5); if (UTWeapon(Pawn.Weapon) != None && UTWeapon (Pawn.Weapon).ShouldFireWithoutTarget()) Pawn.BotFire(false); Sleep(FMax(0.1,CampTime - 0.5)); LatentWhatToDoNext(); } function bool ShouldFindBeacon() { local Rx_Weapon_DeployedBeacon Beacon; if(Focus.IsA('Rx_Weapon_DeployedBeacon')) { GoToState('Defending','Disarm'); MoveTarget = FindPathToward(Focus); return True; } foreach AllActors(class 'Rx_Weapon_DeployedBeacon', Beacon) { if(CheckIfDisarmNeeded(Beacon)) { Focus = Beacon; GoToState('Defending','Disarm'); MoveTarget = FindPathToward(Beacon); return True; } } return false; } function bool CheckIfDisarmNeeded(Rx_Weapon_DeployedBeacon DisarmTarget) { local RxIfc_SpotMarker SpotMarker; local Rx_Building TempB; local float NearestSpotDist; local RxIfc_SpotMarker NearestSpotMarker; local float DistToSpot; foreach AllActors(class'Rx_Building',TempB,class'RxIfc_SpotMarker') { SpotMarker = RxIfc_SpotMarker(TempB); DistToSpot = VSize(TempB.location - location); if(NearestSpotDist == 0.0 || DistToSpot < NearestSpotDist) { NearestSpotDist = DistToSpot; NearestSpotMarker = SpotMarker; } } if(Rx_Building(NearestSpotMarker) != None && Rx_Building (NearestSpotMarker).GetTeamNum() != GetTeamNum()) return True; return False; } I'd love to hear from the AI maker of this game if possible Current problem... Beacon planted, some peeps go Engi, but none disarm them Rx_GFxHud Transient.Rx_GFxHud_1 Function Renx_Game.Rx_GFxHud:UpdateBuildings:12EB [1138.55] ScriptWarning: Accessed None 'Icon' Rx_GFxHud Transient.Rx_GFxHud_1 Function Renx_Game.Rx_GFxHud:UpdateBuildings:12EB [1138.55] ScriptWarning: Accessed array 'Rx_GFxHud_1.BuildingInfo_Nod' out of bounds (5/5) Rx_GFxHud Transient.Rx_GFxHud_1 Function Renx_Game.Rx_GFxHud:UpdateBuildings:1414 [1138.55] ScriptWarning: Accessed None 'Stats' Rx_GFxHud Transient.Rx_GFxHud_1 Function Renx_Game.Rx_GFxHud:UpdateBuildings:1414 [1138.60] Rx: GAME Spawn; player Nod,b271,Elie Arabian character Rx_FamilyInfo_Nod_Soldier [1138.62] ScriptLog: Enemy Beacon Detected!!! [1138.64] ScriptWarning: Control reached the end of non-void function (make certain that all paths through the function 'return ' Rx_Bot_Extended uedpiecnc-coastalsmall.TheWorld:PersistentLevel.Rx_Bot_Extended_5 Function renx_extension_ai.Rx_Bot_Extended:ShouldFindBeacon:00CC [1138.71] ScriptWarning: Accessed array 'Rx_GFxHud_1.BuildingInfo_Nod' out of bounds (5/5) Rx_GFxHud Transient.Rx_GFxHud_1 Function Renx_Game.Rx_GFxHud:UpdateBuildingInfo_Nod:0027 [1138.71] ScriptWarning: Accessed array 'Rx_GFxHud_1.BuildingInfo_Nod' out of bounds (5/5) Ignore the non-void function warning. I forgot to put return false at the end of the ShouldFindBeacon function
  12. You might want to rejoice. I'm currently trying to get some features inside the current RenX's bots Currently attempting to insert disarm beacon functions
  13. I was about to add coastal turrets on their base and a few turrets to support their base, but probably got lost in the last crash. Obviously Nod is way too defenseless against a hover now Will try fixing Inf Path's collision And I don't know about flying. It feels compact enough you don't actually need to fly, except through the river. Gonna try to scale down the original map, but might take more time to realign everything back to normal....
  14. You can search in Epic Games forum on how to tweak the video through the ini files actually. You can edit it beyond what is provided in the settings Anyway, gonna try out these settings later. Having FPS problems too
  15. The secret of the recipe is the humvees behind him
  16. Sorry B0NG, I was just thinking it will cost me less with Rar files... Anyway, this is already a lot of custom maps....
  17. There's... a little bit problem with your link Thommy. While it downloads fast enough, I usually need to login first before I can access the mirror. If B0NG doesn't have an account, it will not allow him to download. It's not the link, it's the download mirror that's the problem To get Google Drive link, right click your map, select share. Go to Advanced and make sure it either says Anyone can view, or Only people with link can view. Then get the link on the box and copy-paste it
  18. It's... a different engine from different developers from different company... the only thing you can possibly do is ripping it as 3D model. I don't know how, maybe you can ask Kenz edit : okay, just ignore the 'You don't say' part and skip to the last sentence Also, I think there's a 3D model ripper, but it depends on your game's current render which... culls everything you cannot see by default
  19. ignore the bold but yeah. it's img
  20. RypeL... you might want to improve the Mutator when you got the time. It's quite deadly for low pings that stands on a really fast moving platform... killed lotsa people in Coastal's hovercraft Emphasis 'when you got the time'
  21. The weaponless soldier The repairing Havoc The hoarding SBH
  22. Indeed, you can go name it Metropolis
  23. Nah, just the lighting stat. However if you... for instance... replace the actor that contains the light, the prompt will pop up in the corner of your screen Internal does not have static lighting tho
  24. not replacing but adding the code to the list GameplayMaps(Filename="CNC-Tutorial", Description="Tutorial",Size="Small",Style="Symmetrical",RecommendedPlayers="16",AirVehicles="Disabled",TechBuildings="1",BaseDefences="Basic",MapImage="ing://RenXFrontEnd.MapImage.___map-pic-cnc-tutorial") First it should be GameplayMaps(Filename="CNC-Tutorial", Description="Tutorial",Size="Small",Style="Symmetrical",RecommendedPlayers="16",AirVehicles="Disabled",TechBuildings="1",BaseDefences="Basic",MapImage="img://RenXFrontEnd.MapImage.___map-pic-cnc-tutorial") Second... I kinda doubt the image exists...
  25. Most codings are indeed in the Internal class. And yep, unfortunately it does need to relight... at least as far as I know. Changing a single number in static light will cause the Lighting needs to be rebuilt to pop up
×
×
  • Create New...