Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 03/22/11 em todas áreas

  1. Demonbholder

    [Talkaction] Game

    Boooas galera! E ai, tudo bem? Ontem a noite eu estava tomando um Redbull e percebi que não ira dormir tão cedo, então eu resolvi bolar um pequeno jogo que terá novas versões em breve. O mais impressionante é que eu fiz e deu certo quase de primeira. Bom, vamos parar com a conversa fiada e vamos logo as explicações: Como funciona: Um breve resumo: dois jogadores devem ficar em duas posições escolhidas no script. Um comando inicial !start inicia o jogo, assim cada um recebe um número de carta, que pode variar de 1 a 20. Certo, depois disso vem a segunda parte, a seção de aposta. O primeiro jogador que apostar algo acima de 0 e menor que 1000 com o comando !bet Número vai ser o mandante. Depois disso, os dois jogadores devem falar !accept para ver quem tem a maior carta, assim o vencedor ganhará o dinheiro da aposta. Se algum jogador usar a palavra !reject ao invés de !accept o jogo reiniciará. Algumas prevenções de bugs do sistema: Se o oponente demorar muito para fazer sua jogada, tal como aceitar a aposta, é possível, depois de 3 minutos, o jogador falar !quitgame e o jogo reiniciar. Qualquer membro da staff com acesso maior que 3 pode usar o comando /endgame para encerrar algum jogo em andamento. O script não deixa jogadores com o mesmo ip utilizarem o sistema por motivos claros. Há um script de movement para não deixar os jogadores sair do tile após começar o jogo. Há um script de creaturescripts para não deixar os jogadores logarem após começar o jogo. Bom, é isso, acho que deu pra entender. Eu fiz o script tentando evitar o máximo que algum jogador abuse de bugs. Talkaction: function onSay(cid, words, param) local random1 = math.random(1, 20) local pos1 = getThingFromPos({x=, y=, z=, stackpos=253}).uid local pos2 = getThingFromPos({x=, y=, z=, stackpos=253}).uid local place1 = {x=, y=, z=} local place2 = {x=, y=, z=} local tempo = 180 local random2 = math.random(1, 20) if words == "!start" then if isPlayer(pos1) and isPlayer(pos2) and (pos1 == cid or pos2 == cid) then if getPlayerStorageValue(pos1, 30001) == -1 and getPlayerStorageValue(pos2, 30001) == -1 then if getPlayerIp(pos1) ~= getPlayerIp(pos2) then setGlobalStorageValue(30002, -1) doPlayerSendTextMessage(pos1, 22, "Game starting...") doPlayerSendTextMessage(pos2, 22, "Game starting...") setPlayerStorageValue(pos1, 30001, 1) setPlayerStorageValue(pos2, 30001, 1) setPlayerStorageValue(pos1, 30002, random1) setPlayerStorageValue(pos2, 30002, random2) doPlayerSendTextMessage(pos1, 4, "Sua carta é " .. random1) doPlayerSendTextMessage(pos2, 4, "Sua carta é " .. random2) doSendMagicEffect(getThingPos(pos1), 65) doSendMagicEffect(getThingPos(pos2), 65) setGlobalStorageValue(30002, tempo + os.time()) else doPlayerSendCancel(cid, "Você e seu companheiro tem o mesmo ip.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Você já esta no meio de um jogo.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Você precisa ser um dos dois participantes.") doSendMagicEffect(getCreaturePosition(cid), 2) end end if words == "!bet" then if isNumber(tonumber(param)) and tonumber(param) <= 1000 and tonumber(param) > 0 then if isPlayer(pos1) and isPlayer(pos2) and (pos1 == cid or pos2 == cid) then if getPlayerStorageValue(pos1, 30001) == 1 and getPlayerStorageValue(pos2, 30001) == 1 then setGlobalStorageValue(30002, -1) setGlobalStorageValue(30001, tonumber(param)) setPlayerStorageValue(pos1, 30001, 2) setPlayerStorageValue(pos2, 30001, 2) doPlayerSendTextMessage(pos1, 4, "The bet is " .. param) doPlayerSendTextMessage(pos2, 4, "The bet is " .. param) setGlobalStorageValue(30002, tempo + os.time()) else doPlayerSendCancel(cid, "O jogo não esta no estagio de apostas.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Você precisa ser um dos dois participantes.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "A aposta deve ser menor 1000 e maior que 0.") doSendMagicEffect(getCreaturePosition(cid), 2) end end if words == "!accept" then if isPlayer(pos1) and isPlayer(pos2) and (pos1 == cid or pos2 == cid) then if (getPlayerStorageValue(pos1, 30001) == 3 and pos1 ~= cid) or (getPlayerStorageValue(pos2, 30001) == 3 and pos2 ~= cid) then local winner = getPlayerStorageValue(pos1, 30002) > getPlayerStorageValue(pos2, 30002) and pos1 or pos2 if getPlayerStorageValue(pos1, 30002) == getPlayerStorageValue(pos2, 30002) then doPlayerSendTextMessage(pos1, 4, "Empate.") doPlayerSendTextMessage(pos2, 4, "Empate.") setPlayerStorageValue(pos1, 30001, -1) setPlayerStorageValue(pos2, 30001, -1) setPlayerStorageValue(pos1, 30002, -1) setPlayerStorageValue(pos2, 30002, -1) doPlayerSendTextMessage(pos1, 4, "O jogo foi resetado.") doPlayerSendTextMessage(pos2, 4, "O jogo foi resetado.") setGlobalStorageValue(30001, -1) setGlobalStorageValue(30002, -1) doSendMagicEffect(getThingPos(pos1), 37) doSendMagicEffect(getThingPos(pos2), 37) else doPlayerAddMoney(winner, getGlobalStorageValue(30001)) doPlayerSendTextMessage(pos1, 4, "O ganhador é " .. getCreatureName(winner)) doPlayerSendTextMessage(pos2, 4, "O ganhador é " .. getCreatureName(winner)) setPlayerStorageValue(pos1, 30001, -1) setPlayerStorageValue(pos2, 30001, -1) setPlayerStorageValue(pos1, 30002, -1) setPlayerStorageValue(pos2, 30002, -1) doPlayerSendTextMessage(pos1, 4, "O jogo foi resetado.") doPlayerSendTextMessage(pos2, 4, "O jogo foi resetado.") setGlobalStorageValue(30001, -1) setGlobalStorageValue(30002, -1) doSendMagicEffect(getThingPos(pos1), 37) doSendMagicEffect(getThingPos(pos2), 37) end elseif getPlayerStorageValue(pos1, 30001) > 1 and getPlayerStorageValue(pos2, 30001) > 1 and (getPlayerStorageValue(pos1, 30001) ~= 3 or getPlayerStorageValue(pos2, 30001) ~= 3) then setGlobalStorageValue(30002, -1) setPlayerStorageValue(cid, 30001, 3) doPlayerSendTextMessage(pos1, 4, getCreatureName(cid) .. " Aceitou a aposta.") doPlayerSendTextMessage(pos2, 4, getCreatureName(cid) .. " Aceitou a aposta.") setGlobalStorageValue(30002, tempo + os.time()) end end end if words == "!reject" then if isPlayer(pos1) and isPlayer(pos2) and (pos1 == cid or pos2 == cid) then if getPlayerStorageValue(pos1, 30001) > 1 and getPlayerStorageValue(pos2, 30001) > 1 and (getPlayerStorageValue(pos1, 30001) ~= 3 or getPlayerStorageValue(pos2, 30001) ~= 3) then setPlayerStorageValue(pos1, 30001, -1) setPlayerStorageValue(pos2, 30001, -1) setPlayerStorageValue(pos1, 30002, -1) setPlayerStorageValue(pos2, 30002, -1) doPlayerSendTextMessage(pos1, 4, "O jogo foi resetado.") doPlayerSendTextMessage(pos2, 4, "O jogo foi resetado.") setGlobalStorageValue(30001, -1) setGlobalStorageValue(30002, -1) doSendMagicEffect(getThingPos(pos1), 37) doSendMagicEffect(getThingPos(pos2), 37) else doPlayerSendCancel(cid, "Você não esta no estagio para rejeitar uma aposta.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Você precisa ser um dos dois participantes.") doSendMagicEffect(getCreaturePosition(cid), 2) end end if words == "/endgame" or words == "!endgame" then if getPlayerAccess(cid) > 3 then if isPlayer(pos1) and isPlayer(pos2) then if getPlayerStorageValue(pos1, 30001) ~= -1 and getPlayerStorageValue(pos2, 30001) ~= -1 then setPlayerStorageValue(pos1, 30001, -1) setPlayerStorageValue(pos2, 30001, -1) setPlayerStorageValue(pos1, 30002, -1) setPlayerStorageValue(pos2, 30002, -1) doTeleportThing(pos1, place1) doTeleportThing(pos2, place2) doPlayerSendTextMessage(pos1, 4, "O jogo foi resetado por " .. getCreatureName(cid)) doPlayerSendTextMessage(pos2, 4, "O jogo foi resetado por " .. getCreatureName(cid)) setGlobalStorageValue(30001, -1) doSendMagicEffect(getThingPos(pos1), 37) doSendMagicEffect(getThingPos(pos2), 37) setGlobalStorageValue(30002, -1) else doPlayerSendCancel(cid, "O jogo ainda não começou.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Não há dois jogadores nas posições marcadas.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Você não pode executar este comando.") doSendMagicEffect(getCreaturePosition(cid), 2) end end if words == "!quitgame" then if isPlayer(pos1) and isPlayer(pos2) and (pos1 == cid or pos2 == cid) then if getGlobalStorageValue(30002) - os.time() <= 0 and getGlobalStorageValue(30002) ~= -1 then setPlayerStorageValue(pos1, 30001, -1) setPlayerStorageValue(pos2, 30001, -1) setPlayerStorageValue(pos1, 30002, -1) setPlayerStorageValue(pos2, 30002, -1) doPlayerSendTextMessage(pos1, 4, "O jogo foi resetado.") doPlayerSendTextMessage(pos2, 4, "O jogo foi resetado.") setGlobalStorageValue(30001, -1) setGlobalStorageValue(30002, -1) doSendMagicEffect(getThingPos(pos1), 37) doSendMagicEffect(getThingPos(pos2), 37) else doPlayerSendCancel(cid, "Você não pode desistir a menos que seu companheiro tenha ficado inativo por muito tempo.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Você precisa ser um dos dois participantes.") doSendMagicEffect(getCreaturePosition(cid), 2) end end return TRUE end Explicações: Pos1 e Pos2 são as posições onde os jogadores devem estar. Place1 e Place2 são as posições para onde os jogadores serão teleportados caso o membro da staff usar o comando /endgame. Tag: <talkaction words="!start;!bet;!accept;!reject;!quitgame;/endgame;!endgame" script="NomeDoArquivo.lua" /> MoveEvent: function StepOut(cid, item, position, fromPosition) if getPlayerStorageValue(cid, 30001) > 0 then doTeleportThing(cid, fromPosition) else return TRUE end end Explicação: Coloque um Action Id nos dois tiles onde os jogadores devem estar. Tag: <movevent event="StepOut" actionid="Action ID" script="NomeDoArquivo.lua" /> CreatureScript: function onLogout(cid) if getPlayerStorageValue(cid, 30001) > 0 then doPlayerSendCancel(cid, "You can't logout while you are in a game.") return FALSE else return TRUE end end Tag: <event type="logout" name="Game" event="script" value="NomeDoArquivo.lua"/> Prevenção de alguns bugs: Em alguns Ots, é possível que os Storages 30001 e 30002 já estejam sendo usados, caso acontecer, troque no script acima ou troque no outro arquivo que esta sendo usado os Storages. Servidor Testado: New Styller Yourots 0.7.5 Instalando e testando o sistema: http://www.youtube.com/watch?v=SrzO8P28GuM Acho que é isso galera, espero que gostem, até mais galera.
    4 pontos
  2. riksilva10

    Pokemon Serv 100%

    EAE GALERINHA NA PAZ?? VIM AKI PRA TRAZER PARA VCS UM OT COMPLETO DE POKETIBIA COM MAPA QUASE 100% SVKE E MUITO MAIS!! CONFIRA ABAIXO OQUE ELE CONTEM: informaçoes:Maximo de 6 PB o resto vai pro DP 100% Nova Pokedex: 100% Seu pokemon ganha mais life por level 100% Sistema de fraqueza 100% Pokemons passivos 100% Surf 100% Fly 100% Ride 100% Catch 100% Stones System (Alguns evolutem com 2 stones, alguns tem chance de evoluir pra shinys) 100% Move System 100% -- Order Button (Hold position .h) Teleport,Dive System 100% Dig Sys, Flash Sys, Blink Sys, Blink 2 para pokemons mais fortes, Rock Smash Sys, Cut Sys -- 100% order Fishing 100% (balanced) Loot de pokemons como Svke. M1~M12 100% Novos items: Rare candy, exp potion, novos loots. 100% 155 pokemons, raids de pokemons lendarios. 100% Mais de 20 quests e subindo. 100% Sistema de promocao, elite trainer e master trainer. 10%(pois irei fazer o npc de vocação pra quando rebornar escolher a vocaçao ) Cassino 100% Safari zone 100% Utilitarios, Arvores dropam sementes, tochas acesas com essence of fire. 100% Ranking, comando !rank. 100% Mapa, 98%(tem umas areas que se baseião na svke mais não e pareçido e tambem tem hunts faltando mais ireu colocar) svke, houses 100%, spawns 100%, quests 60%. Box 1-4, 100%. Fight arena de Fuchsia, 100%. Pokebags e pokebackpacks, 100%. Diamonds e small diamonds dropando de bixos. 100% Npc de anuncio para todo servidor, NPc ajudante. 100% Poke food, revive, Ultra potion 5x. 100% Evento inicial, a cada 2 horas pegue um premio no cp (random entre xp potions e rare candys).100% sistema !reborn(ao chegar level 150 fale !reborn e volte para level 15,e volte pro level 15) DOWNLOAD SERVER:http://www.megaupload.com/?d=BMTWPRTA DOWNLOAD CLIENT PROPRIO(FEITO POR MIN PARA NAO DAR DEBUG):http://www.megaupload.com/?d=KO81OUGY E É ISSO AE GALERA APROVEITEM... OBS:NET COM PROBLEMA QNDO EU PUDER EU POSTO SCAN ,MAS PODE CONFIA NAO TEM VIRUS!!! EU JA IA ESQUECENDO!!!GOSTOU??INTAO NAO SE ESQUEÇA REP++
    3 pontos
  3. Hello Como prometido irei disponibilizar agora o download do mapa pokemon que estive trabalhando. Coloquei as houses mais não o respaw. Apresentações ? Vamos lá para uma prévia das cidades. As hunt's vocês terão que baixar para conferir CITY 1 CITY 2 CITY 3 CITY 4 Me ajudem a atingir 200 REP +, Que farei este mapa ficar muito melhor do que está. Antes era 150 REP+, Mas por conta de alguns moderadores me tirarem REP + dizendo que eu tinha feito outra conta para me dar REP + agora será 200. Segue o download do mapa e o que precisa para que você abra-o MAPA BETINHOWZ666 SPR POR PIRADECO Créditos: PeeWee - por fazer parte do mapa Piradeco - pelas .spr e .dat betinhowz666 - por estar editando. (EU)
    2 pontos
  4. 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
  5. MarcelloMendes

    [Advanced Reset System 2.0]

    -= Advanced Reset System 2.0 =- By: MarcelloMkez Fala galerinha, to aqui dinovo , mas agora e com a versão 2.0 do meu 'Advanced Reset System'. E como prometido, trazendo algumas novidades: _________________________________________________________________________________________________________________________________ - Resets agora armazenados diretamente na 'DataBase', acabando com o sistema de Storages, e com o problema dos resets atrasados no look; - Opções para Abilitar e Desabilitar Condições como por exemplo: 'look = true' , [true,false] configurando como achar melhor; - E agora '[sTAGES]', para 'premmy' (Premium Account) e 'free' (Free Account); - Instala o System e cria a Tabela de Resets com o comando "/installreset"; OBS: Sistema testado em 'Mysql' não tenho certeza si funciona em 'sql'; e Testando em: 8.50 (TFS 0.3.6) e 8.6 (TFS 0.4.0) __________________________________________________________________________________________________________________________________ Vá em data/Talkactions, e crie um arquivo .lua e nomeie para advancedResetSystem.lua e Adicione Isso: --[[ <(Advanced Reset System 2.0)> Autor: MarcelloMkez. Contato: (marcello_dirt@hotmail.com) Versão: 2.0 Testado em: 8.50 e 8.60 TFS: 0.3.6 and 0.4.0 Fórum: http://www.xtibia.com/forum/topic/142463-advanced-reset-system-20/ -=[Características]=- ~( Versão 2.0 )~ - Resets agora Armazenados na DataBase; (Sem Valor de Storage) - Instala o System e cria a Tabela de Resets com o comando "/installreset"; - Resets no Look do jogador ex: 22:10 You see Marcello [Reset 2] (Level 8). He is an elder druid.; - [sTAGES] para "Premium Account" e "Free Account"; ]] --=[Functions]=-- -- installReset()' [instala o Sistema.] -- tableResetInstall()' [Verifica Se o Sistema ja foi instaladao.] -- nowReseting()' [Verifica, retorna o erro ou reseta.] -- getPlayerReset(cid)' [Pega numero de resets do player.] -- checLevelStageReset(cid)' [Verifica o Level para Resetar.] -- newReset(cid)' [Verifica todas as Condições de Reset.] -- addValue(value)' [Adiciona numero de resets.] --=[Comandos de Jogadores]=-- -- "/installreset" -- Só será usado uma vez, para instalar o sistema. -- "!resetar" -- Para Resetar. function onSay(cid, words, param) if words =="!resetar" then --[ Condições de Reset ] -- local coNdConf = { needPz = true, -- Precisa estar em Pz pra resetar? [true, false] needPa = false, -- Precisa ser Premium Account Pra resetar? [true, false] withe = false, -- Players com Pk Withe podem resetar? [true, false] red = false, -- Players com Pk Red pode resetar? [true, false] battle = false, -- Players precisão estar sem battle pra resetar? [true, false] teleport = true, -- Teleportar Player para o templo após resetar? [true, false] look = false, -- Aparecer Resets no Look do Player? [true, false] pid = getPlayerGUID(cid), -- Não Mexer. --[ Configurações do Reset ] -- resetConf = { Level = 350, -- Level Necessário para Resetar. [Valor] backLvl = 8, -- Level que voltará após o Reset. [Valor] time = 5, -- Tempo para o Player deslogar ao resetar, em segundos. [Valor] }, } --[[>> STAGES <<]]-- x=true;X=true -- Não Mexer. local stage = {Abilitar = {x}, Desabilitar = {}, --<< Abilitar Stages?? >>-- [{x};{}] -- [RESETS] | [PREMMY] | [FREE] stage1= {resets= 4, premmy= 330, free= 350}, stage2= {resets= 9, premmy= 340, free= 355}, -- EXPLICANDO e Configurando stages. (Se estiver Abilitado [Abilitar = {x}]) stage3= {resets= 14, premmy= 355, free= 360}, -- resets = Número de resets para o Stage; stage4= {resets= 19, premmy= 360, free= 365}, -- premmy = Level necessário para Premium Accounts; stage5= {resets= 24, premmy= 370, free= 380}, -- free = Level necessário para Free Accounts; stage6= {resets= 29, premmy= 380, free= 390}, -- Coloque em Ordem... stage7= {resets= 35, premmy= 400, free= 410}, -- [OBS: MARQUE UM "X" PARA ABILITAR OU DESABILITAR OS STAGES] stage8= {resets= 40, premmy= 410, free= 440}, -- EX: para desabilitar mude: Abilitar = {}, Desabilitar = {x} stage9= {resets= 45, premmy= 450, free= 450}, stage10={resets= 50, premmy= 465, free= 465}, } --[[>> FIM STAGES <<]]-- --=[Pega Valor de Resets]=-- function getPlayerReset(cid) local qr = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";") rss = qr:getDataInt("reset", coNdConf.pid) if rss < 0 then rss = 0 end return rss end local success = " ~~ Sucesso! ~~ \nVocê tem agora "..(getPlayerReset(cid)+1).." resets. \nVocê será deslogado em "..coNdConf.resetConf.time.." segundos." ;err = doPlayerSendTextMessage local qrt = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";");rss_db = qrt:getDataInt("reset", coNdConf.pid) local lvl_query = "UPDATE `players` SET `level` = "..(coNdConf.resetConf.backLvl)..", `experience` = 0 WHERE `id`= " .. coNdConf.pid .. ";" local reset_query = "UPDATE `players` SET `reset` = "..(getPlayerReset(cid)+(1)).." WHERE `id`= " .. coNdConf.pid .. ";" local nolook_query = "UPDATE `players` SET `description` = '' WHERE `players`.`id`= " .. coNdConf.pid .. ";" local look_query = "UPDATE `players` SET `description` = ' [Reset "..(getPlayerReset(cid)+(1)).."]' WHERE `players`.`id`= " .. coNdConf.pid .. ";" --=[Reseta]=-- function addValue(value) if coNdConf.look == false then doRemoveCreature(cid) db.executeQuery(lvl_query);db.executeQuery(reset_query);db.executeQuery(nolook_query) else doRemoveCreature(cid) db.executeQuery(lvl_query);db.executeQuery(reset_query);db.executeQuery(look_query) return LUA_NO_ERROR end end function nowReseting() if (getPlayerLevel(cid) < coNdConf.resetConf.Level) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "- Level Necessário Para o Reset ["..coNdConf.resetConf.Level.."]. Faltam "..coNdConf.resetConf.Level-getPlayerLevel(cid).." level's para você Resetar. -") return true end if getPlayerLevel(cid) >= coNdConf.resetConf.Level and (coNdConf.teleport == false) then doPlayerPopupFYI(cid, success) addEvent(addValue, coNdConf.resetConf.time*1000, value) else doPlayerPopupFYI(cid, success) addEvent(doTeleportThing, coNdConf.resetConf.time*900, cid, getTownTemplePosition(getPlayerTown(cid))) addEvent(addValue, coNdConf.resetConf.time*1000, value) return true end end --[sTAGES Nao mexer em nada.]-- function checkLevelStageReset(cid) local stages = { {resets= stage.stage1.resets, premmy= stage.stage1.premmy, free= stage.stage1.free}, {resets= stage.stage2.resets, premmy= stage.stage2.premmy, free= stage.stage2.free}, {resets= stage.stage3.resets, premmy= stage.stage3.premmy, free= stage.stage3.free}, {resets= stage.stage4.resets, premmy= stage.stage4.premmy, free= stage.stage4.free}, {resets= stage.stage5.resets, premmy= stage.stage5.premmy, free= stage.stage5.free}, {resets= stage.stage6.resets, premmy= stage.stage6.premmy, free= stage.stage6.free}, {resets= stage.stage7.resets, premmy= stage.stage7.premmy, free= stage.stage7.free}, {resets= stage.stage8.resets, premmy= stage.stage8.premmy, free= stage.stage8.free}, {resets= stage.stage9.resets, premmy= stage.stage9.premmy, free= stage.stage9.free}, {resets=stage.stage10.resets, premmy=stage.stage10.premmy, free=stage.stage10.free}, } local resets = getPlayerReset(cid) for i, tab in ipairs(stages) do if resets <= tab.resets then coNdConf.resetConf.Level = isPremium(cid) and tab.premmy or tab.free break end end if (getPlayerLevel(cid) < coNdConf.resetConf.Level) then err(cid, MESSAGE_STATUS_CONSOLE_BLUE, "- Level Necessário Para o Reset ["..coNdConf.resetConf.Level.."]. Faltam "..coNdConf.resetConf.Level-getPlayerLevel(cid).." level's para você Resetar. -") return TRUE end if getPlayerLevel(cid) >= coNdConf.resetConf.Level and (coNdConf.teleport == false) then doPlayerPopupFYI(cid, success) addEvent(addValue, coNdConf.resetConf.time*1000, value) else doPlayerPopupFYI(cid, success) addEvent(addValue, coNdConf.resetConf.time*1000, value) addEvent(doTeleportThing, coNdConf.resetConf.time*900, cid, getTownTemplePosition(getPlayerTown(cid))) return true end end function newReset(cid) if(coNdConf.needPz == true) and (getTilePzInfo(getCreaturePosition(cid)) == LUA_ERROR) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa estar em Protection Zone Para Resetar. -") return TRUE end if(coNdConf.needPa == true) and not isPremium(cid) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa ser Premium Account para Resetar. -") return TRUE end if(coNdConf.withe == false) and (getCreatureSkullType(cid) == 3) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você não pode resetar em condições de PK Withe. -") return TRUE end if(coNdConf.red == false) and (getCreatureSkullType(cid) == 4) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você não pode resetar em condições de PK Red. -") return TRUE end if(coNdConf.battle == true) and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa estar sem Battle para Resetar. -") return TRUE end local xy = {true,false} table.insert(stage.Abilitar, false) table.insert(stage.Desabilitar, false) if stage.Abilitar[1] == xy[1] and stage.Desabilitar[1] == xy[2] then checkLevelStageReset(cid) elseif stage.Abilitar[1] == xy[2] and stage.Desabilitar[1] == xy[1] then nowReseting() else doPlayerPopupFYI(cid, "LUA_ERROR; Configure corretamente o Sistema de STAGES!") end return true end function tableResetInstall() print(not rss_db and LUA_ERROR or "Tabela de Resets: Instalada ... [success] ") addEvent(newReset, 1000, cid) return false end if tableResetInstall() then end end --=[install System]=-- function installReset() if db.executeQuery("ALTER TABLE `players` ADD reset INT(11) NOT NULL DEFAULT 0;") then print("[MarcelloMkez] -= Advanced Reset System 2.0 por DataBase =- Instalado com sucesso!") return TRUE end print('[Advanced Reset System/MarcelloMkez] Não foi possível instalar o Sistema.') return FALSE end local tt = { "Preparando Instalação...", "Instalando: TableReset Db...", "Instalando: getPlayerReset()...", "Instalando: addValue()...", "Instalando: checkLevelStageReset()...", "Instalando: newReset() and nowReseting()...", "Finalizando Instalação...", "...", success = { "Iniciando...", "function: TableReset Db... [success]", "function: getPlayerReset()... [success]", "function: addValue(value)... [success]", "function: checkLevelStageReset()... [success]", "function: newReset() and nowReseting()... [success]", "Fim da Instalação. ", "by: ~~ MarcelloMkez ~~ \nContato: marcello_dirt@hotmail.com", inst = {"MarcelloMkez","Advanced Reset System 2.0 por DataBase" }, }, } if words == "/installreset" and getPlayerAccess(cid) >= 3 then function install() if installReset() then print(""..tt.success[7].."") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,""..tt.success[8].."") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "["..tt.success.inst[1].."] -="..tt.success.inst[2].."=- Instalado com sucesso!") else print("["..tt.success.inst[1].."] FALHA NA INSTALAÇÃO! [O sistema ja foi instalado].") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "["..tt.success.inst[1].."] FALHA NA INSTALAÇÃO! [O sistema ja foi instalado].") end return 1 end function concl(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[7].."") print(""..tt[8].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[7].."") doPlayerSendTextMessage(cid, typetx,""..tt[8].."") addEvent(install, 1000,cid) end function finall(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[6].."") print(""..tt[7].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[6].."") doPlayerSendTextMessage(cid, typetx,""..tt[7].."") addEvent(concl, 3000,cid) end function installDd(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[5].."") print(""..tt[6].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[5].."") doPlayerSendTextMessage(cid, typetx,""..tt[6].."") addEvent(finall, 1000,cid) end function installCc(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[4].."") print(""..tt[5].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[4].."") doPlayerSendTextMessage(cid, typetx,""..tt[5].."") addEvent(installDd, 1000,cid) end function installBb(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[3].."") print(""..tt[4].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[3].."") doPlayerSendTextMessage(cid, typetx,""..tt[4].."") addEvent(installCc, 1000,cid) end function installAa(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[2].."") print(""..tt[3].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[2].."") doPlayerSendTextMessage(cid, typetx,""..tt[3].."") addEvent(installBb, 1000,cid) end function toInstall() local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[1].."") print(""..tt[2].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[1].."") doPlayerSendTextMessage(cid, typetx,""..tt[2].."") addEvent(installAa, 1000,cid) end function preparation() local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt[1].."") doPlayerSendTextMessage(cid, typetx,""..tt[1].."") addEvent(toInstall, 3000,cid) end if preparation() then end end return 1 end --=[by: MarcelloMkez]=-- E em Talkactions.xml adicione isso: <talkaction words="!resetar;/installreset" event="script" value="advancedResetSystem.lua"/> Instalando o Sistema - Após adicionar o script em TalkActions e em Talkactions.xml Use o comando "/installreset" em jogo, OBS: o System so pode ser Instalado pelo GOD! A a instalação será mostrada no default, e no Distro! Apos isso, Sistema Instalado! 'Explicando stages: Stage 1: stage1= {resets= 4, premmy= 330, free= 350}, resets: ---- Quantidade de Resets para o stage. premmy: ---- Level que Premmium Accounts podera Resetar. (no caso ate 4 resets) free: ------ Level que Free Accounts podera Resetar. (no caso ate 4 resets) --- Bom como vcs pode ver, vai ate o 'Stage 10': stage10={resets= 50, premmy= 465, free= 465}, --- Intao irei explicar, caso queiram adicionar mais stages... Use 'Ctrl + G' com o script aberto, e digite 71, e aperte enter, logo ira direcionar para linha 71 que no caso é esta: stage10={resets= 50, premmy= 465, free= 465}, - Abaixo dela adicione uma exatamente igual, so modificando o numero do stage ficando assim: stage10={resets= 50, premmy= 465, free= 465}, stage11={resets= 55, premmy= 465, free= 465}, Agora na linha 134 vai ta esta: {resets=stage.stage10.resets, premmy=stage.stage10.premmy, free=stage.stage10.free}, Voce faz a mesma coisa adicionando embaixo da linha 134 porem mudando os numeros, ficando assim: {resets=stage.stage10.resets, premmy=stage.stage10.premmy, free=stage.stage10.free}, {resets=stage.stage11.resets, premmy=stage.stage11.premmy, free=stage.stage11.free}, Pronto, Ja esta adicionado o 'Stage 11' xD, Assim voce pode adicionar quantos stages quiser, basta configurar corretamente... Mais duvidas postem aqui. Aqui termino o post! espero que gostem, grato: ~~MarcelloMkez~~
    1 ponto
  6. luisfe23

    [8.6] Emerald Map

    Eae XTibianos... Estou trazendo para vcs o Emerald Map. • Créditos: Randall • Minimap: A qualidade ficou ruim porque salvei como JPG. • Download: http://www.4shared.com/file/AsHm4Soj/Emerald_Map.html • Download Link Protegido: http://lix.in/-85c7fb • Scan: http://www.virustotal.com/pt/analisis/320f026e6b49a99516ffccab44f3a985c7b49f5233a768a5a6139c499e8409a4-1279041485 Abraços.
    1 ponto
  7. Criando um Servidor, primeiro de tudo baixe um servidor: Aqui você encontra vários. Após baixa-lo, iremos configurar conforme seu gosto: Configurando o Config.lua, scripts, spells, monsters e mapa, esses são os principais. Após ter ajeitado o server -> Você irá salvar tudo no local certo ( mapa -> pasta World | Monsters -> pasta Monster | Spells -> pasta Spells | e assim vai ). Seguindo os procedimentos anteriores, você vai colocar seu server On-Line. Primeiro, desbloqueie sua porta 7171. Comece com: Iniciar -> Configurações -> Painel de Controle -> Firewall do Windows, Exceções -> Adicionar Porta: Em Nome você poe Open Tibia Server, em Número da porta você põe 7171, deixe marcado TCP (se não tiver, marque) e click OK. Pronto porta 7171 desbloqueada. *Obs: Não encontrou o Firewall do Windows no Painel de Controle? Tente assim: Vá em Iniciar -> Configurações > Painel de Controle -> Opções da Internet -> Conexões -> Configurações ( que se encontra em baixo do botão Remover ). Propriedades: e na janela que se abrirá click em Avançado. No inferior do lado direito, tem um botão chamado de Configurações. Click. Vá em Adicionar Porta ( em alguns computadores tem somente Adicionar ). Em Número da Porta você põe 7171, deixe marcado TCP ( se nao tiver, marque ) e click OK. Pronto, porta 7171 desbloqueada. Configurando IP: Acesse o site: www.meuip.com.br Abra o config.lua (no bloco de notas) e adicione o IP encontrado substituindo em: Ou Algo Parecido. Configurando IP Fixo: Acesse o site: www.no-ip.com Faça login, se não possuir, faça uma clicando em Sing-UP, será obrigado que você responda todas as questões sublinhadas em amarelo. Aceite o termo de Sing-Up Now, e logo após aceite o email que irá chegar. Vá no site e faça login: Email. Senha. E faça Login. Após ter entrado, encontrará algo escrito: Hosts/Redirects que estára aberto. Você irá clicar em Add (Será o primeiro da lista). Aonde estiver: Hostname, coloque apenas o nome. Ex: XTibia OBS: Não coloque (.) Ponto ou servergame.com Agora, embaixo, você escolhe-rá; Ex: servegame.com, servercounterstrike.com, no-ip.info ou o proprio no-ip.com. Após ter feito isso, não altere mais nada, somente click em Creat Host. Ficando Assim: The host loroteiroserv.no-ip.info resolving to "IP-Global" has successfuly been added to our system. New additions will take up to 5 minutes to become live on our DNS servers. Parte 2 Ip fixo: Não está conseguindo colocar seu servidor no IP-Fixo? Você deverá ir no site www.no-ip.com onde você criou seu ip fixo. Depois de ter logado em sua conta la Nome menu escrito "Hosts/Redirects" vá na opção "Manage". La estará o ip fixo do seu server apenas clique em "Modify". Onde está "ip adress" estará outro ip. Copie-o e de "Modify Host". Abra seu config.lua e substitua o ip que você avia pego pelo que você pegou agora ha um tempinho atrás. Depois disso salve e feche a pasta de arquivo.lua. Espere 5 minutos para usar o IP novamente aconselhável esperar 10 minutos por precaução. Apenas toda vez que você reiniciar o computador repita o processo. Divirta-se. Colocando OT-Server On-Line, com Internet Compartilhada: Baixe e Instale: http://www.hamachi.cc/download Execute o Programa: No canto inferior esquerdo tem um botãozinho chamado Power On, aperte e então eli ira pedir para voce se cadastrar com um nome de usuário e senha, coloque o que você quiser como por exemplo: EX: nome: exemplo senha: 1234 Colocando o Server Online Vá no Botãozinho chamado "Create or Join Networks" -> "Create New Network" Crie o nome do seu server e a senha que voce desejar-- Depois clique em OK e pronto você verá que aparecerá um linha na tela inicial com o nome do seu server e o IP (no caso o ip também pode ser encontrado na barra do programa la em cima bem grande) Estamos Quase Lá. Agora só falta entra no config.lua no seu otserv e mudar o ip para o ip do Hamachi e abrir o servidor. FAQ: Dúvidas freqüentes: Somente eu entro no OT-Server, porque? RE: Para que outras pessoas entrem no seu server elas também prescisam do programa Hamachi, passe para seus amigos o programa e peça para eles se cadastrarem e clicar em "Create or Join Netowks" e depois em "Join Netwok", ai pessa para ele colokar o nome do server (o que voce colocou quando criou) e a senha (que voce tambem colocou quando criou) e ai ele e voce verá que ele entrou na sua lista do server (no programa) ai sim ele poderá entrar no seu otserv. http://www.xtibia.com/forum/index.php?showtopic=28114 Aqui você encontra um Tutorial sobre Modem. Rodando um Site: Downloads: EasyPHP Scripts em PHP -EasyPHP- *Instale-o em qualquer lugar, a sua escolha. *Na pasta EasyPHP 1-7, vai ter uma pasta chamada Apache. *Entre nela, depois vá na pasta conf e abra com Bloco de Notas/WordPad o arquivo httpd.conf . *Dê Ctrl + F e procure por Port 80. *Em Port 80, adicione 90 no final, ficando assim: Port 8090 -Configurando o PHP- *Baixe os Scripts. *Descompacte o .rar na pasta do EasyPHP, se ele perguntar se pode substituir, escolha Sim para Todos. *Agora, abra o config.php com algum editor de texto. *Terá o seguinte: OBS: Para mudar os equips iniciais, configure no Criarplayer.php, na pasta accounts, lá no finalzinho. -Protegendo seu OTServer- *Para proteger seu server, abra o Bloco de Notas e nele escreva: QUOTEDeny For All *Salve-o na pasta do seu ot como .htaccess . *Crie uma cópia do .htaccess e coloque esta cópia na pasta Ips, que fica na pasta account do PHP. *OBS: COLOQUE APENAS NA PASTA DO SEU OT E NA PASTA IPS, SENÃO O PHP VAI BUGAR E NÃO VAI DAR PRA CRIAR CHAR!!! Lista de Espera?, Isso acontece porque o Spawn do Player (a posição que ele está), está em cima de uma coisa (paredes, portas..). Solução: Mudar o Spawn do Player! Abra (No bloco de Notas) o Nome do Player.xml, precione Ctrl+f, procure por: spawn, modifique. EXEMPLO: <spawn x="504" y="504" z="6"/><temple x="504" y="504" z="6"/> Hakers? Seus problemas acabaram .. Primeiramente : *Como eles invadem meu pc ? -Eles entram pelo site de accounts. (Sem detalhes se não vão descobrir como hackeia) *Tah bom .. mas como impedir que eles entram ? -Você coloca o nome da pasta que esta seu ot bem dificil por exemplo : LKMs RoX oT *Mas porque tem que por um nome assim ? -Porque os hackers invadem o server pelo nome da pasta. Galera o tuto acaba por aki espero ter ajudado .. demorei pra fazer esse tutorial pq soh hj q vi uns kras entrando em um server. Não existe essa maneira mas existem VÁRIAS maneiras de se hackear um server, vamos dizer maneira noob e maneira inteligente de se hackear um server. Edit : (Mais informaçoes para o topico) > By Iguinho A maneira noob de se hackear é entrando pelo site de account como ele disse mas SEM DETALHES. A maneira inteligente de se hackear é com um keylogger, por exemplo, você baixa um otserver contaminado de keylogger mas não sabe que tem keylogger, ai vamos dizer que voce abra seu server e entre com sua account de gm o keylogger, ele rouba a sua senha e manda para o hacker, logo depois o hacker tem acesso a sua conta de gm como tambem a sua conta de e-mail e etc... MAS ISSO TEM UMA SOLUÇÃO! Na hora que você for criar o seu otserver você simplesmente não ponha a pasta do otserver na pasta www, ponha em algum outro diretorio na pasta C:\ e etc... mas isso não quer dizer que você esta 100% seguro de nao ser hackeado, existem 1001 maneiras de se hackear que eu nao vou postar aqui. Sobre o keylogger eu sugiro baixar um antivirus bom de empresa boa como o norton ou outros ai, que ele cata o keylogger mas é sempre necessário que ele fique atualizado que se não ele não cata nada. Criando char Gm: ---EM DATA/PLAYERS--- -Vá em data/players. (vamos supor que existe um char chamado Ajuda) -Copie o char "Ajuda" e cole-o na mesma pasta. -Renomeie este char para o nome do GM desejado (vamos supor que o nome do seu GM seja, GM Ok) -Agora com o botão direito clicke em editar... edite para isso: *Em name="Ajuda" mude para name="GM Ok" *Em account="159" para account="acc 1111"(vamos supor que seja "1111, se voce quiser 1414 tem que ficar assim; account="1414") *Em access="0" mude para access="3" *Em <look type="128"> mude para <look type="75"> Salve ! ---EM DATA/ACCOUNTS--- -Copie a account que estiver nesta pasta. -Renomiei para account colocada no seu GM (que era a 1111). -Agora com o botão direito clicke em editar. *Em <account pass="lala" mude para senha desejada ex: <account pass="senhaaqui" *Em characters: Exemplo; <characters><character name="Ajuda" /></characters>Mude para o nome do GM colocado em data/players:<characters><character name="GM Ok" /></characters> OT-Server 24H Mesmo que voce tenha um reestarter sempre da akele errozinho que trava seu OTServ, para tirar akele errinho que enche o sako aki vai a resposta: Entre no painel de controles/sistema/avançados/relatorio de erros/escolher programa/adicionar/procurar Agora ache seu OTServ.exe e ponha lá e de OK Pronto Nao inviara + ralatorio de erros Mas ainda tera a possibilidade de aparecer erros criticos ai seja mais radical Mande desativar o relatorio de erros e dismarque o "notificar-me quando ocorrerem erros criticos" na pagina do ralatorio de erros ~Agora crie seu Auto-restarter~ Vamos começar: Vou dar um exemplo aki do meu Auto-restarter.bat: CODE@echo offtitle OTserv Auto-restarterecho =========================================echo --- OTserv Restarter ---echo --- Por: Fvox ---echo =========================================echo :beginOTserv.exeecho ::echo =========================================echo --- O Sever caiu, volta ja ja ---echo =========================================echo ::goto begin:goto begin Agora faça o seu: Abra um bloco de notas Escreva nele (Naum esqueça de tirar o "CODE" se vc for Copiar e colar): CODE@echo offtitle OTserv Auto-restarterecho =========================================echo --- OTserv Auto-Restarter ---echo --- Por: Seu nick aki ---echo =========================================echo :beginNome do Executavel.exeecho ::echo =========================================echo --- Mensagem de quando o server cai---echo =========================================echo ::goto begin:goto begin Agora eh soh renomeia as coisas q eu colokei la tpw: Por: Seu nick aki Nome do executavel.exe (Exemplo: OTserv.exe) Mensagem de quando o server cai (Exemplo: o Server caiu.. volta ja) Depois de ter feito salve o seu bloco de notas o arquivo.bat (Exemplo: Auto-Restarter.bat)
    1 ponto
  8. Natanael Beckman

    [C++] Compilando Um Otserv

    Boa galera andei olhando e vi alguns tópicos até meio parecidos com o que estou fazendo agora, mais, eu não acho eles completos por tanto aqui vamos nois. 1° Vamos fazer todos os downloads necessários. Vamos usar um source TFS pra versão de Tibia 8.60 - Source - Stians Dev-Cpp <> 32bits - Stians Dev-Cpp <> 64bits 2° Abra o Dev-cpp: 3° Clique em Tools > Check For Updates/Packages: 4° Clique em Check For Updates and Upstairs select devpacks.org: 5° Seleciona OpenSSL 0.9.8a e clique em Dowload: 6° Em seguida irá aparecer automaticamente um processo de instalação: Agora seu Dev-cpp está no ponto pra compilar. 7° Use ctrl + o pra abri o .dev: 8° Ele vai estar dentro da pasta da sua source: 9° Então depois que abrir todos os arquivos: 10° Use alt + p logo após aparecerá uma janela ae clique em parameters e adicione, {-D__CONSOLE__} e depois OK: 11° Agora é so compilar ctrl + f9: 12º O seu executavél vai está na pasta da sua source: Pronto galera compilação concluida. Creditos: nwtr Nando Web Natan Beckman
    1 ponto
  9. Não sei se essa é area correta se não for desculpe e porfavor moderadores se não for a area correta mova o topico para a area correta. Talvez tenha varios Tutorial de como criar seu cliente Proprio etc... esse é mais um expecificamente para a versão 8.54 não sei se funciona em outras versoes de tibia... (procurei tutoriais sobre isso atualizados .. mais não achei se tiver são poucos então vou postar 1) TUTORIAL Baixe o Tibia Customizer E siga os procedimentos abaixo Onde esta escrito en relação a imagem faça oque se pede: I: Procure o seu client .exe geralmente Tibia.exe II: Version deixe 8.10 (não se preocupe funciona!) III: Escreva O nome do Client , ex Grensky. IV: Digite o ip do servidor (no-ip) não digite o ip do meuip pois ele quando reinicia o modem ou a internet, ele muda então sugiro criar um ip no noip com 19 caracteres contando com os pontos ex: green.servegame.com = 19 caracteres OBS: TEM DE SER de 19 caracteres ou menos ex ots.servegame.com se for mais que 19 não funciona. V: caso não tenha website o servidor digite no lugar http:\\ , se tiver digite o link do website VI: caso não tenha pagina de account mananger o servidor digite no lugar http:\\ , se tiver digite o link da página. VIII: caso não tenha a pagia de account digite http:\\ , se tiver digite o link da pagina. XI: Não clique em use your pic (deixe desmarcado e não clique no lugar que esta escrito XI) Quando estiver pronto clique em build client aguarde e quando escrever done pode fechar e seguir para a proxima parte do tutorial. OBS: O IP DO SERVIDOR DEVE TER até 19 caracteres contando com os pontos e não clique em load tibia.pic se não buga! Segunda Parte Baixe o Pic Editor 8.54 extraia o para uma pasta qualquer (não extraia por exepmlo para o desktop solto extraia dentro de uma pasta ex: Desktop/Piceditor8.54) Va em images de onde você extraiu o piceditor a imagem 0.png referece a imagem que aparece quando você entra no tibia ex: a imagem 3.png referece a imagem dos "botoes do tibia" a interface etc.. ex: (esta skin se chama black skin para quem quer) (PicEditor 8.54 (foto acima)) edite as imagem a seu gosto mais deixe na mesma resolução e (talvez com o tamanho 1 pouco modificado funcione!) tamanho, programas bons para editar é o photoshop e firework , so sei usar photoshop firework não =x... agora copie essa pasta imagens depois de editar as imagens para a pasta do seu client, quando fizer isso abra o pic editor, clique em Achar e procure o tibia.pic do seu cliente e clique em Compila. Obrigado , creditor para mim e para os criadores dos softwares. Download da fonte do tibia (muito parecida, a fonte martel) Um Exemplo de pic que eu fiz: Download da skin acima Terceira Parte Caso você queira modificar uma pic que você baixou da internet por exemplo, abra o piceditor , clique em abre procure o tibia.pic que você quer modificar (recomendo que ele esteja junto com o resto dos arquivos do tibia) clique em extrair, vai aparecer as imagens onde o tibia.pic que você quer modificar está... , feche o pic editor, edite-as como quiser, sem mecher na resolução e por fim depois de salvar as imagens que você editou. Abra o pic editor e clique em compilar pronto a sua tibia.pic nova foi criada , teste para ver. caso não conseguir poste aqui! Qualquer duvida poste aqui Credito para mim e para os criadores dos programas
    1 ponto
  10. 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
  11. script é simples,jogadores vip poderão ser teleportado para os lugar por talkactions basta usar o comando teleportvip.lua --[[script By Vodkart]]-- function onSay(cid, words, param) local config = { pz = true, -- players precisam estar em protection zone para usar? (true or false) battle = true, -- players deve estar sem battle (true or false) custo = true, -- se os teleport irão custa (true or false) need_level = true, -- se os teleport irão precisar de level (true or false) premium = true -- se precisa ser premium account (true or false) } --[[ Config lugares]]-- local lugar = { ["depot"] = { -- nome do lugar pos = {x=129, y=54, z=6},level = 5,price = 1000}, ["templo"] = { -- nome do lugar pos = {x=160, y=54, z=7},level = 10, price = 2000}, ["arena"] = { -- nome do lugar pos = {x=125, y=351, z=9},level = 15,price = 3000}, ["area vip"] ={ -- nome do lugar pos = {x=280, y=87, z=4},level = 20,price = 4000} } --[[ Lista de Viagem (Não mexa) ]]-- if (param == "lista") then local str = "" str = str .. "lista de viagem :\n\n" for name, pos in pairs(lugar) do str = str..name.."\n" end str = str .. "" doShowTextDialog(cid, 6579, str) return TRUE end local a = lugar[param] if not(a) then doPlayerSendTextMessage(cid, 22, "desculpe,este lugar não existe") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return TRUE elseif config.pz == true and getTilePzInfo(getCreaturePosition(cid)) == FALSE then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"você precisa estar em protection zone pra poder teleportar.") return TRUE elseif config.premium == true and not isPremium(cid) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Apenas players com premium account podem teleportar.") return TRUE elseif config.battle == true and getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você precisa estar sem battler pra poder teleportar.") return TRUE elseif config.need_level == true and getPlayerLevel(cid) < a.level then doPlayerSendTextMessage(cid, 22, "Desculpe,Voce não tem level. voce precisa "..a.level.." level ou mais para ser teleportado.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return TRUE elseif config.custo == true and doPlayerRemoveMoney(cid, a.price) == FALSE then doPlayerSendTextMessage(cid, 22, "Desculpe,voce nao tem dinheiro suficiente. Voce precisa "..a.price.." gp para ser teleportado.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return TRUE end doTeleportThing(cid, a.pos) doSendMagicEffect(a.pos, CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, 22, "" .. getPlayerName(cid) .. " foi teleportado para: \n " .. param .. ".") return TRUE end em talkactions.xml adicione <talkaction words="!tp" script="teleportvip.lua"/>
    1 ponto
  12. MaxxJuba

    Azeroth Com Teleports.

    Bom Galera, eu vim aqui trazer o mapa Azeroth com teleports, com a permissão do Vmspk.. O ot é o mesmo, só q com pequenas coisas concertadas e com uns bugs retirados... Como todos já conhecem o server original, eu não tenho q falar muita coisa, apenas postar o ot, o scan, as ss e os créditos é claro! Imagens: Teleports p/ Hunts e Quests. Teleports p/ Citys. Hell Island Hunt.. Floresta de Giant Spiders e Cave de Hellhound. Quest da Soft adicionada. Npc de montaria com as falas corrigidas, funcionando todas! Bom galera, isso aí é só uma versão para quem gosta de coisa facil, não tem nem comparação com o original, esse server é mais pra brincar entre amigos mesmo.. Por Enquanto é isso, logo mais estarei postondo coisas novas.. Até! Dowload (obs: O server já vem com o distro q está no server original e com os utilitarios dentro da pasta) Scan Acc god 2/1234 Créditos:Riot Team, Mix Yourots Team, TFS Team, Vmspk e Agora tem um pouco do meu (eu acho, rs) Obs: eu ainda nao sei o que está acontecendo com os life crystal, por isso tirei ele do loot dos dragons, mas não tirei dos outros monstros por falta de tempo, se alguem souber como fazer ele parar de dar debug no servidor por favor me informe.
    1 ponto
  13. O mapa é baiak edited por min só que so estarei postando o mapa o ot vcs teram q baixa em oto lugar vamos ao q enteressa O mapa tem vip 2 criada por min , cidade principal editada , vip 2 editada , arena q morre n perde nd , area de evento com campo de futeboll, tudo edited por min garanto q vao gosta xD Alem de bugs arrumado com os da hydra , desert cyty e houses OBS: COMO N SEI CRIAR CASA DIREITO TENTEI CRIA UMA E COLOKA A ENTRA VIP 2 LA SE N TIVER INDO É SO PEGAR O TELEPORT E POR EM OUTRA CASA PELO O SEU REMERE MAPA EDITOR Creditos : Eu, criador do baiak/outros Bom proveito comentem ai se gostaram aki embaixo o download só do mapa se funfar a vip 2 dentro do templo me avisem PUTS GENTE AGORA Q COLOKEI O MAPA A FOTO PERCEBI MAIS AGORA JA ERA NO TEMPLO TA FALTANDO UM PILLAR N ESKECE DE COLOKAR Xd Mapa Baiak Pds.rar
    1 ponto
  14. [Talkaction]Sistema M1 até M6 + Tutorial de Edições. Créditos: Apocarai PeeWee Olá, antes eu já havia postado o sistema até m3, agora venho traze-lo até m6. Do m4 até m6 decidir fazer diferente, dessa vez quem irá colocar as magias , combat e level necessário será vocês. Estou fazendo isso para que vocês entendam melhor o comando, e caso precisarem editar que não precisem e ajuda. No final do Tópico estará os tutoriais. M1 M2 M3 ----//----//----//----//----//----//----//----//----//----//----//----//----//---- M4 M5 M6 Tags Obs. QUANDO SALVAR OS COMANDOS COLOQUE O NOME DE SistemaM... [Nos pontos bote numero da magia. Tutorial Como Adicionar Magia , Combat e Level. Como adicionar novos M. Na parte após os pokemon adicionados com suas magias procure essas partes das linhas. Tempo das Magias Logo abaixo após as linhas que citei acima , se tem o tempo usado das magias. Bom é isso, caso falei alguma besteira me falem que irei arrumar, qualquer duvida me adicione no msn ou poste no tópico. Não esqueça do REP +
    1 ponto
  15. PedroXtibiaaaa

    Como Criar Um Instalador

    Primeiro de tudo baixe o Install Creator [download]http://www.theclickteam.com/webftp/files/5/5/icpinst.exe[/download] Depois de instalado abra-o, vai aparecer isto: se não aparecer tentem clicar em new. Clique em avançar, escolham a pasta que está o cliente de vocês e clique em avançar. Escolham a linguagem que vai ser o instalador e embaixo o nome do produto. Sempre cliquem em "preview" para ver como vai ficar antes, clique em avançar. Em default vai ser a opção de instalação, Windows, Linux... e embaixo vai ser caso você queira que precise de um serial key pra que possa abrir o arquivo, aconselho a não botar, clique em avançar. Aqui você vai escolher como vai ser o instalador, se ele vai ser full screen ou small screen, com a opção full screen você pode escolher o nome que vai aparecer la em cima, um background ou as cores que vão aparecer no fundo. Para quem escolheu Full Screen: ali em browse você vai escolher a imagem que você quiser como fundo e embaixo são as opções: Stretch (Esticar) - Pattern (Padrão) e do outro lado é o alinhamento: Left (Esquerda) - Center (Centro) - Right (Direita) - Top (Topo) - Center (Centro) - Bottom (Fundo) Para quem escolheu Small Screen: No primeiro onde está escrito Default você pode escolher o que achar melhor, para visualizar basta clicar Preview. Embaixo em Left Bitmap você pode escolher a imagem que você vai querer que apareça na Esquerda do instalador, a imagem tem que ser no tamanho de 140x316. No outro em Top Bitmap é a imagem que vai ficar em cima, tem que ser no tamanho de 57x57. Depois disso clique em avançar. Nessa parte você pode escrever as informações que quiser, sobre como criar conta, como jogar... Clique em avançar. Nessa parte você vai poder colocar algum termo ou condição para aceitar. Clique em avançar. Aqui você pode escolhar em qual lugar a pasta do seu servidor vai ser salva, aconselho a deixar do jeito que esta. Clique em avançar. Aqui você vai poder escolher se quer ou não que o instalador crie um icone do seu cliente no desktop. Primeiro em Browse ache o seu client, e embaixo escolha o nome que você quer que apareça. Clique em avançar. Aqui não mexa no primeiro, e no segundo você pode escolher se quer que o programa execute o seu cliente quando a instalação terminar, para isso clique em browse e escolha o seu cliente. Clique em avançar. Deixe marcado Uninstall Program para que os outros não tenhma problemas para desinstalar o seu cliente. Clique em avançar 2 vezes, desmarque a opção "Do not build the install Program" Vai abrir uma janela para "Salvar como" coloque Install e feche, se ele pedir pra salvar mais alguma coisa coloque com o nome de Install Config.
    1 ponto
  16. GODPraquenome

    [Tutorial] Como Criar Uma City

    FORAM VOCÊS QUE DEIXARAM MINHA REPUTAÇÃO ASSIM, OBRIGADO A TODOS! :heart: EDIT ------------------ AGORA COM FOTOS! Olá galera, hoje vou ensinar como criar um City (cidade), com o Remere's Map Editor, primeiro siga essas 2 dicas: 1- Descubra os bugs, para nao comete-los na sua city 2- Não tenha preguisa de começar do zero (0) 1° - Faça a base de sua cidade, ou seja, coloque água no mapa. 2° - Coloque a grama por cima da água e faça as bordas (tente nao deixar muito quadrada). 3° - Depois de colocar as bordas da grama, escolha o piso principal que você vai usar na sua city 5° - Agora faça as casas/predios da city, faça castelos, casas, lojas (nunca se esqueca de colocar pelo menos 2 a 4 janelas na casa) é opticional, mas assim as casas ficam mais bonitas. 6° - Agora coloque as arvores, flores, ou seja as plantas, são encontradas em nature. 7° - Para decorar mais um pouco faça alguns rios, lagos (não se esqueca das bordas). LEMBRE-SE, FAÇA OS LAGOS PEQUENOS, APENAS PARA DECORAÇÃO. 8° - Vamos fazer as caves agora, o primero e o mais importante, coloque sempre uma escada ou uma montanha para passar da city para as areas de Hunt. 9° - Agora coloque os bixos, de acordo com a natureza, ou seja com o lugar que ele vai ficar, exemplo se é na neve, coloque Frost Dragon. Obs: se você for fazer Quests, faça com vontade não faça uma quest que tem 15 sqm² (15 pisos) 10° - Não faça hunt apenas em caves e sub-solos é bom também colocar montanhas, elas ficam feias no mapa editor mais ficam legais no mapa. 11° - Não se esqueca de fazer hunts para levels baixos (rotworms, troll, etc). 12° - Agora vamos para os NPC's, não repita o npc na mesma cidade, coloque um de cada espalhados pela city inteira. 13° - Sempre coloque seu NPC em protect zone (NÃO SE ESQUEÇA DISSO). Lembre-se: Uma cidade bonita é uma cidade que não tem muitos enfeites e nem é muito ''tosca''. Lembre-se2: Novos itens para seu OTServer, são muitos ''rox''. Então galera é só isso, até +. Alguma Duvida? Pode comentar! Att, GODPraquenome GODPraquenome, sempre melhorando e revolucionando.
    1 ponto
  17. Henrique Moura

    Modos De Escrita - Roleplay

    Modos de Escrita Narração A narração é parte fundamental de um bom conto. Sem ela em perfeito estado, é impossível que se tenha um bom conto. O que tentarei abordar a seguir são alguns dos modos utilizados para narração dos contos aqui apresentados, além do qual mais indicado para os iniciantes. Os respectivos títulos são como eu os chamo os diversos tipos de narração. Narração participativa O narrador participa indiretamente do contexto, além de poder interagir com o leitor, sem que exerça o papel de um personagem no conto. Exemplo: Ele se virou para contar uma história antiga, que hoje é desconhecida por nós. Essa história se passa no tempo em que nós não éramos nascidos, ou até mesmo nossos avós. Essa história se passa num tempo muito antigo, onde não havia armas de fogo, fósforos ou tecnologia. Narração em primeira pessoa A narração é feita pelo personagem principal do conto. Exemplo: Eu fui ferido gravemente pelos guerreiros inimigos, mas mesmo assim não desisti da batalha. Narração oculta O narrador é oculto, semelhante a narração participativa, porém não faz comentários de sua participação na narração. Exemplo: Os jovens caminharam por muito tempo, até que o crepúsculo veio humildemente se apresentar. Eles montaram um acampamento e adormeceram ao estalar das brasas. A minha preferência nas narrações é a narração oculta, por se adaptar melhor a todo tipo de contexto e ser mais agradável ao leitor, além de mais fácil ao entendimento se bem manobrada. É a também mais recomendada por mim aos que iniciam agora em suas escritas. O que eu aconselho é escrever mini-contos utilizando todos os tipos de narração para ver qual você se adapta mais e tem maior facilidade para escrever. Foi breve. Até o próximo tópico.
    1 ponto
  18. Fernandinand

    Roleplay -

    Bem, o Roleplay é basicamente formado por contos, histórias com modo de escrita antigas. Era medieval, idade da mitologia, ou seja, épocas a quais eram formado por vilas e reinos. Ataques de arco e flecha e espadas, escudos e lanças a quais os homens que a carregavam, arriscavam suas vidas para proteger seu lar, seu reino, seu rei. O Roleplay nos dias de hoje não está recebendo a atenção que merece. Temos muitos escritores a qual se empenham para fazer uma história melhor a cada dia, só que não comentam nem elogiam suas histórias, e pela colaboração por ter ajudado ao fórum a fazer um tutorial de Roleplay, entre contos e histórias. ~ Diferenças Bem, cada escritor tem um modo para escrever suas histórias, mas aqui, estamos falando de Roleplay. Seria certo, ou melhor, se falássemos do modo antigo, do modo que ninguém mais usa hoje em dia. A tal chamada Língua Extinta. Bem, pudemos perceber a diferença entre os dois modos, não? Vemos agora que o Roleplay é basicamente, contos a quais teríamos de falar "nobremente". Claro, cada um tem um modo de se escrever. Mas como diz o nome, é Roleplay. Seria mais adequado de se escrever historicamente, dramaticamente. ~ Romântico Temos no Roleplay também, o modo romântico. Afinal, convenhamos. Não podemos ser machista a ponto de ignorar uma bela e dramática história de romance. Algumas pessoas gostam, outras não. Eu por exemplo, adoro um romance proibido. Da um toque de suspense com interatividade, além de as vezes ter um final triste, como a mais famosa peça de teatro, Romeo e Julieta. Vemos nessa peça, ou filme, que são dois jovens apaixonados que vem de famílias distintas, e que na época, um escritor de teatro era considerado um vagabundo. Na peça, vemos que eles falam de modo romântico e antigo, época medieval. Luta de espadas, e também, o tal chamado jogo do salve a donzela. Aquele jogo, acho que todos conhecem. Um "príncipe encantado" luta com todos para puder salvar sua bela "princesa encantada". Percebemos a diferença agora? Entre modo Antigo, e Atual? Enfim, agora eu posso lhes dizer mais uma vez. O Roleplay, é basicamente feito por contos e histórias, que são da maioria das vezes, linguagens históricas, linguagens antigas. Modo de escrita medieval, ou seja, como diz vocês, com muita churumela. Muita enrolação. Bem, essa foi a minha teoria sobre o Roleplay. Comentem, falem sua opinião sobre o que foi dito aqui, critique e fale sugestões para melhorarmos cada vez mais o nosso contexto do Roleplay.
    1 ponto
  19. KamuiRunt

    Dateditor

    Veja se isso responde: http://www.xtibia.com/forum/topic/137376-criar-um-item-com-id-propria-usando-o-item-editor/
    1 ponto
  20. Vodkart

    [Talkaction] Game

    criativo demon achei cool *-* tem meu rep haha manda ve mlk
    1 ponto
  21. betinhowz666

    Mapa/temple!

    Olha no mapa editor quando você aperta ctrl + t você coloca a posição do templo. Ele vai te dar o town id. (ex : 1) ae no confg.lua vai ter o x, y, z e o town id, só modificar. Você apertando CTRL+T vai aparecer as cidades que ja tem com seu nomes, o town id aparece do lado do nome > ok ! Duvidas. add msn!
    1 ponto
  22. meromeromei

    Araot House

    pqe essas caras ? (kkk) nao sei se perceberam mas o nome daa sessão é "Screenshots de OTserv" Preciso falar mais nda né ?
    1 ponto
  23. Arg, bom saber que copiam até a cor da minha cueca Q__Q Cara, muito obrigado, mas o OT não é meu, eu estou resolvendo aqui com ele, como eu vejo se tem algum player bugado? Abraço, obrigado, ja dei um +REP O rep + deveria ser dirigido a mim rs. O que você colocou foi: Tanbem pode ser algum char bugado tipo tem muitas pessoas que bugam ai vai atacar algum bicho o serv buga eh cai meu ot tanbem tava tendo esse problema..Erram dois players bugado ^^ OBS:Peguei essa resposta do KamuiRunt eh dei uma pequena implementada O que não tem nexo, sem contar os erros ortográficos. Seu post, foi sem sentido, e foi reportado. Obs: Obg pelo toque CMGabriel, t+
    1 ponto
  24. meubk

    [Arquivado]Profissôes

    Profissão: Scripter Site: Manual de referência Lua
    1 ponto
  25. betinhowz666

    [8.54] Mapa Pokemon Betinhowz666

    Quero ter meu trabalho reconhecido Acho que com o rep + consigo ter isso.
    1 ponto
  26. Aee man E o Dat Edtor Tem q ter as imagems recortadas 32 X 32 Se n naum funfa Tutorial:
    1 ponto
  27. 389347

    Website Pokemon 8.54

    Galera Entrem no meu ot de pokemon ainda nao estamos 24 horas ip é pokemonblue.servegame.com quem quise ve o blog e pokemonblueserve.blogspot.com
    1 ponto
  28. vlw deu certinho Pode Fexa o Topico
    1 ponto
  29. Marcell

    Quick-List (8.6 Até 8.62)

    Obrigado TheSleeper, estarei atualizando o tópico a cada servidor/utilitario novo que sair... até mais, um rep+ é sempre bem-vindo ^^
    1 ponto
  30. Como Fazer Cidades de Deserto Olá! Hoje vou ensinar à vocês como fazer uma cidade de deserto com o Remere's Map Editor, porém não do estilo comum, com pirâmides, não, uma cidade de paredes, acho que muita gente não sabe fazer ou nunca tentou, então eu espero que meu tutorial ajude. Este é meu 1º tutorial, nunca fiz nenhum tutorial nem nada parecido com o mesmo na minha vida. Aí vai: 1º Passo: O Oceano Para colocar o oceano no seu mapa, você precisará abrir a Terrain Pallete -> Nature. Há 2 tipos de oceanos: Sea e Walkable Sea. Sea é o oceano que mais é usado, o que não e possível andar sobre ele. Já o Walkable Sea é diferente: é usado, por exemplo, em áreas de natação e em praias. É possível nadar/pisar neste tipo de oceano. Neste tutorial iremos usar o primeiro tipo: Sea. Para ser mais rápido, use o Brush Size 12, e preencha uma área grande com oceano. Após ter preenchido, seu mapa deve estar parecido com isso: 2º Passo: O formato da ilha. Agora, faremos o formato de nossa ilha. Para isso, vá em Terrain Pallete -> Nature. Entre os demais tiles, você irá ver 2 tipos de Sand: Sand ( Thick Border ) e Sand. Deixaremos o Sand para depois. Após selecionar Sand ( Thick Border ), mude de Brush Size: escolha o segundo quadrado ( Brush Size 2 ou Brush Size 3, em algums Remere's ). Então, mãos à obra! Vá fazendo o formato de sua ilha, não a deixe muito grande nem muito pequena. E também tente não deixá-la quadrada, randomize, ponha alguns rios que não cortem toda a ilha e, se quiser, ponha algumas outras pequenas ilhas com o Brush Size 1. O resultado ficará parecido com isto: 3º Passo: Começando a cidade. Finalmente, começaremos nossa cidade. Há vários jeitos de se começar uma cidade, mas eu prefiro começar por suas ruas. Segue a ID que eu costumo usar como ruas nesse tipo de cidade: 836. Eu não aconselho a fazerem ruas retas demais, mas tambem não exagerem nas curvas. O meu ficou assim ( não sou lá muito bom em ruas e acho que exagerei um pouco nas curvas, exagere menos ): 4º Passo: O Templo. Por mim, este é o passo mais difícil de todos, pois não sou bom em templos. Não há muito o que dizer aqui, somente algumas dicas: Para facilitar, alguns IDs usados em templos: Caso ajude, aí vai uma foto de um templo egípcio: Vejam como meu templo ficou: 5º Passo: Lojas Obviamente, sua cidade precisa de outras edificações além do templo, não? Então, mãos à obra! Fazer uma loja egípcia é basicamente igual à fazer uma loja normal, o que muda é basicamente o chão, as paredes e alguns itens. Seja criativo, deixe as idéias fluirem, e com o tempo sua loja estará pronta. Eu, pessoalmente, não gosto de por itens em exposição como a maioria das pessoas, mas se quiser pode colocar, isso vai de cada um. Vejam algumas lojas da minha cidade: 6º Passo: Casas e Guildhouses Bem, este passo é muito simples. Não caia nessa de que casas não podem ser quadradas, não. As casas quadradas são melhores que as deformadas, portanto sinta-se livre para fazê-las um pouco quadradas. Algumas casas da minha cidade: 7º Passo: Nature A Nature do deserto não é viva. Primeiro, aqui vão as IDs dos itens usados em nature: Primeiramente, espalhe alguns cactus pela areia, um bem afastado do outro. Após este procedimento, coloque também algumas palmeiras. Então, ponha as pedras andáveis e, respectivamente, as grandes ( não exagere em nenhuma das duas, principalmente nas grandes ). Coloque algumas dunas de areia pelo chão, e empilhamentos de areia encostados em algumas paredes. Depois, ponha alguns Sand Gravel, mas não exagere, e para finalizar, coloque tufos de grama bem espalhados pelo ambiente. O resultado será algo parecido com isso: 8º Passo: Acabamentos Finalmente, o último passo deste longo tutorial! Aguentem mais um pouco! Para fazer os acabamentos, você precisará dos seguintes Itens: E, após seguir todos estes passos, aqui está a minha cidade: F.A.Q. Pergunta: Ok, você passou essa tais de IDs, mas como eu acho elas? Resposta: Para achá-las, basta clicar em um lugar qualquer do mapa e apertar J. Irá aperecer uma janela com uma caixa de texto em cima, digite a ID desejada nesta caixa de texto e...Voilá! Aí está a Id! Pergunta: Você disse que templos de deserto ficam bonitos em montanha, mas eu não sei fazer montanhas! ò.ó Resposta: Calma, caso não saiba fazer montanhas, procure algum tutorial na seção de tutoriais de mapping, ou senão espere até eu acabar o meu 2º tutorial:Montanhas, ok? ------------------------------------ Extras Outros tutoriais para te ajudar! Nome: Fazendo Pirâmides Usuário: Maligno Tópico: http://www.xtibia.com/forum/Nivelfacil-Faz...es-t105381.html Em breve mais tutoriais... ------------------------------------ Créditos: Palubo, por ter me ajudado com o mapa e com a edição do tutorial para se adequar ao Xtibia Julyano, por também ter me ajudado com o mapa. Eu, por passar 2 dias fazendo este tutorial Parabéns àqueles que leram este tutorial inteiro! Espero que eu tenha ajudado. Comentem e, se possível, postem fotos dos mapas que vocês fizeram usando este tutorial. Peço desculpas pelos erros de português e demais erros, este é meu primeiro tutorial. o tempo aperfeiçoará meus tutoriais. Atenciosamente, Felipe.
    1 ponto
  31. KamuiRunt

    Me Ajuda Por Favor

    Engraçado que você falo merda de mim em um post, e agora fala isso lol
    0 pontos
  32. MaxxJuba

    Me Ajuda Por Favor

    kkkk Kamui, não vai ficar bravo comigo denovo né amigo?
    -1 pontos
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...