Ir para conteúdo
Banner com Efeitos

Featured Replies

Postado

Boa noite. Tentei reviver um tópico já respondido para tirar esta dúvida, mas não deu certo. Estou tentando já há algum tempo solucionar este problema: 

 

Eu quero que, ao matar um boss, todos os players que estavam batendo nele (e que tem uma certa storage de missão cumprida) recebam um item e uma outra storage de "recompensa recebida". Mas com o script que tenho atualmente, somente aquele que dá o last hit recebe o item. Segue script atual:

 

function onKill(cid, target)
	
	if not (isPlayer(cid) and isMonster(target)) then
	return true
    end
	
	local storage = 587427 
	if getCreatureName(target) == "Smaug" and getPlayerStorageValue(cid, 587426) > 0 then 
    	setPlayerStorageValue(cid, storage, 1)
		doPlayerAddItem(cid,8931,1)
	end
	return true
end

function onLogin(cid)
	registerCreatureEvent(cid, "bossKill")
	return true
end

 

Já tentei utilizando onDeath em vez de onKill, mas não funcionou também, talvez porque eu tenha feito algo errado.

 

Editado por MatCollier (veja o histórico de edições)

  • Respostas 8
  • Visualizações 797
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • luanluciano93
    luanluciano93

    local config = { monsterName = "smaug", -- nome em letras minúsculas. storageQueDeveter = 587426, storageQueVaiGanhar = 587427, itemId = 8931 } function onKill(creature, target) local player =

Postado
local config = {
	monsterName = "smaug", -- nome em letras minúsculas.
	storageQueDeveter = 587426,
	storageQueVaiGanhar = 587427,
	itemId = 8931 
}

function onKill(creature, target)
	local player = creature:getPlayer()
	if not player then
		return true
	end

	if target:getMonster() and target:getName():lower() == config.monsterName then
		for uid in pairs(target:getDamageMap()) do
			local killer = Player(uid)
			if killer then
				if killer:getStorageValue(config.storageQueDeveter) > 0 then
					if not killer:addItem(config.itemId, 1) then
						print("[ERROR] CREATURESCRIPT, FUNCTION: addItem, PLAYER: ".. killer:getName())
					else
						killer:setStorageValue(config.storageQueVaiGanhar, 1)
					end
				end
			end
		end
	end

	return true
end

TESTADO EM OTX3

Editado por luanluciano93 (veja o histórico de edições)

Postado
  • Autor

Olá! Primeiramente, obrigado pela ajuda!

 

Eu não entendi muito bem esta parte:
 

if not killer:addItem(config.itemId, 1) then
	print("[ERROR] CREATURESCRIPT, FUNCTION: addItem, PLAYER: ".. killer:getName())
else
	killer:setStorageValue(config.storageQueVaiGanhar, 1)
end

 

Poderia me explicar por favor? Por quê  "if not killer:addItem(config.itemId, 1)" ?  A ideia é que todos os jogadores sejam considerados killers e ganhem o item + a storage. 

Postado

Esta parte "for uid in pairs(target:getDamageMap()) do" gera um laço de repetição pegando o UID de uma tabela que tem todos os jogadores que tiraram vida do monstro X ...

Tenho costume de "tratar" todas as funções que dão ou removem dinheiro ou items dentro do jogo.
Só estou colocando a condição que se o item realmente não for entregue vai aparecer um erro no console.

Se não quiser fazer esse "tratamento" é só colocar assim: 

				if killer:getStorageValue(config.storageQueDeveter) > 0 then
					killer:addItem(config.itemId, 1)
					killer:setStorageValue(config.storageQueVaiGanhar, 1)
				end




 

 

Editado por luanluciano93 (veja o histórico de edições)

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo