Postado Março 19, 2019 6 anos @gabrielzika Desculpa está revivendo o tópico após tanto tempo, mas estou com um problema parecido com esse, você poderia me dar uma força cara? No meu server o wand tem sistema de refinamento, até +6 cada refinamento feito na wand é trocado o ID do wand mas sempre continuando com o mesmo wand apenas trocando o ID. Como wand tem ataque fixo definido nos weapons então a solução para refinamento nele é somente assim trocando o ID. Tem o comando para trocar o elemento do wand também, eu queria saber se tu pode me ajudar a fazer esse comando ser válido para os 6 ID do wand. Pois cada vez que o player refinar o wand ele vai trocar o ID e preciso que o comando para troca de elemento continue sendo válido independe de qual ID esteja, Eu tentei fazer aqui mas não ficou 100%, tem hora que ele troca o elemento de um ID mas do outro não vai, ai volta a troca o elemento do ID que não estava indo, ta bem bagunçado, se puder me ajudar fico grato. Desde já, obrigado!
Postado Março 22, 2019 6 anos @Altairjr me explica direito que te ajudo sim bro Editado Março 22, 2019 6 anos por gabrielzika (veja o histórico de edições) MEU SERVER: http://otpokemonxy.net/ Nosso → Grupo Oficial OtPokemon XY 24 Horas Nosso → Site Oficial OtPokemon XY 24 Horas Nossa → Pagina Oficial OtPokemon XY 24 Horas
Postado Março 22, 2019 6 anos @gabrielzika Opa cara, primeiramente muito obrigado por responder e estar disposto a ajudar. Bom, vamos lá! Eu tenho um server no qual tem pedra de refinamento, elas servem para dar upgrade nos items. Tanto sword, club, axe, bow como wands. Por exemplo, se eu tenho uma sword ataque 130 e uso uma pedra de refinamento nela, ela fica com +1 ficando então 131atk e assim por diante até o +6 que é o limite de todos. No caso do Wand funciona um pouco diferente, quando eu uso a pedra de refinamento nele para fazer o upgrade, diferente da sword ou qualquer outro item que apenas acrescenta +1 no ataque ou defesa o Wand não faz assim. Nesse caso como o Wand já tem um ataque fixo definido la nos weapons então, não tem como fazer o upgrade e aumentar o ataque dele como o exemplo da sword. Nesse caso do wand, funciona da seguinte maneira, tem 6 ID diferentes para o mesmo wand, então cada vez que é usada a pedra de refinamento no Wand, ele troca somente o ID mas continua o mesmo wand, entendeu? Na pasta weapons tem cadastrado já 6 tipos de ID para o mesmo item, mudando apenas o ID deles e em cada um está configurado um ataque fixado já. Então, cada vez que a pedra for usada no wand para fazer o upgrade, ele vai trocando o ID conforme os que estão configurados la no weapons, indo assim até chegar no +6. Ai que entra minha dúvida, no server tem o comando para trocar o elemento do wand também, no caso o comando é !wand elemento dejado (exemplo: !wand holy) mas no script da troca de wand está configurada apenas 1 ID de wand, então dos 6 ID diferentes que tem, apenas 1 deles irá funcionar o comando para a troca de wand, entende? Vamos supor que esteja configurado no script da troca de elemento o ID do wand +2, então apenas quem fazer upgrade pro +2 consegue executar o comando da troca de elemento, wand sem upgrade,+1,+3,+4,+5,+6 todos esses não vão conseguir, entendeu? Eu queria que independente do upgrade que estiver ou sem nenhum, possa ser usado o comando para efetuar a troca do elemento. Vou deixar aqui o script da troca de elemento e todos os ID do Wand. ID dos Wand: 12629 12661 12662 12663 12664 12665 Script da Troca de elemento local combat_values = { ["none"] = -1, ["ice"] = 1, ["fire"] = 2, ["earth"] = 3, ["energy"] = 4, ["holy"] = 5, ["death"] = 6, } local config = { storage = 101010, time_storage = 101011, price = 1000000, delay = 0, msg = { help = "Use o comando exemplo: !wand holy Efeitos disponíveis: ice, fire, earth, energy, holy, death, e none para desabilitar. A troca para outro elemento custa 1kk.", invalid = "Por favor, digite um tipo valido.", changed = "O elemento da wand foi trocado para %s.", nomoney = "Você não possui dinheiro.", delayed = "Você precisa esperar para trocar o efeito.", } } -- /////////////////////Requerimentos///////////////////-- local req_itemid = 12629 -- ID do item requerido local req_text = "You cannot use this command." -- Mensagem caso nao possua o item --/////////////////////////////////////////////////////-- function onSay(cid, words, param) local param = param:lower() local value = combat_values[param] if getPlayerItemCount(cid, req_itemid) > 0 then if param == "help" or param == "" then doShowTextDialog(cid, 12629, string.format(config.msg.help, config.price)) return true end if not value then doPlayerSendCancel(cid, config.msg.invalid) return true end if getPlayerMoney(cid) < config.price then doPlayerSendCancel(cid, config.msg.nomoney) return true end if getPlayerMoney(cid) < config.price then doPlayerSendCancel(cid, config.msg.nomoney) return true end if getCreatureStorage(cid, config.time_storage) + config.delay > os.time() then doPlayerSendCancel(cid, config.msg.delayed) return true end doCreatureSetStorage(cid, config.storage, value) doCreatureSetStorage(cid, config.time_storage, os.time()) doPlayerRemoveMoney(cid, config.price) doPlayerSendCancel(cid, string.format(config.msg.changed, param)) else doPlayerSendCancel(cid,req_text) end return true end Eu tentei por conta própria dar um jeito, até que foi 50% mas como não manjo de script vim atrás de ajuda. O que eu fiz foi somente adicionar mais uma linha igual. a baixo do "local req_itemid = 12629" e troquei o ID para de outro wand e depois adicionei outra igual, a baixo da "doShowTextDialog(cid, 12629, string.format(config.msg.help, config.price))" e apenas deixei igual o ID da nova linha que eu tinha adicionado. Eu fiz isso para 3 ID diferentes de wand, e como eu disse funcionou 50%, quando abri o server para testar, apenas 2 estavam pegando o 3º não, mas depois o 2º também parou de pegar e ficou apenas o 1º pegando e não deu nenhum erro na distro, nem nada. Enfim, espero que você possa ter entendido e desculpe por deixar tão grande, quis deixar o mais completo possível para você. Desde já muito obrigado!
Postado Março 22, 2019 6 anos @Altairjr veja se funciona ai bro (não testei). Qualquer erro me manda aqui :d local combat_values = { ["none"] = -1, ["ice"] = 1, ["fire"] = 2, ["earth"] = 3, ["energy"] = 4, ["holy"] = 5, ["death"] = 6, } local config = { storage = 101010, time_storage = 101011, price = 1000000, delay = 0, msg = { help = "Use o comando exemplo: !wand holy Efeitos disponíveis: ice, fire, earth, energy, holy, death, e none para desabilitar. A troca para outro elemento custa 1kk.", invalid = "Por favor, digite um tipo valido.", changed = "O elemento da wand foi trocado para %s.", nomoney = "Você não possui dinheiro.", delayed = "Você precisa esperar para trocar o efeito.", } } -- /////////////////////Requerimentos///////////////////-- local req_text = "You cannot use this command." -- Mensagem caso nao possua o item --/////////////////////////////////////////////////////-- function onSay(cid, words, param) local param = param:lower() local value = combat_values[param] local wand_left = getPlayerSlotItem(cid, CONST_SLOT_LEFT) local wand_right = getPlayerSlotItem(cid, CONST_SLOT_RIGHT) if wand_left.uid > 0 or wand_right.uid > 0 then if wand_left.uid > 0 and (param == "help" or param == "") then doShowTextDialog(cid, wand_left.itemid, string.format(config.msg.help, config.price)) return true elseif wand_right.uid > 0 and (param == "help" or param == "") then doShowTextDialog(cid, wand_right.itemid, string.format(config.msg.help, config.price)) return true end if not value then doPlayerSendCancel(cid, config.msg.invalid) return true end if getPlayerMoney(cid) < config.price then doPlayerSendCancel(cid, config.msg.nomoney) return true end if getPlayerMoney(cid) < config.price then doPlayerSendCancel(cid, config.msg.nomoney) return true end if getCreatureStorage(cid, config.time_storage) + config.delay > os.time() then doPlayerSendCancel(cid, config.msg.delayed) return true end doCreatureSetStorage(cid, config.storage, value) doCreatureSetStorage(cid, config.time_storage, os.time()) doPlayerRemoveMoney(cid, config.price) doPlayerSendCancel(cid, string.format(config.msg.changed, param)) else doPlayerSendCancel(cid, req_text) end return true end Editado Março 22, 2019 6 anos por gabrielzika (veja o histórico de edições) MEU SERVER: http://otpokemonxy.net/ Nosso → Grupo Oficial OtPokemon XY 24 Horas Nosso → Site Oficial OtPokemon XY 24 Horas Nossa → Pagina Oficial OtPokemon XY 24 Horas
Postado Março 23, 2019 6 anos @gabrielzika Cara, deu super certo muitíssimo obrigado. Uma ultima questão, caso de trabalho ou não de certo não tem problema, não vai interferir em nada. Os elementos estão sendo trocados nos wand, apenas no primeiro wand que não foi. É o wand que é comprado pelo site, ele vem sem nenhum upgrade, ele não trocou o elemento, apenas esta atacando com o holy que é o padrão que ele vem, a partir do upgrade +1 até +6 da pra trocar o elemento tranquilamente. Eu não sei se tem algo a ver, mas esse wand que é comprado pelo site que vem sem upgrade o ID dele é o mesmo do wand +6, ambos tem o mesmo ID. No weapons.xml eles estão assim: Wand do site sem UPGRADE \/ Citar <wand id="12655" level="8" mana="10" min="700" max="850" type="holy" event="function" value="default"> Wand com upgrade +6 \/ Citar <wand id="12665" range="8" lvl="8" mana="10" enabled="1" exhaustion="0" script="donatestaff.lua"> A partir do +1 até o +6 eles tem o script e o ataque deles são declarado lá, apenas o Wand do site sem upgrade que é declaro apenas no weapons sem nenhum script. Enfim, se não tiver como arrumar isso não tem problema, só de já ter pego a partir do +1 já está excelente. Uma segunda dúvida e sobre cobrar o preço quando usado o comando da troca e quando digita !wand help... Queria saber se tem como deixar para fazer a troca e digitar wand help apenas se estiver com os wands corretos, pois do jeito que ta qualquer um pode digitar !wand help e ficar trocando os elementos. Enfim, isso também não interfere em nada, era apenas para fazer uma restrição mesmo para quem possuir o wand seja ele sem upgrade ou qualquer upgrade até +6. Mais uma vez, muito obrigado amigo. REP+
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.