Ir para conteúdo

eliaspalermo

Posts Recomendados

PDA 8.54 , Uso OTClient.

 

Eu estava precisando muito de um sistema já existente nos jogos de MMO RPG, para colocar no meu Poketibia.

Esse sistema tinha até no Pokemon Arena.

 

Eu não entendo muito dessas paradas de script, mas creio que seja uma coisa não muito complicada de fazer.

 

Eu quero acabar com essa coisa de deslizar o dedo do f1 ao f12 e usar todas as skills de uma só vez.

Então queria um sistema de cd que bloqueasse a outra skills pelos segundos de cd dela.

 

EX :

 

Usei Razor Leaf : cd dela é de 6 segundos

Então para eu usar novamente a skill ou outra skill, devo esperar 6 segundos.

 

Estou a muito tempo a procura de um sistema desse, mas não acho em canto nenhum, agradeço muito a quem pode me ajudar !

Obrigado desde já !

Link para o comentário
Compartilhar em outros sites

ta se o cara usar solar beam vai ter q esperar 60s pra usar outra skill? o.O cade o sentido nisso? ;x -sem fla q coitado do bulba, vai ser triturado nesses 60s-

Link para o comentário
Compartilhar em outros sites

Não gente, como eu já falei... é um cd de MMO RPG, eu vou colocar um cd menor pra cada skill é claro '-'

Tipo o Digimon Masters Online, os digimons tem cd nas skills de 4 a 7 segundos !

Claro que faz sentido '-' , o pvp fica muito mais demorado e acaba com a coisa de deslizar o dedo e usar todas as skills...


Zipter ai está meu move1

move1.zip

Link para o comentário
Compartilhar em outros sites

Ai está

 

 

local msgs = {"use ", ""}
function doAlertReady(cid, id, movename, n, cd)
if not isCreature(cid) then return true end
local myball = getPlayerSlotItem(cid, 8)
if myball.itemid > 0 and getItemAttribute(myball.uid, cd) == "cd:"..id.."" then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(myball.uid).." - "..movename.." (m"..n..") esta pronto!")
return true
end
local p = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid)
if not p or #p <= 0 then return true end
for a = 1, #p do
if getItemAttribute(p[a], cd) == "cd:"..id.."" then
if isInArray({"m1", "m2", "m3"}, n) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(p[a]).." - "..movename.." (t"..n..") esta pronto!")
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(p[a]).." - "..movename.." (m"..n..") esta pronto!")
end
return true
end
end
end
function onSay(cid, words, param, channel)
if param ~= "" then return true end
if string.len(words) > 3 then return true end
if #getCreatureSummons(cid) == 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce precisa de um pokemon para usar as moves.")
return 0
end
--alterado v2.5
local mypoke = getCreatureSummons(cid)[1]
if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end
if getCreatureName(mypoke) == "Evolution" then return true end
local name = getCreatureName(mypoke) == "Ditto" and getPlayerStorageValue(mypoke, 1010) or getCreatureName(mypoke)
local it = string.sub(words, 2, 3)
local move = movestable[name].move1
if getPlayerStorageValue(mypoke, 212123) >= 1 then
cdzin = "cm_move"..it..""
else
cdzin = "move"..it.."" --alterado v2.5
end
if it == "2" then
doPlayerSendTextMessage(cid, 26, "sounds/105.wav")
move = movestable[name].move2
elseif it == "3" then
move = movestable[name].move3
elseif it == "4" then
move = movestable[name].move4
elseif it == "5" then
move = movestable[name].move5
elseif it == "6" then
move = movestable[name].move6
elseif it == "7" then
move = movestable[name].move7
elseif it == "8" then
move = movestable[name].move8
elseif it == "9" then
move = movestable[name].move9
elseif it == "10" then
move = movestable[name].move10
elseif it == "11" then
move = movestable[name].move11
elseif it == "12" then
move = movestable[name].move12
elseif it == "13" then
move = movestable[name].move13
end
if isInArray({1,2,3,4,5,6,7,8,9,10,11,12,13}, it) then
mLevel = move.level
mCD = move.cd
mName = move.name
mTarget = move.target
mDist = move.dist
else
m = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "t"..it.."")
mLevel = tmList[m].level
mCD = tmList[m].cd
mName = m
mTarget = tmList[m].target
mDist = tmList[m].dist
end
if not move then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")
return true
end
--if false and getLevel(mypoke) < mLevel then
if getLevel(mypoke) < mLevel then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Seu Pokemon ainda nao sabe usar essa move.")
return 0
end
if getCD(getPlayerSlotItem(cid, 8).uid, cdzin) > 0 and getCD(getPlayerSlotItem(cid, 8).uid, cdzin) < (mCD + 2) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "voce deve esperar "..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).." segundos para usar "..mName.." novamente.")
return 0
end
if getTileInfo(getThingPos(mypoke)).protection then
doPlayerSendCancel(cid, "Voce nao pode atacar em area protegida.")
return 0
end
if getPlayerStorageValue(mypoke, 3894) >= 1 then
return doPlayerSendCancel(cid, "You can't attack because you is with fear") --alterado v2.3
end
if (mName == "Team Slice" or mName == "Team Claw") and #getCreatureSummons(cid) < 2 then --alterado v2.5
doPlayerSendCancel(cid, "Your pokemon need be in a team for use this move!")
return 0
end
--alterado v2.6
if isCreature(getCreatureTarget(cid)) and isInArray(specialabilities["evasion"], getCreatureName(getCreatureTarget(cid))) and math.random(1, 100) <= 10 then
local target = getCreatureTarget(cid)
if isCreature(getMasterTarget(target)) then --alterado v2.6 --alterado v2.5
doSendMagicEffect(getThingPos(target), 211)
doSendAnimatedText(getThingPos(target), "TOO BAD", 215)
doTeleportThing(target, getClosestFreeTile(target, getThingPos(mypoke)), false)
doSendMagicEffect(getThingPos(target), 211)
doFaceCreature(target, getThingPos(mypoke))
return true --alterado v2.6
end
end
if mTarget == 1 then
if not isCreature(getCreatureTarget(cid)) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Nao ha pokemon na mira.")
return 0
end
if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then
return 0
end
if getCreatureHealth(getCreatureTarget(cid)) <= 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce ja derrotou seu oponente.")
return 0
end
if not isCreature(getCreatureSummons(cid)[1]) then
return true
end
if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid))) > mDist then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Get closer to the target to use this move.")
return 0
end
if not isSightClear(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid)), false) then
return 0
end
end
local newid = 0
if isSleeping(mypoke) or isSilence(mypoke) then --alterado v2.5
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry you can't do that right now.")
return 0
else
newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, mCD)
end
doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..mName.."!", TALKTYPE_SAY)
local summons = getCreatureSummons(cid) --alterado v2.6
addEvent(doAlertReady, mCD * 1000, cid, newid, mName, it, cdzin)
for i = 2, #summons do
if isCreature(summons) and getPlayerStorageValue(cid, 637501) >= 1 then
docastspell(summons, mName) --alterado v2.6
end
end
docastspell(mypoke, mName)
doCreatureAddCondition(cid, playerexhaust)
if useKpdoDlls then
doUpdateCooldowns(cid)
end
return 0
end
Link para o comentário
Compartilhar em outros sites

 

 

local msgs = {"use ", ""}
 
function doAlertReady(cid, id, movename, n, cd)
if not isCreature(cid) then return true end
local myball = getPlayerSlotItem(cid, 8)
if myball.itemid > 0 and getItemAttribute(myball.uid, cd) == "cd:"..id.."" then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(myball.uid).." - "..movename.." (m"..n..") esta pronto!")
return true
end
local p = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid)
if not p or #p <= 0 then return true end
for a = 1, #p do
if getItemAttribute(p[a], cd) == "cd:"..id.."" then
if isInArray({"m1", "m2", "m3"}, n) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(p[a]).." - "..movename.." (t"..n..") esta pronto!")
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(p[a]).." - "..movename.." (m"..n..") esta pronto!")
end
return true
end
end
end
 
function onSay(cid, words, param, channel)
 
local storage = 918271
if param ~= "" then return true end
if string.len(words) > 3 then return true end
 
if #getCreatureSummons(cid) == 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce precisa de um pokemon para usar as moves.")
return 0
end
--alterado v2.5
local mypoke = getCreatureSummons(cid)[1]
 
if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end
if getCreatureName(mypoke) == "Evolution" then return true end
 
local name = getCreatureName(mypoke) == "Ditto" and getPlayerStorageValue(mypoke, 1010) or getCreatureName(mypoke)
 
local it = string.sub(words, 2, 3)
local move = movestable[name].move1
if getPlayerStorageValue(mypoke, 212123) >= 1 then
cdzin = "cm_move"..it..""
else
cdzin = "move"..it.."" --alterado v2.5
end
 
if it == "2" then
doPlayerSendTextMessage(cid, 26, "sounds/105.wav") 
move = movestable[name].move2
elseif it == "3" then
move = movestable[name].move3
elseif it == "4" then
move = movestable[name].move4
elseif it == "5" then
move = movestable[name].move5
elseif it == "6" then
move = movestable[name].move6
elseif it == "7" then
move = movestable[name].move7
elseif it == "8" then
move = movestable[name].move8
elseif it == "9" then
move = movestable[name].move9
elseif it == "10" then
move = movestable[name].move10
elseif it == "11" then
move = movestable[name].move11
elseif it == "12" then
move = movestable[name].move12
elseif it == "13" then
move = movestable[name].move13
end
 
if isInArray({1,2,3,4,5,6,7,8,9,10,11,12,13}, it) then
mLevel = move.level
mCD = move.cd
mName = move.name
mTarget = move.target
mDist = move.dist
else
m = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "t"..it.."")
mLevel = tmList[m].level
mCD = tmList[m].cd
mName = m
mTarget = tmList[m].target
mDist = tmList[m].dist
end
 
if not move then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")
return true
end
 
--if false and getLevel(mypoke) < mLevel then
if getLevel(mypoke) < mLevel then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Seu Pokemon ainda nao sabe usar essa move.")
return 0
end
 
    if getPlayerStorageValue(mypoke, storage) > os.time() then
        return doPlayerSendCancel(cid, "You need wait "..getPlayerStorageValue(mypoke, storage) - os.time().." second"..getPlayerStorageValue(mypoke, storage) - os.time() > 1 and "s" or "".." to cast this spell.")
    end
--[[if getCD(getPlayerSlotItem(cid, 8).uid, cdzin) > 0 and getCD(getPlayerSlotItem(cid, 8).uid, cdzin) < (mCD + 2) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "voce deve esperar "..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).." segundos para usar "..mName.." novamente.")
return 0
end]]--
 
if getTileInfo(getThingPos(mypoke)).protection then
doPlayerSendCancel(cid, "Voce nao pode atacar em area protegida.")
return 0
end
 
if getPlayerStorageValue(mypoke, 3894) >= 1 then
return doPlayerSendCancel(cid, "You can't attack because you is with fear") --alterado v2.3
end
 
if (mName == "Team Slice" or mName == "Team Claw") and #getCreatureSummons(cid) < 2 then --alterado v2.5
doPlayerSendCancel(cid, "Your pokemon need be in a team for use this move!")
return 0
end
--alterado v2.6
if isCreature(getCreatureTarget(cid)) and isInArray(specialabilities["evasion"], getCreatureName(getCreatureTarget(cid))) and math.random(1, 100) <= 10 then
local target = getCreatureTarget(cid)
 
if isCreature(getMasterTarget(target)) then --alterado v2.6 --alterado v2.5
doSendMagicEffect(getThingPos(target), 211)
doSendAnimatedText(getThingPos(target), "TOO BAD", 215)
doTeleportThing(target, getClosestFreeTile(target, getThingPos(mypoke)), false)
doSendMagicEffect(getThingPos(target), 211)
doFaceCreature(target, getThingPos(mypoke))
return true --alterado v2.6
end
end
 
 
if mTarget == 1 then
 
if not isCreature(getCreatureTarget(cid)) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Nao ha pokemon na mira.")
return 0
end
 
if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then
return 0
end
 
if getCreatureHealth(getCreatureTarget(cid)) <= 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce ja derrotou seu oponente.")
return 0
end
 
if not isCreature(getCreatureSummons(cid)[1]) then
return true
end
 
if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid))) > mDist then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Get closer to the target to use this move.")
return 0
end
 
if not isSightClear(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid)), false) then
return 0
end
end
 
local newid = 0
 
if isSleeping(mypoke) or isSilence(mypoke) then --alterado v2.5
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry you can't do that right now.")
return 0
else
newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, mCD)
end
 
doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..mName.."!", TALKTYPE_SAY)
 
local summons = getCreatureSummons(cid) --alterado v2.6
 
addEvent(doAlertReady, mCD * 1000, cid, newid, mName, it, cdzin)
 
for i = 2, #summons do
if isCreature(summons[i]) and getPlayerStorageValue(cid, 637501) >= 1 then
docastspell(summons[i], mName) --alterado v2.6
end
end
 
docastspell(mypoke, mName)
    setPlayerStorageValue(mypoke, storage, os.time() + mCD)
doCreatureAddCondition(cid, playerexhaust)
 
if useKpdoDlls then
doUpdateCooldowns(cid)
end
 
return 0
end

Link para o comentário
Compartilhar em outros sites

Obrigado cara, está funfando perfeitamente !

 

Mas tipo, enquanto a skill está em cd, se eu tento usar as outras fica aparecendo no chat "m1, m2,m3" e assim as que eu usar...

Seria possível tirar isso?

post-366361-0-11218100-1397327188_thumb.png

Link para o comentário
Compartilhar em outros sites

Não Não, a função dele funfa de boa, mas só que esses "m1,m2,m3" e etc acaba atrapalhando tanto no combat como no chat tendeu?


Aeee Zipter eu tava olhando a script, e vi a função que você falou do "cancel" , realmente ela não está funfando, oque tenho que fazer pra funfar?

post-366361-0-04490500-1397391389_thumb.png

Link para o comentário
Compartilhar em outros sites

Opa, antes disso vou adiantar que você vai precissar fazer table para todos os "cds" mas caso mesmo assim você queira configurar todas as tables para todos os "cds" diz que eu faço para você.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...