Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 01/13/16 em todas áreas
-
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
-
Download http://www.mediafire.com/download/8ykfgs86uilt8z8/dl_hunt.rar Scan https://www.virustotal.com/pt/file/5399c28ef28bf6b2e4cf1981c8e9cfdded7336c48ffcbcad85775323cfbf1519/analysis/ Positions 200 200 53 pontos
-
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
-
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
-
Styller HardLand [8.60]
mariohugolek reagiu a Kiing Creed por um tópico no fórum
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 • Traines1 ponto -
POKExMOSTYER
PokemexStaff reagiu a MuriloCavalcantti por um tópico no fórum
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 Eu1 ponto -
10.80+ Medusa Tower
lokoga reagiu a Administrador por um tópico no fórum
Medusa Tower Coordenadas: x:32872 y:32833 z:7 Medusa Tower 10.80+.rar Scan1 ponto -
CancerianO - Show Off
Administrador reagiu a CancerianO por um tópico no fórum
Como o Daniel deixou eu postar com uma imagem, manterei este show off ativo. Casa de um pescador1 ponto -
Vê se isso resolve seu problema com os meteoros:1 ponto
-
Adicionando mais tiles a visão do jogador!
Developer Berg reagiu a Refe por um tópico no fórum
eu tentei, mas o tópico todo virou um spoiler. Qual? Tá tudo em Protocolgame, menos a parte do map.h1 ponto -
Adicionando mais tiles a visão do jogador!
Developer Berg reagiu a Refe por um tópico no fórum
Valeu @Topic Adicionei a parte do OTC de deixar ele igual a imagem1 ponto -
Opa, se tiver um efeito de meteoro caindo do céu no ot, da sim. Mas não sei se tem.1 ponto
-
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 + rapido1 ponto
-
RME ONLINE ?
Dennyz Dias reagiu a Administrador por uma questão
http://www.xtibia.com/forum/topic/234971-remeres-map-editor-70-1080/ Live -> Host server1 ponto -
1 ponto
-
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
-
[PXG]As Novas Remakes.
kaleudd reagiu a Administrador por um tópico no fórum
Tópico Movido Este tópico foi movido de "OTServ → Spriting → Show off (exposição de sprites)" para "OTServ → Spriting → Downloads Sprites".1 ponto -
Mapa,hunt!
kaleudd reagiu a Administrador por um tópico no fórum
Essa guria não aprendeu nada sobre mapping mesmo. Obrigado por compartilhar :biggrin:1 ponto -
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
-
@@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.rar1 ponto
-
Pokemon PDA XTIBIA
RodriigoRobson reagiu a deglorio por um tópico no fórum
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 -
[Ajuda] Script
DiegoHenriqueh reagiu a zipter98 por uma questão
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 end1 ponto -
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 end1 ponto
-
[Show Off] Daniel
Administrador reagiu a Superion por um tópico no fórum
Tava com saudade de ver esse mapper fabuloso mais uma vez.. Como sempre, mitando.1 ponto -
Pedido: Quest. NPC que pega itens diferentes e da um unico item.
Administrador reagiu a zipter98 por uma questão
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 -
Trabalho que deu errado #01
gabriel28 reagiu a Night Wolf por um tópico no fórum
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