Ir para conteúdo

Refe

Conde
  • Total de itens

    645
  • Registro em

  • Última visita

  • Dias Ganhos

    10

Histórico de Reputação

  1. Upvote
    Refe recebeu reputação de kaioboyy em Pokemon Dash Evolution ~> Projeto Comunitário <~   
    Conteúdo:

     
     
     
    Imagens Mapa não incluso
    Downloads:

     
     
     
    Removendo Bugs de itens (como order, fishing, etc)
     
     
     
    Sistemas feitos para o PDE:

     
     
    Tutoriais feitos para o PDE:
     
     
    Bugs reportados:
     
     
     
  2. Upvote
    Refe recebeu reputação de Tibiano Pro em Pokemon Dash Evolution ~> Projeto Comunitário <~   
    Conteúdo:

     
     
     
    Imagens Mapa não incluso
    Downloads:

     
     
     
    Removendo Bugs de itens (como order, fishing, etc)
     
     
     
    Sistemas feitos para o PDE:

     
     
    Tutoriais feitos para o PDE:
     
     
    Bugs reportados:
     
     
     
  3. Upvote
    Refe recebeu reputação de ITALOx em BUGS: Clonar item e "derrubar" servidores   
    Hoje eu percebi que muitas pessoas estão levando a melhor com bugs de otserver.
    E eu vim aqui ensinar para vocês como fazer tais bugs, e para quem administra um servidor também saber como tal bug é feito e assim pensar em uma forma de fixar.
     
     
    Bug de mochilas:
    Morte no trade:
    Bug da nurse:
    Clonar item por guild:
     
     
    Bom, a minha ideia é mostrar como os bugs são feitos para os donos de servidores arrrumar.
    Obrigado pela atenção!
    Até a próxima.
  4. Upvote
    Refe recebeu reputação de showman357 em BUGS: Clonar item e "derrubar" servidores   
    Hoje eu percebi que muitas pessoas estão levando a melhor com bugs de otserver.
    E eu vim aqui ensinar para vocês como fazer tais bugs, e para quem administra um servidor também saber como tal bug é feito e assim pensar em uma forma de fixar.
     
     
    Bug de mochilas:
    Morte no trade:
    Bug da nurse:
    Clonar item por guild:
     
     
    Bom, a minha ideia é mostrar como os bugs são feitos para os donos de servidores arrrumar.
    Obrigado pela atenção!
    Até a próxima.
  5. Upvote
    Refe recebeu reputação de Ayron5 em BUGS: Clonar item e "derrubar" servidores   
    Hoje eu percebi que muitas pessoas estão levando a melhor com bugs de otserver.
    E eu vim aqui ensinar para vocês como fazer tais bugs, e para quem administra um servidor também saber como tal bug é feito e assim pensar em uma forma de fixar.
     
     
    Bug de mochilas:
    Morte no trade:
    Bug da nurse:
    Clonar item por guild:
     
     
    Bom, a minha ideia é mostrar como os bugs são feitos para os donos de servidores arrrumar.
    Obrigado pela atenção!
    Até a próxima.
  6. Upvote
    Refe recebeu reputação de nociam em BUGS: Clonar item e "derrubar" servidores   
    Hoje eu percebi que muitas pessoas estão levando a melhor com bugs de otserver.
    E eu vim aqui ensinar para vocês como fazer tais bugs, e para quem administra um servidor também saber como tal bug é feito e assim pensar em uma forma de fixar.
     
     
    Bug de mochilas:
    Morte no trade:
    Bug da nurse:
    Clonar item por guild:
     
     
    Bom, a minha ideia é mostrar como os bugs são feitos para os donos de servidores arrrumar.
    Obrigado pela atenção!
    Até a próxima.
  7. Thanks
    Refe recebeu reputação de Ayron5 em Aprenda a por o target da PXG no seu servidor!   
    Requisitos:
     
    Primeira modificação:
    No arquivo Creature.cpp, adicione uma inclusão:
    #include <framework/graphics/image.h> No arquivo Creature.cpp encontre o desvio condicional
    if(m_showStaticSquare && animate) { Lá dentro adicione:
    ImagePtr tarf = Image::load("data/images/target.png"); TexturePtr tarfe = TexturePtr(new Texture(tarf, false)); No mesmo desvio condicional troque a linha:
    g_painter->drawBoundingRect(Rect(dest + (animationOffset - getDisplacement() + 2)*scaleFactor, Size(28, 28)*scaleFactor), std::max<int>((int)(2*scaleFactor), 1));  
    Por:
    g_painter->drawTexturedRect(Rect(dest + (animationOffset - getDisplacement() + 2)*scaleFactor, Size(tarfe->getHeight(), tarfe->getWidth())*scaleFactor), tarfe); E logo após adicione:
    g_painter->setColor(Color::white); Agora, você precisa baixar a imagem abaixo e por na pasta data/images com o nome "target.png"

    Caso não consiga ver a imagem, clique aqui.
     
  8. Upvote
    Refe recebeu reputação de Wase Wiss em Custom Health Bar   
    PREVIEW: 

     
    CÓDIGO:
     
    CRÉDITOS:
    @Refe
  9. Upvote
    Refe recebeu reputação de XZero em Custom Health Bar   
    PREVIEW: 

     
    CÓDIGO:
     
    CRÉDITOS:
    @Refe
  10. Thanks
    Refe recebeu reputação de Ayron5 em Custom Health Bar   
    PREVIEW: 

     
    CÓDIGO:
     
    CRÉDITOS:
    @Refe
  11. Upvote
    Refe recebeu reputação de Drenks em Custom Health Bar   
    PREVIEW: 

     
    CÓDIGO:
     
    CRÉDITOS:
    @Refe
  12. Upvote
    Refe recebeu reputação de Ayron5 em [Resolvido] Opcode e função   
    É pq você tem que enviar o opcode, o extendedopcodes.lua só funciona para receber, faz uma action com o send que você botou lá para testar
    Ou seja, ponha a função
    doSendPlayerExtendedOpcode(cid, 55, onsangue) em uma action qualquer, ou talkaction e testa.
  13. Upvote
    Refe deu reputação a Benny em [OTClient] Cor no nome por tag (ADM;GM;HELP)   
    PREVIEW:
     
     
    CÓDIGO:
     
    Abra o creature.cpp da source do seu otclient e procure por: 
    void Creature::setHealthPercent(uint8 healthPercent) Substitua tudo por:
    void Creature::setHealthPercent(uint8 healthPercent) { if(m_name.find("[ADM]")!=std::string::npos) m_informationColor = Color(0x00, 0x2a, 0xff); else if(m_name.find("[GM]")!=std::string::npos) m_informationColor = Color(0x00, 0xff, 0x0c); else if(m_name.find("[HELP]")!=std::string::npos) m_informationColor = Color(0xff, 0x00, 0x00); else if(healthPercent > 92) m_informationColor = Color(0x00, 0xBC, 0x00); else if(healthPercent > 60) m_informationColor = Color(0x50, 0xA1, 0x50); else if(healthPercent > 30) m_informationColor = Color(0xA1, 0xA1, 0x00); else if(healthPercent > 8) m_informationColor = Color(0xBF, 0x0A, 0x0A); else if(healthPercent > 3) m_informationColor = Color(0x91, 0x0F, 0x0F); else m_informationColor = Color(0x85, 0x0C, 0x0C); m_healthPercent = healthPercent; callLuaField("onHealthPercentChange", healthPercent); if(healthPercent <= 0) onDeath(); } Explicação:
     
    [ADM] é a tag (Qualquer personagem que tenha [ADM] no nome)
    Color(0x00, 0x2a, 0xff) é a cor. No caso, você tem que usar cores RGB Hexadecimais, pode encontrar uma tabela AQUI e completar com 0x.
    Exemplo:
    A cor amarela tem como código: #FFFF00
    Ficaria assim: Color(0xFF, 0xFF, 0x00)
     
    Qualquer dúvida, à disposição!
    Créditos: @Refe
     
    Abração!!
     
  14. Upvote
    Refe recebeu reputação de JG6 em [Resolvido] Cores nos Nomes Source   
    As TAGS tem que ser em letras maiúsculas.
     
    [ADM] o nome vai ficar azul
    [GM] o nome vai ficar verde
    [HELP] o nome vai ficar vermelho.
     
  15. Thanks
    Refe recebeu reputação de Ayron5 em [Resolvido] Cores nos Nomes Source   
    As TAGS tem que ser em letras maiúsculas.
     
    [ADM] o nome vai ficar azul
    [GM] o nome vai ficar verde
    [HELP] o nome vai ficar vermelho.
     
  16. Upvote
    Refe recebeu reputação de boxxer321 em [Resolvido] Conflito no sistema de Addon e HM!   
    function recheck(sid, skill, pos) if not isCreature(sid) then return end local cid = getCreatureMaster(sid) if skill == "cut" then local item = getTileItemById(pos, 2767) doCreatureSay(sid, "CUT!", TALKTYPE_ORANGE_1) markPos(sid, {x=1,y=1,z=7}) doFaceCreature(sid, pos) doSendMagicEffect(getThingPos(item.uid), 141) doTransformItem(item.uid, 6216) local function growBush() doTransformItem(getTileItemById(pos, 6216).uid, 2767) end addEvent(growBush, intervalToRegrowBushAndStones * 1000) elseif skill == "rock smash" then local item = getTileItemById(pos, 1285) doCreatureSay(sid, "ROCK SMASH!", TALKTYPE_ORANGE_1) markPos(sid, {x=1,y=1,z=7}) doFaceCreature(sid, pos) doSendMagicEffect(getThingPos(item.uid), 118) doTransformItem(item.uid, 3610) local function growRock() doTransformItem(getTileItemById(pos, 3610).uid, 1285) end addEvent(growRock, intervalToRegrowBushAndStones * 1000) elseif skill == "headbutt" then --alterado v1.6 local master = getCreatureMaster(sid) local array = {} for lvls, pokes in pairs(headbutt) do if getPlayerLevel(master) >= lvls[1] and getPlayerLevel(master) <= lvls[2] then array = pokes break end end if not next(array) then --proteçao para caso algum player tenha lvl maior q o limite da tabela, q ali ta 100k print("Some player have level bigger then 100k ") doPlayerSendTextMessage(cid, 20, "You can't have level bigger then 100k ") return true end local rand = array[math.random(#array)] for j = 1, rand[2] do local poke = doCreateMonster(rand[1], getClosestFreeTile(sid, pos), false) doSetMonsterPassive(poke) end local item = getTileItemById(pos, 12591) --id do item arvore normal doCreatureSay(sid, "HEADBUTT!", TALKTYPE_MONSTER) markPos(sid, {x=1,y=1,z=7}) doFaceCreature(sid, pos) doSendMagicEffect(getThingPos(item.uid), 118) doTransformItem(item.uid, 12592) --id do item arvore quebrada local function growHead() doTransformItem(getTileItemById(pos, 12592).uid, 12591) --id do item arvore quebrada, arvore normal end addEvent(growHead, choose(5, 10, 20, 30) * 60 * 1000) --o tempo pra arvore voltar ao normal varia de 5~30min elseif skill == "dig" then local item = getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}) doCreatureSay(sid, "DIG!", TALKTYPE_ORANGE_1) markPos(sid, {x=1,y=1,z=7}) doFaceCreature(sid, pos) doSendMagicEffect(getThingPos(item.uid), 3) doTransformItem(item.uid, item.itemid+1) local function closeHole() doTransformItem(getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).uid, item.itemid) end addEvent(closeHole, intervalToRegrowBushAndStones * 1000) elseif skill == "fly" then --if not isPremium(cid) then --doPlayerSendCancel(cid, "Only premium members are allowed to fly.") --return true --end local pokemon = flys[getPokemonName(getCreatureSummons(cid)[1])] doPlayerSendTextMessage(cid, 27, "Type \"up\" or \"h1\" to fly higher and \"down\" or \"h2\" to fly lower.") doChangeSpeed(cid, -getCreatureSpeed(cid)) local speed = 500 + PlayerSpeed/5 + getSpeed(sid) * 6 * speedRate doChangeSpeed(cid, speed) setPlayerStorageValue(cid, 54844, speed) local go = false local pks = getCreatureSummons(cid)[1] if getCreatureOutfit(pks).lookType == getItemAttribute(getPlayerSlotItem(cid, 8).uid, "addon") then go = true out = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "spec") elseif getCreatureOutfit(pks).lookType == getItemAttribute(getPlayerSlotItem(cid, 8).uid, "addon2") then go = true out = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "spec2") elseif getCreatureOutfit(pks).lookType == getItemAttribute(getPlayerSlotItem(cid, 8).uid, "addon3") then go = true out = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "spec3") elseif getCreatureOutfit(pks).lookType == getItemAttribute(getPlayerSlotItem(cid, 8).uid, "addon4") then go = true out = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "spec4") elseif getCreatureOutfit(pks).lookType == getItemAttribute(getPlayerSlotItem(cid, 8).uid, "addon5") then go = true out = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "spec5") elseif getCreatureOutfit(pks).lookType == getItemAttribute(getPlayerSlotItem(cid, 8).uid, "addon6") then go = true out = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "spec6") elseif getCreatureOutfit(pks).lookType == getItemAttribute(getPlayerSlotItem(cid, 8).uid, "addon7") then go = true out = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "spec7") end if out then local item = getPlayerSlotItem(cid, 8) local color1, color2, color3, color4 = getItemAttribute(item.uid, "color1"), getItemAttribute(item.uid, "color2"), getItemAttribute(item.uid, "color3"), getItemAttribute(item.uid, "color4") doSetCreatureOutfit(cid, {lookType = out, lookBody = color1, lookHead = color2, lookLegs = color3, lookFeet = color4}, -1) else --doSetCreatureOutfit(cid, {lookType = pokemon[1], lookHead = color1, lookBody = color2, lookLegs = color3, lookFeet = color4}, -1) doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) end --doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1])) doRemoveCreature(getCreatureSummons(cid)[1]) setPlayerStorageValue(cid, 17000, 1) if getPlayerGroupId(cid) == 8 then setPlayerGroupId(cid, 1) end if getCreatureOutfit(cid).lookType == 667 or getCreatureOutfit(cid).lookType == 999 then markPosEff(cid, getThingPos(cid)) sendMovementEffect(cid, 136, getThingPos(cid)) --edited efeito quando anda com o porygon end return true elseif skill == "ride" then out = false local pokemon = rides[getPokemonName(getCreatureSummons(cid)[1])] doChangeSpeed(cid, -getCreatureSpeed(cid)) local speed = 150 + PlayerSpeed + getSpeed(sid) * 5 * speedRate doChangeSpeed(cid, speed) setPlayerStorageValue(cid, 54844, speed) doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1])) if getCreatureOutfit(pks).lookType == getItemAttribute(getPlayerSlotItem(cid, 8).uid, "addon") then go = true out = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "spec") elseif getCreatureOutfit(pks).lookType == getItemAttribute(getPlayerSlotItem(cid, 8).uid, "addon2") then go = true out = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "spec2") elseif getCreatureOutfit(pks).lookType == getItemAttribute(getPlayerSlotItem(cid, 8).uid, "addon3") then go = true out = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "spec3") elseif getCreatureOutfit(pks).lookType == getItemAttribute(getPlayerSlotItem(cid, 8).uid, "addon4") then go = true out = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "spec4") elseif getCreatureOutfit(pks).lookType == getItemAttribute(getPlayerSlotItem(cid, 8).uid, "addon5") then go = true out = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "spec5") elseif getCreatureOutfit(pks).lookType == getItemAttribute(getPlayerSlotItem(cid, 8).uid, "addon6") then go = true out = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "spec6") elseif getCreatureOutfit(pks).lookType == getItemAttribute(getPlayerSlotItem(cid, 8).uid, "addon7") then go = true out = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "spec7") end if out then local item = getPlayerSlotItem(cid, 8) local color1, color2, color3, color4 = getItemAttribute(item.uid, "color1"), getItemAttribute(item.uid, "color2"), getItemAttribute(item.uid, "color3"), getItemAttribute(item.uid, "color4") doSetCreatureOutfit(cid, {lookType = out, lookBody = color1, lookHead = color2, lookLegs = color3, lookFeet = color4}, -1) else --doSetCreatureOutfit(cid, {lookType = pokemon[1], lookHead = color1, lookBody = color2, lookLegs = color3, lookFeet = color4}, -1) doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) end doRemoveCreature(getCreatureSummons(cid)[1]) setPlayerStorageValue(cid, 17001, 1) if getPlayerGroupId(cid) == 8 then setPlayerGroupId(cid, 1) end return true end if getOwnerPos(sid).x ~= getThingPos(getCreatureMaster(sid)).x or getOwnerPos(sid).y ~= getThingPos(getCreatureMaster(sid)).y or isCreature(getCreatureTarget(getCreatureMaster(sid))) then doRegainSpeed(sid) markPos(sid, {x=1,y=1,z=7}) return true end addEvent(recheck, 120, sid) end  
  17. Upvote
    Refe recebeu reputação de xmaster0 em HIT DO MELEE   
    Possui as sources do servidor ?
    Enfim, se tiver é só você ir em game.cpp e achar a parte que tá assim
    switch(combatType) { case COMBAT_PHYSICALDAMAGE: { Item* splash = NULL; switch(target->getRace()) { aqui dentro vai ter varios switch } Você vai mudar a parte do 
    case COMBAT_PHYSICALDAMAGE: Para essa aqui:
    case COMBAT_PHYSICALDAMAGE: { Item* splash = NULL; switch(target->getRace()) { default: textColor = TEXTCOLOR_RED; magicEffect = MAGIC_EFFECT_HIT_AREA; break; } if(splash) { internalAddItem(NULL, target->getTile(), splash, INDEX_WHEREEVER, FLAG_NOLIMIT); startDecay(splash); } break; }  
  18. Upvote
    Refe recebeu reputação de Taiger em Adicionando mais tiles a visão do jogador!   
    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+
  19. Upvote
    Refe recebeu reputação de mezuf em Aprenda a por o target da PXG no seu servidor!   
    Requisitos:
     
    Primeira modificação:
    No arquivo Creature.cpp, adicione uma inclusão:
    #include <framework/graphics/image.h> No arquivo Creature.cpp encontre o desvio condicional
    if(m_showStaticSquare && animate) { Lá dentro adicione:
    ImagePtr tarf = Image::load("data/images/target.png"); TexturePtr tarfe = TexturePtr(new Texture(tarf, false)); No mesmo desvio condicional troque a linha:
    g_painter->drawBoundingRect(Rect(dest + (animationOffset - getDisplacement() + 2)*scaleFactor, Size(28, 28)*scaleFactor), std::max<int>((int)(2*scaleFactor), 1));  
    Por:
    g_painter->drawTexturedRect(Rect(dest + (animationOffset - getDisplacement() + 2)*scaleFactor, Size(tarfe->getHeight(), tarfe->getWidth())*scaleFactor), tarfe); E logo após adicione:
    g_painter->setColor(Color::white); Agora, você precisa baixar a imagem abaixo e por na pasta data/images com o nome "target.png"

    Caso não consiga ver a imagem, clique aqui.
     
  20. Upvote
    Refe recebeu reputação de BrunooMaciell em Item Editor v0.4.2 + Tradução xTibia.com   
    Hoje eu vim trazer para vocês a última versão do Item Editor.
    Oque há de novo na última versão?
    Oque essa versão suporta?
     
    + Créditos:
      - Mignari Desenvolvimento
     
    + Contribuidores: 
      - Refe Tradução
      -  Daniel (Ícone da aplicação)
     
    Downloads Originais (v 0.4.0.2 sem Tradução:)
    Source
    Binários
     
    Downloads Traduzidos:
    Item Editor - PTBR.zip
    A tradução não está completa, pretendo terminar essa semana.
     
     
    Mini Explicações sobre os Atributos
     
     
     

  21. Upvote
    Refe recebeu reputação de Ayron5 em Adicionando mais tiles a visão do jogador!   
    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+
  22. Upvote
    Refe recebeu reputação de ITALOx em Item Editor v0.4.2 + Tradução xTibia.com   
    Hoje eu vim trazer para vocês a última versão do Item Editor.
    Oque há de novo na última versão?
    Oque essa versão suporta?
     
    + Créditos:
      - Mignari Desenvolvimento
     
    + Contribuidores: 
      - Refe Tradução
      -  Daniel (Ícone da aplicação)
     
    Downloads Originais (v 0.4.0.2 sem Tradução:)
    Source
    Binários
     
    Downloads Traduzidos:
    Item Editor - PTBR.zip
    A tradução não está completa, pretendo terminar essa semana.
     
     
    Mini Explicações sobre os Atributos
     
     
     

  23. Upvote
    Refe recebeu reputação de GniusP em [Encerrado] PISO QUE DA DANO ALEATORIO   
    function onStepIn(cid, item, position, fromPosition) local min = 10 --minino de 10% local max = 80 -- max de 80% local percent = math.random(min, max) local percent = percent/100 if not isPlayer(cid) then return true end local hp = (percent*getCreatureMaxHealth(cid) doSendMagicEffect(getThingPos(cid),6) doSendAnimatedText(getCreaturePosition(cid), "- "..hp, TEXTCOLOR_LIGHTBLUE) doCreatureAddHealth(cid, -hp) return true end
  24. Upvote
    Refe recebeu reputação de NdboHakai em Item Editor v0.4.2 + Tradução xTibia.com   
    Hoje eu vim trazer para vocês a última versão do Item Editor.
    Oque há de novo na última versão?
    Oque essa versão suporta?
     
    + Créditos:
      - Mignari Desenvolvimento
     
    + Contribuidores: 
      - Refe Tradução
      -  Daniel (Ícone da aplicação)
     
    Downloads Originais (v 0.4.0.2 sem Tradução:)
    Source
    Binários
     
    Downloads Traduzidos:
    Item Editor - PTBR.zip
    A tradução não está completa, pretendo terminar essa semana.
     
     
    Mini Explicações sobre os Atributos
     
     
     

  25. Thanks
    Refe recebeu reputação de vinicius231 em Item Editor v0.4.2 + Tradução xTibia.com   
    Hoje eu vim trazer para vocês a última versão do Item Editor.
    Oque há de novo na última versão?
    Oque essa versão suporta?
     
    + Créditos:
      - Mignari Desenvolvimento
     
    + Contribuidores: 
      - Refe Tradução
      -  Daniel (Ícone da aplicação)
     
    Downloads Originais (v 0.4.0.2 sem Tradução:)
    Source
    Binários
     
    Downloads Traduzidos:
    Item Editor - PTBR.zip
    A tradução não está completa, pretendo terminar essa semana.
     
     
    Mini Explicações sobre os Atributos
     
     
     

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...