Skip to content

Repository files navigation

Player Params Plugin for CS2 (Plugify)

Player params storage service with async SQLite persistence for CS2 plugins using Plugify.

Requirements

  • Go (1.20+)
  • Docker (for building)
  • Task (Taskfile runner)

Build Instructions

This project uses Task for automation. To build the plugin, run:

1. task gen
2. task bind
3. task build

Install to server

1. Download latest release
2. Move the addons folder to the server

How Usage

To utilize this parameter storage system in your own custom CS2 plugins, declare it as a dependency inside your plugin's .pplugin manifest file:

"dependencies": [
    {
        "name": "player_params"
    }
]
package plugin

import (
    "fmt"

    "__module_name__/pkg/bindings/player_params"
    s2sdk "github.com/fr0nch/go-plugify-s2sdk/v2"
)

func (p *Plugin) start() error {
    flags := s2sdk.ConVarFlag_LinkedConcommand | s2sdk.ConVarFlag_Release | s2sdk.ConVarFlag_ClientCanExecute
    s2sdk.AddConsoleCommand("testparams", "Test Player Params Plugin API", flags, p.handleTestParamsCommand, s2sdk.HookMode_Post)
    return nil
}

func (p *Plugin) handleTestParamsCommand(playerSlot int32, context s2sdk.CommandCallingContext, arguments []string) s2sdk.ResultType {
    if playerSlot == -1 || !s2sdk.IsClientInGame(playerSlot) {
        return s2sdk.ResultType_Handled
    }

    steamID := s2sdk.GetClientSteamID64(playerSlot)
    if steamID == 0 {
        return s2sdk.ResultType_Handled
    }

    // Set parameter
    errStr := player_params.Set("vip_core", steamID, "vip_prefix", "[SUPER VIP]")
    if errStr != "" {
        s2sdk.PrintToChat(playerSlot, fmt.Sprintf("Failed to set param: %s", errStr))
        return s2sdk.ResultType_Handled
    }

    s2sdk.PrintToChat(playerSlot, "Param 'vip_prefix' successfully saved!")

    // Get parameter
    prefix := player_params.Get("vip_core", steamID, "vip_prefix")
    if prefix == "" {
        s2sdk.PrintToChat(playerSlot, "Prefix not found or access denied.")
    } else {
        s2sdk.PrintToChat(playerSlot, fmt.Sprintf("Loaded prefix: %s", prefix))
    }

    return s2sdk.ResultType_Handled
}

About

Player params storage for other plugins

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages