Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const jimp = require("jimp");
- const { default: areJidsSameUser } = require("@adiwajshing/baileys");
- const PhoneNumber = require("awesome-phonenumber");
- const resize = async (image, width, height) => {
- const read = await jimp.read(image);
- const data = await read.resize(width, height).getBufferAsync(jimp.MIME_JPEG);
- return data;
- };
- async function getName(jid) {
- //return name user from jid
- let user = global.db.users.find((v) => v.jid === client.decodeJid(jid));
- if (!user) return jid;
- return user.name
- }
- const {
- emoji_role,
- sesi,
- playerOnGame,
- playerOnRoom,
- playerExit,
- dataPlayer,
- dataPlayerById,
- getPlayerById,
- getPlayerById2,
- killWerewolf,
- killww,
- dreamySeer,
- sorcerer,
- protectGuardian,
- roleShuffle,
- roleChanger,
- roleAmount,
- roleGenerator,
- addTimer,
- startGame,
- playerHidup,
- playerMati,
- vote,
- voteResult,
- clearAllVote,
- getWinner,
- win,
- pagi,
- malam,
- skill,
- voteStart,
- voteDone,
- voting,
- run,
- run_vote,
- run_malam,
- run_pagi,
- } = require("../../lib/werewolf");
- let thumb =
- "https://user-images.githubusercontent.com/72728486/235316834-f9f84ba0-8df3-4444-81d8-db5270995e6d.jpg";
- exports.run = {
- usage: ["werewolf", "ww"],
- category: "games",
- async: async (m, { client, command, isPrefix, args, Func }) => {
- const { sender, chat } = m;
- client.werewolf = client.werewolf ? client.werewolf : {};
- const ww = client.werewolf ? client.werewolf : {};
- const data = ww[chat];
- const value = args[0];
- const target = args[1];
- // [ Membuat Room ]
- if (value === "create") {
- if (chat in ww) return m.reply("Group masih dalam sesi permainan");
- if (playerOnGame(sender, ww) === true)
- return m.reply("Kamu masih dalam sesi game");
- ww[chat] = {
- room: chat,
- owner: sender,
- status: false,
- iswin: null,
- cooldown: null,
- day: 0,
- time: "malem",
- player: [],
- dead: [],
- voting: false,
- seer: false,
- guardian: [],
- };
- await m.reply("Room berhasil dibuat, ketik *.ww join* untuk bergabung");
- } else if (value === "join") {
- if (!ww[chat]) return m.reply("Belum ada sesi permainan");
- if (ww[chat].status === true)
- return m.reply("Sesi permainan sudah dimulai");
- if (ww[chat].player.length > 16)
- return m.reply("Maaf jumlah player telah penuh");
- if (playerOnRoom(sender, chat, ww) === true)
- return m.reply("Kamu sudah join dalam room ini");
- if (playerOnGame(sender, ww) === true)
- return m.reply("Kamu masih dalam sesi game");
- let data = {
- id: sender,
- number: ww[chat].player.length + 1,
- sesi: chat,
- status: false,
- role: false,
- effect: [],
- vote: 0,
- isdead: false,
- isvote: false,
- };
- ww[chat].player.push(data);
- let player = [];
- let text = `\n*⌂ W E R E W O L F - P L A Y E R*\n\n`;
- for (let i = 0; i < ww[chat].player.length; i++) {
- text += `${ww[chat].player[i].number}) @${ww[chat].player[i].id.replace(
- "@s.whatsapp.net",
- ""
- )}\n`;
- player.push(ww[chat].player[i].id);
- }
- text += "\nJumlah player minimal adalah 5 dan maximal 15";
- client.sendMessage(
- m.chat,
- {
- text: text.trim(),
- contextInfo: {
- externalAdReply: {
- title: "W E R E W O L F",
- mediaType: 1,
- renderLargerThumbnail: true,
- thumbnail: await resize(thumb, 300, 175),
- sourceUrl: "",
- mediaUrl: thumb,
- },
- mentionedJid: player,
- },
- },
- {
- quoted: m,
- }
- );
- // [ Game Play ]
- } else if (value === "start") {
- if (!ww[chat]) return m.reply("Belum ada sesi permainan");
- if (ww[chat].player.length === 0)
- return m.reply("Room belum memiliki player");
- if (ww[chat].player.length < 5)
- return m.reply("Maaf jumlah player belum memenuhi syarat");
- if (playerOnRoom(sender, chat, ww) === false)
- return m.reply("Kamu belum join dalam room ini");
- if (ww[chat].cooldown > 0) {
- if (ww[chat].time === "voting") {
- clearAllVote(chat, ww);
- addTimer(chat, ww);
- return await run_vote(client, chat, ww);
- } else if (ww[chat].time === "malem") {
- clearAllVote(chat, ww);
- addTimer(chat, ww);
- return await run_malam(client, chat, ww);
- } else if (ww[chat].time === "pagi") {
- clearAllVote(chat, ww);
- addTimer(chat, ww);
- return await run_pagi(client, chat, ww);
- }
- }
- if (ww[chat].status === true)
- return m.reply("Sesi permainan telah dimulai");
- if (ww[chat].owner !== sender)
- return m.reply(
- `Hanya @${ww[chat].owner.split("@")[0]} yang dapat memulai permainan`,
- {
- withTag: true,
- }
- );
- let list1 = "";
- let list2 = "";
- let player = [];
- roleGenerator(chat, ww);
- addTimer(chat, ww);
- startGame(chat, ww);
- for (let i = 0; i < ww[chat].player.length; i++) {
- list1 += `(${ww[chat].player[i].number}) @${ww[chat].player[
- i
- ].id.replace("@s.whatsapp.net", "")}\n`;
- player.push(ww[chat].player[i].id);
- }
- for (let i = 0; i < ww[chat].player.length; i++) {
- list2 += `(${ww[chat].player[i].number}) @${ww[chat].player[
- i
- ].id.replace("@s.whatsapp.net", "")} ${
- ww[chat].player[i].role === "werewolf" ||
- ww[chat].player[i].role === "sorcerer"
- ? `[${ww[chat].player[i].role}]`
- : ""
- }\n`;
- player.push(ww[chat].player[i].id);
- }
- for (let i = 0; i < ww[chat].player.length; i++) {
- // [ Werewolf ]
- if (ww[chat].player[i].role === "werewolf") {
- if (ww[chat].player[i].isdead != true) {
- var text = `Hai ${getName(
- ww[chat].player[i].id
- )} , Kamu telah dipilih untuk memerankan *Werewolf* ${emoji_role(
- "werewolf"
- )} pada permainan kali ini, silahkan pilih salah satu player yang ingin kamu makan pada malam hari ini\n*LIST PLAYER*:\n${list2}\n\nKetik *.wwpc kill nomor* untuk membunuh player`;
- await client.sendMessage(ww[chat].player[i].id, {
- text: text,
- mentions: player,
- });
- }
- // [ villager ]
- } else if (ww[chat].player[i].role === "warga") {
- if (ww[chat].player[i].isdead != true) {
- let text = `*⌂ W E R E W O L F - G A M E*\n\nHai ${getName(
- ww[chat].player[i].id
- )} Peran kamu adalah *Warga Desa* ${emoji_role(
- "warga"
- )}, tetap waspada, mungkin *Werewolf* akan memakanmu malam ini, silakan masuk kerumah masing masing.\n*LIST PLAYER*:\n${list1}`;
- await client.sendMessage(ww[chat].player[i].id, {
- text: text,
- mentions: player,
- });
- }
- // [ Penerawangan ]
- } else if (ww[chat].player[i].role === "seer") {
- if (ww[chat].player[i].isdead != true) {
- let text = `Hai ${getName(
- ww[chat].player[i].id
- )} Kamu telah terpilih untuk menjadi *Penerawang* ${emoji_role(
- "seer"
- )}. Dengan sihir yang kamu punya, kamu bisa mengetahui peran pemain pilihanmu.\n*LIST PLAYER*:\n${list1}\n\nKetik *.wwpc dreamy nomor* untuk melihat role player`;
- await client.sendMessage(ww[chat].player[i].id, {
- text: text,
- mentions: player,
- });
- }
- // [ Guardian ]
- } else if (ww[chat].player[i].role === "guardian") {
- if (ww[chat].player[i].isdead != true) {
- let text = `Hai ${getName(
- ww[chat].player[i].id
- )} Kamu terpilih untuk memerankan *Malaikat Pelindung* ${emoji_role(
- "guardian"
- )}, dengan kekuatan yang kamu miliki, kamu bisa melindungi para warga, silahkan pilih salah 1 player yang ingin kamu lindungi\n*LIST PLAYER*:\n${list1}\n\nKetik *.wwpc deff nomor* untuk melindungi player`;
- await client.sendMessage(ww[chat].player[i].id, {
- text: text,
- mentions: player,
- });
- }
- // [ Sorcerer ]
- } else if (ww[chat].player[i].role === "sorcerer") {
- if (ww[chat].player[i].isdead != true) {
- let text = `Hai ${getName(
- ww[chat].player[i].id
- )} Kamu terpilih sebagai Penyihir ${emoji_role(
- "sorcerer"
- )}, dengan kekuasaan yang kamu punya, kamu bisa membuka identitas para player, silakan pilih 1 orang yang ingin kamu buka identitasnya\n*LIST PLAYER*:\n${list2}\n\nKetik *.wwpc sorcerer nomor* untuk melihat role player`;
- await client.sendMessage(ww[chat].player[i].id, {
- text: text,
- mentions: player,
- });
- }
- }
- }
- await client.sendMessage(m.chat, {
- text: "*⌂ W E R E W O L F - G A M E*\n\nGame telah dimulai, para player akan memerankan perannya masing masing, silahkan cek chat pribadi untuk melihat role kalian. Berhati-hatilah para warga, mungkin malam ini adalah malah terakhir untukmu",
- contextInfo: {
- externalAdReply: {
- title: "W E R E W O L F",
- mediaType: 1,
- renderLargerThumbnail: true,
- thumbnail: await resize(thumb, 300, 175),
- sourceUrl: "",
- mediaUrl: thumb,
- },
- mentionedJid: player,
- },
- });
- await run(client, chat, ww);
- } else if (value === "vote") {
- if (!ww[chat]) return m.reply("Belum ada sesi permainan");
- if (ww[chat].status === false)
- return m.reply("Sesi permainan belum dimulai");
- if (ww[chat].time !== "voting")
- return m.reply("Sesi voting belum dimulai");
- if (playerOnRoom(sender, chat, ww) === false)
- return m.reply("Kamu bukan player");
- if (dataPlayer(sender, ww).isdead === true)
- return m.reply("Kamu sudah mati");
- if (!target || target.length < 1) return m.reply("Masukan nomor player");
- if (isNaN(target)) return m.reply("Gunakan hanya nomor");
- if (dataPlayer(sender, ww).isvote === true)
- return m.reply("Kamu sudah melakukan voting");
- let b = getPlayerById(chat, sender, parseInt(target), ww);
- if (b.db.isdead === true) return m.reply(`Player ${target} sudah mati.`);
- if (ww[chat].player.length < parseInt(target)) return m.reply("Invalid");
- if (getPlayerById(chat, sender, parseInt(target), ww) === false)
- return m.reply("Player tidak terdaftar!");
- vote(chat, parseInt(target), sender, ww);
- return m.reply("✅ Vote");
- } else if (value == "exit") {
- if (!ww[chat]) return m.reply("Tidak ada sesi permainan");
- if (playerOnRoom(sender, chat, ww) === false)
- return m.reply("Kamu tidak dalam sesi permainan");
- if (ww[chat].status === true)
- return m.reply("Permainan sudah dimulai, kamu tidak bisa keluar");
- m.reply(`@${sender.split("@")[0]} Keluar dari permainan`, {
- withTag: true,
- });
- playerExit(chat, sender, ww);
- } else if (value === "delete") {
- if (!ww[chat]) return m.reply("Tidak ada sesi permainan");
- if (ww[chat].owner !== sender)
- return m.reply(
- `Hanya @${
- ww[chat].owner.split("@")[0]
- } yang dapat menghapus sesi permainan ini`
- );
- m.reply("Sesi permainan berhasil dihapus").then(() => {
- delete ww[chat];
- });
- } else if (value === "player") {
- if (!ww[chat]) return m.reply("Tidak ada sesi permainan");
- if (playerOnRoom(sender, chat, ww) === false)
- return m.reply("Kamu tidak dalam sesi permainan");
- if (ww[chat].player.length === 0)
- return m.reply("Sesi permainan belum memiliki player");
- let player = [];
- let text = "\n*⌂ W E R E W O L F - G A M E*\n\nLIST PLAYER:\n";
- for (let i = 0; i < ww[chat].player.length; i++) {
- text += `(${ww[chat].player[i].number}) @${ww[chat].player[
- i
- ].id.replace("@s.whatsapp.net", "")} ${
- ww[chat].player[i].isdead === true
- ? `☠️ ${ww[chat].player[i].role}`
- : ""
- }\n`;
- player.push(ww[chat].player[i].id);
- }
- client.sendMessage(
- m.chat,
- {
- text: text,
- contextInfo: {
- externalAdReply: {
- title: "W E R E W O L F",
- mediaType: 1,
- renderLargerThumbnail: true,
- thumbnail: await resize(thumb, 300, 175),
- sourceUrl: "",
- mediaUrl: thumb,
- },
- mentionedJid: player,
- },
- },
- {
- quoted: m,
- }
- );
- } else {
- let text = `\n*⌂ W E R E W O L F - G A M E*\n\nPermainan Sosial Yang Berlangsung Dalam Beberapa Putaran/ronde. Para Pemain Dituntut Untuk Mencari Seorang Penjahat Yang Ada Dipermainan. Para Pemain Diberi Waktu, Peran, Serta Kemampuannya Masing-masing Untuk Bermain Permainan Ini\n\n*⌂ C O M M A N D*\n`;
- text += ` • ww create\n`;
- text += ` • ww join\n`;
- text += ` • ww start\n`;
- text += ` • ww exit\n`;
- text += ` • ww delete\n`;
- text += ` • ww player\n`;
- text += `\nPermainan ini dapat dimainkan oleh 5 sampai 15 orang.`;
- client.sendMessage(
- m.chat,
- {
- text: text.trim(),
- contextInfo: {
- externalAdReply: {
- title: "W E R E W O L F",
- mediaType: 1,
- renderLargerThumbnail: true,
- thumbnail: await resize(thumb, 300, 175),
- sourceUrl: "",
- mediaUrl: thumb,
- },
- },
- },
- {
- quoted: m,
- }
- );
- }
- },
- group: true,
- limit: true,
- game: true,
- };
Add Comment
Please, Sign In to add comment