frikos
9th July 2006, 12:00
Hi out there,
i saw some threads, where it has been written, that there are any undetected public bots available.
I just tried my old method and it still works on the current PSB- & FP-Config :cross-eyed:
I always wanted to release it in a complete bot, but i hardly even find the time to manage my work, so i'll just release the method etc.
You should just take a look at the old Window Hack! (http://www.mpcforum.com/showthread.php?t=124314).
The new method just adds 2 new lines.
As an example a retlock and norecoil.
class NewEscapeBar extends R6MenuMPInGameEscNavBar;
//================================================== ===========================
// ••• The Escape-bar gets Created •••
//================================================== ===========================
function Created ()
{
Super.Created (); // create the default bar
Root.CreateWindow(Class'hackclass',1.00, 1.00, 5.00, 5.00)); // create our hack window
// that's the trick, FP checks for this entry , so we reset it to the default and it clears the .ini
Root.MenuClassDefines.ClassInGameEscNavBar = class'R6Menu.R6MenuMPInGameEscNavBar';
Root.MenuClassDefines.SaveConfig();
}
As you see, you can just replace the entry in the R6ClassDefines.ini again:
ClassInGameEscNavBar=Class'yourhackpackage.NewEsca peBar'
After hooking, it will reset the ini with the old, "clean" value... so you'll have to update the ini each time, which would be easily possible through an batch file ;)
For your hacks you can create the "hackclass", this example shows the "keyevent" too
class HackClass extends UWindowWindow;
var bool b_recoil,
b_acc;
//================================================== ===========================
// ••• window gets created; do not change the bLeaveOnScreen •••
//================================================== ===========================
function Created ()
{
Super.Created ();
bLeaveOnScreen = true;
SetAcceptsHotKeys(True); // for the hotkeydown function
}
function BeforePaint (Canvas C, float X, float Y)
{
Super.BeforePaint (C, X, Y);
if (b_recoil) R6Playercontroller(GetPlayerOwner()).m_fDesignerJu mpFactor = -30;
else R6Playercontroller(GetPlayerOwner()).m_fDesignerJu mpFactor = 1;
if (b_acc)
{
R6Weapons(GetPlayerOwner().Pawn.EngineWeapon).m_fE ffectiveAccuracy = R6Weapons(GetPlayerOwner().Pawn.EngineWeapon).m_st AccuracyValues.fBaseAccuracy;
R6Weapons(GetPlayerOwner().Pawn.EngineWeapon).m_fW orstAccuracy = R6Weapons(GetPlayerOwner().Pawn.EngineWeapon).m_st AccuracyValues.fBaseAccuracy;
R6Weapons(GetPlayerOwner().Pawn.EngineWeapon).m_fD esiredAccuracy = R6Weapons(GetPlayerOwner().Pawn.EngineWeapon).m_st AccuracyValues.fBaseAccuracy;
}
}
//================================================== ===========================
// ••• Function similar to keyevent •••
//================================================== ===========================
function bool HotKeyDown(int Key, float X, float Y)
{
switch key
{
case 114: // Key: F3
b_recoil = !b_recoil;
break;
case 115: // Key: F4
b_acc = !b_acc;
break;
}
return false;
}
I hope you can use this... maybe i'll start playing again soon :knockedout:
PS: you should use other class - names ;) maybe it works with the other entries of the .ini too, did not try any other values
// EDIT:
If you don't know where to get keys-numbersyou can look here here... (http://wiki.beyondunreal.com/wiki/InputKeyMap)
the enumeration is also in Engine -> Interactions
i used the following code to get the names dynamicly ingame... like this you can assign keys to different actions while you are playing
function int ConvertEnumToKey ( string enum )
{
local int key;
local string value;
value = "IK_" $ enum;
for (key=0; key<192; key++)
{
if (value == string(GetEnum (Enum'EInputKey', key)))
{
return key;
}
}
return 0;
}
function UpdateHackList (int depth, string value)
{
keyarray[depth] = value;
}
you could make for example a string array with different actions
UpdateHackList(114, "NoRecoil");
Just make a function that gets called from the "keyevent" which gets the action and executes it
i used this one to remove an action from my keys // UnassignKeyFromAction ("F3");
function UnassignKeyFromAction (string key)
{
local int i;
for (i=0; i<192; i++)
{
if (Mid (GetEnum (Enum'EInputKey', i),3) == key)
{
keyarray[i] = "";
return;
}
}
}
and a list for the console to see all assigned actions
function GiveHackList ()
{
local int i;
GetPlayerOwner().AddMessagetoConsole("==============================", root.colors.white);
GetPlayerOwner().AddMessagetoConsole(" ••• Hack List •••", root.colors.white);
GetPlayerOwner().AddMessagetoConsole("==============================", root.colors.white);
for (i=0; i<keyarray.length; i++)
{
if (keyarray[i] != "None" && keyarray[i] != "")
{
GetPlayerOwner().AddMessagetoConsole(Mid (GetEnum (Enum'EInputKey', i), 3) $ " == " $ keyarray[i], root.colors.white);
}
}
GetPlayerOwner().AddMessagetoConsole("==============================", root.colors.white);
}
i saw some threads, where it has been written, that there are any undetected public bots available.
I just tried my old method and it still works on the current PSB- & FP-Config :cross-eyed:
I always wanted to release it in a complete bot, but i hardly even find the time to manage my work, so i'll just release the method etc.
You should just take a look at the old Window Hack! (http://www.mpcforum.com/showthread.php?t=124314).
The new method just adds 2 new lines.
As an example a retlock and norecoil.
class NewEscapeBar extends R6MenuMPInGameEscNavBar;
//================================================== ===========================
// ••• The Escape-bar gets Created •••
//================================================== ===========================
function Created ()
{
Super.Created (); // create the default bar
Root.CreateWindow(Class'hackclass',1.00, 1.00, 5.00, 5.00)); // create our hack window
// that's the trick, FP checks for this entry , so we reset it to the default and it clears the .ini
Root.MenuClassDefines.ClassInGameEscNavBar = class'R6Menu.R6MenuMPInGameEscNavBar';
Root.MenuClassDefines.SaveConfig();
}
As you see, you can just replace the entry in the R6ClassDefines.ini again:
ClassInGameEscNavBar=Class'yourhackpackage.NewEsca peBar'
After hooking, it will reset the ini with the old, "clean" value... so you'll have to update the ini each time, which would be easily possible through an batch file ;)
For your hacks you can create the "hackclass", this example shows the "keyevent" too
class HackClass extends UWindowWindow;
var bool b_recoil,
b_acc;
//================================================== ===========================
// ••• window gets created; do not change the bLeaveOnScreen •••
//================================================== ===========================
function Created ()
{
Super.Created ();
bLeaveOnScreen = true;
SetAcceptsHotKeys(True); // for the hotkeydown function
}
function BeforePaint (Canvas C, float X, float Y)
{
Super.BeforePaint (C, X, Y);
if (b_recoil) R6Playercontroller(GetPlayerOwner()).m_fDesignerJu mpFactor = -30;
else R6Playercontroller(GetPlayerOwner()).m_fDesignerJu mpFactor = 1;
if (b_acc)
{
R6Weapons(GetPlayerOwner().Pawn.EngineWeapon).m_fE ffectiveAccuracy = R6Weapons(GetPlayerOwner().Pawn.EngineWeapon).m_st AccuracyValues.fBaseAccuracy;
R6Weapons(GetPlayerOwner().Pawn.EngineWeapon).m_fW orstAccuracy = R6Weapons(GetPlayerOwner().Pawn.EngineWeapon).m_st AccuracyValues.fBaseAccuracy;
R6Weapons(GetPlayerOwner().Pawn.EngineWeapon).m_fD esiredAccuracy = R6Weapons(GetPlayerOwner().Pawn.EngineWeapon).m_st AccuracyValues.fBaseAccuracy;
}
}
//================================================== ===========================
// ••• Function similar to keyevent •••
//================================================== ===========================
function bool HotKeyDown(int Key, float X, float Y)
{
switch key
{
case 114: // Key: F3
b_recoil = !b_recoil;
break;
case 115: // Key: F4
b_acc = !b_acc;
break;
}
return false;
}
I hope you can use this... maybe i'll start playing again soon :knockedout:
PS: you should use other class - names ;) maybe it works with the other entries of the .ini too, did not try any other values
// EDIT:
If you don't know where to get keys-numbersyou can look here here... (http://wiki.beyondunreal.com/wiki/InputKeyMap)
the enumeration is also in Engine -> Interactions
i used the following code to get the names dynamicly ingame... like this you can assign keys to different actions while you are playing
function int ConvertEnumToKey ( string enum )
{
local int key;
local string value;
value = "IK_" $ enum;
for (key=0; key<192; key++)
{
if (value == string(GetEnum (Enum'EInputKey', key)))
{
return key;
}
}
return 0;
}
function UpdateHackList (int depth, string value)
{
keyarray[depth] = value;
}
you could make for example a string array with different actions
UpdateHackList(114, "NoRecoil");
Just make a function that gets called from the "keyevent" which gets the action and executes it
i used this one to remove an action from my keys // UnassignKeyFromAction ("F3");
function UnassignKeyFromAction (string key)
{
local int i;
for (i=0; i<192; i++)
{
if (Mid (GetEnum (Enum'EInputKey', i),3) == key)
{
keyarray[i] = "";
return;
}
}
}
and a list for the console to see all assigned actions
function GiveHackList ()
{
local int i;
GetPlayerOwner().AddMessagetoConsole("==============================", root.colors.white);
GetPlayerOwner().AddMessagetoConsole(" ••• Hack List •••", root.colors.white);
GetPlayerOwner().AddMessagetoConsole("==============================", root.colors.white);
for (i=0; i<keyarray.length; i++)
{
if (keyarray[i] != "None" && keyarray[i] != "")
{
GetPlayerOwner().AddMessagetoConsole(Mid (GetEnum (Enum'EInputKey', i), 3) $ " == " $ keyarray[i], root.colors.white);
}
}
GetPlayerOwner().AddMessagetoConsole("==============================", root.colors.white);
}