Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 12/13/10 em todas áreas

  1. r.f

    System M1 ( Pokemon Ots )

    Está ai o System m1... ele contem um cooldown, mas não mostra o tempo regressivo para poder mandar a magia denovo. prescisa de uns reajustes mas acho que ja ajuda vá em data/spells e crie 1 arquivo chamado m1.lua local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 111) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 42) setAttackFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 2.5, 4) arr2 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 3, 0, 3, 0, 3, 0, 0, 0}, {0, 0, 0, 3, 0, 3, 0, 3, 0, 0, 0}, {0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } local area2 = createCombatArea(arr2) setCombatArea(combat2, area2) local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat3, COMBAT_PARAM_EFFECT, 142) setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -100, -1000, -100, -2000, 500, 500, 100.400, 200.1) local combat4 = createCombatObject() setCombatParam(combat4, COMBAT_PARAM_EFFECT, 141) setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -1, 0, -1, -10, 5, 5, 0.85, 1.95, -20, -40) local combat5 = createCombatObject() setCombatParam(combat5, COMBAT_PARAM_EFFECT, 16) setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, -1, 0, -1, -10, 5, 5, 0.85, 1.95, -20, -40) local combat6 = createCombatObject() setCombatParam(combat6, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat6, COMBAT_PARAM_EFFECT, 137) setCombatParam(combat6, COMBAT_PARAM_DISTANCEEFFECT, 23) setCombatFormula(combat6, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) local combat7 = createCombatObject() setCombatParam(combat7, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat7, COMBAT_PARAM_EFFECT, 59) setCombatParam(combat7, COMBAT_PARAM_DISTANCEEFFECT, 23) setCombatFormula(combat7, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) local combat8 = createCombatObject() setCombatParam(combat8, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat8, COMBAT_PARAM_EFFECT, 138) setCombatParam(combat8, COMBAT_PARAM_DISTANCEEFFECT, 138) setCombatFormula(combat8, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) local combat9 = createCombatObject() setCombatParam(combat9, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat9, COMBAT_PARAM_EFFECT, 112) setCombatFormula(combat9, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) local combat10 = createCombatObject() setCombatParam(combat10, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat10, COMBAT_PARAM_EFFECT, 79) setCombatParam(combat10, COMBAT_PARAM_DISTANCEEFFECT, 5) setCombatFormula(combat10, COMBAT_FORMULA_LEVELMAGIC, -2.5, 0, -3.0, 0) local combat11 = createCombatObject() setCombatParam(combat11, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat11, COMBAT_PARAM_EFFECT, 68) setCombatParam(combat11, COMBAT_PARAM_DISTANCEEFFECT, 2) setCombatFormula(combat11, COMBAT_FORMULA_LEVELMAGIC, -2.5, 0, -3.0, 0) local combat12 = createCombatObject() setCombatParam(combat12, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat12, COMBAT_PARAM_EFFECT, 137) setCombatParam(combat12, COMBAT_PARAM_DISTANCEEFFECT, 23) setCombatFormula(combat12, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) local combat13 = createCombatObject() setCombatParam(combat13, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat13, COMBAT_PARAM_EFFECT, 9) setCombatParam(combat13, COMBAT_PARAM_DISTANCEEFFECT, 25) setCombatFormula(combat13, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) local combat14 = createCombatObject() setCombatParam(combat14, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat14, COMBAT_PARAM_EFFECT, 22) setCombatParam(combat14, COMBAT_PARAM_DISTANCEEFFECT, 24) setCombatFormula(combat14, COMBAT_FORMULA_LEVELMAGIC, -2.5, 0, -3.0, 0) local combat15 = createCombatObject() setCombatParam(combat15, COMBAT_PARAM_EFFECT, 122) setCombatParam(combat15, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat15, COMBAT_FORMULA_LEVELMAGIC, -1, 0, -1, -10, 5, 5, 0.85, 1.95, -20, -40) arr15 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } local area15 = createCombatArea(arr15) setCombatArea(combat15, area15) local c = { ["Bulbasaur"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 20 } }, ["Ivysaur"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 40 } }, ["Ivysaur"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 40 } }, ["Venusaur"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 85 } }, ["Pidgey"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 5 } }, ["Pidgeotto"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 20 } }, ["Pidgeotto"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 20 } }, ["Pidgeot"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 65 } }, ["Rattata"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 1 } }, ["Raticate"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 25 } }, ["Spearow"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 10 } }, ["Fearow"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 50 } }, ["Pikachu"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 20 } }, ["Nidoran Femea"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 10 } }, ["Nidorina"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 30 } }, ["Nidoqueen"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 65 } }, ["Nidoran Macho"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 10 } }, ["Nidorino"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 30 } }, ["Nidoking"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 65 } }, ["Vulpix"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 15 } }, ["Ninetales"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 70 } }, ["Ponyta"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 20 } }, ["Rapidash"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 55 } }, ["Scyther"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 80 } }, ["Electabuzz"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 80 } }, ["Vaporeon"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 55 } }, ["Jolteon"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 55 } }, ["Flareon"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 55 } }, ["Shiny Venusaur"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 100 } }, ["Shiny Rattata"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 1 } }, ["Shiny Raticate"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 25 } }, ["Shiny Scyther"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 100 } }, ["Shiny Scyther"] = {x = { m1 = combat1, spell = "Quick Attack", minLv = 100 } }, ["Zapdos"] = {x = { m1 = combat2, spell = "Whirlwind", minLv = 100 } }, ["Articuno"] = {x = { m1 = combat2, spell = "Whirlwind", minLv = 150 } }, ["Charmander"] = {x = { m1 = combat3, spell = "Scratch", minLv = 20 } }, ["Charmeleon"] = {x = { m1 = combat3, spell = "Scratch", minLv = 40 } }, ["Paras"] = {x = { m1 = combat3, spell = "Scratch", minLv = 5 } }, ["Mankey"] = {x = { m1 = combat3, spell = "Scratch", minLv = 15 } }, ["Primeape"] = {x = { m1 = combat3, spell = "Scratch", minLv = 50 } }, ["Magmar"] = {x = { m1 = combat3, spell = "Scratch", minLv = 80 } }, ["Pinsir"] = {x = { m1 = combat3, spell = "Scratch", minLv = 45 } }, ["Kabuto"] = {x = { m1 = combat3, spell = "Scratch", minLv = 20 } }, ["Kabutops"] = {x = { m1 = combat3, spell = "Scratch", minLv = 80 } }, ["Snorlax"] = {x = { m1 = combat3, spell = "Scratch", minLv = 1 } }, ["Shiny Paras"] = {x = { m1 = combat3, spell = "Scratch", minLv = 5 } }, ["Charizard"] = {x = { m1 = combat4, spell = "Dragon Claw", minLv = 85 } }, ["Elder Charizard"] = {x = { m1 = combat4, spell = "Dragon Claw", minLv = 100 } }, ["Squirtle"] = {x = { m1 = combat5, spell = "Headbutt", minLv = 20 } }, ["Wartortle"] = {x = { m1 = combat5, spell = "Headbutt", minLv = 40 } }, ["Blastoise"] = {x = { m1 = combat5, spell = "Headbutt", minLv = 85 } }, ["Caterpie"] = {x = { m1 = combat5, spell = "Headbutt", minLv = 1 } }, ["Seel"] = {x = { m1 = combat5, spell = "Headbutt", minLv = 20 } }, ["Drowzee"] = {x = { m1 = combat5, spell = "Headbutt", minLv = 25 } }, ["Hypno"] = {x = { m1 = combat5, spell = "Headbutt", minLv = 55 } }, ["Cubone"] = {x = { m1 = combat5, spell = "Headbutt", minLv = 20 } }, ["Marowak"] = {x = { m1 = combat5, spell = "Headbutt", minLv = 55 } }, ["Tauros"] = {x = { m1 = combat5, spell = "Headbutt", minLv = 45 } }, ["Dragonair"] = {x = { m1 = combat5, spell = "Headbutt", minLv = 60 } }, ["Dragonite"] = {x = { m1 = combat5, spell = "Headbutt", minLv = 100 } }, ["Shiny Blastoise"] = {x = { m1 = combat5, spell = "Headbutt", minLv = 100 } }, ["Shiny Dratini"] = {x = { m1 = combat5, spell = "Headbutt", minLv = 20 } }, ["Metapod"] = {x = { m1 = combat6, spell = "String Shot", minLv = 15, distance = 3 } }, ["Butterfree"] = {x = { m1 = combat6, spell = "String Shot", minLv = 30, distance = 3 } }, ["Kakuna"] = {x = { m1 = combat6, spell = "String Shot", minLv = 15, distance = 3 } }, ["Beedrill"] = {x = { m1 = combat6, spell = "String Shot", minLv = 25, distance = 3 } }, ["Shiny Beedrill"] = {x = { m1 = combat6, spell = "String Shot", minLv = 25, distance = 3 } }, ["Weedle"] = {x = { m1 = combat7, spell = "Horn Attack", minLv = 1, distance = 3 } }, ["Goldeen"] = {x = { m1 = combat7, spell = "Horn Attack", minLv = 10, distance = 3 } }, ["Seaking"] = {x = { m1 = combat7, spell = "Horn Attack", minLv = 35, distance = 3 } }, ["Lapras"] = {x = { m1 = combat7, spell = "Horn Attack", minLv = 80, distance = 3 } }, ["Ekans"] = {x = { m1 = combat8, spell = "Bite", minLv = 15, distance = 3 } }, ["Ekans"] = {x = { m1 = combat8, spell = "Bite", minLv = 15, distance = 3 } }, ["Arbok"] = {x = { m1 = combat8, spell = "Bite", minLv = 35, distance = 3 } }, ["Kangaskhan"] = {x = { m1 = combat8, spell = "Bite", minLv = 80, distance = 3 } }, ["Omanyte"] = {x = { m1 = combat8, spell = "Bite", minLv = 20, distance = 3 } }, ["Omastar"] = {x = { m1 = combat8, spell = "Bite", minLv = 80, distance = 3 } }, ["Raichu"] = {x = { m1 = combat9, spell = "Mega Kick", minLv = 50 } }, ["Shiny Raichu"] = {x = { m1 = combat9, spell = "Mega Kick", minLv = 80 } }, ["Bulbasaur"] = {x = { m1 = combat10, spell = "Razor Leaf", minLv = 20 } }, ["Ivysaur"] = {x = { m1 = combat10, spell = "Razor Leaf", minLv = 40 } }, ["Venusaur"] = {x = { m1 = combat10, spell = "Razor Leaf", minLv = 85 } }, ["Squirtle"] = {x = { m1 = combat11, spell = "Bubbles", minLv = 20 } }, ["Wartortle"] = {x = { m1 = combat11, spell = "Bubbles", minLv = 40 } }, ["Blastoise"] = {x = { m1 = combat11, spell = "Bubbles", minLv = 85 } }, ["Caterpie"] = {x = { m1 = combat12, spell = "String Shot", minLv = 1 } }, ["Metapod"] = {x = { m1 = combat12, spell = "String Shot", minLv = 15 } }, ["Butterfree"] = {x = { m1 = combat12, spell = "String Shot", minLv = 30 } }, ["Weedle"] = {x = { m1 = combat13, spell = "Horn Attack", minLv = 1 } }, ["Kakuna"] = {x = { m1 = combat13, spell = "Horn Attack", minLv = 15 } }, ["Beedrill"] = {x = { m1 = combat13, spell = "Horn Attack", minLv = 30 } }, ["Zubat"] = {x = { m1 = combat14, spell = "Super Sonic", minLv = 10 } }, ["Golbat"] = {x = { m1 = combat14, spell = "Super Sonic", minLv = 30 } }, ["Sandshrew"] = {x = { m1 = combat15, spell = "Sand Attack", minLv = 20 } }, ["Sandslash"] = {x = { m1 = combat15, spell = "Sand Attack", minLv = 55 } }, ["Diglett"] = {x = { m1 = combat15, spell = "Sand Attack", minLv = 10 } }, ["Dugtrio"] = {x = { m1 = combat15, spell = "Sand Attack", minLv = 35 } }, ["Farfetchd"] = {x = { m1 = combat15, spell = "Sand Attack", minLv = 40 } }, ["Doduo"] = {x = { m1 = combat15, spell = "Sand Attack", minLv = 15 } }, ["Dodrio"] = {x = { m1 = combat15, spell = "Sand Attack", minLv = 45 } }, ["Onix"] = {x = { m1 = combat15, spell = "Sand Attack", minLv = 50 } }, ["Eevee"] = {x = { m1 = combat15, spell = "Sand Attack", minLv = 20 } }, ["Eevee"] = {x = { m1 = combat15, spell = "Sand Attack", minLv = 20 } }, ["Shiny Farfetchd"] = {x = { m1 = combat15, spell = "Sand Attack", minLv = 80 } }, ["Crystal Onix"] = {x = { m1 = combat15, spell = "Sand Attack", minLv = 80 } }, ["Mew"] = {x = { m1 = combat1, spell = "Test", minLv = 1, distance = 3 } }, ["Minotaur"] = {x = { m1 = combat1, spell = "Tesurmomt", minLv = 1, distance = 3 } } } function onCastSpell(cid, var) local summ = getCreatureSummons(cid) if #summ == 0 then return doPlayerSendCancel(cid, "Sorry, but you need a pokemon.") end for i = 1, #summ do for name, _ in pairs(c) do if getCreatureName(summ[i]):lower() == name:lower() then local con = c[name].x if getPlayerLevel(cid) < con.minLv then return doPlayerSendCancel(cid, "Sorry, but you must be level " .. con.minLv .. " or higher to cast.") and doSendMagicEffect(getThingPos(cid), 2) end local distance = (not con.distance) and 1 or con.distance if not isCreature(getCreatureTarget(cid)) or getCreatureTarget(cid) == summ[i] then return doPlayerSendCancel(cid, "Invalid target.") and doSendMagicEffect(getThingPos(cid), 2) end if getDistanceBetween(getThingPos(summ[i]), getThingPos(getCreatureTarget(cid))) > distance then return doPlayerSendCancel(cid, "Sorry, your pokemon is too far away.") and doSendMagicEffect(getThingPos(cid), 2) end if getPlayerStorageValue(cid, 23000) <= os.time() then doPlayerSetStorageValue(cid, 23000, os.time()+5) doCombat(summ[i], con.m1, numberToVariant(getCreatureTarget(cid))) doCreatureSay(cid, name .. ", " .. con.spell .. ".") end doPlayerSendCancel(cid, "Cooldown: "..(getPlayerStorageValue(cid, 23000)-os.time()).." sec.") doSendMagicEffect(getThingPos(cid), 2) end end end return true end TAG - em spells.xml cole isso <instant name="" words="m1" lvl="1" mana="0" prem="0" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="m1.lua"> Mais rep ali pra euu ;P
    3 pontos
  2. [Oficial] Real Global Map hello Galerinha do Xtibia, Venho aqui desponibilizar o mapa do Doidin (8.57 Só que editado com minhas ideias e na versão 8.60 OBS: Para rodar esse servidor No seu pc voce tem que ter 2GB+ de memória ram e em bom estado. ( nao recomendo abrir o otserv com o mapa editor aberto junto). Real Global Map: - Versão do Tibia:8.60 - Mapa global 95% full. - Quase todos os NPC's do Tibia Global. - Servidor com o mínimo de bugs possíveis. - Scripts arrumados. - Entre outros... Cidades: Quest's: Oque tem de melhor que o servidor do Doidin? Quase nada pois ele copio minhas coisas x) Algumas Print Screen: para quem nao conseguiu abrir o spolier e gostaria de ver as SS link abaixo: print screen.txt Créditos: - Doohz Rush - Doidin - Alissow - DoidinMapper - RenanSdc - TFS Team - Styller Team - Alissow Team - Feragon - Viana! - Azevedo ATUALIZADO DIA 28/10/2010 Scan: Arquivo Muito grande para fazer scan. Remeres Mapa Editor 2.0 ( nao use outra versão ou vai bugar o mapa: Download Aqui! Doohz Rush Server : Download Aqui! OBS: FOI ARRUMADO TODOS OS LOOT'S DOS MONSTROS, E FOI ADICIONADO A NOVA AREA DE ZÃO (OS Draken elite etc, todos configurados perfeitamente ) Atualização 2.2; Arrumado os Teleport's dos Drakens; Editado os seal's da POI (+ parecido com global); adicionado 1 npc de runa em northern de ZAO; arrumada as Houses, e bugs de Cormaya; Retirado BUG de money; Arrumado detalhes do mapa. MSN: Doohz_rush@hotmail.com Gostou? REP+ Ali do lado :arrow:
    2 pontos
  3. Syn IP Changer [7.6 - 8.7x] Imagem By Luan Henrique: Versões Suportadas: 7.6 até 8.7x! Créditos: Syntax Talaturen de IP Changer Talaturen IP's Changer é uma aplicação para substituir o host na tibiaclient. Ele é criado por Talaturen (meu amigo) com a ajuda do Kibe (eu) com a edição de memória. É escrito em C + + usando a biblioteca GUI Qt 4.7. É open source e licenciado sob a licença GNU GPL (General Public License) v2. Deve ser executado em sistemas Windows e * nix. Ele trabalha com o protocolo de 7,6, 7,8, 7,92, 8,0, 8,1, 8,11, 8,2, 8,21, 8,22, 8,3, 8,31, 8,4, 8,41, 8,42, 8,5, 8,52, 8,54, 8,55, 8,57, 8,61, 8,62 e 8,7. Informações sobre folhas de estilo: Qt 4.7: Qt Style Sheets Versão Atual: 3.7 ChangeLog (3.7): * 8,7 suporte ao cliente. Download: Attached Files * File Type: < Link removido - Acusação de vírus aparentemente inofensivo > Se não funcionar : http://otland.net/at...-ip-changer.exe Se gostou porfavor REP ++ Se você não posta é porque você é um mal agradecido Vlw xtibia , se for area errada Mova ! EDIT@ Scan : Here !
    2 pontos
  4. Meu ultimo tutorial : Click Aqui ! ala ae galerinha Xtibiana , estou aqui pra aprensenta meu tutorial e ensinar a vocês como fazer montanhas legais , só que vou avisando , esse tutorial vai ser dividido em 3 partes , começei pela base que é a parte mais importante antes de fazer qualquer coisa em montanhas legas , então vamos lá ! Imagem pra mostrar aos que não querem ver o video : (Talves a imagem disperte o interese pra ver o video) A imagem está cortada! Bem , pra quem não sabe esse quadrado que você está vendo , se chama "auto borde" ele serve para fazer bordas automaticas , como funciona : Basta você clikar nele e passar no contorno do ground... Bem pessoal , por hoje é só ... Minha proxima aula : Aula 4 part 2 [Montanhas pequenas] Até a proxima amigos ! Porfavor se gostarem clike aqui : Recomende tambem o tópico Se vocês perceberam estou fazendo uma apostila pros principiantes , que sabem fazer mapas mas não sabe deixar legal , ou estaja com dificudades
    2 pontos
  5. Alissow OTs 4.11! Esta versão 4.11 foi meio apressada, só adicionamos as features novas do 8.6. Aproveitem. Créditos: Alissow Comedinha Luis Nirk TFS Team Viniply Xedegux Sobre o OT/Mapa: Principais quests: -Annihilator -Inquisition Quest -Pits of inferno -Demon Oak -Solar axe quest -HOTA -MPA quest -The Challenger Monstros: -Total monstros: 10292 -Total spawn: 5587+ Cidades: -12 Cidades -200 Houses+- Raids/Invasões: -Rat -Orshabaal -Ghazbaran -Giant spider/The old window -Ferumbras -Morgaroth Spells: -Magias editadas para balanceamento das vocações Changelog Atualização [3.4 BETA]: - Removido áreas não usadas no mapa, diminuindo o tamanho em MBs - Adicionado Anti Magebomb System - Corrigido bugs no npc addon - Adicionado sistema onde os npcs falam sozinhos (Igual como foi adicionado no global). First ;] - Adicionado Elf village em Venonh ( bem parecida com a do global ;]) - Potions desaparecem quando usadas - Corrigido sistema de Up - Corrigido sistema de Monster Counter - Nova dragon lair em Mirand Theraan (Subsolo) - Adicionado porta de level, que protege leveis baixos acessarem os demons da cidade de Flam - Ampliado deserto da cidade de Mirand Theraan - Adicionado Ilha de Goroma - Adicionado Forbidden islands - Ampliado floresta da cidade de alfon e colocado área de macacos parecida com Banuta. - Ligação de alfon com Mirand Theraan - Corrigido bugs reportados nas portas das casas - Corrigido posição dos buracos e escadas - Adicionado beds em todas as casas - Corrigido bugs em casas de yalahar - Adicionado Blue legs quest ( Koshei The Deathless global) - Corrigidas quase todas as areas de Yalahar - Teleports em Yalahar substituidos por NPCs de teleport do global - Corrigido pequenos erros no npc Capitao Coruja, e adicionado viagem à goroma - diminuido ataque do Eye of the seven - Ice rapier agora quebra - Corrigido npc Banker - Adicionado quase todos os items 8.5 - Adicionado medusa - Adicionado Todos os outfits novos - Corrigido NPC Banker (que dava dinheiro) Script By Ta4e - Corrigido Annihilator Quest - Adicionado Notice System - Adicionado novo distro, compilado por Comedinha Atualização nº 2 [3.4]: Otserv atualizado... Corrigido debugs frequentes Corrigido debugs na magia exevo pan Corrigido bugs nos npcs Roy e Firewalker Adicionados mais novos items 8.5, agora temos 90% dos items novos... Atualização 3.5 [06/08/2009]: - Cidade principal (dorion) totalmente reformada - corrigido blue legs quest - Corrigido alavancas de compra de potions - Adicionado alavancas de compra de runas - Corrigido npc Bank - Adicionado NPC King Arthas, que vende promotion - Adicionado npc Rashid, que vende items. - Arrumado Wild Growth rune - Arrumado Utani Hur - Magias reajustadas - Novo estilo de server save - Ilha de mystic reformulada (by Nirk) - Adicionado nova magia para knights "Exkordium". - Adicionado nova magia para mages (promoted) "Exura Seil". - Adicionado nova magia para mages (promoted) "Exevo Gran Frigo". (arrumar -> sem exhausted nem gasta mana) - Adicionados novos monstros. - Adicionado quest challenge (lvl 250) - Corrigido bug do Dead Cyclops - Bug aol Arrumado - Poi Modificada - Corrigido teleports ghouls yalahar - Modificada demon helmet quest, assim como o premio da quest - Corrigido nome do Hallowed axe - Corrigido bug das houses - Corrigido bug dos items andaveis Atualização Patch 3.5.1 [07/08/2009]: - Corrigido erro na inicialização do Ot - Bug das potions corrigido - Bug do aol corrigido (pelomenos pra mim) - Bug dos outfits corrigido - Corrigido erros nas escadas na ilha PvP - O monstro The Fastest Turtle agora não morre, se tornando um monstro apenas para atrapalhar - Retirada suposta quest dos 3 hellhounds e 1 minishabaal - Adicionado teleport de retorno na Ferumbras Tower - Corrigido posições da raid de The old widow - Corrigido bug das escadas nas minas de demons - Corrigido alguns bugs vistos no mapa Atualização 3.6 [10/08/2009]: - Arrumado bugs criticos - Arrumado comando !promote/!demote - Atualizado Items.xml - Bug das Beds arrumado - Modificações na cidade, como, nature e caves - Nova sala de treino - Adicionado comando !highscores Atualização 3.7! Beta [18/12/2009]: - Guildhall support (Elf) - Nova deathlist(Elf, OpenTibia SVN) - Frags funcionando (Elf) - Atualizado monstros e items (slawkens, KaczooH, Elf) - Novas talkactions: /commands, /wp, /storage, /config, /promote & /demote. (slawkens) - Novas funções lua - Novos creatureevents (slawkens, Elf) - Novos configuráveis (Elf, slawkens) - Modificado ataque de monstros existentes (especialmente outfits e velocidade) (Elf) - Monstros reorganizados & atualizados (Nem todos) (slawkens) - Melhorado sistema de banimentos (Elf) - Reescrita janela de Rule Violation (Elf) - Arrumado Stamina (Elf, OpenTibia SVN) - Casas agora são salvas nas modificações do dono (Elf) - Escadas de yalahar funcionando perfeitamente (Elf, Talaturen) - Sistema de nado & waterball completo (slawkens) - Monstros invisiveis não são mais mandandos ao client (anti bot) (OpenTibia SVN) - Anti-dash (OpenTibia SVN) - Sistema de leilão de casas, possibilidade de usar site para vender casas (house_actions table) (OpenTibia SVN, Elf) - Salvando bot actions para /logs/bots por cada player. Por exemplo, bot pode enviar mensagem com mais de 255 caracteres (slawkens) - Novos raid events- item spawning & disappearing and more (Elf) - Modificações no NPC system (Elf) - NPCs OutfitModule (Elf) - Completo 8.53 support, com wars (Elf) - Completo 8.54 support (Elf) - Arrumado NPC voices (Elf) - Players serão informados quando o Gamemaster logar ou ficar invisivel (slawkens) - Arrumado Player Deaths (Elf, slawkens) - Arrumado Abuso de PZ (slawkens) - Portas agora não ajudam players a entrar em PZ (slawkens) - Magic level formula (OpenTibia SVN, KaczooH) - Memory leaks (Elf) - Queries optimization (Talaturen) - Janelas podem ser abertas do lado de fora da casa- agora apenas GMs podem fazer isso (slawkens) - arrumado Efeitos para o Ghost (GM)- configuravel (slawkens) - Corrigido >> Ghost debugging players (OpenTibia SVN, Elf) - Corrigido erro na promotion (Elf) - Corrigido vários erros no console. (slawkens) - Corrigido Spam de magias (Elf) - Corrigido stamina premium (Elf) - Corrigido Clean (Elf) - Corrigido vários outfits (Elf) - Corrigido Ghost (Elf) - Todas as correções no OpenTibia SVN (Open Tibia SVN, Elf) - Corrigido Todos os crashes possiveis (Elf) - Npcs Corrigidos (Comedinha) - Distro Reformulado (comedinha) - Bugs de reports arrumados (Comedinha) - Novos outfits (Alissow) - Actions Arrumadas (Comedinha) - Libs trocadas (Comedinha) - Talkactions bugadas arrumadas (Comedinha) - Reforma na área Sul da cidade Dorion (Alissow) - Adicionado monstros 8.54 (Alissow) - Corrigido bug das potions infinitas (Alissow) Atualização 3.7 Patch 1 [27/12/2009]: - Rampa na frente da loja de foods retirada (Alissow) - Arrumado bugs de mapa em anknor (Alissow) - Bug na Lib dos npcs corrigido (Alissow) - Bug do acc manager arrumado! (Alissow) - Magias "Exkordium" e "Ice Storm" arrumadas (Alissow) - Monstros 8.54 funcionando (Alissow) - 2º Addon Yalaharian arrumado (Alissow) - Addons Warmaster adicionados no NPC Addoner (Alissow) - Pequenas modificações na cidade principal, Dorion, para melhora da jogabilidade (Alissow) - Comando /Deathlist retirado (Alissow) - Magic Wall Rune arrumada (Alissow) - Quest Annihilator arrumada (Alissow) - "Your depot contain x items" Arrumado (Alissow) - Addons reorganizados, mais facil aggora (Alissow) - Tempo de Red skull e Black skull reduzidos para 24 e 42 horas (Alissow) - Reduzida porcentagem de morte (Alissow) - Acrescentado chance de critical hits (Alissow) - ShowHealingDamage Adicionado (Alissow) - Várias partes do mapa remapeadas (Alissow) - NPCs para recarga de Soft boots & Firewalker boots arrumados [Não testado] (Alissow) - Comando !frags arrumado! (Alissow) - Agora é possivel fazer addons sem precisar do comando !buypremium (Alissow) Atualização 3.8 [17/01/2010]: - Arrumado bug nas escadas do Dlair (Alissow) - Todos os bugs nos NPCs arrumados (Comedinha) - Novas talkactions [a pedidos] (Comedinha) - Deathlist arrumada (Comedinha) - Novo Distro (Comedinha) - MySQL Atualizada (Comedinha) - Firewarker boots não é mais gasta quando não está usando (Comedinha) - Problemas com items no Rashid arrumados (Alissow, Comedinha, Comunidade) - O NPC Banker foi corrigido, mas achei mais seguro retira-lo, visto que ninguem usava e poderia causar outro tipo de bug - Ilha (Sim aqui é uma ilha) de Zao adicionada (Alissow, Barker) - Monstros 8.54 aperfeiçoados (Alissow, Markithu, Zkum) - Reduzido danos da magia Exkordium (Alissow) - Os npcs Dark Rodo e Rachel vendem Blank Runes (Alissow) - Magias que não hitavam anteriormente foram arrumadas (Alissow) - Comando !buypremium arrumado (Alissow) - Arena PVM - Mais conhecida como Arena Svargrond - FUNCIONANDO!!! (Alissow) - Magia LightChain Retirada (Alissow) - Adicionado um sisteminha legal no templo (Alissow) - NPC Rashid retirado (Alissow) Atualização 3.8 Minor Patch 1 [17/01/2010]: - Comando Deathlist retirado novamente, fizemos testes equivocados. Se você é uma das 16 pessoas que baixou a versão anterior (3.8) não precisa baixar esta, basta retirar o comando !deathlist e /deathlist do seu Talkactions.xml, Os comandos causam quedas no servidor. Atualização 3.9 [15/02/2010]: - Cidade principal (Dorion) reformada, novo templo, novo depot, novo porto, novos npcs :] (Alissow) - Adicionado Reputation System (Comedinha, Cybermaster) - Adicionado !bless system (Comedinha) - /info melhorado (Comedinha) - Jail System (Comedinha) - Bug chatinho nos tiles pretos arrumado. - Magic Wall Funcionando! (Alissow) - Agora você pode fazer bolos e pães :] (Comedinha, Jean, Ojani) - Adicionado sistema de casamento (Comedinha, ScorpiOOn93, Alissow) - Loot The Fastest Turtle diminuido (Alissow) - Loot e experiencia do Feromous mais baixo (Alissow) - Sistema de parceis para Dorion funcionando (Alissow) - Guildwar System (Comedinha) - Anti MageBomb System (Comedinha, Huggen) - Adicionado Anti Nuker - Esse funciona! (Comedinha) - Adicionado Map Marks, para os players novos (Alissow, Comedinha) Atualização 4.0 [15/02/2010]: - Cidade Mountain totalmente reformada (Alissow) - Montanha de Goblins de Dorion reformada (Alissow) - Demonic Castle de Dorion reformado (Alissow) - Cidade de Venonh modificada (Luis) - Distro atualizado, funcionando nos clients 8.54, 8.55, 8.56 e 8.57 (Comedinha) - Comando !bless retirado (Alissow) - O NPC Ermes não vende mais items de decoração (Alissow) - Arrumado bugs na Ferumbras Tower (Alissow) - O comando !AFK on agora mantem o player parado (Comedinha) - Arrumado bugs nas escadas da área de DeathFans (Alissow) - Comando !Deathlist funcionando! (Alissow, Doidinmapper, GT Thionix) - Sistema de REP atualizado (Comedinha) - Sistema de Polls (Comedinha) - Banco por comandos (Comedinha) - Novos comandos de addon e accounts (Comedinha) - Sistema de futebol completo! (Comedinha) - Sistema Antibot (Comedinha) - Magia Spared Hur modificada (Alissow, Orzeleagle) - Adicionado sistema de montaria (Alissow, unknown666) - Adicionado Canivetes (Alissow, Siramix) - Nova hunt Subaquatica (Luis) Atualização 4.11! [11/07/2010]: - Versão 8.6, todos os items, outfits e monstros novos (Comedinhasss, Fireelement) - Adicionados os novos monstros 8.6 (Alissow) - Bug das potions arrumado (Comedinha, Matheusmkalo, Gabriel linhares, Fireelement) - Erros das runas arrumado (Comedinha, Gabriel linhares, Matheusmkalo, fireelement) Download Servidor: 4shared Tamanho: 17,416 KB Download: http://www.4shared.com/file/ez8XKrju/860_Alissow_Ots_411.html Link protegido: http://lix.in/-8d4bc0 Scan VirusTotal: http://www.virustotal.com/pt/analisis/983abb574dbb957a75aa1fd29eb804065f775e6a0c43216aa277686d32bce22a-1263702373 Atenção - Acc do God: god/god - LEIA o tópico antes de postar qualquer coisa ou duvida - Reportem se houver algum bug - A database fica na pasta schemas+Database - Proibido o uso do nosso distro sem o nosso consenso, obrigado. Andei percebendo que há muitos mapas feitos por mim em outros servidores postados aqui no xtibia, eu não sei se vocês sabem, mas isso é PLÁGIO. Eu não sou uma pessoa egoista, tudo que eu posto aqui no XTibia é para ser compartilhado, mas desde que mantenham os devidos créditos. Será denunciado qualquer tipo de "roubo" sem minha autorização para beneficio próprio. Eu sei que vocês não se importam muito com isso, eu também não deveria me importar, mas é o tempo e a dedicação de outra pessoa que vocês estão roubando, então peço gentilmente aos que tem conhecimento desses mapas, que me apontem. Não tem graça trabalhar horas e horas e ser roubado em dois minutos.
    1 ponto
  6. locosporot

    Como Criar Quest Pelo Rme

    Ola Xtibianos Vou mostrar como fazer com o Remere's map editor. Clique com o botão direito no Chest da quest e selecione properties. Em ActionID coloque 2000 Em UniqueID coloque qualquer outro storageID que você não esteja usando Por exemplo: No meu usamos um sistema como este e todas as quests tem UniqueID 20000+ Quest 1: UniqueID = 20001 Quest 2: UniqueID = 20002 E assim por diante... Imagem: XXXX = StorageID Depois de feito isso, você pode colocar quais itens quiser na sua quest. Como esta: -Você pode adicionar um item, vários itens, ou um recipiente cheio de itens. -É um sistema muito bom e fácil de usar, se você souber como funciona. -O quest system só funciona em TFS versão 0.3+ -Lembrando que a quest com esse sistema não funciona com GMs+, ou seja, só funciona com players normais. Creditos: Caio Felipe Msn para contato: caio_games_10@hotmail.com
    1 ponto
  7. Vodkart

    [ Talkaction ] !guild List

    Fala galera vim lhe apresentar 2 comando para seu servidor. talkactions\script guildlist.lua function onSay(cid, words, param, channel) local str = "" if param == '' then local lista = db.getResult("SELECT `name` FROM `guilds`;") if(lista:getID() ~= -1) then repeat str = str .. lista:getDataString("name") .. "\n" until not lista:next() lista:free() doShowTextDialog(cid, 2529, str == "" and "Não existem guilds no servidor." or str) return true end end local id = getGuildId(param) if id then local lista = db.getResult("SELECT `name`, `rank_id` FROM `players` WHERE `rank_id` IN (SELECT `id` FROM `guild_ranks` WHERE `guild_id` = " .. id .. ");") if(lista:getID() ~= -1) then repeat local rank = db.getResult("SELECT `name`, `level` FROM `guild_ranks` WHERE `id` = " .. lista:getDataInt("rank_id") .. " ORDER BY `level` DESC, `name` ASC;") str = str .. lista:getDataString("name") .. " [" .. rank:getDataString("name") .. "]\n" rank:free() until not lista:next() lista:free() doShowTextDialog(cid, 2529, str) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Não há jogadores nesta guild.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Está Guild não existe.") end return true end talkactions.xml adicione a tag: <talkaction words="!glist" script="guildlist.lua"/> --- Deletar guilds do server que não tem mais players(foram deletadas): Data/globalevents/script deleteguild.lua function onThink(interval, lastExecution) local guilds = db.getResult("SELECT `name` FROM `guilds`;") if(guilds:getID() ~= -1) then repeat local delete = db.getResult("SELECT `name`, `rank_id` FROM `players` WHERE `rank_id` IN (SELECT `id` FROM `guild_ranks` WHERE `guild_id` = " .. getGuildId(guilds:getDataString("name")) .. ");") if(delete:getID() < 1) then db.executeQuery("DELETE FROM guilds WHERE id = "..getGuildId(guilds:getDataString("name"))) end until not guilds:next() guilds:free() end return true end globalevents.xml <globalevent name="Guild Delete" interval="36000" event="script" value="deleteguild.lua"/>
    1 ponto
  8. Marcell

    Quick-List (8.6 Até 8.62)

    Quick-List Oque é uma quick-list ? R- é uma lista com os melhores tópicos da area em um só. Download OTServers 8.62 The Crystal Server V0.2.0 Sleeper Map 0.6 Download OTServers 8.61 We Do Server 0.1.2 Download OTServers 8.6 Mix Yourots 1.0.0 Alissow Ots 4.11 [11/07/2010] 8.6 Completo! Snowz Thyrania 3.1 The Forgotten Server (Crying Damson) Real Server 3.2 The Subwat® Riot Server Baiak Yurots Download Utilitários 8.6 até 8.62 Tibia Client 8.6 Comedinha IPChanger Tirus Ip-Changer Asprate's Multi Ip Changer atenção: apenas tópicos e ots confiantes estarei postando, NENHUM servidor que eu postar aqui na lista, tera virus, portanto, não adianta vir falando: tem virus em tal ot, porque eu passo scan em todos e revejo. ao longo do tempo. iremos adicionando mais downloads...até!
    1 ponto
  9. MatheusGlad

    [Systems] Pokemon Systems

    Scripts para TFS 0.3.6pl1 NAO FOI TESTADO EM OUTRA! Preview: Antes de tudo, va na pasta data/lib e adicione um script.lua com o nome de pokeLib e adicione isso: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- pokein, pokeout = 2222,2223 function doRemoveTile(pos)-- Script by mock pos.stackpos = 0 local sqm = getTileThingByPos(pos) doRemoveItem(sqm.uid,1) end function doCreateTile(id,pos) -- By mock doAreaCombatHealth(0,0,pos,0,0,0,CONST_ME_NONE) doCreateItem(id,1,pos) end function getPosDirs(p, dir) -- By MatheusMkalo return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or dir == 3 and {x=p.x, y=p.y+1, z=p.z} or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or dir == 5 and {x=p.x+1, y=p.y, z=p.z} or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or dir == 7 and {x=p.x, y=p.y-1, z=p.z} or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z} end function doItem(pos,a,d)-- Script by mock doCreateTile(460,pos) pos.stackpos = 0 local c = getTileThingByPos(pos) doItemSetAttribute(c.uid, "aid", a) end function getDescription(uid) for i,x in pairs(getItemDescriptions(uid)) do if i == "special" then return x end end end function findLetter(string, letter) for i = 1, #string do if string:sub(i, i) == letter then return i end end end function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function getPosDirs(p, dir) return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or dir == 3 and {x=p.x, y=p.y+1, z=p.z} or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or dir == 5 and {x=p.x+1, y=p.y, z=p.z} or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or dir == 7 and {x=p.x, y=p.y-1, z=p.z} or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z} end function canSummon(cid) local pos = getCreaturePosition(cid) local state = false for i = 1, 8 do if isWalkable(getPosDirs(getCreaturePosition(cid), i)) then state = true end end return state end function isPlayerSummon(cid, uid) if getCreatureMaster(uid) == cid then return TRUE end return FALSE end function getSummonLifes(cid) for _,x in pairs(getCreatureSummons(cid)) do return getCreatureHealth(x), getCreatureMaxHealth(x) end end function getItemsInContainerById(container, itemid) -- Function By Kydrai local items = {} if isContainer(container) and getContainerSize(container) > 0 then for slot=0, (getContainerSize(container)-1) do local item = getContainerItem(container, slot) if isContainer(item.uid) then local itemsbag = getItemsInContainerById(item.uid, itemid) for i=0, #itemsbag do table.insert(items, itemsbag[i]) end else if itemid == item.itemid then table.insert(items, item.uid) end end end end return items end function addPokeball(cid, pokename, maxh) local s = doPlayerAddItem(cid, pokein) doItemSetAttribute(s, "poke", "This is "..pokename.."'s pokeball. HP = ["..maxh.."/"..maxh.."]") doItemSetAttribute(s, "description", "Contains a " .. pokename) end function getPokeOutLive(cid) dat = {} for slot = CONST_SLOT_FIRST, CONST_SLOT_LAST do local item = getPlayerSlotItem(cid, slot) if isContainer(item.uid) then local items = getItemsInContainerById(item.uid, pokeout) for _, ui in pairs(items) do if getItemAttribute(ui, "poke"):sub(#getItemAttribute(ui, "poke")) == "." then table.insert(dat, ui) end end end if item.itemid == pokeout then if getItemAttribute(item.uid, "poke"):sub(#getItemAttribute(item.uid, "poke")) == "." then table.insert(dat, item.uid) end end end return dat end Go/Back Pokeball System By: MatheusMkalo Vá em data/actions/scripts e adicione um arquivo.lua com o nome de goback.lua Depois de ter feito isso, adicione o seguinte script no arquivo goback.lua: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- local pokes = { ["Dragon"] = {level = 1, go = "Vai Dragon", back = "Volte Dragon."}, ["Demon"] = {level = 8, go = "Vai Demon", back = "Volte Demon."}, ["Dragon Lord"] = {level = 8, go = "Vai Dragon Lord", back = "Volte Dragon Lord."}, ["Rat"] = {level = 8, go = "Vai Rat", back = "Volte Rat."}, } local msgunica = false function onUse(cid, item, frompos, item2, topos) local maxh = tonumber(getItemAttribute(item.uid, "poke"):match("/(.+)]")) local health = tonumber(getItemAttribute(item.uid, "poke"):match("%[(.-)/")) if item.itemid == pokeout then if health ~= nil and health <= 0 then return doPlayerSendCancel(cid, "This pokemon is dead.") end if #getCreatureSummons(cid) >= 1 then for _,z in pairs(getCreatureSummons(cid)) do if getItemAttribute(item.uid, "poke"):find(getCreatureName(z)) then doTransformItem(item.uid, pokein) if msgunica then doCreatureSay(cid, "Back, " .. getCreatureName(z), TALKTYPE_SAY) else doCreatureSay(cid, pokes[getCreatureName(z)].back, TALKTYPE_SAY) end doItemSetAttribute(item.uid, "poke", getItemAttribute(item.uid, "poke"):sub(1, findLetter(getItemAttribute(item.uid, "poke"), ".")) .. " HP = ["..getCreatureHealth(z).."/"..getCreatureMaxHealth(z).."]") setPlayerStorageValue(cid, 61204, 0) doSendMagicEffect(getCreaturePosition(z), 10) return doRemoveCreature(z) end end end elseif item.itemid == pokein then if getTilePzInfo(getCreaturePosition(cid)) then return doPlayerSendCancel(cid, "You can't use pokeball in Protection Zones.") end if not canSummon(cid) then return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHROOM) end if getPlayerStorageValue(cid, 63215) >= 1 then return doPlayerSendCancel(cid, "You can't use pokeball while surfing.") end if getPlayerStorageValue(cid, 62314) >= 1 then return doPlayerSendCancel(cid, "You can't use pokeball while flying.") end if getPlayerStorageValue(cid, 59987) >= 1 then return doPlayerSendCancel(cid, "You can't use pokeball while riding.") end for i,x in pairs(pokes) do if #getCreatureSummons(cid) >= 1 then return doPlayerSendCancel(cid, "You already summoned a pokemon.") end if i == getItemAttribute(item.uid, "poke"):sub(9, findLetter(getItemAttribute(item.uid, "poke"), "'")-1) then if getPlayerLevel(cid) >= x.level then pk = doSummonCreature(i, getThingPosition(cid)) doConvinceCreature(cid, pk) setCreatureMaxHealth(pk, tonumber(getItemAttribute(item.uid, "poke"):match("/(.+)]"))) doCreatureAddHealth(pk, maxh) doCreatureAddHealth(pk, health-maxh) doTransformItem(item.uid, pokeout) if msgunica then doCreatureSay(cid, "Go, " .. i, TALKTYPE_SAY) else doCreatureSay(cid, x.go, TALKTYPE_SAY) end doItemSetAttribute(item.uid, "poke", getItemAttribute(item.uid, "poke"):sub(1, findLetter(getItemAttribute(item.uid, "poke"), "."))) doSendMagicEffect(getCreaturePosition(pk), 10) setPlayerStorageValue(cid, 61204, 1) registerCreatureEvent(pk, "DiePoke") registerCreatureEvent(cid, "PlayerPokeDeath") registerCreatureEvent(cid, "LogoutPoke") break else doPlayerSendCancel(cid, "Only players level "..x.level.." or higher can use this pokemon.") end end end end return TRUE end Depois, va em actions.xml e adicione a seguinte tag: <action itemid="2222;2223" event="script" value="goback.lua"/> Sendo que 2222 e 2223 são, respectivamente, o id da pokeball que ira "chamar" o pokemon, e o outro o id da pokeball que ira retirar o pokemon. (Seriam as pokebolas acesas e apagadas do PO) Agora, para evitar alguns bugs, va em data/creaturescripts/scripts e crie um arquivo.lua com o nome goback.lua e bote o seguinte script dentro: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- function onLogout(cid) local health,maxhealth = getSummonLifes(cid) if getPlayerStorageValue(cid, 61204) >= 1 and getPlayerStorageValue(cid, 63215) <= 0 and getPlayerStorageValue(cid, 62314) <= 0 and getPlayerStorageValue(cid, 59987) <= 0 then setPlayerStorageValue(cid, 61205, health) setPlayerStorageValue(cid, 61206, maxhealth) setPlayerStorageValue(cid, 61204, 0) setPlayerStorageValue(cid, 61207, 1) end if getPlayerStorageValue(cid, 62314) >= 1 then pos = getCreaturePosition(cid) for i = 1,8 do doRemoveTile(getPosDirs(getCreaturePosition(cid), i)) end doRemoveTile(getCreaturePosition(cid)) setPlayerStorageValue(cid, 61941, pos.x) setPlayerStorageValue(cid, 61942, pos.y) setPlayerStorageValue(cid, 61943, pos.z) end return TRUE end function onLogin(cid) local pokes = { ["Dragon"] = {lookType=267, speed = 1500}, ["Rat"] = {lookType=267, speed = 500}, } local pokesfly = { ["Dragon"] = {lookType = 216, speed = 500}, } local pokesride = { ["Dragon Lord"] = {lookType=4, speed = 3000}, ["Dragon"] = {lookType=4, speed = 500}, } if getPlayerStorageValue(cid, 62314) >= 1 then doCreateTile(460, {x=getPlayerStorageValue(cid, 61941), y=getPlayerStorageValue(cid, 61942), z=getPlayerStorageValue(cid, 61943)}) doTeleportThing(cid, {x=getPlayerStorageValue(cid, 61941), y=getPlayerStorageValue(cid, 61942), z=getPlayerStorageValue(cid, 61943)}) for i = 1,8 do doItem(getPosDirs(getCreaturePosition(cid), i), 65119+i) end local item = getPokeOutLive(cid)[1] local a = getItemAttribute(item, "poke"):match("This is (.-)'s pokeball.") doSetCreatureOutfit(cid, pokesfly[tostring(a)], -1) doChangeSpeed(cid, pokesfly[tostring(a)].speed) registerCreatureEvent(cid, "PlayerPokeDeath") end if getPlayerStorageValue(cid, 63215) >= 1 then local item = getPokeOutLive(cid)[1] local a = getItemAttribute(item, "poke"):match("This is (.-)'s pokeball.") doSetCreatureOutfit(cid, pokes[tostring(a)], -1) doChangeSpeed(cid, pokes[tostring(a)].speed) registerCreatureEvent(cid, "PlayerPokeDeath") end if getPlayerStorageValue(cid, 59987) >= 1 then local item = getPokeOutLive(cid)[1] local a = getItemAttribute(item, "poke"):match("This is (.-)'s pokeball.") doSetCreatureOutfit(cid, pokesride[tostring(a)], -1) doChangeSpeed(cid, pokesride[tostring(a)].speed) registerCreatureEvent(cid, "PlayerPokeDeath") end if getPlayerStorageValue(cid, 61207) >= 1 then local item = getPokeOutLive(cid)[1] doTransformItem(item, pokein) doRemoveCondition(cid, CONDITION_OUTFIT) doItemSetAttribute(item, "poke", getItemAttribute(item, "poke"):sub(#getItemAttribute(item, "poke")) ~= "]" and getItemAttribute(item, "poke") .. " HP = ["..getPlayerStorageValue(cid, 61205).."/"..getPlayerStorageValue(cid, 61206).."]" or getItemAttribute(item, "poke")) setPlayerStorageValue(cid, 61207, 0) end return TRUE end function onDeath(cid, deathList) local owner = getCreatureMaster(cid) doPlayerSendTextMessage(owner, 22, "Your pokemon died.") for slot = CONST_SLOT_FIRST, CONST_SLOT_LAST do local item = getPlayerSlotItem(owner, slot) if isContainer(item.uid) then local items = getItemsInContainerById(item.uid, pokeout) for _, ui in pairs(items) do if getItemAttribute(ui, "poke"):sub(#getItemAttribute(ui, "poke")) == "." then local maxh = tonumber(getItemAttribute(ui, "poke"):match("/(.+)]")) doItemSetAttribute(ui, "poke", getItemAttribute(ui, "poke"):sub(1, findLetter(getItemAttribute(ui, "poke"), ".")) .. " HP = [0/"..getCreatureMaxHealth(cid).."]") end end end if item.itemid == pokeout then if getItemAttribute(item.uid, "poke"):sub(#getItemAttribute(item.uid, "poke")) == "." then local maxh = tonumber(getItemAttribute(item.uid, "poke"):match("/(.+)]")) doItemSetAttribute(item.uid, "poke", getItemAttribute(item.uid, "poke"):sub(1, findLetter(getItemAttribute(item.uid, "poke"), ".")) .. " HP = [0/"..getCreatureMaxHealth(cid).."]") end end end doRemoveCreature(cid) setPlayerStorageValue(owner, 61207, 0) setPlayerStorageValue(owner, 61204, 0) return FALSE end Agora adicione outro arquivo.lua na pasta data/creaturescripts/scripts com o nome de playerpdeath e bote esse script: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- function onDeath(cid) local health,maxhealth = getSummonLifes(cid) if #getCreatureSummons(cid) >= 1 then setPlayerStorageValue(cid, 61205, health) setPlayerStorageValue(cid, 61206, maxhealth) setPlayerStorageValue(cid, 61204, 0) setPlayerStorageValue(cid, 61207, 1) end if getPlayerStorageValue(cid, 63215) >= 1 then setPlayerStorageValue(cid, 61205, getPlayerStorageValue(cid, 61210)) setPlayerStorageValue(cid, 61206, getPlayerStorageValue(cid, 61209)) setPlayerStorageValue(cid, 61204, 0) setPlayerStorageValue(cid, 63215, 0) setPlayerStorageValue(cid, 61207, 1) end if getPlayerStorageValue(cid, 62314) >= 1 then setPlayerStorageValue(cid, 61205, getPlayerStorageValue(cid, 61262)) setPlayerStorageValue(cid, 61206, getPlayerStorageValue(cid, 61263)) setPlayerStorageValue(cid, 61204, 0) setPlayerStorageValue(cid, 62314, 0) setPlayerStorageValue(cid, 61207, 1) end if getPlayerStorageValue(cid, 59987) >=1 then setPlayerStorageValue(cid, 61205, getPlayerStorageValue(cid, 59988)) setPlayerStorageValue(cid, 61206, getPlayerStorageValue(cid, 59989)) setPlayerStorageValue(cid, 61204, 0) setPlayerStorageValue(cid, 59987, 0) setPlayerStorageValue(cid, 61207, 1) end return TRUE end Depois va em creaturescripts.xml e adicione as seguintes TAGS: <event type="death" name="PlayerPokeDeath" event="script" value="playerpdeath.lua"/> <event type="death" name="DiePoke" event="script" value="goback.lua"/> <event type="logout" name="LogoutPoke" event="script" value="goback.lua"/> <event type="login" name="LoginPoke" event="script" value="goback.lua"/> Catch Pokemon System By: MatheusMkalo Vá em data/actions/scripts e adicione um arquivo.lua com o nome de catch.lua Depois adicione o seguinte script dentro dele: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- local pokes = { ["Dragon"] = {corpseid = 5973, chance = 100, health = 12200, maxhealth = 12200}, ["Dragon Lord"] = {corpseid = 5984, chance = 100, health = 12200, maxhealth = 12200}, ["Demon"] = {corpseid = 5995, chance = 100, health = 12200, maxhealth = 12200}, } local time = 4 -- Tempo para mandar as mensagens e adiciona item function onUse(cid, item, frompos, item2, topos) for i,x in pairs(pokes) do if item2.itemid == x.corpseid then doRemoveItem(item.uid, 1) doRemoveItem(item2.uid, 1) if math.random(1,100) <= x.chance then function add() local s = doPlayerAddItem(cid, pokein) doItemSetAttribute(s, "poke", "This is "..i.."'s pokeball. HP = ["..x.health.."/"..x.maxhealth.."]") doItemSetAttribute(s, "description", "Contains a " .. i) end doSendMagicEffect(topos, 24) addEvent(add, time*1000) return addEvent(doPlayerSendTextMessage, time*1000, cid, 27, "You catch a " .. i .. ".") else addEvent(doPlayerSendTextMessage, time*1000, cid, 27, "Your pokeball broke.") return doSendMagicEffect(topos, 23) end end end return TRUE end Depois adicione a seguinte TAG no actions.xml: <action itemid="2147" event="script" value="catch.lua"/> Sendo 2147, o id da sua pokebola para capturar pokemons (NAO A DE CHAMAR O POKEMON) Npc Healler By: MatheusMkalo Vá em data/npc/scripts e adicione um arquivo.lua com o seguinte script: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end if msgcontains(msg, 'heal') then if #getCreatureSummons(cid) >= 1 then return selfSay('Voce precisa botar seus pokemons dentro da pokebola.', cid) end for slo = CONST_SLOT_FIRST, CONST_SLOT_LAST do local item = getPlayerSlotItem(cid, slo) if isContainer(item.uid) then local items = getItemsInContainerById(item.uid, pokeout) for i,x in pairs(items) do local maxh = tonumber(getItemAttribute(x, "poke"):match("/(.+)]")) doItemSetAttribute(x, "poke", getItemAttribute(x, "poke"):sub(1, findLetter(getItemAttribute(x, "poke"), ".")) .. " HP = ["..maxh.."/"..maxh.."]") doTransformItem(x, pokein) end local items2 = getItemsInContainerById(item.uid, pokein) for i,x in pairs(items2) do local maxh = tonumber(getItemAttribute(x, "poke"):match("/(.+)]")) doItemSetAttribute(x, "poke", getItemAttribute(x, "poke"):sub(1, findLetter(getItemAttribute(x, "poke"), ".")) .. " HP = ["..maxh.."/"..maxh.."]") end elseif item.itemid == pokeout or item.itemid == pokein then local maxh = tonumber(getItemAttribute(item.uid, "poke"):match("/(.+)]")) doItemSetAttribute(item.uid, "poke", getItemAttribute(item.uid, "poke"):sub(1, findLetter(getItemAttribute(item.uid, "poke"), ".")) .. " HP = ["..maxh.."/"..maxh.."]") doTransformItem(item.uid, pokein) end end selfSay('Pronto, voce e seus pokemons estao com a life maxima.', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Depois va ate a pasta data/npc e adicione um arquivo.xml e bote isso dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="Pokemon Healer" script="pokehealer.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="128" head="17" body="54" legs="114" feet="0" addons="2"/> <parameters> <parameter key="message_greet" value="Ola, diga {heal} para recuperar sua vida e a vida dos seus pokemons."/> </parameters> </npc> Surf System By: MatheusMkalo Vá em data/actions/scripts e crie um arquivo.lua com o nome de surf e bote esse script dentro: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- function onUse(cid, item, frompos, item2, topos) local configs = { [4647] = {x = -2, y = 0}, -- 4647 é o id da borda oeste (lado esquerdo do player) [4645] = {x = 2, y = 0}, -- 4645 é o id da borda leste (lado direito do player) [4646] = {x = 0, y = 2}, -- 4646 é o id da borda sul (abaixo do player) [4644] = {x = 0, y = -2}, -- 4644 é o id da borda norte (acima do player) } local playerpos = getCreaturePosition(cid) local pokes = { ["Dragon"] = {lookType=267, speed = 1500}, ["Rat"] = {lookType=267, speed = 500}, } if #getCreatureSummons(cid) <= 0 and getPlayerStorageValue(cid, 63215) <= 0 then return doPlayerSendCancel(cid, "You need a pokemon to surf.") end l = false for i,x in pairs(pokes) do if getPlayerStorageValue(cid, 63215) <= 0 and i:lower() == getCreatureName(getCreatureSummons(cid)[1]):lower() then l = true end end if not l and getPlayerStorageValue(cid, 63215) <= 0 then return doPlayerSendCancel(cid, "This pokemon can't surf.") end if getPlayerStorageValue(cid, 63215) <= 0 then doTeleportThing(cid, {x=playerpos.x+configs[item2.itemid].x, y=playerpos.y+configs[item2.itemid].y, z=playerpos.z}) setPlayerStorageValue(cid, 63215, 1) doSetCreatureOutfit(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])], -1) doCreatureSay(cid, "Let's surf, "..getCreatureName(getCreatureSummons(cid)[1]), 1) setPlayerStorageValue(cid, 61209, getCreatureMaxHealth(getCreatureSummons(cid)[1])) setPlayerStorageValue(cid, 61210, getCreatureHealth(getCreatureSummons(cid)[1])) doChangeSpeed(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])].speed) doRemoveCreature(getCreatureSummons(cid)[1]) else doTeleportThing(cid, {x=playerpos.x-configs[item2.itemid].x, y=playerpos.y-configs[item2.itemid].y, z=playerpos.z}) setPlayerStorageValue(cid, 63215, 0) doRemoveCondition(cid, CONDITION_OUTFIT) local item = getPokeOutLive(cid)[1] doCreatureSay(cid, "Im tired of surf, " .. getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), 1) pk = doSummonCreature(getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), getThingPosition(cid)) doConvinceCreature(cid, pk) registerCreatureEvent(pk, "DiePoke") registerCreatureEvent(cid, "PlayerPokeDeath") registerCreatureEvent(cid, "LogoutPoke") setCreatureMaxHealth(pk, getPlayerStorageValue(cid, 61209)) doCreatureAddHealth(pk, getPlayerStorageValue(cid, 61209)) doCreatureAddHealth(pk, getPlayerStorageValue(cid, 61210)-getPlayerStorageValue(cid, 61209)) doChangeSpeed(cid, getCreatureBaseSpeed(cid)-getCreatureSpeed(cid)) end return TRUE end Depois va em actions.xml e adicione essa tag: <action itemid="4647;4645;4646;4644" event="script" value="surf.lua"/> Ensinarei nos tutorias como adicionar novas bordas e botar cada pokemon com seu proprio outfit na agua. OBS:Todos os scripts mudaram para implementar o surf, atualize-os OBS2: Para funcionar o id da agua tem que ser 4820. Para usar basta clicar na borda da agua. Evolution System By: MatheusMkalo Vá em data/actions/scripts e adicione um script.lua com o nome de evolution.lua e bote esse script: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- local pokes = { ["Dragon"] = {level = 1, evolution = "Dragon Lord", maxh = 2000}, } local types = { ["Water"] = {itemid = 2277, "Horsea", "Goldeen", "Magikarp"}, ["Venom"] = {itemid = 2278, "Zubat", "Ekans"}, ["Thunder"] = {itemid = 2279, "Magnemite", "Pikachu"}, ["Rock"] = {itemid = 2280, "Geodude", "Graveler"}, ["Punch"] = {itemid = 2281, "Machop", "Machoke"}, ["Leaf"] = {itemid = 2276, "Ivysaur"}, ["Fire"] = {itemid = 2283, "Charmander", "Charmeleon", "Dragon"}, ["Coccon"] = {itemid = 2284, "Caterpie", "Metapod"}, ["Crystal"] = {itemid = 2285, "Dratini", "Dragonair"}, ["Darkness"] = {itemid = 2286, "Gastly", "Haunter"}, ["Earth"] = {itemid = 2287, "Cubone"}, ["Enigma"] = {itemid = 2288, "Abra", "Kadabra"}, ["Heart"] = {itemid = 2289, "Rattata", "Pidgey"}, ["Ice"] = {itemid = 2290, "Seel"}, } function onUse(cid, item, frompos, item2, topos) for i,x in pairs(types) do if item.itemid == x.itemid then if isCreature(item2.uid) then if isPlayerSummon(cid, item2.uid) then if table.find(x, getCreatureName(item2.uid)) then if getPlayerLevel(cid) >= pokes[getCreatureName(item2.uid)].level then local pokeball = getPokeOutLive(cid)[1] local slo = pokes[getCreatureName(item2.uid)].maxh local sle = pokes[getCreatureName(item2.uid)].evolution doItemSetAttribute(pokeball, "description", "Contains a " .. pokes[getCreatureName(item2.uid)].evolution) doPlayerSendTextMessage(cid, 27, "Your "..getCreatureName(item2.uid).." evolued to a "..pokes[getCreatureName(item2.uid)].evolution) doSendMagicEffect(topos, 18) doItemSetAttribute(pokeball, "poke", "") doItemSetAttribute(pokeball, "poke", "This is "..pokes[getCreatureName(item2.uid)].evolution.."'s pokeball. HP = ["..pokes[getCreatureName(item2.uid)].maxh.."/"..pokes[getCreatureName(item2.uid)].maxh.."]") doRemoveCreature(item2.uid) local pk = doSummonCreature(sle, topos) registerCreatureEvent(pk, "DiePoke") registerCreatureEvent(cid, "PlayerPokeDeath") registerCreatureEvent(cid, "LogoutPoke") doConvinceCreature(cid, pk) setCreatureMaxHealth(pk, slo) setPlayerStorageValue(cid, 61204, 1) doCreatureAddHealth(pk, slo) doRemoveItem(item.uid, 1) break else return doPlayerSendCancel(cid, "You need to be level "..pokes[getCreatureName(item2.uid)].level.." or higher to use this stone in this pokemon.") end end end end end end return TRUE end Depois vá em actions.xml e adicione esta tag: <action itemid="2276;2277;2278;2279;2280;2281;2283;2284;2285;2286;2287;2288;2289;2290" event="script" value="evolution.lua" allowfaruse="1"/> Fly System By: MatheusMkalo, Credits: Mock Vá em data/talkactions/scripts e adicione um arquivo.lua com o nome de fly e bote esse script: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon Systems by Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon Systems by Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- function onSay(cid, words, param) local pokes = { ["Dragon"] = {lookType = 216, speed = 500}, } if #getCreatureSummons(cid) <= 0 and getPlayerStorageValue(cid, 62314) <= 0 then doPlayerSendCancel(cid, "You need a pokemon to fly.") end if getPlayerStorageValue(cid, 62314) <= 0 and not pokes[getCreatureName(getCreatureSummons(cid)[1])] then return doPlayerSendCancel(cid, "This pokemon can't fly.") end if getPlayerStorageValue(cid, 62314) <= 0 then doSetCreatureOutfit(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])], -1) doChangeSpeed(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])].speed) setPlayerStorageValue(cid, 61263, getCreatureMaxHealth(getCreatureSummons(cid)[1])) setPlayerStorageValue(cid, 61262, getCreatureHealth(getCreatureSummons(cid)[1])) setPlayerStorageValue(cid, 62314, 1) registerCreatureEvent(cid, "LogoutPoke") doCreatureSay(cid, "Let's fly, "..getCreatureName(getCreatureSummons(cid)[1]), 1) doRemoveCreature(getCreatureSummons(cid)[1]) local ppos = getCreaturePos(cid) local newpos = {x=ppos.x, y=ppos.y, z = 0} doCreateTile(460, newpos) doTeleportThing(cid, newpos) for i = 1,8 do doItem(getPosDirs(getCreaturePosition(cid), i), 65119+i) end elseif getPlayerStorageValue(cid, 62314) >= 1 then local ppos = getCreaturePosition(cid) p = true for i = 1,17 do if getTileThingByPos({x=ppos.x, y=ppos.y, z=ppos.z+i}).itemid ~= 0 and not isWalkable({x=ppos.x, y=ppos.y, z=ppos.z+i}) then p = false break end if isWalkable({x=ppos.x, y=ppos.y, z=ppos.z+i}) then l = ppos.z + i break end end if not p or getTileThingByPos({x=ppos.x, y=ppos.y, z=l}).itemid == 4820 then return doPlayerSendCancel(cid, "You can't down in there.") end for i = 1,8 do doRemoveTile(getPosDirs(getCreaturePosition(cid), i)) end setPlayerStorageValue(cid, 62314, 0) doTeleportThing(cid, {x=ppos.x, y=ppos.y, z=l}) doRemoveTile(ppos) local item = getPokeOutLive(cid)[1] pk = doSummonCreature(getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), getThingPosition(cid)) doConvinceCreature(cid, pk) doCreatureSay(cid, "I'm tired of fly, "..getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), 1) registerCreatureEvent(pk, "DiePoke") registerCreatureEvent(cid, "PlayerPokeDeath") setCreatureMaxHealth(pk, getPlayerStorageValue(cid, 61263)) doCreatureAddHealth(pk, getPlayerStorageValue(cid, 61263)) doCreatureAddHealth(pk, getPlayerStorageValue(cid, 61262)-getPlayerStorageValue(cid, 61263)) doChangeSpeed(cid, getCreatureBaseSpeed(cid)-getCreatureSpeed(cid)) doRemoveCondition(cid, CONDITION_OUTFIT) end return TRUE end Depois bote essa tag no talkaction.xml: <talkaction words="!fly" event="script" value="fly.lua"/> Va em data/movements/scripts e crie um arquivo.lua com o nome de fly.lua e bote: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon Systems by Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon Systems by Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- function onStepIn(cid, item, position, fromPosition) local actions = { [65120] = {del = {4,5,6}, add = {1,2,8}}, [65121] = {del = {8,7,6,5,4}, add = {8,1,2,3,4}}, [65122] = {del = {8,7,6}, add = {2,3,4}}, [65123] = {del = {2,1,8,7,6}, add = {6,5,4,3,2}}, [65124] = {del = {2,1,8}, add = {4,5,6}}, [65125] = {del = {8,1,2,3,4}, add = {8,7,6,5,4}}, [65126] = {del = {2,3,4}, add = {8,7,6}}, [65127] = {del = {6,5,4,3,2}, add = {6,7,8,1,2}}, } local configs = actions[item.actionid] for i = 1,8 do if table.find(configs.del, i) then doRemoveTile(getPosDirs(fromPosition, i)) end doItem(getPosDirs(getCreaturePosition(cid), i), 65119+i) end return TRUE end Depois va em movements.xml e adicione essa tag: <movevent type="StepIn" actionid="65120;65121;65122;65123;65124;65125;65126;65127" event="script" value="fly.lua"/> Para usar o fly diga !fly para descer e subir Ride System By: MatheusMkalo Vá em talkactions/scripts e crie um arquivo.lua com o nome de ride e bote esse script: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon Systems by Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon Systems by Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- function onSay(cid, words) local pokesride = { ["Dragon Lord"] = {lookType=4, speed = 3000}, ["Dragon"] = {lookType=4, speed = 500}, } if #getCreatureSummons(cid) <= 0 and getPlayerStorageValue(cid, 59987) <= 0 then return doPlayerSendCancel(cid, "You need a pokemon to ride.") end if not canSummon(cid) and getPlayerStorageValue(cid, 59987) >= 1 then return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHROOM) end local sname = #getCreatureSummons(cid) >= 1 and getCreatureName(getCreatureSummons(cid)[1]) or nil if sname ~= nil and pokesride[sname] and getPlayerStorageValue(cid, 59987) <= 0 then doSetCreatureOutfit(cid, pokesride[sname], -1) doChangeSpeed(cid, pokesride[sname].speed) doCreatureSay(cid, "Let's ride, " .. sname, 1) setPlayerStorageValue(cid, 59987, 1) setPlayerStorageValue(cid, 59988, getCreatureHealth(getCreatureSummons(cid)[1])) setPlayerStorageValue(cid, 59989, getCreatureMaxHealth(getCreatureSummons(cid)[1])) doRemoveCreature(getCreatureSummons(cid)[1]) elseif getPlayerStorageValue(cid, 59987) >= 1 then setPlayerStorageValue(cid, 59987, 0) doRemoveCondition(cid, CONDITION_OUTFIT) local item = getPokeOutLive(cid)[1] doCreatureSay(cid, "Im tired of ride, " .. getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), 1) pk = doSummonCreature(getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), getThingPosition(cid)) doConvinceCreature(cid, pk) registerCreatureEvent(pk, "DiePoke") registerCreatureEvent(cid, "PlayerPokeDeath") registerCreatureEvent(cid, "LogoutPoke") setCreatureMaxHealth(pk, getPlayerStorageValue(cid, 59989)) doCreatureAddHealth(pk, getPlayerStorageValue(cid, 59989)) doCreatureAddHealth(pk, getPlayerStorageValue(cid, 59988)-getPlayerStorageValue(cid, 59989)) doChangeSpeed(cid, getCreatureBaseSpeed(cid)-getCreatureSpeed(cid)) end return TRUE end Agora bote essa tag em talkactions.xml: <talkaction words="!ride" event="script" value="ride.lua"/> Pra usar o ride é so falar !ride. Para configurar os pokemons é praticamente igual ao surf. Configurando os scripts Como adicionar mais pokemons no go/back: No inicio do script, tem essa tabela com as informaçoes: Copie a ultima linha (vermelha) e cole logo abaixo, editando os nomes e as mensagens ficando assim: Voce pode configurar o level para usar o poke mudando o valor de level. Configurando pokemons para o catch:[/b] Olhe a tabela no inicio do script: Faça o mesmo processo do acima de copiar e colar embaixo e editar: Aonde as informaçoes corpseid, chance, health, maxhealth serao, respectivamente: Id do corpo do monstro, Chance de capturar em %, health que o pokemon iria ir pro player, e health maxima que o poke iria ir para o player. Como trocar os ids das pokebolas, acesas e apagadas. Para trocar o id da pokebola "acesa" e "apagada" basta mudar os ids 2222,2223 na lib sendo que 2222 eh o da acesa e o 2223 eh o id da apagada Mude tambem na tag do action.xml que seu script ira funcionar perfeitamente. Como adicionar mais bordas ao surf. Primeiramente va em actions.xml e adicione os ids das bordas na tag do surf: (Eu fiz com a borda de areia) Depois va no script surf.lua em actions e repare nessa parte: Copie todas as 4 bordas e cole abaixo ficando: Depois mude os ids das bordas do lado << conforme as informaçoes do lado >>, ficando: Como adicionar mais pokes ao surf: Va no script surf.lua em actions e repare nessa parte: Ai voce pode adicionar o pokemon pra surf e o outfit que ele vai te dar na agua copiando o de cima e colando logo abaixo e editando algumas coisas: Lembre-se de depois que acabar de editar toda a tabela no surf.lua, va no goback.lua em creaturescripts e substitua a tabela pokes, pela que esta na actions surf.lua: Como adicionar mais pokes no evolution: Repare nessa parte do script evolution.lua em actions: Bem voce deve copiar o primeiro monstro da tabela "pokes", e adicionar no final e mudar as configuraçoes: Sendo level,evolution,maxh respectivamente, o level pra evoluir o poke, o nome da evoluçao, e a health maxima do pokemon evoluido. Depois eh so adicionar o Nome do monstro que foi adicionado a tabela "pokes" na tabela "types", no lugar do type dele: Como adicionar mais pokes no fly: Repare nas partes iguais no fly.lua (talkaction) e no goback.lua(creaturescripts): fly.lua: goback.lua: A unica coisa que mudou foi o nome da tabela, "pokes" e "pokesfly", para adicionar mais pokes no fly basta adicionar no fly.lua e botar igual no goback.lua. Informaçoes Importantes!!! Para testar o script de catch que esta no topico, voce deve deletar as tags de encantamento de armas. Para poder summonar os pokemons com o go/back, voce precisa ir no arquivo.xml do monstro e editar essa linha: Se estiver convinceable="0", mude para convinceable="1" ficando: Creditos Especiais: Kydrai pela funçao "getItemsInContainerById" MarcelloMkez Mock por algumas funçoes do fly system dele. Agradecimentos: D3rs00n (Me ajudou a fazer sumir o corpo do pokemon) Julio Cezar (Ajudou reportando bugs e testando scripts) Miih (Ajudou reportando bugs e testando scripts) Arth3miS (Ajudou reportando bugs e testando scripts) E para todos que reportaram bugs. Bugs, erros, duvidas, elogios no topico[/b]
    1 ponto
  10. josegabriel400

    Box 4 100% Igual P.o.

    :XTibia_smile: UFA FOI UM APERTO VIU 0.o AGORA ENTENDO PQ TODOS QUE CRIAM UM SCRIPT N QUEREM POSTAR....... DA UM MEDO DANADO VIU !!! NEM SEI PQ MAS COMO EU FIZ ESSE SCRIPT SO POR CAUSA QUE A GALERA AI LIBERO O OT AÍ VAI EU TAVA VENU NO MAP EDITOR E ACHEI AS BOX AI PENSEI... VOU CRIAR O SCRIPT DA BOX !!! TA 100% TESTADO POR MIM XD DA REP + QUEM TAVA QUERENDO ESSE SCRIPT ! primeiro va em data/actions/scripts e crie um novo script chamado box 4.lua (infelizmente eu so fiz da box 4 pq a sprite das outras boxes estao eradas :mellow: ) COLOQUE ISSU DENTRO DO box 4.lua function onUse(cid, item, frompos, item2, topos) local box = { [1] ={msg = "Vc Abriu Sua BOX 4",np = 'venusaur Pokeball'}, [2] ={msg = "Vc Abriu Sua BOX 4",np = 'charizard Pokeball'}, [3] ={msg = "Vc Abriu Sua BOX 4",np = 'blastoise Pokeball'}, [4] ={msg = "Vc Abriu Sua BOX 4",np = 'pidgeot Pokeball'}, [5] ={msg = "Vc Abriu Sua BOX 4",np = 'nidoqueen Pokeball'}, [6] ={msg = "Vc Abriu Sua BOX 4",np = 'nidoking Pokeball'}, [7] ={msg = "Vc Abriu Sua BOX 4",np = 'ninetales Pokeball'}, [8] ={msg = "Vc Abriu Sua BOX 4",np = 'arcanine Pokeball'}, [9] ={msg = "Vc Abriu Sua BOX 4",np = 'poliwrath Pokeball'}, [10] ={msg = "Vc Abriu Sua BOX 4",np = 'alakazam Pokeball'}, [11] ={msg = "Vc Abriu Sua BOX 4",np = 'machamp Pokeball'}, [12] ={msg = "Vc Abriu Sua BOX 4",np = 'tentacruel Pokeball'}, [13] ={msg = "Vc Abriu Sua BOX 4",np = 'golem Pokeball'}, [14] ={msg = "Vc Abriu Sua BOX 4",np = 'dewgong Pokeball'}, [15] ={msg = "Vc Abriu Sua BOX 4",np = 'gengar Pokeball'}, [16] ={msg = "Vc Abriu Sua BOX 4",np = 'rhydon Pokeball'}, [17] ={msg = "Vc Abriu Sua BOX 4",np = 'scyther Pokeball'}, [18] ={msg = "Vc Abriu Sua BOX 4",np = 'jynx Pokeball'}, [19] ={msg = "Vc Abriu Sua BOX 4",np = 'electabuzz Pokeball'}, [20] ={msg = "Vc Abriu Sua BOX 4",np = 'magmar Pokeball'}, [21] ={msg = "Vc Abriu Sua BOX 4",np = 'gyarados Pokeball'}, [22] ={msg = "Vc Abriu Sua BOX 4",np = 'lapras Pokeball'}, [23] ={msg = "Vc Abriu Sua BOX 4",np = 'omastar Pokeball'}, [24] ={msg = "Vc Abriu Sua BOX 4",np = 'kabutops Pokeball'}, [25] ={msg = "Vc Abriu Sua BOX 4",np = 'aerodactyl Pokeball'}, [26] ={msg = "Vc Abriu Sua BOX 4",np = 'snorlax Pokeball'}, [27] ={msg = "Vc Abriu Sua BOX 4",np = 'dragonair Pokeball'}, [28] ={msg = "Vc Abriu Sua BOX 4",np = 'dragonite Pokeball'} } local level = 60 -- level para usar local e = box[math.random(1,28)] local boxid = 2531 -- id da box que vai ser dada ao jogador if getPlayerLevel(cid) >= level then doPlayerSendTextMessage(cid,22,e.msg) b = doPlayerAddItem(cid, boxid, 1) doItemSetAttribute(b, "name", e.np) doRemoveItem(item.uid, 1) else doPlayerSendCancel(cid, "You must be at least level "..level.." to use this box.") end return TRUE end agora feche e salve.... va em data/actions/actions.xml e adicione esta TAG: <action itemid="7891" event="script" value="box 4.lua"/> ta aí a box 4 100% funfanu igual P.O., se vc quiser vai nos itens e mude o nome para BOX 4 obs: esse é meu primeiro script entaum nem sei colocar em CODE (SHAUSHAU) comentem ai se funfo Obg pela atençao, [PPO] Psyko (acesse: PPO) GENTE PLIXS DA REP +) AEW TO PRECISANU DE UM POKIM DE REPUTAÇAO !!! E SO CLICAR :button_ok:
    1 ponto
  11. Bondx

    ★ Bondx - Show Off ✔

    É, depois de alguns anos estou voltando a mappear. Estou meio que muito enferrujado rs com tantas mudanças e novidades! (percebi que muitos sprites foram inseridos desde a última vez que postei). ➨ SEMPRE OLHEM O ÚLTIMO POST ✔ Porque é lá que estará as atualizações! Então é isso. Espero que consiga novamente voltar a agradar os usuários do XTibia com meu trabalho. Se você não quer perder nenhuma atualização do meu show-off, clique em (no lado direito/superior do tópico). Lembrando: Todo comentário é bem vindo! Crítiquem, Sugiram, Dêem idéias, Opinem. Só assim poderei aprimorar meu trabalho! Atenciosamente, ☠ Bondx.
    1 ponto
  12. nono182

    Sistema De Refinamento Em Português

    E aew pessoal hoje to fazendo mais um post aki no xtbia um sistema de refinamento usado em muitos ots,porém esse coloquei umas modificações e passei para portugês. Vamos lah... primeiro abra o bloco de notas e cole isso: local gain = { gainArmor='&p+5',loseArmor='&p-5', gainShield='&s+#',loseShield='&s-(#+7)', gainAttack='&a+#+1',loseAttack='&a-(#+4)-2', gainDefense='&d+#+2',loseDefense='&d-(#+4)-2', chance='75/((#*(1/(@/2)))*(@/2))', -- Essa equação é boa para ficar perfeito seu refinamento --- Se você colocar "chance=100" sempre irá funcionar o upgrade e se colocar chance=0 sempre ira falhar maxlvl = 10, blocked_ids = {2488,8881} } -- &a = weapon attack -- &d = weapon defense -- &s = shield defense -- &p = armor defense -- # = weapon curr level -- @ = max level function isArmor(uid) -- Function by Mock the bear. uid = uid or 0 if getItemArmor(uid) > 0 and getItemAttack(uid) == 0 and getItemDefense(uid) == 0 and getItemWeaponType(uid) == 0 then return TRUE end return FALSE end function isWeapon(uid) -- Function by Mock the bear. uid = uid or 0 local f = getItemWeaponType(uid) if f == 1 or f == 2 or f == 3 then return TRUE end return FALSE end function isShield(uid) -- Function by Mock the bear. uid = uid or 0 if getItemWeaponType(uid) == 4 then return TRUE end return FALSE end function getWeaponLevel(uid) -- Function by Mock the bear. uid = uid or 0 local name = getItemName(uid) local _,_,lvl = string.find(name,'+(%d+)') return tonumber(lvl) or 0 end function doTransform(s,uid) -- Function by Mock the bear. local c = string.gsub(s,'@',gain.maxlvl) local c = string.gsub(c,'&a',getItemAttack(uid)) local c = string.gsub(c,'&d',getItemDefense(uid)) local c = string.gsub(c,'&s',getItemDefense(uid)) local c = string.gsub(c,'&p',getItemArmor(uid)) local c = string.gsub(c,'#',getWeaponLevel(uid)) local q,err = loadstring('return '..c) assert(q,err) return assert(q()) end function onUse(cid, item, fromPosition, itemEx, toPosition) toPosition.stackpos = 255 if isInArray(gain.blocked_ids, itemEx.itemid) == TRUE or getItemWeaponType(itemEx.uid) > 4 or (getItemWeaponType(itemEx.uid) == 0 and isArmor(itemEx.uid) == FALSE) or itemEx.itemid == 0 then doPlayerSendTextMessage(cid, 24,"Você não pode refinar esse item.") return TRUE end if isCreature(itemEx.uid) == TRUE then return FALSE end local level = getWeaponLevel(itemEx.uid) local chance = doTransform(gain.chance,itemEx.uid) if chance >= math.random(0,100) or item.actionid >= 1000 then if level+1 > gain.maxlvl then doSendMagicEffect(toPosition, 2) return doPlayerSendTextMessage(cid, 24,"Seu Item esta no nivel maximo,nao pode mais fazer upgrade nele.") else setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level+1)) doPlayerSendTextMessage(cid, 24,"Seu item foi almentado para +"..(level+1)..".") doSendMagicEffect(toPosition, 39) if isArmor(itemEx.uid) == TRUE then local get = doTransform(gain.gainArmor,itemEx.uid) setItemArmor(itemEx.uid,get) elseif isWeapon(itemEx.uid) == TRUE then setItemAttack(itemEx.uid, doTransform(gain.gainAttack,itemEx.uid)) setItemDefense(itemEx.uid, doTransform(gain.gainDefense,itemEx.uid)) elseif isShield(itemEx.uid) == TRUE then setItemDefense(itemEx.uid, doTransform(gain.gainShield,itemEx.uid)) end end else if level == 0 then doPlayerSendTextMessage(cid, 24,"No effect.") doSendMagicEffect(toPosition, 2) elseif level == gain.maxlvl then doSendMagicEffect(toPosition, 2) return doPlayerSendTextMessage(cid, 24,"Seu Item esta no nivel maximo,nao pode mais ser feito upgrade.") elseif level > 0 then if level == 1 then setItemName(itemEx.uid, getItemNameById(itemEx.itemid)) doPlayerSendTextMessage(cid, 24,"Seu item voltou ao normal.") else setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level-1)) doPlayerSendTextMessage(cid, 24,"Seu Item voltou para +"..(level-1)..".") end if isArmor(itemEx.uid) == TRUE then setItemArmor(itemEx.uid,doTransform(gain.loseArmor,itemEx.uid)) elseif isWeapon(itemEx.uid) == TRUE then setItemAttack(itemEx.uid, doTransform(gain.loseAttack,itemEx.uid)) setItemDefense(itemEx.uid, doTransform(gain.loseDefense,itemEx.uid)) elseif isShield(itemEx.uid) == TRUE then setItemDefense(itemEx.uid, doTransform(gain.loseShield,itemEx.uid)) end end doSendMagicEffect(toPosition, 15) end doRemoveItem(item.uid,1) return TRUE end Agora salve ele como upgrade.lua na pasta scripts agora em actions.xml adicione essa linha <action itemid="8306" script="upgrade.lua"/> e pronto seu script esta feito!!! mudanças: * Script atualizado para português * diminuido a chance de sucesso do upgrade(se nao todos no ot vai ter os itens fortes) * almentado os pontos que ganha quando o upgrade tem sucesso * almentado os pontos que perde quando o upgrade falha espero que vocês gostem do novo script créditos 98% para Mock(criador do script) e 2 % para min pelas mudanças. atualizado
    1 ponto
  13. fokus090

    Extensão - Folhas Ao Chão

    Olá Galerinha XTibiana, hoje sem muita coisa para fazer, resolvir criar um Tutorial. Como sou novato nessas coisas ainda, o tutorial é basico. Extensão -- Folhas ao Chão Quem ainda não possui o arquivo Items.xml com os novos Sprites do Update, poderá baixa-los clicando Aqui ! Não possui o RME ainda? Então clique Aqui ! Quer aprender a criar suas próprias Extensions? Nosso amigo Koddy ensina. Clique Aqui ! Vá na Pasta onde esta instalado o seu RME, (C:\Program Files\Remere's Map Editor\data\860) e faça uma cópia dos arquivos .xml que serão usados, ou seja, os arquivos doodads e tilesets. Depois disso, abra o arquivo doodads.xml. Precione Ctrl + F e procure por grave. Abaixo de "grave" coloque isto :. <brush name="folhas" type="carpet" server_lookid="12881"> <carpet align="n" id="12870"/> <carpet align="e" id="12871"/> <carpet align="s" id="12869"/> <carpet align="w" id="12872"/> <carpet align="cnw" id="12879"/> <carpet align="cne" id="12880"/> <carpet align="cse" id="12877"/> <carpet align="csw" id="12878"/> <carpet align="dnw" id="12875"/> <carpet align="dne" id="12876"/> <carpet align="dse" id="12873"/> <carpet align="dsw" id="12874"/> <carpet align="center" id="12881"/> </brush> Feche e Salve o doodads.xml! Ok, agora abra seu tilesets.xml, precione Ctrl + F e procure por grave novamente. Abaixo de grave adicione isto :. <brush name="folhas"/> Ficaria assim :. <brush name="tar pit"/> <brush name="white gravel"/> <brush name="loose gravel"/> <brush name="gravel"/> <brush name="folhas"/> <brush name="mountain ground"/> <brush name="mountain top ground"/> <brush name="dirt mountain ground"/> Feche e Salve o tilesets.xml! Pronto, esta terminado. Agora abra seu Map Editor e Divirta-se ! Bom pessoal, é isto. Como é meu primeiro Tutorial aqui para o XTibia, óbviamente todas as críticas e sugestões são bem vindas. Créditos :. Frenesy - Eu que tive a idêia. comedinhasss - Por ter disponibilizados os Items.xml Koddy - Por ter me ensinado a criar Extensions Se gostou, REP +
    1 ponto
  14. Mattew

    [Arquivado]Formas De Pagamento Online

    Agora virou moda otserv pedir doação, enfim... Doações Um simples OTServ. Não é uma empresa com registro para dispor pagamento por cartão de crédito na internet. Porém, um servidor dedicado bom custa caro. E ninguém quer fazer as coisas para ter prejuízo. Então com a vinda do Gesior, começou um sistema de shop. E ai começou a ideia de otservs receberem doação. Mas como um otserv vai receber pagamentos? Só por depósito bancário fica muito limitado... E então existem as formas de pagamento online, que você com certeza já conhece, mas vou citar aqui em detalhes sobre todas para ajudar você a escolher a melhor! Paypal Paypal é a melhor empresa de pagamentos online, sem comentários. Qualquer empresa de dedicado, datacenter americana que você ver aceita Paypal, qualquer site aceita Paypal. Paypal é um vírus do bem Mas no Paypal você só pode receber pagamentos por cartão de crédito, e como é uma empresa americana. Cartões de Crédito internacional, mas é uma ótima escolha para você que não quer só ter Brasileiros no seu servidor. E neste ano de 2010 a Paypal abriu uma conta bancária aqui no Brasil e liberou saques de sua conta do Paypal para qualquer conta conveniada ao serviço de Saques Brasileiro do Paypal. Os principais bancos estão lá, como Banco do Brasil, Nossa Caixa/Caixa Econômica Federal, Itaú/Unibanco, Santander/Banco Real, HSBC, Bradesco e muitos outros bancos. Então Paypal é uma ótima forma de pagamento para abrir o seu servidor para receber doações de todos os cantos do mundo! Site: www.paypal.com PagSeguro O PagSeguro é uma empresa da UOL, e eles aceitam uma grande variedade de pagamentos como: Boleto Bancário, Débito em Conta (Bradesco, Itaú, Unibanco, Banco do Brasil e Banco Banrisul apenas), Cartão de Crédito (Visa, Mastercard, Diners, American Express, Hipercard e Aura). Enfim é uma variedade muito grande para seu servidor. Os pagamentos por boleto bancário são obrigatórios de qualquer vendedor, não é possível desativar. Os pagamentos recebidos pela PagSeguro levam 14 dias para serem liberados, e dentro deste prazo pode sofrer uma disputa que caso o comprador não receba o produto prometido, ele tem o dinheiro de volta. É uma segurança para o comprador, mas já ouvi falar de compradores que agiram de má-fé. Então ainda sim é bom guardar uma prova de que a entrega dos "premium points" foram realmente realizadas. No entanto, por experiência minha, o PagSeguro cancela muitos pedidos feitos por Cartão de Crédito, o que torna o PagSeguro muito reclamado pelos varejistas (donos de lojas virutais) do Brasil, pois a maior parte de compras em lojas virtuais é aquela parcelada básica no cartão de crédito, e o PagSeguro já cancelou uma venda minha de R$ 700,00. Mas é uma empresa boa e segura. Site: www.pagseguro.com.br Pagamento Digital Pagamento Digital é uma empresa do Buscapé, e ele aceita as formas de pagamento: Boleto Bancário, Débito em Conta (Banco do Brasil, Bradesco e Itaú), Cartão de Crédito (Visa, Mastercard, Diners, American Express, Hipercard e Aura). Ela é concorrente número 1 do PagSeguro. Apesar do PagSeguro ter uma fama maior e uma participação maior em propagandas de televisão garantindo dar uma extrema segurança ao comprador. O Pagamento Digital é melhor para aquele que busca uma maior autonomia na forma de pagamento, isto é, censurar um pouco aquele redirecionamento para a página segura do Pagamento Digital e fazer um cadastro. Isso é um absurdo. O Pagamento Digital não exige que o seu cliente se cadastre, você vai para o site do Pagamento Digital faz o pagamento e volta para o site de compra. Sem forçar o seu cliente a se cadastrar no Pagamento Digital, o PagSeguro já exige cadastro, confirmação por e-mail, CPF, RG. É muita coisa que pode levar o seu comprador a desistir da compra. E a compra no Pagamento Digital é toda feita através da mesma janela e a página de pagamento é mais fácil de se customizar. O Pagamento Digital, assim como o PagSeguro, libera seu dinheiro em 14 dias. Site: www.pagamentodigital.com.br MoIp MoIp é uma empresa da IG, e ela aceita as formas de pagamento: Boleto Bancário, Débito em Conta (Banco do Brasil, Bradesco, Banco Itaú, Banco Real e Banco Banrisul), Cartão de Crédito (Visa, Mastercard, Diners, American Express, Hipercard e Aura), Oi Paggo e Financiamento. Sem dúvidas a MoIp é a empresa que eu escolhi para usar quando precisar fazer uma cobrança ou qualquer pagamento. Ela oferece a maior variedade de pagamentos. A forma de pagamento Financiamento, é ótima. Caso seu comprador precise fazer uma compra de um valor muito grande com você e não tiver o dinheiro, ele financia pelo banco dele (caso o banco aprove o crédito para ele). Para quem vende sites como eu, se torna uma opção de pagamento valiosa para o comprador. A MoIp possui um apoio enorme aos seus vendedores. O Pagamento Digital superou a PagSeguro não precisando que seu comprador faça cadastro. Mas a MoIp pensou mais longe, o seu comprador pode realizar a compra sem sair do seu site. Se chama o serviço de Pagamento Direto da MoIp, eles exigem que possuam um Certificado Digital de Segurança (SSL), uma Conta Profissional MoIp e que no site o comprador saiba que está usando a MoIp como forma de pagamento apesar de ser possível esconder 100% a MoIp. A Integração do Pagamento Direto é para todas as formas de pagamento como Cartão de Crédito, Débito e Boleto Bancário. E a integração é feita através do sistema API MoIp. A MoIp libera seu dinheiro em 14 dias para Conta Pessoal e Conta Negócios. Já se você tiver uma Conta Profissional o dinheiro é liberado em 2 dias corridos. Eu possuo uma Conta Profissional sendo Pessoa Física, eles não exigem que seja empresa registrada. Só exigem ter um certo número de vendas mensal, mas eu dei uma chorada e consegui. Hehehehe. Site: www.moip.com.br F2B A F2B é uma empresa independente e focada exclusivamente no sistema de pagamentos pela internet, ela aceita as formas de pagamento: Boleto Bancário, Débito em Conta (Banco do Brasil, Itaú, Bradesco e Santander), Cartão de Crédito (Visa, Mastercard e American Express). É uma variedade um pouco menor do que as outras empresas, e eu pessoalmente não recomendo para um servidor tibia ou uma loja virtual. Mas para empresas de hospedagem e lojas físicas pode ser a melhor opção pois eles contam com 2 benefícios que podem ajudar os dois. Empresas de Hospedagem, eles possuem um sistema de cobrança (por boleto bancário) via correio, ou seja, eles enviam um boleto de 30 em 30 dias para o endereço do seu cliente, poupando ele de acessar seu site e imprimir o boleto todo mês. É um benefício e tanto. E para lojas físicas, parcelamento no carnê. Sim, carnê igual aquele das Casas Bahia. É bom para quem não tem cartão de crédito. A F2B libera seu dinheiro instantâneamente assim que cai na sua conta diferente das outras empresas. Porém achei muito exigente o processo de cadastro deles, só faltou pedir minha certidão de nascimento e exame de sangue. Eles pedem RG e CPF. Imagem COLORIDA do seu RG, CPF e Comprovante de Residência. Ok, a PagSeguro, Pagamento Digital e MoIp, também pedem isso (não obrigatoriamente) mas pra que colorido? Fala sério. E é obrigatório na F2B, caso contrário você não completa seu cadastro. E eles exigem um depósito de um valor mínimo de R$ 30,00 que será descontado as tarifas e você não poderá gerar cobranças e pagamentos sem ter um valor na conta para as tarifas serem cobradas. Site: www.f2b.com.br Comparando as Tarifas Boleto Bancário Paypal: NA* PagSeguro: 2,9% + R$ 0,40 Pagamento Digital: 2,89% MoIp: 2,9% + R$ 0,39 F2B: R$ 3,29 *Não aceita Boleto Bancário Lembrando que Boleto Bancário cobra taxa de segurança de R$ 1,00, que pode ser cobrada do comprador exceto a F2B que não cobra esta taxa. Cartão de Crédito Paypal: 6,4% + R$ 0,60 PagSeguro: 6,4% + R$ 0,40 Pagamento Digital: 6,39% MoIp: 7,4% + R$ 0,39 F2B: 5,9% + R$ 0,40 Disponibilidade para Saques Paypal: INSTANTÂNEAMENTE PagSeguro: 14 dias Pagamento Digital: 14 dias MoIp: 14 dias (Conta Pessoal e Conta Negócios) e 2 dias (Conta Profissional) F2B: INSTANTÂNEAMENTE Custo de Saques Paypal: Taxa de R$ 3,00 por saque para valores abaixo de R$ 250,00 (acima de R$ 250,00 o saque é grátis) PagSeguro: 5 Saques Grátis por mês Pagamento Digital: Grátis MoIp: 5 Saques Grátis por mês F2B: Grátis Prazo de Saques(além do prazo de liberar o saldo) Paypal: 3 dias úteis PagSeguro: 3 dias úteis Pagamento Digital: 3 dias úteis MoIp: 3 dias úteis F2B: Não específicado As taxas apresentadas são referente as taxas máximas para vendedores que têm o mínimo de vendas. Para PagSeguro e Pagamento Digital as tarifas são referentes a vendedores que atingem até R$ 4.000,00 de vendas e MoIp até R$ 5.000,00. A F2B as taxas são para todos os clientes. Apesar das taxas da F2B, não parecerem tão ruins. São sim, este valor do boleto é cobrado para GERAR o boleto, ou seja, mesmo se seu comprador não pagar o valor vai ser debitado do seu saldo F2B pois eles exigem um saldo na conta para usar os serviços, eles não cobram uma porcentagem do valor para boletos de menos de R$ 1.500,00. Para boletos acima de R$ 1.500,00 eles cobram 1,5% - R$ 22,50, além da taxa do boleto de R$ 3,29. Conclusão De todas, eu escolhi trabalhar com a MoIp. Tire sua conclusão e comente Até mais, Mattew
    1 ponto
  15. lib/vocations se não funcionar n sei o problema me desculpe mas pelomenos tentei
    1 ponto
  16. dimmmy456

    Ot 8.70 Beta

    gente eu baixei o servidor vem com o mount system pelo que eu vi mais tem varios ploblemas como 32 virus metade so no arquivo de ligar o server,eu limpei o servidor com meu antivirus mais ele deletou todos os arkivos com virus,mais ficou com o mount system quem quiser: ae ta ae esse ots esta com 32/40 de virus Acusou: TrojanSpy:Win 32 TrojanDropper:Win 32 Bem Amigo aconselho tirar o download pois nao e todos que tem anti virus no pc entende
    1 ponto
  17. AlphaLove

    Ot 8.70 Beta

    Tem sim.. Ele se chama Talaturen's Ele pode ser encontrado aki mesmo no Xtibia na Seção de OT's 8.70 (: AJudei ? REP + ATT vllw
    1 ponto
  18. MaGoDaNeT

    Summons :)

    nao sei si tem como n achei nemhum geito de arruma isso ;x
    1 ponto
  19. Zutun

    Resultado Ads#47

    Bom dia Galera do Xtibia. Estou aqui para postar o Resultado da ADS #47 Prêmios Parabéns aos vencedores. E Participem da Próxima edição da Ads.
    1 ponto
  20. Natanael Beckman

    Gesior Acc Modificado

    @amour O bug do points é o seguinte eu tenho 100 points vou compra uma vip que vale 5 points pra um amigo meu quando eu compro ele recebe a vip eu fico com meus 100 points e ainda vai 95 points para o player que eu comprei a vip. Em relação ao da guild isso está com uns 2 messes que ajustei no site do meu ot tentei procura o tutorial que esta localizado em outro forum mais não achei pra te enviar a tag.
    1 ponto
  21. Quando abri meu primeiro OT também tive esse problema no meu deu certo desse jeito: [1]Vá em Iniciar>Executar> e digite cmd [2]Abrirá uma tela preta digite ipconfig [3]Pegue o número onde tá escrito Gateway Padrão e Endereço IP [4]Digite o número do Gateway Padrão no seu navegador, se pedir senha na maioria das vezes é admin:admin ou root:root se não der certo pergunte ao administrador da sua rede [5]Se você consiguiu entra procure por Forwarding>Virtual Servers ou algo assim, e abra as portas 7171-7172 no seu Endereço IP aquele que você pegou na tela preta no terceiro passo, se você não tem nem noção do que você ta fazendo não mexa em nada e chame um técnico senão você pode acabar com sua conexão. Se ajudei rep+ ae ;D
    1 ponto
  22. Zutun

    Resultado Ads#42

    Bom dia Galera do Xtibia. Estou aqui para postar o Resultado da ADS #42 Prêmios Parabéns aos vencedores. E Participem da Próxima edição da Ads.
    1 ponto
  23. ZickZinho

    Ads#47

    taew a minha rsrs azeduz e nois
    1 ponto
  24. Sherman I

    [Pedido] Sign + Avatar

    Como eu nao salvei o psd, foi o que eu consegui fazer...
    1 ponto
  25. Vodkart

    Ads#47

    minha:
    1 ponto
  26. Erickrusha

    Illusion War

    :forward: Brigado gente .. :forward: Eu fico feliz das pessoas gostarem do meu trabalho .. sinceramente ! :forward: Brigado por elogios .. e aceito criticas construtivas ! :forward: Brigado a todos que encentivaram .. :smile_positivo:
    1 ponto
  27. Pode especificar o problema que está tendo? Assim poderei ajuda-lo. (Y)
    1 ponto
  28. 39844426

    [8.54]Pokeserver Tfs 0.3.6 [V3.0]

    arruma o download do client por favor!!!!!
    -1 pontos
  29. 39844426

    Ot 8.70 Beta

    [Vírus] Usuário alertado em 10%, 2 pontos de reputação removidos, suspenso por 1 mês
    -1 pontos
  30. thalia

    [8.54]Pokeserver Tfs 0.3.6 [V3.0]

    Oi galera do xtibia, alguns já me conhece , posto scripts na seção de actions/talk/move! Aqui está a versão 3.0 do PokeServer TFS 0.3.6pl1, ~~( O que contém na versão 3.0? ) ~~ ~~>Fly System - Bug corrigido ~~>Ride System- Bug corrigido ~~>Catch System- Bug corrigido ~~>Go/back System- Bug corrigido ~~>Stones System - Bug corrigido ~~>Npc Heal - Bug arrumano ~~>Todos os 151 pokemons (50% configurados) ~~>Skill System - Para cada tipo de pokemon é um poder difirente! ~~>Mapa Svke 70% ~~>Todas as outfits Stones,Go/back,Npc,Fly,Ride,Skill, foram testados, então não venha encher o saco falando merda <--! Download !--> Server 3.0 Client (È extremamento necessario para poder entrar no server!) Versão 3.0 do server de pokemon Faça você mesmo! Créditos ao Drakylucas por me ajuda a fazer os scripts! Não se esqueça de clicar ali no icone verde
    -1 pontos
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...