Uai! Checa se o player tem a storage do sistema.
Verificar se tem parceiro - Partner System do LuckOake
Por Mateusoo, 16 de abr. de 2014 em Scripts
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.
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)
setPlayerStorageValue(cid, partner_storage, invname) setPlayerStorageValue(getPlayerByName(invname), partner_storage, getCreatureName(cid))
doPlayerSetExperienceRate(cid, 1.0) doPlayerPopupFYI(cid, "Seu bônus de partner acabou por você ter atingido o level "..maxlevel..".") setPlayerStorageValue(cid, 9158, 3)
setOfflinePlayerStorageValue(getPlayerStorageValue(cid, partner_storage), partner_storage, -1) setPlayerStorageValue(cid, partner_storage, -1)
Editado Abril 16 por zipter98
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 = 918371E, 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.
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 Abril 17 por dalvorsn
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 endDai 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 Abril 17 por Mateusoo






info
Grupo: Campones
Registrado: 20/03/14
Posts: 78
Reputação: +15
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:
http://www.xtibia.com/forum/topic/194663-partner-system-20-atualizado/
Boa noite e um grande abraço a todos :]
Editado Abril 16 por Mateusoo