Postado Outubro 25, 2018 6 anos Autor @lordzetros Posso sim, os únicos scripts que eu tenho ai são Abrir as portas e fechar as portas Citar local day = "tuesday" --Mude o dia que o evento será executado aqui. EM INGLÊS. local id = 1547 local posis = { {x = 3084, y = 569, z = 6}, -- posição da barreira {x = 3085, y = 569, z = 6}, -- posição da barreira {x = 3086, y = 569, z = 6}, -- posição da barreira {x = 3087, y = 569, z = 6}, -- posição da barreira {x = 3088, y = 569, z = 6}, -- posição da barreira {x = 3084, y = 567, z = 6}, -- posição da barreira {x = 3085, y = 567, z = 6}, -- posição da barreira {x = 3086, y = 567, z = 6}, -- posição da barreira {x = 3087, y = 567, z = 6}, -- posição da barreira {x = 3088, y = 567, z = 6}, -- posição da barreira } function onTime() if os.date("%A") == day then for i = 1, #posis do local item = getTileItemById(posis, id).uid if item > 0 then doRemoveItem(item, 1) else doCreateItem(id, 1, posis) end end end return true end Teleport Citar local configuration = { day = "tuesday", to_pos = {x = 3186, y = 568, z = 3}, --Para onde o teleport levará. pos = {x = 3186, y = 574, z = 3}, --Onde o teleport será criado. teleport_id = 1387, --ID do teleport. aid = 3434, --Action ID do teleport. } function onTime() if os.date("%A") == configuration.day then local item = getTileItemById(configuration.pos, configuration.teleport_id).uid if item < 1 then local tp = doCreateTeleport(configuration.teleport_id, configuration.to_pos, configuration.pos) doItemSetAttribute(tp, "aid", configuration.aid) broadcastMessage("Suba no trono e termine o castle", MESSAGE_STATUS_WARNING) end end return true end Globalevents Citar <globalevent name="openterca" time="01:00" event="script" value="castle/open1.lua"/> <globalevent name="closeterca" time="01:30" event="script" value="castle/close1.lua"/> <globalevent name="tpterca" time="01:29" event="script" value="castle/tp1.lua"/> o horário está assim porque servidor está 3 horas adiantado
Postado Outubro 26, 2018 6 anos Solução Em data/creaturescripts/scripts/ crie um arquivo chamado castleDano.lua e adicione o seguinte código dentro: local posicoes_castle = { [1] = {supEsquerdo = {x = 1014, y = 1036, z = 7}, infDireito = {x = 1032, y = 1042, z = 7}}, [2] = {supEsquerdo = {x = 1014, y = 1036, z = 7}, infDireito = {x = 1032, y = 1042, z = 6}}, [3] = {supEsquerdo = {x = 1014, y = 1036, z = 7}, infDireito = {x = 1032, y = 1042, z = 5}}, [4] = {supEsquerdo = {x = 1014, y = 1036, z = 7}, infDireito = {x = 1032, y = 1042, z = 4}}, } local porcento = 0.2 -- 0.2 = 20% function players_area(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 players end function onStatsChange(cid, attacker, type, combat, value) if (type == STATSCHANGE_HEALTHLOSS and isPlayer(attacker) and isPlayer(cid) and getGlobalStorageValue(25580) == 2) then local total = {} for k = 1, #posicoes_castle do table.insert(total, players_area(posicoes_castle[k].supEsquerdo, posicoes_castle[k].infDireito)) end if (isInArray(total, getPlayerPosition(cid)) and isInArray(total, getPlayerPosition(attacker))) then local valor_m = porcento * value doTargetCombatHealth(attacker, cid, combat, valor_m, valor_m, COLOR_NONE) end end return true end Em data/creaturescripts/creaturescripts.xml adicione a seguinte linha abaixo de uma semelhante: <event type="statschange" name="reduzCastle" event="script" value="castleDano.lua"/> Em data/creaturescripts/scripts/login.lua adicione isto abaixo de outro semelhante (registerCreatureEvent): registerCreatureEvent(cid, "reduzCastle") Agora modificando seu script, no Teleport.lua local configuration = { day = "tuesday", to_pos = {x = 3186, y = 568, z = 3}, --Para onde o teleport levará. pos = {x = 3186, y = 574, z = 3}, --Onde o teleport será criado. teleport_id = 1387, --ID do teleport. aid = 3434, --Action ID do teleport. } function onTime() if os.date("%A") == configuration.day then local item = getTileItemById(configuration.pos, configuration.teleport_id).uid if item < 1 then local tp = doCreateTeleport(configuration.teleport_id, configuration.to_pos, configuration.pos) doItemSetAttribute(tp, "aid", configuration.aid) broadcastMessage("Suba no trono e termine o castle", MESSAGE_STATUS_WARNING) setGlobalStorageValue(25580, 2) end end return true end E no close1.lua - close1 é igual open1, certo? Se for, adicione isto no close1 mesmo (poderiam ter feito 1 script para as duas coisas, mas tudo bem): local day = "tuesday" --Mude o dia que o evento será executado aqui. EM INGLÊS. local id = 1547 local posis = { {x = 3084, y = 569, z = 6}, -- posição da barreira {x = 3085, y = 569, z = 6}, -- posição da barreira {x = 3086, y = 569, z = 6}, -- posição da barreira {x = 3087, y = 569, z = 6}, -- posição da barreira {x = 3088, y = 569, z = 6}, -- posição da barreira {x = 3084, y = 567, z = 6}, -- posição da barreira {x = 3085, y = 567, z = 6}, -- posição da barreira {x = 3086, y = 567, z = 6}, -- posição da barreira {x = 3087, y = 567, z = 6}, -- posição da barreira {x = 3088, y = 567, z = 6}, -- posição da barreira } function onTime() if os.date("%A") == day then for i = 1, #posis do local item = getTileItemById(posis, id).uid if item > 0 then doRemoveItem(item, 1) else doCreateItem(id, 1, posis) end end setGlobalStorageValue(25580, 1) end return true end EXPLICAÇÃO: A ideia é fazer com que o player que sofreu o ataque ganhe 20% do dano total que recebeu. Na parte das posicoes_castle do script que fiz, tu vai configurar o canto superior esquerdo e inferior direito da área total de cada andar Segue imagem para demonstração: Feliz daquele que ensina o que sabe, e aprende o que ensina.
Postado Outubro 27, 2018 6 anos Autor 15 horas atrás, lordzetros disse: Em data/creaturescripts/scripts/ crie um arquivo chamado castleDano.lua e adicione o seguinte código dentro: local posicoes_castle = { [1] = {supEsquerdo = {x = 1014, y = 1036, z = 7}, infDireito = {x = 1032, y = 1042, z = 7}}, [2] = {supEsquerdo = {x = 1014, y = 1036, z = 7}, infDireito = {x = 1032, y = 1042, z = 6}}, [3] = {supEsquerdo = {x = 1014, y = 1036, z = 7}, infDireito = {x = 1032, y = 1042, z = 5}}, [4] = {supEsquerdo = {x = 1014, y = 1036, z = 7}, infDireito = {x = 1032, y = 1042, z = 4}}, } local porcento = 0.2 -- 0.2 = 20% function players_area(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 players end function onStatsChange(cid, attacker, type, combat, value) if (type == STATSCHANGE_HEALTHLOSS and isPlayer(attacker) and isPlayer(cid) and getGlobalStorageValue(25580) == 2) then local total = {} for k = 1, #posicoes_castle do table.insert(total, players_area(posicoes_castle[k].supEsquerdo, posicoes_castle[k].infDireito)) end if (isInArray(total, getPlayerPosition(cid)) and isInArray(total, getPlayerPosition(attacker))) then local valor_m = porcento * value doTargetCombatHealth(attacker, cid, combat, valor_m, valor_m, COLOR_NONE) end end return true end Em data/creaturescripts/creaturescripts.xml adicione a seguinte linha abaixo de uma semelhante: <event type="statschange" name="reduzCastle" event="script" value="castleDano.lua"/> Em data/creaturescripts/scripts/login.lua adicione isto abaixo de outro semelhante (registerCreatureEvent): registerCreatureEvent(cid, "reduzCastle") Agora modificando seu script, no Teleport.lua local configuration = { day = "tuesday", to_pos = {x = 3186, y = 568, z = 3}, --Para onde o teleport levará. pos = {x = 3186, y = 574, z = 3}, --Onde o teleport será criado. teleport_id = 1387, --ID do teleport. aid = 3434, --Action ID do teleport. } function onTime() if os.date("%A") == configuration.day then local item = getTileItemById(configuration.pos, configuration.teleport_id).uid if item < 1 then local tp = doCreateTeleport(configuration.teleport_id, configuration.to_pos, configuration.pos) doItemSetAttribute(tp, "aid", configuration.aid) broadcastMessage("Suba no trono e termine o castle", MESSAGE_STATUS_WARNING) setGlobalStorageValue(25580, 2) end end return true end E no close1.lua - close1 é igual open1, certo? Se for, adicione isto no close1 mesmo (poderiam ter feito 1 script para as duas coisas, mas tudo bem): local day = "tuesday" --Mude o dia que o evento será executado aqui. EM INGLÊS. local id = 1547 local posis = { {x = 3084, y = 569, z = 6}, -- posição da barreira {x = 3085, y = 569, z = 6}, -- posição da barreira {x = 3086, y = 569, z = 6}, -- posição da barreira {x = 3087, y = 569, z = 6}, -- posição da barreira {x = 3088, y = 569, z = 6}, -- posição da barreira {x = 3084, y = 567, z = 6}, -- posição da barreira {x = 3085, y = 567, z = 6}, -- posição da barreira {x = 3086, y = 567, z = 6}, -- posição da barreira {x = 3087, y = 567, z = 6}, -- posição da barreira {x = 3088, y = 567, z = 6}, -- posição da barreira } function onTime() if os.date("%A") == day then for i = 1, #posis do local item = getTileItemById(posis, id).uid if item > 0 then doRemoveItem(item, 1) else doCreateItem(id, 1, posis) end end setGlobalStorageValue(25580, 1) end return true end EXPLICAÇÃO: A ideia é fazer com que o player que sofreu o ataque ganhe 20% do dano total que recebeu. Na parte das posicoes_castle do script que fiz, tu vai configurar o canto superior esquerdo e inferior direito da área total de cada andar Segue imagem para demonstração: Oie, desculpa te incomodar, mas eu fiz tudo certinho, e não aconteceu nada, coloquei para reduzir até 90% e nada aconteceu meu castledano modificado Citar local posicoes_castle = { [1] = {supEsquerdo = {x = 3073, y = 536, z = 6}, infDireito = {x = 3213, y = 623, z = 6}}, [2] = {supEsquerdo = {x = 3073, y = 536, z = 5}, infDireito = {x = 3213, y = 623, z = 5}}, [3] = {supEsquerdo = {x = 3073, y = 536, z = 4}, infDireito = {x = 3213, y = 623, z = 4}}, [4] = {supEsquerdo = {x = 3073, y = 536, z = 3}, infDireito = {x = 3213, y = 623, z = 3}}, } local porcento = 0.9 -- 0.2 = 20% function players_area(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 players end function onStatsChange(cid, attacker, type, combat, value) if (type == STATSCHANGE_HEALTHLOSS and isPlayer(attacker) and isPlayer(cid) and getGlobalStorageValue(25580) == 2) then local total = {} for k = 1, #posicoes_castle do table.insert(total, players_area(posicoes_castle[k].supEsquerdo, posicoes_castle[k].infDireito)) end if (isInArray(total, getPlayerPosition(cid)) and isInArray(total, getPlayerPosition(attacker))) then local valor_m = porcento * value doTargetCombatHealth(attacker, cid, combat, valor_m, valor_m, COLOR_NONE) end end return true end Lembrando que eu estou em linux, se for melhor para ti fazer um tiler, eu mudo sim um por um sem probleminhas kk
Postado Outubro 28, 2018 6 anos @DouglasVinicius Nenhum erro? Tipo, se tu achar que não mudou porque o cara tá tirando o mesmo dano, isso é normal, porque com esse script ele não 'reduz o dano' diretamente, tipo, o cara tira 600 de dano, se eu configurar para 'reduzir' 10%, então ele depois de tirar 600 de dano, o script vai dá 10% de vida para o usuário que sofreu o dano. Tecnicamente se o player não morrer, o atacante tirou 540 de dano. Feliz daquele que ensina o que sabe, e aprende o que ensina.
Postado Outubro 28, 2018 6 anos Autor @lordzetros Muito obrigado então amiguinho, vou deixar então até começar as guerras, vlw mesmo
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.