Ir para conteúdo

Líderes

Conteúdo Popular

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

  1. Tony

    [Render's] Tibia

    Vou deixar por aqui hoje alguns render's de Tibia, recortado diretamente das ArtWorks que a CIP publica.
    2 pontos
  2. Eu comencei o projeito de copiar as cidades da pxg mais desisti si alguem quer continuar vou deixar o map editor editado por mim para fazer as novas montanhas e os novos doodads, espero ajudar, contem 3 cidades nenhuma terminada (Viridian foi de alguem aqui no foro mais eu refiz para ser compativel com minhas sprites. (DXP V3 refeitas algumas) Cerulean: Saffron: Extras: Datos: Download: Créditos: Michyalex (pelo map e editar algumas sprites e o map editor) Viridian credits (Um membro do xtibia, nao sei o nombre)
    1 ponto
  3. Lordbaxx

    ShotEffects em u16

    Bom, ai vai um código para quem quer ou pretende utilizar muitos shotEffects em seu servidor. Após o tutorial o seu novo limite será de 65.534 shotEffects. No TFS 0.3.6 Vá em Protocolgame.cpp e procure por: void ProtocolGamesendDistanceShoot(const Position& from, const Position& to, uint8_t type) substitua por: void ProtocolGamesendDistanceShoot(const Position& from, const Position& to, uint16_t type) Ainda em Protocolgame.cpp procure a função: void ProtocolGameAddDistanceShoot(NetworkMessage_ptr msg, const Position& from, const Position& to, uint8_t type){ msg->AddByte(0x85); msg->AddPosition(from); msg->AddPosition(to); msg->AddByte(type + 1);} E substitua por: void ProtocolGameAddDistanceShoot(NetworkMessage_ptr msg, const Position& from, const Position& to, uint16_t type){ msg->AddByte(0x85); msg->AddPosition(from); msg->AddPosition(to); msg->AddU16(type + 1);} Agora em Protocolgame.h procure por: void AddDistanceShoot(NetworkMessage_ptr msg, const Position& from, const Position& to, uint8_t type); E substitua por: void AddDistanceShoot(NetworkMessage_ptr msg, const Position& from, const Position& to, uint16_t type); Depois procure por: void sendDistanceShoot(const Position& from, const Position& to, uint8_t type); E substitua por: void sendDistanceShoot(const Position& from, const Position& to, uint16_t type); Agora vamos em Game.cpp Procure por: void GameaddDistanceEffect(const Position& fromPos, const Position& toPos, uint8_t effect) E substitua por: void GameaddDistanceEffect(const Position& fromPos, const Position& toPos, uint16_t effect) Agora procure por: void GameaddDistanceEffect(const SpectatorVec& list, const Position& fromPos, const Position& toPos, uint8_t effect) E substitua por: void GameaddDistanceEffect(const SpectatorVec& list, const Position& fromPos, const Position& toPos, uint16_t effect) Agora vamos em Game.h Procure por: void addDistanceEffect(const SpectatorVec& list, const Position& fromPos, const Position& toPos, uint8_t effect); E substitua por: void addDistanceEffect(const SpectatorVec& list, const Position& fromPos, const Position& toPos, uint16_t effect); Agora procure por: void addDistanceEffect(const Position& fromPos, const Position& toPos, uint8_t effect); E substitua por: void addDistanceEffect(const Position& fromPos, const Position& toPos, uint16_t effect); Agora vamos em Player.h Procure por: void sendDistanceShoot(const Position& from, const Position& to, uint8_t type) const E substitua por: void sendDistanceShoot(const Position& from, const Position& to, uint16_t type) const Agora vamos até Const.h Procure por: enum ShootEffect_t E lá depois do ultimo ShotEffect adicione: SHOOT_EFFECT_SEMFIM = 0xFFFE, //65534 E altere o SHOT_EFFECT_LAST dessa forma: SHOOT_EFFECT_LAST = SHOOT_EFFECT_SEMFIM, Agora vamos em Tools.cpp Procure por: ShootTypeNames shootTypeNames[] = E lá depois de: {"cake", SHOOT_EFFECT_CAKE} Vocês adicionam: {"semfim", SHOOT_EFFECT_SEMFIM} Ficando assim: {"cake", SHOOT_EFFECT_CAKE}, {"semfim", SHOOT_EFFECT_SEMFIM} Compile e agora vamos no seu servidor data/lib/000-constant.lua Antes de: CONST_ANI_WEAPONTYPE Vocês adicionam: CONST_ANI_SEMFIM = 65534 Depois procure por: CONST_ANI_NONE E mudem para: CONST_ANI_NONE = 65534 Agora ache: CONST_ANI_LAST E deixe assim: CONST_ANI_LAST = CONST_ANI_SEMFIM Pronto, a parte do código de fonte/servidor está concluída. "Ah, então já posso usar inúmeros shotEffects.." NÃO! Vamos agora as modificações no nosso OTclient. Apenas uma observação: FFFE em decimal é 65534, ou seja, seu servidor irá ler shot Effects do 0 até o 65534, evitando trabalho de vocês adicionarem 1 à 1. Abra a source do seu OTclient com Microsoft Visual Studio ou CodeBlocks e vamos lá: Vá em Protocolgameparse.cpp Procure a função: void ProtocolGameparseDistanceMissile(const InputMessagePtr& msg){ Position fromPos = getPosition(msg); Position toPos = getPosition(msg); int shotId = msg->getU8(); if(!g_things.isValidDatId(shotId, ThingCategoryMissile)) { g_logger.traceError(stdextformat("invalid missile id %d", shotId)); return; } MissilePtr missile = MissilePtr(new Missile()); missile->setId(shotId); missile->setPath(fromPos, toPos); g_map.addThing(missile, fromPos);} Substitua por: void ProtocolGameparseDistanceMissile(const InputMessagePtr& msg){ Position fromPos = getPosition(msg); Position toPos = getPosition(msg); int shotId = msg->getU16(); if(!g_things.isValidDatId(shotId, ThingCategoryMissile)) { g_logger.traceError(stdextformat("invalid missile id %d", shotId)); return; } MissilePtr missile = MissilePtr(new Missile()); missile->setId(shotId); missile->setPath(fromPos, toPos); g_map.addThing(missile, fromPos);} Ainda na source do seu OTclient vá em Const.h Procure por: LastGameFeature = 101 E adicione antes: GameDistanceMissileU16 = 67, DETALHE: Observe o número anterior, o meu é 66, por isso o novo que usei foi 67. Feito isso, compile seu OTclient. Depois vão em OTclient/modules/things/things.lua E dentro da função: function load() Adicione a feature: g_game.enableFeature(GameDistanceMissileU16) Salvem e pronto, felicidades com seus 65534 ShotEffects. Atenciosamente, Douglas! Créditos Douglas (Lordbaxx) - Trabalhei no OTclient para fazer com que o código funcionasse sem estorva. KotZletY - Consegui entender mais sobre, graças á ele.
    1 ponto
  4. Lordbaxx

    ShotEffects em u16

    Obrigado @Deadpool! @samlecter, como o Deadpool falou, daria um log de erros enorme no seu OTclient. Mas aí vai um conselho, se tem um projeto que há foco em crescimento e longividade, trabalhe com um OTclient open source junto ao seu servidor, isso te facilita imensamente. Pois se não for agora, em um futuro próximo você precisará da source para efetuar alguma modificação com um requerimento profundo.
    1 ponto
  5. Deadpool

    ShotEffects em u16

    Acho que iria dá big no log do seu otc. Porque se ele não reconhecesse o efeito, ele iria spawmar vários erros no terminal do otc, o que iria causar "lag" no otc. Vlw lord, ótimo conteúdo como sempre.
    1 ponto
  6. samlecter

    ShotEffects em u16

    Vlw, rep+ Uma dúvida, não teria como tirar esse limite apenas com a source do server, mesmo que tivesse que adicionar cada ShotEffect novo? (do jeito que é feito com MagicEffect) Se tiver como, eu tenho os MagicEfffects configurados já, daí só copiar e renomear p/ os missiles, seria muito útil p/ os que não possuem source do otc.
    1 ponto
  7. Parabéns pelo mapa, foi uma bela copia.
    1 ponto
  8. Obrigado pelo comentario Deadpool, sou um Spanhol apoiando a comunidade de xtibia, gosto do portuguesse
    1 ponto
  9. Deadpool

    Creatureevent

    Caro membro, seu tópico foi movido de Scripts > Otserv > Globalevents, spells e creatureevents para Otserv > Suporte Otserv.
    1 ponto
  10. Vá em Data/ Npcs Crie Um arquivo chamado Saffari.xml e coloque <?xml version="1.0" encoding="UTF-8"?><npc name="Loren" script="saffari.lua" walkinterval="350000" floorchange="0" speed="0" lookdir="2"><health now="150" max="150"/><look type="495" head="0" body="15" legs="20" feet="25"/> <parameters> <parameter key="message_greet" value="Hello, I am living here with Professor Oak and Professor Ivy, I am training those Lapras, but they need some {travel}s to get stronge."/> </parameters></npc> Agora em npcs/Script crie um Arquivo chamado saffari.lua e coloque focus = 0talk_start = 0target = 0following = falseattacking = falselocal SaffariBalls = {ID SAFFARI BALLS}local SafariEnter = {x=1676, y=1389, z=6} -- Posição da Entrada Safarifunction onThingMove(creature, thing, oldpos, oldstackpos)endfunction onCreatureAppear(creature)endfunction onCreatureDisappear(cid, pos)if focus == cid then selfSay('See ya.') focus = 0 talk_start = 0endendfunction onCreatureTurn(creature)endfunction msgcontains(txt, str)return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))endfunction onCreatureSay(cid, type, msg)msg = string.lower(msg)if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 3 then selfSay('Olá a entrada no Saffari custará 1k vc aceita??') focus = cid talk_start = os.clock()elseif (msgcontains(msg, 'yes') ) then if getPlayerItemCount(cid,2391) >= 1 or getPlayerItemCount(cid,2394) >= 1 or getPlayerItemCount(cid,2392) >= 1 or getPlayerItemCount(cid,2393) >= 1 then selfSay("Você não pode entrar no Saffari com nenhuma outra ball exceto a Saffari!! Cya") focus = 0 talk_start = 0 elseif getPlayerStorageValue(cid, 98796) >= 1 or getPlayerStorageValue(cid, 98797) >= 1 then selfSay("Você já está na saffari zone!") focus = 0 talk_start = 0 elseif doPlayerRemoveMoney(cid, 100000) then setPlayerStorageValue(cid, 98796, 1) setPlayerStorageValue(cid, 98797, 1) doPlayerAddItem(cid, 12617, SaffariBalls) doTeleportThing(cid, SafariEnter) doSendMagicEffect(getThingPos(cid), 21) talk_start = os.clock() else selfSay("Você não tem dinheiro suficiente") focus = 0 talk_start = 0 endelseif (msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 3) then selfSay('Sorry, Im busy at this moment.')elseif (msgcontains(msg, 'bye') and focus == cid and getDistanceToCreature(cid) < 3) then selfSay('Good bye then.') focus = 0 talk_start = 0endendfunction onCreatureChangeOutfit(creature)endfunction onThink()if (os.clock() - talk_start) > 30 thenif focus > 0 thenselfSay('See ya.')endfocus = 0endend
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...