Skip to content

JavaScript Events

Neeko edited this page Jun 22, 2026 · 2 revisions

JavaScript Events

omp-cef supports server <-> browser event communication.

Pawn -> JavaScript

Pawn:

CEF_EmitEvent(playerid, browserid, "hud:update", CEF_INT(100), CEF_FLOAT(42.5), CEF_STR("hello"));

JavaScript:

cef.on("hud:update", (health, speed, message) => {
    console.log({ health, speed, message });
});

JavaScript -> Pawn

Pawn registration:

CEF_RegisterEvent("login:submit", "OnLoginSubmit", Argument_String, Argument_String);

Pawn callback:

forward OnLoginSubmit(playerid, browserid, const username[], const password[]);
public OnLoginSubmit(playerid, browserid, const username[], const password[])
{
    printf("Login submit: browserid=%d, player=%d username=%s", browserid, playerid, username);
    return 1;
}

JavaScript:

cef.emit("login:submit", "Neeko", "secret");

Argument helpers

Pawn helpers:

CEF_STR("text")
CEF_INT(123)
CEF_FLOAT(12.5)
CEF_BOOL(true)

Argument enum:

enum E_CEF_ARGUMENT_TYPE
{
    Argument_String,
    Argument_Integer,
    Argument_Float,
    Argument_Bool
};

Recommended event naming

Use namespaced event names:

login:submit
login:error
hud:update
phone:open
phone:close
inventory:select

Avoid generic names:

click
submit
update

Security notes

Treat JavaScript events as client input.

Always validate server-side:

  • player state
  • permissions
  • distance to entity
  • item ownership
  • cooldowns
  • value ranges
  • string lengths
  • ...

Never trust a CEF event just because it came from your own UI.

Clone this wiki locally