edukf 2 Postado Maio 1, 2016 Share Postado Maio 1, 2016 Bom dia, gostaria de um exp ring por %, por exemplo 50% Link para o comentário Compartilhar em outros sites More sharing options...
0 Danihcv 335 Postado Maio 5, 2016 Share Postado Maio 5, 2016 @edukf, pra receber os 50% a mais, vc tem que deixar o extraRate = 1.5 Quanto a esse erro aí de logar e deslogar (?) explica mais um pouco sobre ele. Tipo, em q momento ele acontece? Link para o comentário Compartilhar em outros sites More sharing options...
0 edukf 2 Postado Maio 5, 2016 Autor Share Postado Maio 5, 2016 @danihcv Testa o anel ai, por exemplo antes do anel eu ganho 1800 de exp, depois que eu coloco o anel ta ganhando 2700000! quando tira a exp nao volta tb, ta dando bem mais que 50%, ta tudo bugado, faz o test Link para o comentário Compartilhar em outros sites More sharing options...
0 Danihcv 335 Postado Maio 6, 2016 Share Postado Maio 6, 2016 @edukf, eu fiz o teste, bro. kkkk Tá tudo certo aqui... Muito estranho isso... Porém, não sei o q pode estar ocasionando isso... edit: Eu acredito que seja algum sistema, ou algum script que esteja bugando o seu ot e algo no script do ring seja apenas um gatilho para isso... Porém, ñ tenho ctz... Link para o comentário Compartilhar em outros sites More sharing options...
0 TerSaid 0 Postado Maio 6, 2016 Share Postado Maio 6, 2016 (editado) local idAnelDesequipado = ID-DO-ANEL-DESEQUIPADO local idAnelEquipado = ID-DO-ANEL-EQUIPADO local extraRate = 15.0/100.0 --- 15% function onEquip(cid, item, slot) doTransformItem(item.uid, idAnelEquipado) doDecayItem(item.uid) doPlayerSetRate(cid, SKILL__LEVEL, extraRate*getExperienceStage(getPlayerLevel(cid))) return true end function onDeEquip(cid, item, slot) if item.uid ~= 0 then doTransformItem(item.uid, idAnelDesequipado) end level = tonumber(getPlayerLevel(cid)) doPlayerSetRate(cid, SKILL__LEVEL, getExperienceStage(level)) return true end Se você quer extrarate por % nao se esqueça da divisão. a o cara estava ganhando um xp absurdo pq está 105% de porcentagem extra de xp. 1.5 = 105% = 105/100 15% = 0.15 = 15/100 E para a xp dele voltar ao normal depois que remover o anel, acho que uma storage resolveria isso. Editado Maio 6, 2016 por TerSaid Link para o comentário Compartilhar em outros sites More sharing options...
0 Caronte 444 Postado Maio 6, 2016 Share Postado Maio 6, 2016 Tanta tirar essa parada de Transformitem, pode estar bugando o onDeequip, caso o transform não ocorra direito pode bugar o script. Eu retiraria o transform e deixaria só com um único id, isso pode evitar 10000 bugs decorrentes a isso.. Link para o comentário Compartilhar em outros sites More sharing options...
0 Danihcv 335 Postado Maio 6, 2016 Share Postado Maio 6, 2016 18 horas atrás, TerSaid disse: 1.5 = 105% = 105/100 Que matemática é essa? sauhsahusa 0.5 = 50% 1.0 = 100% 1.5 = 150% 1.15 = 115% 10 horas atrás, Caronte disse: Tanta tirar essa parada de Transformitem, pode estar bugando o onDeequip, caso o transform não ocorra direito pode bugar o script. Eu retiraria o transform e deixaria só com um único id, isso pode evitar 10000 bugs decorrentes a isso.. Eu tb ñ qria usar o TransformItem, mas sem ele, o anel ñ sofre o transformOnEquip (e nem o transformOnDeEquip) configurado no items.xml.... Link para o comentário Compartilhar em outros sites More sharing options...
0 Poccnn 385 Postado Maio 6, 2016 Share Postado Maio 6, 2016 Você usa Tfs 0.4 sem edição ou é uma variante dele? Link para o comentário Compartilhar em outros sites More sharing options...
0 Poccnn 385 Postado Maio 6, 2016 Share Postado Maio 6, 2016 6 horas atrás, danihcv disse: Que matemática é essa? sauhsahusa 0.5 = 50% 1.0 = 100% 1.5 = 150% 1.15 = 115% Eu tb ñ qria usar o TransformItem, mas sem ele, o anel ñ sofre o transformOnEquip (e nem o transformOnDeEquip) configurado no items.xml.... À matemática dele está errada, mas entendi o que ele quiz passar. Se você pegar a rate e dividila por 100 e depois multiplica-la pela valor da porcentagem, ela vai retorna o valor da porcentagem adicional para ser somada a rate. Possivelmente o distro dele não muda a rate da forma clássica (1.5,1.7 etc.) Sendo portanto necessário declarar o valor da xp ao player. Link para o comentário Compartilhar em outros sites More sharing options...
0 milbradt 19 Postado Maio 6, 2016 Share Postado Maio 6, 2016 (editado) movements.xml: <movevent type="Equip" itemid="ID DO ITEM" slot="ring" event="script" value="nameScript.lua"/><movevent type="DeEquip" itemid="ID DO ITEM" slot="ring" event="script" value="nameScript.lua"/> nameScript.lua: local idAnelDesequipado = ID DO ITEMlocal idAnelEquipado = ID DO ITEMlocal extraRate = 1.5function onEquip(cid, item, slot) local value = getItemAttribute(item.uid, "duration") doTransformItem(item.uid, idAnelEquipado) if value ~= nil then doItemSetAttribute(item.uid, "duration", value) end doDecayItem(item.uid) doPlayerSetExperienceRate(cid, extraRate) return trueendfunction onDeEquip(cid, item, slot) if item.uid ~= 0 then local value = getItemAttribute(item.uid, "duration") doTransformItem(item.uid, idAnelDesequipado) if value ~= nil then doItemSetAttribute(item.uid, "duration", value) end end doPlayerSetExperienceRate(cid, 1.0) return trueend Editado Maio 6, 2016 por milbradt Link para o comentário Compartilhar em outros sites More sharing options...
0 Danihcv 335 Postado Maio 7, 2016 Share Postado Maio 7, 2016 2 horas atrás, milbradt disse: doPlayerSetExperienceRate(cid, 1.0) Acho que isso não funcionará caso ele use stages... :s 2 horas atrás, milbradt disse: <movevent type="Equip" itemid="ID DO ITEM" slot="ring" event="script" value="nameScript.lua"/> <movevent type="DeEquip" itemid="ID DO ITEM" slot="ring" event="script" value="nameScript.lua"/> É preciso fazer movements para 2 itens com id's diferentes, pois o membro quer que o anel se transforme em outro (id) quando for equipado e volte ao normal ao ser desequipado. 3 horas atrás, Poccnn disse: Se você pegar a rate e dividila por 100 e depois multiplica-la pela valor da porcentagem, ela vai retorna o valor da porcentagem adicional para ser somada a rate. Se eu entendi direito o que vc quis explicar, o meu script já faz isso, observe: doPlayerSetRate(cid, SKILL__LEVEL, extraRate*getExperienceStage(getPlayerLevel(cid))) *getExperienceStage retornará o valor do rate normal. Ao multiplicar este valor por 1.5, o resultado será a rate normal + metade da rate normal. Link para o comentário Compartilhar em outros sites More sharing options...
0 Poccnn 385 Postado Maio 7, 2016 Share Postado Maio 7, 2016 10 horas atrás, danihcv disse: Acho que isso não funcionará caso ele use stages... :s É preciso fazer movements para 2 itens com id's diferentes, pois o membro quer que o anel se transforme em outro (id) quando for equipado e volte ao normal ao ser desequipado. Se eu entendi direito o que vc quis explicar, o meu script já faz isso, observe: doPlayerSetRate(cid, SKILL__LEVEL, extraRate*getExperienceStage(getPlayerLevel(cid))) *getExperienceStage retornará o valor do rate normal. Ao multiplicar este valor por 1.5, o resultado será a rate normal + metade da rate normal. Não tinha prestado atenção a forma como tu fizeste. Está certo. Na questão do xml, o que o milbradt postou é certo pois, se você prestar atenção vera que: O item desequipado ao ser equipado muda de id (equip). Como ele já mudou de id, ele não será desequipado - pois já não é o mesmo item, foi transformado em outro item - quem será desequipado é o item que está equipado - que no caso é o item transformado. Agora voltando ao assunto do tópico, o autor do mesmo tem que fazer o teste da função rate para saber se ela existe e está funcionando normalmente ou como ela funciona (parâmetros). Link para o comentário Compartilhar em outros sites More sharing options...
0 milbradt 19 Postado Maio 7, 2016 Share Postado Maio 7, 2016 (editado) 14 horas atrás, danihcv disse: Acho que isso não funcionará caso ele use stages... :s É preciso fazer movements para 2 itens com id's diferentes, pois o membro quer que o anel se transforme em outro (id) quando for equipado e volte ao normal ao ser desequipado. Se eu entendi direito o que vc quis explicar, o meu script já faz isso, observe: doPlayerSetRate(cid, SKILL__LEVEL, extraRate*getExperienceStage(getPlayerLevel(cid))) *getExperienceStage retornará o valor do rate normal. Ao multiplicar este valor por 1.5, o resultado será a rate normal + metade da rate normal. A função doPlayerSetExperienceRate(cid, value) fica na lib em 050-function.lua. Ela retorna a função doPlayerSetRate(cid, SKILL__LEVEL, value) Ou seja, se preferir pode ser usado doPlayerSetRate(cid, SKILL__LEVEL, 1.5), mas como é do meu costume usar "doPlayerSetExperienceRate" eu coloquei ela. Essa função(doPlayerSetRate) já checa o rate atual do jogador, não precisando fazer qualquer outra checagem para definir o valor a ser dado, eu testei na prática também, usando exp por stages e fixa. Sobre o movements.xml não é necessário colocar mais do que coloquei, tendo em vista que no próprio script ele transforma o itemId para o outro. 3 horas atrás, Poccnn disse: Não tinha prestado atenção a forma como tu fizeste. Está certo. Na questão do xml, o que o milbradt postou é certo pois, se você prestar atenção vera que: O item desequipado ao ser equipado muda de id (equip). Como ele já mudou de id, ele não será desequipado - pois já não é o mesmo item, foi transformado em outro item - quem será desequipado é o item que está equipado - que no caso é o item transformado. Agora voltando ao assunto do tópico, o autor do mesmo tem que fazer o teste da função rate para saber se ela existe e está funcionando normalmente ou como ela funciona (parâmetros). A função existe tendo em vista que o autor do topico disse que a exp aumentou, porem como o danihcv usou, ele ta multiplicando a atual exp rate pelo stage atual. Que é 1.5(que é o extraExp declarado) * Numero checado do stage(podendo ser 50,100,300,1000, depende da stage atual). Por isso que a exp esta aumentando drasticamente, o que o danihcv fez no seu calculo foi dar 50% a mais de exp bonus em cima do stage, ficando uma extraExp bem "valorizada". --Topico-- Enfim, eu testei em uma rev3777, funcionou perfeitamente o script podendo usar com anel de duração ou sem duração. Editado Maio 7, 2016 por milbradt Link para o comentário Compartilhar em outros sites More sharing options...
0 edukf 2 Postado Maio 16, 2016 Autor Share Postado Maio 16, 2016 Obrigado a todos!@milbradt @Poccnn @Danihcv Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
edukf 2
Bom dia, gostaria de um exp ring por %, por exemplo 50%
Link para o comentário
Compartilhar em outros sites
28 respostass a esta questão
Posts Recomendados