Teun
May 3, 2017, 9:30pm
1
Hello,
As I am writing a scripthook plugin I want to let a player specate someone if he dies.
It goes pretty well, but I don’t know how I could make the specation. How is this done?
I saw another menu who has it - I am still waiting for their reply.
Thanks
Search spectate in the nativedb.
Teun
May 4, 2017, 10:53am
3
I can’t find something there, but by decompiling the trainer this is all I can find (which could be useful):
case 0:
if ( !(unsigned int)sub_18013EB40(v2) )
goto LABEL_20;
if ( byte_180442CEC )
{
nativeInit(0xB16FCE9DDC7BA182ui64); //Any IS_SCREEN_FADED_OUT() // B16FCE9DDC7BA182 9CAA05FA
if ( !*(_DWORD *)nativeCall() )
{
nativeInit(0x797AC7CB535BA28Fui64); //Any IS_SCREEN_FADING_OUT() // 797AC7CB535BA28F 79275A57
if ( !*(_DWORD *)nativeCall() )
{
sub_18013E720(0x3E8u);
nativeInit(0xB16FCE9DDC7BA182ui64); //Any IS_SCREEN_FADED_OUT() // B16FCE9DDC7BA182 9CAA05FA
while ( !*(_DWORD *)nativeCall() )
{
scriptWait(0);
nativeInit(0xB16FCE9DDC7BA182ui64); //Any IS_SCREEN_FADED_OUT() // B16FCE9DDC7BA182 9CAA05FA
}
v5 = sub_18013E3B0((__int64)&v75, v71);
v6 = *(_OWORD *)v5;
v76 = *(_QWORD *)(v5 + 16);
sub_18015A640(0x7503F7948F491A7ui64, v7, v8, v9); //void REQUEST_COLLISION_AT_COORD(Any p0, Any p1, Any p2) // 07503F7948F491A7 CD9805E7
sub_18013EC10(1u, v71);
nativeInit(0xB16FCE9DDC7BA182ui64); //Any IS_SCREEN_FADED_OUT() // B16FCE9DDC7BA182 9CAA05FA
if ( *(_DWORD *)nativeCall() )
sub_18013E6E0(0x3E8u);
}
}
v10 = sub_18015ABD0((signed __int64)&v75, (unsigned __int64)"Spectating: ~b~<C>", (__int64)&v68);
v11 = sub_18015AD00((signed __int64)&v64, v10, (unsigned __int64)"</C>.");
sub_1801391A0(v11);
goto LABEL_55;
}
nativeInit(0xB16FCE9DDC7BA182ui64); //Any IS_SCREEN_FADED_OUT() // B16FCE9DDC7BA182 9CAA05FA
if ( !*(_DWORD *)nativeCall() )
{
nativeInit(0x797AC7CB535BA28Fui64); //Any IS_SCREEN_FADING_OUT() // 797AC7CB535BA28F 79275A57
if ( !*(_DWORD *)nativeCall() )
{
sub_18013E720(0x3E8u);
nativeInit(0xB16FCE9DDC7BA182ui64); //Any IS_SCREEN_FADED_OUT() // B16FCE9DDC7BA182 9CAA05FA
while ( !*(_DWORD *)nativeCall() )
{
scriptWait(0);
nativeInit(0xB16FCE9DDC7BA182ui64); //Any IS_SCREEN_FADED_OUT() // B16FCE9DDC7BA182 9CAA05FA
}
v12 = sub_18013E3B0((__int64)&v75, v4);
v13 = *(_OWORD *)v12;
v76 = *(_QWORD *)(v12 + 16);
sub_18015A640(0x7503F7948F491A7ui64, v14, v15, v16); //void REQUEST_COLLISION_AT_COORD(Any p0, Any p1, Any p2) // 07503F7948F491A7 CD9805E7
sub_18013EC10(0, v71);
nativeInit(0xB16FCE9DDC7BA182ui64); //Any IS_SCREEN_FADED_OUT() // B16FCE9DDC7BA182 9CAA05FA
if ( *(_DWORD *)nativeCall() )
sub_18013E6E0(0x3E8u);
}
}
goto LABEL_56;
Teun
May 4, 2017, 11:15am
4
Ok. After searching I finally found some working code on this forum.
Here is some C++ code you can use as reference:
else if (GetMenuEntry() == 3) // spectate player
{
if (!NETWORK::NETWORK_IS_PLAYER_CONNECTED(g_online_selectedPlayer))
{
DrawToast("Player isn't connected.");
g_isSpectating = false;
}
if (g_isSpectating)
{
if (!CAM::IS_SCREEN_FADED_OUT())
{
if (!CAM::IS_SCREEN_FADING_OUT())
{
CAM::DO_SCREEN_FADE_OUT(1000);
while (!CAM::IS_SCREEN_FADED_OUT()) WAIT(0);
STREAMING::REQUEST_COLLISION_AT_C…