Ir para conteúdo
  • 0

Pegar nome do item na mao do boneco


f55felipe

Pergunta

Fala estou com uma duvida acho que simples so que nao estou conseguindo resolver, vamos la

 

estou usando essa linha de codigo

 

local name = getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid
        
        doPlayerSendCancel(cid, tostring(name))

 

So que eu queria pegar o nome do item, eu ja tentei itemname, item.name e etc, esse ai ta pegando o id dele.

 

consegui ja, podem deletar

 

local name = getItemAttribute(getPlayerSlotItem(cid, CONST_SLOT_LEFT).uid, "name")
Editado por f55felipe
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Você também pode usar a função getItemName(uid) ou getItemNameById(itemid) para pegar o nome do item, no seu caso vai usar a função getItemNameById(itemid):

local item_name = getItemNameById(getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid)

 

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

  • 0

Sim , mas aquela me atende bem tbm mas vlw porem , tipo estou com um problema aqui, 

estou usando essa funcao

string.match(name,'sword')

porem se ela nao acha oque eu quero ela retorna value nil e da erra na distro,

tem algum jeito que quando ela retornase nil value nao desse o erro?

mesmo com if varias condicoes ela retorna o mesmo erro acho que e a funcao mesmo que nao pode retorna valor nulo.

Link para o comentário
Compartilhar em outros sites

  • 0
19 horas atrás, f55felipe disse:

Sim , mas aquela me atende bem tbm mas vlw porem , tipo estou com um problema aqui, 

estou usando essa funcao

string.match(name,'sword')

porem se ela nao acha oque eu quero ela retorna value nil e da erra na distro,

tem algum jeito que quando ela retornase nil value nao desse o erro?

mesmo com if varias condicoes ela retorna o mesmo erro acho que e a funcao mesmo que nao pode retorna valor nulo.

Mas, o que exatamente você quer fazer com essa string do sword no string.match? Me explica sua ideia e tento te ajudar.

Link para o comentário
Compartilhar em outros sites

  • 0

Opa eu consigui, ti, essa parte eu resolvi com string.len() ai nao da mais erro quando do string.match().

 

 

 

4 horas atrás, Yan18 disse:

Mas, o que exatamente você quer fazer com essa string do sword no string.match? Me explica sua ideia e tento te ajudar.

Estou com um problema ve se voce consegue me ajudar, tenho essa script aqui que muda de voc conforme a arma nao mao so que se o player morrer com ela

ele volta para lv 1 e perde a voc os items tbm e bug mana e vida. queria que isso nao acontecesse.

 

local effect = 30 -- Efeito que vai usar
local delay = 5000 -- em ms
 
if not setItemName then
 
    function setItemName(uid,name)
                return doItemSetAttribute(uid,'name',name)
    end
end
function onLogin(cid)
 
SendEffect(cid)
 
return true
end
function SendEffect(cid)
    if not isCreature(cid) then return end
    if (isItemEquipped(cid, CONST_SLOT_LEFT, 10223== TRUE) then          
        
             local name = getItemAttribute(getPlayerSlotItem(cid, CONST_SLOT_LEFT).uid, "name"
             name = tostring(name)            
             local verify = string.len(name)
            if verify == 3 or verify == 34 or verify == 26 then
                doPlayerSendCancel(cid, "sua arma e lv 0")
            else
                local lvl = string.match(name,'%s%+(%d+)%s*')
                local lvnumero = tonumber(lvl) + 5
                doSendAnimatedText(getPlayerPosition(cid), "ARMA+".. tonumber(lvl) ..";)" , TEXTCOLOR_RED)
                doSendMagicEffect(getThingPos(cid), effect)
                doPlayerSetVocation(cid, lvnumero)
                doCreatureSetDropLoot(cid, false)
                doPlayerSetLossPercent(cid, PLAYERLOSS_ITEMS, 0)
                doPlayerSetLossPercent(cid, PLAYERLOSS_CONTAINERS, 0)                            
           end           
                                                             
           
    end
 
    if (isItemEquipped(cid, CONST_SLOT_LEFT, 10223== FALSE) then
        doPlayerSendCancel(cid, "o item não 10223 está em suas mãos.")        
        doPlayerSetVocation(cid, 2)
        registerCreatureEvent(cid, "BlessedPlayer")     
    end      
    addEvent(SendEffect, delay, cid)
 
end
Editado por f55felipe
Link para o comentário
Compartilhar em outros sites

  • 0
9 horas atrás, f55felipe disse:

Opa eu consigui, ti, essa parte eu resolvi com string.len() ai nao da mais erro quando do string.match().

 

 

 

Estou com um problema ve se voce consegue me ajudar, tenho essa script aqui que muda de voc conforme a arma nao mao so que se o player morrer com ela

ele volta para lv 1 e perde a voc os items tbm e bug mana e vida. queria que isso nao acontecesse.

 

local effect = 30 -- Efeito que vai usar
local delay = 5000 -- em ms
 
if not setItemName then
 
    function setItemName(uid,name)
                return doItemSetAttribute(uid,'name',name)
    end
end
function onLogin(cid)
 
SendEffect(cid)
 
return true
end
function SendEffect(cid)
    if not isCreature(cid) then return end
    if (isItemEquipped(cid, CONST_SLOT_LEFT, 10223== TRUE) then          
        
             local name = getItemAttribute(getPlayerSlotItem(cid, CONST_SLOT_LEFT).uid, "name"
             name = tostring(name)            
             local verify = string.len(name)
            if verify == 3 or verify == 34 or verify == 26 then
                doPlayerSendCancel(cid, "sua arma e lv 0")
            else
                local lvl = string.match(name,'%s%+(%d+)%s*')
                local lvnumero = tonumber(lvl) + 5
                doSendAnimatedText(getPlayerPosition(cid), "ARMA+".. tonumber(lvl) ..";)" , TEXTCOLOR_RED)
                doSendMagicEffect(getThingPos(cid), effect)
                doPlayerSetVocation(cid, lvnumero)
                doCreatureSetDropLoot(cid, false)
                doPlayerSetLossPercent(cid, PLAYERLOSS_ITEMS, 0)
                doPlayerSetLossPercent(cid, PLAYERLOSS_CONTAINERS, 0)                            
           end           
                                                             
           
    end
 
    if (isItemEquipped(cid, CONST_SLOT_LEFT, 10223== FALSE) then
        doPlayerSendCancel(cid, "o item não 10223 está em suas mãos.")        
        doPlayerSetVocation(cid, 2)
        registerCreatureEvent(cid, "BlessedPlayer")     
    end      
    addEvent(SendEffect, delay, cid)
 
end

Não acho viável fazer a verificação via Creaturescripts pelo evento onLogin, já que depende do item no inventário para mudar a vocation, o ideal seria fazer em Movements no evento onEquip (e onDeEquip caso tenha condição se ficar sem item). Sobre ele perder esses atributos, só acontece isso com esse seu script?

Link para o comentário
Compartilhar em outros sites

  • 0
1 hora atrás, Yan18 disse:

Não acho viável fazer a verificação via Creaturescripts pelo evento onLogin, já que depende do item no inventário para mudar a vocation, o ideal seria fazer em Movements no evento onEquip (e onDeEquip caso tenha condição se ficar sem item). Sobre ele perder esses atributos, só acontece isso com esse seu script?

Arrumei ja vlw pela tentativa de me ajudar , nao vou mecher ja tenho tdos os scripts feitos. 

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

  • 0
16 horas atrás, f55felipe disse:

Arrumei ja vlw pela tentativa de me ajudar , nao vou mecher ja tenho tdos os scripts feitos. 

Ai você que vê, se quiser posso te ajudar com esse script de mudar vocation de acordo com item equipado.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...