Author |
Message |
06/19/2006 06:36:23
|
Drago'Nish
Dominating
Joined: 08/10/2005 18:38:46
Messages: 205
Offline
|
Where others have failed, i have succeeded, or atleast, mysterial did for UT2003.
about a hour ago i was looking at the mutators mysterial made, and i found a mutator to replace the booster combo, as he found it to powerfull compared to others. (the others stopt, booster kept health and shield afterwards.)
link: http://mysterial.linuxgangster.org/
having found that, i also knew it would contain the required code, download > decompiled it.
and i indeed found the necesary code to fully disable, and enable the new combo, while still using the BBBB combo.
one last thing remains, is testing if it truly keeps running if the health has passed the true max, i cant do this myself, because i do not have a mutator available or know any, that i can throw on and run to see if it works.
so it would be greatly apreciated if someone would give it a test, and post it if it works.
i am pretty sure it will, but guesse its never 100% sure.
Filename |
BoosterFix.rar |
Download
|
Description |
|
Filesize |
3 Kbytes
|
Downloaded: |
323 time(s) |
|
Zenas: Weapons Master - lvl 26 |
|
|
06/19/2006 14:00:15
|
v0rTeX
Wicked Sick!
Joined: 12/19/2004 20:59:52
Messages: 562
Offline
|
Heh, nice one. I figured there had to be a way around the old combo but I don't understand enough about code to have found it on my own.
My problem was that I could replace Booster in instant action but not in netplay. I'll give this one a shot and see what happens.
EDIT: Okay I just gave it a shot and when used on a dedicated server it seems to still use the old combo because it breaks the second your health goes over the normal max.
I even tested it with only RPG, Druids, RPG HUD and the booster fix running.
After looking at the code I can see why mine wouldn't have worked. And I can probably assure you that the reason this one doesnt work is because the functions that control client replication have changed from 2k3 to 2k4.
Either that or you have to call Super before the replacement functions for net clients.
Take your pick.
|
|
|
06/20/2006 01:03:24
|
Deunan
Dominating
Joined: 06/07/2005 21:19:19
Messages: 206
Offline
|
Excellent, let us know if it works!
|
never interrupt your enemy when they're making a mistake!
My Skin : http://www.ut2003hq.com/pafiledb/pafiledb.php?action=file&id=2381 |
|
|
06/20/2006 03:09:31
|
Drago'Nish
Dominating
Joined: 08/10/2005 18:38:46
Messages: 205
Offline
|
v0rTeX wrote:
Heh, nice one. I figured there had to be a way around the old combo but I don't understand enough about code to have found it on my own.
My problem was that I could replace Booster in instant action but not in netplay. I'll give this one a shot and see what happens.
EDIT: Okay I just gave it a shot and when used on a dedicated server it seems to still use the old combo because it breaks the second your health goes over the normal max.
I even tested it with only RPG, Druids, RPG HUD and the booster fix running.
After looking at the code I can see why mine wouldn't have worked. And I can probably assure you that the reason this one doesnt work is because the functions that control client replication have changed from 2k3 to 2k4.
Either that or you have to call Super before the replacement functions for net clients.
Take your pick.
i already were afraid of that, guesse best bet in this case would be to first try if Mysterial's booster works on net games.
i'll have a look tonight i think, but not sure about anything.
few discusions/problems with school right now..
anyway, i'll post it up as soon as i find out a bit more, and maybe get a bit further in the code.
oh, and thnx for trying if it worked, to bad it dindt, though i already thought it was still going to break.
|
Zenas: Weapons Master - lvl 26 |
|
|
06/20/2006 15:13:13
|
KohanX
Godlike
Joined: 03/04/2006 13:40:23
Messages: 350
Offline
|
Please tell me I'm not the only one who's looked at MutCrateCombo.uc... Any questions on adding and removing combos can be answered in that piece.
|
|
|
06/20/2006 18:02:53
|
v0rTeX
Wicked Sick!
Joined: 12/19/2004 20:59:52
Messages: 562
Offline
|
KohanX wrote:
Please tell me I'm not the only one who's looked at MutCrateCombo.uc... Any questions on adding and removing combos can be answered in that piece.
Yes we have all looked at that one. The problem is that mutcrate combo does not try to replace any of the default 4 combos. It merely adds new combos. I can add new combos no problem. But no one yet has demonstrated the abiility to completely replace one of the 4 standard combos with something else when it comes to a dedicated server.
Try not to insult us if you aren't following the whole conversation next time please.
|
|
|
06/20/2006 19:01:21
|
Continuum
Wicked Sick!
Joined: 03/09/2005 05:20:36
Messages: 479
Location: Indianapolis, Indiana
Offline
|
What if you used the no combo mut then re-created the combos (code is already there) then added your "new" combos to the rpg as something other than a combo... youd have to go back and extend whatever class the adrelalin combo extended then copy that code, ect ect... basically would be cut and paste then checking references to make sure they referenced your version but I think it would work..
Although the best idea ive heard was modifying the medic weapon to know when booster was running...
|
Current WIP:
Skins:
|
|
|
06/20/2006 19:27:21
|
KohanX
Godlike
Joined: 03/04/2006 13:40:23
Messages: 350
Offline
|
Does it only not work when running on a Dedicated Server? Let me know if this piece of code is relevant (pun not intended)
Code:
function bool IsRelevant(Actor Other, out byte bSuperRelevant)
{
local int i;
if ( xPlayer(Other) != None )
{
for ( i=0; i<16; i++ )
{
if ( xPlayer(Other).ComboNameList[i] ~= "Bonuspack.ComboCrate" )
break;
else if ( xPlayer(Other).ComboNameList[i] == "" )
{
xPlayer(Other).ComboNameList[i] = "Bonuspack.ComboCrate";
break;
}
}
Correct me if I'm wrong, please, but I believe you can manipulate this to become:
Code:
function bool IsRelevant(Actor Other, out byte bSuperRelevant)
{
local int i;
if ( xPlayer(Other) != None )
{
for ( i=0; i<16; i++ )
{
if ( xPlayer(Other).ComboNameList[i] ~= "NewBooster.ComboNewBooster" )
break;
else if ( xPlayer(Other).ComboNameList[i] == "ComboDefense" )
{
xPlayer(Other).ComboNameList[i] = "NewBooster.ComboNewBooster";
break;
}
}
I mean, it's essentially the same code, so it should work, right? Let me know what your results are. Sorry about the insult from earlier; I thought I had read the whole story, or perhaps you just misinterpreted what I was getting at. Ah well, no hard feelings.
|
|
|
06/21/2006 05:13:23
|
v0rTeX
Wicked Sick!
Joined: 12/19/2004 20:59:52
Messages: 562
Offline
|
Yes that is exactly what I did.
It works in Instant Action just fine to replace the combo with a new one. But it does absoultely nothing to replace the combo when clients connect to a dedicated server running this code.
Drago was close with the code from Mysterial which actually has some post begin play code written in, but it still doesn't actually use the new combo in a dedicated server.
|
|
|
06/21/2006 05:15:28
|
v0rTeX
Wicked Sick!
Joined: 12/19/2004 20:59:52
Messages: 562
Offline
|
Continuum wrote:
What if you used the no combo mut then re-created the combos (code is already there) then added your "new" combos to the rpg as something other than a combo...
The trouble with that is the 'no combo' mutator is actually a 'no adrenaline' mutator. It doesn't really 'disable' combos so much as it just removes all adrenaline of any kind from the game. And since so many things about RPG already utilize the adrenaline system, it would be a ton of work to recode RPG to use adrenaline combos that aren't really adrenaline combos.
It is entirely possible that the normal booster combo could be replaced. But the problem is that the few of us who are really trying to make it work can only write code based on previous examples. And in this case the previous example we have to go on doesn't work (at least in UT2004). What we need is someone like Mysterial who is up to his eyeballs in knowledge of how the code works to show us what those code lines about client replication need to look like to work.
As I said in my other post, we can make it work for Instant Action, we just need to know how to 'force' it to work on a dedicated server and the clients that connect to it.
|
|
|
06/21/2006 11:47:53
|
KohanX
Godlike
Joined: 03/04/2006 13:40:23
Messages: 350
Offline
|
Hmm... Must it use IsRelevant() to give the combos to the players? Could you do:
Code:
class MutNewBooster extends Mutator;
function ModifyPlayer( Pawn Other )
{
local int i;
Super.ModifyPlayer(Other);
if ( xPlayer(Other) != None )
{
for ( i=0; i<16; i++ )
{
if ( xPlayer(Other).ComboNameList[i] ~= "NewBooster.ComboNewBooster" )
break;
else if ( xPlayer(Other).ComboNameList[i] == "xGame.ComboDefensive" )
{
xPlayer(Other).ComboNameList[i] = "NewBooster.ComboNewBooster";
break;
}
}
}
}
ModifyPlayer() usually works (dunno about a dedicated server), so you might try that. If all else fails, find the function that is called when a player joins the server and have it call the combo-adding function.
Oohh... Is xPlayer a subclass of Pawn? If not, I see why that wouldn't work.
|
|
|
06/21/2006 18:02:23
|
v0rTeX
Wicked Sick!
Joined: 12/19/2004 20:59:52
Messages: 562
Offline
|
Code:
simulated function BeginPlay()
{
local xPlayer P;
local int x;
//Override default adrenaline combos in xPlayer and all subclasses (netgame clients only)
if (Level.NetMode != NM_DedicatedServer)
{
//foreach DynamicActors(class'xPlayer', P)
P = xPlayer(Level.GetLocalPlayerController());
if (P != None)
for (x = 0; x < 16; x++)
if (P.ComboList[x] == class'ComboDefensive')
P.ComboList[x] = class'ComboDefensiveFix';
}
Super.BeginPlay();
}
function bool CheckReplacement(Actor Other, out byte bSuperRelevant)
{
local int x;
//Override default adrenaline combos in xPlayer and all subclasses (servers only)
if (xPlayer(Other) != None)
{
for (x = 0; x < 16; x++)
if (xPlayer(Other).ComboNameList[x] ~= "xgame.combodefensive")
xPlayer(Other).ComboNameList[x] = "DefensiveFix.ComboDefensiveFix";
}
return true;
}
That is the code Drago found in another mutator Mysterial made that is supposed to replace Booster in UT2k3. But it still doesnt work in 2k4 on a dedicated server. I dont know enough about code to see why this wouldnt work.
|
|
|
06/21/2006 18:42:52
|
KohanX
Godlike
Joined: 03/04/2006 13:40:23
Messages: 350
Offline
|
We still don't know why it's only the Dedicated Server on which it does not succeed.
|
|
|
06/21/2006 20:08:04
|
Continuum
Wicked Sick!
Joined: 03/09/2005 05:20:36
Messages: 479
Location: Indianapolis, Indiana
Offline
|
Youve tried changing this?
Code:
if (Level.NetMode != NM_DedicatedServer)
|
Current WIP:
Skins:
|
|
|
06/21/2006 20:20:16
|
v0rTeX
Wicked Sick!
Joined: 12/19/2004 20:59:52
Messages: 562
Offline
|
Continuum wrote:
Youve tried changing this?
Code:
if (Level.NetMode != NM_DedicatedServer)
Honestly, I dont fully understand how its all supposed to work. I could try changing things one way or another and just brute force testing, but that usually doesn't work when I try it. I believe it says that line the way it does because that section of the code is designed to work on the clients, not the server. So if you were to take the exclamation point out of there, that piece of code would be disabled unless it was acting as a dedicated server.
Also, I have a fixed version of Booster that I use so I am less inclined to try and make this one work. I'm happy with a new key combo to use. I'm happy to test things when someone else thinks they have fixed the code but I won't go trying to fix it myself anymore. I took a shot at it and it didn't work.
|
|
|
|