Ir para conteúdo
  • 0

Pedido - Remover item ao matar algum Monstro


paulincarvalhoo22

Pergunta

Olá, Boa tarde.

Então, eu estou precisando de um script que ao matar um monstro ( no meu caso eu vou colocar demon ), automaticamente uma pedra no chão desaparecesse.

 

ry92.png

 

 

A ideia é ao matar esses 6 demons, sumir essas 2 pedras ao lado, onde os jogadores vão estar.

Espero que alguém possa me ajudar :D

No aguardo.

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Se eu conseguir usar 1 demon pra abrir já está de bom tamanho, vou tentar aqui, muito obrigado.

 

Edit:

 

Uma duvida

 

function onDeath(cid, corpse, killer)


local M ={
["rat"] = {Pos = {x=177,y=40,z=7},id= 1058 ,time = 20},
["necromancer"] = {Pos = {x=173, y=40, z=7},id= 10196 ,time = 10},
}

local x = M[getCreatureName(cid)]
function criar()
local parede = getTileItemById(x.Pos, x.id)
doCreateItem(x.id, 1, x.Pos)
end
if x then
local parede = getTileItemById(x.Pos, x.id)
if parede then
doRemoveItem(parede.uid, 1)
doCreatureSay(cid, "A parede Será criada Novamente em "..x.time.." segundos.", TALKTYPE_ORANGE_1)
addEvent(criar, x.time*1000)
end
end
return TRUE
end

 

Aonde tem os nomes ali rat, necromancer eu mudo pra demon? E o ID, é o ID da pedra? ( ["rat"] = {Pos = {x=177,y=40,z=7},id= 1058 ,time = 20} )

Editado por paulincarvalhoo22
Link para o comentário
Compartilhar em outros sites

  • 0

Adicione essas funções na sua lib

 

 

function getCreaturesInArea(pos1,pos2)
	local players = {}
	local monsters = {}
	local npcs = {}
	if pos1.x and pos1.y and pos2.x and pos2.y and pos1.z and pos2.z then
		for a = pos1.x, pos2.x do
			for b = pos1.y,pos2.y do
				for c = pos1.z, pos2.z do
					local pos = {x=a,y=b,z=c}
					local creature = getTopCreature(pos).uid
					if isCreature(creature) then
						if isMonster(creature) then
							table.insert(monsters, creature)
						elseif isPlayer(creature) then
							table.insert(players, creature)
						elseif isNpc(creature) then
							table.insert(npcs, creature)
						end
					end
				end
			end
		end
		return {players=players, monsters=monsters, npcs=npcs}
	else
		return false
	end
end

function getItemFromPos(itemid, pos)
    local ret = false
    local stack = 0
    local thing = 0
    repeat
        pos.stackpos = stack
        thing = getThingFromPos(pos)
        if thing.itemid == itemid then
            ret = thing
        end
        stack = stack + 1
    until stack >= 100
    return ret
end

 

 

 

Se não souber adicionar, basta criar um arquivo com qualquer nome, colocar esse código dentro e salvar como qualquercoisa.lua em data/lib

 

Aí usa esse código aqui:

 

 

-- Posições do canto superior esquerdo e do canto inferior direito da área em que os demons estão
local posi, posf = {x=160, y=240, z=8}, {x=180, y=360, z=9}
-- Posições e ids das pedras
local pedra1pos, pedra1id = {x=160, y=200, z=7}, 1987
local pedra2pos, pedra2id = {x=160, y=205, z=7}, 1987

function onKill(cid, target)
	if isPlayer(cid) and isInArea(getThingPos(cid), posi, posf) then
		local monsters = getCreaturesInArea(posi, posf).monsters
		if #monsters == 1 then
			local k = getItemFromPos(pedra1id, pedra1pos).uid
			local p = getItemFromPos(pedra2id, pedra2pos).uid
			if k then doRemoveItem(k) end
			if p then doRemoveItem(p) end
		end
	end
	return true
end

 

 

 

Adicione esse código em creaturescripts/scripts com o nome de hahaha.lua e o que vem a seguir no login.lua:

registerCreatureEvent(cid, "ByeByePedras")

E isso em creaturescripts.xml:

<event type="kill" name="ByeByePedras" event="script" value="hahaha.lua"/>

Desculpe pelos nomes esquisitos, mas tava com preguiça de pensar em qualquer coisa melhor e escrevi a primeira coisa que me veio à mente.

Editado por omega blueheaven
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...