Postado Junho 25, 2018 7 anos Gente eu queria uma ajuda com esse script, Esse script ao dominar o castelo ele teleporta somente os players que estiver no andar configurado do castelo, Eu queria poder selecionar mais áreas tipo z=7, z=8, z=9 etc... Para que quando o player de tal guild dominar todos que estiver no castelo serem teleportados para o templo!. Pfv gente fortalece ae to lançando meu servidor hoje!, Pfv nenhum pedido de ajuda que pedi aqui foi respondido com tanto scripter avançados no tk... Segue o script abaixo. Citar local castlearea = {{x = 852, y = 1424, z = 7}, {x = 946, y = 1491, z = 7}} --- canto superior esquerdo, inferior direito local newpos = {x=1024,y=1024,z=7} -- posição para onde serão teleportados function onUse(cid, item, frompos, item2, topos) local castle_one_name = "{Under_Castle}" -- Nome do castelo 1 local storages = {154154,54321,123123} -- Storages ( se vc eh iniciante, deixe como está...) local premio_por_vezes = 15 -- Premio por vezes de conquista de castelo. (1) = Ativo (0) = Desativa. local premio_vezes = 1 -- Caso ativo, a quantidade de conquista que o player tem, para ganhar PREMIO. local premio = 2160 -- ID do Premio local premio_cont = 1 -- Quantidade do Premio local premio_reset = 0 -- Resetar o contador do premio depois que atingir a meta?? (1) = SIM (0) = NAO local sto_ativ = getGlobalStorageValue(storages[2]) position = getCreaturePosition(cid) if isPlayerGuild(cid) == TRUE then if sto_ativ == 1 or sto_ativ == -1 then guildname = getPlayerGuildName(cid) guild = getPlayerGuildId(cid) guild_sto = getGlobalStorageValue(storages[3]) if guild ~= guild_sto then setPlayerStorageValue(cid,guild_sto,guild) if getPlayerStorageValue(cid,storages[1]) == -1 then setPlayerStorageValue(cid,storages[1],0) end sto_vezes = getPlayerStorageValue(cid,storages[1]) setGlobalStorageValue(storages[3],getPlayerGuildId(cid)) setPlayerStorageValue(cid,storages[1], sto_vezes + 1) sto_vezes_total = getPlayerStorageValue(cid,storages[1]) doBroadcastMessage("O(a) "..getCreatureName(cid).." acabou de conquistar o castelo "..castle_one_name.." para a guild \""..guildname.."\" pela "..sto_vezes_total.."ª vez(s).", 22) local playersOnCastle = getAllPlayersInArea(castlearea[1], castlearea[2]) if #playersOnCastle > 0 then for i = 1, #playersOnCastle do doTeleportThing(playersOnCastle, newpos)end doSendMagicEffect(newpos, CONST_ME_TELEPORT) end db.query("UPDATE `guilds` SET `real_castle` = 0;") db.query("UPDATE `guilds` SET `real_castle` = 1 WHERE `guilds`.`id` = ".. guild ..";") doSendMagicEffect(position, 39) if premio_por_vezes == 1 then if getPlayerStorageValue(cid,storages[1]) == premio_vezes then if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then doBroadcastMessage("O "..getCreatureName(cid).." ganhou uma(o) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!", 21) doPlayerAddItem(cid, premio,premio_cont) doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!") ----------------------------------------------- -- if premio_reset == 1 then -- setPlayerStorageValue(cid,storages[1],0) -- Resetar a contagem end -- ----------------------------------------------- -- else doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Vamos verificar novamente em 10 segundos!") addEvent(additem,10000,cid,premio,premio_cont,premio_reset) end end end else doPlayerSendCancel(cid,"Este castelo ja foi conquistado pela sua guild!") doSendMagicEffect(position, 2) end else doPlayerSendCancel(cid,"O sistema está desativado") end else doPlayerSendCancel(cid,"É nescessario ter guild para dominar o castelo!") doSendMagicEffect(position, 2) endendfunction additem(cid,premio,premio_cont,premio_reset) if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then doPlayerAddItem(cid, premio,premio_cont) doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!") if premio_reset == 1 then setPlayerStorageValue(cid,storages[1],0) end stopEvent(additem) else doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Verificando novamente em 10 segundos!") addEvent(additem,10000,cid) endendfunction isPlayerGuild(cid)if getPlayerGuildName(cid) ~= "" thenreturn TRUEelsereturn FALSEendend function getAllPlayersInArea(fromPosition, toPosition) local players = {} for _, pid in ipairs(getPlayersOnline()) do local f = {x = fromPosition.x, y = fromPosition.y, z = fromPosition.z} local t = {x = toPosition.x, y = toPosition.y, z = toPosition.z} local min = (fromPosition.z > toPosition.z and toPosition.z or fromPosition.z) for index = 0, math.abs(toPosition.z - fromPosition.z) do f.z = min + index t.z = min + index if isInRange(getPlayerPosition(pid), f, t) then table.insert(players, pid) end end end return playersend Se estiver na área errada peço perdão e pfv peço que mova! Editado Junho 25, 2018 7 anos por Wesley Alexandre2014 (veja o histórico de edições)
Postado Junho 26, 2018 7 anos Este tópico foi movido para a área correta. Esta é uma mensagem automática!Pedimos que leia as regras do fórum! Spoiler This topic has been moved to the correct area. This is an automated message!Please read the forum rules. @Wesley Alexandre2014 na tabela castlearea mude a pos z do topos ou frompos, não importa, então ele vai percorrer todas as posições desde o andar definido, até o próximo andar.
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.