Untitled
unknown
javascript
2 years ago
2.6 kB
15
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