Ir para conteúdo

Líderes

Conteúdo Popular

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

  1. 1º método Eu sei porque amigo, importe sua database denovo mais não abre a distro... Vai nas suas source procure definitions.h Tente achar #define VERSION_DATABASE e vê qual o número que está exemplo: #define VERSION_DATABASE 27 Após ter feito isso vai no seu banco de dados do servidor e procure: server_config Altere o db_version para o número da versão da database que você viu no DEFINITIONS.H. EXEMPLO: Config value db_version 27 Ou você pode olhar a que ficou com este problema que você diz, pois se a versão da database da distro for uma e na sua database for outra a sua distro altera para a dela, por isso muda, mais ele não muda so isso não viu, nos players muda os loot e talz e pode bugar na hora de morrer... 2º métedo (pela sources) Abre suas sources pelo C++ e abre a databasemanager.cpp procure isto: db->query("DELETE FROM `player_storage` WHERE `key` = 30018;"); db->query("ALTER TABLE `accounts` ADD `name` VARCHAR(32) NOT NULL DEFAULT '';"); if((result = db->storeQuery("SELECT `id` FROM `accounts`;"))) { do { query << "UPDATE `accounts` SET `name` = '" << result->getDataInt("id") << "' WHERE `id` = " << result->getDataInt("id") << ";"; db->query(query.str()); query.str(""); } while(result->next()); result->free(); } Altere para: /*db->query("DELETE FROM `player_storage` WHERE `key` = 30018;"); db->query("ALTER TABLE `accounts` ADD `name` VARCHAR(32) NOT NULL DEFAULT '';"); if((result = db->storeQuery("SELECT `id` FROM `accounts`;"))) { do { query << "UPDATE `accounts` SET `name` = '" << result->getDataInt("id") << "' WHERE `id` = " << result->getDataInt("id") << ";"; db->query(query.str()); query.str(""); } while(result->next()); result->free(); }*/ Pronto isso não alteraria o Login da sua conta. Eu preferia fazer o método 1 rsrs mais fique de sua escolha.
    3 pontos
  2. complicado, corrigindo um pouco o que você fez function onUse (cid, item) if not doPlayerRemoveMoney(cid,3000000) then doPlayerSendCancel(cid, "Voce nao possui dinheiro suficiente.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return true end doCreateMonster("Rat", getPlayerPosition(cid)) end sobre o tempo vc teria q usar global storage e armazenar o tempo com os.time() sobre o monstro nao atacar a guild X, nao sei se da pra fazer com monstro, mas acho q da pra fazer com npc, um npc q ataca guilds diferentes.
    2 pontos
  3. data/talkactions/scripts local teleport_time, exhaust = 10, 20 --Respectivamente, tempo para teleportar e cooldown. function channel_teleport(cid, time) if not isPlayer(cid) then return true elseif getCreatureCondition(cid, CONDITION_INFIGHT) then doPlayerSendCancel(cid, "You can't teleport while in battle.") return true elseif time <= 0 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) setPlayerStorageValue(cid, 2910, os.time() + exhaust * 60) return true end doPlayerSendTextMessage(cid, 27, time) addEvent(channel_teleport, 1000, cid, time - 1) end function onSay(cid) if getPlayerStorageValue(cid, 2910) > os.time() then doPlayerSendCancel(cid, "This command is still in cooldown. Wait "..(getPlayerStorageValue(cid, 2910) - os.time()).." seconds to use it again.") return true elseif getCreatureCondition(cid, CONDITION_INFIGHT) then doPlayerSendCancel(cid, "You can't use this command in battle.") return true end channel_teleport(cid, teleport_time) return true end Tag: <talkaction words="!cp" event="script" value="nome_do_arquivo.lua"/>
    2 pontos
  4. Administrador

    Parsers

    Apenas algumas ferramentas que o Codex NG reconstruiu em um interpretador Lua para obter certos valores a partir de arquivos. Monster local data = { ['monster'] = {'name', 'nameDescription', 'race', 'experience', 'speed', 'manacost', 'skull', 'script'}, ['health'] = {'min', 'max'}, ['look'] = { 'type', 'head', 'body', 'legs', 'feet', 'corpse', 'addons', 'typeex', 'mount'}, ['targethange'] = { 'interval', 'chance', 'speed'}, ['flag'] = {'summonable', 'attackable', 'hostile', 'illusionable', 'convinceable', 'pushable', 'canpushitems', 'canpushcreatures', 'staticattack', 'lightlevel', 'lightcolor', 'targetdistance', 'runonhealth', 'hidehealth'}, ['attack'] = {'name', 'interval', 'min', 'max', 'range', 'chance'}, ['attribute'] = {'key', 'value'}, ['defenses'] ={'armor', 'defense'}, ['element'] = {'physicalPercent', 'icePercent', 'poisonPercent', 'earthPercent', 'firePercent', 'energyPercent', 'holyPercent', 'deathPercent', 'drownPercent', 'lifedrainPercent', 'manadrainPercent'}, ['immunity'] = {'name', 'physical', 'energy', 'fire', 'poison', 'earth', 'drown', 'ice', 'holy', 'death', 'lifedrain', 'manadrain', 'paralyze', 'outfit', 'drunk', 'invisible', 'invisibility', 'bleed'}, ['voices'] = {'speed', 'interval', 'chance', 'sentence', 'yell'}, ['voice'] = {'speed', 'interval', 'chance', 'sentence', 'yell'}, ['summons'] = {'maxSummons'}, ['summon'] = {'name','interval','chance','speed'}, ['script'] = {'name'}, ['item'] = {'id','countmax','chance', 'chance1', 'subtype', 'actionId', 'text'} } local dir = 'data/monster/' local file = 'monsters.xml' for line in io.lines(dir..file) do if string.match(line, '<(%a-)%s* ') ~= nil then for lines in io.lines(dir..line:match('file="(.-)"') ) do if string.match(lines, '<(%a-)%s* ') ~= nil then local p = data[string.match(lines, '<(%a-)%s* ')] if p ~= nil then for i = 1, #p do local t = lines:match(p[i]..'="(.-)"') if t ~= nil then print(string.match(lines, '<(%a-)%s* '), p[i], t) end end end end end end end Items local items = {} local para = { 'id', 'name', 'fromid', 'toid', 'key', 'value' } function Items() local file = 'data/items/items.xml' local k = {} for line in io.lines(file) do if string.match(line, '<(%a-)%s* ') ~= nil then local itemParam = string.match(line, '<(%a-)%s* ') if itemParam ~= nil then for type_ in line:gmatch(itemParam) do for i = 1, #para do if line:match(para[i]..'="(.-)"') then table.insert(k, para[i]..' = "'..line:match(para[i]..'="(.-)"')..'", ') end end local temp = '{'..table.concat(k) temp = temp:sub(1, #temp - 2)..'},' k = {} table.insert(items, temp) end end end end for k, v in pairs(items)do print(v) end end Items() Spells local spells = {} local para = { 'group', 'spellid', 'name', 'words', 'lvl', 'mana', 'prem', 'range', 'needtarget', 'blockwalls', 'needweapon', 'exhaustion', 'groupcooldown', 'casterTargetOrDirection', 'aggressive', 'needlearn', 'selftarget', 'script', 'charges', 'maglv' } function parseSpells() local file = 'data/spells/spells.xml' local k = {} for line in io.lines(file) do if string.match(line, '<(%a-)%s* ') ~= nil then spellParam = string.match(line, '<(%a-)%s* ') if spellParam ~= nil then for type_ in line:gmatch(spellParam) do for i = 1, #para do if line:match(para[i]..'="(.-)"') then table.insert(k, para[i]..' = "'..line:match(para[i]..'="(.-)"')..'", ') end end local temp = '{'..table.concat(k) temp = temp:sub(1, #temp - 2)..'},' k = {} table.insert(spells, temp) end end end end for k, v in pairs(spells)do print(v) end end parseSpells()
    1 ponto
  5. SkyLigh

    Evento Double Exp

    Fala galera tudo bem? Essa semana teve um membro que pediu um evento de double exp até que consegui fazer usando alguns scripts como base, então vamos ao código. INSTALAÇÃO Vá em data/creaturescripts/scripts e em creaturescripts.xml adicione a seguinte tag. <event type="kill" name="ExpBonus" event="script" value="exp.lua"/> Em data/creaturescripts/scripts crie um arquivo .lua e renomeie para exp.lua e adicione o seguinte código. function onKill(cid, target) if isPlayer(cid) and isMonster(target) then if getGlobalStorageValue(102590) - os.time() >= 1 then local exp = getExperienceStage(getPlayerLevel(cid), getVocationInfo(getPlayerVocation(cid)).experienceMultiplier) local count = ((getMonsterInfo(string.lower(getCreatureName(target))).experience*1.5*exp)/2) doPlayerAddExperience(cid, count) addEvent(doSendAnimatedText, 500, getCreaturePosition(cid), '+'..count, math.random(50,60)) end else return TRUE end return TRUE end Agora no data/creaturescripts/scripts e login.lua adicione a seguinte tag. registerCreatureEvent(cid, "ExpBonus") Agora vá em data/talkactions/scripts talkactions.xml <talkaction words="/doubleexp" access="5" event="script" value="exp.lua"/> Em data/talkactions/scripts crie um arquivo.lua e o renomeio para exp.lua e adicione o seguinte código dentro. function onSay(cid, words, param, channel) local config = { storage = 102590, } if(param == 'cancel') then if getGlobalStorageValue(config.storage) > 0 then setGlobalStorageValue(config.storage, -1) doBroadcastMessage("Double Exp cancelado") end return true end param = tonumber(param) if(not param or param < 0) then doPlayerSendCancel(cid, "Digite por quantas horas o evento ira durar") return true end if getGlobalStorageValue(config.storage) - os.time() <= 0 then setGlobalStorageValue(config.storage, os.time()+param*60*60) doBroadcastMessage("Exp bonus ativado 50% + EXP por "..param.." horas! Aproveite.") end return true end COMO UTILIZAR Para ativar o comando digite /doubleexp Quantidade de horas que vai durar o evento Exemplo /doubleexp 3 o evento ira durar por 3 horas. Para cancelar o evento basta digitar /doubleexp cancel apenas os GOD'S podem utilizar os 2 comandos. Créditos --- Pela postagem do tópico e edição nos códigos. --- Por eu tê pego uma parte de um script dele do creaturescripts. Espero que gostem
    1 ponto
  6. Luga03

    Kozmo - Informações

    O mundo de Kozmo o espera com calabouços e desafios que tremeriam até as orelhas do Pikachu mais destemido! Em Kozmo a sua aventura terá um novo corpo, um novo destino, e será vivenciada pelo seu pokémon preferido! Em breve colocaremos: algumas fotos, informações adicionais e os créditos. V0.4 Equipe Atual: Colaboradores: Os colaboradores, são os que ajudaram a fixar bugs e outras coisas
    1 ponto
  7. XxhadesXx

    Blast networks 7.72 project

    Hello Community.! What is expected in this release MMORPG game called "tepid" in a nutshell "is to incorporate the new updates of the newest versions to an older platform" that is the mission of this project, because many fans will warm really excited about this. Perhaps many of you have ever thought that would warm the PVP version 7.72 and implement new Maps, Items, Monster and Outfits Reality is not as we thought, Tibia developers focused more to the field of Marketing for better monetary gain rather than meet the needs of players in the end made no radical changes and not we liked all the changes. To be honest. Maps, Monsters, Outfits, addons and mounts are great, not to mention the system of "War System" it is innovative, Tibia happened to be a totally strategic and complicated game to be a game without any difficulty. The challenge, excitement and adrenaline of the game was completely lost in the moment. Are we satisfied with the current Tibia?Because best not to create a server that contains the good things about the current versions but also have good things of old versions! Well here it is. "Blast Networks" offers you the opportunity to relive those times but also offers them a Mechanical retaining a 7.7 server, and implement the best things about the current versions. example: new outfits, Addons, Mounts, Items and Maps. Do not wait, follow us on Facebook for more information and details of the progress that arise in "Blast.Networks". Do not miss it. https://www.facebook.com/groups/Blast.Networks/ . Tibia Features . NPC System 7.7. 100% Balanced Vocations. 100% Bless System. 100% Party Experience Shared System. 100% Market System. 12% Bounty Hunter System. 50% Guild War System. 65% . Tibia - Quests . . In construction Quests . *The Pits of Inferno Quest. 20% * The Svargrond Arena Quest. 100% * The Inquisition Quest. 45% * The Demon Oak Quest. 100% * Eleonores Quest. 0% * Voodoo Master Quest. 0% * The Shattered Isles Quest. 0% * The Killing In The Name Of... Quest. 35% * The Queen of the Banshees Quest. 42% * The Postman Missions Quest. 0% * The Ancient Tombs Quest. 0% * The Paradox Tower Quest. 0% * The Annihilator Quest. 100% * The Demon Helmet Quest. 100% * The Fire Axe Quest. 100% * The Parchment Quest. 100% * The Behemoth Quest. 20% * The Black Knight Quest. 0% * The Mad Mage Room Quest. 0% * The Outlaw Camp Quest (Bright Sword). 0% More information at Facebook Group: https://www.facebook.com/groups/Blast.Networks/ System added the 12/04/2015 Wolrd 8.6 in 7.72 Server and Client. reserved
    1 ponto
  8. Luga03

    Limite de level

    Iai, pessoal blz? Estou aqui para postar uma gambiarra que eu fiz kkk está gambiarra deixa o player impossível de passar do levle 100 , se ele passar deste level o script fará ele voltar do level dele por 100, por exemplo, to level 99, dai eu upo uns 10 level, e fico no level 109, ai o script faz voltar pro level 100. é uma gambiarra grande hein kkk, tomei como base uns scripts que vi com o tempo, eu testei e está funcionando 100% então espero que gostem em creaturescripts/scripts crie um arquivo com o nome de MaxLevel.lua então coloque isto dentro: local level = 100 function onAdvance(cid, skill, oldLevel, newLevel) if skill == 8 then if getPlayerLevel(cid) >= level then doPlayerSetRate(cid, 8, 0.0) doPlayerSetExperienceRate(cid, 0.0) doPlayerAddExp(cid, getExperienceForLevel(level)-getPlayerExperience(cid)) doPlayerSendCancel(cid, "Você atingiu o level limite de ".. level .."!") end end return true end Agora em login.lua adicione isto com as linhas semelhantes: registerCreatureEvent(cid, "MaxLevel") E para finalizar vá em creaturescript.xml e adicione isto: <event type="advance" name="MaxLevel" event="script" value="Maxlevel.lua"/> Pronto! Script adicionado e funcionando! Espero que gostem! vlw e fuis
    1 ponto
  9. Luga03

    Limite de level

    Eu fiz este script como gambiarra, porque tipo, eu pego level 100 e lá manda a msg que peguei o level limite, se for tentar ganhar level por XP, não vai conseguir, porque sempre vai executar o onAdvance dai vai executar o script para que volte ao level 100, o unico meio de burla este sistema é se for para adicionar level direto na database, por query e tals, mas se ganhar + 1 level volta pro 100, então acho meio quase impossivel burla auehauauehau mas espero que gostem Talvez eu tente remover dps a msg que manda quando volta pro level 100 ... e ainda adicionei lá o negocio para setar a rate de XP para 0, só não sei se está funcionando '-' mas mesmo assim o resto está
    1 ponto
  10. doPlayerSendTextMessage(cid, 27, time) para doPlayerSendTextMessage(cid, 27, "{Teleport} "..time.." segundos para teletransportar.")
    1 ponto
  11. eu nao recomento esssas sources, porque tem um bug: quando vc mata um monstro X e o corpo dele fica no caminho do monstro Y (supondo q n existam outros caminhos) o monstro Y não irá atacar você. sobre o invalid password é provavelmente por causa da criptografia das senhas, talvez pode haver um bug ao criar contas pelo acc manager e vc tenha q criar contras somente por site.
    1 ponto
  12. aqui eu adicionei uma parte pra limitar o uso para 2 vezes por hora local money = 3000000 local seconds = 3600 local storage = 40100 local error = 0 function onUse (cid, item) if (getGlobalStorageValue(storage) - os.time() > 0) then error = error + 1 if (getGlobalStorageValue(storage+1) - os.time() > 0) then error = error + 1 else setGlobalStorageValue(storage+1, os.time() + seconds) end else setGlobalStorageValue(storage, os.time() + seconds) end if error == 2 then doPlayerSendCancel(cid, "Ja foi usado duas vezes na última hora.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return true end if not doPlayerRemoveMoney(cid, money) then doPlayerSendCancel(cid, "Voce nao possui dinheiro suficiente.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return true end doCreateMonster("Rat", getPlayerPosition(cid)) return true end sobre a minha ideia de npc: é possivel fazer um npc escolher seus alvos, assim seria possivel fazer um npc atacar a guild X ou nao atacar porem nao tem como atacar um npc entao a minha ideia é sumonar um npc que nao ataque a guild X e sumonar um monstro que nao ataque ninguem, para derrotar o npc, as outras guilds teria q matar o monstro q nao ataca ninguem, fica um pouco confuso, mas funcionaria
    1 ponto
  13. Akzs

    HELP PLEASE!

    Entre no site do pagseguro > logue na sua conta > Integrações > Pagamentos via api e desabilita Quero receber somente pagamentos via API, e pronto.
    1 ponto
  14. Eskylo

    HELP PLEASE!

    dê mais detalhes do seu problema, o que levou você a essa página, etc
    1 ponto
  15. Eskylo

    Monstro que da storage

    vc pode pegar uma global storage e salvar o id da guild q derrotou o monstro e no script do tile vc checa se o id da guild de qm passou no tile é o mesmo id que ta na global storage
    1 ponto
  16. textoy

    [Arquivado]OTServers 2015

    @@Daniel Tens razão brother Mas apesar dos apesares acho que tem condição e tem como a gente levar a area pra frente, ainda existem os que aprendem e criam. As vezes se torna dificil achar o suporte esperado também, oque dificulta o aprendizado (ja passei por iso) mas nada que nos faça perder a vontade ou deixar de acreditar na area. Necronia conseguiu reunir uma equipe que busca aprender, alem de saber e sabe oque criar, oque deu certo. Mas usem como exemplo o forum, tem mt galera que eu acho muito foda, sao programadores otimos(nao vou citar nomes), que dão suporte quando podem mas nunca entram em projetos fixos, por problemas pessoais, oque nao vem ao caso. São pessoas que tem capacidade mas tem outras prioridades.
    1 ponto
  17. SkyDangerous

    [Encerrado]Uma nova Era 2016

    Alguém afim de montar uma equipe única e preparada para a criação de uma nova era de otserv em 2016? visando um servidor diferenciado, o mapa será do zero porém as partes mais importantes do global tipo como (yalahar, farmine ..) iram existir para que não demore tanto a finalização do mapa e do servidor. A versão do servidor será a mais recente atualmente (10.82) . - Serão as mesmas vocações, porém queria ir mais além das vocações ms, ed, rp e ek.. que tal, promotions novas onde a pessoa poderia escolher o seu destino final ? Que tal você ser um Master Sorcerer e escolher como seu final um sorcerer de war? Onde você poderá usar runas com maior dano? ou um master sorcerer mais de caça, podendo ter magias mais fortes? O objetivo do servidor é único ser um servidor diferenciado, difícil rates e o mais legal mapa próprio (desconhecido) para que os players se aventurem explorando os mistérios, quests e enigmas no mapa (: Para aqueles que queiram participar meu skype é : pedrohenriquefk me adicionem para trocarmos ideias , juntando as ideias trabalharem por cima de tudo que for útil e diferente (:
    1 ponto
  18. Flaah

    Kozmo - Informações

    Ótimo projeto! Tbm estou em um parecido já faz 1 ano mais ou menos, (dei uma parada por causa do meu curso, mais já retornei ao projeto), mesmo assim isso não nos transforma em "rivais", caso vc queira uma parceria, tanto para ideias ou coisa parecida, só enviar skype, que podemos conversar. - "O importante é ajudar um ao outro a crescer, sem impedir o crescimento do próximo" Boa sorte e tmj
    1 ponto
  19. O Caipora

    [Arquivado]OTServers 2015

    Não costumo mais jogar Tibia, mas sou antigo aqui no Fórum, pra quem não se lembra, eu fui o vencedor do primeiro concurso XTibia de Scripting. Infelizmente o que acontece hoje é que as pessoas querem mais ação em um curto período de tempo. Elas não querem mais "curtir" o jogo, desenvolver e construir seu personagem, evoluir o mesmo, criar realmente uma "história", igual era antigamente, quando você e seu personagem eram quase a mesma pessoa, você morria no Tibia antigamente (2004-2005) quando eu comecei, parecia que você tinha tomado um tiro na vida real de tanta tristeza que dava. Se você tentar criar um servidor muito inovador, com muitos sistemas únicos e tudo mais, vai ser (infelizmente) uma grande perda de tempo, pois as crianças, jovens de hoje só querem respostas rápidas, não sabem ter paciência, não curtem o jogo como era pra ser. Os servidores globais monopolizaram o "cenário" e só com muita propaganda investida e uma boa base, um servidor inovador pode ressurgir e "salvar" tudo. Eu sou Beta Tester em um servidor gringo (Necronia), foi o melhor servidor que já joguei na vida, ele vai ficar Open em dezembro, para quem animar: https://otland.net/threads/necronia-new-world-discussion.204040/
    1 ponto
  20. wesleyvictorv

    PokéHouse V2.0

    affs os cara so pensa em otclient que merda de otclient a pior coisa que inventaram no mundo merda de otclient
    1 ponto
  21. Novo server Inalgurando Hoje 14/10/2015 , server 10.82 Novos outfits, mounts, MAPA GLOBAL 100%! EXP Etages low, 24hrs online www.kaospro.servergame.com venha se divertir. é 10.82
    1 ponto
  22. 1 ponto
  23. L3K0T

    Modern AAC em CS2 and CS3

    ok ^^
    1 ponto
  24. porque no pokedex eu adiciono um novo pokemon adiciono, Shiny Gyarados a portrait na pokedex vem errada pokedex.lua Spoiler function onUse(cid, item, fromPos, itemEx, toPos) local pokemon = itemEx.uid local pokemons = { {"Bulbasaur", 20, 1001}, {"Ivysaur", 40, 1002}, {"Venusaur", 75, 1003}, {"Charmander", 20, 1004}, {"Charmeleon", 40, 1005}, {"Charizard", 75, 1006}, {"Squirtle", 20, 1007}, {"Wartortle", 40, 1008}, {"Blastoise", 75, 1009}, {"Caterpie", 5, 1010}, {"Metapod", 10, 1011}, {"Butterfree", 30, 1012}, {"Weedle", 5, 1013}, {"Kakuna", 10, 1014}, {"Beedrill", 30, 1015}, {"Pidgey", 5, 1016}, {"Pidgeotto", 20, 1017}, {"Pidgeot", 65, 1018}, {"Rattata", 5, 1019}, {"Raticate", 20, 1020}, {"Spearow", 5, 1021}, {"Fearow", 50, 1022}, {"Ekans", 12, 1023}, {"Arbok", 30, 1024}, {"Pikachu", 20, 1025}, {"Raichu", 45, 1026}, {"Sandshrew", 18, 1027}, {"Sandslash", 55, 1028}, {"Nidoran Female", 10, 1029}, {"Nidorina", 25, 1030}, {"Nidoqueen", 65, 1031}, {"Nidoran Male", 10, 1032}, {"Nidorino", 25, 1033}, {"Nidoking", 65, 1034}, {"Clefairy", 10, 1035}, {"Clefable", 35, 1036}, {"Vulpix", 20, 1037}, {"Ninetales", 65, 1038}, {"Jigglypuff", 10, 1039}, {"Wigglytuff", 42, 1040}, {"Zubat", 10, 1041}, {"Golbat", 30, 1042}, {"Oddish", 5, 1043}, {"Gloom", 10, 1044}, {"Vileplume", 50, 1045}, {"Paras", 5, 1046}, {"Parasect", 50, 1047}, {"Venonat", 18, 1048}, {"Venomoth", 50, 1049}, {"Diglett", 5, 1050}, {"Dugtrio", 35, 1051}, {"Meowth", 12, 1052}, {"Persion", 25, 1053}, {"Psyduck", 12, 1054}, {"Golduck", 55, 1055}, {"Mankey", 10, 1056}, {"Primeape", 45, 1057}, {"Growlithe", 20, 1058}, {"Arcanine", 75, 1059}, {"Poliwag", 5, 1060}, {"Poliwhirl", 20, 1061}, {"Poliwrath", 65, 1062}, {"Abra", 15, 1063}, {"Kadabra", 45, 1064}, {"Alakazam", 75, 1065}, {"Machop", 18, 1066}, {"Machoke", 40, 1067}, {"Machamp", 65, 1068}, {"Bellsprout", 5, 1069}, {"Weepinbell", 27, 1070}, {"Victreebel", 50, 1071}, {"Tentacool", 12, 1072}, {"Tentacruel", 70, 1073}, {"Geodude", 12, 1074}, {"Graveler", 40, 1075}, {"Golem", 65, 1076}, {"Ponyta", 20, 1077}, {"Rapidash", 60, 1078}, {"Slowpoke", 12, 1079}, {"Slowbro", 45, 1080}, {"Magnemite", 15, 1081}, {"Magneton", 40, 1082}, {"Farfetchd", 40, 1083}, {"Doduo", 12, 1084}, {"Dodrio", 45, 1085}, {"Seel", 20, 1086}, {"Dewgong", 65, 1087}, {"Grimer", 12, 1088}, {"Muk", 30, 1089}, {"Shellder", 5, 1090}, {"Cloyster", 65, 1091}, {"Gastly", 18, 1092}, {"Haunter", 45, 1093}, {"Gengar", 80, 1094}, {"Onix", 50, 1095}, {"Drowzee", 22, 1096}, {"Hypno", 50, 1097}, {"Krabby", 5, 1098}, {"Kingler", 35, 1099}, {"Voltorb", 14, 1100}, {"Electrode", 38, 1101}, {"Exeggcute", 8, 1102}, {"Exeggutor", 48, 1103}, {"Cubone", 18, 1104}, {"Marowak", 45, 1105}, {"Hitmonlee", 55, 1106}, {"Hitmonchan", 55, 1107}, {"Lickitung", 45, 1108}, {"Koffing", 15, 1109}, {"Weezing", 30, 1110}, {"Rhyhorn", 35, 1111}, {"Rhydon", 55, 1112}, {"Chansey", 50, 1113}, {"Tangela", 20, 1114}, {"Kangaskhan", 60, 1115}, {"Horsea", 5, 1116}, {"Seadra", 45, 1117}, {"Goldeen", 10, 1118}, {"Seaking", 25, 1119}, {"Staryu", 15, 1120}, {"Starmie", 45, 1121}, {"Mr.mime", 60, 1122}, {"Scyther", 70, 1123}, {"Jynx", 65, 1124}, {"Electabuzz", 70, 1125}, {"Magmar", 70, 1126}, {"Pinsir", 42, 1127}, {"Tauros", 40, 1128}, {"Magikarp", 1, 1129}, {"Gyarados", 75, 1130}, {"Lapras", 70, 1131}, {"Ditto", 40, 1132}, {"Eevee", 20, 1133}, {"Vaporeon", 55, 1134}, {"Jolteon", 55, 1135}, {"Flareon", 55, 1136}, {"Porygon", 45, 1137}, {"Omanyte", 20, 1138}, {"Omastar", 70, 1139}, {"Kabuto", 20, 1140}, {"Kabutops", 70, 1141}, {"Aerodactyl", 110, 1142}, {"Snorlax", 85, 1143}, {"Articuno", 110, 1144}, {"Zapdos", 110, 1145}, {"Moltres", 110, 1146}, {"Dratini", 10, 1147}, {"Dragonair", 70, 1148}, {"Dragonite", 110, 1149}, {"Mewtwo", 110, 1150}, {"Mew", 110, 1151}, {"Shiny Charizard", 110, 1152}, {"Shiny Magikarp", 110, 1153}, {"Cyndaquil", 110, 1154}, {"Shiny Gyarados", 110, 1155}, } for _,n in pairs(pokemons) do if isSummon(pokemon) then if getCreatureName(pokemon) == n[1] and getPlayerLevel(cid) >= n[2] and getPlayerStorageValue(cid, n[3]) <= 0 then j = (n[2]) *10 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have unlocked " .. n[1] .. " in your pokedex!") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have gained " .. j .. " experience points.") doSendMagicEffect(getThingPos(cid), 210) doPlayerAddExperience(cid, (n[2])*10) setPlayerStorageValue(cid, n[3], 1) local v = ((n[3]) + 1376) local dexstring = ""..n[1]..".txt" local Dex = io.open('data/pokedex/'..dexstring, 'r') doShowTextDialog(cid, (v), Dex:read("*all")) Dex:close() elseif getCreatureName(pokemon) == n[1] and getPlayerLevel(cid) < n[2] and getPlayerStorageValue(cid, n[3]) <= 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need to be at least level " .. n[2] .. " to unlock this pokemon.") elseif getCreatureName(pokemon) == n[1] and getPlayerStorageValue(cid, n[3]) >= 1 then local v = ((n[3]) + 1376) local dexstring = ""..n[1]..".txt" local Dex = io.open('data/pokedex/'..dexstring, 'r') doShowTextDialog(cid, (v), Dex:read("*all")) Dex:close() end elseif isMonster(pokemon) then if getCreatureName(pokemon) == n[1] and getPlayerStorageValue(cid, n[3]) <= 0 then j = (n[2]) *10 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have unlocked " .. n[1] .. " in your pokedex!") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have gained " .. j .. " experience points.") doSendMagicEffect(getThingPos(cid), 210) doPlayerAddExperience(cid, (n[2])*10) setPlayerStorageValue(cid, n[3], 1) local v = ((n[3]) + 1376) local dexstring = ""..n[1]..".txt" local Dex = io.open('data/pokedex/'..dexstring, 'r') doShowTextDialog(cid, (v), Dex:read("*all")) Dex:close() elseif getCreatureName(pokemon) == n[1] and getPlayerStorageValue(cid, n[3]) >= 1 then local v = ((n[3]) + 1376) local dexstring = ""..n[1]..".txt" local Dex = io.open('data/pokedex/'..dexstring, 'r') doShowTextDialog(cid, v, Dex:read("*all")) Dex:close() end end end local store = {1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155} local unlock = {} if not isCreature(itemEx.uid) then return true end for i = 1, #store do if getPlayerStorageValue(itemEx.uid, store) > 0 then table.insert(unlock, 1) end end if isPlayer(itemEx.uid) then setPlayerStorageValue(cid, 7274, 1) if getCreatureName(cid) == getCreatureName(itemEx.uid) then doPlayerSendTextMessage(cid, 27, "You have unlocked " .. #unlock .. " pokemons already.") --doPlayerSendTextMessage(cid, 27, "You can open a pokedex entry by typing \"/dex <name>\". Example: \"/dex Pikachu\".") else doPlayerSendTextMessage(cid, 27, getPlayerName(itemEx.uid) .. " has unlocked " .. #unlock .. " pokemons already.") end end return true end Matei a charada rsrs ainda bem que gosto de matemática kkk É o seguinte você vai na sua pokedex como essa minha e vamo ver uma portrait do id correto. fazendo 1001 + 1376 = 2377 = ID real da Portrait do Bulbasaur. para por na pokedex você deve subtrair 2377 - 1376 = 1001 pra pokedex ler isso ai vlwss obrigado mesmo quem não me ajudou!
    1 ponto
  25. sim já to ligado.
    1 ponto
  26. CONTEÚDO REMOVIDO: AGORA VOCÊ VAI TER QUE TER CRIATIVIDADE OU SE PENDURAR-SE NAS COSTA DE ALGUÉM, MENOS NA MINHA - BOA SORTE! error 404 - I do not serve the forum I retired.
    1 ponto
  27. Server usado: The Forgotten Server, version 0.3.6 Função usada: doCreateCustomMonster(name, pos, outfit, health, spells, corpse, distance, experience ) Autor: MeNi (OTLand) Fala ai amigos do XTibia, vim aqui hoje pra trazer uma função muito maneira que é a: doCreateCustomMonster, ela é muito usada para fazer clones do proprio player (Que eu saiba). Foto como exemplo: Bom vamos lá: Abra o arquivo: luascript.cpp E abaixo do código: Adicione: No mesmo arquivo, abaixo do código: //doCreateMonster(name, pos) lua_register(m_luaState, "doCreateMonster", LuaScriptInterface::luaDoCreateMonster); Adicione: //doCreateCustomMonster(name, pos, outfit, health, spells, corpse, distance, experience ) lua_register(m_luaState, "doCreateCustomMonster", LuaScriptInterface::luaDoCreateCustomMonster); Agora abra o arquivo: luascript.h Nesse aquivo, abaixo da linha: static int32_t luaDoCreateMonster(lua_State* L); Adicione: static int32_t luaDoCreateCustomMonster(lua_State* L); E pra finalizar, abra o arquivo: monsters.h E procure a palavra: private E coloque ela para: public ATENÇÃO: Não exclua NENHUM código já existente, só adiciona como ja explicado acima. OBS: A cada modificação nos arquivos que você editou, você devera salva, se não você corre o risco de perde o que você adicionou. PS: Qualquer ERRO na hora de compilar, podem ser dos seguinte motivos: - Você excluiu algo. - Você copio e colo errado. - Não soube compilar direito. - Ou seu server não é compativel com o código. Exemplo de uso: 1º Crie um arquivo na pasta talkactions/scripts com o nome de clone.lua e coloque em seu conteúdo: Explicando: doCreateCustomMonster(nome, posição, outfit, health, attacks, corpo quando morto, distancia do player, experiencia) 2º Abra o arquivo talkactions.xml e adicione em qualquer lugar: <talkaction words="!clone" event="script" value="clone.lua"/> Créditos: MeNi (OTLand) 95%, pelo script C++. NogareD 2% (XTibia) pela talkaction. Eu o Flaah 3% (XTibia) pela pesquisa na net pelo sistema. Bom é isso ai pessoal, tomara que vocês tenham gostado. AJUDEI?! +REP
    1 ponto
  28. Ola galera to XTIBIA, esse é meu primeiro tópico, e só tenho 6 meses de tibia, mais deu pra eu fazer um script, simples mais simbolico e bem util para servers em geral, então vamos lá... Bom o script se baseia-se em 2 scripts juntados mais a ajuda do nosso e velho amigo Vodkart, ele me ajudo na edição e ajustes dos erros encontrados no sistema. O funcionamento é simples, vc da o comando !sentar (você pode editar como quizer), e o seu o personagm sentar, e com isso o MANA e LIFE vão se recuperando aos poucos (você pode editar o tempo de recuperação e quando ele vai ganha de MANA e LIFE por tempo), para que o personagem volte ao normal vc deve digita o comando denovo, !sentar, ai ele saira da paralisação e voltara a andar normalmente. Primeiramente pegue um arquivo qualquer no seu server e renomeie para: sentar.lua Depois abra esse arquivo e coloque o SCRIPT abaixo dentro do arquivo: sentar.lua: SCRIPT: -- (Sistema para sentar com recuperação automatica) -- -- Criadores: Flaah e Vodkart (Não retirem os créditos) -- events = {} config = { sit = {hp = 5, mana = 5}, outfit = {lookType = 357}, storage = 21211 } local outfits = { [1] = {lookType = 200}, -- o numero 1 é o ID da vocação e 200 é o ID do looktype. [2] = {lookType = 201}, -- o numero 2 é o ID da vocação e 201 é o ID do looktype. [3] = {lookType = 202}, -- o numero 1 é o ID da vocação e 202 é o ID do looktype. } function onSay(cid, words, param, channel) setPlayerStorageValue(cid, config.storage, getPlayerStorageValue(cid, config.storage) == -1 and 1 or -1) doCreatureSetNoMove(cid, getPlayerStorageValue(cid, config.storage) == 1 and true or false) if getPlayerStorageValue(cid, config.storage) == 1 then doPlayerSay(cid, "Ufa, Relaxando") doSetCreatureOutfit(cid, config.outfit, -1) doSendMagicEffect(getCreaturePosition(cid), 69) doSitRelax(cid, config.sit) else doPlayerSay(cid, "OPA, hora de volta ao trabalho") doRemoveCondition(cid, CONDITION_OUTFIT) stopEvent(events[getPlayerGUID(cid)]) local voc_id = getPlayerVocation(cid) if getPlayerVocation(cid) > 0 then doSetCreatureOutfit(cid, outfits[voc_id], -1) end end return true end function doSitRelax(cid, formula) if not isCreature(cid) then return LUA_ERROR end doCreatureAddHealth(cid, formula.hp) doCreatureAddMana(cid, formula.mana) doSendMagicEffect(getCreaturePosition(cid), 69) events[getPlayerGUID(cid)] = addEvent(doSitRelax, 5000, cid, formula) end COMANDO: <talkaction words="!sentar" event="script" value="sentar.lua" /> INFORMAÇÕES: O que esta em: [1], [2] [3] Você devera coloca cada vocation que tem no seu server. O que esta em: {lookType = 200} Você devera colocar cada looktype que representa cada vocation do seu server. O que esta em: sit = {hp = 5, mana = 5}, São a quantidade de MANA e LIFE que o player ira ganha quando estive sentado. O que esta em: outfit = {lookType = 3}, é looktype de quando o player estive sentado. O que esta em: doPlayerSay(cid, "Ufa, Relaxando") e doPlayerSay(cid, "OPA, hora de volta ao trabalho") São as falas que o player ira solta quando fizer o comando se !sentar e depois !sentar denovo para pode levantar. O que esta em: doSendMagicEffect(getCreaturePosition(cid), CONST_ME_HOLYAREA) É o efeito que o player irar ganha ao sentar e o segundo é quando o player estive ganhando o MANA e LIFE. E o que esta em: events[getPlayerGUID(cid)] = addEvent(doSitRelax, 5000, cid, formula) É o tempo que o player irar fica ganhando o MANA E LIFE. (Sendo que 5000 são 5 segundos). OBS: Para que vc coloque mais vocations e lookType é só repetir essa linha, mais claro trocando os numeros pelos o que você quer: [1] = {lookType = 200}, Bom.. tomara que vocês tenham gostado , deu um pouco de trabalho mais valeu a pena, Obrigadão Vodkart pela ajuda, e obrigado XTIBIA pelo ótimo forum de vocês, Boa Noite a Todos. PS: Tomara que eu tenha merecido um +REP ai u.u, KKKKK' ASS: Flaah
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...