Skype: gabriel.sales.01
- Fórum
- OTServ
- Recursos
- Scripting
- Mods, funções e outros
- [PDA] New Ditto System[PXG]
[PDA] New Ditto System[PXG]
Por gabrielbsales, 27 de mar. de 2014 em Mods, funções e outros
info
Grupo: Visconde
Registrado: 26/01/13
Posts: 266
Reputação: +174

Editado Abril 3 por gabrielbsales
aceita lá
info
Grupo: Campones
Registrado: 26/03/12
Posts: 43
Reputação: +11

@gabrielbsales
pegou de boa o system, mto bom...
só que se o server tem o shiny ditto... nele não funciona.
como que eu faço para habilitar o system no shiny ditto?
info
Grupo: Visconde
Registrado: 26/01/13
Posts: 266
Reputação: +174

@gabrielbsales
pegou de boa o system, mto bom...
só que se o server tem o shiny ditto... nele não funciona.
como que eu faço para habilitar o system no shiny ditto?
Tem que fazer poucas modificações, se quiser posso fazer, me add skype: gabriel.sales.01
info
Grupo: Visconde
Registrado: 26/08/12
Posts: 318
Reputação: +118
Gênero: Masculino

ae, gabrielbsales, tava vendo ake, pq c n coloca pra ele volta pa ball e sair automaticamente?
tava tentando fazer ele sair so q n deu certo, so deu certo puxar ele =/
doReturnPokemon(cid, mysum, thisball, 184)
isso ae foi pra ele voltar, agr so criar um addEvent e colocar pra sair, q eu n consegui fazer =/
Editado Abril 7 por Noninhouh
Isso ocorreu quando você tentou fazer o que?
quando eu tentei da order no ditto pra virar shiny, eu fiz aquilo ai eu perdi o fly e o ride do server?
Seu server está muito modificado? Testei no Pda By Slicer 1.9.1 e funcionou sem bugs.
tipo os erros paro de dar mais eu coloquei a tag do !revert não deu tem um local exato pra por se tiver me fala ai, tem como aumenta o tempo dele fica transformado? rep ai man ta ficando daora se der pra ajudar agradeço mais ainda.
deu isso também quando eu logo.
Isso e do seu OTC, tem nada a ver com o script descrito no topico.
Mais te ajudando com seu problema:
talkactions.xml:
<talkaction value="otcCliente.lua" event="script" words="#getSto#;#getGym#;@pokedex;@buy;@tvCam;@autoLoot"/>
Editado Abril 7 por Techrlz
info
Grupo: Visconde
Registrado: 26/01/13
Posts: 266
Reputação: +174

Obrigado ^^
info
Grupo: Marquês
Registrado: 16/06/07
Posts: 1.2k
Reputação: +377
Gênero: Masculino
Char no Tibia: Nenhum

Por favor, melhore a organização do seu tópico para que ele seja aprovado. Este tópico possui dicas sobre como fazer isso.
info
Grupo: Conde
Registrado: 07/04/15
Posts: 962
Reputação: +258
Gênero: Masculino

Tópico movido, para a área de scripting.
Cara, nao sei se sabe mas tem um bug nessa script, transforma em qualquer pokemon e va no npc de venda de pokemon. voce vai vender o (Ditto) pelo pokemon transformado.
info
Grupo: Visconde
Registrado: 26/01/13
Posts: 266
Reputação: +174

Cara, nao sei se sabe mas tem um bug nessa script, transforma em qualquer pokemon e va no npc de venda de pokemon. voce vai vender o (Ditto) pelo pokemon transformado.
Sim, estou ciente desse "bug", mas assim como tudo que posto aqui, deixo algo pra vocês resolverem.
Já foi postado boa parte do "sistema".
Bom, esse ditto system:
-Copia o pokemon e o balanceia sem necessidade de puxa-lo.
-Copias Habilidades...
Primeiramente, vá no some functions.lua - Localizado na pasta lib.
E adicione isto no final(depois do ultimo end):
function doDittoTransform(ditto, pokemon) local sid = getCreatureMaster(ditto) local eff = 184 local name = pokemon local pos = getCreaturePosition(ditto) local outfit = getPokemonXMLOutfit(pokemon) doSendMagicEffect(getThingPosWithDebug(ditto), eff) doSetCreatureOutfit(ditto, {lookType = outfit}, -1) doItemSetAttribute(getPlayerSlotItem(sid, 8).uid, "poke", name) doItemSetAttribute(getPlayerSlotItem(sid, 8).uid, "ehditto", 1) doPlayerSay(sid, ""..getPokeName(ditto)..", transform into "..getArticle(pokemon).." "..pokemon.."!", 1) doCreatureSay(ditto, "TRANSFORM!", TALKTYPE_MONSTER) doRemoveCreature(ditto) doSummonMonster(sid, name) doTeleportThing(getCreatureSummons(sid)[1], pos, false) adjustStatus(getCreatureSummons(sid)[1], getPlayerSlotItem(sid, 8).uid, true, false) doUpdateMoves(sid) return true end function doDittoRevert(m) local sid = m local eff = 184 local name = "Ditto" local outfit = getPokemonXMLOutfit(name) if #getCreatureSummons(sid) <= 0 then doItemSetAttribute(getPlayerSlotItem(sid, 8).uid, "poke", name) doItemSetAttribute(getPlayerSlotItem(sid, 8).uid, "ehditto", 1) elseif #getCreatureSummons(sid) == 1 then local ditto = getCreatureSummons(sid)[1] local pos = getCreaturePosition(ditto) if getCreatureName(ditto) == "Ditto" then return true end doSendMagicEffect(getThingPosWithDebug(ditto), eff) doSetCreatureOutfit(ditto, {lookType = outfit}, -1) doItemSetAttribute(getPlayerSlotItem(sid, 8).uid, "poke", name) doItemSetAttribute(getPlayerSlotItem(sid, 8).uid, "ehditto", 1) doPlayerSay(sid, ""..getPokeName(ditto)..", untransfrom!", 1) doCreatureSay(ditto, "TRANSFORM!", TALKTYPE_MONSTER) doRemoveCreature(ditto) doSummonMonster(sid, name) doTeleportThing(getCreatureSummons(sid)[1], pos, false) adjustStatus(getCreatureSummons(sid)[1], getPlayerSlotItem(sid, 8).uid, true, false) doUpdateMoves(sid) end end
Bom, essas são as funções de transformar e destransformar.
Agora, vá no order.lua - Localizado no actions/scripts.
E procure por:
-------- TRANSFORM ----------Apague tudo aqui dentro, até o:
-------- LIGHT --------------Ali dentro, bote:
if (getCreatureName(mysum) == "Ditto") and getItemAttribute(thisball.uid, "ehditto") ~= -1 and isMonster(item2.uid) and pokes[getCreatureName(item2.uid)] then local m = getCreatureMaster(cid) local p = getPlayerSlotItem(m, 8) local proibidossempre = {"Mew_", "Mewtwo_", "Unown Legion", "Ho-oh", "Moltres", "Celebi", "Moltres", "Zapdos", "Suicune", "Entei", "Raikou", "Articuno", "Lugia", "Mewtwo", "Mew", "Shiny Rhydon", "Shiny Ariados", "Shiny Magneton", "Shiny Ninetales", "Shiny Politoed", "Shiny Stantler", "Shiny Dodrio", "Shiny Espeon", "Shiny Umbreon"} -- Nunca permitir local proibidosboost = {"Shiny Dragonite", "Shiny Snorlax", "Shiny Gyarados", "Shiny Scyther"} -- Permitir se ditto for +50 local outpokes = {"Magnet Electabuzz","Elder Tyranitar","Hard Golem","Brute Rhydon","Iron Steelix","Brave Charizard","Elder Charizard","Lava Magmar","Enraged Typhlosion","Capoeira Hitmontop","Boxer Hitmonchan","Taekwondo Hitmonlee","Dragon Machamp","Undefeated Machamp","Wardog Arcanine","Elder Arcanine","Furious Mantine","War Gyarados","Brave Blastoise","Brave Venusaur","Ancient Meganium","Tribal Feraligatr","Elder Dragonite","Elder Pinsir","Elder Raichu","Charged Raichu","Tribal Xatu","Enigmatic Girafarig","Ancient Alakazam","Master Alakazam","Furious Ampharos","Elder Electabuzz","Furious Scyther","Tribal Scyther","War Heracross","Metal Scizor","Brave Nidoking","Brave Nidoqueen","Elder Muk","Dark Crobat","Trickmaster Gengar" ,"Elder Gengar" ,"Banshee Misdreavus","Hungry Snorlax","Brute Ursaring","War Granbull","Singer Wigglytuff","Aviator Pidgeot","Metal Skarmory","Brave Noctowl","Elder Pidgeot","Ancient Dragonite","Milch-Miltank","Ancient Kingdra","Psy Jynx","Elder Venusaur","Elder Jynx","Evil Cloyster","Freezing Dewgong","Elder Tangela","Furious Sandslash","Roll Donphan","Bone Marowak","Octopus Octillery","Moon Clefable","Heavy Piloswine","Elder Blastoise","Elder Tentacruel","Elder Marowak","Master Stantler"} local boost = getItemAttribute(thisball.uid, "boost") or 0 if getCreatureName(item2.uid) == "Ditto" or getCreatureName(item2.uid) == "Shiny Ditto" then doPlayerSendCancel(cid, "Your ditto can't transform into another ditto.") markPos(mysum, unfix) return true end if isInArray(outpokes, getCreatureName(item2.uid)) then doPlayerSendCancel(cid, "Your ditto can't transform into this pokemon.") markPos(mysum, unfix) return true end if getPlayerLevel(cid) < pokes[getCreatureName(item2.uid)].level then doPlayerSendCancel(cid, "You haven't level to transform into that pokemon.") markPos(mysum, unfix) return true end if isInArray(proibidossempre, getCreatureName(item2.uid)) then --Checa a lista doPlayerSendCancel(cid, "Your ditto can't transform into that pokemon.") markPos(mysum, unfix) return true end if isInArray(proibidosboost, getCreatureName(item2.uid)) and boost < 50 then --Checa a lista doPlayerSendCancel(cid, "Your ditto can't transform into that pokemon.") markPos(mysum, unfix) return true end markPos(mysum, unfix) doFaceCreature(mysum, getThingPos(item2.uid)) doDittoTransform(mysum, getCreatureName(item2.uid)) return true end -----------------------------
Pronto, ditto ja está tranformando, agora falta o !revert, para isso vá em talkactions/scripts e crie um arquivo(.lua) com nome de dittorevert, e dentro coloque:
function onSay(cid, words, param, channel) local thisball = getPlayerSlotItem(cid, 8) if thisball and getItemAttribute(thisball.uid, "ehditto") then doDittoRevert(cid) end return true end
Agora, no talkactions.xml adicione esta linha:
<talkaction words = "!revert;/revert" hide="yes" event = "script" value = "dittorevert.lua"/>Se fizer tudo corretamente, funcionará normalmente.
Gif:
Créditos:
Gabrielbsales(sou op faço tudo solo)
tem como postar como fazer o procedimento para shiny ditto????
vc ajudo um membro ae do forum mais nao postaram como fazer aq . desde ja agradeço. rep++
info
Grupo: Conde
Registrado: 14/04/15
Posts: 956
Reputação: +333
Gênero: Masculino

tem como postar como fazer o procedimento para shiny ditto????
vc ajudo um membro ae do forum mais nao postaram como fazer aq . desde ja agradeço. rep++
Eu fiz este mesmo procedimento só que aonde tinha "Ditto" troquei por shiny ditto
dps faço um tópico para ajudar a vcs ![]()
Pronto Criei o tópico e o tutorial segue ai: http://www.xtibia.com/forum/topic/235361-ditto-e-shiny-ditto-system-igual-pxg-100/?p=1659331
Bom, esse ditto system:
-Copia o pokemon e o balanceia sem necessidade de puxa-lo.
-Copias Habilidades...
Primeiramente, vá no some functions.lua - Localizado na pasta lib.
E adicione isto no final(depois do ultimo end):
function doDittoTransform(ditto, pokemon) local sid = getCreatureMaster(ditto) local eff = 184 local name = pokemon local pos = getCreaturePosition(ditto) local outfit = getPokemonXMLOutfit(pokemon) doSendMagicEffect(getThingPosWithDebug(ditto), eff) doSetCreatureOutfit(ditto, {lookType = outfit}, -1) doItemSetAttribute(getPlayerSlotItem(sid, 8).uid, "poke", name) doItemSetAttribute(getPlayerSlotItem(sid, 8).uid, "ehditto", 1) doPlayerSay(sid, ""..getPokeName(ditto)..", transform into "..getArticle(pokemon).." "..pokemon.."!", 1) doCreatureSay(ditto, "TRANSFORM!", TALKTYPE_MONSTER) doRemoveCreature(ditto) doSummonMonster(sid, name) doTeleportThing(getCreatureSummons(sid)[1], pos, false) adjustStatus(getCreatureSummons(sid)[1], getPlayerSlotItem(sid, 8).uid, true, false) doUpdateMoves(sid) return true end function doDittoRevert(m) local sid = m local eff = 184 local name = "Ditto" local outfit = getPokemonXMLOutfit(name) if #getCreatureSummons(sid) <= 0 then doItemSetAttribute(getPlayerSlotItem(sid, 8).uid, "poke", name) doItemSetAttribute(getPlayerSlotItem(sid, 8).uid, "ehditto", 1) elseif #getCreatureSummons(sid) == 1 then local ditto = getCreatureSummons(sid)[1] local pos = getCreaturePosition(ditto) if getCreatureName(ditto) == "Ditto" then return true end doSendMagicEffect(getThingPosWithDebug(ditto), eff) doSetCreatureOutfit(ditto, {lookType = outfit}, -1) doItemSetAttribute(getPlayerSlotItem(sid, 8).uid, "poke", name) doItemSetAttribute(getPlayerSlotItem(sid, 8).uid, "ehditto", 1) doPlayerSay(sid, ""..getPokeName(ditto)..", untransfrom!", 1) doCreatureSay(ditto, "TRANSFORM!", TALKTYPE_MONSTER) doRemoveCreature(ditto) doSummonMonster(sid, name) doTeleportThing(getCreatureSummons(sid)[1], pos, false) adjustStatus(getCreatureSummons(sid)[1], getPlayerSlotItem(sid, 8).uid, true, false) doUpdateMoves(sid) end end
Bom, essas são as funções de transformar e destransformar.
Agora, vá no order.lua - Localizado no actions/scripts.
E procure por:
-------- TRANSFORM ----------Apague tudo aqui dentro, até o:
-------- LIGHT --------------Ali dentro, bote:
if (getCreatureName(mysum) == "Ditto") and getItemAttribute(thisball.uid, "ehditto") ~= -1 and isMonster(item2.uid) and pokes[getCreatureName(item2.uid)] then local m = getCreatureMaster(cid) local p = getPlayerSlotItem(m, 8) local proibidossempre = {"Mew_", "Mewtwo_", "Unown Legion", "Ho-oh", "Moltres", "Celebi", "Moltres", "Zapdos", "Suicune", "Entei", "Raikou", "Articuno", "Lugia", "Mewtwo", "Mew", "Shiny Rhydon", "Shiny Ariados", "Shiny Magneton", "Shiny Ninetales", "Shiny Politoed", "Shiny Stantler", "Shiny Dodrio", "Shiny Espeon", "Shiny Umbreon"} -- Nunca permitir local proibidosboost = {"Shiny Dragonite", "Shiny Snorlax", "Shiny Gyarados", "Shiny Scyther"} -- Permitir se ditto for +50 local outpokes = {"Magnet Electabuzz","Elder Tyranitar","Hard Golem","Brute Rhydon","Iron Steelix","Brave Charizard","Elder Charizard","Lava Magmar","Enraged Typhlosion","Capoeira Hitmontop","Boxer Hitmonchan","Taekwondo Hitmonlee","Dragon Machamp","Undefeated Machamp","Wardog Arcanine","Elder Arcanine","Furious Mantine","War Gyarados","Brave Blastoise","Brave Venusaur","Ancient Meganium","Tribal Feraligatr","Elder Dragonite","Elder Pinsir","Elder Raichu","Charged Raichu","Tribal Xatu","Enigmatic Girafarig","Ancient Alakazam","Master Alakazam","Furious Ampharos","Elder Electabuzz","Furious Scyther","Tribal Scyther","War Heracross","Metal Scizor","Brave Nidoking","Brave Nidoqueen","Elder Muk","Dark Crobat","Trickmaster Gengar" ,"Elder Gengar" ,"Banshee Misdreavus","Hungry Snorlax","Brute Ursaring","War Granbull","Singer Wigglytuff","Aviator Pidgeot","Metal Skarmory","Brave Noctowl","Elder Pidgeot","Ancient Dragonite","Milch-Miltank","Ancient Kingdra","Psy Jynx","Elder Venusaur","Elder Jynx","Evil Cloyster","Freezing Dewgong","Elder Tangela","Furious Sandslash","Roll Donphan","Bone Marowak","Octopus Octillery","Moon Clefable","Heavy Piloswine","Elder Blastoise","Elder Tentacruel","Elder Marowak","Master Stantler"} local boost = getItemAttribute(thisball.uid, "boost") or 0 if getCreatureName(item2.uid) == "Ditto" or getCreatureName(item2.uid) == "Shiny Ditto" then doPlayerSendCancel(cid, "Your ditto can't transform into another ditto.") markPos(mysum, unfix) return true end if isInArray(outpokes, getCreatureName(item2.uid)) then doPlayerSendCancel(cid, "Your ditto can't transform into this pokemon.") markPos(mysum, unfix) return true end if getPlayerLevel(cid) < pokes[getCreatureName(item2.uid)].level then doPlayerSendCancel(cid, "You haven't level to transform into that pokemon.") markPos(mysum, unfix) return true end if isInArray(proibidossempre, getCreatureName(item2.uid)) then --Checa a lista doPlayerSendCancel(cid, "Your ditto can't transform into that pokemon.") markPos(mysum, unfix) return true end if isInArray(proibidosboost, getCreatureName(item2.uid)) and boost < 50 then --Checa a lista doPlayerSendCancel(cid, "Your ditto can't transform into that pokemon.") markPos(mysum, unfix) return true end markPos(mysum, unfix) doFaceCreature(mysum, getThingPos(item2.uid)) doDittoTransform(mysum, getCreatureName(item2.uid)) return true end -----------------------------
Pronto, ditto ja está tranformando, agora falta o !revert, para isso vá em talkactions/scripts e crie um arquivo(.lua) com nome de dittorevert, e dentro coloque:
function onSay(cid, words, param, channel) local thisball = getPlayerSlotItem(cid, 8) if thisball and getItemAttribute(thisball.uid, "ehditto") then doDittoRevert(cid) end return true end
Agora, no talkactions.xml adicione esta linha:
<talkaction words = "!revert;/revert" hide="yes" event = "script" value = "dittorevert.lua"/>Se fizer tudo corretamente, funcionará normalmente.
Gif:
Créditos:
Gabrielbsales(sou op faço tudo solo)
consegui adaptar aq so que agora quando eu copio shiny blastoise com o shiny ditto se usar ancient fury ele buga e da erros na distro
[07/07/2015 13:24:05] data/talkactions/scripts/move1.lua:248: in function <data/talkactions/scripts/move1.lua:21>
sabe como resolver????












info
Grupo: Cavaleiro
Registrado: 26/10/13
Posts: 189
Reputação: +8
eu adicionei certo só que quando eu falo !revert aparece o comando em vermelho e em seguida em amarelo não acontece nada, é normal ele vira o nome do pokes também?
não ta tendo como posta spoler eu ia te manda o meu talk e o script pra tu ver que eu coloquei certo, só isso que não funfa vei, se poder entra skype ou algo assim pra mim te mostra.