KeepInventory PvP

Technická podpora k herním serverům Minecraft a Tekkit
Message
Autor
MinfasCZE
Příspěvky: 500
Registrován: 08 lis 2014, 08:50
Reputation: 0
Bydliště: .getLocation()
Kontaktovat uživatele:

KeepInventory PvP

#1 Příspěvekod MinfasCZE » 19 led 2016, 23:31

Server: 93.91.250.125:27731

Ahoj, potřeboval bych vědět jestli je nějaká metoda že když hráč zemře nepřijde o věci, ale pouze když hráč zemře zabitím jiného hráče. Chtěl bych aby se to dalo vypnout v určitém regionu (aspoň světě). Díky.

MarekBurget

Re: KeepInventory PvP

#2 Příspěvekod MarekBurget » 19 led 2016, 23:42

Ten plugin rezidencia to má, platená verzia, že v danej rezidencií je keep inventory ,tzn drop inventory : false / true. alebo keep inventory.

MinfasCZE
Příspěvky: 500
Registrován: 08 lis 2014, 08:50
Reputation: 0
Bydliště: .getLocation()
Kontaktovat uživatele:

Re: KeepInventory PvP

#3 Příspěvekod MinfasCZE » 20 led 2016, 07:31

Ale pouze pokud je hráč zabit jiným hráčem

Uživatelský avatar
Hanakocz
Příspěvky: 3228
Věk: 34
Registrován: 25 črc 2013, 20:53
Reputation: 7
Kontaktovat uživatele:

Re: KeepInventory PvP

#4 Příspěvekod Hanakocz » 20 led 2016, 15:33

net.minecraft.entity.player.EntityPlayer:

Kód: Vybrat vše

 public void onDeath(DamageSource p_70645_1_)
    {
        if (ForgeHooks.onLivingDeath(this, p_70645_1_)) return;
        super.onDeath(p_70645_1_);
        this.setSize(0.2F, 0.2F);
        this.setPosition(this.posX, this.posY, this.posZ);
        this.motionY = 0.10000000149011612D;

        captureDrops = true;
        capturedDrops.clear();

        if (this.getCommandSenderName().equals("Notch"))
        {
            this.func_146097_a(new ItemStack(Items.apple, 1), true, false);
        }

        if (!this.worldObj.getGameRules().getGameRuleBooleanValue("keepInventory"))
        {
            this.inventory.dropAllItems();
        }

        captureDrops = false;

        if (!worldObj.isRemote)
        {
            PlayerDropsEvent event = new PlayerDropsEvent(this, p_70645_1_, capturedDrops, recentlyHit > 0);
            if (!MinecraftForge.EVENT_BUS.post(event))
            {
                for (EntityItem item : capturedDrops)
                {
                    joinEntityItemWithWorld(item);
                }
            }
        }

        if (p_70645_1_ != null)
        {
            this.motionX = (double)(-MathHelper.cos((this.attackedAtYaw + this.rotationYaw) * (float)Math.PI / 180.0F) * 0.1F);
            this.motionZ = (double)(-MathHelper.sin((this.attackedAtYaw + this.rotationYaw) * (float)Math.PI / 180.0F) * 0.1F);
        }
        else
        {
            this.motionX = this.motionZ = 0.0D;
        }

        this.yOffset = 0.1F;
        this.addStat(StatList.deathsStat, 1);
    }
   
   


Z toho důležitá je tadle část:

Kód: Vybrat vše

 if (!this.worldObj.getGameRules().getGameRuleBooleanValue("keepInventory"))
        {
            this.inventory.dropAllItems();
        }

Říká, že pokud je gamerule "keepInventory" false, tak dropne všechny itemy.
Pokud chceš rozlišovat, jaká smrt nastala, musíš tu funkci upravit..
Důležité je, že ta funkce celá má vstupní parametr : DamageSource p_70645_1_ - tedy, kdo dává damage.
Takže se stačí podívat, zda ten damage source je hráč, nebo ne.

Kód: Vybrat vše

 if (!this.worldObj.getGameRules().getGameRuleBooleanValue("keepInventory") && (p_70645_1_.getEntity() instanceof EntityPlayer) )
        {
            this.inventory.dropAllItems();
        }

V tomto případě potřebuješ mít zapnuté keepInventory, ale pak ve chvíli, kdy hráče zabije hráč, tak věci padnou.

A teď ti už stačí programátor, co ti to napíše v bukkitu, todle bych ti zvládl udělat jako mod (a zdroják je sice z vanilly, ale Forgí dekompilován, takže upraven), plugin se může nějak trochu lišit, ale princip bude stejný. Lidí zabývajících se tu Bukkitem je dost ;-)
Industry 2.0 -> 1.7.10 GregTech6 server. Pro připojení stačí napsat.
Člen ligy pro aktualizaci serverů na novější verze a rozšíření modovaného MC.
Discord FH : http://discord.fakaheda.eu/ (sem psát pokud chcete poradit s MC mody akutně)

Uživatelský avatar
variodriver
Příspěvky: 1160
Věk: 15
Registrován: 08 lis 2015, 00:04
Reputation: 25
Bydliště: localhost
Kontaktovat uživatele:

Re: KeepInventory PvP

#5 Příspěvekod variodriver » 20 led 2016, 16:24

Taky by šlo, že ta arena bude v jiném světě, a že tam dáš příkaz /gamerule keepInventory true
Mělo by to fungovat na ten svět, ve kterém to dáš a žádný plugin přidávat nemusíš, je to i ve vannile
Obrázek
ObrázekObrázek

Uživatelský avatar
pitilon@seznam.cz
Příspěvky: 3999
Registrován: 16 lis 2014, 06:32
Reputation: 57
Kontaktovat uživatele:

Re: KeepInventory PvP

#6 Příspěvekod pitilon@seznam.cz » 20 led 2016, 19:04

Ale on chce aby to rozlišovalo smrt, a ne že vůbec nepříde
Obrázek
Ať už si lidé myslí cokoli cokoli dělají nebo říkají neberte osobně. Názory druhých odpovídají tomu čemu tito lidé věří a proto ať si o vás myslí cokoli ve skutečnosti se vás to netýká. Vždy to vypovídá jen a jen o nich.
Není hanba být zabit cheaterem, ale cheatovat a být zabit.
Nejsem nerozumný. Jen nemám ten samý rozum jako vy.

Obrázek
FH Discord: http://discord.fakaheda.eu/

MinfasCZE
Příspěvky: 500
Registrován: 08 lis 2014, 08:50
Reputation: 0
Bydliště: .getLocation()
Kontaktovat uživatele:

Re: KeepInventory PvP

#7 Příspěvekod MinfasCZE » 20 led 2016, 22:45

Žádný arény... OK díky zatím.


Zpět na „Minecraft, Tekkit“

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 24 hostů