Skip to content

Commit 43747f9

Browse files
Try fix travis and add synced meta data and meta data events
1 parent f6a084f commit 43747f9

File tree

10 files changed

+120
-6
lines changed

10 files changed

+120
-6
lines changed

.travis.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ matrix:
3737
- cd Release
3838
- ls -l
3939
deploy:
40-
matrix:
4140
- provider: releases
4241
skip_cleanup: true
4342
api_key:

api/AltV.Net/Alt.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,18 @@ public static event ConsoleCommandDelegate OnConsoleCommand
9999
add => Module.ConsoleCommandEventHandler.Add(value);
100100
remove => Module.ConsoleCommandEventHandler.Remove(value);
101101
}
102+
103+
public static event MetaDataChangeDelegate OnMetaDataChange
104+
{
105+
add => Module.MetaDataChangeEventHandler.Add(value);
106+
remove => Module.MetaDataChangeEventHandler.Remove(value);
107+
}
108+
109+
public static event MetaDataChangeDelegate OnSyncedMetaDataChange
110+
{
111+
add => Module.SyncedMetaDataChangeEventHandler.Add(value);
112+
remove => Module.SyncedMetaDataChangeEventHandler.Remove(value);
113+
}
102114

103115
public static void Emit(string eventName, params object[] args) => Server.TriggerServerEvent(eventName, args);
104116

api/AltV.Net/Events/Events.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,6 @@ namespace AltV.Net.Events
3636
public delegate void ServerCustomEventEventDelegate(string eventName, ref MValueArray mValueArray);
3737

3838
public delegate void ConsoleCommandDelegate(string name, string[] args);
39+
40+
public delegate void MetaDataChangeDelegate(IEntity entity, string name, object value);
3941
}

api/AltV.Net/Module.cs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,12 @@ public class Module
9090

9191
internal readonly IEventHandler<ConsoleCommandDelegate> ConsoleCommandEventHandler =
9292
new HashSetEventHandler<ConsoleCommandDelegate>();
93+
94+
internal readonly IEventHandler<MetaDataChangeDelegate> MetaDataChangeEventHandler =
95+
new HashSetEventHandler<MetaDataChangeDelegate>();
96+
97+
internal readonly IEventHandler<MetaDataChangeDelegate> SyncedMetaDataChangeEventHandler =
98+
new HashSetEventHandler<MetaDataChangeDelegate>();
9399

94100
public Module(IServer server, CSharpNativeResource cSharpNativeResource, IBaseBaseObjectPool baseBaseObjectPool,
95101
IBaseEntityPool baseEntityPool, IEntityPool<IPlayer> playerPool,
@@ -640,5 +646,45 @@ public void OnConsoleCommand(string name, ref StringViewArray args)
640646
public virtual void OnConsoleCommandEvent(string name, string[] args)
641647
{
642648
}
649+
650+
public void OnMetaDataChange(IntPtr entityPointer, BaseObjectType entityType, string key,
651+
ref MValue value)
652+
{
653+
if (!BaseEntityPool.GetOrCreate(entityPointer, entityType, out var entity))
654+
{
655+
return;
656+
}
657+
658+
OnMetaDataChangeEvent(entity, key, value.ToObject());
659+
}
660+
661+
public virtual void OnMetaDataChangeEvent(IEntity entity, string key, object value)
662+
{
663+
if (!MetaDataChangeEventHandler.HasEvents()) return;
664+
foreach (var eventHandler in MetaDataChangeEventHandler.GetEvents())
665+
{
666+
eventHandler(entity, key, value);
667+
}
668+
}
669+
670+
public void OnSyncedMetaDataChange(IntPtr entityPointer, BaseObjectType entityType, string key,
671+
ref MValue value)
672+
{
673+
if (!BaseEntityPool.GetOrCreate(entityPointer, entityType, out var entity))
674+
{
675+
return;
676+
}
677+
678+
OnSyncedMetaDataChangeEvent(entity, key, value.ToObject());
679+
}
680+
681+
public virtual void OnSyncedMetaDataChangeEvent(IEntity entity, string key, object value)
682+
{
683+
if (!SyncedMetaDataChangeEventHandler.HasEvents()) return;
684+
foreach (var eventHandler in SyncedMetaDataChangeEventHandler.GetEvents())
685+
{
686+
eventHandler(entity, key, value);
687+
}
688+
}
643689
}
644690
}

api/AltV.Net/ModuleWrapper.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Runtime.CompilerServices;
3+
using AltV.Net.Elements.Args;
34
using AltV.Net.Elements.Entities;
45
using AltV.Net.Native;
56

@@ -192,5 +193,15 @@ public static void OnConsoleCommand(string name, ref StringViewArray args)
192193
{
193194
_module.OnConsoleCommand(name, ref args);
194195
}
196+
197+
public static void OnMetaDataChange(IntPtr entityPointer, BaseObjectType entityType, string key, ref MValue value)
198+
{
199+
_module.OnMetaDataChange(entityPointer, entityType, key, ref value);
200+
}
201+
202+
public static void OnSyncedMetaDataChange(IntPtr entityPointer, BaseObjectType entityType, string key, ref MValue value)
203+
{
204+
_module.OnSyncedMetaDataChange(entityPointer, entityType, key, ref value);
205+
}
195206
}
196207
}

api/AltV.Net/Native/AltV.Resource.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ internal delegate void PlayerChangeVehicleSeatDelegate(IntPtr vehiclePointer, In
8686

8787
internal delegate void ConsoleCommandDelegate(string name, ref StringViewArray args);
8888

89+
internal delegate void MetaDataChange(IntPtr entityPointer, BaseObjectType entityType, string key,
90+
ref MValue value);
91+
8992
[DllImport(DllName, CallingConvention = NativeCallingConvention)]
9093
internal static extern void CSharpResource_SetMain(IntPtr resourcePointer, MainDelegate mainDelegate,
9194
TickDelegate tickDelegate, ServerEventDelegate serverEventDelegate,
@@ -103,7 +106,9 @@ internal static extern void CSharpResource_SetMain(IntPtr resourcePointer, MainD
103106
CreateCheckpointDelegate createCheckpointDelegate, RemoveCheckpointDelegate removeCheckpointDelegate,
104107
CreateVoiceChannelDelegate createVoiceChannelDelegate,
105108
RemoveVoiceChannelDelegate removeVoiceChannelDelegate,
106-
ConsoleCommandDelegate consoleCommandDelegate
109+
ConsoleCommandDelegate consoleCommandDelegate,
110+
MetaDataChange metaDataChange,
111+
MetaDataChange syncedMetaDataChange
107112
);
108113
}
109114
}

api/AltV.Net/ResourceBuilder.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,14 @@ public void Start()
124124

125125
AltNative.Resource.ConsoleCommandDelegate onConsoleCommand = ModuleWrapper.OnConsoleCommand;
126126

127+
GCHandle.Alloc(onConsoleCommand);
128+
129+
AltNative.Resource.MetaDataChange onMetaDataChange = ModuleWrapper.OnMetaDataChange;
130+
131+
GCHandle.Alloc(onConsoleCommand);
132+
133+
AltNative.Resource.MetaDataChange onSyncedMetaDataChange = ModuleWrapper.OnSyncedMetaDataChange;
134+
127135
GCHandle.Alloc(onConsoleCommand);
128136

129137
AltNative.Resource.CSharpResource_SetMain(resourcePointer, onStart, onTick, onServerEvent, onCheckpoint,
@@ -132,7 +140,7 @@ public void Start()
132140
onPlayerChangeVehicleSeat, onPlayerEnterVehicle, onPlayerLeaveVehicle, onCreatePlayer, onRemovePlayer,
133141
onCreateVehicle, onRemoveVehicle,
134142
onCreateBlip, onRemoveBlip, onCreateCheckpoint, onRemoveCheckpoint, onCreateVoiceChannel,
135-
onRemoveVoiceChannel, onConsoleCommand);
143+
onRemoveVoiceChannel, onConsoleCommand, onMetaDataChange, onSyncedMetaDataChange);
136144
}
137145

138146
private void OnStart(IntPtr pointer, IntPtr ptr, string name, string point)

runtime/include/CSharpResource.h

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
#endif
88

99
#include <altv-cpp-api/SDK.h>
10+
#include <altv-cpp-api/events/CMetaDataChangeEvent.h>
11+
#include <altv-cpp-api/events/CSyncedMetaDataChangeEvent.h>
1012

1113
#ifdef _WIN32
1214
#define RESOURCES_PATH "\\resources\\"
@@ -92,6 +94,7 @@ typedef void (* RemoveCheckpointDelegate_t)(alt::ICheckpoint* checkpoint);
9294
typedef void (* OnCreateVoiceChannelDelegate_t)(alt::IVoiceChannel* channel);
9395
typedef void (* OnRemoveVoiceChannelDelegate_t)(alt::IVoiceChannel* channel);
9496
typedef void (* OnConsoleCommandDelegate_t)(const char* name, alt::Array<alt::StringView>* args);
97+
typedef void (* MetaChangeDelegate_t)(void* entity, alt::IBaseObject::Type type, alt::StringView key, alt::MValue* value);
9598

9699
class CSharpResource : public alt::IResource {
97100
bool OnEvent(const alt::CEvent* ev) override;
@@ -174,6 +177,10 @@ class CSharpResource : public alt::IResource {
174177

175178
OnConsoleCommandDelegate_t OnConsoleCommandDelegate;
176179

180+
MetaChangeDelegate_t OnMetaChangeDelegate;
181+
182+
MetaChangeDelegate_t OnSyncedMetaChangeDelegate;
183+
177184
void* runtimeHost;
178185
unsigned int domainId;
179186
};
@@ -205,7 +212,9 @@ EXPORT void CSharpResource_SetMain(CSharpResource* resource,
205212
RemoveCheckpointDelegate_t removeCheckpointDelegate,
206213
OnCreateVoiceChannelDelegate_t createVoiceChannelDelegate,
207214
OnRemoveVoiceChannelDelegate_t removeVoiceChannelDelegate,
208-
OnConsoleCommandDelegate_t consoleCommandDelegate);
215+
OnConsoleCommandDelegate_t consoleCommandDelegate,
216+
MetaChangeDelegate_t metaChangeDelegate,
217+
MetaChangeDelegate_t syncedMetaChangeDelegate);
209218

210219
EXPORT alt::IServer* CSharpResource_GetServerPointer();
211220

runtime/src/CSharpResource.cpp

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,24 @@ CSharpResource::~CSharpResource() {
223223
bool CSharpResource::OnEvent(const alt::CEvent* ev) {
224224
server->LogInfo(alt::String("event: ") + ((int) ev->GetType() + '0'));
225225
switch (ev->GetType()) {
226+
case alt::CEvent::Type::META_CHANGE: {
227+
auto event = ((alt::CMetaChangeEvent*) (ev));
228+
auto entity = event->GetTarget();
229+
if (entity == nullptr) return true;
230+
auto key = event->GetKey();
231+
auto value = event->GetVal();
232+
OnMetaChangeDelegate(GetEntityPointer(entity), entity->GetType(), key == nullptr ? "" : key.CStr(), &value);
233+
break;
234+
}
235+
case alt::CEvent::Type::SYNCED_META_CHANGE: {
236+
auto event = ((alt::CSyncedMetaDataChangeEvent*) (ev));
237+
auto entity = event->GetTarget();
238+
if (entity == nullptr) return true;
239+
auto key = event->GetKey();
240+
auto value = event->GetVal();
241+
OnSyncedMetaChangeDelegate(GetEntityPointer(entity), entity->GetType(), key == nullptr ? "" : key.CStr(), &value);
242+
break;
243+
}
226244
case alt::CEvent::Type::CHECKPOINT_EVENT: {
227245
auto entity = ((alt::CCheckpointEvent*) (ev))->GetEntity();
228246
OnCheckpointDelegate(((alt::CCheckpointEvent*) (ev))->GetTarget(),
@@ -386,7 +404,9 @@ void CSharpResource_SetMain(CSharpResource* resource, MainDelegate_t mainDelegat
386404
RemoveCheckpointDelegate_t removeCheckpointDelegate,
387405
OnCreateVoiceChannelDelegate_t createVoiceChannelDelegate,
388406
OnRemoveVoiceChannelDelegate_t removeVoiceChannelDelegate,
389-
OnConsoleCommandDelegate_t consoleCommandDelegate) {
407+
OnConsoleCommandDelegate_t consoleCommandDelegate,
408+
MetaChangeDelegate_t metaChangeDelegate,
409+
MetaChangeDelegate_t syncedMetaChangeDelegate) {
390410
resource->MainDelegate = mainDelegate;
391411
resource->OnTickDelegate = tickDelegate;
392412
resource->OnServerEventDelegate = serverEventDelegate;
@@ -412,6 +432,8 @@ void CSharpResource_SetMain(CSharpResource* resource, MainDelegate_t mainDelegat
412432
resource->OnCreateVoiceChannelDelegate = createVoiceChannelDelegate;
413433
resource->OnRemoveVoiceChannelDelegate = removeVoiceChannelDelegate;
414434
resource->OnConsoleCommandDelegate = consoleCommandDelegate;
435+
resource->OnMetaChangeDelegate = metaChangeDelegate;
436+
resource->OnSyncedMetaChangeDelegate = syncedMetaChangeDelegate;
415437
}
416438

417439
alt::IServer* CSharpResource_GetServerPointer() {

runtime/thirdparty/altv-cpp-api

0 commit comments

Comments
 (0)