OM
pedido

Peça Aqui o Seu Sistema/Evento!

Por Omega, 17 de set. de 2013 em Scripts

resolvido
otserv
tibia
66
12.1k
LucasyeahL
21 de setembro de 2013 às 11:05

Muito Obrigado Omega por criar as 2 scripts que eu precisava, desculpe a demora para responder.... Valeew!

OneshotO
21 de setembro de 2013 às 12:23

Então, fazer um sistema de colisão de magias não tem muito segredo. O omega acertou ao dizer que as magias são executadas instantaneamente, mas errou ao dizer que não tem como verificar se o alvo planeja usar a magia também.

 

Eu fiz baseado na magia Flame Strike, do Tibia.

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1)

function onCastSpell(cid, var)
	doCreatureSetStorage(cid, 87600, 1)
	addEvent(function()
		local target = variantToNumber(var)
		if isPlayer(target) then
			local fromPosition, toPosition = getCreaturePosition(cid), getCreaturePosition(target)
			if getCreatureStorage(target, 87600) == 1 and getCreatureTarget(target) == cid then
				doCreatureSetStorage(cid, 87600, 2)
				doCreatureSetStorage(target, 87600, 2)
				
				local midPosition = {
					x = (fromPosition.x > toPosition.x and (fromPosition.x - ((fromPosition.x - toPosition.x) * 0.5)) or (toPosition.x - ((toPosition.x - fromPosition.x) * 0.5))),
					y = (fromPosition.y > toPosition.y and (fromPosition.y - ((fromPosition.y - toPosition.y) * 0.5)) or (toPosition.y - ((toPosition.y - fromPosition.y) * 0.5))),
					z = fromPosition.z,
				}
				
				doSendDistanceShoot(fromPosition, midPosition, CONST_ANI_FIRE)
				doSendDistanceShoot(toPosition, midPosition, CONST_ANI_FIRE)
				
				doSendMagicEffect(midPosition, CONST_ME_FIREAREA)
			end
		end
		
		if getCreatureStorage(cid, 87600) < 2 then
			doCreatureSetStorage(cid, 87600, -1)
			doCombat(cid, combat, var)
		end
	end, 15)
end

Abraços ;)

Editado Setembro 21 por Oneshot

LumusL
21 de setembro de 2013 às 12:25

Omega:

 

http://www.xtibia.com/forum/topic/221427-pedido-tile-alavanca/

KennyConradK
21 de setembro de 2013 às 13:18

Pedido evento zumbi automatico:

o evento acontece todos os sabados as 20:00.

 

Assim que dá 20:00 invez de criar um teleport é removido a statua de id :1551 da Position: [X: 435] [Y: 1333] [Z: 5].

embaixo dela terá um tile teleport pro evento que ficará aparecendo essas mensagens no tile informando quanto tempo falta para o evento começar e ser criado a statua novamente para que ninguem mais possa entrar.

 

2ypf0xu.png

 

O evento avisa para todos do servidor quando o evento vai começar.
20:00 O evento zumbi vai começar em 5 minutos! Entrem no evento enquanto há tempo! A entrada fica no templo de Tanaris.
20:01 O evento zumbi vai começar em 4 minutos! Entrem no evento enquanto há tempo! A entrada fica no templo de Tanaris.
20:02 O evento zumbi vai começar em 3 minutos! Entrem no evento enquanto há tempo! A entrada fica no templo de Tanaris.
20:03 O evento zumbi vai começar em 2 minutos! Entrem no evento enquanto há tempo! A entrada fica no templo de Tanaris.
20:04 O evento zumbi vai começar em 1 minuto! Entrem no evento enquanto há tempo! A entrada fica no templo de Tanaris.
20:05 Evento Zumbi Começou!
O evento anuncia o nome de cada jogador que entrou no evento e o limite de jogadores no evento é 50.
Ex:
20:01 Light Lizard entrou no evento zumbi! Temos um total de [1/50] participante(s).
20:01 Nicki Minaj Forrever entrou no evento zumbi! Temos um total de [2/50] participante(s).
20:01 New Dist entrou no evento zumbi! Temos um total de [3/50] participante(s).
20:01 Buttowski entrou no evento zumbi! Temos um total de [4/50] participante(s).
20:01 Khunng Lao entrou no evento zumbi! Temos um total de [5/50] participante(s).
20:01 Myttuz entrou no evento zumbi! Temos um total de [6/50] participante(s).
20:02 King Of Revenge entrou no evento zumbi! Temos um total de [7/50] participante(s).
20:02 Sexy Peoples entrou no evento zumbi! Temos um total de [8/50] participante(s).

 

dentro do evento assim que o evento for fechado é criado 1 zumbi a cada 20 segundos.

 

So ganha o ultimo player que sobreviver no evento.

 

O premio do evento é 300k + EXP configuravel.

 

se presisar de + explicações é so dizer ^^ espero que possa me ajudar.

Editado Setembro 21 por KennyxD

OmegaO
21 de setembro de 2013 às 16:05

Então, fazer um sistema de colisão de magias não tem muito segredo. O omega acertou ao dizer que as magias são executadas instantaneamente, mas errou ao dizer que não tem como verificar se o alvo planeja usar a magia também.

 

Eu fiz baseado na magia Flame Strike, do Tibia.

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1)

function onCastSpell(cid, var)
	doCreatureSetStorage(cid, 87600, 1)
	addEvent(function()
		local target = variantToNumber(var)
		if isPlayer(target) then
			local fromPosition, toPosition = getCreaturePosition(cid), getCreaturePosition(target)
			if getCreatureStorage(target, 87600) == 1 and getCreatureTarget(target) == cid then
				doCreatureSetStorage(cid, 87600, 2)
				doCreatureSetStorage(target, 87600, 2)
				
				local midPosition = {
					x = (fromPosition.x > toPosition.x and (fromPosition.x - ((fromPosition.x - toPosition.x) * 0.5)) or (toPosition.x - ((toPosition.x - fromPosition.x) * 0.5))),
					y = (fromPosition.y > toPosition.y and (fromPosition.y - ((fromPosition.y - toPosition.y) * 0.5)) or (toPosition.y - ((toPosition.y - fromPosition.y) * 0.5))),
					z = fromPosition.z,
				}
				
				doSendDistanceShoot(fromPosition, midPosition, CONST_ANI_FIRE)
				doSendDistanceShoot(fromPosition, midPosition, CONST_ANI_FIRE)
				
				doSendMagicEffect(midPosition, CONST_ME_FIREAREA)
			end
		end
		
		if getCreatureStorage(cid, 87600) < 2 then
			doCreatureSetStorage(cid, 87600, -1)
			doCombat(cid, combat, var)
		end
	end, 15)
end

Abraços ;)

 

 

Até que ficou bem legal. Eu tinha pensado em usar um addEvent checando storage, mas não tinha imaginado uma maneira de impedir ambas as magias e achei que atrapalharia mais do que vale a pena, se usasse um espaço de tempo considerável. 15ms não mudam quase nada (mas faz com que a probabilidade disso acontecer seja quase nula). O problema é que só funciona com magias de target também e além disso, o usuário pediu pra dar dano nos dois, mas isso eu sei que dá pra ajeitar fácil.

 

Encontrei um erro:

Um deles deveria ser toPosition

doSendDistanceShoot(fromPosition, midPosition, CONST_ANI_FIRE)
doSendDistanceShoot(fromPosition, midPosition, CONST_ANI_FIRE)

E a parte de calcular a posição do meio fica mais simples assim:

x = (fromPosition.x + toPosition.x) / 2,
y = (fromPosition.y + toPosition.y) / 2,
z = fromPosition.z,

E afinal, eu não errei. É uma questão de interpretação, você alterou as magias pra checar se o cara já usou, não se ele vai usar. O que eu quis dizer é que, em outros jogos, algumas magias demoram pra atingir o adversário, o que não é o caso do tibia, tornando IMPOSSÍVEL checar se o jogador vai ser atingido por uma magia em andamento, não uma magia "atrasada".

Tenho mais um pedido, referente à essas funções que você já fez (http://pastebin.com/wkEREEHK) quero uma função nova que sorteie posições fixas e diferentes pra cada um dos players da tabela e teleporte eles pra essa posição.

 

 

local eventPos = {
[1] = {},
[2] = {},
[3] = {},
[4] = {},
[5] = {},
[6] = {},
--etc...
}

function doTeleportPlayersEvent()
	local list = getEventList()
	local positions = eventPos
	local players = {}
	for _, name in pairs(list) do
		if isCreature(getCreatureByName(name)) then
			table.insert(players, getCreatureByName(name))
		end
	end
	for _, pid in pairs(players) do
		local x = math.random(#positions)
		local pos = positions[x]
		doTeleportThing(pid, pos)
		table.remove(positions, x)
	end
end

 

 

21 de setembro de 2013 às 16:29

Gostaria de um Surviv ao do amigo,só que seria por team,seria 4 pessoas, tipo anihi

21 de setembro de 2013 às 17:59

Amigo, tenho um pedido pra você!!

 

Na verdade não é bem 1 pedido, é uma ajuda..

 

Nos meus eventos, os players usam roupas especificas, mais no meu server eles se aproveitam da mount para trocar o outfit..

 

teria uma função que anulase o player de mountar para nao trocar o outfit?

 

Obrigado.

e a condition [Cor das Roupas] que ganha quando vai no evento voce teria que muda o script de condition para docreaturechangeoutfit ai quando usar montarias o char montado em cima vai esta com a cor da roupa iguais ao outros jogadores Posta o Script +- assim

 

Lib.

local WAR_COLORS = {{0,94,94,94},{114,87,87,87}} -- cores das roupas time vermelho e azul

---------------------------------------------------------------------

function mudarRopa(cid)

local colors = WAR_COLORS[getPlayerStorageValue(cid, 12000)] -- verifica qual time é.

local outfit = getCreatureOutfit(cid)

outfit.lookHead = colors[1]

outfit.lookBody = colors[2]

outfit.lookLegs = colors[3]

outfit.lookFeet = colors[4]

doCreatureChangeOutfit(cid, outfit)

end

 

 

ai no tile que esta o evento poem essa funcao mudarRopa(cid)

Editado Setembro 21 por Nextbr

OneshotO
21 de setembro de 2013 às 22:19

Eu coloquei 15 milissegundos por colocar, não sei se vai funcionar nesse curto espaço de tempo. rsrsr

Editado Setembro 21 por Oneshot

MykezM
21 de setembro de 2013 às 22:30

Por que ele ainda esta de estagiário ? Oia ele manja nos paranue otima Iniciativa torcendo por você na equipe aqui vlw flwz.

SkailordS
22 de setembro de 2013 às 16:17

Valeu cara e funcionou a script e aq vai minha ultima, uma spell que ao falar o nome da spell junto com o nome do player dá buff stantaneo no outro player, mas o buff so funciona no outro player se eu mandar (falar o nome da spell e o nome dele).

OmegaO
22 de setembro de 2013 às 21:47

Queria Fazer o Sistema de QG (QUARTEL GENERAL).

 

Assim queria fazer uma casinha que nela tem um portal Imagem Abaixo...e queria que quando uma pessoa falasse !qg ela aparecia um negocio igual do spellbook falando qual bixos tem para escolher para colocar na Cave.

Explicando Melhor:

Assim uma pessoa compra uma QG e nela tem varios bixos para escolher. Presciza Apertar uma Alavanca dai Aparece Isso

19:31 Monstro Escolhido Na Qg.

Pedido atendido: Sistema de Quartel General

SnowszS
22 de setembro de 2013 às 23:35

Valeu cara e funcionou a script e aq vai minha ultima, uma spell que ao falar o nome da spell junto com o nome do player dá buff stantaneo no outro player,

mas o buff so funciona no outro player se eu mandar (falar o nome da spell e o nome dele).

 

 

 

 

Pedido atendido:[spell] Buff Sio

Editado Setembro 23 por Snowsz

s2dieginhoS
23 de setembro de 2013 às 22:48

comando de abrir e fechar evento para quem os players não possa usar o comando em quando o evento não começar

!open survivor

!close survivor

eu gostaria de que quando o player usa-se o comando !survivor fosse teletransportado para uma arena pro seu level

existem 4 arenas arena ''A'' arena'' B'' arena'' C'' arena''D''

ex:.

players do level 80 ao 150 ao usa o comando fossem teletransportado para arena ''A''

players do level 151 ao 220 ao usa o comando fossem teletransportado para arena ''B''

players do level 221 ao 320 ao usa o comando fossem teletransportado para arena ''C''

players do level 321 em diante fossem teletransportado para arena ''D''

 

Bom e isso espero que você me ajude

rep++

25 de setembro de 2013 às 16:46

Queria um sistema de desafio de monstros o sistema funciona assim: link do vídeo: http://www.youtube.com/watch?v=_XodAtRvq4w

 

explicação

 

 

para ter acesso ao evento vc tem que pegar a permição com um npcs!

 

itens nessesario para conseguir a permição com o npcs:

 

nivel 1: 10k

nivel 2: 10k + 10 small saphires (n lembro se é assim que se escreve)

nivel 3: 10k + 10 small saphires + 10 blue gem

nivel 4: 10k + 10 small sphires + 10 blue gem + 10 turtle shell

 

inicialização:

 

o evento se inicia as 20:00 (segunda e sexta) e as 15:00 (quarta)

 

na arena:

 

quando começa a apareser os bichos tem que apareser 1 bicho para cada player.

 

Ex: 1 dragon,1 demon, 1 rat

caso tenha 2 players na arena aparesera 2 dragon 2 demon e 2 rat

e assim sucessivamente.

 

o maximo de player em cada arena (nivel) são 20 player!

dentro da arena não pode mandar magic wall rune ou algum tipo de runa que impessa que o bicho nasça.

 

e naqueles pisos brancos semente bichos podem andar por la os players não podem andar naquele piso.

 

 

Premio:

nivel 1: 120k + trofeu com o seu nome e data (os ID eu escolho depois)

nivel 2: 300k + trofeu com o seu nome e data (os ID eu escolho depois)

nivel 3: 450k + trofeu com o seu nome e data (os ID eu escolho depois)

nivel 4: 700k + trofeu com o seu nome e data (os ID eu escolho depois)

 

 

 

OBRIGADO!

 

REP+

Editado Setembro 25 por RenanBispo123

davidjohsonD
26 de setembro de 2013 às 01:22

Um que seria bacana e mt gente ia usar, mt msm é assim pvp opção

 

O cara dava /pvp off

As rates dele de skill e level e loot se desse ficava 0,5 o que era pra ser, mas ninguem pude-se atacar ele, pq ele ta no modo non pvp, nem com magia de area

E o cara dava /pvp on

Voltava pro original xp 1, skill 1, loot 1

 

Ao logar pela primeira vez ficava no modo pvp on, pra usar esses comandos teria q esperar 24 hrs, tipo usou agora só pode usar daqui a 24 hrs