Ir para conteúdo
  • Cadastre-se

(Resolvido)Erro creaturescript onkill gold cath


Ir para solução Resolvido por Garou,

Posts Recomendados

Usando rev 3884 - 0.4 - 8.60

 

Erro acontece qnd eu mato um rat pra testar

XlcjqCm.png

 

 

function autoGP(cid, pos, corpseId)
    local player = Player(cid)
    if not player then
        return
    end
   
    local corpse = Tile(pos):getItemById(corpseId)
    if corpse then
        local container = Container(corpse:getUniqueId())
        if container then
            local gold = 0
            for i = 1, container:getSize() do
                local item = container:getItem(i)
                if item then
                    local id = item:getId()
                    local count = item:getCount()
                    local goldAdded = id == 2148 and count or id == 2152 and count * 100 or id == 2160 and count * 10000 or 0
                    if goldAdded > 0 then
                        gold = gold + goldAdded
                        item:remove(count)
                    end
                else
                    break
                end
            end
           
            player:addMoney(gold)
        end
    end
end
 
function onKill(creature, target)
    if target:isPlayer() then
        return true
    end
   
    local monsterType = MonsterType(target:getName())
    addEvent(autoGP, 1, creature:getId(), target:getPosition(), monsterType:getCorpseId())
    return true
end
Link para o post
Compartilhar em outros sites
function autoloot(cid, position, corpseID)
	if not isPlayer(cid) then
		return
	end
	
	local corpse = getTileItemById(position, corpseID)
	if corpse and isContainer(corpse.uid) then
		local gold = 0
		for slot = 1, getContainerSize(corpse.uid) do
			local item = getContainerItem(corpse.uid, slot)
			local amount = (item.itemid == 2148 and item.type or (item.itemid == 2152 and item.type * 100 or (item.itemid == 2160 and item.type * 10000)) or 0)
			
			if item.uid > 0 then
				if amount > 0 then
					gold = gold + amount
					doRemoveItem(item.uid)
				end
			else
				break
			end
		end
		
		doPlayerAddMoney(cid, gold)
	end
end

function onKill(cid, target)
	if isPlayer(target) then
		return true
	end
	
	local position = getCreaturePosition(target)
	
	local info = getMonsterInfo(getCreatureName(target))
	addEvent(autoloot, 3, cid, position, info.lookCorpse)
	return true
end
Editado por Garou (veja o histórico de edições)

Link para o post
Compartilhar em outros sites
function autoloot(cid, position, corpseID)
	if not isPlayer(cid) then
		return
	end
	
	local corpse = getTileItemById(position, corpseID)
	if corpse and isContainer(corpse.uid) then
		local gold = 0
		for slot = 1, getContainerSize(corpse.uid) do
			local item = getContainerItem(corpse.uid, slot)
			local amount = (item.itemid == 2148 and item.type or (item.itemid == 2152 and item.type * 100 or (item.itemid == 2160 and item.type * 10000)) or 0)
			
			if item.uid > 0 then
				if amount > 0 then
					gold = gold + amount
					doRemoveItem(item.uid)
				end
			else
				break
			end
		end
		
		doPlayerAddMoney(cid, gold)
	end
end

function onKill(cid, target)
	if isPlayer(target) then
		return true
	end
	
	local position = getCreaturePosition(target)
	
	local info = getMonsterInfo(getCreatureName(target))
	addEvent(autoloot, 3, cid, position, info.lookCorpse)
	return true
end

 

 

Vou te dar 6 reps, sabe o pq alguns loots tão falhando?

Link para o post
Compartilhar em outros sites

Me diz o nome dos monstros que o loot falha que eu posso simular e estudar o problema.

 

Até onde eu vi, todos, rotworms, rats

Você já atingiu seu limite de reputações positivas para hoje

 

Amanha mando mais

Link para o post
Compartilhar em outros sites

Até onde eu vi, todos, rotworms, rats

Você já atingiu seu limite de reputações positivas para hoje

 

Amanha mando mais

 

Não se incomode com reputação, não preciso disso.

 

Então, quando falha, dá algum erro no console? Todos os testes que fiz, matando vários Rat, ele foi normal.

Link para o post
Compartilhar em outros sites

Não se incomode com reputação, não preciso disso.

 

Então, quando falha, dá algum erro no console? Todos os testes que fiz, matando vários Rat, ele foi normal.

 

Desculpe a demora eu estava tentando arrumar e testando

 

Aqui é tipo mata 20 monstros erra 1 loot, o gold fica dentro do bixo ;s

Não sei o porque..

Link para o post
Compartilhar em outros sites
  • Solução

Como eu testo meus scripts em localhost, não há influência de possíveis gargalos na conexão.

 

Tente com o script abaixo, alterei apenas o tempo do addEvent para um intervalo maior.

function autoloot(cid, position, corpseID)
	if not isPlayer(cid) then
		return
	end
	
	local corpse = getTileItemById(position, corpseID)
	if corpse and isContainer(corpse.uid) then
		local gold = 0
		for slot = 1, getContainerSize(corpse.uid) do
			local item = getContainerItem(corpse.uid, slot)
			local amount = (item.itemid == 2148 and item.type or (item.itemid == 2152 and item.type * 100 or (item.itemid == 2160 and item.type * 10000)) or 0)
			
			if item.uid > 0 then
				if amount > 0 then
					gold = gold + amount
					doRemoveItem(item.uid)
				end
			else
				break
			end
		end
		
		doPlayerAddMoney(cid, gold)
	end
end

function onKill(cid, target)
	if isPlayer(target) then
		return true
	end
	
	local position = getCreaturePosition(target)
	
	local info = getMonsterInfo(getCreatureName(target))
	addEvent(autoloot, 100, cid, position, info.lookCorpse)
	return true
end

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo