Ir para conteúdo
  • 0

Peça Aqui o Seu Sistema/Evento!


Omega

Pergunta

Bom, quero abrir aqui um espaço para pedidos mais complexos, como um evento ou um sistema. Esse tipo de pedido geralmente não é atendido na seção de Pedidos e Dúvidas por ser trabalhoso demais se você for atender todo mundo, mas como eu tô sem ideias, resolvi criar um tópico para atender aos pedidos mais interessantes e publicar no fórum.

 

Considerações:

  • Use o bom-senso, não faça pedidos descabíveis
  • Explique o MÁXIMO que você puder sobre o que você quer, seja específico, descreva EXATAMENTE como deve acontecer
  • Embora eu esteja tentando aprender um pouco, eu não gosto e ainda não sei muita coisa específica sobre servidores derivados, então pedidos deste tipo devem ser postados fora desse tópico
  • Se alguém mais se disponibilizar a atender um pedido postado nesse tópico, por favor deixe um comentário avisando, para que não seja feito duas vezes
  • Recomendo a leitura desse tópico para qualquer pedido/dúvida, mas tais requisitos são especialmente importantes nesse tópico: Dicas para que seu pedido seja atendido

 

Editado por omega blueheaven
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

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 por Oneshot
Link para o comentário
Compartilhar em outros sites

  • 0

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 por KennyxD
Link para o comentário
Compartilhar em outros sites

  • 0

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

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

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 por Nextbr
Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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 por Snowsz
Link para o comentário
Compartilhar em outros sites

  • 0

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++

Link para o comentário
Compartilhar em outros sites

  • 0

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 por RenanBispo123
Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

Bom eu queria pedir 2 scripts

 

um e sobre sistema !pvp aki ja diz\/

 

00:04 ---------------

---Atacar membros da própria guild: Não. Para ligar/desligar: !pvp guild

---Atacar somente jogadores com skull: Sim. Para ligar/desligar: !pvp marked

---Atacar somente jogadores que te atacarem primeiro: Não. Para ligar/desligar: !pvp defensive

---Atacar somente jogadores da war: Não. Para ligar/desligar: !pvp war

---Atacar somente jogadores a partir de um certo level: 486. Para mudar o valor: !pvp level,<LEVEL_A_ATACAR>, exemplo !pvp level,100 atacará players level 100 ou mais

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

 

E outro é eu tenho 1 script de castle so que ele so conta o ultimo hit eu queria colocar pra ele contar quem hito mais

 

 

 

 

 

function onDeath(cid, corpse, deathList, mostDamageKiller)

local premios = {2469, 8306, 8852, 12604}

local rand = premios[math.random(#premios)]

local area = {fromx = 2177, fromy = 2676, fromz = 4, tox = 2286, toy = 2724, toz = 7}

 

if getCreatureName(cid) == "Ice Crystal" and isMonster(cid) then

 

for _, tid in pairs(getPlayersInArea(area)) do

setPlayerStorageValue(tid, 22369, -1)

doTeleportThing(tid, {x = 10000, y = 9999, z = 7})

end

 

setGlobalStorageValue(13003, 2)

doPlayerAddItem(deathList[1], rand)

doBroadcastMessage("[Castle Event] Resultado Final: O vencedor por maior eficiência da guild "..getPlayerGuildName(deathList[1]).." vencedora foi: "..getCreatureName(deathList[1])..", recebeu como prêmio "..getItemNameById(rand)..".", 21)

setGlobalStorageValue(13420, getPlayerGuildName(deathList[1]))

 

return true

end

 

return true

end

 

function getPlayersInArea(area)

 

local players = {}

 

for x = area.fromx,area.tox do

for y = area.fromy,area.toy do

for z = area.fromz,area.toz do

 

local m = getTopCreature({x=x, y=y, z=z}).uid

 

if m ~= 0 and isPlayer(m) then

table.insert(players, m)

end

end

end

end

return players

end

 

 

 

 

O Roksas fez um sistema que atende boa parte do seu pedido: PVP Changer System

 

Em breve voltarei a responder novos pedidos.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...