Ir para conteúdo
  • Cadastre-se

[Resolvido] [Pedido] Sistema de Times para PVP


Posts Recomendados

Bom, o titulo já diz tudo, a área pvp já ta certa mas quero assim: quando o player entrar no pvp um nascer de um lado sendo do time Azul e o outro nascer do outro lado sendo do Time Vermelho. O de teleport eu já arrumei, só quero mesmo é o Sistema de Times, Azul e Vermelho. REP+ pra quem resolver :D

                                                                           wcoq.jpg

Link para o post
Compartilhar em outros sites

Segue o código abaixo (não testei)

em "data\creaturescripts\scripts" crie um arquivo chamado "pvpTeam.lua" e cole o seguinte código

redTeamSpawn 			= { x = 100, y = 100, z = 7} -- red team spawn position
blueTeamSpawn 			= { x = 200, y = 200, z = 7} -- blue team spawn position

redTeamParticipants 	= {}

blueTeamParticipants 	= {}

function teamLength(team) -- return the number of players in team
  local count = 0
  for _ in pairs(T) do count = count + 1 end
  return count
end

function playerJoin(cid) -- try to join player in event
	if ableToJoin(cid) then
		redTeamParticipantsLength 	= teamLength(redTeamParticipants)
		blueTeamParticipantsLength 	= teamLength(blueTeamParticipants)
		if redTeamParticipantsLength <= blueTeamParticipantsLength then
			redTeamParticipants[cid] 	= true
		else
			blueTeamParticipants[cid]	= true
		end
		return TRUE
	else
		return FALSE
	end
end

function playerRemove(cid) -- remove player from event (if its participating)
	if isParticipating(cid) then
		if redTeamParticipants[cid] == true then
			redTeamParticipants[cid] 	= nil
		else
			blueTeamParticipants[cid] 	= nil
		end
		return TRUE
	else
		return FALSE
	end
end

function isParticipating (cid) -- verify if player is participating of the event
	if blueTeamParticipants[cid] == true or redTeamParticipants[cid] == true then
		return FALSE
	else
		return TRUE
	end
end

function ableToJoin (cid) -- checks if players are able to join
	if isPlayer(cid) and not isParticipating(cid) then
		return TRUE
	else
		return FALSE
	end
end

function playersOfSameTeam (cid1, cid2) -- checks if the players are of the same team
	if ((blueTeamParticipants[cid1] == true and blueTeamParticipants[cid2] == true) or (redTeamParticipants[cid1] and redTeamParticipants[cid2])) then
		return TRUE
	else
		return FALSE
	end
end

function onLogout(cid) -- this function is essential to not unbalance the teams
	if isParticipating (cid) then
		return playerRemove(cid)
	end
	return TRUE
end

function onStatsChange(cid, attacker, t, combat, value)
	-- verify if both are logged in
	if not isPlayer(cid) or not isPlayer(attacker) then return FALSE end
	
	-- verify if both are participating of PVP
	if isParticipating(cid) and isParticipating(attacker) then
		-- both are participating of event
		
		-- verify if both are of the same team
		if playersOfSameTeam(cid, attacker) then
			-- they're of the same team. Only heals are acceptable
			if t == STATSCHANGE_HEALTHGAIN then
				return TRUE
			else
				return FALSE
			end
		else
			-- they're not of the same team. Only damages are acceptable
			if t == STATSCHANGE_HEALTHGAIN then
				return FALSE
			else
				return TRUE
			end
		end
	else
		-- one or both are not participating of event
		return TRUE
	end
	
	-- getting
	local player1Team = monstersTeam[getCreatureName(cid)]
	-- return if it has no team
	if player1Team == nil then return TRUE end
	
	-- getting monster that is attacking team
	local monster2Team = monstersTeam[getCreatureName(attacker)]
	-- return if it has no team
	if monster2Team == nil then return TRUE end
	
	-- check if they're of the same team
	if monster1Team == monster2Team then
		-- if they're of the same team, returning false will not allow the damage to be done to its partner
		return FALSE
	else
		return TRUE
	end
		
	return TRUE
end
 

agora, em "creaturescripts.xml" adicione o seguinte

<event type="statschange" name="PvpTeam1" event="script" value="pvpTeam.lua"/>
<event type="logout" name="PvpTeam2" event="script" value="pvpTeam.lua"/>

 

depois, no arquivo "login.lua" que se encontra em "data\creaturescripts\scripts" adicione

registerCreatureEvent(cid, "PvpTeam1")
registerCreatureEvent(cid, "PvpTeam2")

Lembrando que você tem que acoplar a sua função de participação do evento à este sistema que eu fiz (já possui as funções de adicionar e remover players).

 

Caso dê algum problema, me fale, podemos testar o sistema mais tarde.

 

Bom, é isso.

 

Espero ter ajudado.

 

P.S.: Não me importo que roubem meus créditos e/ou postem em outros fórums.

Editado por warotserv (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Tipo não é de evento tlg, é só um PVP normal' mas eu queria de times

                                                                           wcoq.jpg

Link para o post
Compartilhar em outros sites

Pronto, sistema testado e funcionando.

em "data\creaturescripts\scripts" crie um arquivo chamado "pvpTeam.lua" e cole o seguinte código

redTeamSpawn 			= { x = 100, y = 100, z = 7} -- red team spawn position
blueTeamSpawn 			= { x = 200, y = 200, z = 7} -- blue team spawn position

redTeamParticipants 	= {}

blueTeamParticipants 	= {}

function teamLength(team) -- return the number of players in team
  local count = 0
  for _ in pairs(team) do count = count + 1 end
  return count
end

function playerJoin(cid) -- try to join player in event
	if ableToJoin(cid) then
		redTeamParticipantsLength 	= teamLength(redTeamParticipants)
		blueTeamParticipantsLength 	= teamLength(blueTeamParticipants)
		if redTeamParticipantsLength <= blueTeamParticipantsLength then
			redTeamParticipants[cid] 	= true
			doPlayerSendTextMessage(cid,22,"Voce foi escolhido para ser do time vermelho.")
		else
			blueTeamParticipants[cid]	= true
			doPlayerSendTextMessage(cid,22,"Voce foi escolhido para ser do time azul.")
		end
		return TRUE
	else
		return FALSE
	end
end

function playerRemove(cid) -- remove player from event (if its participating)
	if isParticipating(cid) then
		if redTeamParticipants[cid] == true then
			redTeamParticipants[cid] 	= nil
		else
			blueTeamParticipants[cid] 	= nil
		end
		return TRUE
	else
		return FALSE
	end
end

function isParticipating (cid) -- verify if player is participating of the event
	if blueTeamParticipants[cid] == true or redTeamParticipants[cid] == true then
		return TRUE
	else
		return FALSE
	end
end

function ableToJoin (cid) -- checks if players are able to join
	if isPlayer(cid) and not isParticipating(cid) then
		return TRUE
	else
		return FALSE
	end
end

function arePlayersOfSameTeam (cid1, cid2) -- checks if the players are of the same team
	if ((blueTeamParticipants[cid1] == true and blueTeamParticipants[cid2] == true) or (redTeamParticipants[cid1] and redTeamParticipants[cid2])) then
		return TRUE
	else
		return FALSE
	end
end

function onLogin(cid)
	-- checks if it's really a player and if it's only
	if isPlayer(cid) then
		if isParticipating(cid) == true then
			return FALSE -- Ooops! If the script reachs here, we gotta verify what's going wrong
		else
			if playerJoin(cid) == true then
				return TRUE -- everything gone as expected
			else
				return FALSE  -- Ooops! If the script reachs here, we gotta verify what's going wrong
			end
		end 
	else
		return TRUE
	end
end

function onLogout(cid) -- this function is essential to not unbalance the teams
	if isParticipating (cid) then
		return playerRemove(cid)
	end
	return TRUE
end

function onAttack(cid, attacker)
	-- verify if both are players
	if not isPlayer(cid) or not isPlayer(attacker) then return TRUE end
	
	-- are those players participating of the event?
	if not isParticipating(cid) or not isParticipating (attacker) then return TRUE end
	
	if arePlayersOfSameTeam(cid, attacker) then
		-- a player of the same team cannot attack the other!!
		return FALSE
	else
		return TRUE
	end
end

function onStatsChange(cid, attacker, t, combat, value)
	-- verify if both are players
	if not isPlayer(cid) or not isPlayer(attacker) then return TRUE end
	
	-- verify if both are participating of PVP
	if isParticipating(cid) and isParticipating(attacker) then
		-- both are participating of event
		
		-- verify if both are of the same team
		if arePlayersOfSameTeam(cid, attacker) then
			-- they're of the same team. Only heals are acceptable
			if t == STATSCHANGE_HEALTHGAIN or t == STATSCHANGE_MANAGAIN   then
				return TRUE
			else
				return FALSE
			end
		else
			-- they're not of the same team. Only damages are acceptable
			if t == STATSCHANGE_HEALTHGAIN or t == STATSCHANGE_MANAGAIN then
				return FALSE
			else
				return TRUE
			end
		end
	else
		-- one or both are not participating of event
		return TRUE
	end
	
	-- getting
	local player1Team = monstersTeam[getCreatureName(cid)]
	-- return if it has no team
	if player1Team == nil then return TRUE end
	
	-- getting monster that is attacking team
	local monster2Team = monstersTeam[getCreatureName(attacker)]
	-- return if it has no team
	if monster2Team == nil then return TRUE end
	
	-- check if they're of the same team
	if monster1Team == monster2Team then
		-- if they're of the same team, returning false will not allow the damage to be done to its partner
		return FALSE
	else
		return TRUE
	end
		
	return TRUE
end

agora, em "creaturescripts.xml" adicione o seguinte

<event type="attack" name="PvpTeam1" event="script" value="pvpTeam.lua"/>
<event type="statschange" name="PvpTeam2" event="script" value="pvpTeam.lua"/>
<event type="login" name="PvpTeam3" event="script" value="pvpTeam.lua"/>
<event type="logout" name="PvpTeam4" event="script" value="pvpTeam.lua"/> 

depois, no arquivo "login.lua" que se encontra em "data\creaturescripts\scripts" adicione

registerCreatureEvent(cid, "PvpTeam1")
registerCreatureEvent(cid, "PvpTeam2")
registerCreatureEvent(cid, "PvpTeam3")
registerCreatureEvent(cid, "PvpTeam4") 

Obs: use os spawn points apenas se desejar.

 

Bom, é isso.

 

Espero ter ajudado.

 

P.S.: Não me importo que roubem meus créditos e/ou postem em outros fórums.

Editado por warotserv (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Bom cara, não testei mas leva Rep+ garantido por ter tentado ajudar e provavelmente ajudado kkkk' Obrigado :D

                                                                           wcoq.jpg

Link para o post
Compartilhar em outros sites

Dúvida sanada, tag adicionada.

Tópico movido!

"A alma permanece em suas criações" V89E5aN.png


142c9d3439.jpg
(Não dou suporte por mensagem privada.)

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Tomaxx
      Olá Estou faz uns dois dias procurando para download o Client 10.55 e não estou achando se alguém pode-se me ajudar com um link agradeceria muito Valendo REP ><
       
      Não sei se postei na área correta.
    • Por Quero Sprites
      Alguem me Manda Sprit Tobirama. Agradeço desde ja.
    • Por Pepeco
      Comecei a mexer com lua faz um tempo e parei recentemente, voltei a mexer hoje e estou meio enferrujado. Nesse tópico irei tentar fazer o possível em criar a script que você pedir. Caso eu ajude, REP+ para o incentivo .
      O prazo de entrega das script varia de script para script, caso seja alguma coisa que eu não saiba, eu vou pesquisar e isso vai levar um pouco de tempo. O prazo padrão de entrega é de 5 dias! Não estou frequentemente no computador e por isso pode demorar. Sempre que for postar foto, erro ou coisas do tipo, poste como SPOILER ou como CODE. Não irei fazer pedidos complexos demais, não abusem. Não faço script de tibia derivado. NÃO FAÇO COISAS RELACIONADAS A NPC'S. Suporte apenas para TFS 0.3.6 e 0.4. Todas scripts que forem criadas, serão postadas em tópicos diferentes, para facilitar a busca do conteúdo. Colocar os devidos créditos no conteúdo. Por favor, se puder dar uma notinha na enquete sobre o script, eu iria agradecer, para eu saber se preciso melhorar minha logica ou não (tenho ctz que estou pessimo).
    • Por hhhhhhj
      *Procuro Pessoas Para Investir em Narutibia*
      Ola Pessoal Estou começando um projeto de narutibia começei uma base quase do zero, preciso de ajuda com host, prometo em devolver quando o server lucrar obrigado pela ajuda.
       
      Contato Skype:Onyplays. vai ter vários ache um com o nome guilherme cezerio
       Oque Tem Na Base?
      - Trade System [100%]
      [Groups 1 a 6 ] [100%]
      Canais 
      - Help-Channel.
      - Mercado-Livre.
      [ Quests Por Alavanca , Projeto Todas. Feitas Apenas 1 Kurama. ]
      [ Area de Quests Todas Criadas. ]
      Senzus Adicionadas.
      - kit inicial [100%] [ Com uma 'Senzu Que heala 10k de Mana/Life Para Novatos. ]
      - Temos atualmente nessa Versão 8 Caves com teleporte. 
      - Shinobi Fire [2]. [100%]
      - Nukenin [1] , Nukenin [2] , Nukenin [3] , Nukenin [4]. [100%]
      - Mutation [1]. [100%]
      - Shinobi Skys [5]. [100%]
      - Itachi [5]. [100%]
      - Akatsuki Corrupted. [100%]
      - Deidara. [100%]
      - Yoth. [100%]
      - Teleport Evento BAG - [100%]
      - Teleport Boss - [100%]
      - Teleport Arena - [100%]
      - Teleport Arena Evento. [50%]
      - NPC Recompensa Por Dia. 
      - NPC Mendigo.
      - Sala Staff. [100%]
      - TPS Falantes. [100%]
      - Minoru [0%] [ Por conta de ser Mapa Proprio. ]
      - Mapa Proprio.
      - Shop Configurado Para Items Médios.  Preço De Items 2k por Item [ Moeda Gold Normal ID:2160] Coloquei os Items Madara , Kurama etcs em Futuras Quests
      - Quests: Projetos De Quests. Atualmente.
      - Tais Como:
      - Quest Pergaminho Madara Rikudou.
      - Quest Pergaminho Naruto Rikudou.
      - Quest Pergaminho Sasuke Rikudou.
      - Quest Pergaminho Kaguya.
      - Quest Pergaminho Madara.
      - Quest Pergaminho Obito.
      - Quest Pergaminho Kakuzo.
      - Quest Pergaminho Hashirama.
      - Quest Pergaminho Tsunade.
      - Quest Pergaminho Yamato.
      - Quest Pergaminho Anbu.
      - Quest Pergaminho Nidaime.
      - Quest Pegaminho De XP 10%.
      - Quest yalahari mask.
      - Quest Madara Armor.
      - Quest Madara Legs.
      - Quest Madara Boots.
      - Quest Nto Points.
      - Quest Més Premium.
      - Quest Semana Premium.
      - Quest Remove  Red Skull.
      - Quest Remove Black Skull.
      - Quest Hidan Amulet.
      - Quest Rikudou Cedro.
      - Quest Gunbai.
      - Quest Akatsuki Ring.
      - Quest Nagato Ring.
      - Quest Chojuro Sword.
      - Quest Kurama Helmet.
      - Quest Kurama Sword.
      - Quest Kurama Boots.
      - Quest Kurama Legs.
      - Quest Kurama Armor.
      - Quest Mystic Senzu. [ Essa Senzu Heala 70k] [ Pode Ser Configurada Para Healar Mais Ou Retirada do servidor. ]  [ Life/Mana ]
      - Arena VIP/Hunt VIP [0%]   [ Coloquei um Aviso no chao Que a Area Vip Nao Esta Pronta ]
      - Tipos De Ninja:
      - naruto. [100%]
      - sasuke. [100%]
      - lee. [100%]
      - shikamaru. [100%]
      - neji. [100%]
      - tenten. [100%]
      - hinata. [100%]
      - kakashi. [100%]
      - killer bee. [100%]
      - sakura. [100%]
      - gaara. [100%]
      - kiba. [100%]
      - itachi. [100%]
      - tobi. [100%]
      - minato. [100%]
      - madara. [100%]
      - tsunade. [100%]
      - hashirama. [100%]
      - nidaime. [100%]
      - nagato. [100%]
      - yamato. [100%]
      - raikage. [100%]
      - kisame. [100%]
      - temari. [100%]
      - kankuro. [100%]
      - deidara. [100%]
      - zetsu. [100%]
      - jiraiya. [100%]
      - kabuto. [100%]
      - Madara Rikudou. [100%]
      - Naruto Rikudou. [100%]
      - Sasuke Rikudou. [100%]
      - System Novas Como:
      - Ser Um Heroi ! Se Torne o Heroi da cidade Matando os Jogadores Pks. 
      - Ganhe Gold Vendendo LOOT ao NPC. Ou matando Jogadores Pks. Varia Com o Level do Jogador.
      - Veja Quantas Pessoas ele Mato  e quantas Vezes Ele morreu Dando Use Nele.
       
      imagems:
      https://uploaddeimagens.com.br/imagens/22-png--156
      https://uploaddeimagens.com.br/imagens/sds-png--15
      https://uploaddeimagens.com.br/imagens/sdsds-png--10
      https://uploaddeimagens.com.br/imagens/sdsdsds-png--2
      https://uploaddeimagens.com.br/imagens/sem_titulo-png--17218
      https://uploaddeimagens.com.br/imagens/sem_titulod-png--4
      https://uploaddeimagens.com.br/imagens/w-png--33
    • Por rogylennon
      Ola Boa noite a todos! Estou treinando minhas habilidades sprites então... nada melhor do que treinar ajudando os outros! - E como funciona ? É simples! você pede a sprite, eu faço e deixo o download para vocês, porém devido ao meu tempo normalmente não farei todos os lados, mas farei a frente completa mais para vocês poderem deixar o feed de vocês, se eu tiver tempo faço completo, por isso é muito importante que vocês especifiquem se a sprite é para um servidor ou somente para ver como ficaria e me dar o feedback...  -E remakes valem ? Sim posso fazer remakes mas peço que deixem a sprite antiga anexada! Que comecem os jogos! ps: eu trabalho, faço mma e tenho mu projeto de tibia então pode demorar um pouco, tenham paciência.. sempre que possível deixarei vocês atualizados!  
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo