haxball / haxball-issues

116 stars 43 forks source link

Renk Kodları Hatası #1661

Open ghost opened 2 years ago

ghost commented 2 years ago

selamlar ben oyuncuların kullanması için çeşitli renkler hazırladım örneğin !mavi !kırmızı bunları yazdıkları zaman renkleri geliyor bunda bi sıkıntı yok. fakat renkleri tekrar çıkarmaları için de komut hazırladım fakat bunu yazınca herkesin renkleri sıfırlanıyor yazan oyuncunun değil.

kahverengi.splice(kahverengi.indexOf(player.name), 1) 
 kırmızıRenk.splice(kırmızıRenk.indexOf(player.name), 1) 

hem bunu hem de

kahverengi.splice(player.name)
kırmızıRenk.splice(player.name)

bunu denedim fakat ne yaparsam yapayım yazan oyuncunun değil tüm oyuncuların renkleri siliniyor. pushlarken sadece o oyuncuya yazılıyor fakat splice ederken herkesin siliniyor. Yardımcı olabilecek var mı kafayı yiyeceğim

yourfriendF commented 2 years ago

sorunu tam olarak anlamadim yapmak istediginiz seyi ve kodunuzu biraz daha detayli anlatirsaniz yardimci olabilirim

yourfriend#2756 discorddan yazabilirsin

thenorthstar commented 2 years ago

selamlar ben oyuncuların kullanması için çeşitli renkler hazırladım örneğin !mavi !kırmızı bunları yazdıkları zaman renkleri geliyor bunda bi sıkıntı yok. fakat renkleri tekrar çıkarmaları için de komut hazırladım fakat bunu yazınca herkesin renkleri sıfırlanıyor yazan oyuncunun değil.

kahverengi.splice(kahverengi.indexOf(player.name), 1) 
 kırmızıRenk.splice(kırmızıRenk.indexOf(player.name), 1) 

hem bunu hem de

kahverengi.splice(player.name)
kırmızıRenk.splice(player.name)

bunu denedim fakat ne yaparsam yapayım yazan oyuncunun değil tüm oyuncuların renkleri siliniyor. pushlarken sadece o oyuncuya yazılıyor fakat splice ederken herkesin siliniyor. Yardımcı olabilecek var mı kafayı yiyeceğim

@emret2 Aşağıdaki kod odana aynı isimde birden fazla oyuncu giriş yaptığında ne gibi bir sonuç verecek onu da ayriyeten düşünmelisin.

kahverengi.splice(kahverengi.indexOf(player.name), 1) 
 kırmızıRenk.splice(kırmızıRenk.indexOf(player.name), 1) 

Alttaki şekilde zaten yapamazsın.

kahverengi.splice(player.name)
kırmızıRenk.splice(player.name)

Son düzenleme: Yarın müsait olursam buraya kod eklemesi yapacağım. Tamamdır, kod hazır. Aşağıdaki kodu kullanabilirsin:

var commands = ["!default", "!red", "!blue", "!yellow", "!green", "!pink", "!orange", "!brown"];
var colors = [0xFFFFFF, 0xFF0000, 0x0000FF, 0xFFFF00, 0x00FF00, 0xFF0080, 0xFF8000, 0x804000];
var playerList = {};

var room = HBInit({ roomName: "Color Options", noPlayer: true, public: false, maxPlayers: 12 });

function isCommand(message) {
    return commands.includes(message);
}

room.onPlayerChat = function (player, message) {
    console.log(`${player.name}: ${message}`);

    if (isCommand(message) == true) {
        if (commands.indexOf(message) === -1) { //Actually it won't get -1 but I have added it as just a control against crashes.
            console.log("Error");
            return false;
        }
        else {
            playerList[player.name].textColor = colors[commands.indexOf(message)];
            room.sendAnnouncement(`Your text color has been changed as ${message.slice(1)}.`, player.id, playerList[player.name].textColor, "bold", 1);
            return false;
        }
    }
    else {
        room.sendAnnouncement(`${player.name}: ${message}`, null, playerList[player.name].textColor, "normal", 1);
        return false;
    }
}

room.onPlayerJoin = function (player) {
    if (playerList[player.name] == undefined) {
        playerList[player.name] = { name: player.name, auth: player.auth, conn: player.conn, textColor: 0xFFFFFF };
    }
}

Kodun çıktısı şu linkteki gibidir: https://thehax.pl/forum/powtorki.php?nagranie=efbcb1c86524746712835e9744b14c88

Not: Zamanım kısıtlı olduğu için yan sekme kontrolü gibi ekstra özellikleri eklemedim, kendin eklersin.

@yourfriendd Şunu diyor, oyunculara komutla renkli yazma özelliği eklemek istiyorum. Oyuncu komutu girdiğinde renkli yazma özelliği kendisine tanımlanıyor fakat varsayılan değere döndürmek istediğinde bütün oyuncuların renklerini siliyor.

ghost commented 2 years ago
var commands = ["!default", "!red", "!blue", "!yellow", "!green", "!pink", "!orange", "!brown"];
var colors = [0xFFFFFF, 0xFF0000, 0x0000FF, 0xFFFF00, 0x00FF00, 0xFF0080, 0xFF8000, 0x804000];
var playerList = {};

var room = HBInit({ roomName: "Color Options", noPlayer: true, public: false, maxPlayers: 12 });

function isCommand(message) {
    return commands.includes(message);
}

room.onPlayerChat = function (player, message) {
    console.log(`${player.name}: ${message}`);

    if (isCommand(message) == true) {
        if (commands.indexOf(message) === -1) { //Actually it won't get -1 but I have added it as just a control against crashes.
            console.log("Error");
            return false;
        }
        else {
            playerList[player.name].textColor = colors[commands.indexOf(message)];
            room.sendAnnouncement(`Your text color has been changed as ${message.slice(1)}.`, player.id, playerList[player.name].textColor, "bold", 1);
            return false;
        }
    }
    else {
        room.sendAnnouncement(`${player.name}: ${message}`, null, playerList[player.name].textColor, "normal", 1);
        return false;
    }
}

room.onPlayerJoin = function (player) {
    if (playerList[player.name] == undefined) {
        playerList[player.name] = { name: player.name, auth: player.auth, conn: player.conn, textColor: 0xFFFFFF };
    }
}

Kodun çıktısı şu linkteki gibidir: https://thehax.pl/forum/powtorki.php?nagranie=efbcb1c86524746712835e9744b14c88

Not: Zamanım kısıtlı olduğu için yan sekme kontrolü gibi ekstra özellikleri eklemedim, kendin eklersin.

@thenorthstar Sağolun hocam teşekkürler bu daha düzenli 30dan fazla renk komutum vardı uğraştıracak ama benim anlamadığım pushlarken neden o kişiye tanımlıyor da splice ederken herkesi siliyor?

thenorthstar commented 2 years ago
var commands = ["!default", "!red", "!blue", "!yellow", "!green", "!pink", "!orange", "!brown"];
var colors = [0xFFFFFF, 0xFF0000, 0x0000FF, 0xFFFF00, 0x00FF00, 0xFF0080, 0xFF8000, 0x804000];
var playerList = {};

var room = HBInit({ roomName: "Color Options", noPlayer: true, public: false, maxPlayers: 12 });

function isCommand(message) {
    return commands.includes(message);
}

room.onPlayerChat = function (player, message) {
    console.log(`${player.name}: ${message}`);

    if (isCommand(message) == true) {
        if (commands.indexOf(message) === -1) { //Actually it won't get -1 but I have added it as just a control against crashes.
            console.log("Error");
            return false;
        }
        else {
            playerList[player.name].textColor = colors[commands.indexOf(message)];
            room.sendAnnouncement(`Your text color has been changed as ${message.slice(1)}.`, player.id, playerList[player.name].textColor, "bold", 1);
            return false;
        }
    }
    else {
        room.sendAnnouncement(`${player.name}: ${message}`, null, playerList[player.name].textColor, "normal", 1);
        return false;
    }
}

room.onPlayerJoin = function (player) {
    if (playerList[player.name] == undefined) {
        playerList[player.name] = { name: player.name, auth: player.auth, conn: player.conn, textColor: 0xFFFFFF };
    }
}

Kodun çıktısı şu linkteki gibidir: https://thehax.pl/forum/powtorki.php?nagranie=efbcb1c86524746712835e9744b14c88 Not: Zamanım kısıtlı olduğu için yan sekme kontrolü gibi ekstra özellikleri eklemedim, kendin eklersin.

@thenorthstar Sağolun hocam teşekkürler bu daha düzenli 30dan fazla renk komutum vardı uğraştıracak ama benim anlamadığım pushlarken neden o kişiye tanımlıyor da splice ederken herkesi siliyor?

@emret2 Bunun nedenini tam olarak anlamak için kodunun tamamını görmemiz gerekiyor olabilir. Bu şekilde yapabileceğim yorumlar çok sınırlı çünkü.