SendServerData: Difference between revisions

From NPC for VCMP 0.4 Servers
Jump to navigation Jump to search
No edit summary
No edit summary
Line 5: Line 5:
desc=This will send data( results in calling onClientScriptData of squirrel-server )|
desc=This will send data( results in calling onClientScriptData of squirrel-server )|
params=<syntaxhighlight lang="lua">(data)</syntaxhighlight>
params=<syntaxhighlight lang="lua">(data)</syntaxhighlight>
<poem>::data: The blob which needs to be formatted as below.</poem>|
<poem>::data: The blob which needs to be formatted as below.
Inorder for the squirrel-plugin of server to read what is send :
1. The first four bytes should contain the length of the data being send.
2. The first four bytes should be big endian. swap4 function is used here to achieve this.
3. The length of string is written before the string as two bytes.
4. The word written in (3) should be big endian. Here swap2 function can be used (2 bytes-and hence the name)
</poem>|
example=
example=
<poem>Input npcscript</poem>
<poem>Input npcscript</poem>

Revision as of 23:15, 20 January 2023

This function was added in v1.6 beta and will not work on previous versions.


Description:
This will send data( results in calling onClientScriptData of squirrel-server )


Parameters:

(data)

data: The blob which needs to be formatted as below.
Inorder for the squirrel-plugin of server to read what is send :
1. The first four bytes should contain the length of the data being send.
2. The first four bytes should be big endian. swap4 function is used here to achieve this.
3. The length of string is written before the string as two bytes.
4. The word written in (3) should be big endian. Here swap2 function can be used (2 bytes-and hence the name)


Return Values:
This function does not return any specific values.


Example

Input npcscript

local b=blob();

b.writen( swap4(16), 'i' );

b.writen( 1234, 'i' );

b.writen( 10, 'b' ); //b - byte

b.writen( swap2(5), 'w' ); //w - word 

b.writen('h','c');  //c - signed char
b.writen('e','c');
b.writen('l','c');
b.writen('l','c');
b.writen('o','c');

b.writen(100.789, 'f'); //f float

SendServerData(b);

Output from server

function onClientScriptData(p){
print(Stream.ReadInt());print(Stream.ReadByte());
print(Stream.ReadString());print(Stream.ReadFloat());
}
[SCRIPT]  1234
[SCRIPT]  10
[SCRIPT]  hello
[SCRIPT]  100.789

Related Functions

The following functions may be helpful as they relate to this function in one way or another.