Postado Agosto 12, 2017 7 anos Eu tive uma ideia para dar acesso a um jogador, inicialmente ele precisa sacrificar esses itens, 1 por 1 no basin, jogando em cima dele, depois de completar os sacrificios, ele ganha uma storage. 1 - É necessário estar na posição X para fazer o sacrificio 2 - Cada sacrificio, sai um efeito X no char. 3 - Sai um efeito no basin quando jogar o item, pode ser o efeito normal 4 - Proibe o player de fazer um sacrificio caso ja tenha feito 5 - Cada chave vai dar uma storage segue anexo
Postado Agosto 14, 2017 7 anos @JcA Não testei, qualquer erro fala aí. Em movements/scripts: sacrificio.lua Spoiler local t = { player_pos = {x = 1, y = 1, z = 1}, -- posição que o player deve estar storage_final = 11111, -- storage após colocar todas as chaves efeito_final = CONST_ME_HOLYAREA, basins = { [1111] = {pos = {x = 1, y = 1, z = 1}, storage = 11111, effect = 1}, -- [id da chave] = {pos = posição do basin ... [1111] = {pos = {x = 1, y = 1, z = 1}, storage = 11111, effect = 2}, [1111] = {pos = {x = 1, y = 1, z = 1}, storage = 11111, effect = 2}, [1111] = {pos = {x = 1, y = 1, z = 1}, storage = 11111, effect = 3}, [1111] = {pos = {x = 1, y = 1, z = 1}, storage = 11111, effect = 4}, [1111] = {pos = {x = 1, y = 1, z = 1}, storage = 11111, effect = 5}, [1111] = {pos = {x = 1, y = 1, z = 1}, storage = 11111, effect = 6}, [1111] = {pos = {x = 1, y = 1, z = 1}, storage = 11111, effect = 7}} } function onAddItem(moveitem, tileitem, position, cid) function count(T) local count = 0 for _ in pairs(T) do count = count + 1 end return count end local item, check, p, count = t.basins[moveitem.itemid], 0, getPlayerPosition(cid), count(t.basins) if item.storage > 0 then doPlayerSendCancel(cid, "Você já sacrificou esta chave.") doSendMagicEffect(p, CONST_ME_POFF) return true end if p.x ~= t.player_pos.x or p.y ~= t.player_pos.y then doPlayerSendCancel(cid, "Você deve estar no local correto.") doSendMagicEffect(p, CONST_ME_POFF) return true end if position.x == item.pos.x and position.y == item.pos.y then doSendMagicEffect(position, CONST_ME_POFF) doRemoveItem(moveitem.uid) setPlayerStorageValue(cid, item.storage, 1) doSendMagicEffect(t.player_pos, item.effect) for i, v in pairs(t.basins) do if getPlayerStorageValue(cid, v.storage) > 0 then check = check + 1 if check == count then setPlayerStorageValue(cid, t.storage_final, 1) doSendMagicEffect(t.player_pos, t.efeito_final) end end end else doPlayerSendCancel(cid, "Coloque o item no seu lugar correto.") doSendMagicEffect(p, CONST_ME_POFF) end end Em movements.xml, adicione a tag: <movevent type="AddItem" tileitem="1" actionid="ACTION_ID_DOS_BASINS" event="script" value="sacrificio.lua"/> Editado Agosto 16, 2017 7 anos por Dwarfer (veja o histórico de edições) Contato: Email: [email protected] Discord: Dwarfer#2715
Postado Agosto 16, 2017 7 anos Autor Em 14/08/2017 em 13:56, Dwarfer disse: @JcA Não testei, qualquer erro fala aí. Em movements/scripts: sacrificio.lua Mostrar conteúdo oculto local t = { player_pos = {x = 1, y = 1, z = 1}, -- posição que o player deve estar storage_final = 11111, -- storage após colocar todas as chaves efeito_final = CONST_ME_HOLYAREA, basins = { [1111] = {pos = {x = 1, y = 1, z = 1}, storage = 11111, effect = 1}, -- [id da chave] = {pos = posição do basin ... [1111] = {pos = {x = 1, y = 1, z = 1}, storage = 11111, effect = 2}, [1111] = {pos = {x = 1, y = 1, z = 1}, storage = 11111, effect = 2}, [1111] = {pos = {x = 1, y = 1, z = 1}, storage = 11111, effect = 3}, [1111] = {pos = {x = 1, y = 1, z = 1}, storage = 11111, effect = 4}, [1111] = {pos = {x = 1, y = 1, z = 1}, storage = 11111, effect = 5}, [1111] = {pos = {x = 1, y = 1, z = 1}, storage = 11111, effect = 6}, [1111] = {pos = {x = 1, y = 1, z = 1}, storage = 11111, effect = 7}} } function onAddItem(moveitem, tileitem, position, cid) function count(T) local count = 0 for _ in pairs(T) do count = count + 1 end return count end local item, check, p, count = t.basins[moveitem.itemid], 0, getPlayerPosition(cid), count(t.basins) if item.storage > 0 then doPlayerSendCancel(cid, "Você já sacrificou esta chave.") doSendMagicEffect(p, CONST_ME_POFF) return true end if p.x ~= t.player_pos.x or p.y ~= t.player_pos.y then doPlayerSendCancel(cid, "Você deve estar no local correto.") doSendMagicEffect(p, CONST_ME_POFF) return true end if position.x == item.pos.x and position.y == item.pos.y then doSendMagicEffect(position, CONST_ME_POFF) doRemoveItem(moveitem.uid) setPlayerStorageValue(cid, item.storage, 1) doSendMagicEffect(t.player_pos, item.effect) for i, v in pairs(t.basins) do if getPlayerStorageValue(cid, v.storage) > 0 then check = check + 1 if check == count then setPlayerStorageValue(cid, t.storage_final, 1) doSendMagicEffect(t.player_pos, t.efeito_final) end end end else doPlayerSendCancel(cid, "Coloque o item no seu lugar correto.") doSendMagicEffect(p, CONST_ME_POFF) end end Em movements.xml, adicione a tag: <movevent type="AddItem" tileitem="1" actionid="ACTION_ID_DOS_BASINS" event="script" value="sacrificio.lua"/> Fala meu querido, não da erro, porém quando jogo o item em cima do basin, diz que eu "ja fiz o sacrificio", só que não fiz, e notei uma coisa também, e possivel fazer com que o item volte pra bp caso eu ja tenha feito o sacrificio? Pq quando jogo no basin, se ja tiver feito, o item fica em cima kkkk Outra coisa, quando estou fora do sqm do meio, também consigo jogar, e não sinaliza que devo estar no local X local t = { player_pos = {x = 2122, y = 1648, z = 5}, -- posição que o player deve estar storage_final = 11119, -- storage após colocar todas as chaves efeito_final = CONST_ME_HOLYAREA, basins = { [2089] = {pos = {x = 2122, y = 1646, z = 5}, storage = 11111, effect = 1}, -- [id da chave] = {pos = posição do basin ... [2087] = {pos = {x = 2124, y = 1646, z = 5}, storage = 11112, effect = 2}, [2088] = {pos = {x = 2125, y = 1648, z = 5}, storage = 11113, effect = 3}, [2091] = {pos = {x = 2124, y = 1650, z = 5}, storage = 11114, effect = 4}, [8978] = {pos = {x = 2122, y = 1650, z = 5}, storage = 11115, effect = 5}, [2092] = {pos = {x = 2120, y = 1650, z = 5}, storage = 11116, effect = 6}, [2090] = {pos = {x = 2119, y = 1648, z = 5}, storage = 11117, effect = 7}, [2086] = {pos = {x = 2120, y = 1646, z = 5}, storage = 11118, effect = 8}} } function onAddItem(moveitem, tileitem, position, cid) function count(T) local count = 0 for _ in pairs(T) do count = count + 1 end return count end local item, check, p, count = t.basins[moveitem.itemid], 0, getPlayerPosition(cid), count(t.basins) if item.storage > 0 then doPlayerSendCancel(cid, "Você já sacrificou esta chave.") doSendMagicEffect(p, CONST_ME_POFF) return true end if p.x ~= t.player_pos.x or p.y ~= t.player_pos.y then doPlayerSendCancel(cid, "Você deve estar no local correto.") doSendMagicEffect(p, CONST_ME_POFF) return true end if position.x == item.pos.x and position.y == item.pos.y then doSendMagicEffect(position, CONST_ME_POFF) doRemoveItem(moveitem.uid) setPlayerStorageValue(cid, item.storage, 1) doSendMagicEffect(t.player_pos, item.effect) for i, v in pairs(t.basins) do if getPlayerStorageValue(cid, v.storage) > 0 then check = check + 1 if check == count then setPlayerStorageValue(cid, t.storage_final, 1) doSendMagicEffect(t.player_pos, t.efeito_final) end end end else doPlayerSendCancel(cid, "Coloque o item no seu lugar correto.") doSendMagicEffect(p, CONST_ME_POFF) end end
Postado Agosto 16, 2017 7 anos Solução 2 horas atrás, JcA disse: Fala meu querido, não da erro, porém quando jogo o item em cima do basin, diz que eu "ja fiz o sacrificio", só que não fiz, e notei uma coisa também, e possivel fazer com que o item volte pra bp caso eu ja tenha feito o sacrificio? Pq quando jogo no basin, se ja tiver feito, o item fica em cima kkkk Outra coisa, quando estou fora do sqm do meio, também consigo jogar, e não sinaliza que devo estar no local X Realmente, falha minha ali na verificação da storage, acabou que me passei. Com relação a voltar para a bp você não disse que teria que voltar. Segue com as modificações: Spoiler local t = { player_pos = {x = 2122, y = 1648, z = 5}, -- posição que o player deve estar storage_final = 11119, -- storage após colocar todas as chaves efeito_final = CONST_ME_HOLYAREA, basins = { [2089] = {pos = {x = 2122, y = 1646, z = 5}, storage = 11111, effect = 1}, -- [id da chave] = {pos = posição do basin ... [2087] = {pos = {x = 2124, y = 1646, z = 5}, storage = 11112, effect = 2}, [2088] = {pos = {x = 2125, y = 1648, z = 5}, storage = 11113, effect = 3}, [2091] = {pos = {x = 2124, y = 1650, z = 5}, storage = 11114, effect = 4}, [8978] = {pos = {x = 2122, y = 1650, z = 5}, storage = 11115, effect = 5}, [2092] = {pos = {x = 2120, y = 1650, z = 5}, storage = 11116, effect = 6}, [2090] = {pos = {x = 2119, y = 1648, z = 5}, storage = 11117, effect = 7}, [2086] = {pos = {x = 2120, y = 1646, z = 5}, storage = 11118, effect = 8}} } function onAddItem(moveitem, tileitem, position, cid) function count(T) local count = 0 for _ in pairs(T) do count = count + 1 end return count end local item, check, p, count = t.basins[moveitem.itemid], 0, getPlayerPosition(cid), count(t.basins) if not item then return true end doRemoveItem(moveitem.uid) if p.x ~= t.player_pos.x or p.y ~= t.player_pos.y then doPlayerAddItem(cid, moveitem.itemid, 1) doPlayerSendCancel(cid, "Você deve estar no local correto.") doSendMagicEffect(p, CONST_ME_POFF) return true end if getPlayerStorageValue(cid, item.storage) > 0 then doPlayerAddItem(cid, moveitem.itemid, 1) doPlayerSendCancel(cid, "Você já sacrificou esta chave.") doSendMagicEffect(p, CONST_ME_POFF) return true end if position.x == item.pos.x and position.y == item.pos.y then doSendMagicEffect(position, CONST_ME_POFF) setPlayerStorageValue(cid, item.storage, 1) doSendMagicEffect(t.player_pos, item.effect) for i, v in pairs(t.basins) do if getPlayerStorageValue(cid, v.storage) > 0 then check = check + 1 if check == count then setPlayerStorageValue(cid, t.storage_final, 1) doSendMagicEffect(t.player_pos, t.efeito_final) end end end else doPlayerSendCancel(cid, "Coloque o item no seu lugar correto.") doPlayerAddItem(cid, moveitem.itemid, 1) doSendMagicEffect(p, CONST_ME_POFF) end end Contato: Email: [email protected] Discord: Dwarfer#2715
Postado Agosto 17, 2017 7 anos Autor 2 horas atrás, Dwarfer disse: Realmente, falha minha ali na verificação da storage, acabou que me passei. Com relação a voltar para a bp você não disse que teria que voltar. Segue com as modificações: Ocultar conteúdo local t = { player_pos = {x = 2122, y = 1648, z = 5}, -- posição que o player deve estar storage_final = 11119, -- storage após colocar todas as chaves efeito_final = CONST_ME_HOLYAREA, basins = { [2089] = {pos = {x = 2122, y = 1646, z = 5}, storage = 11111, effect = 1}, -- [id da chave] = {pos = posição do basin ... [2087] = {pos = {x = 2124, y = 1646, z = 5}, storage = 11112, effect = 2}, [2088] = {pos = {x = 2125, y = 1648, z = 5}, storage = 11113, effect = 3}, [2091] = {pos = {x = 2124, y = 1650, z = 5}, storage = 11114, effect = 4}, [8978] = {pos = {x = 2122, y = 1650, z = 5}, storage = 11115, effect = 5}, [2092] = {pos = {x = 2120, y = 1650, z = 5}, storage = 11116, effect = 6}, [2090] = {pos = {x = 2119, y = 1648, z = 5}, storage = 11117, effect = 7}, [2086] = {pos = {x = 2120, y = 1646, z = 5}, storage = 11118, effect = 8}} } function onAddItem(moveitem, tileitem, position, cid) function count(T) local count = 0 for _ in pairs(T) do count = count + 1 end return count end local item, check, p, count = t.basins[moveitem.itemid], 0, getPlayerPosition(cid), count(t.basins) if not item then return true end doRemoveItem(moveitem.uid) if p.x ~= t.player_pos.x or p.y ~= t.player_pos.y then doPlayerAddItem(cid, moveitem.itemid, 1) doPlayerSendCancel(cid, "Você deve estar no local correto.") doSendMagicEffect(p, CONST_ME_POFF) return true end if getPlayerStorageValue(cid, item.storage) > 0 then doPlayerAddItem(cid, moveitem.itemid, 1) doPlayerSendCancel(cid, "Você já sacrificou esta chave.") doSendMagicEffect(p, CONST_ME_POFF) return true end if position.x == item.pos.x and position.y == item.pos.y then doSendMagicEffect(position, CONST_ME_POFF) setPlayerStorageValue(cid, item.storage, 1) doSendMagicEffect(t.player_pos, item.effect) for i, v in pairs(t.basins) do if getPlayerStorageValue(cid, v.storage) > 0 then check = check + 1 if check == count then setPlayerStorageValue(cid, t.storage_final, 1) doSendMagicEffect(t.player_pos, t.efeito_final) end end end else doPlayerSendCancel(cid, "Coloque o item no seu lugar correto.") doPlayerAddItem(cid, moveitem.itemid, 1) doSendMagicEffect(p, CONST_ME_POFF) end end obrigado! você sempre salva cara! Editado Agosto 17, 2017 7 anos por JcA erro de portugueis (veja o histórico de edições)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.