Ir para conteúdo

Featured Replies

Postado
  • 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

  • Respostas 14
  • Visualizações 585
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • @DouglasVinicius Ia demorar um pouco, kkk, mas sim, é possível de pegar em massa, agora o seguinte, o seu castle tem outros 'andares'? Ou é só em um plano?

  • Sem problemas, :]. É TFS 0.4?

  • @DouglasVinicius Terminei, colega, no servidor que efetuo testes de scripts está funcional, agora me diz uma coisa, você sabe me dizer se seu castle tem algum globalStorage que salva se o mesmo tá abe

Posted Images

Postado
  • 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:

Screenshot_42.thumb.png.b3f7de6229d586bad1bac39d78e0f357.png

Feliz daquele que ensina o que sabe, e aprende o que ensina.

 

               

star-wars-animated-gif-23.gif

Postado
  • 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:

Screenshot_42.thumb.png.b3f7de6229d586bad1bac39d78e0f357.png

 

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

@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.

 

               

star-wars-animated-gif-23.gif

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo