Ir para conteúdo
  • Cadastre-se

(Resolvido)[logica de programacao] como balancear times?


Ir para solução Resolvido por xWhiteWolf,

Posts Recomendados

Oi, to fazendo um ot de war. mas ai pra balancear dois times, usei:

 

if time1 >= time 2
colocar o player no time 2

if time2>= time1
colocar o player no time 1




mas e com 3 ou 4 times?


como faço para balancear?

Link para o post
Compartilhar em outros sites

Ve se entende faz assim ó:

function BalancearTime(){
Pega a  QtdTime, QtdPlayers, QtdPorTime

QtdPorTime = QtdPlayer/QtdTime;
}

Sendo assim QtdPorTime ja vai ter a qtd de players que balanceada por time então se tiver 30 pessoas e você deixou 6 times vai ter 5 nego pra cada time automaticamente, ai você aplica sua lógica

if time1Qtd <> time 2Qtd{
Chama a função que Balanceia os times desdo começo no final da rodada se essa condição for verdadeira;
}

if time1Qtd <> time3Qtd{

Chama a função que Balanceia os times desdo começo no final da rodada se essa condição for verdadeira;
}

if time1Qtd <> time4Qtd{

Chama a função que Balanceia os times desdo começo no final da rodada se essa condição for verdadeira;
}
if time1Qtd <> time5Qtd{

Chama a função que Balanceia os times desdo começo no final da rodada se essa condição for verdadeira;
}
if time1Qtd <> time6Qtd{

Chama a função que Balanceia os times desdo começo no final da rodada se essa condição for verdadeira;
}
 

Veja se voce entendeu +/- o que eu quiz dizer e se sabe como transformar esse código pro seu script se precisar de ajuda posta seu script aqui

 

espero ter ajudado 1 pouco

Editado por haith (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Solução
local times = {
[1] = globalStorage do time1, 
[2] = globalStorage do time2,
[3] = globalStorage do time3, 
​[4] = globalStorage do time4
}

local minor = getGlobalStorageValue(times[1]) -- seta um valor inicial

for _, v in pairs (times) do
if getGlobalStorageValue(v) <= minor then
minor = getGlobalStorageValue(v)
index = v
end
end

colocar o player no time cujo globalStorage seja (v) e setar o global storage do v e o valor de minor como sendo o atual + 1


essa é a melhor lógica que você pode usar pra qualquer quantidade de times. É ainda melhor até que ternário.

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Na variável index

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Ok. Vou postar o script inteiro do sistema, porfavor ignore o resto.  Nao terminei o script

Seguinte, o for nao ta salvando nada na variavel. Tentei com a index e a for. Quem sabe estou usando no lugar errado. Tentei colocar local tb, e nao deu certo.

Erro:

[7/11/2014 12:13:10] [Error - CreatureScript Interface] 
[7/11/2014 12:13:10] data/creaturescripts/scripts/definirtime.lua:onLogin
[7/11/2014 12:13:10] Description: 
[7/11/2014 12:13:10] data/creaturescripts/scripts/definirtime.lua:88: attempt to concatenate global 'index' (a nil value)
[7/11/2014 12:13:10] stack traceback:
[7/11/2014 12:13:10] 	data/creaturescripts/scripts/definirtime.lua:88: in function <data/creaturescripts/scripts/definirtime.lua:1>

Uma curiosidade, o codigo que tu postou primeiro, a colchetes na linha "​[4] = globalStorage do time4" dava erro. Ai substitui o colchetes e foi normal. Coisas de propgramação O_o

Porfavor se puder nao entregue o codigo pronto, só me diga oque tem de errado. Obrigado :D


Wolf, consegui arrumar.  Não sei explicar oq era. Só sei que esta funcionando perfeitamente. Fiz varios testes e esta tudo ok. Vou postar o script final que pode servir de base de conhecimento para algo do genero. Muito bom!

 

 

O script nao esta terminado, mas o balanceamento esta perfeito. 

 

function onLogin(cid)


	if getGlobalStorageValue(15100) == 1 then
return true
	end	
	
	if getGlobalStorageValue(15100) == 2 then

if getGlobalStorageValue(15101) >=  getGlobalStorageValue(15102) then 
-- COLOCAR O JOGADOR NO TIME BRANCO -- 15002

setGlobalStorageValue(15102, getGlobalStorageValue(15102) + 1)
setPlayerStorageValue(cid, 15099, 2)
        
		
		
		-- OUTFIT
        local outfit = getCreatureOutfit(cid) 
        outfit.lookHead = 0
        outfit.lookBody = 114
        outfit.lookLegs = 114
        outfit.lookFeet = 114 
        doCreatureChangeOutfit(cid, outfit) 
		
		-- TOWN
		
       doPlayerSetTown(cid, getGlobalStorageValue(15202) )
	   doTeleportThing(cid, getTownTemplePosition(getGlobalStorageValue(15202)), true)


else
-- COLOCAR O JOGADOR NO TIME PRETO -- 15101
setGlobalStorageValue(15101, getGlobalStorageValue(15101) + 1)
setPlayerStorageValue(cid, 15099, 1)
     
	 
	 -- OUTFIT
	      local outfit = getCreatureOutfit(cid) 
        outfit.lookHead = 114
        outfit.lookBody = 0
        outfit.lookLegs = 0
        outfit.lookFeet = 0 
        doCreatureChangeOutfit(cid, outfit) 

		
			-- TOWN
		
       doPlayerSetTown(cid, getGlobalStorageValue(15201) )
	   doTeleportThing(cid, getTownTemplePosition(getGlobalStorageValue(15201)), true)
	
	
	
	
	
	end	

return true
	end	

		
		
	if getGlobalStorageValue(15100) == 3 then
return true
	end	
		
	if getGlobalStorageValue(15100) == 4 then

	
	local times = {
[1] = 15101, 
[2] = 15102,
[3] = 15103, 
[4] = 15104
}

local minor = getGlobalStorageValue(times[1]) -- seta um valor inicial

for _, v in pairs (times) do
if getGlobalStorageValue(v) <= minor then
minor = getGlobalStorageValue(v)
index = v

end

end
 setGlobalStorageValue(index, getGlobalStorageValue(index) + 1)

	
	
	
	
	
	
	
	
	return true
	end	
		
	
	
	
	


return true
end


Obrigado a todos.

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

O problema foi que vc tava usando o getglobal do v... eu havia dito que era no index! O v só existe dentro do for. Em todo caso se a dúvida foi resolvida, apenas clique em "melhor resposta" pra deixar como resolvido e clique em gostei nos comentários de quem te ajudou.

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Sim realmente era esse o erro. Aqui o script final. Espero que ajudem alguem :D Resolvido.

 

 

@Nextbr   Sim, tem a função quando dar logout e quando morrer dar baixa. :D

function onLogin(cid)







if getGlobalStorageValue(15100) == 1 then
setGlobalStorageValue(15101, getGlobalStorageValue(15101) + 1)
setPlayerStorageValue(cid, 15099, 1)
     
		-- OUTFIT
        local outfit = getCreatureOutfit(cid) 
        outfit.lookHead = math.random(0, 132)
        outfit.lookBody = math.random(0, 132)
        outfit.lookLegs = math.random(0, 132)
        outfit.lookFeet = math.random(0, 132)
        doCreatureChangeOutfit(cid, outfit) 
		
		-- TOWN
		
       doPlayerSetTown(cid, getGlobalStorageValue(math.random(15201, 15204)) )
	   doTeleportThing(cid, getTownTemplePosition(getGlobalStorageValue(math.random(15201, 15204))), true)









return true
end
	







	if getGlobalStorageValue(15100) == 2 then

if getGlobalStorageValue(15101) >=  getGlobalStorageValue(15102) then 
-- COLOCAR O JOGADOR NO TIME BRANCO -- 15002

setGlobalStorageValue(15102, getGlobalStorageValue(15102) + 1)
setPlayerStorageValue(cid, 15099, 2)
        
		
		
		-- OUTFIT
        local outfit = getCreatureOutfit(cid) 
        outfit.lookHead = 0
        outfit.lookBody = 114
        outfit.lookLegs = 114
        outfit.lookFeet = 114 
        doCreatureChangeOutfit(cid, outfit) 
		
		-- TOWN
		
       doPlayerSetTown(cid, getGlobalStorageValue(15202) )
	   doTeleportThing(cid, getTownTemplePosition(getGlobalStorageValue(15202)), true)


else
-- COLOCAR O JOGADOR NO TIME PRETO -- 15101
setGlobalStorageValue(15101, getGlobalStorageValue(15101) + 1)
setPlayerStorageValue(cid, 15099, 1)
     
	 
	 -- OUTFIT
	      local outfit = getCreatureOutfit(cid) 
        outfit.lookHead = 114
        outfit.lookBody = 0
        outfit.lookLegs = 0
        outfit.lookFeet = 0 
        doCreatureChangeOutfit(cid, outfit) 

		
			-- TOWN
		
       doPlayerSetTown(cid, getGlobalStorageValue(15201) )
	   doTeleportThing(cid, getTownTemplePosition(getGlobalStorageValue(15201)), true)
	
	
	
	
	
	end	

return true
	end	

		
	
	
	
	
	
	
	
	
	
	
	
if getGlobalStorageValue(15100) == 3 then

	
	local times = {
[1] = 15101, 
[2] = 15102,
[3] = 15103
}

local minor = getGlobalStorageValue(times[1]) -- seta um valor inicial

for _, v in pairs (times) do
if getGlobalStorageValue(v) <= minor then
minor = getGlobalStorageValue(v)
index = v

end

end
 
if index == 15101 then
setGlobalStorageValue(index, getGlobalStorageValue(index) + 1)
setPlayerStorageValue(cid, 15099, 1)
     
		-- OUTFIT
        local outfit = getCreatureOutfit(cid) 
        outfit.lookHead = 114
        outfit.lookBody = 0
        outfit.lookLegs = 0
        outfit.lookFeet = 0
        doCreatureChangeOutfit(cid, outfit) 
		
		-- TOWN
		
       doPlayerSetTown(cid, getGlobalStorageValue(15201) )
	   doTeleportThing(cid, getTownTemplePosition(getGlobalStorageValue(15201)), true)
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	elseif index == 15102	then
setGlobalStorageValue(index, getGlobalStorageValue(index) + 1)
setPlayerStorageValue(cid, 15099, 2)
     
		-- OUTFIT
        local outfit = getCreatureOutfit(cid) 
        outfit.lookHead = 0
        outfit.lookBody = 114
        outfit.lookLegs = 114
        outfit.lookFeet = 114 
        doCreatureChangeOutfit(cid, outfit) 
		
		-- TOWN
		
       doPlayerSetTown(cid, getGlobalStorageValue(15202) )
	   doTeleportThing(cid, getTownTemplePosition(getGlobalStorageValue(15202)), true)


	   
	   
	   elseif index == 15103 then
setGlobalStorageValue(index, getGlobalStorageValue(index) + 1)
setPlayerStorageValue(cid, 15099, 3)
     
		-- OUTFIT
        local outfit = getCreatureOutfit(cid) 
        outfit.lookHead = 114
        outfit.lookBody = 88
        outfit.lookLegs = 88
        outfit.lookFeet = 88
        doCreatureChangeOutfit(cid, outfit) 
		
		-- TOWN
		
       doPlayerSetTown(cid, getGlobalStorageValue(15203) )
	   doTeleportThing(cid, getTownTemplePosition(getGlobalStorageValue(15203)), true)

	   
	   

	   
	   
	 
end	


	return true
	end	
		


		
		
		
		
		
	
	if getGlobalStorageValue(15100) == 4 then

	
	local times = {
[1] = 15101, 
[2] = 15102,
[3] = 15103, 
[4] = 15104
}

local minor = getGlobalStorageValue(times[1]) -- seta um valor inicial

for _, v in pairs (times) do
if getGlobalStorageValue(v) <= minor then
minor = getGlobalStorageValue(v)
index = v

end

end
 
if index == 15101 then
setGlobalStorageValue(index, getGlobalStorageValue(index) + 1)
setPlayerStorageValue(cid, 15099, 1)
     
		-- OUTFIT
        local outfit = getCreatureOutfit(cid) 
        outfit.lookHead = 114
        outfit.lookBody = 0
        outfit.lookLegs = 0
        outfit.lookFeet = 0
        doCreatureChangeOutfit(cid, outfit) 
		
		-- TOWN
		
       doPlayerSetTown(cid, getGlobalStorageValue(15201) )
	   doTeleportThing(cid, getTownTemplePosition(getGlobalStorageValue(15201)), true)
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	elseif index == 15102	then
setGlobalStorageValue(index, getGlobalStorageValue(index) + 1)
setPlayerStorageValue(cid, 15099, 2)
     
		-- OUTFIT
        local outfit = getCreatureOutfit(cid) 
        outfit.lookHead = 0
        outfit.lookBody = 114
        outfit.lookLegs = 114
        outfit.lookFeet = 114 
        doCreatureChangeOutfit(cid, outfit) 
		
		-- TOWN
		
       doPlayerSetTown(cid, getGlobalStorageValue(15202) )
	   doTeleportThing(cid, getTownTemplePosition(getGlobalStorageValue(15202)), true)


	   
	   
	   elseif index == 15103 then
setGlobalStorageValue(index, getGlobalStorageValue(index) + 1)
setPlayerStorageValue(cid, 15099, 3)
     
		-- OUTFIT
        local outfit = getCreatureOutfit(cid) 
        outfit.lookHead = 114
        outfit.lookBody = 88
        outfit.lookLegs = 88
        outfit.lookFeet = 88
        doCreatureChangeOutfit(cid, outfit) 
		
		-- TOWN
		
       doPlayerSetTown(cid, getGlobalStorageValue(15203) )
	   doTeleportThing(cid, getTownTemplePosition(getGlobalStorageValue(15203)), true)

	   
	   

	   
	   
	   
	   elseif index == 15104 then
setGlobalStorageValue(index, getGlobalStorageValue(index) + 1)
setPlayerStorageValue(cid, 15099, 4)
     
		-- OUTFIT
        local outfit = getCreatureOutfit(cid) 
        outfit.lookHead = 0
        outfit.lookBody = 81
        outfit.lookLegs = 81
        outfit.lookFeet = 81
        doCreatureChangeOutfit(cid, outfit) 
		
		-- TOWN
		
       doPlayerSetTown(cid, getGlobalStorageValue(15204) )
	   doTeleportThing(cid, getTownTemplePosition(getGlobalStorageValue(15204)), true)
end	
	
	
	
	
	return true
	end	
		
	
	
	
	


return true
end


Editado por victorgg (veja o histórico de edições)
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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo