Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 06/14/18 em todas áreas
-
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
-
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
-
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
-
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
-
[Resolvido] [AJUDA]Respaw npc por tile
Stigal reagiu a Meguminyan por uma questão
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 = X1 ponto -
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
-
[Resolvido] [PEDIDO] ITEM X TRANSFERE PREMIUM POINTS
Stigal reagiu a Marshmello por uma questão
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 -
[Resolvido] ITEM APOS USA-LO DA DEBUG
Stigal reagiu a Marshmello por uma questão
@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 end1 ponto -
[Resolvido] [DÚVIDA]Como usar o for nessa situação ?
Stigal reagiu a PostadorHunter por uma questão
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 -
[Resolvido] Item que faz aprender magia
Stigal reagiu a Meguminyan por uma questão
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 -
[Resolvido] Erro urgente eventos
Stigal reagiu a Marshmello por uma questão
@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 dar1 ponto -
1 ponto
