Ir para conteúdo
Entre para seguir isso  
Mock

Mensagem de loot.

Recommended Posts

Mock    32
Mock

Servidor testado: TFS 0.3.1 (possivelmente em versoes anteriores)

Servidor testado2: Matriz

Autor: Mock

Versão: 1.2.1

 

 

Percebi que muitos otservers 8.5 não tem esse sistema justamente por o TFS nao ter integrado ele ainda, apenas matriz o possue, a certeza que esse script pode funcionar em até servidores 8.22 ou 8.1 é que ele funciona em matriz e antigamente até as versoes 8.1 e 8.22 quase todos usavam servidores a base da matriz (otserv original) e quase ninguem usava TFS, entao tive que fazer 2 versoes, só estarei postando a versão do TFS, caso alguem queira a da matriz peça por PVT.

 

Vamos começar.

 

Bom uma função que mudou de função no TFS é a getItemName, no TFS pega por UID e na matriz por itemid entao fiz algumas mudanças, mais deixe de lado vamos instalar.

Vá até a pasta creaturescripts, abra o login.lua. antes do utimo:

return TRUE
end

Adcione uma linha ficando assim:

[b]registerCreatureEvent(cid, [b][color="DarkRed"]"loot"[/color][/b])[/b]
return TRUE
end

Salve. e abra o creaturescripts.xml e adcione esta tag:

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

 

Feito o mesmo abra a pasta scripts e crie o arquivo loot.lua e insira isso:

--- Script by mock
local function find(pa)--- Script by mock
  for i=1,255 do
    pa.stackpos = i
    local corpse = getThingfromPos(pa)
 if isCorpse(corpse.uid) == TRUE then
    if isContainer(corpse.uid) == TRUE then
             return corpse.uid
       end
   end
end
return FALSE
end
local function getConteiner(item)--- Script by mock
  if isContainer(item.uid) == FALSE then
     return ""
  end
  local items = getItemName(item.uid)..": ("
  local g = doAddContainerItem(item.uid,2815,1)
  for i=1, getContainerCap(item.uid) do
      local k = getContainerItem(item.uid, i)
      if k.itemid ~= 0 then
         if isContainer(k.uid) == TRUE then
            items = items..getConteiner(k)..', '
            print('o0')
         else
            if k.type > 1 then
               items = items..k.type..'x '..getItemNameById(k.itemid).."s, "
            else
              items = items..getItemNameById(k.itemid)..", "
            end
         end
      end
  end
  items = items:sub(1,#items-2)..'.'
  doRemoveItem(g,-1)
  return items..')'
end
function getLoot(pa,cid,nam)--- Script by mock
     corpse = find(pa)
        if corpse == FALSE then
            return FALSE
        end                   
        local olda = getContainerCap(corpse)
        if olda < 3 then
           return FALSE
        end
           if math.random(1,50) < 6 then
     doAddContainerItem(corpse,8306,1)
     doSendMagicEffect( getThingPos(corpse) ,31)
  end
        local g = doAddContainerItem(corpse,2815,1)
     local str = 'Loot de '..nam..': ' 
     for i=1, getContainerCap(corpse) do
     	          local a = getContainerItem(corpse, i)
     	          if a.itemid ~= 0 then
     	             if isContainer(a.uid) == TRUE then
     	                str = str..getConteiner(a)..' , '
     	             else
     	                if a.type > 1 then
     	                   str = str..a.type..'x '..getItemNameById(a.itemid)..'s, '
     	                else
     	                   str = str..getItemNameById(a.itemid)..', '
     	                end
     	             end
                     end

        end
        doRemoveItem(g,-1)
        str = str:sub(1,#str-2)..'.'
        doPlayerSendTextMessage(cid, 23, str)
end

function onKill(cid, target)--- Script by mock
addEvent(getLoot,100,getCreaturePosition(target),cid,getCreatureName(target))
return 1
end

Apos isso, salve e feche o server, nao adianta dar reload pois todos os players tem que fazer login dinovo.

Apos isso toda vez que um monstro morrer os players verão seu loot conforme a foto:

imagemnfc.png

 

Divirtam-se

Editado por Mock
updates

Compartilhar este post


Link para o post
Destiny~    1
Destiny~

Ótimo...nunca eu já pensei que esse script existiria em LUA, mas não existia, e eu pensei que era mais fácil...Oo

Parabéns Mock ^^

 

 

PEGAEL -q

Compartilhar este post


Link para o post
Conde2    0
Conde2

Mock não sei as vezes acho que se tem problema kkk (brinks)

Esse dai que merece ir para a area de Exclusivos não vai e outros que são bem mais basicos vão pra area de Exclusivos

Muito bom mesmo =DD

Sabia que você ia acabar liberando esse código kkk

Compartilhar este post


Link para o post
Destiny~    1
Destiny~

Nesse tópico que é muito bem trabalhado ninguém comenta, que trágico -.-'

Mock, valorizo muito seu trabalho cara...e isso devia ir pra seção de exclusivos, como disse o Conde.

 

 

bjsmiliga :*

Compartilhar este post


Link para o post
Mithz    0
Mithz

Não tem como tirar esses "." da mensagem???

Compartilhar este post


Link para o post
FakLess    0
FakLess

entereçante e Util ^^

Parabens :D

Compartilhar este post


Link para o post
Destiny~    1
Destiny~

Troque o script por esse, acho que assim dá...

--- Script by mock
local function find(pa)--- Script by mock
  for i=1,255 do
    pa.stackpos = i
    local corpse = getThingfromPos(pa)
 if isCorpse(corpse.uid) == TRUE then
    if isContainer(corpse.uid) == TRUE then
             return corpse.uid
       end
   end
end
return FALSE
end
local function getConteiner(item)--- Script by mock
  if isContainer(item.uid) == FALSE then
     return ""
  end
  local items = getItemName(item.itemid)..": ("
  local g = doAddContainerItem(item.uid,2815,1)
  for i=1, getContainerCap(item.uid) do
      local k = getContainerItem(item.uid, i)
      if k.itemid ~= 0 then
         if isContainer(k.uid) == TRUE then
            items = items..getConteiner(k)..', '
            print('o0')
         else
            if k.type > 1 then
               items = items..k.type..'x '..getItemNameById(k.itemid).."s, "
            else
              items = items..getItemNameById(k.itemid)..", "
            end
         end
      end
  end
  items = items:sub(1,#items-2)..''
  doRemoveItem(g,-1)
  return items..')'
end
function getLoot(pa,cid,nam)--- Script by mock
     corpse = find(pa)
        if corpse == FALSE then
            return FALSE
        end                   
        local g = doAddContainerItem(corpse,2815,1)
     local str = 'Loot de '..nam..': ' 
     for i=1, getContainerCap(corpse) do
     	          local a = getContainerItem(corpse, i)
     	          if a.itemid ~= 0 then
     	             if isContainer(a.uid) == TRUE then
     	                str = str..getConteiner(a)..' , '
     	             else
     	                if a.type > 1 then
     	                   str = str..a.type..'x '..getItemNameById(a.itemid)..'s, '
     	                else
     	                   str = str..getItemNameById(a.itemid)..', '
     	                end
     	             end
                     end

        end
        doRemoveItem(g,-1)
        str = str:sub(1,#str-2)..''
        doPlayerSendTextMessage(cid, 23, str)
end

function onKill(cid, target)--- Script by mock
addEvent(getLoot,100,getCreaturePosition(target),cid,getCreatureName(target))
return 1
end

Editado por Mickfern

Compartilhar este post


Link para o post
Mock    32
Mock

@Mithz

como o destyn falou usa aquele script, ou entao basta deletar.

Compartilhar este post


Link para o post
Dark Billie    0
Dark Billie

Bem feita, eu precisaria de uma paciência infernal para fazer algum script assim ><'

 

Você poderia fazer que nem o do Tibia global, usando MESSAGE_INFO_DESCR e em inglês, assim não reparam que estão jogando, digamos um servidor 8.10 e sim um 8.50...^.^

Compartilhar este post


Link para o post
Gorgulf    0
Gorgulf

parabens :D, aqui funfo direitim :)

Compartilhar este post


Link para o post
Atthon    0
Atthon

Nossa! Muito bom cara!

Vai ajudar muita gente, parabéns!!

Compartilhar este post


Link para o post
Morfeusinho    0
Morfeusinho

oi meu server é um TFS 0.3.4 mudaria alguma coisa pra eu por la? ou é completament diferent?

Compartilhar este post


Link para o post
Solkyz    0
Solkyz

gostei cara mas o que é matriz e tipo nem curti o jeito que aparece é tudo desorganizado mas fico legal o script parabens ;D

Compartilhar este post


Link para o post
Mock    32
Mock
gostei cara mas o que é matriz e tipo nem curti o jeito que aparece é tudo desorganizado mas fico legal o script parabens ;D

 

é desorganizado por que veio 1 bag dentro da outra bag.

se vier apenas uma bag ou sem nem uma bag fica igual global ^^

Compartilhar este post


Link para o post
rodrigodias12    0
rodrigodias12

Tem como mudar a cor da mensagem ? (Só para se tornar mais "Interativo" :o

 

Nao deu certo no TFS 0.3.4 :S

Editado por Majesty
posts unidos.

Compartilhar este post


Link para o post
Rasengam    0
Rasengam

mto bom mock... pena q o 8.5 implantou este sistema

mas para os 8.4- eh muito util

mais sistema do pharenight certo? assim como o das pots com cargas q vc postou neh?!

Vc eh phoda ;D

Compartilhar este post


Link para o post
carlinhogta    0
carlinhogta

nao funfo aki meu serve eh tfs 0.3.1 sempre q mato o monstro nao mostra a mensagem de loot e aparece um rato dentro de todos os monstros q mato

 

da esse erro

[03/09/2009 13:08:38] Lua Script Error: [CreatureScript Interface]

[03/09/2009 13:08:38] in a timer event called from:

[03/09/2009 13:08:38] data/creaturescripts/scripts/loot.lua:onKill

 

[03/09/2009 13:08:38] luaGetItemDescriptions(). Item not found

 

[03/09/2009 13:08:38] Lua Script Error: [CreatureScript Interface]

[03/09/2009 13:08:38] in a timer event called from:

[03/09/2009 13:08:38] data/creaturescripts/scripts/loot.lua:onKill

 

[03/09/2009 13:08:38] data/lib/function.lua:305: attempt to index a number value

[03/09/2009 13:08:38] stack traceback:

[03/09/2009 13:08:38] data/lib/function.lua:305: in function 'getItemName'

[03/09/2009 13:08:38] data/creaturescripts/scripts/loot.lua:18: in function 'getConteiner'

[03/09/2009 13:08:38] data/creaturescripts/scripts/loot.lua:50: in function <data/creaturescripts/scripts/loot.lua:39>

Compartilhar este post


Link para o post
Mock    32
Mock

@carlinho

problemas solucionados

Compartilhar este post


Link para o post
murilo3845    0
murilo3845

Muito bom...

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×