haxball / haxball-issues

114 stars 42 forks source link

BAKARMISINIZ??? #1459

Open Elinous-Electra opened 3 years ago

Elinous-Electra commented 3 years ago

Bakın mesela "!sevgi @kullanıcıadı" Böyle bir komut nasıl yapılabilir? O Komutu kullanınca bot: "Electra, Basro Kullanıcısını sevdiğini söyledi" diye bir mesaj göndersin

EmirhanOlgn commented 3 years ago

Merhaba, room.sendAnnouncement veya room.sendChat kullanabilirsin. Bir komut sistemi yapabilirsin bu konuda yardımcı olabilirim. sendChat noPlayer = true ise çalışmaz.

Elinous-Electra commented 3 years ago

Bot yazmaya yeni başladım ve öğrenmek istiyorum. Bu komutu nasıl yapabilirim?

EmirhanOlgn commented 3 years ago
var commands = {
    "!ping": pingFun,
}
function pingFun(player) {
    room.sendAnnouncement(player.name + " pong!");
}
var admins = ["player.conn"]
room.onPlayerChat = function(player, message) {
    var spacePos = message.search(" ");
    var command = message.substr(0, spacePos !== -1 ? spacePos : message.length);
    if (commands.hasOwnProperty(command) == true) return commands[command](player, message);
    if (admins.includes(player.conn)) {
        room.sendAnnouncement("[🔰] " + player.name + ": " + message, null, 'bold', 0x00000, 2);
        return false;
}
}

Burda başka bir arkadaşa yazdığım kod bulunuyor. pingFun içinde düzenleme yapabilirsiniz, bu konuda hiçbir fikriniz yoksa dönün ben yaziyim :)

Elinous-Electra commented 3 years ago

Hİç birşey anlamadım maalesef

EmirhanOlgn commented 3 years ago
var commands = { //komutlar
    "!ping": pingFun,
    "!sevgi": sevgiFun,
}
function sevgiFun(player, message) {
var belirtilenPlayer = message.substr(7); // (!sevgi isim) isim kelimesini alıyoruz
room.sendAnnouncement(player.name + ", " + belirtilenPlayer + " adlı kişiyi sevdiğini belirtti"); // mesaj atıyoruz
return false; // kullanilan komutun chate gitmesini engelliyoruz
}
function pingFun(player) { // !ping komutu
    room.sendAnnouncement(player.name + " pong!");
}
var admins = ["player.conn", "player.conn2"] // admin olanların ip adresi
room.onPlayerJoin = function(player) {
   console.log(player.name + ": " + player.conn); // oyuncu adı ve haxball ip adresi
}
room.onPlayerChat = function(player, message) {
    var spacePos = message.search(" ");
    var command = message.substr(0, spacePos !== -1 ? spacePos : message.length);
    if (commands.hasOwnProperty(command) == true) return commands[command](player, message);
    if (admins.includes(player.conn)) { // adminlerin gorunen mesaji var admins içindeki iplere göre
        room.sendAnnouncement("[🔰] " + player.name + ": " + message, null, 'bold', 0x00000, 2);
        return false;
    }
}

Takıldığınız yer olursa discorddan yazın: EmirhanOlgn#5976

ghost commented 3 years ago
var commands = { //komutlar
    "!ping": pingFun,
    "!sevgi": sevgiFun,
}
function sevgiFun(player, message) {
var belirtilenPlayer = message.substr(7); // (!sevgi isim) isim kelimesini alıyoruz
room.sendAnnouncement(player.name + ", " + belirtilenPlayer + " adlı kişiyi sevdiğini belirtti"); // mesaj atıyoruz
return false; // kullanilan komutun chate gitmesini engelliyoruz
}
function pingFun(player) { // !ping komutu
    room.sendAnnouncement(player.name + " pong!");
}
var admins = ["player.conn", "player.conn2"] // admin olanların ip adresi
room.onPlayerJoin = function(player) {
   console.log(player.name + ": " + player.conn); // oyuncu adı ve haxball ip adresi
}
room.onPlayerChat = function(player, message) {
    var spacePos = message.search(" ");
    var command = message.substr(0, spacePos !== -1 ? spacePos : message.length);
    if (commands.hasOwnProperty(command) == true) return commands[command](player, message);
    if (admins.includes(player.conn)) { // adminlerin gorunen mesaji var admins içindeki iplere göre
        room.sendAnnouncement("[🔰] " + player.name + ": " + message, null, 'bold', 0x00000, 2);
        return false;
    }
}

Takıldığınız yer olursa discorddan yazın: EmirhanOlgn#5976

hocam benim konumada yanıt verir misiniz

EmirhanOlgn commented 3 years ago
var commands = { //komutlar
    "!ping": pingFun,
    "!sevgi": sevgiFun,
}
function sevgiFun(player, message) {
var belirtilenPlayer = message.substr(7); // (!sevgi isim) isim kelimesini alıyoruz
room.sendAnnouncement(player.name + ", " + belirtilenPlayer + " adlı kişiyi sevdiğini belirtti"); // mesaj atıyoruz
return false; // kullanilan komutun chate gitmesini engelliyoruz
}
function pingFun(player) { // !ping komutu
    room.sendAnnouncement(player.name + " pong!");
}
var admins = ["player.conn", "player.conn2"] // admin olanların ip adresi
room.onPlayerJoin = function(player) {
   console.log(player.name + ": " + player.conn); // oyuncu adı ve haxball ip adresi
}
room.onPlayerChat = function(player, message) {
    var spacePos = message.search(" ");
    var command = message.substr(0, spacePos !== -1 ? spacePos : message.length);
    if (commands.hasOwnProperty(command) == true) return commands[command](player, message);
    if (admins.includes(player.conn)) { // adminlerin gorunen mesaji var admins içindeki iplere göre
        room.sendAnnouncement("[🔰] " + player.name + ": " + message, null, 'bold', 0x00000, 2);
        return false;
    }
}

Takıldığınız yer olursa discorddan yazın: EmirhanOlgn#5976

hocam benim konumada yanıt verir misiniz

Neydi sizin konu ismi

Elinous-Electra commented 3 years ago
var commands = { //komutlar
    "!ping": pingFun,
    "!sevgi": sevgiFun,
}
function sevgiFun(player, message) {
var belirtilenPlayer = message.substr(7); // (!sevgi isim) isim kelimesini alıyoruz
room.sendAnnouncement(player.name + ", " + belirtilenPlayer + " adlı kişiyi sevdiğini belirtti"); // mesaj atıyoruz
return false; // kullanilan komutun chate gitmesini engelliyoruz
}
function pingFun(player) { // !ping komutu
    room.sendAnnouncement(player.name + " pong!");
}
var admins = ["player.conn", "player.conn2"] // admin olanların ip adresi
room.onPlayerJoin = function(player) {
   console.log(player.name + ": " + player.conn); // oyuncu adı ve haxball ip adresi
}
room.onPlayerChat = function(player, message) {
    var spacePos = message.search(" ");
    var command = message.substr(0, spacePos !== -1 ? spacePos : message.length);
    if (commands.hasOwnProperty(command) == true) return commands[command](player, message);
    if (admins.includes(player.conn)) { // adminlerin gorunen mesaji var admins içindeki iplere göre
        room.sendAnnouncement("[🔰] " + player.name + ": " + message, null, 'bold', 0x00000, 2);
        return false;
    }
}

Takıldığınız yer olursa discorddan yazın: EmirhanOlgn#5976

Bakın !sevgi yazınca botun "Bir kişi belirtmelisin" yazmasını istiyorum bu olabilir mi?

Elinous-Electra commented 3 years ago

Ve odada olmayan bir kişiye bu komut kullanılırsa "Lütfen odada bulunan bir kişiyi seçin" demesini istiyorum

  1. dediğim zor yapılıyorsa cevaplamanıza gerek yok
EmirhanOlgn commented 3 years ago

Ve odada olmayan bir kişiye bu komut kullanılırsa "Lütfen odada bulunan bir kişiyi seçin" demesini istiyorum

  1. dediğim zor yapılıyorsa cevaplamanıza gerek yok

Hemen bir deniyim.

var online = []; // odada olanları gösteren liste
var commands = { //komutlar
    "!ping": pingFun,
    "!sevgi": sevgiFun,
}
function sevgiFun(player, message) {
var belirtilenPlayer = message.substr(7); // (!sevgi isim) isim kelimesini alıyoruz
if (online.includes(player.name)) {//listede ismi varmi
room.sendAnnouncement(player.name + ", " + belirtilenPlayer + " adlı kişiyi sevdiğini belirtti"); // mesaj atıyoruz
return false; // kullanilan komutun chate gitmesini engelliyoruz
} else {
room.sendAnnouncement(player.name + " odada bu isimde birisi bulunmuyor");
return false;
}
}
function pingFun(player) { // !ping komutu
    room.sendAnnouncement(player.name + " pong!");
}
var admins = ["player.conn", "player.conn2"] // admin olanların ip adresi
room.onPlayerJoin = function(player) {
   console.log(player.name + ": " + player.conn); // oyuncu adı ve haxball ip adresi
}
room.onPlayerJoin = function(player) {
online.push(player.name); //online listesine oyuncu adını ekle
}
room.onPlayerLeave = function(player) {
online.shift(player.name); //online listesinden oyuncu adını al
}
room.onPlayerChat = function(player, message) {
    var spacePos = message.search(" ");
    var command = message.substr(0, spacePos !== -1 ? spacePos : message.length);
    if (commands.hasOwnProperty(command) == true) return commands[command](player, message);
    if (admins.includes(player.conn)) { // adminlerin gorunen mesaji var admins içindeki iplere göre
        room.sendAnnouncement("[🔰] " + player.name + ": " + message, null, 'bold', 0x00000, 2);
        return false;
    }
}

Onplayerjoin, onplayerleave, var online ve sevgiFun içinde if (online.includes(player.name)) eklendi.

EmirhanOlgn commented 3 years ago

Ve odada olmayan bir kişiye bu komut kullanılırsa "Lütfen odada bulunan bir kişiyi seçin" demesini istiyorum

  1. dediğim zor yapılıyorsa cevaplamanıza gerek yok

Hemen bir deniyim.

var online = []; // odada olanları gösteren liste
var commands = { //komutlar
    "!ping": pingFun,
    "!sevgi": sevgiFun,
}
function sevgiFun(player, message) {
var belirtilenPlayer = message.substr(7); // (!sevgi isim) isim kelimesini alıyoruz
if (online.includes(player.name)) {//listede ismi varmi
room.sendAnnouncement(player.name + ", " + belirtilenPlayer + " adlı kişiyi sevdiğini belirtti"); // mesaj atıyoruz
return false; // kullanilan komutun chate gitmesini engelliyoruz
} else {
room.sendAnnouncement(player.name + " odada bu isimde birisi bulunmuyor");
return false;
}
}
function pingFun(player) { // !ping komutu
    room.sendAnnouncement(player.name + " pong!");
}
var admins = ["player.conn", "player.conn2"] // admin olanların ip adresi
room.onPlayerJoin = function(player) {
   console.log(player.name + ": " + player.conn); // oyuncu adı ve haxball ip adresi
}
room.onPlayerJoin = function(player) {
online.push(player.name); //online listesine oyuncu adını ekle
}
room.onPlayerLeave = function(player) {
online.shift(player.name); //online listesinden oyuncu adını al
}
room.onPlayerChat = function(player, message) {
    var spacePos = message.search(" ");
    var command = message.substr(0, spacePos !== -1 ? spacePos : message.length);
    if (commands.hasOwnProperty(command) == true) return commands[command](player, message);
    if (admins.includes(player.conn)) { // adminlerin gorunen mesaji var admins içindeki iplere göre
        room.sendAnnouncement("[🔰] " + player.name + ": " + message, null, 'bold', 0x00000, 2);
        return false;
    }
}

Onplayerjoin, onplayerleave, var online ve sevgiFun içinde if (online.includes(player.name)) eklendi.

var online = []; // odada olanları gösteren liste
var commands = { //komutlar
    "!ping": pingFun,
    "!sevgi": sevgiFun,
}
function sevgiFun(player, message) {
var belirtilenPlayer = message.substr(7); // (!sevgi isim) isim kelimesini alıyoruz
if (online.includes(player.name)) {//listede ismi varmi
room.sendAnnouncement(player.name + ", " + belirtilenPlayer + " adlı kişiyi sevdiğini belirtti"); // mesaj atıyoruz
return false; // kullanilan komutun chate gitmesini engelliyoruz
} else if (belirtilenPlayer == null) {
room.sendAnnouncement("Kullanım: !sevgi Electra");
return false;
} else {
room.sendAnnouncement(player.name + " odada bu isimde birisi bulunmuyor");
return false;
}
}
function pingFun(player) { // !ping komutu
    room.sendAnnouncement(player.name + " pong!");
}
var admins = ["player.conn", "player.conn2"] // admin olanların ip adresi
room.onPlayerJoin = function(player) {
   console.log(player.name + ": " + player.conn); // oyuncu adı ve haxball ip adresi
}
room.onPlayerJoin = function(player) {
online.push(player.name); //online listesine oyuncu adını ekle
}
room.onPlayerLeave = function(player) {
online.shift(player.name); //online listesinden oyuncu adını al
}
room.onPlayerChat = function(player, message) {
    var spacePos = message.search(" ");
    var command = message.substr(0, spacePos !== -1 ? spacePos : message.length);
    if (commands.hasOwnProperty(command) == true) return commands[command](player, message);
    if (admins.includes(player.conn)) { // adminlerin gorunen mesaji var admins içindeki iplere göre
        room.sendAnnouncement("[🔰] " + player.name + ": " + message, null, 'bold', 0x00000, 2);
        return false;
    }
}

else if eklendi son mesajını görmemiştim kusura bakma 😅

EmirhanOlgn commented 3 years ago

Anlamadım

Elinous-Electra commented 3 years ago

Boşverin

EmirhanOlgn commented 3 years ago

Sorun varmı çalıştımı?

Elinous-Electra commented 3 years ago

Odaya girdiğim an "Connection closed" diyor?

EmirhanOlgn commented 3 years ago
  1. satırın ss atarmısınız
EmirhanOlgn commented 3 years ago

müsait olunca bakarım

EmirhanOlgn commented 3 years ago

yok yazdığınız kodlardaki 52. satır

Elinous-Electra commented 3 years ago

image

EmirhanOlgn commented 3 years ago
var pname = player.name;
online.shift(pname);

onPlayerLeave

Elinous-Electra commented 3 years ago
var pname = player.name;
online.shift(pname);

onPlayerLeave

room.onPlayerLeave = function(player){ var pname = player.name; online.shift(pname); } Bu şekilde mi? Eğer doğru yazdıysam hata devam ediyor

EmirhanOlgn commented 3 years ago

evet dalgınlığıma gelmiş ve iki kere onPlayerJoin yazmışım 😅

EmirhanOlgn commented 3 years ago

bu kod çalışmalı

var online = []; // odada olanları gösteren liste
var commands = { //komutlar
    "!ping": pingFun,
    "!sevgi": sevgiFun,
}
function sevgiFun(player, message) {
var belirtilenPlayer = message.substr(7); // (!sevgi isim) isim kelimesini alıyoruz
if (online.includes(player.name)) {//listede ismi varmi
room.sendAnnouncement(player.name + ", " + belirtilenPlayer + " adlı kişiyi sevdiğini belirtti"); // mesaj atıyoruz
return false; // kullanilan komutun chate gitmesini engelliyoruz
} else if (belirtilenPlayer == null) {
room.sendAnnouncement("Kullanım: !sevgi Electra");
return false;
} else {
room.sendAnnouncement(player.name + " odada bu isimde birisi bulunmuyor");
return false;
}
}
function pingFun(player) { // !ping komutu
    room.sendAnnouncement(player.name + " pong!");
}
var admins = ["player.conn", "player.conn2"] // admin olanların ip adresi
room.onPlayerJoin = function(player) {
   console.log(player.name + ": " + player.conn); // oyuncu adı ve haxball ip adresi
   online.push(player.name); //online listesine oyuncu adını ekle
}
room.onPlayerLeave = function(player) {
   online.shift(player.name); //online listesinden oyuncu adını al
}
room.onPlayerChat = function(player, message) {
    var spacePos = message.search(" ");
    var command = message.substr(0, spacePos !== -1 ? spacePos : message.length);
    if (commands.hasOwnProperty(command) == true) return commands[command](player, message);
    if (admins.includes(player.conn)) { // adminlerin gorunen mesaji var admins içindeki iplere göre
        room.sendAnnouncement("[🔰] " + player.name + ": " + message, null, 'bold', 0x00000, 2);
        return false;
    }
}
ghost commented 3 years ago
if (!RegExp.escape) {
  RegExp.escape = (S) => {
    // 1. let str be ToString(S).
    // 2. ReturnIfAbrupt(str).
    let str = String(S);
    // 3. Let cpList be a List containing in order the code
    // points as defined in 6.1.4 of str, starting at the first element of str.
    let cpList = Array.from(str[Symbol.iterator]());
    // 4. let cuList be a new List
    let cuList = [];
    // 5. For each code point c in cpList in List order, do:
    for (let c of cpList) {
      // i. If c is a SyntaxCharacter then do:
      if ("^$\\.*+?()[]{}|".indexOf(c) !== -1) {
        // a. Append "\" to cuList.
        cuList.push("\\");
      }
      // Append c to cpList.
      cuList.push(c);
    }
    //6. Let L be a String whose elements are, in order, the elements of cuList.
    let L = cuList.join("");
    // 7. Return L.
    return L;
  };
}
const Auths = new Map();
const room = HBInit({});
const prefix = "!";
const Commands = {
  ping: {
    run: function (player, message) {
      room.sendAnnouncement(`Pong! ${player.name}`);
      return false;
    },
    help: ``,
  },
  sevgi: {
    run: function (player, message) {
      const _splittedMessage = message.split(/ +/gm); // Converts the message into an Array object.
      const _User = _splittedMessage.find((val) => /\@\w+/i.test(val)); // Finds the string like @sadfsafsafasfsaf
      const isPlayerinRoom = room
        .getPlayerList()
        .find((p) => p.name == _User.replace("_", " ").replace("@", ""));
      if (!isPlayerinRoom) {
        // If the player isn't in the room.
        room.sendAnnouncement(`There is no such a player in room!`, player.id);
        return false;
      }
      room.sendAnnouncement(
        `${player.name} is showing its love to ${_User
          .replace("_", " ")
          .replace("@", "")} `
      );
      return false;
    },
  },
  help: {
    run: function (player, message) {
      const _SplittedMessage = message.split(/ +/g);
      const [, cmd] = _SplittedMessage;
      if (Object.keys(Commands).includes(cmd)) {
        room.sendAnnouncement(
          `Usage: ${
            Commands[cmd]?.help || "Usage is not defined for this command"
          }`,
          player.id
        );
      }
      return false;
    },
    help: ``,
  },
};
const Admins = ["https://haxball.com/playerauth", "player.auth"];
const commandRegex = new RegExp(`^${RegExp.escape(prefix)}\\w+`, "");
function isCommand(message) {
  return commandRegex.test(message);
}
room.onPlayerJoin = function (player) {
  Auths.set(player.id, player.auth);
};
room.onPlayerChat = function (player, message) {
  if (isCommand(message)) {
    const [cmd] = message.match(commandRegex);
    if (Object.keys(Commands).includes(cmd.replace(prefix, "")))
      return Commands[cmd.replace(prefix, "")]?.run(player, message);
    return false;
  }
  if (Admins.includes(Auths.get(player.id))) {
    room.sendAnnouncement(`[ADMIN] ${player.name}: ${message}`, null, 0xdb4939);
    return false;
  }
};