Search the Community
Showing results for tags 'mineracao'.
-
Gostaria que me ajudassem a adicionar um piso, nessa função, lembrando versão do 10.90 TFS 1.2 !!! Aí é o seguinte, nesse script você quebra a pedra e depois de um certo tempo aparece uma outra pedra no lugar da que foi quebrada, porém quando aparece a pedra, também aparece um buraco preto e eu quero adicionar um piso para que o script tenha looping, sem o piso o item de pedra não da spawn. Explicando melhor: 1º o chão tem a pedra normal 2º bati na pedra e ela quebrou retornando gold nuggets 3º a pedra vai spawnar! 4º mas ela volta com um buraco preto nela. 5º quando quebro a pedra com esse buraco ela não volta!!!! 6º preciso quebrar a pedra e adicionar um chão para ela novamente quando chegar na função doTransformItem eu creio que o chão fica preto por causa disso e se eu remover essa função a pedra não volta e não aparece nada no chão! Veja na imagem!!!! function event_rockGrow(rockPos, old_id) local rock = (getThingfromPos(rockPos).uid) doTransformItem(rock, old_id) doSendMagicEffect(rockPos, 3)end Script original:
-
Opa, eu tentei fazer esse script de mineração, ele até funciona, mas não parece que funfa 100% certin, ele faz o que era pra fazer, mas eu botei o percent bem alto usando o pickaxe e mesmo assim existe dificuldade de pegar o item, eu nunca usei o for, então não sei se usei ele corretamente, alguém que netende bem poderia dar uma olhada e dizer no que estou errado? a parte do ground podem ignorar, só a parte do stones mesmo local configs = {sign = {{level = {0,9}, quant = {1,2}, percent = 5},{level = {10,19}, quant = {2,4}, percent = 8},{level = {20,29}, quant = {3,6}, percent = 11},{level = {30,39}, quant = {4,8}, percent = 14},{level = {40,49}, quant = {5,10}, percent = 17},{level = {50,59}, quant = {6,12}, percent = 20},{level = {60,69}, quant = {7,14}, percent = 23},{level = {70,79}, quant = {8,16}, percent = 26},{level = {80,89}, quant = {9,18}, percent = 29},{level = {90,99}, quant = {10,20}, percent = 32},{level = {100,200}, quant = {11,22}, percent = 35}},stones = {1285, 1356},stones_prize = {{itemprize = 2160, percent = {1,10}},{itemprize = 2152, percent = {11,30}},{itemprize = 2148, percent = {31,100}},},grounds = {406},grounds_prize = {{itemprize = 2160, percent = {0,1}},{itemprize = 2157, percent = {2,3}}},}function onUse(cid, item, fromPosition, itemEx, toPosition)local skills = getPlayerSkill(cid, SKILL_SWORD)if isInArray(configs.stones, itemEx.itemid) thendoPlayerAddSkillTry(cid, SKILL_SWORD, 1)transform_stone = math.random(1, 100) if transform_stone < 16 then doTransformItem(itemEx.uid, 2160) doPlayerSendTextMessage(cid, 22, "More luck in your next time.") else for L = 1, #configs.sign do if skills >= configs.sign[L].level[1] and skills <= configs.sign[L].level[2] then quant = math.random(configs.sign[L].quant[1],configs.sign[L].quant[2]) if item.itemid == 4874 then percent = configs.sign[L].percent + 75 stry = 2 else percent = configs.sign[L].percent stry = 1 end print('Skill: '.. skills ..'.') print('Porce: '.. percent ..'%.') print('Stry: '.. stry ..'.') percent_chance = math.random(1, 100) print('PC '.. percent_chance ..'.') if percent_chance <= percent then for M = 1, #configs.stones_prize do for_stone_prize = math.random(1, 100) print('SP '.. for_stone_prize..'.') if for_stone_prize >= configs.stones_prize[M].percent[1] and for_stone_prize <= configs.stones_prize[M].percent[2] then doPlayerAddSkillTry(cid, SKILL_SWORD, stry) doPlayerAddItem(cid, configs.stones_prize[M].itemprize, quant) doPlayerSendTextMessage(cid, 22, "You won ".. quant .." ".. getItemNameById(configs.stones_prize[M].itemprize) ..".") break_chance = math.random(1,100) if break_chance < 6 then doTransformItem(itemEx.uid, 2160) end break else doPlayerSendTextMessage(cid, 22, "You have not won anything, try again..") break end end else doPlayerSendTextMessage(cid, 22, "You did not succeed in mining , try again.") end break end end end elseif isInArray(configs.grounds, itemEx.itemid) then doPlayerAddSkillTry(cid, SKILL_SWORD, 1) transform_ground = math.random(1, 100) if transform_ground < 16 then doTransformItem(itemEx.uid, 2160) doPlayerSendTextMessage(cid, 22, "Sorry, but this ground was empty.") else for L = 1, #configs.sign do if skills >= configs.sign[L].level[1] and skills <= configs.sign[L].level[2] then quant = math.random(configs.sign[L].quant[1],configs.sign[L].quant[2]) percent_chance = math.random(1, 100) if percent_chance <= percent then for M = 1, #configs.grounds_prize do for_ground_prize = math.random(1, 100) if for_ground_prize >= configs.grounds_prize[M].percent[1] and for_grounds_prize <= configs.grounds_prize[M].percent[2] then doPlayerAddItem(cid, configs.grounds_prize[M].itemprize, quant) doPlayerSendTextMessage(cid, 22, "You won ".. quant .." ".. getItemNameById(configs.grounds_prize[M].itemprize) ..".") doTransformItem(itemEx.uid, 2160) else doPlayerSendTextMessage(cid, 22, "You have not won anything, try again..") end break end else doPlayerSendTextMessage(cid, 22, "You did not succeed in mining , try again.") end break end end end endend
-
Bem, estava sem nada para fazer, e resolvi criar esse sistema de mineração. Ele é simples, porém é diferente ^^. Diante mão, obrigado a jhon992 por me tirar algumas dúvidas e me ajudar. Explicando o script: O player precisa "carregar" o vagão que está vazio, usando um item na pedra. Depois, ao puxar a alavanca, o vagão se move e quando chega no final, assim que o player pisar num certo tile, o vagão voltará a posição inicial e uma pedra surgirá emcima de um local. Então, é só o player usar a garrafa (id 2007) em um destilador (id 5469) que se transformará em um vial de mercury. Ao usar o vial na pedra, poderá ganhar itens que são aleatórios. O vídeo abaixo explica como instalar e também mostra o script em funcionamento. Então, vamos ao script: Primeiramente, em data/actions/scripts crie um arquivo.lua chamado mineracao.lua e cole isto dentro: local pedras = {8751, 8749, 8748, 8750} --- PEDRAS QUE PODERAO SER MINERADAS local vagon = {x=210,y=434,z=7,stackpos=2} --- local inicial do vagão function onUse(cid, item, fromPosition, itemEx, toPosition) if isInArray (pedras, itemEx.itemid) == TRUE and itemEx.actionid == 3478 then if getTileItemById(vagon, 7131).uid > 0 and doPlayerSendTextMessage(cid, 22, "Você colocou a pedra no vagão, use a alavanca para movê-lo") then doTransformItem(getThingfromPos(vagon).uid,10037) doSendMagicEffect(toPosition, 3) doSendMagicEffect(vagon, 38) else doPlayerSendCancel(cid, "O vagão está em uso. Espere ele voltar.") end end end Como no próprio script já tem, nessa linha local pedras = {8751, 8749, 8748, 8750} você deve colocar os ids das pedras que poderão ser mineradas. Depois, é preciso que você, pelo map editor, coloque o actionid 3478 nas pedras. E em actions.xml adicionar a tag: <action itemid="4874" script="mineracao.lua"/>. Nesse caso, o item que será usado para minerar vai ser o dwarven pickaxe, caso prefira outro, é só mudar onde tem 4874, com o id do seu item. Ainda em data/actions/scripts, crie outro arquivo.lua e renomeie para vagonlever.lua e cole isto dentro: local positions = { {x=210,y=434,z=7, stackpos=1}, ---- posição inicial do vagao {x=211,y=434,z=7, stackpos=1}, --[ {x=212,y=434,z=7, stackpos=1}, ------------Posição onde o vagão irá andar {x=213,y=434,z=7, stackpos=1}, ------------ || {x=214,y=434,z=7, stackpos=1}, --] {x=215,y=434,z=7, stackpos=1} ---- ultima posição do vagão } function onUse(cid, item, fromPosition, itemEx, toPosition) if item.actionid == 6666 and getTileItemById(positions[1], 10037).uid > 0 then moveVagon() else doPlayerSendCancel(cid, "O vagão ainda não está carregado") end end function moveVagon() for i=1, #positions do vagon_uid = getTileItemById(positions[i], 10037).uid if vagon_uid > 0 then if #positions ~= i and doRemoveItem(vagon_uid,1) then doCreateItem(10037,1, positions[i+1]) addEvent(moveVagon, 500) break end end end end O script é autoexplicativo, você só vai precisar adicionar desde a posição inicial do vagão até o último. Com o seu map editor, adicione o aid 6666 na alavanca. Em actions.xml adicione a tag: <action actionid="6666" event="script" value="vagonlever.lua"/>. Em data/actions/scripts, novamente, crie outro arquivo e renomeie para cleanstone.lua, e cole isto dentro: local items = {2149, 2145, 2147} ----- items que vão aparecer local stone = {x=216,y=434,z=7, stackpos=1} ---- onde o coal será adicionado function onUse(cid, item, fromPosition, itemEx, toPosition) if item.itemid == 2007 and itemEx.itemid == 5469 then doRemoveItem(item.uid) local flask = doPlayerAddItem(cid, 7488) doItemSetAttribute(flask, "description", "This flask contains mercury. It is great to use on minerals.") doPlayerSendTextMessage(cid, 22, "You have gained a flask of mercury.") elseif item.itemid == 7488 and itemEx.actionid == 3459 then local randomChance = math.random(1, #items) doTransformItem(itemEx.uid,items[randomChance]) doSendMagicEffect(stone,6) doRemoveItem(item.uid) end end A tag: <action itemid="2007;7488" event="script" value="cleanstone.lua"/> Nessa parte, você vai editar nessa linha: local items = {2149, 2145, 2147} os items que aparecerão ao "limpar" a pedra com o vial de mercury. No meu caso, coloquei small diamond, small ruby e small emerald. E na outra linha abaixo, o local onde a pedra será adicionada. Perceba que o script já faz com que o vial de mercúrio só possa ser usado nas pedras de action 3459 (você não precisa adicionar nada de action aqui), para evitar que pudessem ser usadas nas outras pedras espalhadas pelo mapa. E por último, em movements/scripts crie um arquivo.lua e renomeie para coal.lua: local final = {x=215,y=434,z=7, stackpos=2} ------ posição onde o vagão cheio chegará local stone = {x=216,y=434,z=7} ------ local onde aparecerá a pedra local vagon = {x=210,y=434,z=7, stackpos=1} ------ local inicial do vagão function onStepIn(cid, item, position, fromPosition) if getTileItemById(final, 10037).uid > 0 then doRemoveItem(getThingfromPos(final).uid,1) local mina = doCreateItem(8751, 1, stone) doItemSetAttribute(mina, "aid", 3459) doSendMagicEffect(stone, 34) doSendMagicEffect(final, 2) doCreateItem(7131, 1, vagon) doSendMagicEffect(vagon, 10) end return true end E a tag em movements.xml: <movevent type="StepIn" actionid="16540" event="script" value="coal.lua"/> Depois, é só colocar o actionid 16540 no chão na frente de onde será adicionada a pedra (veja vídeo). E ao player pisar, tcharam! a pedra vai aparecer. Bom, é isso aí, ainda estou começando em scripting mas espero ter ajudado alguém, esse script também pode servir como exemplos de tutoriais e talz ^^. Vlw, abraço.