ARK: Survival Evolved

ARK: Survival Evolved

Mindwipe My Dino & Me - Reset All Dino Stats / Levels
 Dette emnet er festet, så det er nok viktig
Kozenomenon  [utvikler] 15. juni 2020 kl. 13.00
Dino Modders: Mod Integration Info
WIP!!! Now Complete! See Koz Dinos for example using this integration on custom dinos (that mod is open source).

This information is intended for authors of Dino Mods that want to integrate their mod with Mindwipe My Dino.

Mindwipe My Dino allows Dino Mods to make requests to:
  • Add Dinos to Blacklist (block from mindwipe)
  • Provide Dino Special Level Field Info (so mindwipe can handle the field/s)
  • Request Callback when Dino Mindwipe is used (as notify or functional override)

NOTES:
- You do not have to use the open-source asset/s provided in the info below, they are there as example and if you like feel free to use.
- You could also just implement the same processes for integration yourself- as long as the relevant requests are sent on the Mod Communication Interface to this mod's singleton everything should work the same.
- None of the below has to be set in stone, I am hoping to foster discussion with other modders with this integration. If you have other ideas or concerns about the integration please ping me on Discord.

1: Mod Auto Registration
Mindwipe My Dino implements an Auto-Register process that I released on an open-source licensed GitHub repo:

GitHub: ModCommAutoRegister[github.com]
More info on implementing that can be found there.

The purpose of the auto-register process is so that our mods can interact safely because both mods will know which mod is sending requests.

In order to register with Mindwipe My Dino use the CAL Tag: MMD_ModComm
See example in above open-source for more on how to use it.

Once our mods complete registration the below requests can be issued.

For each of these requests...
  • You will need a reference to MMD's Mod Comm Singleton. It can be found via CAL Tag MMD_ModComm.
  • If using the ModCommReg_Base from open-source then you can do this by calling its 'Find Other Mod Singleton' function, passing in the CAL Tag.
  • Mod Communication Interface Calls Supported (either will work): RequestModDataProcessing, SendModData
  • The 'Key' param needs to be the secret you sent during registration.
  • If using ModCommReg_Base from open-source, see how the ModCommReg_Initiator does this in its Event Graph.
  • The 'In Json' contents will depend on the request, described below.

2: Add Dino to Blacklist
Blacklisting your dino will mean that the Dino Mindwipe Tonic from this mod will not be allowed for that dino. It will say as mcuch in the item description when placed in the dino inventory.

You can send multiple dinos to the blacklist in a single interface call.

Required: All

IN JSON:
{ "command": "blocktypes", "types": [ "/Game/Mods/YourMod/path/dino_character_bp_1.dino_character_bp_1", "/Game/Mods/YourMod/path/dino_character_bp_2.dino_character_bp_2", "/Game/Mods/YourMod/path/dino_character_bp_3.dino_character_bp_3" ] }

OUT JSON:
{ "result": true/false }

3: Add Config for Dino
If your dino has special level related fields you can provide the info to MMD so that it can reset those fields when mindwipe is used.

One Dino Target at a time for this request. It just made the JSON handling easier, less complicated.

Required: command, target, fields
For each field info...
  • Required: name & type
  • Optional: isarray & isavailablelevels
  • 'isarray' set to true if the field is an array of 'type'
  • 'isavailablelevels' set to true if the field represents the number of available levels

IN JSON:
{ "command": "addconfig", "target": "/Game/Mods/YourMod/path/dino_character_bp_1.dino_character_bp_1", "fields": [ { "name": "Field1NameExactCaseSensitive", "type": "BoolProperty/ByteProperty/IntProperty/FloatProperty", "isarray": true/false, "isavailablelevels": true/false }, { "name": "Field2NameExactCaseSensitive", "type": "BoolProperty/ByteProperty/IntProperty/FloatProperty", "isarray": true/false, "isavailablelevels": true/false } ] }

OUT JSON:
{ "result": true/false }

4: Add Callback for Dino
You can request that MMD send a callback to your mod whenever mindwipe is used on your dino.

One Dino Target at a time for this request.

Callback can be sent to your registered CAL Mod Comm singleton or to the dino character BP itself. To receive the callback on the dino reference set the 'callrefdirect' to true.
This is important to do if you need to have context for the dino reference that mindwipe was used on, since it cannot be sent in the JSON.
This also means implementing the Mod Communication Interface on your dino character BP, and having the means to verify the Key (secret) passed to you during registration such as by calling back to your own mod comm singleton from the dino.

Callback can be for the purpose of notification after the fact, or for providing a functional override. When acting as an override MMD will not perform any mindwipe logic and instead expect your mod to do so. Use the 'override' as true to do this.

Required: command, target
Optional: callrefdirect, override

IN JSON:
{ "command": "addcallback", "target": "/Game/Mods/YourMod/path/dino_character_bp_1.dino_character_bp_1", "callrefdirect": true/false, "override": true/false }

OUT JSON:
{ "result": true/false }

Callback Details
After adding the callback for your dino, when mindwipe is used on it MMD will send the callback to your mod. The callback will be sent using Mod Communication Interface RequestModDataProcessing and the Key will be the secret passed to you at the final step in the auto-register process. You can then verify that the call is coming from MMD.

Interface Call: RequestModDataProcessing

Key: (secret provided during auto-register)
IN JSON:
{ "command": "callback", "feature": "mindwipe", "target": "/Game/Mods/YourMod/path/dino_character_bp_1.dino_character_bp_1", "override": true/false }

OUT JSON: (expected to be returned by your mod)
{ "result": true/false }

For override callbacks it is important to return the true result otherwise MMD will assume something went wrong and it will refund the Dino Mindwipe Tonic item to the dino's inventory.



Possible Get/Data Requests?
MMD has the plumbing for these potentially though not currently implemented. Listing them here in case someone would want this, if so let me know.

Interface: RequestModData

Key would be comma-delimited with first value being the mod secret from autoregister and second would be the 'command' to specify the type of data being requested.
Example:
hdiuy875HjdmlkHy3ocm,blocked
Above would request blocked dino type data as whichever mod registered using the 'hdiuy875HjdmlkHy3ocm' secret key.

Key: {secret},blocked
OUT JSON:
{ "types": [ "/Game/Mods/YourMod/path/dino_character_bp_1.dino_character_bp_1", "/Game/Mods/YourMod/path/dino_character_bp_2.dino_character_bp_2", "/Game/Mods/YourMod/path/dino_character_bp_3.dino_character_bp_3" ] }

Key: {secret},configs
OUT JSON:
{ "targets": [ { "target": "/Game/Mods/YourMod/path/dino_character_bp_1.dino_character_bp_1", "fields": [ { "name": "Field1NameExactCaseSensitive", "type": "BoolProperty/ByteProperty/IntProperty/FloatProperty", "isarray": true/false, "isavailablelevels": true/false }, { "name": "Field2NameExactCaseSensitive", "type": "BoolProperty/ByteProperty/IntProperty/FloatProperty", "isarray": true/false, "isavailablelevels": true/false } ] } ] }

Key: {secret},callbacks
OUT JSON:
{ "callbacks": [ { "target": "/Game/Mods/YourMod/path/dino_character_bp_1.dino_character_bp_1", "callrefdirect": true/false, "override": true/false } ] }
Sist redigert av Kozenomenon; 2. juli 2020 kl. 8.00
< >
Viser 12 av 2 kommentarer
betty-leo 25. juni 2020 kl. 4.19 
Is there a way to mindwipe dinos tamed and wild levels?
Kozenomenon  [utvikler] 25. juni 2020 kl. 4.57 
this mod is for mindwipe on your tamed dinos, it resets all tamed level points including any special harvest levels etc.

my other mod here allows changing of wild stats. i am working on more things for it atm.
Upgrade My Dino
< >
Viser 12 av 2 kommentarer
Per side: 1530 50