[Plugin] RPG - HUD - RAK
#1

RAK

Hi,
First of all I hope it will get approved, because it is far less intruding than YSF plugin and much easier to update if there will be such a need (just a few offsets, no memory addresses, working without update since 0.3x for now).

With this plugin you can do this:
[ame]http://www.youtube.com/watch?v=FeWFyfkX1WE[/ame]

There are 3 include files. Include RAK.inc for networ engine functions, RPG.inc for RPG and RAKTOOLS.inc for HUD/Widescreen/Cutscene mode.


The RAK.inc functions (plugin):

Код:
native BitStream:InitBitStream();
native WriteToBitStream(BitStream:stream, type, {Float,_}:...);
native ReleaseBitStream(BitStream:stream);
native SendRPC(playerid, RPC, BitStream:stream);
native SendRPCToAll(RPC, BitStream:stream);
native SendData(playerid, BitStream:stream);
native SendDataToAll(BitStream:stream);
native AddTickSignal(index);
native RemoveTickSignal(index);

enum
{
	BS_BOOL,
	BS_CHAR,
	BS_UCHAR,
	BS_SHORT,
	BS_USHORT,
	BS_INT,
	BS_UINT,
	BS_FLOAT,
	BS_STRING,
	BSC_BOOL,
	BSC_CHAR,
	BSC_UCHAR,
	BSC_SHORT,
	BSC_USHORT,
	BSC_INT,
	BSC_UINT,
	BSC_FLOAT,
	BSC_STRING,
	BS_NQUAT,
	BS_VECTOR,
	BS_ARRAY_BYTE,
	BS_ARRAY_WORD,
	BS_ARRAY_DWORD
};
Well, I think if you are interested in this the names speak for themselves. You can send RPC/Packets to client with this.
Example usage:
Код:
#define RPC_WorldPlayerAdd 32
#define RPC_WorldPlayerRemove 163
#define RPC_ServerJoin 137
#define RPC_ServerQuit 138
#define ID_PLAYER_SYNC 212
#define ID_AIM_SYNC 218

forward Timer_FreeSlot(slot);
public Timer_FreeSlot(slot)
{
	if (!IsPlayerConnected(slot))
	{
		new BitStream:stream;

		stream = InitBitStream();
	    WriteToBitStream(stream, BS_SHORT, slot);
	    SendRPCToAll(RPC_WorldPlayerRemove, stream);
		ReleaseBitStream(stream);

		stream = InitBitStream();
	    WriteToBitStream(stream, BS_SHORT, slot);
		WriteToBitStream(stream, BS_CHAR, 0);
	    SendRPCToAll(RPC_ServerQuit, stream);
		ReleaseBitStream(stream);

		FreeSlot(slot);
	}
}

...
...

new BitStream:bsJoin, BitStream:bsAdd, BitStream:bsOnFoot, BitStream:bsAim, slot, Float:rot[3];

GetRotFromQuat(quat, rot[0], rot[1], rot[2]);

bsJoin = InitBitStream();
WriteToBitStream(bsJoin, BS_SHORT, slot);
WriteToBitStream(bsJoin, BS_INT, -1); //unknown
WriteToBitStream(bsJoin, BS_UCHAR, 1); //isNPC
WriteToBitStream(bsJoin, BS_UCHAR, 0); //nameLen

bsAdd = InitBitStream();
WriteToBitStream(bsAdd, BS_SHORT, slot);
WriteToBitStream(bsAdd, BS_CHAR, -1); //team
WriteToBitStream(bsAdd, BS_INT, skinId); //skin
WriteToBitStream(bsAdd, BS_FLOAT, vecFrom[0]);
WriteToBitStream(bsAdd, BS_FLOAT, vecFrom[1]);
WriteToBitStream(bsAdd, BS_FLOAT, vecFrom[2]);
WriteToBitStream(bsAdd, BS_FLOAT, rot[0]); //facingAngle
WriteToBitStream(bsAdd, BS_UINT, 0); //color
WriteToBitStream(bsAdd, BS_UCHAR, 0); //fightingStyle
static unkArray[11] = {0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8};
WriteToBitStream(bsAdd, BS_ARRAY_WORD, unkArray, sizeof(unkArray));

bsOnFoot = InitBitStream();
WriteToBitStream(bsOnFoot, BS_UCHAR, ID_PLAYER_SYNC); //PacketID
WriteToBitStream(bsOnFoot, BS_SHORT, slot); //playerId
WriteToBitStream(bsOnFoot, BS_BOOL, true); //hasLR
WriteToBitStream(bsOnFoot, BS_SHORT, 0); //lrAnalog
WriteToBitStream(bsOnFoot, BS_BOOL, true); //hasUD
WriteToBitStream(bsOnFoot, BS_SHORT, 0); //udAnalog
WriteToBitStream(bsOnFoot, BS_SHORT, 4 | 128); //keys

WriteToBitStream(bsOnFoot, BS_FLOAT, vecFrom[0]);
WriteToBitStream(bsOnFoot, BS_FLOAT, vecFrom[1]);
WriteToBitStream(bsOnFoot, BS_FLOAT, vecFrom[2]);

WriteToBitStream(bsOnFoot, BS_NQUAT, quat); //quat
WriteToBitStream(bsOnFoot, BS_UCHAR, -1); //health/armour
WriteToBitStream(bsOnFoot, BS_UCHAR, 35); //weapon
WriteToBitStream(bsOnFoot, BS_UCHAR, 0); //specialAction

WriteToBitStream(bsOnFoot, BS_VECTOR, vecSpeed); //moveSpeed
WriteToBitStream(bsOnFoot, BS_BOOL, false); //hasSurfInfo
WriteToBitStream(bsOnFoot, BS_BOOL, false); //hasAnimation
//WriteToBitStream(bsOnFoot, BS_INT, 0x800404A5); //animation

bsAim = InitBitStream();
WriteToBitStream(bsAim, BS_UCHAR, ID_AIM_SYNC); //PacketID
WriteToBitStream(bsAim, BS_SHORT, slot); //playerId
WriteToBitStream(bsAim, BS_UCHAR, 8); //CamMode
WriteToBitStream(bsAim, BS_FLOAT, vecAim[0]); //AimF1.X
WriteToBitStream(bsAim, BS_FLOAT, vecAim[1]); //AimF1.Y
WriteToBitStream(bsAim, BS_FLOAT, vecAim[2]); //AimF1.Z
WriteToBitStream(bsAim, BS_FLOAT, vecFrom[0]);
WriteToBitStream(bsAim, BS_FLOAT, vecFrom[1]);
WriteToBitStream(bsAim, BS_FLOAT, vecFrom[2]);
WriteToBitStream(bsAim, BS_FLOAT, 0); //fAimZ
WriteToBitStream(bsAim, BS_UCHAR, 0xFF); //ExtZoom : 6 / weapoonState : 2
WriteToBitStream(bsAim, BS_UCHAR, 0);

for (new i = 0; i < (MAX_SLOTS - 4); i++)
{
	if (IsPlayerConnected(i))
	{
		if (worldId == -1 || (GetPlayerVirtualWorld(i) == worldId))
		{
			if (interiorId == -1 || (GetPlayerInterior(i) == interiorId))
			{
				if (GetPlayerDistanceFromPoint(i, vecFrom[0], vecFrom[1], vecFrom[2]) <= stream_distance)
				{
					SendRPC(i, RPC_ServerJoin, bsJoin);
					SendRPC(i, RPC_WorldPlayerAdd, bsAdd);
					SendData(i, bsOnFoot);
					SendData(i, bsAim);
				}
			}
		}
	}
}

ReleaseBitStream(bsJoin);
ReleaseBitStream(bsAdd);
ReleaseBitStream(bsOnFoot);
ReleaseBitStream(bsAim);
...
...
Currently supported version is 0.3z. I have not updated this plugin since 0.3x, so I hope it will work in 0.3.7, but these things here in PAWN:
Код:
#define RPC_WorldPlayerAdd 32
#define RPC_WorldPlayerRemove 163
#define RPC_ServerJoin 137
#define RPC_ServerQuit 138
#define ID_PLAYER_SYNC 212
#define ID_AIM_SYNC 218
need to be updated from version to version, like from 0.3x to 0.3z.
The minor updates like from 0.3z to 0.3z-R2 should not affect these.

RAK plugin only gives access to network engine (and only for sending data), so it doesn't relay on any
memory addresses like kurta999's one, but it still can stop working if major change in structures will happen (I think I probably will have to update it for 0.3.7, not sure).

And...
Код:
native AddTickSignal(index);
native RemoveTickSignal(index);
Honestly I don't remember what these do.

The RPG.inc functions:
Код:
RPG_FireAimQuat(Float:vecFrom[3], Float:vecAim[3], Float:quat[4], Float:vecSpeed[3], skinId = 0, liveTime = 1000, worldId = -1, interiorId = -1, Float:stream_distance = 300.0);
RPG_FireQuat(Float:vecPos[3], Float:quat[4], Float:vecSpeed[3], skinId = 0, liveTime = 1000, worldId = -1, interiorId = -1, Float:stream_distance = 300.0);
RPG_FireAim(Float:vecFrom[3], Float:vecAim[3], Float:vecSpeed[3], skinId = 0, liveTime = 1000, worldId = -1, interiorId = -1, Float:stream_distance = 300.0);
RPG_FireFromTo(Float:vecFrom[3], Float:vecTo[3], Float:vecSpeed[3], skinId = 0, liveTime = 1000, worldId = -1, interiorId = -1, Float:stream_distance = 300.0);
RPG_FireRot(Float:vecPos[3], Float:vecSpeed[3], Float:vecRot[3], skinId = 0, liveTime = 1000, worldId = -1, interiorId = -1, Float:stream_distance = 300.0);
RPG_Fire(playerid);
vecFrom/vecPos - start position
vecTo - end position (where NPC should aim at)
vecAim - the aim vector determines missle direction (where NPC should aim)
quat - the Quaternion/orientation of NPC
vecSpeed - the 3D vector speed of NPC
skinId - the skin identifier of NPC
liveTime - how long should NPC live in ms - this value should always be >= 1000ms otherwise it won't shoot any rocket (could not make it in time)
worldId - determines in which virtual world you want to sync RPG (-1 = all)
interiorId - determines in which interior you want to sync RPG (-1 = all)
stream_distance - stream distance of RPG

RPG_Fire(playerid) - does the thing from *******.

The RAKTOOLS.inc functions:
Код:
stock TogglePlayerHUD(playerid, bool:toggle)
Activates widescreen/cutscene mode and disables player HUD (also player can't go to main menu). If player plays with 16:9 (1080p, 720p) aspect ratio
then this doesn't add black bars bottom/top, just hides HUD. This option may not work in future samp versions.

Important:
RAK plugin just provides access to network engine. All the logic for RPG was written in PAWN and you can modify RPG.inc (it also includes static math functions) or create
new functions.

Download (Plugin source + includes + Windows & Linux x32 binaries):
http://www.mediafire.com/download/7d...lney8fv/RPG.7z
Reply


Messages In This Thread
RAK - by bartekdvd - 05.04.2015, 22:36
Re: RPG - HUD - RAK - by Alex Magaсa - 05.04.2015, 22:45
Re: RPG - HUD - RAK - by n0minal - 05.04.2015, 22:46
Re: RPG - HUD - RAK - by kurta999 - 05.04.2015, 22:48
Re: RPG - HUD - RAK - by bartekdvd - 05.04.2015, 22:51
Re: RPG - HUD - RAK - by n0minal - 05.04.2015, 22:54
Re: RPG - HUD - RAK - by Crayder - 05.04.2015, 23:08
Re: RPG - HUD - RAK - by n0minal - 05.04.2015, 23:11
Re: RPG - HUD - RAK - by bartekdvd - 05.04.2015, 23:32
Re: RPG - HUD - RAK - by n0minal - 05.04.2015, 23:35
Re: RPG - HUD - RAK - by kurta999 - 06.04.2015, 00:11
Re: RPG - HUD - RAK - by n0minal - 06.04.2015, 00:16
Re: RPG - HUD - RAK - by kurta999 - 06.04.2015, 00:26
Re: RPG - HUD - RAK - by Marricio - 06.04.2015, 01:17
Re: RPG - HUD - RAK - by n0minal - 06.04.2015, 01:32
Re: RPG - HUD - RAK - by Marricio - 06.04.2015, 01:36
Re: RPG - HUD - RAK - by n0minal - 06.04.2015, 01:39
Re: RPG - HUD - RAK - by Meta - 06.04.2015, 02:22
Re: RPG - HUD - RAK - by Marricio - 06.04.2015, 03:02
Re: RPG - HUD - RAK - by bartekdvd - 06.04.2015, 09:10
AW: RPG - HUD - RAK - by FSAOskar - 06.04.2015, 09:14
Re: RPG - HUD - RAK - by iFrame - 06.04.2015, 09:36
Re: RPG - HUD - RAK - by Chaster - 06.04.2015, 12:08
AW: RPG - HUD - RAK - by FSAOskar - 09.04.2015, 19:33
Re: RPG - HUD - RAK - by uZ1 - 09.04.2015, 20:12
Re: RPG - HUD - RAK - by FernandoLight - 09.04.2015, 21:57
Re: RPG - HUD - RAK - by De4dpOol - 10.04.2015, 10:12
Re: RPG - HUD - RAK - by De4dpOol - 04.05.2015, 12:24
Re: RPG - HUD - RAK - by Kyle - 04.05.2015, 13:21
AW: RPG - HUD - RAK - by NaS - 12.05.2015, 17:06
Re: RPG - HUD - RAK - by kurta999 - 12.05.2015, 17:28
AW: RPG - HUD - RAK - by NaS - 12.05.2015, 17:50
Re: RPG - HUD - RAK - by Kar - 17.05.2015, 20:54
Re: RPG - HUD - RAK - by Abagail - 20.05.2015, 00:50
Re: RPG - HUD - RAK - by DRIFT_HUNTER - 21.05.2015, 21:02
Re: RPG - HUD - RAK - by Abagail - 21.05.2015, 22:38
Re: RPG - HUD - RAK - by kkeeii - 27.05.2015, 06:59
Re: RPG - HUD - RAK - by DRIFT_HUNTER - 27.05.2015, 22:08

Forum Jump:


Users browsing this thread: 5 Guest(s)