Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 06/14/18 em todas áreas

  1. PoRaI

    Name Displacement

    Como tinha dito em outro tópico, estou aqui postando, até pq eu acabei que fiz pra usar em um servidor meu também, rs. De qualquer forma, esse é um código para reposicionar o nome quando uma criatura está com X outfit de forma fácil pelo arquivo OTML. É necessário editar as sources do otclient e compila-lo. No arquivo thingtype.cpp, adicione abaixo de: if(node2->tag() == "opacity") m_opacity = node2->value<float>(); isso: else if(node2->tag() == "name-displacement") m_name_displacement = node2->value<Point>(); No arquivo thingtype.h, adicione acima de: float getOpacity() { return m_opacity; } adicione isso: Point getNameDisplacement() { return m_name_displacement; } acima de: float m_opacity; adicione isso: Point m_name_displacement; No arquivo creatures.cpp, troque isso: // calculate main rects Rect backgroundRect = Rect(point.x-(13.5), point.y, 27, 4); backgroundRect.bind(parentRect); Size nameSize = m_nameCache.getTextSize(); Rect textRect = Rect(point.x - nameSize.width() / 2.0, point.y-12, nameSize); textRect.bind(parentRect); por isso: // calculate main rects const ThingTypePtr& thingType = getThingType(); Rect backgroundRect = Rect(point.x - (13.5) + thingType->getNameDisplacement().x, point.y + thingType->getNameDisplacement().y, 27, 4); backgroundRect.bind(parentRect); Size nameSize = m_nameCache.getTextSize(); Rect textRect = Rect(point.x - (nameSize.width() / 2.0) + thingType->getNameDisplacement().x, point.y - 12 + thingType->getNameDisplacement().y, nameSize); textRect.bind(parentRect); Pronto. Para configurar, basta editar o arquivo .otml do seu otclient, exemplo: creatures 10 name-displacement: 2 -12 11 name-displacement: 5 10 12 name-displacement: -4 3 No caso, alterei a outfit 10 para um displacement no eixo X + 2 e no eixo Y - 12, a outfit 11 para um displacement no eixo X + 5 e no eixo Y + 10 e a outfit 12 para um displacement no eixo X - 4 e no eixo Y + 3. O código foi testado e está funcionando perfeitamente.
    1 ponto
  2. Bruno

    [TFS 1.x] Dodge System

    Introdução Este script consiste em defender uma porcentagem dos ataques recebidos de acordo com o dodge level. Exemplo: Suponhamos que o player tenha Dodge Skill 100 e a porcentagem de defesa esteja configurado para defender 50%, o player terá 30% de chance de defender 50% dos ataques recebidos. Instalação O conteúdo da lib serve para o Dodge e Critical System, se você já fez este procedimento no outro script simplesmente ignore e vá para o próximo passo. Em data/lib/core/core.lua adicione o seguinte conteúdo em qualquer parte: dofile('data/lib/core/dclib.lua')Ainda em data/lib/core/core crie um arquivo chamado dclib.lua com o seguinte conteúdo: Agora em data/actions/actions.xml adicione a seguinte tag: <action itemid="18413" script="other/dodge.lua"/>Depois em data/actions/scripts/other crie um arquivo chamado dodge.lua com o seguinte conteúdo: Pronto, já configuramos o item para atribuir o Dodge Skill, vamos configurar a parte dos ataques recebidos. Vá em data/creaturescripts/creaturescripts.xml e adicione a seguinte tag: <event type="healthchange" name="DodgeSystem" script="dodgeSystem.lua"/>Agora em data/creaturescripts/scripts crie um arquivo chamado dodgeSystem.lua com o seguinte conteúdo: Ainda em data/creaturescripts/scripts abra o arquivo login.lua e Antes de: return trueAdicione: player:registerEvent("DodgeSystem") -- Dodge System if player:getDodgeLevel() == -1 then player:setDodgeLevel(0) endO sistema está finalizado, agora vamos criar as talkactions para que os players acompanhem seu skill. Em data/talkactions/talkactions.xml adicione a tag: <talkaction words="!dodge" script="dodge.lua"/>E para finalizar, em data/talkactions/scripts crie um arquivo chamado dodge.lua com o seguinte conteúdo: Bom é isso ai! Créditos:
    1 ponto
  3. Bruno

    [TFS 1.x] Critical System

    Introdução Este script consiste em aumentar uma porcentagem dos ataques de acordo com o critical level. Exemplo: Suponhamos que o player tenha Critical Skill 100 e a porcentagem de ataque esteja configurado para aumentar 50%, o player terá 30% de chance de au 50% dos ataques. Instalação O conteúdo da lib serve para o Critical e Dodge System, se você já fez este procedimento no outro script simplesmente ignore e vá para o próximo passo. Em data/lib/core/core.lua adicione o seguinte conteúdo em qualquer parte: dofile('data/lib/core/dclib.lua')Ainda em data/lib/core/core crie um arquivo chamado dclib.lua com o seguinte conteúdo: Agora em data/actions/actions.xml adicione a seguinte tag: <action itemid="18415" script="other/critical.lua"/>Depois em data/actions/scripts/other crie um arquivo chamado critical.lua com o seguinte conteúdo: Pronto, já configuramos o item para atribuir o Critical Skill, vamos configurar a parte dos ataques. Vá em data/creaturescripts/creaturescripts.xml e adicione a seguinte tag: <event type="healthchange" name="CriticalSystem" script="criticalSystem.lua"/>Agora em data/creaturescripts/scripts crie um arquivo chamado criticalSystem.lua com o seguinte conteúdo: Ainda em data/creaturescripts/scripts abra o arquivo login.lua e Antes de: return trueAdicione: player:registerEvent("CriticalSystem") -- Critical System if player:getCriticalLevel() == -1 then player:setCriticalLevel(0) endO sistema está finalizado, agora vamos criar as talkactions para que os players acompanhem seu skill. Em data/talkactions/talkactions.xml adicione a tag: <talkaction words="!critical" script="critical.lua"/>E para finalizar, em data/talkactions/scripts crie um arquivo chamado critical.lua com o seguinte conteúdo: Bom é isso ai! Créditos:
    1 ponto
  4. Status: OFF ON Histórico de Lives: 13/06/2018 - Tema Desértico | Início: 15:30, Término: 18:00 14/06/2018 - Tema Desértico Undead | Início: 14:00, Término: 19:00
    1 ponto
  5. nociam

    [Resolvido] ajuda spell

    altere as posições ja tento fazer algo: pos.x = pos.x-1 pos.y = pos.y-1 y = - vai pra cima y = + vai pra baixo x = - vai pra <<<< x = + vai pra >>>>
    1 ponto
  6. olha, enquanto você não acha o script ideal você pode usar este aqui Em movements xml adicione essa tag <movevent type="StepIn" actionid="19384" event="script" value="npcrandom.lua"/> agora em creature events > scripts copie um .lua e renomeie para npcrandom.lua, apague tudo que tem dentro e cole isto function onStepIn(cid, item, position, fromPosition) local positio = {x=1034, y=1039, z=7} local positio2 = {x=1036, y=1039, z=7} local positio3 = {x=1038, y=1039, z=7} local positio4 = {x=1040, y=1039, z=7} local positio5 = {x=1034, y=1039, z=7} local positio6 = {x=1036, y=1039, z=7} local positio7 = {x=1038, y=1039, z=7} local positio8 = {x=1040, y=1039, z=7} local positio9 = {x=1034, y=1039, z=7} local positio10 = {x=1036, y=1039, z=7} local chance = math.random(1,10) if chance == 1 then doTeleportThing(cid, positio) elseif chance == 2 then doTeleportThing(cid, positio2) elseif chance == 3 then doTeleportThing(cid, positio3) elseif chance == 4 then doTeleportThing(cid, positio4) elseif chance == 5 then doTeleportThing(cid, positio5) elseif chance == 6 then doTeleportThing(cid, positio6) elseif chance == 7 then doTeleportThing(cid, positio7) elseif chance == 8 then doTeleportThing(cid, positio8) elseif chance == 9 then doTeleportThing(cid, positio9) elseif chance == 10 then doTeleportThing(cid, positio10) end return true end Agora crie um teleport em 1 lugar onde os players não tem acesso com o adction id 19384 no seu mapa e faça o npc desejado spawnar em cima dele (lembre de não deixar espaço aberto ao lado do teleport se não o npc ira spawnar no espaço do lado do teleport então ao iniciar o server o npc sera jogado em 1 dessas 10 localizações editaveis. para adicionar mais lugares é só ir adicionando os positiosX, mudar a quantidade de lugars no Math.random e adicionar mais elseif chance = X
    1 ponto
  7. Tenta comentar essa linha: addEvent(doSetRandomGender, 5, cid) Ficando assim: --addEvent(doSetRandomGender, 5, cid) E vê se o erro some ou não, para saber se é essa função que está causando o erro.
    1 ponto
  8. actions/script local pontos = 1 function onUse(cid, item, frompos, topos) doPlayerSendTextMessage(cid, 22,"voce ganhou "..pontos.." de pontos ") doRemoveItem(item.uid,1) doPlayerAddVipPoints(cid,pontos) return true end Depois vai em function.lua (lib) function getPlayerVipPoints(cid) local Info = db.getResult("SELECT premium_points FROM accounts WHERE id = " .. getPlayerAccountId(cid) .. "") if Info:getID() ~= LUA_ERROR then local Points= Info:getDataInt("premium_points") Info:free() return Points end return LUA_ERROR end function doPlayerAddVipPoints(cid, points) local dif = getPlayerVipPoints(cid) + points if dif >= 0 then db.executeQuery("UPDATE accounts SET premium_points = premium_points + " .. points .. " WHERE id = " .. getPlayerAccountId(cid) .. ";") return TRUE end return FALSE end function doPlayerRemoveVipPoints(cid, points) local dif = getPlayerVipPoints(cid) - points if dif >= 0 then db.executeQuery("UPDATE accounts SET premium_points = premium_points - " .. points .. " WHERE id = " .. getPlayerAccountId(cid) .. ";") return TRUE end return FALSE end AJUDEI REP+
    1 ponto
  9. @Emanueldk local config = { voca = 376, --- numero da vocação out = 376, --- Id da outfit } function onUse(cid,item, frompos) doPlayerSetVocation(cid,config.voca) doCreatureChangeOutfit(cid,{lookType = config.out}) doRemoveItem(item.uid,1) doPlayerSendTextMessage(cid,22, "parabens voce trocou sua vocation") return true end
    1 ponto
  10. na tabela ta positionToCheck e no for tu colocou areasToCheck tu errou ali na hora de colocar o valor na função em local monster o valor de fromx seria _.fromx(se botar como parametro só _ tbm funciona)
    1 ponto
  11. Tenta esse em actions/scripts crie um .lua chamando Scroll Magia ( exemplo: scroll exura) function onUse(cid, item) local magia = "nome da magia" if getPlayerLearnedInstantSpell(cid, magia) then doPlayerSendTextMessage(cid,25,"Você já aprendeu a magia deste scroll") elseif doPlayerLearnInstantSpell(cid, magia) then local pos = getCreaturePosition(cid) doSendMagicEffect(pos, 12) -- efeito magico ao usar o scroll doRemoveItem(item.uid, 1) -- vai consumir o scroll, remova isso se vc n quer que o scroll suma doPlayerSendTextMessage(cid,19,"Você aprendeu a magia "..magia..".") end end agora em actions.xml você adiciona a tag e bote o id do item que ao você usar ganhara o spell <action itemid="ID DO ITEM" script="scroll magia.lua"/>
    1 ponto
  12. @DavyziinC function onTime() function isInWallArray(pos) for k = 0, table.getn(SBW_WALLSID) do if (getTileItemById(pos, SBW_WALLSID[k]).itemid == SBW_WALLSID[k]) then return true end end return false end function endsnowball() local score = {} if not SBW_USEWAIT then doRemoveItem(getTileItemById(SBW_TP, 1387).uid) end for _, pid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(pid, SBW_INEVENT) > 0 then table.insert(score, {getCreatureName(pid), getPlayerStorageValue(pid, SBW_SCORE)}) doPlayerSetStorageValue(pid, SBW_INEVENT, 0) doPlayerSetStorageValue(pid, SBW_SCORE, 0) doPlayerSetStorageValue(pid, SBW_AMMO, 0) doTeleportThing(pid, SBW_TPEND) end end table.sort(score, function(a, b) return a[2] > b[2] end) local random_item = SBW_REWARDS[math.random(1, #SBW_REWARDS)] local hora = os.date("%X") local data = os.date("%x") if table.getn(score) > 0 then if SBW_ADDREWARD then for _, pid in ipairs(getPlayersOnline()) do if getCreatureName(pid) == score[1][1] then doPlayerAddItem(pid, random_item, 1) break end end end db.query("INSERT INTO `snowballwar` VALUES ('', ".. db.escapeString(score[1][1]) .. ",".. score[1][2] ..", ".. db.escapeString(data) ..", ".. db.escapeString(hora) ..");") db.query("UPDATE `players` SET `sbw_points`=`sbw_points`+".. score[1][2] .." WHERE `name` = " .. db.escapeString(score[1][1]) .. ";") doBroadcastMessage("[SNOWBALL WAR] Foi encerrado, parabens ao jogador "..score[1][1].." que venceu o SnowBall com "..score[1][2].." pontos.") end return true end local t_l = SBW_AREA[1] local b_r = SBW_AREA[2] function moveToEvent() for _, pid in ipairs(getPlayersOnline()) do if isInRange(getCreaturePosition(pid), SBW_WAITROOM[1], SBW_WAITROOM[2]) then local posti = {} local isPossibleToTeleportPlayer = false while (isPossibleToTeleportPlayer == FALSE) do posti = Position(math.random(t_l.x,b_r.x), math.random(t_l.y, b_r.y), 7) if (isInWallArray(posti) == FALSE) then isPossibleToTeleportPlayer = TRUE end end doTeleportThing(pid, posti) doPlayerSetStorageValue(pid, SBW_INEVENT, 1) doPlayerSetStorageValue(pid, SBW_AMMO, SBW_MINAMMO) doPlayerSetStorageValue(pid, SBW_SCORE, 0) doPlayerSendTextMessage(pid, 27, "[SNOWBALL WAR] Seja bem vindo, aqui estao os comandos que voce vai usar durante o evento\n!snowball atirar --Atirar uma bola de neve.\n!snowball info --Isso mostra seus pontos de jogos e a quantia de bolas de neve que voce tem. Tambem mostra o ranking de pontos do evento.\n Recarregue suas bolas de neve clicando em frente ao gerador no centro do campo.\nAltamente recomendado adicionar estes comandos a sua hotkeys.") end end doRemoveItem(getTileItemById(SBW_TP, 1387).uid) addEvent(endsnowball, SBW_DURATION*1000*60) doBroadcastMessage(SBW_MSGSTART) end local time = os.date("*t") local timeopen1 = math.ceil(SBW_TIMEWAIT / 4) local timeopen2 = math.ceil(SBW_TIMEWAIT / 2) if (SBW_STARTAUTO) and (isInArray(SBW_DAYS,time.wday)) then doBroadcastMessage(SBW_MSGWARNING) if SBW_USEWAIT then addEvent(doBroadcastMessage, timeopen1*1000*60, "[SNOWBALL WAR] - Resta(m) ".. timeopen2 .." minuto(s) para iniciar o evento!") if (timeopen2 ~= timeopen1) then addEvent(doBroadcastMessage, timeopen2*1000*60, "[SNOWBALL WAR] - Resta(m) ".. timeopen1 .." minuto(s) para iniciar o evento!") end addEvent(moveToEvent, SBW_TIMEWAIT*1000*60) doCreateTeleport(1387, SBW_TPGO, SBW_TP) else if SBW_TFS == "0.3" then doItemSetAttribute(doCreateItem(1387, SBW_TP), "aid", 2880) else doSetItemActionId(doCreateItem(1387, SBW_TP), 2880) end if(SBW_DURATION > 0) then addEvent(endsnowball, SBW_DURATION*1000*60) end end end return true end function onThink(interval, lastExecution) local texts = {["GERADOR"] = {SBW_GERADOR, 55, TEXTCOLOR_ORANGE}} for text, param in pairs(texts) do doSendAnimatedText(param[1], text, param[3],getPlayerPosition(cid),math.random(1,255)) doSendMagicEffect(param[1], param[2]) end return TRUE end Dar uma testada ae e ver oque dar
    1 ponto
  13. Pokeultion

    [Resolvido] Daily Teleport

    Vê se funciona assim:
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...