Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 01/13/16 em %

  1. Hoje eu vim ensinar como aumenta a "tela" de jogo do OTCLIENT (Desculpe o merchant, era a unica imagem que eu tinha salvo) Testado em : 0.3.6pl1, Pode funcionar em 1.0 com alterações pequenas. Em protocolgame.cpp ache: return ((x >= myPos.x - 8 + offsetz) && (x <= myPos.x + 9 + offsetz) && (y >= myPos.y - 6 + offsetz) && (y <= myPos.gety + 7 + offsetz)); e troque por: return ((x >= myPos.x - Map::maxClientViewportX + offsetz) && (x <= myPos.x + (Map::maxClientViewportX+1) + offsetz) && (y >= myPos.y - Map::maxClientViewportY + offsetz) && (y <= myPos.y + (Map::maxClientViewportY+1) + offsetz)); Agora, continuando em protocolgame.cpp ache: GetMapDescription(pos.x - 8, pos.y - 6, pos.z, 18, 14, msg); E troque por: GetMapDescription(pos.x - Map::maxClientViewportX, pos.y - Map::maxClientViewportY, pos.z, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, msg); Continuando em protocolgame.cpp ache a função: void ProtocolGame::sendMoveCreature(const Creature* creature, const Tile* newTile, const Position& newPos, uint32_t newStackpos, const Tile* oldTile, const Position& oldPos, uint32_t oldStackpos, bool teleport) Dentro da função encontre: A parte que começa em if (oldPos.y > newPos.y) { e Termina em GetMapDescription(newPos.x - 8, newPos.y - 6, newPos.z, 1, 14, msg); } e troque por: if (oldPos.y > newPos.y) { // north, for old x msg->AddByte(0x65); GetMapDescription(oldPos.x - Map::maxClientViewportX, newPos.y - Map::maxClientViewportY, newPos.z, (Map::maxClientViewportX+1)*2, 1, msg); } else if (oldPos.y < newPos.y) { // south, for old x msg->AddByte(0x67); GetMapDescription(oldPos.x - Map::maxClientViewportX, newPos.y + (Map::maxClientViewportY+1), newPos.z, (Map::maxClientViewportX+1)*2, 1, msg); } if (oldPos.x < newPos.x) { // east, [with new y] msg->AddByte(0x66); GetMapDescription(newPos.x + (Map::maxClientViewportX+1), newPos.y - Map::maxClientViewportY, newPos.z, 1, (Map::maxClientViewportY+1)*2, msg); } else if (oldPos.x > newPos.x) { // west, [with new y] msg->AddByte(0x68); GetMapDescription(newPos.x - Map::maxClientViewportX, newPos.y - Map::maxClientViewportY, newPos.z, 1, (Map::maxClientViewportY+1)*2, msg); Agora ache: if(newPos.z == 7) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 5, 18, 14, 3, skip); //(floor 7 and 6 already set) GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 4, 18, 14, 4, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 3, 18, 14, 5, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 2, 18, 14, 6, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 1, 18, 14, 7, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 0, 18, 14, 8, skip); Depedendo da Source, a parte será assim: Por: if(newPos.z == 7) //going to surface { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 5, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 3, skip); //(floor 7 and 6 already set) GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 4, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 4, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 3, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 5, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 2, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 6, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 1, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 7, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 0, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 8, skip); Agora ache: else if(newPos.z > 7) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, oldPos.getZ() - 3, 18, 14, 3, skip); Depedendo da source será assim: Por: else if(newPos.z > 7) //underground, going one floor up (still underground) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, oldPos.z - 3, (Map::maxClientViewportX+1), (Map::maxClientViewportY+1)*2, 3, skip); Agora ache: //moving up a floor up makes us out of sync //west msg->AddByte(0x68); GetMapDescription(oldPos.x - 8, oldPos.y - 5, newPos.z, 1, 14, msg); //north msg->AddByte(0x65); GetMapDescription(oldPos.x - 8, oldPos.y - 6, newPos.z, 18, 1, msg); E troque por: //moving up a floor up makes us out of sync //west msg->AddByte(0x68); GetMapDescription(oldPos.x - Map::maxClientViewportX, oldPos.y - (Map::maxClientViewportY-1), newPos.z, 1, (Map::maxClientViewportY+1)*2, msg); //north msg->AddByte(0x65); GetMapDescription(oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z, (Map::maxClientViewportX+1)*2, 1, msg); Agora ache: if(newPos.z == 8) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z, 18, 14, -1, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 1, 18, 14, -2, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 2, 18, 14, -3, skip); Dependendo da source poderá ser: e troque por: if(newPos.z == 8) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -1, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z + 1, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -2, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z + 2, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -3, skip); Agora ache: else if(newPos.z > oldPos.z && newPos.z > 8 && newPos.z < 14) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 2, 18, 14, -3, skip); Depedendo da source pode ser assim: E troque por: else if(newPos.z > oldPos.z && newPos.z > 8 && newPos.z < 14) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z + 2, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -3, skip); Agora em map.h edite essa parte como quiser: static const int32_t maxViewportX = 11; //min: maxClientViewportX + 1 static const int32_t maxViewportY = 11; //min value: maxClientViewportY + 1 static const int32_t maxClientViewportX = 8; static const int32_t maxClientViewportY = 6; O modo de Edição é assim: Agora em map.cpp do OTCLIENT Ache: void Map::resetAwareRange() { AwareRange range; range.left = 8; range.top = 6; range.bottom = 7; range.right = 9; setAwareRange(range); } Troque por: { AwareRange range; range.left = 8; //Valor que colocou em maxClientViewportX range.top = 6; //Valor que colocou em maxClientViewportY range.bottom = range.top+1; range.right = range.left+1; setAwareRange(range); } Créditos: Flatlander - OTLAND - Criação Ceetros - Tradução Agora vamos deixar o OTCLIENT lindão. Troque tudo de modules/game_interface/interface.lua (na pasta do OTCLIENT) por: http://pastebin.com/tH7qyreW (para o tutorial não ficar muito grande botei no pastebin, já que o spoiler tá bugando) Creditos dessa parte: Edubart (Criador do OTCLIENT) Ceetros Caso tenha ajudado, dê um rep+
    5 pontos
  2. kaleudd

    Mapa,hunt!

    Download http://www.mediafire.com/download/8ykfgs86uilt8z8/dl_hunt.rar Scan https://www.virustotal.com/pt/file/5399c28ef28bf6b2e4cf1981c8e9cfdded7336c48ffcbcad85775323cfbf1519/analysis/ Positions 200 200 5
    3 pontos
  3. Amigo, tem 2 jeitos de fazer: um que fica mais uniforme, a animação é sempre a mesma e outro que é exatamente igual o evento /x 18 (que mand aleatoriamente). Vou colocar os 2 aqui e vc usa o que gostar mais: 1. Uniforme 2. Igual /x (o código do loop utilizado pode ser encontrado também la em talkactions. Bom é isso. Vi que você fez algumas coisas que não precisavam na hora de adicionar o callback da sua formula e na propria formula, se quiser dar uma lida no tutorial que fiz sobre formulas e callbacks para entender melhor, fica o link: http://www.xtibia.com/forum/topic/238759-tutorial-formulas-e-callbacks-das-spells-entendendo-melhor/ Abraços, comente se funcionou como desejava.
    2 pontos
  4. zipter98

    Script de criar parede

    Se o callback apresentar problemas, troque onTime por onTimer. local wall_config = { itemid = xxx, --ID da parede. positions = { {x = x, y = y, z = z}, --Posições das paredes. {x = x, y = y, z = z}, {x = x, y = y, z = z}, --etc } } function onTime() for i = 1, #wall_config.positions do local wall = getTileItemById(wall_config.positions[i], wall_config.itemid).uid if wall == 0 then doCreateItem(wall_config.itemid, 1, wall_config.positions[i]) end end return true end Tag: <globalevent name="create_wall" time="hora:minuto" event="script" value="nome_do_arquivo.lua"/>
    2 pontos
  5. Kiing Creed

    Styller HardLand [8.60]

    Apresento a vocês, o styller mais completo feito até hoje. Ele é o HardLand Styller [8.60] .: Mapa base - Yourots 1.2 (Créditos LeozeraRox) • O mapa estava pronto a muito tempo, porém, eu abria meu servidor com este mesmo mapa, só que de um tempo pra cá, não tive mais tempo para ficar correndo atrás disso. Um pecado eu ter deixado um mapa tão bem feito guardado e não divulgado pra vocês que ainda gostam de jogar. Informações do otserv. (Obs: Servidor possui war-system, porém não é servidor de site, todas as informações são passadas pelo próprio jogo) • Versão 8.60 • Contém sistema de War System • Contém o War of Emperium • Cidade vip inserida: - Novas hunts - Novas quests - Novos trainers - Novas casas [Itens foram criados para as novas quests] • Cidade principal totalmente modificada: - Novos trainers - Novas casas - Novas hunts Façam bom proveito, lembre-se que qualquer dúvida, estarei aqui! Link para dowload: http://www.4shared.com/rar/ZSI3uFABce/HARDLAND.html • Templo cidade principal. • Local onde account managers aparece, junto com King (onde coloca promotion) • Lojas (pots por alavancas) • Quests (Cidade VIP) • Teleports free • Teleports vips • Traines
    1 ponto
  6. MuriloCavalcantti

    POKExMOSTYER

    Para os ativos, na minha opinião o PDA mais completo, pra vocês, feito pelo Wend (AnnaFeh). Sistemas e Atualizações Screenshots Downloads: Server + Site Client OTC Scan: Server + Site Client OTC Creditos: Wend Eu
    1 ponto
  7. Administrador

    10.80+ Medusa Tower

    Medusa Tower Coordenadas: x:32872 y:32833 z:7 Medusa Tower 10.80+.rar Scan
    1 ponto
  8. Golduck Victreebel Steelix ( Vaporeon / Jolteon ) Venusaur Charmander (SmokeScreen) Charmander (Scratch) Exeggutor Psychic Bulbasaur (Take Down) Venusaur (Take Down)
    1 ponto
  9. CancerianO

    CancerianO - Show Off

    Como o Daniel deixou eu postar com uma imagem, manterei este show off ativo. Casa de um pescador
    1 ponto
  10. Vê se isso resolve seu problema com os meteoros:
    1 ponto
  11. eu tentei, mas o tópico todo virou um spoiler. Qual? Tá tudo em Protocolgame, menos a parte do map.h
    1 ponto
  12. Valeu @Topic Adicionei a parte do OTC de deixar ele igual a imagem
    1 ponto
  13. Opa, se tiver um efeito de meteoro caindo do céu no ot, da sim. Mas não sei se tem.
    1 ponto
  14. Estou na sessão errada? pq se tiver alguem mova pfv! :happy: Vlw , mas nem e dificil , eu tenho essa media por conta q eu tbm faço minhas encomendas por fora, pro pessoal , se n seria + rapido
    1 ponto
  15. Administrador

    RME ONLINE ?

    http://www.xtibia.com/forum/topic/234971-remeres-map-editor-70-1080/ Live -> Host server
    1 ponto
  16. Luga03

    Mapa,hunt!

    Ata, nem vi malz auehauhea
    1 ponto
  17. Shareath

    Pokemon PDA XTIBIA

    Boa tarde Galera, Estou pegando o projeto agora e terminei de ler as 27 paginas. Separei todas as informações úteis para aplicar no servidor, são elas até o momento: @@Bluester (Página 7 - Post #67) http://www.xtibia.com/forum/topic/238285-pokemon-pda-xtibia/page-7#entry1678942 @ (Página 12 - Post #115) http://www.xtibia.com/forum/topic/238285-pokemon-pda-xtibia/page-12#entry1679605 (Página 21 - Post #209) http://www.xtibia.com/forum/topic/238285-pokemon-pda-xtibia/page-21#entry1680582 (Página 25 - Post #249) http://www.xtibia.com/forum/topic/238285-pokemon-pda-xtibia/page-25#entry1680768 (Página 27 - Post #263) http://www.xtibia.com/forum/topic/238285-pokemon-pda-xtibia/page-27#entry1680948 @ (Página 17 - Post #170) http://www.xtibia.com/forum/topic/238285-pokemon-pda-xtibia/page-17#entry1680330 @ (Página 18 - Post #173) http://www.xtibia.com/forum/topic/238285-pokemon-pda-xtibia/page-18#entry1680417 Sempre tive muitos projetos diferentes tanto de Pokemon quanto de Tibia. Já tive diversos servidores bem sucedidos que foram vendidos ou aposentados. Não sou muito experiente em muitas coisas mais estou sempre disposto a aprender e pesquisar sobre até que possa achar uma solução, para isso vem aqui por meio deste informar que estarei disposto a ajudar a qualquer um que precisar, assim como com toda certeza irei encher o saco do citados acima alem do próprio autor para que possam me auxiliar (risos). Vamos tornar este "projeto" 100% com a ajuda de todas essas pessoas excelentes e talentosas que temos em nossa comunidade sem se importar com membros que passam apenas para criticar, pois a critica é que nos constrói. Assim que eu for encontrando problemas no servidor irei reportando.
    1 ponto
  18. Administrador

    [PXG]As Novas Remakes.

    Tópico Movido Este tópico foi movido de "OTServ → Spriting → Show off (exposição de sprites)" para "OTServ → Spriting → Downloads Sprites".
    1 ponto
  19. Administrador

    Mapa,hunt!

    Essa guria não aprendeu nada sobre mapping mesmo. Obrigado por compartilhar :biggrin:
    1 ponto
  20. Lordbaxx

    [Encerrado]RETIRADO

    Olá Misty Day Vamos às respostas. 1° O sistema de shinys é meio refinado, trabalhado com agilidade, vitalidade, força e defesa maior do que os pokemons normais e claro 22% de seu HP é superior a um pokemon normal. Shinys terão respawn aleatórios, alguns considerados raríssimos! Pouco se sabe sobre alguns dos shinys do jogo, mas todos serão MUITO valorizados no nosso mundo. Claro pela % difícil de captura e suas superioridades. 2° Mega Scizor já foi alterado. Shiny magmar e Shiny Electabuzz são algumas sprites digamos (diferenciadas), sempre buscamos copiar menos e criar mais, claro não fomos nós quem criamos estes shinys porém são eles os quais iremos utilizar, garanto que irá adorá-los! Já em relação ao Crystal Onix. É diferente Crystal e Shiny, o Shiny Onix é o "marrom" que você citou, já o Crystal é outro que já está aguardando os treinadores para enfrentá-los e sim na forma de Crystal. 3° O Projeto (não OT), será focado em batalhas e mistérios, por isso a dificuldade para obter alguns pokemons, shinys (teremos todos), serão raros sejam eles quais forem. Já em relação aos pokemons de 3° (terceira) e 4° (quarta) geração, serão implementados ao jogo somente em futuros UPDATES, claro já estão adicionados porém todos os pokemons só estarão disponíveis em continentes próprias para cada um deles, ou seja, COMEÇAREMOS com o continente de Kanto SÓ com pokemons de Kanto. E quando lançarmos o continente johto teremos os pokemons da 2° (segunda) geração disponíveis. Abraço e disponha! Atenciosamente, Douglas.
    1 ponto
  21. @@lokoga Não sei acessar Oramond, mas quanto à versão do server, o Mitsuig não atualizou o download do tfs pro 10.90 Usa esse aqui, eu mesmo compilei x64: TFS 10.90.rar
    1 ponto
  22. deglorio

    Pokemon PDA XTIBIA

    Gente, o sistema de addon feito por mim e o gristony é um protótipo, em breve posso corrigir, algumas coisas precisam ser arrumadas sim, mas eu estou abandonando a "carreira de pokemon" vou ajudar de acordo com meu tempo. Por isso a bucha esta com vcs, mas quando tem tempo eu ajudo, sempre ajudo o Bluester e o NextBR.Qualquer coisa posta ai que vamos corrigindo.
    1 ponto
  23. zipter98

    [Ajuda] Script

    local egg = { ["Amarelo"] = {id = 6541, mon = "Demon"}, ["Vermelho"] = {id = 6542, mon = "Vampire"}, ["Azul"] = {id = 6543, mon = "Ferumbras"}, ["Verde"] = {id = 6544, mon = "Warlock"}, ["Roxo"] = {id = 6545, mon = "Cyclops"}, ["Branco"] = {id = 2695, mon = "Dragon"} } function onUse(cid, item, fromPosition, itemEx, toPosition) if getTilePzInfo(getCreaturePosition(cid)) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você não pode sumonar seu pet em protection zone.") return true end if #getCreatureSummons(cid) >= 1 then doCreatureSay(cid, "Não preciso mais de você!", TALKTYPE_SAY) doRemoveCreature(getCreatureSummons(cid)[1]) return true end for k, v in pairs(egg) do if item.itemid == v.id then doCreatureSay(cid, "Venha me ajudar, "..v.mon.."!", TALKTYPE_SAY) local x = doSummonCreature(v.mon, getCreaturePosition(cid)) doConvinceCreature(cid, x) end end return true end
    1 ponto
  24. Caronte

    Ajuda com esse script.

    Cara, tá pegando perfeitamente aqui no meu TFS 0.4 local storage = 79845 --storage para o exhaustion local tempo = 5 --em segundos local monsters = { [1] = {summons = {["rat"] = {level = 10, mana = 20}, ["dragon"] = {level = 100, mana = 200} }, maxSummons = 2 }, [2] = {summons = {["rat"] = {level = 10, mana = 20}, ["dragon"] = {level = 100, mana = 200} }, maxSummons = 4 }, [5] = {summons = {["rat"] = {level = 10, mana = 20}, ["dragon"] = {level = 100, mana = 200} }, maxSummons = 4 }, [6] = {summons = {["rat"] = {level = 10, mana = 20}, ["dragon"] = {level = 100, mana = 200} }, maxSummons = 6 }, } function onSay(cid, words, param, channel) if exhaustion.check(cid, storage) then doPlayerSendTextMessage(cid, 22, "You are exhausted.") return true end --Player Status local playerpos = getPlayerPosition(cid) param = string.lower(param) function checkSummon() for k, v in pairs(monsters[getPlayerVocation(cid)].summons) do if param == k then return true end end return false end if not checkSummon() then doPlayerSendCancel(cid, "You can't summon this monster.") return true end for k, v in pairs(monsters[getPlayerVocation(cid)].summons) do if (param == k) then if (monsters[getPlayerVocation(cid)]) and #getCreatureSummons(cid) >= monsters[getPlayerVocation(cid)].maxSummons then return doPlayerSendCancel(cid, "Você já tem sumons demais.") else --Summon if getPlayerLevel(cid) < v.level then return doPlayerSendCancel(cid, "Level insuficiente.") elseif getCreatureMana(cid) < v.mana then return doPlayerSendCancel(cid, "Mana insuficiente.") end doConvinceCreature(cid, doCreateMonster(param, playerpos)) doPlayerAddMana(cid, -v.mana, false) exhaustion.set(cid, storage, tempo) doSendMagicEffect(playerpos, 2) return true end end end return true end
    1 ponto
  25. Superion

    [Show Off] Daniel

    Tava com saudade de ver esse mapper fabuloso mais uma vez.. Como sempre, mitando.
    1 ponto
  26. Troque: if getPlayerItemCount(cid, need[1].id) < need[1].qt then selfSay("Você não me trouxe os itens necessários...", cid) selfSay("Lembre-se, eu preciso de todos esses itens...", cid) talkState[talkUser] = 0 return true end por: for i = 1, #need do if getPlayerItemCount(cid, need[i].id) < need[i].qt then selfSay("Você não me trouxe os itens necessários...", cid) selfSay("Lembre-se, eu preciso de todos esses itens...", cid) talkState[talkUser] = 0 return true end end Troque: local stoFinish = {92121} por: local stoFinish = 92121 Troque: setPlayerStorageValue(cid, stoFinish, 0) por: setPlayerStorageValue(cid, stoFinish, 1)
    1 ponto
  27. Night Wolf

    Trabalho que deu errado #01

    Olá caros, é com um poquinho de pesar que informo que fui contratado por um membro aqui do fórum e devido à ele ser patrocinado pelo xt acabei dando confiança demais e entregando os códigos pra ele testar antes de eu receber. Bom, foi uma má escolha mas serviu como aprendizado.. já que eu tive bastante trabalho pra fazer os códigos bonitinhos e não vou receber nada por eles eu decidi postar aqui para vocês :3 O link pra baixar pode ser encontrado aqui: http://www.4shared.com/get/Ycgs1-qvba/ShiroNG.html espero que seja útil ;]
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...