Ir para conteúdo
  • 0

Verificar se tem parceiro - Partner System do LuckOake


Mateusoo

Pergunta

Olá,
Boa noite a todos, estou usando o Partner System do LuckOake e senti falta de uma função, verificar se o Player X tem algum partner.
Eu tentei olhar onde ele armazena se o player tem parceiro, mas não consegui descobri, não entendi muito bem o código pra ser sincero...
Queria uma LUZ, lembrando que eu não quero saber a quantidade de parceiros que o Player X tem, isso eu sei, quero conseguir o NOME do parceiro do Player X, ou o UID, ou qualquer coisa que eu possa usar como identificação UNICA do parceiro do Player X.
O meu sistema eu coloquei para poder se ter no minimo 1 parceiro, então só preciso de 1 nome.
Eu olhei o código todo, e acredito que quando o Luck fez, ele não colocou para salvar o nome dos parceiros, apenas a quantidade, se eu estiver correto, favor me avise, que eu implementarei essa função de salvar o nome do parceiro, já que fica bem fácil, pois eu só utilizo um parceiro.
O link do sistema dele é esse aqui:


Boa noite e um grande abraço a todos :]

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

7 respostass a esta questão

Posts Recomendados

  • 0

Uai! Checa se o player tem a storage do sistema.

Boa noite,

Não não não não não não não. Eu necessito de uma função que me retorne o NOME do parceiro do Player X, eu não quero saber se o Player X ou Y tem parceiros, eu quero o nome dos parceiros. :]

Abraço.

Link para o comentário
Compartilhar em outros sites

  • 0

Pelo que parece, realmente não há nenhuma storage armazenando o nome do partner. Portanto, isso deve ser alterado por você (quando digo você, me refiro à quem vai alterar o código e tal) mesmo.

Você pode, por exemplo, fazer o seguinte:

Adicionar esta variável na lib do sistema:

partner_storage = 918371

E, abaixo de:

setPlayerStorageValue(cid, 9158, 1)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você agora é partner de "..invname..". Você será deslogado em 5 segundos.")
addEvent(doRemoveCreature, 5000, cid)
setPlayerStorageValue(cid, invstatus, -1)
Adicionar:
setPlayerStorageValue(cid, partner_storage, invname)
setPlayerStorageValue(getPlayerByName(invname), partner_storage, getCreatureName(cid))
E abaixo de:
doPlayerSetExperienceRate(cid, 1.0)
doPlayerPopupFYI(cid, "Seu bônus de partner acabou por você ter atingido o level "..maxlevel..".")
setPlayerStorageValue(cid, 9158, 3)
Adicionar:
setOfflinePlayerStorageValue(getPlayerStorageValue(cid, partner_storage), partner_storage, -1)
setPlayerStorageValue(cid, partner_storage, -1)
A key/storage 918371 armazena o nome do partner.
Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

 

Pelo que parece, realmente não há nenhuma storage armazenando o nome do partner. Portanto, isso deve ser alterado por você (quando digo você, me refiro à quem vai alterar o código e tal) mesmo.

Você pode, por exemplo, fazer o seguinte:

Adicionar esta variável na lib do sistema:

partner_storage = 918371

E, abaixo de:

setPlayerStorageValue(cid, 9158, 1)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você agora é partner de "..invname..". Você será deslogado em 5 segundos.")
addEvent(doRemoveCreature, 5000, cid)
setPlayerStorageValue(cid, invstatus, -1)
Adicionar:
setPlayerStorageValue(cid, partner_storage, invname)
setPlayerStorageValue(getPlayerByName(invname), partner_storage, getCreatureName(cid))
E abaixo de:
doPlayerSetExperienceRate(cid, 1.0)
doPlayerPopupFYI(cid, "Seu bônus de partner acabou por você ter atingido o level "..maxlevel..".")
setPlayerStorageValue(cid, 9158, 3)
Adicionar:
setOfflinePlayerStorageValue(getPlayerStorageValue(cid, partner_storage), partner_storage, -1)
setPlayerStorageValue(cid, partner_storage, -1)
A key/storage 918371 armazena o nome do partner.

 

Olá,

Ê Zipter, acho que não preciso te falar mais nada né? A messagem que te enviei já disse tudo, agora eu exalto aquelas palavras.

Vou arrumar tudo aqui e posto o resultado, seu REP fica pra amanha.

Grande abraço.

Link para o comentário
Compartilhar em outros sites

  • 0

Boa noite,

Não não não não não não não. Eu necessito de uma função que me retorne o NOME do parceiro do Player X, eu não quero saber se o Player X ou Y tem parceiros, eu quero o nome dos parceiros. :]

Abraço.

Do modo que foi feito nao da, ele nao salva quem esta na party, somente o numero

A unica hora que ele salva um creatureId em storage é quando está enviando convite

Linha 66:

setPlayerStorageValue(pid, 9155, getCreatureName(cid)

Um modo de salvar sem ocupar muito espaço seria por meio de string, e salvando o guid.

 

function removePartner(name)
    local listPartner = getOfflinePlayerStorageValue(name, listPartnerStorage)
    if listPartner == -1 then
        return false
    end
    
    local guid = getPlayerGUIDByName(name)
    listPartner = listPartner:gsub(string.format("%d|", guid), "")
    setOfflinePlayerStorageValue(name, listPartnerStorage, listPartner)
    return true
end

function addPartner(name)
    local listPartner = getOfflinePlayerStorageValue(name, listPartnerStorage)
    if listPartner == -1 then
        listPartner = ""
    end
    
    local guid = getPlayerGUIDByName(name)
    if not (listPartner:match(string.format("%d|", guid))) then
        listPartner = listPartner .. string.format("%d|", guid)
        setOfflinePlayerStorageValue(name, listPartnerStorage, listPartner)
        return true
    end
    
    return false
end

function getPartners(name)
    local players = {}
    
    local listPartner = getOfflinePlayerStorageValue(name, listPartnerStorage)
    if listPartner == -1 then
        return players
    end
    
    for guid in listPartner:gmatch("(%d+)|") do
        table.insert(players, guid)
    end
    
    return players
end

Dai tu implementa isso no code

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

  • 0

Do modo que foi feito nao da, ele nao salva quem esta na party, somente o numero

A unica hora que ele salva um creatureId em storage é quando está enviando convite

Linha 66:

setPlayerStorageValue(pid, 9155, getCreatureName(cid)

Um modo de salvar sem ocupar muito espaço seria por meio de string, e salvando o guid.

function removePartner(name)
    local listPartner = getOfflinePlayerStorageValue(name, listPartnerStorage)
    if listPartner == -1 then
        return false
    end
    
    local guid = getPlayerGUIDByName(name)
    listPartner = listPartner:gsub(string.format("%d|", guid), "")
    setOfflinePlayerStorageValue(name, listPartnerStorage, listPartner)
    return true
end

function addPartner(name)
    local listPartner = getOfflinePlayerStorageValue(name, listPartnerStorage)
    if listPartner == -1 then
        listPartner = ""
    end
    
    local guid = getPlayerGUIDByName(name)
    if not (listPartner:match(string.format("%d|", guid))) then
        listPartner = listPartner .. string.format("%d|", guid)
        setOfflinePlayerStorageValue(name, listPartnerStorage, listPartner)
        return true
    end
    
    return false
end

function getPartners(name)
    local players = {}
    
    local listPartner = getOfflinePlayerStorageValue(name, listPartnerStorage)
    if listPartner == -1 then
        return players
    end
    
    for guid in listPartner:gmatch("(%d+)|") do
        table.insert(players, guid)
    end
    
    return players
end

Dai tu implementa isso no code

Olá,

Muito bom também! Vou adicionar aqui no Mod do Luck, se precisar, já tenho feito!

Amanha lhe reputarei também, um grande abraço e obrigado por sempre está ajudando.

Boa noite :]

 

~Edit:

Testado e tudo funciona, obrigado Zipter e Dalvo.

Pode fechar e mover. Abraços.

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

×
×
  • Criar Novo...