Ir para conteúdo
  • 0

Bug? script drop item message - by zipter


Bodak Reborn

Pergunta

@zipter98, desculpa incomodar, but, o script não funciona para mim... ele funciona no pda? Eu dei print (numero) em diversas linhas para saber onde estava o erro e tentar corrigir, mas não printa nada ao dropar o item.

Eu coloquei a tag, o script em creaturescripts e registrei no login.lua, mas não acontece nada ao dropar o item. Nada mesmo, sem bug na distro, nada...

 

Obrigado pela atenção! =):

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

7 respostass a esta questão

Posts Recomendados

  • 1

Apenas para confirmar algumas coisas, teste o seguinte código, fundado naquele que mencionei primeiramente, e nos diga se o mesmo erro acontece:

 

 

local items, monster_function = {11447}, ehMonstro or isMonsterlocal function drop_item(cid, position, corpseid, player_name, monster_name)    if not isCreature(cid) then return true end    local corpse = getTileItemById(position, corpseid).uid        if corpse <= 1 then return end    if not isContainer(corpse) then return true end        for slot = 0, getContainerSize(corpse) - 1 do        local item = getContainerItem(corpse, slot)                if item.uid <= 1 then return end        if isInArray(items, item.itemid) then            broadcastMessage('MENSAGEM LOOT: O jogador '..player_name..' dropou uma '..getItemNameById(item.itemid)..' de um '..monster_name..'.')            return true        end    endendfunction onKill(cid, target, lastHit)    if not monster_function(target) then return true end    local m_name = getCreatureName(target)    local corpse = getMonsterInfo(m_name).lookCorpse    addEvent(drop_item, 5, getCreatureSummons(cid)[1], getThingPos(target), corpse, getCreatureName(cid), m_name)    return trueend

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Muito obrigado, @zipter98!

Eu achei o arquivo e adaptei para quando dropar uma Fire Stone, mandar um broadcast.

Achei estranho o fato de quando eu usava a função "getCreatureName(cid)" na mensagem do broadcast, aparecia o nome do meu pokémon, não o meu. Então eu fiz com a variável "myname".

Bom, está funcionando, mas está dando alguns erros.

Ao dropar o item, a mensagem é enviada, mas depois que você dropa o item algumas vezes, são enviadas duas ou três mensagens e a maioria das vezes, é enviado mensagem mesmo sem ter dropado o item.

Agradeço, novamente.

 

Esqueci de postar o script ISADHIASDHUSAID

Aqui:

Spoiler
local function dropMessage(cid, pos, itens, myname, name)	if not isCreature(cid) then return true end	for i = 1, 255 do		pos.stackpos = i		local item = getTileThingByPos(pos)		if item.uid ~= 0 then			if isContainer(item.uid) then				if isContainer(item.uid) and getContainerSize(item.uid) > 0 then					for slot=0, (getContainerSize(item.uid)-1) do						local item = getContainerItem(item.uid, slot)						if isInArray(itens, item.itemid) then							print(1)							broadcastMessage('MENSAGEM LOOT: O jogador '..myname..' dropou uma '..getItemNameById(item.itemid)..' de um '..name..'.')						end					end				end			end		end	endreturn trueendfunction onKill(cid, target)	local itens = {11447}	if ehMonstro(target) and isPlayer(cid) then		local pos = getThingPos(target)		local myname = getCreatureName(cid)		local name = getCreatureName(target)		local pid = getCreatureSummons(cid)[1]		addEvent(dropMessage, 150, pid, pos, itens, myname, name)	endreturn trueend

 

 

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

  • 0

Hm, curioso. Mesmo não dropando o item, a mensagem que aparece informa o nome deste? 

De qualquer maneira, fiz algumas pequenas modificações no código:

 

 

local function dropMessage(cid, pos, itens, myname, name)    if not isCreature(cid) then return true end        for i = 1, 255 do        pos.stackpos = i        local item = getTileThingByPos(pos)                if item.uid ~= 0 then            if isContainer(item.uid) then                if isContainer(item.uid) and getContainerSize(item.uid) > 0 then                    for slot=0, (getContainerSize(item.uid)-1) do                        local _item = getContainerItem(item.uid, slot)                                                if _item.uid > 0 and isInArray(itens, _item.itemid) then                            print(1)                            broadcastMessage('MENSAGEM LOOT: O jogador '..myname..' dropou uma '..getItemNameById(_item.itemid)..' de um '..name..'.')                            return true                        end                    end                end            end        end    end    return trueendfunction onKill(cid, target)    local itens = {11447}    if ehMonstro(target) and isPlayer(cid) then        local pos = getThingPos(target)        local myname = getCreatureName(cid)        local name = getCreatureName(target)        local pid = getCreatureSummons(cid)[1]        addEvent(dropMessage, 150, pid, pos, itens, myname, name)    end    return trueend

 

 

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

×
×
  • Criar Novo...