Histórico de Curtidas
-
Steeven deu reputação a Kimoszin em Criminal SystemBom pessoal, mais um script para vocês.
- Qual o motivo desse nome?
Não sei, estou meio sem ideias.
- Oque tem nesse sistema?
Bom, ele da o direito dos players do seu OTServer, serem ladrôes ou policiais,
Tambem tem uma cadeia, para aonde os criminosos vão para.
- Nossa, para oque ele serve?
Para seu servidor ficar com mais diversão,
Creio que ele seja meio inutil.
Vamos começar. !
Crie um arquivo .lua chamado Policial em \data\actions\scripts
function onUse(cid, item, fromPosition, itemEx, toPosition) local config = { minreward = 500, -- Minimo que o policial ira ganhar. maxreward = 2000, -- Maximo que o policial ira ganhar storage = 5569, -- Uma storage qualquer color = math.random(1, 255), prisonPos = {x=1014, y=1034, z=7}, -- Para aonde sera teleportado o ladrão. storagePreso = 5570, -- Uma storage qualquer time = 60, -- Tempo que o ladrão vai ficar preso } local player = getSpectators(getCreaturePosition(cid), 7, 5) local money = math.random(config.minreward, config.maxreward) if player and #player > 0 then for t, pid in pairs(player) do if isPlayer(pid) and pid ~= cid then if getPlayerStorageValue(pid, config.storage) == 1 then setPlayerStorageValue(pid, storagePreso, os.time()+config.time) doTeleportThing(pid, config.prisonPos) doPlayerAddMoney(cid, money) doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, "Você acaba de ser preso, por cometer delitos.") doSendAnimatedText(getCreaturePosition(cid), "+"..money.."", config.color) else doPlayerSendCancel(cid, "Esse player nao cometeu delitos.") end end end end return TRUE end Crie um arquivo .lua chamado Ladrao em \data\actions\scripts function onUse(cid, item, itemEx) local config = { minMoneyRemove = 30, -- Minimo que o ladrão ira ganhar maxMoneyRemove = 1400, -- Maximo que o ladrão ira ganhar storage = 5569, -- Uma storage qualquer color = math.random(1, 255), } local player = getSpectators(getCreaturePosition(cid), 7, 5) local money = math.random(config.minMoneyRemove, config.maxMoneyRemove) if player and #player > 0 then for t, pid in pairs(player) do if isPlayer(pid) and pid ~= cid then if doPlayerRemoveMoney(pid, money) then setPlayerStorageValue(cid, config.storage, 1) doPlayerAddMoney(cid, money) doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, "Você acaba de ser roubado e perdeu "..money.." gps.") doSendAnimatedText(getCreaturePosition(cid), "+"..money.."", config.color) else doPlayerSendCancel(cid, "O player nao possui "..money.." gps.") end end end end return TRUE end Crie um arquivo .lua chamado Cadeia em \data\actions\scripts function onUse(cid,item) local config = { storagePreso = 5570, -- Uma storage qualquer toPos = {x=1016, y=1022, z=7}, -- Para aonde o player irá quando o tempo acabar } timePreso = getPlayerStorageValue(cid, config.storage) - os.time() if getPlayerStorageValue(cid, config.storagePreso) == -1 then doPlayerSendCancel(cid, "Você nao está preso.") else if timePreso <= 0 then setPlayerStorageValue(cid, config.storagePreso, -1) doTeleportThing(cid, config.toPos) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Espero que você pense bem agora, antes de cometer algum delito") else doPlayerSendCancel(cid, "Você ainda tem que esperar "..timePreso.." segundos, para ser solto.") end return TRUE end end Agora adicione os seguinte codigos em \data\actions\actions.xml <action actionid="1256" event="script" value="Cadeia.lua"/> <action itemid="2556" event="script" value="Policial.lua"/> <action itemid="10153" event="script" value="Ladrao.lua"/>
Adicione a ACTION ID na porta da cadeia, Depois edite os nomes dos items.
Para editar basta ir em \data\items\items.xml use a imaginação.
Até mais.
-
Steeven recebeu reputação de Mathias Kenfi em (Resolvido)[Resolvido] NPC que Troca Itens por QuantidadeSim, os dois caminhos estão corretos, é que eu quero que o Player dê as barras em troca de moedas, cada barra por 5 moedas. Então troquei os ids do item que o player dá pelo o ID das barras e ele recebe as moedas. Isso.
-
Steeven deu reputação a Mathias Kenfi em (Resolvido)[Resolvido] NPC que Troca Itens por QuantidadeNão entendi a modificação, afinal o NPC vai dar a quantidade de barras que o player pedir a troco de x moedas, sendo:
x = Quantidade desejada
y = Preço da barra (especificado na tabela)
Então ele vai ter que ter x*y de moedas para receber x barras. Como você colocou msgcount[talkUser]*5, ele vai receber x*5, ou seja, a quantidade especificada multiplicado por 5
Se você quer que ele recebe 5 moedas de volta, é só colocar embaixo
doPlayerAddItem(cid, x.id, 5)
-
Steeven deu reputação a Mathias Kenfi em (Resolvido)[Resolvido] NPC que Troca Itens por QuantidadeCrie um arquivo chamado golden.lua em data/npc/scripts e dentro coloque:
Agora crie um arquivo chamado golden.xml em data/npc e dentro coloque:
-
Steeven recebeu reputação de Vodkart em (Resolvido)Como usar getItemIdByName?@Vodkart Eu acho que devia ter te avisado, que estou usando um "The OTX Server Version: (2.52 - 1557) - Codename: (Necron)".
Quando usei o teu código, o servidor fechou sozinho, mas antes apareceu o erro no console: lua:341: attempt to call a string value.
É justamente a linha em questão:
return doPlayerSendTextMessage(cid,22,"O item gerado foi: "..getItemNameById(r))
Em fim, usei do jeito que você mandou e deu o mesmo erro
OBRIGADO CARA, FUNCIONOU, EU AO INVÉS DE USAR NO RETURN, USEI COMO UM COMANDO SIMPLES E DEU CERTO SEM ERROS AGORA.
OBRIGADO DE CORAÇÃO! VOCÊ FAZ PARTE DO MEU DREAM TEAM QUE SE DEUS QUISER AINDA VOU MONTAR! ABRAÇOS! ABAIXO SEGUE COMO RESOLVI:
local items = {
2365, -- backpack of holding
10518, -- demon backpack
10016, -- batwing hat
2152 -- platinum coin
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
local r = items[math.random(#items)]
doPlayerSendTextMessage(cid,22,"O item gerado foi: "..getItemNameById(r))
return true
end
-
Steeven recebeu reputação de Willyw em (Resolvido)Como usar getItemIdByName?@Vodkart Eu acho que devia ter te avisado, que estou usando um "The OTX Server Version: (2.52 - 1557) - Codename: (Necron)".
Quando usei o teu código, o servidor fechou sozinho, mas antes apareceu o erro no console: lua:341: attempt to call a string value.
É justamente a linha em questão:
return doPlayerSendTextMessage(cid,22,"O item gerado foi: "..getItemNameById(r))
Em fim, usei do jeito que você mandou e deu o mesmo erro
OBRIGADO CARA, FUNCIONOU, EU AO INVÉS DE USAR NO RETURN, USEI COMO UM COMANDO SIMPLES E DEU CERTO SEM ERROS AGORA.
OBRIGADO DE CORAÇÃO! VOCÊ FAZ PARTE DO MEU DREAM TEAM QUE SE DEUS QUISER AINDA VOU MONTAR! ABRAÇOS! ABAIXO SEGUE COMO RESOLVI:
local items = {
2365, -- backpack of holding
10518, -- demon backpack
10016, -- batwing hat
2152 -- platinum coin
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
local r = items[math.random(#items)]
doPlayerSendTextMessage(cid,22,"O item gerado foi: "..getItemNameById(r))
return true
end
-
Steeven deu reputação a Vodkart em (Resolvido)Como usar getItemIdByName?local items = { 2365, -- backpack of holding 10518, -- demon backpack 10016, -- batwing hat 2152 -- platinum coin } function onUse(cid, item, fromPosition, itemEx, toPosition) local r = items[math.random(#items)] return doPlayerSendTextMessage(cid,22,"O item gerado foi: "..getItemNameById(r)) end
-
Steeven deu reputação a penisagudo em (Resolvido)[URGENTE] SHOP System In Game@Usuaruio
Vamos la entao faz assim.
Em actions.xml você coloca: Sendo que no X você coloca o valor do Unique que desejar e não esqueça de colocar o nome do seu script desejado.
<action uniqueid="6063-6065" event="script" value="nomedoarquivo.lua"/>
Após isso crie um arquivo com mesmo nome e coloque isso dentro:
local chests = { [6063] = {itemNecessario = x, amountNecessario = 1 , itemRecebido = 2184, amount = 1}, [6064] = {itemNecessario = x, amountNecessario = 1 , itemRecebido = 6528, amount = 1}, [6065] = {itemNecessario = x, amountNecessario = 1 , itemRecebido = 5803, amount = 1} } -- Como editar: --Entre []: significa o unique ID do báu que voce colocara no mapa --itemNecessario: É o item necessario para voce trocar (sua Moeda de troca) --itemRecebido: É o ID do item que será dado ao jogador que abrir o báu --amount: É a quantidade de items que o player vai receber } function onUse(cid,item,fromPosition,itemEx,toPosition) local v = chests[itemRecebido.uid] if getPlayerItemCount(cid, v.itemNecessario) ~= v.amountNecessario then return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Voce não tem a quantidade necessaria para troca.") elseif getPlayerFreeCap(cid) < (getItemWeightById(v.itemRecebido)*v.amount) then return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Voce nao tem " .. (getItemWeightById(v.itemRecebido)*v.amount) .. " cap para trocar o item") end if getPlayerItemCount(cid, v.itemNecessario) == v.amountNecessario then doPlayerAddItem(cid, v.itemRecebido, v.amount) else for i = 1, v.amount do doPlayerAddItem(cid, v.itemRecebido, v.amount) end end return doPlayerSendTextMessage(cid,22,"Voce recebeu: " .. getItemNameById(v.itemRecebido) .. ".") end
Deixei tudo explicado no script caso ainda tenha duvidas você so precisara mexer nessa parte:
[6065] = {itemNecessario = x, amountNecessario = 1 , itemRecebido = 5803, amount = 1} -- Como editar:
--Entre []: significa o unique ID do báu que voce colocara no mapa
--itemNecessario: É o item necessario para voce trocar (sua Moeda de troca)
--itemRecebido: É o ID do item que será dado ao jogador que abrir o báu
--amount: É a quantidade de items que o player vai receber
Você pode colocar quantos baús quiser em apenas 1 script lembrando sempre de editar os numeros das uniquesIds no actions.xml conforme a seguir colocando sempre o menor - maior numero da Unique.
<action uniqueid="6063-6065" event="script" value="nomedoarquivo.lua"/> Não se esqueça de colocar as uniques nos baús no Mapa editor.
Qualquer duvida ou erro me reporte.
-
Steeven deu reputação a Bruno Minervino em Compilando TFS 1.3 com vídeo-aulaCompilando TFS 1.3 no Windows
1. Baixe os softwares requeridos
Para compilar o The Forgotten Server no Windows, você vai precisar:
Visual Studio 2015 (Compilador)
TFS SDK v3.2 (libs)
Libs do Boost C++ (32-bits, 64-bits)
2. Instale os softwares requeridos
Após ter baixado os softwares listados na etapa acima, comece instalando o Visual Studio e Boost C++. Extraia o TFS SDK v3.2 em qualquer pasta do seu computador e execute o arquivo "register_tfssdk_env.bat" para setar a variável de ambiente do local onde está o TFS SDK, assim nosso compilador irá encontrar as libs quando começar a compilar. Mova o arquivo "register_boost_env.bat" da pasta do TFS SDK para a pasta onde você instalou as libs do Boost C++ e execute-o (se você seguiu os passos do instalador, está esta na pasta chamada boost_1_62_0).
3. Baixe as sources
Se você possuir o Git Client instalado, você poderá clonar a última cópia com este comando:
> git clone https://github.com/otland/forgottenserver.git
Se você não possuir o Git Client instalado, você poderá baixar a última cópia do The Forgotten Server através do link: https://github.com/otland/forgottenserver/archive/master.zip
4. Compilando
Procure o diretório vc14 na pasta do The Forgotten Server que você baixou, e abra o arquivo "theforgottenserver.sln". Isso deverá iniciar o Visual Studio 2015 e você estará pronto para continuar.
Para configurar a compilação, navegue para Build -> Configuration Manager no menu superior. Um popup deverá aparecer onde você poderá escolher entre "Release" ou "Debug" para compilar, escolha também para qual Plataforma você irá compilar: 32-bits (Win32) ou 64-bits (x64).
Para iniciar a compilação, abra o menu Build novamente e clique em Build Solution (Ctrl + Shift + B).
5. Vídeo-aula
https://www.youtube.com/watch?v=Zfil84FMJsk
6. Créditos
Mark - Autor do tutorial e do projeto The Forgotten Server
Bruno Minervino - Tradução e gravação do vídeo
-
Steeven deu reputação a LeoTK em (Resolvido)Vida sempre 100http://www.tibiaking.com/forum/forums/topic/55507-pedido-hp-mp-por-porcentagem/?do=findComment&comment=326036
leia o comentário do membro Fir3element e faça a engenharia reversa do processo ou seja procure o que é pra substituir e substitua o quer é para localizar
-
Steeven deu reputação a Mathias Kenfi em (Resolvido)Vida sempre 100Isso esta em %, e não e ruim pois ajuda no uso de bot.
Se quer tirar terá de abrir as sources do seu server.
-
Steeven recebeu reputação de samlecter em [Resolvido] [AJUDA] Problema com NPC lib (RESOLVIDO)Resolvido o problema! Como você disse, parece que era em data/lib & data/npc/lib.
Eu apenas peguei um server que não dá o erro e troquei as duas pastas do meu server pelas pastas do outro. Agora funcionou!
Obrigado pela atenção Jamison Collins!
Para quem tem o mesmo erro e quiser fazer o que fiz, anexei os arquivos:
data.zip
-
Steeven recebeu reputação de Amy Fear em Mineração/Coleta (%)Hoje vou trazer um script que desenvolvi com ajuda de todos aqui do fórum, é meu primeiro tutorial e espero não estar fazendo nada de errado. O script é bem simples, mas funciona sem erros, pelo menos aqui.
O que faz?
-Você usa uma ferramenta para minerar em determinada pedra, de acordo com as chances você consegue extrair dela um minério como "iron ore" por exemplo. Lembrando que o item que você vai usar para minerar, tem de ser um item que você pode usar em outros, como a pick, shovel e outros...
Utilidade?
-Vai depender de você, em servidores com sistema de forja pode ser interessante, que é o meu caso.
Script
Em data/actions/scripts/ crie um arquivo .lua com o nome que deseja (ex.: ferramenta.lua) e cole o código a seguir dentro dele:
Explicando >>>
Eu utilizei 4 tipos diferentes de minério, Bronze, Silver, Gold e Mithril. Você pode utilizar quantos quiser.
Roxo, corresponde as chance para cada minério, note que as chances de minerar bronze é 23%, prata é de 9%, ouro é de 7% e mithril é de 1%.
Verde, é o ID do item sobre o qual você vai usar a ferramenta para minerar. Pode ser uma pedra o qualquer coisa que achar melhor.
Azul, é o ID do item adicionado ao jogador quando ele conseguir extrair algum minério e a quantidade(129,1).
Ótimo, mas como eu escolho com qual ferramenta minerar?
Agora, você vai em data/actions/actions.xml e adicione esta linha:
Em vermelho, é o ID da ferramenta usada para minerar.
Uma alerta, este script está limitado a 100% não podendo ultrapassar esta margem, para uma porcentagem maior, altere esta função:
math.random(1,100) <- mude o 100 para 200 ou mais.
Se eu quiser usar só um minério?
Como dito, eu usei 4 minérios, cada minério corresponde a esta função:
Do if ao end corresponde a um minério. daí você pode diminuir ou adicionar minério tirando uma ou acrescentando uma função. Mas note que cada função corresponde a uma variável, no caso acima, é o bronze. Para acrescentar um minério, você terá que fazer uma variável correspondente e configurar seguindo os passos anteriores.
O que mais posso fazer?
Bem, você pode usa este script para uma coleta de madeira, basta usar uma ferramenta como o Axe e mudar o itemEx.itemid para o ID de uma árvore, e por fim no doPlayerAddItem(cid, 126,1) pôr o ID de da madeira a ser coletada. doPlayerAddItem(cid, Id-do-Item,quantidade).
Espero ter ajudado! VLW!
-
Steeven recebeu reputação de manolodede em Simples Premium ScrollEste script é pequeno, simples e fácil de usar.
O que faz?
-Adiciona premius days (dias de premium)
Utilidade?
data/actions/scripts/ e crie um arquivo .lua com o nome que deseja (premium_scroll.lua). Nele adicione o código a seguir:
De vermelho, são os dias de premium que será adicionado ao jogador que usar.
De azul, é a mensagem enviada para o jogador que usou o item.
Em data/actions/actions.xml adicione a linha:
Em roxo, o ID do item que será o Premium Scroll. Você pode usar o que mais lhe agrada.
Em negrito é o nome do seu arquivo criado em data/actions/scripts/.
Descomplicado e funcional! Abraço a todos!
-
Steeven deu reputação a Cat em Mineração/Coleta (%)Bom script, fortalece o rpg (:
-
Steeven deu reputação a elios99 em Mineração/Coleta (%)Otima tuto cara
se quiser participar da minah team que vo divulgar amanha so pedir
-
Steeven deu reputação a Garou em Forge SystemADVANCED FORGE SYSTEM
O SISTEMA DE CRIAÇÃO DE ITENS PARA SEU SERVIDOR
Creio que muitos já conhecem o sistema de forja criado por mim, acontece que o código já estava um pouco obsoleto, então resolvi reescrever ele do 0.
Simplesmente consiste em um sistema de criação de itens avançado que ressuscita um pouco do RPG perdido nos servidores de hoje em dia. O jogador poderá criar itens através de forja, agindo como um verdadeiro ferreiro medieval. Adiciona itens em cima de uma bigorna previamente colocada no mapa e com um martelo cria um item totalmente novo.
CARACTERÍSTICAS DA VERSÃO FINAL:
- Configuração intuitiva e fácil de compreender;
- Mini-tutorial auxiliando criação de novas receitas;
- Receitas podem conter até 250 itens diferentes com suas respectivas quantidades;
- Sistema inteligente que identifica uma receita em qualquer ordem;
- Código totalmente orientado a objetos;
- Possibilidade de configurar diferentes requerimentos, diferentes skills, magic level e level
Há dois modos de instalar o Advanced Forge System, o primeiro é seguir os passos deste tópico e o segundo e baixar pasta data/ anexada no tópico com os arquivos em seus respectivos diretórios, precisando apenas o registro das chaves nos arquivos XML.
Escolha o modo que mais convém a você.
Crie um arquivo em data/lib chamado forgesystem.lua e cole o conteúdo abaixo:
--[[ ADVANCED FORGE SYSTEM FINAL Criado por Oneshot É proibido a venda ou a cópia sem os devidos créditos desse script. ]]-- RecipeHandler = { itemtype = 0, items = {}, level = 1, maglevel = 0, skills = {[0] = 0, [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0} } Forge = { type = nil, position = nil, magicEffect = CONST_ME_MAGIC_GREEN, messages = { class = MESSAGE_STATUS_DEFAULT, success = "You have successfully forged a %s.", needskill = "You don't have enough %s to create a %s.", needlevel = "You need level %s to create a %s.", needmaglevel = "You need magic level %s to create a %s." } } function RecipeHandler:new(itemtype, items, level, maglevel, skills) local obj = { itemtype = (itemtype or 0), items = (items or {}), level = (level or 1), maglevel = (maglevel or 0), skills = (skills or {[0] = 0, [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0}) } table.insert(Recipes, obj) return setmetatable(obj, {__index = self}) end function RecipeHandler:setItem(itemtype) self.itemtype = (itemtype or 0) end function RecipeHandler:setRecipe(...) self.items = {...} end function RecipeHandler:setRecipeItem(itemid, amount) table.insert(self.items, {itemid, amount}) end function RecipeHandler:setSkill(skillid, value) self.skills[skillid] = value end function RecipeHandler:setLevel(value) self.level = value end function RecipeHandler:setMagLevel(value) self.maglevel = value end function RecipeHandler:check(position) local match = false for n, item in ipairs(self.items) do local thing = getTileItemById(position, item[1]) if thing.uid > 0 and math.max(1, thing.type) >= item[2] then if n == #self.items then match = true end else break end end return match end function RecipeHandler:get(position) if self:check(position) == true then return setmetatable({type = self, position = position}, {__index = Forge}) end return false end function Forge:create(cid) if self.type.itemid == 0 then print("[FORGE SYSTEM - ERROR] ATTEMPT TO CREATE A RECIPE ITEMID 0") return end local status = true if(cid) then if getPlayerLevel(cid) < self.type.level then doPlayerSendTextMessage(cid, self.messages.class, self.messages.needlevel:format(self.type.level, getItemNameById(self.type.itemtype))) return end if getPlayerMagLevel(cid) < self.type.maglevel then doPlayerSendTextMessage(cid, self.messages.class, self.messages.needmaglevel:format(self.type.maglevel, getItemNameById(self.type.itemtype))) return end for skillid, value in pairs(self.type.skills) do if getPlayerSkillLevel(cid, skillid) < value then status = false doPlayerSendTextMessage(cid, self.messages.class, self.messages.needskill:format(SKILL_NAMES[skillid], getItemNameById(self.type.itemtype))) break end end end if status == true then for _, item in ipairs(self.type.items) do local thing = getTileItemById(self.position, item[1]) doRemoveItem(thing.uid, item[2]) end doSendMagicEffect(self.position, self.magicEffect) doPlayerSendTextMessage(cid, self.messages.class, self.messages.success:format(getItemNameById(self.type.itemtype))) doCreateItem(self.type.itemtype, self.position) end end dofile(getDataDir() .."/lib/recipes.lua") Crie um arquivo em data/lib chamado recipes.lua e adicione o conteúdo abaixo:
---------------------------------------- -----** TUTORIAL DE CONFIGURAÇÃO **----- ---------------------------------------- --[[ O 'ADVANCED FORGE SYSTEM' é muito fácil e intuitivo de configurar, você só precisa chamar a função RecipeHandler:new(...), sendo que você já configurar os atributos da receita nela ou usar outras funções para isso. Por exemplo, quero criar uma Magic Sword que precise de 100 Gold Nuggets. RecipeHandler:new(2400, {{2157, 100}}) Ou então Magic_Sword = RecipeHandler:new() Magic_Sword:setItem(2400) Magic_Sword:setRecipe({2157, 100}) Funções do Sistema: RecipeHandler:new(itemtype, items, level, maglevel, skills) --> Cria uma nova instância de forja. RecipeHandler:setItem(itemtype) --> Atribui um certo itemid como resultado da receita. RecipeHandler:setRecipe(recipe) --> Atribui uma receita. RecipeHandler:setRecipeItem(itemid, amount) --> Adiciona um itemid e sua quantidade a receita. RecipeHandler:setSkill(skillid, value) --> Atribui um valor necessário de uma certa skill para poder criar a receita. RecipeHandler:setLevel(value) --> Atribui o level necessário para criar uma receita. RecipeHandler:setMagLevel(value) --> Atribui o magic level necessário para criar uma receita. ]]-- --[[ Este é um exemplo de receita usando algumas funções. É uma Magic Sword (ITEMID: 2400) que precisa de 100 Gold Nuggets (ITEMID: 2157), além disso, o personagem que tentar forjar, precisa ter Level 100 e Sword Fighting 50. ]]-- Recipes = {} magicsword = RecipeHandler:new() magicsword:setItem(2400) magicsword:setRecipeItem(2157, 100) magicsword:setLevel(100) magicsword:setSkill(2, 50) Agora em data/actions/scripts, crie um arquivo chamado iron_hammer.lua e adicione o conteúdo abaixo:
function onUse(cid, item, fromPosition, itemEx, toPosition) local recipe = nil for _, v in ipairs(Recipes) do recipe = v:get(toPosition) if(recipe ~= false) then break end end if(recipe) then recipe:create(cid) else doPlayerSendCancel(cid, "This is not a valid recipe.") end return true end E por fim em actions.xml, adicione a seguinte linha:
<action itemid="4846" event="script" value="iron_hammer.lua"/> OPCIONAL - TALKACTION A talkaction abaixo mostra ao jogadoras receitas configuradas no servidor que ele pode fazer. Em data/talkactions/scripts, crie um arquivo chamado recipes.lua e adicione o conteúdo abaixo:
function onSay(cid, words, param, channel) local ret = {} local msg = " ADVANCED FORGE SYSTEM\n" for _, recipe in ipairs(Recipes) do local skills = true for skillid, value in pairs(recipe.skills) do if getPlayerSkillLevel(cid, skillid) < value then skills = false break end end if skills == true then if getPlayerLevel(cid) >= recipe.level and getPlayerMagLevel(cid) >= recipe.maglevel then table.insert(ret, {recipe, true}) else table.insert(ret, {recipe, false}) end else table.insert(ret, {recipe, false}) end end for _, recipe in ipairs(ret) do msg = msg .."\nRecipe for ".. getItemNameById(recipe[1].itemtype) ..":\n\n" if recipe[2] == true then for _, item in ipairs(recipe[1].items) do msg = msg .."* ".. getItemNameById(item[1]) .." [".. math.min(item[2], math.max(0, getPlayerItemCount(cid, item[1]))) .."/".. item[2] .."]\n" end else msg = msg .."[LOCKED]\n" end end doShowTextDialog(cid, 2555, msg) return true end Em data/talkactions/talkactions.xml, adicione a linha:
<talkaction words="/recipes" event="script" value="recipes.lua"/> Siga as instruções para configuração de novas receitas.
Em breve vídeo de funcionamento
Advanced Forge System.rar -
Steeven deu reputação a joadson em [RESOLVIDO] Remover Item PremiumEsqueci de colocar para setar a storage para 1, esse é o motivo de não enviar a mensagem novamente.
mas como é item de dp + char, será um pouco complicado...
Mesmo assim irei tentar fazer.
e teste com esse aqui para vê se remove direitin.
function onLogin(cid) if getPlayerStorageValue(cid, 2025) =< 1 and not isPremium(cid)then doPlayerRemoveItem(cid, 105, 1) -- Mude o 105 pelo ID do seu item setPlayerStorageValue(cid, 2025, 2) doPlayerSendTextMessage(cid, 22, "Ohhh, você perdeu o item") return TRUE end if getPlayerStorageValue(cid, 2025) == 2 and isPremium(cid) then doPlayerAddItem(cid, 105, 1) setPlayerStorageValue(cid, 2025, 1) -- a linha que faltava kkk doPlayerSendTextMessage(cid, 22, "Você recuperou o item") end return TRUE end -
Steeven deu reputação a Pifafa em [Resolvido] Script quando mata um monstro apareci um teleportQuestão do tempo ali é 30 minutos ou 30 segundos que esta configurado? e Outra aproveitado já que vocês tem boa experiencia, editei arquivo respam, da pasta word, para 3 monstros darem respam a cada 50.000 seria a cada 50 minutos no caso dai?
-
Steeven deu reputação a joadson em [RESOLVIDO] Remover Item PremiumEu coloquei a storage para não acontecer isso kkk
o player normal, ao logar no server vai ganhar storage 2025(0), assim que ele se tornar premium e logar, o server vai fazer uma checagem, se ele for premium e tiver a storage(0), vai mudar pra storage(2), se ele for free com storage(2), vai mudar pra storage(1) e remover o item, e só irá receber novamente quando for premium com storage(2) kkk
é algo doido de entender, mas funciona(ou não) kkk
-
Steeven deu reputação a lano em [AJUDA] como fazer um premium tileEm movements/scripts crie um arquivo.lua e cole isto dentro:
local npos = {x=1, y=1, z=1} --- posição para onde sera teleportado function onStepIn(cid, item, position, fromPosition, toPosition) if isPremium(cid) then doTeleportThing(cid, npos) doSendMagicEffect(npos,10) else doTeleportThing(cid, fromPosition) doPlayerSendCancel(cid, "Você não é premium.") end return true end Em movements.xml cole a tag: <movevent type="StepIn" actionid="ACTIONIDDOTILE" event="script" value="NOMEDOSEUARQUIVO.lua"/>
-
Steeven deu reputação a joadson em [RESOLVIDO] Remover Item PremiumOkay, irei providenciar o script.
Edit.
Aqui o script, não sei se é isso, mas deve ser kkk
vá em data/creaturescripts/script e crie um arquvio chamado item.lua e coloque isso dentro
function onLogin(cid) if getPlayerStorageValue(cid, 2025) == 0 and not isPremium(cid)then doPlayerRemoveItem(cid, 105, 1) -- Mude o 105 pelo ID do seu item setPlayerStorageValue(cid, 2025, 2) doPlayerSendTextMessage(cid, 22, "Ohhh, você perdeu o item") return TRUE end if getPlayerStorageValue(cid, 2025) == 2 and isPremium(cid) then doPlayerAddItem(cid, 105, 1) doPlayerSendTextMessage(cid, 22, "Você recuperou o item") end return TRUE end e adicione isso no creature.xml
<event type="login" name="item" event="script" value="item.lua"/>
depois vá em data/creaturescripts/script e abra o login.lua
e adicione isso
registerCreatureEvent(cid, "item") e isso aqui
if getPlayerStorageValue(cid, 2025) < 0 then setPlayerStorageValue(cid,2025, 0) end Agora é só testar e ser feliz
-
Steeven deu reputação a joadson em [RESOLVIDO] Remover Item PremiumOkay, de manha(hoje) irei fazer o sistema e posto aqui =D
Agora entendi o que você quer
OBS: é premium normal(!buypremium/premium points) ou outro tipo de premium(vip)?
-
Steeven deu reputação a joadson em [RESOLVIDO] Remover Item PremiumSe foi o que eu entendi aqui está o script...
vá em data/movements/scripts e crie um arquivo chamado item.lua
e coloque isso dentro
function onEquip(cid, item, position, fromPosition) local OnlyPremium = true -- somente para premium? if OnlyPremium == true and not isPremium(cid) then doPlayerPopupFYI(cid, "você não pode equpar esse item") else doPlayerPopupFYI(cid, "você equipou com sucesso!") return true end end feito isso, abra o movements.xml e coloque isso dentro
<movevent type="Equip" itemid="ITEMID" slot="right-hand" event="script" value="item.lua"/>
OBS: mude o nome slot="right-hand" para o nome de qual slot o item irá ficar(legs, feet, necklace etc).
se não for esse o script ou se der algum erro é só falar.
-
Steeven deu reputação a Chiitus em Evento Double Exp com dia e hora específicoEste script dá double exp à todos os player que estiverem online ou entrarem durante o tempo especificado no dia X.
Pra quem não sabe, apenas crie um arquivo "QUALQUER-NOME.xml" na pasta "mods" (mesmo lugar do executável do servidor), cole isso dentro e salve:
É isso aí galera, caso tenha dúvidas poste aqui.
Créditos:
Script: Tomek
Xevis
Tópico: Eu '-'