Ir para conteúdo
  • Cadastre-se

(Resolvido)OTX 3.7 Randomized loot


Ir para solução Resolvido por eSvira,

Posts Recomendados

  • Solução

.Server: OTX 3.7

 

El bug ocurre al crear un LOOT, afecta levemente el funcionamiento aunque se mejoran la mayoría de los ítems. 

 

El error en la consola se ve así 

Citar

Lua Script Error: [Main Interface]
in a timer event called from:
(Unknown scriptfile)
data/creaturescripts/scripts/onkill_slot.lua:23: attempt to index local 'i_Ex' (a nil value)
stack traceback:
        [C]: in function '__index'
        data/creaturescripts/scripts/onkill_slot.lua:23: in function <data/creaturescripts/scripts/onkill_slot.lua:14>
 

 

Así es como está escrito el guión en sí.

function getper()
   local n = 1
   for i=1,10 do
     n = n+math.random(0,10)
     if n < 8*i then
       break
     end
   end
   return n
end
   
local lootable_slots = {'hp','mp','ml','melee','shield','dist'}

function assign_loot_Slot(pos)
   local c = Tile(pos):getTopDownItem()
   if c ~= nil then
     if c:isContainer() then
       local h = c:getItemHoldingCount()
       if h > 0 then
         for i = 1, h do
           local i_Ex = c:getItem(i - 1)
           local itemEx = {
             itemid = i_Ex:getId(),
             uid = i_Ex:getUniqueId()
           }
           
           if (isArmor(itemEx.uid) or isWeapon(itemEx.uid) or isShield(itemEx.uid)) and not isItemStackable(itemEx.uid) then
             if math.random(1,5) == 5 then
               if math.random(1, 100) <= 15 then
				   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Great loot.")
                 nam = Item(itemEx.uid):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION)
                 nam = nam..' ['..lootable_slots[math.random(1, #lootable_slots)]..'.+'..getper()..'%]'
                 doSetItemSpecialDescription(itemEx.uid, nam)
                 if math.random(1, 100) <= 10 then
				   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Amazing loot.")
                   nam = nam..' ['..lootable_slots[math.random(1, #lootable_slots)]..'.+'..getper()..'%]'
                   doSetItemSpecialDescription(itemEx.uid, nam)
                   if math.random(1, 100) <= 5 then
				   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Good loot.")
                     nam = nam..' ['..lootable_slots[math.random(1, #lootable_slots)]..'.+'..getper()..'%]'
                     doSetItemSpecialDescription(itemEx.uid, nam)
                   end
                 end
               end
             end
           end
         end
         return true
       end
     end
   end
end

function onKill(cid, target, lastHit)
   if (not isSummon(target)) then
     addEvent(assign_loot_Slot, 2, getThingPos(target))
   end
return true
end


¡Muchas gracias por toda su ayuda y sugerencias!

 

Solution!
In line 22 add:
 

Citar

if i_Ex == nil then
       break
     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