aboutsummaryrefslogtreecommitdiff
path: root/Northstar.CustomServers/mod/scripts/vscripts/_custom_codecallbacks.gnut
blob: 7f102f6edf0e7fd5aa4a03de556ab365bf9c37f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
untyped

globalize_all_functions

global struct ClServer_MessageStruct {
	string message
	entity player
	int channelId
	bool shouldBlock
}

struct {
	array< ClServer_MessageStruct functionref( ClServer_MessageStruct ) > OnReceivedSayTextMessageCallbacks
} NsCustomCallbacks

void function CServerGameDLL_ProcessMessageStartThread()
{
	thread CServerGameDLL_OnReceivedSayTextMessageCallback()
}

void function CServerGameDLL_OnReceivedSayTextMessageCallback()
{
	ClServer_MessageStruct localMessage
	localMessage.message =  NSChatGetCurrentMessage()
	localMessage.player = GetPlayerByIndex(NSChatGetCurrentPlayer())
	localMessage.channelId = NSChatGetCurrentChannel()
	localMessage.shouldBlock = false

	foreach ( callbackFunc in NsCustomCallbacks.OnReceivedSayTextMessageCallbacks )
	{
		ClServer_MessageStruct returnStruct = callbackFunc(localMessage)
		localMessage.message = returnStruct.message
		localMessage.player = returnStruct.player
		localMessage.channelId = returnStruct.channelId
		localMessage.shouldBlock = localMessage.shouldBlock || returnStruct.shouldBlock
	}

	NSSetMessage(localMessage.message, localMessage.player.GetPlayerIndex(), localMessage.channelId, localMessage.shouldBlock)
}

void function AddCallback_OnReceivedSayTextMessage( ClServer_MessageStruct functionref (ClServer_MessageStruct) callbackFunc )
{
	NsCustomCallbacks.OnReceivedSayTextMessageCallbacks.append(callbackFunc)
}