-
Total de itens
90 -
Registro em
-
Última visita
-
Dias Ganhos
11
Posts postados por BlazerX
-
-
Cada hora o "dono" fala uma bosta diferente,
to ligado que essa base é recente, ele fala que é faz tempo isso só para tentar enganar,
assim como da pra perceber que ele fala uma coisa e depois outra, falou que nao é base aquilo e depois afirmou ser,
mas ele fala ser PDA só pq a grande maioria nao gosta do servidores de PDA,
essa base é reconhecida como poketibia xerox e pronto e é recente, não faz nem 1 mes.
-
Você só pode abrir o arquivo com o SQLite Studio com os arquivos que tem a extensão .s3db,
esse arquivo seu muito provavelmente deve ser com mysql, que pode ser utilizado o phpmyadmin
-
Deu certo?
Complemento:SpoilerOs array que são chamados de tabelas em lua não necessita de colocar índice dessa forma falado pelo amigo acima,
muitos quando colocam ou não sabem que não é necessário e pensam que sem isso o código não vai funcionar ou
colocam para ter uma noção do tamanho da tabela ou para outros afins, também em lua as tabelas não começam do zero
e sim do índice 1, diferente de outras linguagens que começam do zero.
-
https://discord.gg/wUAfXNQ
-
Parabéns pelo esforço em busca do aprendizado que você tanto queria.
SpoilerÉ uma pena que esse PokeXIce fica toda vez comentando besteira no forum ou em redes sociais
falando bosta de algo que a fazemos com nossos proprios esforços e dedicação, ele acha que
qualquer um fica por ai pegando coisa prontas e sair vendendo a custa de outros.
- Developer Berg reagiu a isso
- 1
-
-
-
Qual tipo de reset você se refere, poderia especificar?
-
Você tem razão é esses tipos de pessoas como você mesmo que a comunidade não vai para frente,
os cara do tbdevs ralam pra fazer os sistemas e vc fica queimando eles falando asneira nas redes sociais,
não estou arrumando briga nenhuma você que não aguenta a verdade.
-
Não sei o porque você deu créditos a si mesmo, oq vc fez nessa base? Eu li que você fez o inventory no client,
mas isso você acha em qualquer base de poketibia, agora dar créditos a si mesmo por algo que outros fazem é ridículo,
teve o que mereceu ja que não tem a capacidade de gerenciar um servidor e fazer um melhor mesmo que uma outra
pessoa te roube, veja o Poke Master X, roubaram ele, mas ele não deixou que isso desanimasse ele, ele foi lá com sua
capacidade de fazer o melhor que outros nao tem, porque você nao vai lá fazer parte do time do programador de 8 linguagens ?
-
Veja esses erros com um tal de Renzyx, diz ele que arrumou 90% dos erros do otcliente ainda diz que reformulou tudo sozinho, não esquecendo que ele sabe de +8 linguagens
Spoiler- Marshmello reagiu a isso
- 1
-
Segue esse tutorial:
Reza a lenda que esse cara programa em +8 linguagens e esse tutorial vai ajudar bastante. -
Tem um tópico aqui no fórum chamado Unique Item é exatamente o que você precisa.
-
30 minutos atrás, Poke X Ice disse:
desculpa acabei nem lendo tudo , estou muito estressado com problemas pessoais acabei nem percebendo.
acabou de da um erro
WARNING: attempt to add a null child into a UIWidget
stack traceback:
[C]: in function 'createWidget'
/game_card/card.lua:67: in function 'refreshPokeAndInsignias'
/game_card/card.lua:16: in function 'callback'
/gamelib/protocolgame.lua:17: in function </gamelib/protocolgame.lua:14>
at:
[C++]: UIWidget::addChild
ERROR: failed to create widget from style 'BoxPokemon': unable to create widget of type 'UIItem'
ERROR: protected lua call failed: LUA ERROR:
/game_card/card.lua:69: attempt to index local 'box' (a nil value)
stack traceback:
[C]: ?
/game_card/card.lua:69: in function 'refreshPokeAndInsignias'
/game_card/card.lua:16: in function 'callback'
/gamelib/protocolgame.lua:17: in function </gamelib/protocolgame.lua:14>card.lua
local opcodeCard = 71
local insignias = { 'Boulder Badge', 'Cascade Badge', 'Thunder Badge', 'Rainbow Badge', 'Marsh Badge', 'Soul Badge', 'Volcano Badge', 'Earth Badge' }
local winCard
local lblTreinador
local lblLevel
local outfit
local boxPokemons
local boxInsigniasfunction init()
connect(g_game, { onGameEnd = onGameEnd })
ProtocolGame.registerExtendedOpcode(opcodeCard, function(protocol, opcode, buffer)
refreshPokeAndInsignias(buffer)
end)
winCard = g_ui.displayUI('card')
winCard:move(70, 80)
winCard:hide()
g_keyboard.bindKeyPress('Ctrl+Shift+Q', toggle)
lblTreinador = winCard:getChildById('lblTreinador')
lblLevel = winCard:getChildById('lblLevel')
outfit = winCard:getChildById('outfit')
boxPokemons = winCard:getChildById('boxPokemons')
boxInsignias = winCard:getChildById('boxInsignias')
endfunction terminate()
disconnect(g_game, { onGameEnd = onGameEnd })
ProtocolGame.unregisterExtendedOpcode(opcodeCard)
winCard:destroy()
g_keyboard.unbindKeyPress('Ctrl+Shift+Q')
endfunction refresh()
local player = g_game.getLocalPlayer()
lblTreinador:setText(player:getName())
outfit:setOutfit(player:getOutfit())
endfunction onGameEnd()
winCard:hide()
endfunction toggle()
if ( winCard:isVisible() ) then
addEvent(function() g_effects.fadeOut(winCard, 200) end)
scheduleEvent(function() winCard:hide() end, 220)
else
refresh()
addEvent(function() winCard:show() g_effects.fadeIn(winCard, 200) end)
g_game.getProtocolGame():sendExtendedOpcode(opcodeCard, "poke")
g_game.getProtocolGame():sendExtendedOpcode(opcodeCard, "badges")
end
endfunction refreshPokeAndInsignias(value)
local action = value:explode('-')
if ( action[1] == 'poke' ) then
local pokemon = action[2]:explode(',')
boxPokemons:destroyChildren()
for i = 1, 6 do
local box = g_ui.createWidget('BoxPokemon', boxPokemons)
if ( i <= #pokemon ) then
box:setItemId(tonumber(pokemon))
box:setTooltip(pokemon)
end
end
elseif ( action[1] == 'badges' ) then
local badges = action[2]:explode(',')
boxInsignias:destroyChildren()
for i = 1, #insignias do
local uiInsignias = g_ui.createWidget('Insignias', boxInsignias)
if ( tonumber(badges) == 1 ) then
uiInsignias:setImageSource('insignias/'..insignias..'_on')
else
uiInsignias:setImageSource('insignias/'..insignias..'_off')
end
uiInsignias:setTooltip(insignias)
end
end
end
Por favor leia atentamente o que eu escrevi e quando for cópiar codigo daqui do fórum atente-se para os caracteres especiai,eu percebi o erro que você teve, porem como você está estressado não atentou-se oq eu expliquei, refaça novamente.
-
45 minutos atrás, Poke X Ice disse:
Eu ainda deixei um comentário:Para abrir o módulo pressione a tecla Ctrl+Shift+Q
Mas vou quebrar o seu galho kkk
Spoiler-- Coloque dentro da função init modules.client_topmenu.addRightGameToggleButton('cardButton', tr('Trainer Card'), 'nome_da_imagem_do_icone', toggle) -- Coloque o nome da imagem do icone antes do toggle
-
Vamos lá então!
No arquivo trainercard.lua mude a estrutura que envia o nome do pokemon por esse trecho de código:
for indice, ball in pairs(getPlayerPokeballs(cid)) do value = getItemInfo(fotos[getItemAttribute(ball.uid, "poke")]).clientId..','..value end
No módulo game_card abra o arquivo card.otui e procure por BoxPokemon e substitua o trecho por esse:
BoxPokemon < UIItem image-source: ui/box image-offset: -4 0 icon-size: 46 46 icon-offset: 0 2
No mesmo módulo abra o arquivo card.lua e procure por box:setIcon e substitua o trecho por esse:
box:setItemId(tonumber(pokemon[i]))
Só isso mesmo, espero que entenda.
-
14 minutos atrás, Poke X Ice disse:
Ótimo conteúdo, Rep ++.
não teria como fazer ele enviar portrait do pokémon ?
Tem como fazer sim, você poderia me dizer como pega a portrait do seu servidor?
No servidor do DarkXPoke eu sei que é getPortraitClientID, porem eu não sei como é no seu. -
Trainer Card
Fala galera do Xtibia, vim trazer mais uma contribuição para a comunidade, é um módulo para otclient básico porém legal.
Como funciona?
O Trainer Card vai mostrar digamos algumas informações do seu personagem,
você pode adicionar mais informações a esse card, vai da criatividade de cada um deixar bem funcional.Script do servidor:
Crique um arquivo na pasta do seu servidor em data/creaturescript/ e coloque o nome de trainercard.luaSpoilerlocal opcodeCard = 71 function onExtendedOpcode(cid, opcode, buffer) if opcode == opcodeCard then local value = '' if ( buffer == 'poke' ) then for indice, ball in pairs(getPlayerPokeballs(cid)) do value = getItemAttribute(ball.uid, "poke")..','..value end elseif ( buffer == 'badges' ) then local leaderGym = {"Brock", "Misty", "Surge", "Erika", "Sabrina", "Koga", "Blaine", "Giovanni"} for i = 1, #leaderGym do value = getPlayerBadgeOfLeader(cid, leaderGym[i])..','..value end end doSendPlayerExtendedOpcode(cid, 71, buffer..'-'..value) end end
Coloque a seguinte tag no arquivo do creaturescripts.xml:
<event type="extendedopcode" name="TrainerCard" event="script" value="trainercard.lua"/>
Registre o evento no arquivo onLogin.lua onde se encontra na mesma pasta:
registerCreatureEvent(cid, "TrainerCard")
Módulo otClient:
Coloque o módulo na pasta do seu otClient em modules/
Para abrir o módulo pressione a tecla Ctrl+Shift+QSpoilerImagem do módulo:
A base que foi utilizada do servidor foi a DarkXPoke.
O meu módulo tem mais informações do que o da imagem, porém eu dei uma mexida,o módulo que o Gengo me passou do Trainer Card que eu utilizo está em um nivel totalmente
diferente do apresentado nesse tutorial, eu só modifiquei para compartilhar com a galera.
Espero que tenham gostado e faça um bom proveito do módulo, use sua criatividade para fazer de um belo sistema funcional.
Créditos:
SpoilerCréditos vai ao Gengo que fez a um tempo atras para mim e com a permissão dele estou postando.
-
Segue o script, a configuração é alto explicativo, mas se tiver alguma duvida é só falar.
Spoilerlocal ring = { storage = 55691, timer = 10, outfit = 428 } function onUse(cid, item, fromPosition, itemEx, toPosition) local storageTimer = os.time() - getPlayerStorageValue(cid, ring.storage) if storageTimer >= ring.timer then setPlayerStorageValue(cid, ring.storage, os.time()) doSetCreatureOutfit(cid, { lookType = ring.outfit}, ring.timer*1000) else doPlayerSendCancel(cid, "Aguarde "..(ring.timer-storageTimer).." segundos para usar novamente.") end return true end
- Kevin vem 69 reagiu a isso
- 1
-
[CONTEÚDO REMOVIDO]
-
Segue o script e veja se resolve esses erros.
Obs: Atente-se na hora de pegar o código aqui no editor de texto do fórum, pois está vindo com caracteres especiais.Spoilerlocal combats = { [PSYCHICDAMAGE] = {cor = COLOR_PSYCHIC}, [GRASSDAMAGE] = {cor = COLOR_GRASS}, [POISONEDDAMAGE] = {cor = COLOR_GRASS}, [FIREDAMAGE] = {cor = COLOR_FIRE2}, [BURNEDDAMAGE] = {cor = COLOR_BURN}, [WATERDAMAGE] = {cor = COLOR_WATER}, [ICEDAMAGE] = {cor = COLOR_ICE}, [NORMALDAMAGE] = {cor = COLOR_NORMAL}, [FLYDAMAGE] = {cor = COLOR_FLYING}, [GHOSTDAMAGE] = {cor = COLOR_GHOST}, [GROUNDDAMAGE] = {cor = COLOR_GROUND}, [ELECTRICDAMAGE] = {cor = COLOR_ELECTRIC}, [ROCKDAMAGE] = {cor = COLOR_ROCK}, [BUGDAMAGE] = {cor = COLOR_BUG}, [FIGHTDAMAGE] = {cor = COLOR_FIGHTING}, [DRAGONDAMAGE] = {cor = COLOR_DRAGON}, [POISONDAMAGE] = {cor = COLOR_POISON}, [DARKDAMAGE] = {cor = COLOR_DARK}, [STEELDAMAGE] = {cor = COLOR_STEEL}, [MIRACLEDAMAGE] = {cor = COLOR_PSYCHIC}, [DARK_EYEDAMAGE] = {cor = COLOR_GHOST}, [SEED_BOMBDAMAGE] = {cor = COLOR_GRASS}, [SACREDDAMAGE] = {cor = COLOR_FIRE2}, [MUDBOMBDAMAGE] = {cor = COLOR_GROUND}, --alterado v1.9 } local function sendPlayerDmgMsg(cid, text) if not isCreature(cid) then return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, text) end local races = { [4] = {cor = COLOR_FIRE2}, [6] = {cor = COLOR_WATER}, [7] = {cor = COLOR_NORMAL}, [8] = {cor = COLOR_FIRE2}, [9] = {cor = COLOR_FIGHTING}, [10] = {cor = COLOR_FLYING}, [11] = {cor = COLOR_GRASS}, [12] = {cor = COLOR_POISON}, [13] = {cor = COLOR_ELECTRIC}, [14] = {cor = COLOR_GROUND}, [15] = {cor = COLOR_PSYCHIC}, [16] = {cor = COLOR_ROCK}, [17] = {cor = COLOR_ICE}, [18] = {cor = COLOR_BUG}, [19] = {cor = COLOR_DRAGON}, [20] = {cor = COLOR_GHOST}, [21] = {cor = COLOR_STEEL}, [22] = {cor = COLOR_DARK}, [1] = {cor = 180}, [2] = {cor = 180}, [3] = {cor = 180}, [5] = {cor = 180}, } local damages = {GROUNDDAMAGE, ELECTRICDAMAGE, ROCKDAMAGE, FLYDAMAGE, BUGDAMAGE, FIGHTINGDAMAGE, DRAGONDAMAGE, POISONDAMAGE, DARKDAMAGE, STEELDAMAGE} local fixdmgs = {PSYCHICDAMAGE, COMBAT_PHYSICALDAMAGE, GRASSDAMAGE, FIREDAMAGE, WATERDAMAGE, ICEDAMAGE, NORMALDAMAGE, GHOSTDAMAGE} local ignored = {POISONEDDAMAGE, BURNEDDAMAGE} local cannotkill = {BURNEDDAMAGE, POISONEDDAMAGE} function onStatsChange(cid, attacker, type, combat, value) if combat == FLYSYSTEMDAMAGE then return false end if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end -- TV if not isCreature(attacker) then if not isInArray(fixdamages, combat) and combats[combat] then doSendAnimatedText(getThingPos(cid), value, combats[combat].cor) end return true end local damageCombat = combat -------------------------------------------------- if type == STATSCHANGE_HEALTHGAIN then if cid == attacker then return true end if isSummon(cid) and isSummon(attacker) and canAttackOther(cid, attacker) == "Cant" then return false end return true end -------------------------------------------------- if isMonster(cid) then local valor = value if not pokes[getCreatureName(cid)] and damageCombat == COMBAT_PHYSICALDAMAGE then valor = getOffense(attacker) * playerDamageReduction doCreatureAddHealth(cid, -math.abs(valor), 3, races[7].cor) return false elseif not pokes[getCreatureName(cid)] and damageCombat ~= COMBAT_PHYSICALDAMAGE then doCreatureAddHealth(cid, -math.abs(valor), 3, combats[damageCombat].cor) return false end end -------------------------------------------------- if isPlayer(attacker) then local valor = value if valor > getCreatureHealth(cid) then valor = getCreatureHealth(cid) end if combat == COMBAT_PHYSICALDAMAGE then return false end if combat == PHYSICALDAMAGE then if isSummon(cid) and isPlayer(getCreatureMaster(cid))then local TierEle = { [78] = {chance = Elemen1}, [79] = {chance = Elemen2}, [80] = {chance = Elemen3}, [81] = {chance = Elemen4}, [82] = {chance = Elemen5}, [83] = {chance = Elemen6}, [84] = {chance = Elemen7}, } local Tier = getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "heldx") if Tier and Tier > 77 and Tier < 85 and getPlayerStorageValue(cid, 22666) ~= 5 then if math.random(1,100) <= TierEle[Tier].chance then docastspell(cid, "Elemental", -1000, -5000) setPlayerStorageValue(cid, 22666, 5) addEvent(function() setPlayerStorageValue(cid, 22666, 0) end, 1 * 1800) end end end if isSummon(cid) and isPlayer(getCreatureMaster(cid)) and getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "heldy") and getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "heldy") == 22 then return true else doSendMagicEffect(getThingPos(cid), 3) end doSendAnimatedText(getThingPos(cid), valor, races[getMonsterInfo(getCreatureName(cid)).race].cor) end if combats[damageCombat] and not isInArray(fixdmgs, damageCombat) then doSendAnimatedText(getThingPos(cid), valor, combats[damageCombat].cor) end if #getCreatureSummons(attacker) >= 1 and not isInArray({POISONEDDAMAGE, BURNEDDAMAGE}, combat) then doPlayerSendTextMessage(attacker, MESSAGE_STATUS_DEFAULT, "Your "..getPokeName(getCreatureSummons(attacker)[1]).." dealt "..valor.." damage to "..getSomeoneDescription(cid)..".") end return true end -------------------------------------------------- if isPlayer(cid) and #getCreatureSummons(cid) >= 1 and type == STATSCHANGE_HEALTHLOSS then return false end -------------------------------------------------- if isPlayer(cid) and #getCreatureSummons(cid) <= 0 and type == STATSCHANGE_HEALTHLOSS then if isSummon(attacker) or isPlayer(attacker) then if canAttackOther(cid, attacker) == "Cant" then return false end end local valor = 0 if combat == COMBAT_PHYSICALDAMAGE then valor = getOffense(attacker) else valor = getSpecialAttack(attacker) end valor = valor * playerDamageReduction valor = valor * math.random(83, 117) / 100 if valor >= getCreatureHealth(cid) then valor = getCreatureHealth(cid) end valor = math.floor(valor) if valor >= getCreatureHealth(cid) then if getPlayerStorageValue(cid, 6598754) >= 1 or getPlayerStorageValue(cid, 6598755) >= 1 then setPlayerStorageValue(cid, 6598754, -1) setPlayerStorageValue(cid, 6598755, -1) doRemoveCondition(cid, CONDITION_OUTFIT) doTeleportThing(cid, posBackPVP, false) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) return false --alterado v1.8 end if getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 then doRemoveCondition(cid, CONDITION_OUTFIT) setPlayerStorageValue(cid, 17000, 0) setPlayerStorageValue(cid, 17001, 0) setPlayerStorageValue(cid, 63215, -1) doChangeSpeed(cid, PlayerSpeed) local item = getPlayerSlotItem(cid, 8) local btype = getPokeballType(item.itemid) if #getCreatureSummons(cid) <= 0 then if isInArray(pokeballs[btype].all, item.itemid) then doTransformItem(item.uid, pokeballs[btype].off) doItemSetAttribute(item.uid, "hp", 0) end end end if getPlayerStorageValue(cid, 22545) == 1 then if getGlobalStorageValue(22550) == 1 then doPlayerSendTextMessage(cid, 20, "You are the last survivor of the golden arena! Take your reward!") doPlayerAddItem(cid, 2152, getPlayerStorageValue(cid, 22551)*2) setPlayerStorageValue(cid, 22545, -1) doTeleportThing(cid, getClosestFreeTile(cid, getClosestFreeTile(cid, posBackGolden)), false) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid)) setPlayerRecordWaves(cid) endGoldenArena() return false --alterado v1.8 else setGlobalStorageValue(22550, getGlobalStorageValue(22550)-1) setPlayerStorageValue(cid, 22545, -1) doTeleportThing(cid, getClosestFreeTile(cid, posBackGolden), false) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid)) setPlayerRecordWaves(cid) return true end end if getPlayerStorageValue(cid, 98796) >= 1 then setPlayerStorageValue(cid, 98796, -1) setPlayerStorageValue(cid, 98797, -1) --alterado v1.8 doTeleportThing(cid, SafariOut, false) doSendMagicEffect(getThingPos(cid), 21) doPlayerSendTextMessage(cid, 27, "You die in the saffari... Best luck in the next time!") return false --alterado v1.8 end local corpse = doCreateItem(3058, 1, getThingPos(cid)) doDecayItem(corpse) doItemSetAttribute(corpse, "pName", getCreatureName(cid)) --alterado v1.7 coloca corpse quando o player morre! doItemSetAttribute(corpse, "attacker", getCreatureName(attacker)) doItemSetAttribute(corpse, "article", getPlayerSex(cid) == 0 and "She" or "He") if getPlayerStorageValue(cid, Agatha.stoIni) >= 1 and getPlayerStorageValue(cid, Agatha.stoIni) <= 10 then setPlayerStorageValue(cid, Agatha.stoIni, -1) setPlayerStorageValue(cid, Agatha.stoRec, -1) setPlayerStorageValue(cid, Agatha.stoPer, -1) setPlayerStorageValue(cid, Agatha.stoEni, -1) --alterado v1.9 agatha quest setPlayerStorageValue(cid, Agatha.stoRes, -1) end end doCreatureAddHealth(cid, -valor, 3, 180) if not isPlayer(cid) then addEvent(sendPlayerDmgMsg, 5, cid, "You lost "..valor.." hitpoints due to an attack from "..getSomeoneDescription(attacker)..".") end return false end -------------------------------------------------- if isMonster(attacker) and getPlayerStorageValue(attacker, 201) ~= -1 then if isPlayer(cid) then return false end if getPlayerStorageValue(getCreatureMaster(cid), ginasios[getPlayerStorageValue(attacker, 201)].storage) ~= 1 then return false end end -------------------------------------------------- if isMonster(cid) and getPlayerStorageValue(cid, 201) ~= -1 then if getPlayerStorageValue(getCreatureMaster(attacker), ginasios[getPlayerStorageValue(cid, 201)].storage) ~= 1 then return false end end -------------------------------------------------- if ehMonstro(cid) and ehMonstro(attacker) and not isSummon(cid) and not isSummon(attacker) then return false --alterado v1.9 /\ end -------------------------------------------------- --------------------REFLECT----------------------- if getPlayerStorageValue(cid, 21099) >= 1 and combat ~= COMBAT_PHYSICALDAMAGE then if not isInArray({"Team Claw", "Team Slice"}, getPlayerStorageValue(attacker, 21102)) then doSendMagicEffect(getThingPosWithDebug(cid), 135) doSendAnimatedText(getThingPosWithDebug(cid), "REFLECT", COLOR_GRASS) addEvent(docastspell, 100, cid, getPlayerStorageValue(attacker, 21102)) if getCreatureName(cid) == "Wobbuffet" then doRemoveCondition(cid, CONDITION_OUTFIT) end setPlayerStorageValue(cid, 21099, -1) setPlayerStorageValue(cid, 21100, 1) setPlayerStorageValue(cid, 21101, attacker) setPlayerStorageValue(cid, 21103, getTableMove(attacker, getPlayerStorageValue(attacker, 21102)).f) setPlayerStorageValue(cid, 21104, getCreatureOutfit(attacker).lookType) return false end end ------------------------------------------------- local multiplier = 1 if isCreature(cid) then poketype1 = pokes[getCreatureName(cid)].type poketype2 = pokes[getCreatureName(cid)].type2 end if not poketype1 or not poketype2 then return false end if getCreatureCondition(cid, CONDITION_INVISIBLE) then return false end if damageCombat ~= COMBAT_PHYSICALDAMAGE and not isInArray(ignored, damageCombat) then if isInArray(effectiveness[damageCombat].super, poketype1) then multiplier = multiplier + 0.5 end if isInArray(effectiveness[damageCombat].super, poketype2) then multiplier = multiplier + 0.5 end if isInArray(effectiveness[damageCombat].weak, poketype1) then multiplier = multiplier - 0.25 end if isInArray(effectiveness[damageCombat].weak, poketype2) then multiplier = multiplier - 0.25 end if isInArray(effectiveness[damageCombat].non, poketype1) or isInArray(effectiveness[damageCombat].non, poketype2) then if isInArray(specialabilities["foresight"], getCreatureName(attacker)) then multiplier = 0.5 end --alterado v1.6 end -- X-Attack -- if isSummon(attacker) and isPlayer(getCreatureMaster(attacker)) then local TierArray = {8, 9, 10, 11, 12, 13, 14} local Tiers = { [8] = {bonus = AtkBonus1}, [9] = {bonus = AtkBonus2}, [10] = {bonus = AtkBonus3}, [11] = {bonus = AtkBonus4}, [12] = {bonus = AtkBonus5}, [13] = {bonus = AtkBonus6}, [14] = {bonus = AtkBonus7}, } local ball = getPlayerSlotItem(getCreatureMaster(attacker), 8) local Tier = getItemAttribute(ball.uid, "heldx") local bonusatk = {} if isInArray(TierArray, getItemAttribute(ball.uid, "heldx")) then bonusatk = Tiers[Tier].bonus else bonusatk = 1 end multiplier = multiplier * bonusatk end -- X-Attack -- elseif combat == COMBAT_PHYSICALDAMAGE then if isGhostPokemon(cid) then if not isInArray(specialabilities["foresight"], getCreatureName(attacker)) then --passiva Foresight!! doSendMagicEffect(getThingPos(cid), 3) return false end end local cd = getPlayerStorageValue(attacker, conds["Miss"]) local cd2 = getPlayerStorageValue(attacker, conds["Confusion"]) local cd3 = getPlayerStorageValue(attacker, conds["Stun"]) if cd >= 0 or cd2 >= 0 or cd3 >= 0 then if math.random(1, 100) > 50 then doSendMagicEffect(getThingPos(cid), 211) doSendAnimatedText(getThingPos(attacker), "MISS", 215) return false end end end -------------------------------------------------- local valor = value if multiplier == 1.5 and poketype2 == "no type" then multiplier = 2 elseif multiplier == 1.5 and poketype2 ~= "no type" then multiplier = 1.75 elseif multiplier == 1.25 then multiplier = 1 end -------------------------------------------------- if isSummon(cid) and isSummon(attacker) then if getCreatureMaster(cid) == getCreatureMaster(attacker) then return false end if canAttackOther(cid, attacker) == "Cant" then return false end end valor = valor * multiplier if isSummon(attacker) then valor = valor * getHappinessRate(attacker) else valor = valor * summonReduction end valor = math.floor(valor) if combat == COMBAT_PHYSICALDAMAGE then local value = getOffense(attacker) > 1000 and 3 or 2 block = 1 - (getDefense(cid) / (getOffense(attacker) + getDefense(cid))) --alterado v1.9 testem essa nova formula plzzz '--' valor = (getOffense(attacker)/value) * block if valor <= 0 then valor = math.random(5, 10) --alterado v1.9 end if isInArray(specialabilities["counter"], getCreatureName(cid)) then if math.random(1, 100) <= 10 then doCreatureAddHealth(attacker, -valor, 3, 180) valor = 0 doSendAnimatedText(getThingPosWithDebug(cid), "COUNTER", 215) end end -- Return -- if isSummon(cid) and isPlayer(getCreatureMaster(cid)) then local returnbonus = {} local ball = getPlayerSlotItem(getCreatureMaster(cid), 8) local Tiers = { [15] = {bonus = DmgReturn1}, [16] = {bonus = DmgReturn2}, [17] = {bonus = DmgReturn3}, [18] = {bonus = DmgReturn4}, [19] = {bonus = DmgReturn5}, [20] = {bonus = DmgReturn6}, [21] = {bonus = DmgReturn7}, } local Tier = getItemAttribute(ball.uid, "heldx") if Tier and Tier > 14 and Tier < 22 then returnbonus = math.floor((valor * Tiers[Tier].bonus)) elseif not isInArray(Tiers, Tier) then returnbonus = 0 end doCreatureAddHealth(attacker, -returnbonus) end -- Return -- else -- Return -- if isSummon(cid) and isPlayer(getCreatureMaster(cid)) then local returnbonus = {} local ball = getPlayerSlotItem(getCreatureMaster(cid), 8) local Tiers = { [15] = {bonus = DmgReturn1}, [16] = {bonus = DmgReturn2}, [17] = {bonus = DmgReturn3}, [18] = {bonus = DmgReturn4}, [19] = {bonus = DmgReturn5}, [20] = {bonus = DmgReturn6}, [21] = {bonus = DmgReturn7}, } local Tier = getItemAttribute(ball.uid, "heldx") if Tier and Tier > 14 and Tier < 22 then returnbonus = math.floor((valor * Tiers[Tier].bonus)) elseif not isInArray(Tiers, Tier) then returnbonus = 0 end doCreatureAddHealth(attacker, -returnbonus) end -- Critical -- if isSummon(attacker) and isPlayer(getCreatureMaster(attacker)) then local Tiers = { [85] = {chance = Critical1}, [86] = {chance = Critical2}, [87] = {chance = Critical3}, [88] = {chance = Critical4}, [89] = {chance = Critical5}, [90] = {chance = Critical6}, [91] = {chance = Critical7} } local ball = getPlayerSlotItem(getCreatureMaster(attacker), 8) local Tier = getItemAttribute(ball.uid, "heldx") if Tier and Tier > 84 and Tier < 92 then if math.random(1,100) <= Tiers[Tier].chance then valor = valor * 2 doSendAnimatedText(getThingPos(cid), "STK "..(valor * 0.25), 115) end end end -- Critical -- -- Critical -- -- Return -- valor = valor / getDefense(cid) end -------------------------Edited CLAN SYSTEM----------------------------------- if isSummon(attacker) and getPlayerStorageValue(getCreatureMaster(attacker), 86228) >= 1 then valor = valor*getClanPorcent(getCreatureMaster(attacker), combat, "atk") elseif isSummon(cid) and getPlayerStorageValue(getCreatureMaster(cid), 86228) >= 1 then valor = valor - (valor*getClanPorcent(getCreatureMaster(cid), combat, "def", pokes[getCreatureName(cid)].type, pokes[getCreatureName(cid)].type2)) end ----------------------------------------------------------------------- ---------------------- FEAR / ROAR ------------------------------------ if getPlayerStorageValue(attacker, conds["Fear"]) >= 1 then return true end -------------------------------------------------------------------------- if damageCombat ~= COMBAT_PHYSICALDAMAGE and not isInArray(ignored, damageCombat) then if isInArray(effectiveness[damageCombat].non, poketype1) or isInArray(effectiveness[damageCombat].non, poketype2) then if not isInArray(specialabilities["foresight"], getCreatureName(attacker)) then valor = valor * 0 end end end if damageCombat == GROUNDDAMAGE then if isInArray(specialabilities["levitate"], getCreatureName(cid)) then valor = 0 end end ----------------------------------------------------------------------------- local p = getThingPos(cid) if p.x == 1 and p.y == 1 and p.z == 10 then return false end if getPlayerStorageValue(cid, 9658783) == 1 then return false --imune end ----------------------------------------------------------------------------- --------------- FIGHT MODE ----------------------- if useOTClient then if isSummon(cid) then local master = getCreatureMaster(cid) if getPlayerStorageValue(master, 248759) == 1 then valor = valor * 1.1 elseif getPlayerStorageValue(master, 248759) == 3 then valor = valor * 0.9 end end if isSummon(attacker) then local master = getCreatureMaster(attacker) if getPlayerStorageValue(master, 248759) == 1 then valor = valor * 1.1 elseif getPlayerStorageValue(master, 248759) == 3 then valor = valor * 0.9 end end end ----------------------------------------------------------------------------- if valor >= getCreatureHealth(cid) then if isInArray(cannotKill, combat) and isPlayer(cid) then valor = getCreatureHealth(cid) - 1 else valor = getCreatureHealth(cid) end end valor = math.floor(valor) ------------------ SKILLs Q CURAM O ATTACKER --------------------------------- local function doHeal(cid, amount) if (getCreatureHealth(cid) + amount) >= getCreatureMaxHealth(cid) then amount = math.abs(getCreatureHealth(cid)-getCreatureMaxHealth(cid)) end if getCreatureHealth(cid) ~= getCreatureMaxHealth(cid) then doCreatureAddHealth(cid, amount) doSendAnimatedText(getThingPosWithDebug(cid), "+"..amount.."", 65) end end if damageCombat == PSYCHICDAMAGE or damageCombat == MIRACLEDAMAGE then if getPlayerStorageValue(attacker, 95487) >= 1 then doHeal(attacker, valor) setPlayerStorageValue(attacker, 95487, -1) end elseif damageCombat == SEED_BOMBDAMAGE then doHeal(attacker, valor) end -------------------------------------------- ----------SACRED FIRE----------------------- if combat == SACREDDAMAGE and not ehNPC(cid) then local ret = {} ret.id = cid ret.cd = 9 ret.check = getPlayerStorageValue(cid, conds["Silence"]) ret.eff = 39 ret.cond = "Silence" doCondition2(ret) elseif combat == MUDBOMBDAMAGE and not ehNPC(cid) then local ret = {} ret.id = cid ret.cd = 9 ret.eff = 34 ret.check = getPlayerStorageValue(cid, conds["Miss"]) ret.spell = "Mud Bomb" --alterado v1.9 ret.cond = "Miss" doCondition2(ret) end --------------------------------------------- --------------Passiva Lifesteal Clobat------------ if combat == COMBAT_PHYSICALDAMAGE then if getCreatureName(attacker) == "Crobat" then doCreatureAddHealth(attacker, math.floor(valor)) doSendAnimatedText(getThingPos(attacker), "+ "..math.floor(valor), 30) end end --- X-Agility/X-Strafe/X-Rage/X-Harden --- if combat == COMBAT_PHYSICALDAMAGE then local TierAgi = { [43] = {chance = Agility1}, [44] = {chance = Agility2}, [45] = {chance = Agility3}, [46] = {chance = Agility4}, [47] = {chance = Agility5}, [48] = {chance = Agility6}, [49] = {chance = Agility7}, } local TierStra = { [50] = {chance = Strafe1}, [51] = {chance = Strafe2}, [52] = {chance = Strafe3}, [53] = {chance = Strafe4}, [54] = {chance = Strafe5}, [55] = {chance = Strafe6}, [56] = {chance = Strafe7}, } local TierRage = { [57] = {chance = Rage1}, [58] = {chance = Rage2}, [59] = {chance = Rage3}, [60] = {chance = Rage4}, [61] = {chance = Rage5}, [62] = {chance = Rage6}, [63] = {chance = Rage7}, } if isPlayer(getCreatureMaster(attacker)) and isSummon(attacker) then local Tier = getItemAttribute(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid, "heldx") if Tier and Tier > 42 and Tier < 50 and getPlayerStorageValue(attacker, 22666) ~= 1 then if math.random(1,100) <= TierAgi[Tier].chance then docastspell(attacker, "Agility") setPlayerStorageValue(attacker, 22666, 1) addEvent(function() setPlayerStorageValue(attacker, 22666, 0) end, 15 * 1000) end elseif Tier and Tier > 49 and Tier < 57 and getPlayerStorageValue(attacker, 22666) ~= 2 then if math.random(1,100) <= TierStra[Tier].chance then docastspell(attacker, "Strafe") setPlayerStorageValue(attacker, 22666, 2) addEvent(function() setPlayerStorageValue(attacker, 22666, 0) end, 15 * 1000) end elseif Tier and Tier > 56 and Tier < 64 and getPlayerStorageValue(attacker, 22666) ~= 3 then if math.random(1,100) <= TierRage[Tier].chance then docastspell(attacker, "Rage") setPlayerStorageValue(attacker, 22666, 3) addEvent(function() setPlayerStorageValue(attacker, 22666, 0) end, 15 * 1000) end end end if isPlayer(getCreatureMaster(cid)) and isSummon(cid) then local TierHarden = { [64] = {chance = Harden1}, [65] = {chance = Harden2}, [66] = {chance = Harden3}, [67] = {chance = Harden4}, [68] = {chance = Harden5}, [69] = {chance = Harden6}, [70] = {chance = Harden7}, } local TierEle = { [78] = {chance = Elemen1}, [79] = {chance = Elemen2}, [80] = {chance = Elemen3}, [81] = {chance = Elemen4}, [82] = {chance = Elemen5}, [83] = {chance = Elemen6}, [84] = {chance = Elemen7}, } local Tier = getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "heldx") if Tier and Tier > 63 and Tier < 71 and getPlayerStorageValue(cid, 22666) ~= 4 then if math.random(1,100) <= TierHarden[Tier].chance then docastspell(cid, "Harden") setPlayerStorageValue(cid, 22666, 4) addEvent(function() setPlayerStorageValue(cid, 22666, 0) end, 8 * 1000) end end if Tier and Tier > 77 and Tier < 85 and getPlayerStorageValue(cid, 22666) ~= 5 then if math.random(1,100) <= TierEle[Tier].chance then docastspell(cid, "Elemental", -1000, -5000) setPlayerStorageValue(cid, 22666, 5) addEvent(function() setPlayerStorageValue(cid, 22666, 0) end, 1 * 1800) end end end end --- X-Agility/Strafe/Rage/Harden --- -------------------------------------------- valor = math.abs(valor) --alterado v1.9 if isSummon(attacker) then if combat == COMBAT_PHYSICALDAMAGE then doTargetCombatHealth(getCreatureMaster(attacker), cid, PHYSICALDAMAGE, -valor, -valor, 255) addEvent(doDoubleHit, 1000, attacker, cid, valor, races) else doTargetCombatHealth(getCreatureMaster(attacker), cid, damageCombat, -valor, -valor, 255) end else if combat ~= COMBAT_PHYSICALDAMAGE then doCreatureAddHealth(cid, -valor, 3, combats[damageCombat].cor) else doCreatureAddHealth(cid, -valor, 3, races[getMonsterInfo(getCreatureName(cid)).race].cor) addEvent(doDoubleHit, 1000, attacker, cid, valor, races) end if isSummon(cid) and valor ~= 0 then addEvent(sendPlayerDmgMsg, 5, getCreatureMaster(cid), "Your "..getCreatureName(cid).." lost "..valor.." hitpoints due to an attack from "..getSomeoneDescription(attacker)..".") end end if damageCombat == FIREDAMAGE and not isBurning(cid) then local ret = {} ret.id = cid ret.cd = math.random(5, 12) ret.check = getPlayerStorageValue(cid, conds["Burn"]) ret.damage = isSummon(attacker) and getMasterLevel(attacker)+getPokemonBoost(attacker) or getPokemonLevel(attacker) ret.cond = "Burn" doCondition2(ret) elseif damageCombat == POISONDAMAGE and not isPoisoned(cid) then local ret = {} ret.id = cid ret.cd = math.random(6, 15) ret.check = getPlayerStorageValue(cid, conds["Poison"]) local lvl = isSummon(attacker) and getMasterLevel(attacker) or getPokemonLevel(attacker) ret.damage = math.floor((getPokemonLevel(attacker)+lvl)/2) ret.cond = "Poison" doCondition2(ret) end --[[---------------CD BAR----------------------- if isSummon(cid) then doCreatureExecuteTalkAction(getCreatureMaster(cid), "/pokeread") end ]] ------------------------------------POTIONS------------------------------------------- if isSummon(cid) and type == STATSCHANGE_HEALTHLOSS then if getPlayerStorageValue(cid, 173) >= 1 then if damageCombat ~= BURNEDDAMAGE and damageCombat ~= POISONEDDAMAGE then setPlayerStorageValue(cid, 173, -1) doSendAnimatedText(getThingPos(cid), "Lost Heal", 144) end end end ----------------------------------------PASSIVAS------------------------------------- -------------------------------------------Counter Helix------------------------------------ if passivesChances["Helix"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Helix"][getCreatureName(cid)] then docastspell(cid, "Counter Helix") end -------------------------------------------Lava Counter/Electricity---------------------------- if passivesChances["Fire_Thunder"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Fire_Thunder"][getCreatureName(cid)] then docastspell(cid, "Lava-Electricity") end ---------------------------------------Stunning Confusion----------------------------------------- if passivesChances["Stunning"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Stunning"][getCreatureName(cid)] then docastspell(cid, "Stunning Confusion") end -----------------------------------------Groundshock----------------------------------- if passivesChances["Groundshock"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Groundshock"][getCreatureName(cid)] then docastspell(cid, "Groundshock") end --------------------------------------Electric Charge--------------------------------------------- if passivesChances["Electric Charge"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Electric Charge"][getCreatureName(cid)] then docastspell(cid, "Electric Charge", 0, 0) end -------------------------------------Melody------------------------------------ if passivesChances["Melody"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Melody"][getCreatureName(cid)] then docastspell(cid, "Melody") end ------------------------------------- Dragon Fury / Fury --------------------------------------- if passivesChances["Dragon Fury"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Dragon Fury"][getCreatureName(cid)] then docastspell(cid, "Dragon Fury", 0, 0) end ------------------------------------- Mega Drain --------------------------------------- if passivesChances["Mega Drain"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Mega Drain"][getCreatureName(cid)] then docastspell(cid, "Mega Drain") end ------------------------------------- Spores Reaction --------------------------------------- if passivesChances["Spores Reaction"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Spores Reaction"][getCreatureName(cid)] then docastspell(cid, "Spores Reaction") end ------------------------------------ Amnesia ---------------------------------------- if passivesChances["Amnesia"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Amnesia"][getCreatureName(cid)] then docastspell(cid, "Amnesia", 0, 0) end ----------------------------------- Zen Mind ----------------------------------------- if passivesChances["Zen Mind"][getCreatureName(cid)] and isWithCondition(cid) and math.random(1, 100) <= passivesChances["Zen Mind"][getCreatureName(cid)] then docastspell(cid, "Zen Mind", 0, 0) end ---------------------------------- Mirror Coat --------------------------------------- if passivesChances["Mirror Coat"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Mirror Coat"][getCreatureName(cid)] then docastspell(cid, "Mirror Coat", 0, 0) end --------------------------------- Illusion ----------------------------------------- return false end
-
6 minutos atrás, JulianoZN disse:
Deu esse erro ai da print do "==" e "=" then
Olhando o erro na resposta anterior e comparando o meu script,
esse erro não tem nada haver com o meu script esse erro é do script do ZikaLord, o meu eu testei e lhe garanto que funciona, o script que ele fez contem muitos erros de programar essa simples situação
-
-
Vamos lá para o que você está precisando, é bem simples eu já deixei tudo configurado para você fazer suas devidas adaptações.
Script:
Cria um arquivo no seu servidor em data/action/ e coloque o nome do arquivo actionescada.lua e coloque o seguinte script:
Spoilerlocal config = { stoneId = 11449, escadaId = 1386, posStone = { x = 2557, y = 2579, z = 7}, posEscada = { x = 2560, y = 2579, z = 7}, timer = 20*1000 } function onUse(cid, item, fromPosition, itemEx, toPosition) local stone = getTileItemById(config.posStone, config.stoneId, 1) if ( stone.uid > 0 ) then doRemoveItem(stone.uid) doCreateItem(config.escadaId, config.posEscada) addEvent(function() doRemoveItem(getTileItemById(config.posEscada, config.escadaId).uid) end, config.timer) else return doPlayerSendCancel(cid, 'You did not put the stone in the place.') end doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945) return true end
No mesmo diretório abre o arquivo action.xml e coloque a seguinte tag:
<action actionid="69587" event="script" value="actionhouse.lua"/>
Onde está o actionid, você coloca esse numero na alavanca pelo rme map editor e
já deve funcionar tudo isso se você também configurou o script de acordo com a sua preferência.
Espero que dê para entender, a tabela config do script está bem explicativo para que você possa entender e alterar.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.
[Fechado] Base Pokémon XYZ RPG Online
em Tópicos Fechados
Postado
Pensei que você ja tinha dando o sumiço na comunidade, nem sei pq o dono do post deu creditos a voce,
dar creditos só por copiar e mudar uma coisinha é pra doer o cu da cobra, eu vou ali mudar a cor do pokemon e
remover os creditos da nintendo sobre os pokemons que eu colorir.