-
Total de itens
9 -
Registro em
-
Última visita
Sobre felipenchagas
Informações
-
Forma que conheci o xTibia
Sites de Busca
-
Sou
Não Informado
felipenchagas's Achievements
-
[Encerrado]PokemonLine -Equipe
tópico respondeu ao felipenchagas de felipenchagas em Formação de Equipes
Jah entrei em contato. Mas ainda estamos procurando. Obrigado!! = ) Vou adicionar aqui meu skype pessoal: felipe@empresarialweb.com.br- 4 respostas
-
- pokemon
- pokemon online
-
(e 2 mais)
Tags:
-
Balancemento Pokemon - Apoio. poketibia
um tópico no fórum postou felipenchagas Tutoriais para Iniciantes
Os Tutorias aqui do Xtibia sempre me foram muito úteis. Sou realmente muito grato ao pessoal daqui. Pois bem, não é bem um tutorial mas sim um apoio para ficar mais fácil balancear os Pokémons Envio aqui em anexo uma planilha para dar apoio no balanceamento dos Pokémons, serve para qualquer servidor de qualquer distribuição! www.pokemonline.com.br/arquivos/balanceando.xls Analise - Virus Total Espero mesmo que seja útil! Aqui nesta planilha separo só os ataques e indico que em uma segunda planilha trabalhem só focado a defesa. O segredo aqui é trabalha com calma um à um. Como Usar as Tabelas: Bom no servidor pokeonline estamos balanceando todos os pokemons. E de tanto bater a cabeça achamos a melhor forma de fazer o balanceamento que é pensando nos pokemons individualmente. Primeiro, voce foca no primeiro pokemon, leva em consideração apenas a força física dele e ataques em geral. Por que isso? simples quando tentamos balancear todas as estatísticas de cada poke de uma só vez: força, defesa, velocidade. Acaba dando errado por que você vê o geral do pokemon. A maneira mais correta é primeiro um á um olhar a característica de cada pokemon separadamente e colocar quanto ele tem de ataque. Terminando esta primeira tabela você estuda a defesa de cada um, kakuna, metapoid, kloyster por exemplo são pura defesa. Novamente um á um você vai colocando a defesa, estipule um maximo. Em uma terceira tabela trabalhe o speed novamente estudando a característica de cada um. Claro que dá trabalho no entanto é a maneira mais correta de se fazer, depois o Excel pode gerar um gráfico pra você e pronto. Junta tudo e é só colocar no servidor. Eu estou tendo alguns problemas na parte da inserção por que a vida de alguns pokemons não sobe de jeito nenhum. Mas o importate é saber como voce vai trabalhar, traçar metas e depois partir para o servidor.- 6 respostas
-
- balancear pokemons
- poketibia
- (e 3 mais)
-
Meu nome é Felipe estou envolvido no projeto do PokemonLine Nosso portal: www.pokemonline.com.br Mapa do Servidor: http://www.pokemonline.com.br/mapa.php Cliente: OTclient 0.6.5 Estamos procurando mais um ou dois membros para a equipe. Procuramos: Scripters e programadores. Para apoio. Não buscamos criadores de mapa por enquanto. O servidor esta no ar a 3 semanas usamos como base Dash. Este trabalho é uma continuação do antigo projeto que estava para para correção pokeonline Coisas a fazer: Balanceamento de alguns Pokémon Correção de bugs reportados pelos players. Inserção de conteúdo. Servidor definitivo entrou no ar no dia: 29/03/2014 Nosso foco não é dinheiro. Mas sim uma paixão e fazer um servidor com a cara da comunidade. Um servidor com o qual nós gostaríamos de jogar. Contatos: contato@pokemonline.com.br https://www.facebook.com/pokemonlinebr
- 4 respostas
-
- pokemon
- pokemon online
-
(e 2 mais)
Tags:
-
[Resolvido] Mestre de ginasio que da Storage (NPC)
pergunta respondeu ao felipenchagas de felipenchagas em Resolvidos
Sim isso mesmo!!! selfSay("Tell me the number of pokemons that will battle.") eu escolho 1 o premio vem tudo certo. mas quando eu escolho para batalhar com 2 ou mais da o erro acima. -
[Resolvido] Mestre de ginasio que da Storage (NPC)
pergunta respondeu ao felipenchagas de felipenchagas em Resolvidos
Ahhh tem como dar 10 de reputação!! Muito obrigado, deixei assim e funcionou perfeito. local function doWinDuel(cid, npc) if not isCreature(cid) then return true end local this = npc doCreatureSay(npc, "Venceu o duelo, avance para a proxima sala... ") setPlayerStorageValue(cid, 9991, 1) end Espero não estar passando dos limites mas. Aproveitando tem um outro npc que também de duel, ele te da a opção de escolher contra quantos pokes você quer lutar, porem apenas funciona caso escolha a opção 1, se escolher lutar contra 2 ou mais pokemons no final do duelo ao vencer da o seguinte erro: [26/03/2014 16:26:07] [Error - Npc interface] [26/03/2014 16:26:07] In a timer event called from: [26/03/2014 16:26:07] data/npc/scripts/duel1.lua:onThink [26/03/2014 16:26:07] Description: [26/03/2014 16:26:07] data/npc/scripts/duel1.lua:62: attempt to get length of local 'x' (a nil value) [26/03/2014 16:26:07] stack traceback: [26/03/2014 16:26:07] data/npc/scripts/duel1.lua:62: in function <data/npc/scripts/duel1.lua:58> O script eh esse: local focus = 0 local max_distance = 8 local talk_start = 0 local conv = 0 local fighting = false local challenger = 0 local afk_limit_time = 30 -- seconds local afk_time = 0 -- don't change local battle_turn = 1 -- don't change local challenger_turn = 0 -- don't change local masterpos = {} local time_to_fight_again = 15 -- seconds, not ms (so 30 * 60 means 30 minutes) local can_walk = true -- true to make this npc walks randomly local max_distance = 5 -- maximum distance this npc can get far (sqms) local walk_delay = 7 -- every seconds make this npc walk local cooldown_table = {} local min_pokemons_to_battle = 1-- change to whatever you want local number_of_pokemons = 0 -- don't change local prizes = { [1] = {{setPlayerStorageValue(cid, 9991, 1)}, [2] = {{itemid = 2393, count = 40}, {itemid = 2392, count = 30}}, [3] = {{itemid = 2393, count = 50}, {itemid = 2392, count = 40}}, [4] = {{itemid = 2393, count = 60}, {itemid = 2392, count = 50}}, [5] = {{itemid = 2393, count = 70}, {itemid = 2392, count = 60}}, [6] = {{itemid = 2393, count = 80}, {itemid = 2392, count = 70}}} local pokemons = { {name = "Cloyster", optionalLevel = 50, sex = SEX_MALE, nick = "Crusher", ball = "super"}, {name = "Lapras", optionalLevel = 50, sex = SEX_FEMALE, nick = "Laura", ball = "normal"}, {name = "Electabuzz", optionalLevel = 50, sex = SEX_MALE, nick = "Eletron", ball = "great"}, {name = "Pinsir", optionalLevel = 50, sex = SEX_MALE, nick = "Headcutter", ball = "normal"}, {name = "Dragonair", optionalLevel = 50, sex = SEX_FEMALE, nick = "Dragonix", ball = "ultra"}, } local function doSummonGymPokemon(npc) local this = npc if not isCreature(this) then return true end if #getCreatureSummons(this) >= 1 or focus == 0 then return true end local it = pokemons[battle_turn] doSummonMonster(this, it.name) local summon = getCreatureSummons(this)[1] local balleffect = pokeballs["normal"].effect if it.ball and pokeballs[it.ball] then balleffect = pokeballs[it.ball].effect end doSendMagicEffect(getThingPos(summon), balleffect) setPlayerStorageValue(summon, 10000, balleffect) setPlayerStorageValue(summon, 10001, gobackmsgs[math.random(#gobackmsgs)].back:gsub("doka", it.nick ~= "" and it.nick or it.name)) setPlayerStorageValue(summon, 1007, it.nick ~= "" and it.nick or it.name) doSetMonsterGym(summon, focus) local name = it.nick ~= "" and it.nick or getCreatureName(this).."s "..it.name addEvent(adjustWildPoke, 15, summon, it.optionalLevel) doCreatureSay(this, gobackmsgs[math.random(#gobackmsgs)].go:gsub("doka", getPlayerStorageValue(summon, 1007)), 1) fighting = true battle_turn = battle_turn + 1 end local function doWinDuel(cid, npc) if not isCreature(cid) then return true end local this = npc local x = prizes[number_of_pokemons] for n = 1, #x do doPlayerAddItem(cid, x[n].itemid, x[n].count) end doCreatureSay(npc, "Congratulations! You won, here is your prize.", 1) cooldown_table[getCreatureName(cid)] = os.clock() + time_to_fight_again return true end function onCreatureSay(cid, type, msg) local msg = string.lower(msg) if focus == cid then talk_start = os.clock() end if msgcontains(msg, 'hi') and focus == 0 and getDistanceToCreature(cid) <= 4 then if cooldown_table[getCreatureName(cid)] and cooldown_table[getCreatureName(cid)] - os.clock() > 0 then selfSay("Hello "..getCreatureName(cid)..", I really enjoyed our last battle!") conv = 10 else selfSay("Hello "..getCreatureName(cid)..", are you up to a duel? I can give prizes if you win!") conv = 1 end focus = cid talk_start = os.clock() return true end if (isDuelMsg(msg) or isConfirmMsg(msg)) and (conv == 1 or conv == 10) and focus == cid then if conv == 10 then selfSay("We have just battled! Please wait for me to recover from out last battle!") focus = 0 return true end if not hasPokemon(cid) then selfSay("You need pokemons to battle!") return true end selfSay("Ok, tell me how many pokemons will fight.") conv = 2 return true end if conv == 2 and focus == cid then if not tonumber(msg) then selfSay("Tell me the number of pokemons that will battle.") return true elseif tonumber(msg) > #pokemons then selfSay("I have only "..#pokemons..", so the maximum is "..#pokemons.."!") return true elseif tonumber(msg) < min_pokemons_to_battle or tonumber(msg) < 1 then selfSay("It has to be more than "..min_pokemons_to_battle..".") return true else number_of_pokemons = tonumber(msg) selfSay("Ok, the first that defeats "..number_of_pokemons.." wins, let's start!") challenger = focus setPlayerStorageValue(cid, 990, 1) addEvent(doSummonGymPokemon, 850, getThis()) conv = 3 return true end return true end if isNegMsg(msg) and conv == 1 and focus == cid then focus = 0 selfSay("It is better for you to refuse a battle against me!") return true end if msgcontains(msg, 'bye') and focus == cid then selfSay('Bye and do your best trainer!') setPlayerStorageValue(focus, 990, -1) focus = 0 return true end end local afk_warning = false local change = false local walkdelay = 0 function onThink() if not masterpos.x then masterpos = getThingPos(getThis()) end if focus == 0 then selfTurn(2) fighting = false challenger = 0 change = false challenger_turn = 0 battle_turn = 1 afk_time = 0 afk_warning = false if #getCreatureSummons(getThis()) >= 1 then setPlayerStorageValue(getCreatureSummons(getThis())[1], 1006, 0) doCreatureAddHealth(getCreatureSummons(getThis())[1], -getCreatureMaxHealth(getCreatureSummons(getThis())[1])) end walkdelay = walkdelay - 0.5 if walkdelay <= 0 then walkdelay = walk_delay local pos = getThingPos(getThis()) local npos = {} for a = 0, 3 do if getDistanceBetween(getPosByDir(pos, a), masterpos) <= max_distance and canWalkOnPos(getPosByDir(pos, a), true, false, true, true, false) then table.insert(npos, getPosByDir(pos, a)) end end if npos and #npos > 0 then doTeleportThing(getThis(), npos[math.random(#npos)]) end end return true else if not isCreature(focus) then focus = 0 return true end if fighting then talk_start = os.clock() if not isCreature(getCreatureTarget(getThis())) then if #getCreatureSummons(challenger) >= 1 then if getCreatureOutfit(getCreatureSummons(challenger)[1]).lookType ~= 2 then --alterado v1.6 selfAttackCreature(getCreatureSummons(challenger)[1]) change = true afk_time = 0 end else afk_time = afk_time + 0.5 if change then change = false challenger_turn = challenger_turn + 1 end end end if afk_time > afk_limit_time then setPlayerStorageValue(focus, 990, -1) focus = 0 selfSay("I have waited too long, come back when you are ready!") return true end if not afk_warning and afk_time > afk_limit_time / 2 then selfSay("Where's your pokemon? Let's fight!") afk_warning = true end if #getCreatureSummons(getThis()) == 0 then if battle_turn > number_of_pokemons then addEvent(doWinDuel, 1000, focus, getThis()) setPlayerStorageValue(focus, 990, -1) focus = 0 return true end addEvent(doSummonGymPokemon, 1000, getThis()) end if not hasPokemon(challenger) or challenger_turn > 6 or challenger_turn >= number_of_pokemons then selfSay("You lost our duel! Maybe some other time you'll defeat me.") setPlayerStorageValue(focus, 990, -1) focus = 0 return true end end local npcpos = getThingPos(getThis()) local focpos = getThingPos(focus) if npcpos.z ~= focpos.z then setPlayerStorageValue(focus, 990, -1) focus = 0 selfSay("Bye then.") return true end if (os.clock() - talk_start) > 30 then selfSay("Good bye and keep training!") setPlayerStorageValue(focus, 990, -1) focus = 0 end if getDistanceToCreature(focus) > max_distance then setPlayerStorageValue(focus, 990, -1) focus = 0 return true end local dir = doRedirectDirection(getDirectionTo(npcpos, focpos)) selfTurn(dir) end return true end -
Oi boa noite! Eu gostaria se possível de uma ajuda, para um OT de pokemon... Tentei, tentei e nao consegui fazer. Um NPC com o mesmo sistema dos mestres de ginásio porem que ao invés de dar insignia dar storage, Ex: storage == 9991. Eu gostaria que soh depois que o player derrote o NPC X possa passar por um tile. O qual tem o seguinte script que a principio está funcionando como deveria. GYM: BROCK.LUA (NPC) local focus = 0 local max_distance = 8 local talk_start = 0 local conv = 0 local fighting = false local challenger = 0 local afk_limit_time = 30 -- seconds local afk_time = 0 -- don't change local battle_turn = 1 -- don't change local challenger_turn = 0 -- don't change local pokemons = { {name = "Geodude", optionalLevel = 50, sex = SEX_MALE, nick = "", ball = "normal"}, {name = "Rhyhorn", optionalLevel = 80, sex = SEX_MALE, nick = "", ball = "normal"}, --alterado v1.3 {name = "Graveler", optionalLevel = 80, sex = SEX_MALE, nick = "", ball = "normal"}, {name = "Onix", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "normal"}, {name = "Golem", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "normal"}, } local function doSummonGymPokemon(npc) local this = npc if not isCreature(this) then return true end if #getCreatureSummons(this) >= 1 or focus == 0 then return true end local it = pokemons[battle_turn] doSummonMonster(this, it.name) local summon = getCreatureSummons(this)[1] local balleffect = pokeballs["normal"].effect if it.ball and pokeballs[it.ball] then balleffect = pokeballs[it.ball].effect end doSendMagicEffect(getThingPos(summon), balleffect) setPlayerStorageValue(summon, 10000, balleffect) setPlayerStorageValue(summon, 10001, gobackmsgs[math.random(#gobackmsgs)].back:gsub("doka", it.nick ~= "" and it.nick or it.name)) setPlayerStorageValue(summon, 1007, it.nick ~= "" and it.nick or it.name) doSetMonsterGym(summon, focus) addEvent(adjustWildPoke, 15, summon, it.optionalLevel) local name = it.nick ~= "" and it.nick or getCreatureName(this).."s "..it.name --alterado v1.3 doCreatureSay(this, gobackmsgs[math.random(#gobackmsgs)].go:gsub("doka", getPlayerStorageValue(summon, 1007)), 1) fighting = true battle_turn = battle_turn + 1 end local function doWinDuel(cid, npc) if not isCreature(cid) then return true end local this = npc local a = gymbadges[getCreatureName(this)] + 8 doCreatureSay(npc, "Por vencer esse duelo pegue a "..getItemNameById(a - 8)..".", 1) local b = getPlayerItemById(cid, true, a) if b.uid > 0 then doTransformItem(b.uid, b.itemid - 8) end end function onCreatureSay(cid, type, msg) local msg = string.lower(msg) if focus == cid then talk_start = os.clock() end if msgcontains(msg, 'hi') and focus == 0 and getDistanceToCreature(cid) <= 4 then focus = cid talk_start = os.clock() conv = 1 selfSay("Oi sou Brock e sou lider do ginásio Pewter's. Minha especialidade? Pokemons do tipo pedra, os mais poderosos de todos os tipos.") return true end if isDuelMsg(msg) and conv == 1 and focus == cid then --if getPlayerItemCount(cid, gymbadges[getCreatureName(getThis())]) >= 1 then -- selfSay("You have already won my Boulder Badge, maybe some other day we can fight.") -- focus = 0 --return true --end if not hasPokemon(cid) then selfSay("Você viu a enfermeira joy por ai? Elá é uma gata.") return true end selfSay("Na nossa batalha serão permitidos até "..#pokemons.." pokemons, está pronto??") conv = 2 return true end if isConfirmMsg(msg) and conv == 2 and focus == cid then challenger = focus setPlayerStorageValue(cid, 990, 1) selfSay("Sim vamos lutar!") talk_start = os.clock() addEvent(doSummonGymPokemon, 850, getThis()) conv = 3 return true end if isNegMsg(msg) and conv == 2 and focus == cid then focus = 0 selfSay("Recusou? hmm... acho que a policia Jenny está afim de mim.") return true end if msgcontains(msg, 'bye') and focus == cid then selfSay('Vá e dê seu melhor!') setPlayerStorageValue(focus, 990, -1) focus = 0 return true end end local afk_warning = false local change = false function onThink() if focus == 0 then selfTurn(2) fighting = false challenger = 0 challenger_turn = 0 battle_turn = 1 afk_time = 0 afk_warning = false if #getCreatureSummons(getThis()) >= 1 then setPlayerStorageValue(getCreatureSummons(getThis())[1], 1006, 0) doCreatureAddHealth(getCreatureSummons(getThis())[1], -getCreatureMaxHealth(getCreatureSummons(getThis())[1])) end return true else if not isCreature(focus) then focus = 0 return true end if fighting then talk_start = os.clock() if not isCreature(getCreatureTarget(getThis())) then if #getCreatureSummons(challenger) >= 1 then if getCreatureOutfit(getCreatureSummons(challenger)[1]).lookType ~= 2 then --alterado v1.6 selfAttackCreature(getCreatureSummons(challenger)[1]) challenger_turn = challenger_turn + 1 afk_time = 0 end else afk_time = afk_time + 0.5 if change then change = false challenger_turn = challenger_turn + 1 end end end if afk_time > afk_limit_time then setPlayerStorageValue(focus, 990, -1) focus = 0 selfSay("Está demorando muito... tenho um encontro com a Enfermeira Joy hoje!") return true end if not afk_warning and afk_time > afk_limit_time / 2 then selfSay("Sem pokemons?!") afk_warning = true end if #getCreatureSummons(getThis()) == 0 then if battle_turn > #pokemons then addEvent(doWinDuel, 1000, focus, getThis()) setPlayerStorageValue(focus, 990, -1) focus = 0 return true end addEvent(doSummonGymPokemon, 1000, getThis()) end if not hasPokemon(challenger) or challenger_turn >= 7 or challenger_turn > #pokemons then selfSay("Você perdeu, acho que vou até o centro pokemon com você a enfermeira Joy está por lá.") setPlayerStorageValue(focus, 990, -1) focus = 0 return true end end local npcpos = getThingPos(getThis()) local focpos = getThingPos(focus) if npcpos.z ~= focpos.z then setPlayerStorageValue(focus, 990, -1) focus = 0 selfSay("Até mais.") return true end if (os.clock() - talk_start) > 30 then selfSay("Treine mais e lembre-se, os Pokemons de pedra são os melhores!") setPlayerStorageValue(focus, 990, -1) focus = 0 end if getDistanceToCreature(focus) > max_distance then setPlayerStorageValue(focus, 990, -1) focus = 0 return true end local dir = doRedirectDirection(getDirectionTo(npcpos, focpos)) selfTurn(dir) end return true end GYM.LUA (LIB) gymbadges = { ["Brock"] = 12252, ["Misty"] = 12253, ["Surge"] = 12254, ["Erika"] = 12255, ["Sabrina"] = 12256, ["Koga"] = 12257, ["Blaine"] = 12258, ["Kira"] = 12259, ["Zeper"] = setPlayerStorageValue(cid,9991,1)} --alterado v1.5
-
pedido [PEDIDO NPC] Verifica e remove storage
pergunta respondeu ao felipenchagas de felipenchagas em Scripts
aa brigadao era isso mesmo! parabéns pelo trabalho!! -
Oi tudo bem! Gostaria se possível de um NPC que verifique se o player tem essas storage e se sim, remover elas: storagesDuel = {52480, 52481, 52482, 52482, 52483, 52484, 52485, 6598754}
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.