Untitled

 avatar
unknown
javascript
2 years ago
2.6 kB
6
Indexable
// main.js
import { GameMode, Player } from "@sa-mp/core";
import * as path from "path";
import * as chokidar from "chokidar";
import * as fs from "fs";
import * as amx from "@sa-mp/amx";

let events = [];

GameMode.on("init", (gamemode) => {
  gamemode.worldTime = 20;
});

Player.on("connect", (player) => {
  player.send(`Hi, ${player}!`, 0xdeb512aa);
  player.gameText(`Hi, ${player.name}!`, 1000, 6);
  player.giveMoney(1000);
});

Player.command.init();

// execute remote file
Player.command.alt("execute", "fetch", "exec");
Player.command("execute", [["s", "path"]], (player, path) => {
  executeFile(path, player);
});

// kill cmd
Player.command.alt("kill", "k", "die");
Player.command("kill", "", (player) => {
  player.health = 0;
});

function executeFile(filePath, player) {
  try {
    const fullPath = path.resolve(__dirname, filePath);

    console.log(`Executing file: ${fullPath}`);

    const content = fs.readFileSync(fullPath, "utf8");

    const result = eval(content);
    events = result;

    console.log(events);

    events.forEach((event) => {
      // removes listener calling native pawn
      amx.removePublic(event.sampEv);

      // console.log(amx.publicEvents);

      amx.onPublicCall(
        event.sampEv,
        "iii",
        (playerid, clickedplayerid, source) => {
          console.log(playerid, clickedplayerid, source);
          if (typeof event.func === "function") {
            event.func(player);
          }
        }
      );
    });

    player.send(`File Executed Successfully`, 0xdeb512aa);
    player.send(`Result: ${JSON.stringify(result)}`, 0xdeb512aa);

    const watcher = chokidar.watch(fullPath);
    watcher.on("change", () => {
      player.send(`File changed. Reloading...`, 0xdeb512aa);

      watcher.close();
      executeFile(filePath, player);
    });
  } catch (error) {
    console.error(`Error executing file '${filePath}':`, error);
    player.send(`Error executing file: ${error.message}`, 0xdeb512aa);
  }
}
// Player.on("click-player", (player, clicked, source) => {
//   // Check if event.func is a function before calling it
//   if (typeof events[0].func === "function") {
//     events[0].func(player);
//   }
// });

// test.js
const { Player } = require("@sa-mp/core");

const events = [
  {
    sampEv: "OnPlayerClickPlayer",
    ev: "click-player",
    func: (player) => {
      player.send("CLICKED 2");
      player.giveMoney(100);
    },
  },
  {
    sampEv: "OnPlayerDeath",
    ev: "death",
    func: (player) => {
      player.send("DIED 2");
    },
  },
  // Add more events as needed
];

module.exports = events;
Editor is loading...
Leave a Comment