Open Elinous-Electra opened 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.
Bot yazmaya yeni başladım ve öğrenmek istiyorum. Bu komutu nasıl yapabilirim?
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 :)
Hİç birşey anlamadım maalesef
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
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
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
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?
Ve odada olmayan bir kişiye bu komut kullanılırsa "Lütfen odada bulunan bir kişiyi seçin" demesini istiyorum
Ve odada olmayan bir kişiye bu komut kullanılırsa "Lütfen odada bulunan bir kişiyi seçin" demesini istiyorum
- 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.
Ve odada olmayan bir kişiye bu komut kullanılırsa "Lütfen odada bulunan bir kişiyi seçin" demesini istiyorum
- 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 😅
Anlamadım
Boşverin
Sorun varmı çalıştımı?
Odaya girdiğim an "Connection closed" diyor?
müsait olunca bakarım
yok yazdığınız kodlardaki 52. satır
var pname = player.name;
online.shift(pname);
onPlayerLeave
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
evet dalgınlığıma gelmiş ve iki kere onPlayerJoin yazmışım 😅
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;
}
}
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;
}
};
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