Demonbholder
Infante-
Total de itens
1551 -
Registro em
-
Última visita
-
Dias Ganhos
24
Tudo que Demonbholder postou
-
que inútil, só gerou mais briga essa joça de tópico
-
talkaction Talkaction De Rank Inovadora!
tópico respondeu ao MatheusGlad de Demonbholder em Actions e Talkactions
Ah sim, então temos o arquivo global.lua Nele adicione: ranks = { ["fist"] = 74666, ["club"] = 74667, ["sword"] = 74668, ["axe"] = 74669, ["distance"] = 74670, ["shielding"] = 74671, ["fishing"] = 74672, ["magic"] = 74673, ["level"] = 74674, ["monsters"] = 74675, ["guilds"] = 74676 } function havePlayerInRank(rank, playername) -- Checa se o player ja esta no rank. local rankstr = getGlobalStorageValue(ranks[rank]) local players = string.explode(rankstr, "; ") for i,x in pairs(players) do local a, b = string.find(x, "%[") if b ~= nil then if x:sub(1, b-1):lower() == playername:lower() then return TRUE end end end end function getPlayerLevelInRank(rank, playername) -- Pega o level de algum player no rank (Importante para novos tipos de rank.) local rankstr = getGlobalStorageValue(ranks[rank]) local players = string.explode(rankstr, "; ") for i,x in pairs(players) do local a, b = string.find(x, "%[") local t = string.match(x, "%[(.+)]") if b ~= nil and x:sub(1, b-1):lower() == playername:lower() then return t end end return 0 end function addRankPlayer(rank, playername, rankvalue) -- Adiciona um player ao rank ou muda o valor dele no rank. if not havePlayerInRank(rank, playername) then setGlobalStorageValue(ranks[rank], getGlobalStorageValue(ranks[rank]) .. (playername .. "[" .. rankvalue .. "]; ")) else local a,b = string.find(getGlobalStorageValue(ranks[rank]), playername) local c,d = string.find(getGlobalStorageValue(ranks[rank]), playername .. "%[%d+]") setGlobalStorageValue(ranks[rank], getGlobalStorageValue(ranks[rank]):sub(1, b+1) .. rankvalue .. "]; " .. getGlobalStorageValue(ranks[rank]):sub(d+2)) end end function tablelen(tab) -- By MatheusMkalo local result = 0 for i,x in pairs(tab) do result = result+1 end return result end function getRank(rank, maxplayers) -- Pega a lista de players com maior level do rank local rankstr = getGlobalStorageValue(ranks[rank]) local playerstatus = string.explode(rankstr, "; ") local tab = {} local rankTab = {} local rankStr = "Highscore for " .. rank .. "\n\n" .. (isInArray({"monsters", "guilds"}, rank) and "Number of Kills" or "Rank Level") .. " - " .. (rank == "guilds" and "Guild Name" or "Player Name") .. "\n" table.remove(playerstatus, #playerstatus) for i,x in pairs(playerstatus) do local a, b = string.find(x, "%[") local t = string.match(x, "%[(.+)]") tab[x:sub(1, b-1)] = tonumber(t) end local lastname = "" local lastvalue = 0 for i = 1, maxplayers do if tablelen(tab) <= 0 then break end for s,x in pairs(tab) do if x > lastvalue then lastvalue = x lastname = s end end table.insert(rankTab, lastvalue .. " - " .. lastname) tab[lastname] = nil lastname = "" lastvalue = 0 end for i,x in ipairs(rankTab) do rankStr = rankStr .. (i .. ". ") .. x .. "\n" end return rankStr end Salve e feche. Agora vá em data/talkaction/script, crie um arquivo .lua e cole isto nele: function onSay(cid, words, param) if ranks[param:lower()] then setGlobalStorageValue(ranks[param:lower()], getGlobalStorageValue(ranks[param:lower()]) == -1 and "" or getGlobalStorageValue(ranks[param:lower()])) doShowTextDialog(cid, 6500, getRank(param:lower(), 10)) else return doPlayerSendCancel(cid, "Esse rank nao existe ou voce nao digitou corretamente.") end return TRUE end Salve, feche e vá em data/talkactions, abra o arquivo talkactions.xml e cole esta tag nele: <talkaction words="!rank;/rank" script="nomeDoArquivo.lua"/> Salve e feche. Agora vamos em creaturescripts, criaremos 2 arquivos .lua. No primeiro cole isto: function onAdvance(cid, skill, oldLevel, newLevel) if skill == 0 then setGlobalStorageValue(74666, getGlobalStorageValue(74666) == -1 and "" or getGlobalStorageValue(74666)) addRankPlayer("fist", getCreatureName(cid), newLevel) elseif skill == 1 then setGlobalStorageValue(74667, getGlobalStorageValue(74667) == -1 and "" or getGlobalStorageValue(74667)) addRankPlayer("club", getCreatureName(cid), newLevel) elseif skill == 2 then setGlobalStorageValue(74668, getGlobalStorageValue(74668) == -1 and "" or getGlobalStorageValue(74668)) addRankPlayer("sword", getCreatureName(cid), newLevel) elseif skill == 3 then setGlobalStorageValue(74669, getGlobalStorageValue(74669) == -1 and "" or getGlobalStorageValue(74669)) addRankPlayer("axe", getCreatureName(cid), newLevel) elseif skill == 4 then setGlobalStorageValue(74670, getGlobalStorageValue(74670) == -1 and "" or getGlobalStorageValue(74670)) addRankPlayer("distance", getCreatureName(cid), newLevel) elseif skill == 5 then setGlobalStorageValue(74671, getGlobalStorageValue(74671) == -1 and "" or getGlobalStorageValue(74671)) addRankPlayer("shielding", getCreatureName(cid), newLevel) elseif skill == 6 then setGlobalStorageValue(74672, getGlobalStorageValue(74672) == -1 and "" or getGlobalStorageValue(74672)) addRankPlayer("fishing", getCreatureName(cid), newLevel) elseif skill == 7 then setGlobalStorageValue(74673, getGlobalStorageValue(74673) == -1 and "" or getGlobalStorageValue(74673)) addRankPlayer("magic", getCreatureName(cid), newLevel) elseif skill == 8 then setGlobalStorageValue(74674, getGlobalStorageValue(74674) == -1 and "" or getGlobalStorageValue(74674)) addRankPlayer("level", getCreatureName(cid), newLevel) end return TRUE end Esta será a tag referente a esse script que você colocará em creaturescripts.xml: <event type="advance" name="RankAdv" event="script" value="nomeDoArquivo.lua"/> O segundo script é esse: function onKill(cid, target) setGlobalStorageValue(74675, getGlobalStorageValue(74675) == -1 and "" or getGlobalStorageValue(74675)) if isMonster(target) then addRankPlayer("monsters", getCreatureName(cid), getPlayerLevelInRank("monsters", getCreatureName(cid))+1) end if isPlayer(target) then if getPlayerGuildId(cid) > 0 then if lastHit then if getPlayerGuildId(target) <= 0 or getPlayerGuildId(target) ~= getPlayerGuildId(cid) then addRankPlayer("guilds", getPlayerGuildName(cid), getPlayerLevelInRank("guilds", getPlayerGuildName(cid))+1) end end end end return TRUE end Esta será a tag referente a esse script que você colocará em creaturescripts.xml: <event type="kill" name="RankKill" script="nomeDoArquivo.lua"/> Agora, por ultimo, vá em data/creaturescripts/script, abra o arquivo login.lua, ache as funções que registram eventos e cole esta entre elas: registerCreatureEvent(cid, "RankAdv") registerCreatureEvent(cid, "RankKill") Testa ai e me diz se funciona. -
Criando Um Fórum Smf Para Seu Ot Server
tópico respondeu ao Meganerd de Demonbholder em Tutoriais de Websites
Ótimo tutorial! Parabéns e obrigado por compartilhar com o XTibia. *Sempre que postar um download, poste o scan deste também. Scan: Smf: MD5: e620f84c633f59fc03eedcbf926c24a4 Link: http://www.virustota...9b57-1304550876 Arquivo limpo. By: BrunoCarvalho (Post Edit) //Aprovado -
@Be Me parece que é sim.
-
talkaction Talkaction De Rank Inovadora!
tópico respondeu ao MatheusGlad de Demonbholder em Actions e Talkactions
Bom, pelo jeito seu ot é antigo, ou algo do gênero, vamos adicionar "manualmente" então. Seu otserver tem as pastas lib e creaturescripts? -
talkaction Talkaction De Rank Inovadora!
tópico respondeu ao MatheusGlad de Demonbholder em Actions e Talkactions
Esta na mesma pasta onde fica a pasta data, o distro e as dlls do seu ot. -
@DrakyLucas Não falte o respeito com os demais membros, é completamente compreensível que ele não tenha encontrado o seu script, portanto não há motivos para xingamento. Peço que edite seu post, e ainda sim receberá meu rep- por algo desnecessário. Creio que não é necessário tomar outra providencias, caso você não edite seu post ficará complicado. Espero que você edite seu post antes que o próprio membro te reporte, por enquanto só estou dando um aviso não-oficial.
-
Bom, o pedido foi resolvido por mensagem privada, a seguinte função foi feita por mim: function doPlayerGiveItemContainer(cid, containerid, itemid, amount) amc = amount if isItemStackable(itemid) == FALSE then local amm = amount <= 20 and 1 or math.ceil(amount/20) for i = 1, amm do local container = doPlayerAddItem(cid, containerid) for x = 1, amc do doAddContainerItem(container, itemid, 1) amc = x == amc and amc - 20 or amc end end else local amm = amount <= 20*100 and 1 or math.ceil(amount/(20*100)) for i = 1, amm do local container = doPlayerAddItem(cid, containerid, 1) local am = amc > 20*100 and 20*100 or amc doAddContainerItem(container, itemid, am) amc = amc - am end end end Como usar: doPlayerGiveItemContainer(cid, containerid, itemid, amount) Azul: Id da backpack Vermelho: Id do item a ser adicionado na backpack Verde: Quantidade do item a ser adicionado na backpack Vou pedir para que movam o tópico.
-
[Globalevents] Ajuda Com Script De Efeitos
tópico respondeu ao LookAssassin de Demonbholder em Lixeira Pública
Tem que ter um end pra cada for. Os loopings for e while precisam de um end para cada um usado. Fica tranquilo, só cuida na próxima vez pra postar na seção certa. -
Atualize o tópico: Scan: MD5: 98f63e22b635a4932aa20286e4d516b4 Link: http://www.virustotal.com/file-scan/report.html?id=d1f76e79930c0c0d8c4774e1b17b464f9d033ff223a4c34aa5b96b3406e1ef03-1304469444 Arquivo limpo. Sempre que postar um download, poste o scan dele também.
-
[Globalevents] Ajuda Com Script De Efeitos
tópico respondeu ao LookAssassin de Demonbholder em Lixeira Pública
Eu acho que poderia poupar seu trabalho usar o for para as posições, exemplo: for posx = 90, 130 do for posy = 40, 70 do for posz = 7, 8 do local pos = {x=posx, y=posy, z=posz} ... end end end Ai você manipula o for como desejar, acho que assim fica mais fácil do que colocar posição por posição. Cuidado ao postar, a seção correta seria Dúvidas de Scripts. -
Bom tutorial, a mim não será útil, mas tenho certeza que ajudará outros. Parabéns, e obrigado por compartilhar com o XTibia. Rep+ e requisitarei a aprovação deste.
-
usa assim: doAddContainerItem(getPlayerSlotItem(cid, 5).uid, ID, QUANT) -- mão direita doAddContainerItem(getPlayerSlotItem(cid, 6).uid, ID, QUANT) -- mão esquerda até
-
Me parece que tu ta usando errado o comando, eu olhei a parte de talk do mod lá e esse erro aparece somente se você esquece o parâmetro. Você deve usar assim: /war-invite nomeDaGuild Exemplo, se o nome da guild for xtibia, você usa assim: /war-invite xtibia Testa ai.
-
Interessante, qual semi-dedicado você me aconselha e como eu entro em contato para colocar um otserver lá?
-
Ok, reportado para mover. Não esqueça do título na próxima vez.
-
No título do seu tópico coloque uma breve introdução ao seu pedido. local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid -- Conversa Jogador/NPC if(msgcontains(msg, 'negociar')) then selfSay('Eu posso lhe oferecer a passagem para a proxima fase dessa quest, mais para isto eu quero os 5 itens que esses monstros guardam, caso tenha coletado os itens diga, {expecto patrono}.', cid) elseif(msgcontains(msg, 'expecto patrono')) then selfSay('Você coletou os 5 itens necessarios para a proxima fase?', cid) talkState[talkUser] = 13 -- Confirmação da Compra elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 13) then if doPlayerRemoveItem(cid,5468,4) == TRUE then doPlayerAddItem(cid, 7632,1) setPlayerStorageValue(cid,5644, 1) doSendMagicEffect(getCreaturePosition(cid), 29) selfSay('Obrigado, foi um prazer barganhar com você.', cid) talkState[talkUser] = 0 else selfSay('Você está tentando me enganar? Isso pode lhe custar caro!', cid) talkState[talkUser] = 0 end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
-
[Talk] Comprar Premium Por Dias
tópico respondeu ao Renato Ribeiro de Demonbholder em Actions e Talkactions
É, aqui olha: ... elseif (prm > maxdays) then return doPlayerSendCancel(cid, "Você não pode comprar mais que "..maxdays.." dias de premium de uma só vez.") else ... if getPlayerPremiumDays(cid)+prm > maxdays then return doPlayerSendCancel(cid, "Você só pode ter maxdays dias de premium, no entanto você só poderá comprar no máximo "..maxdays-getPlayerPremiumDays(cid).." dias.") Poderiam ser substituídas por if getPlayerPremiumDays(cid)+prm > maxdays then return doPlayerSendCancel(cid, "Você só pode ter maxdays dias de premium, no entanto você só poderá comprar no máximo "..maxdays-getPlayerPremiumDays(cid).." dias.") Mas deixa assim, não faz diferença. -
[Talk] Comprar Premium Por Dias
tópico respondeu ao Renato Ribeiro de Demonbholder em Actions e Talkactions
Bom script, embora tenha uma comparação inútil no inicio rsrs. Continue fazendo alguns scripts. -
Eu falei que se pode fazer, mas eu não faço a mínima idéia de como poderia ser feita a fórmula da experiência. Vamos ver se alguém lhe ajuda.
-
Double topic de http://www.xtibia.com/forum/topic/155833-itens-de-npc/ Tópico fechado.
-
Criou três tópicos com o mesmo pedido, vou fechar este e outro e deixar apenas este aberto: http://www.xtibia.com/forum/topic/155793-a-j-u-d-a/
-
Teria que fazer uma fórmula para experiência. Você percebeu que criou três tópicos pedindo a mesma coisa? Eu vou fechar os outros dois e deixar este aberto, pois este é o mais recente. Favor mudar o nome do tópico para um breve resumo do seu pedido.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.