antiblock
Rodnia | Alpha & Omega
  • Chatbox

    You don't have permission to chat.
    Load More
Sign in to follow this  
Mário.

Apostar em Guerras de Guilds

2 posts in this topic

Até agora não vi nenhumas serverfiles ou mesmo um servidor português onde possas apostar nas guerras de guild.

A quest  das serverfiles do SG não funcionam, uma vez que buscava valores errados na source (lembrando que elas eram 34k, antes do leak da source).

Tinha feito isto a pensar para o meu servidor (poderão reparar na quest) mas como sou fã de partilha, decidi publicar isto.

 

A quest funciona da seguinte maneira:

Só podes apostar se tiveres um bilhete (poderá ser editado o item a querer);

Podes fazer quantas apostas tu quiseres dependendo do número de bilhetes tiveres;

Não podes apostar nas guerras que a tua guild participa;

Tens 4 opções de aposta (facilmente editado);

Recebes o dobro do que apostaste.

 

 

A única pessoa a quem dei esta quest foi ao Tiago, dono do GalaxyMT2.

A partir de hoje, será de todos vós.

 


 

Tutorial

 

game/src/questlua_guild.cpp

Pesquisar por:

int guild_get_reserve_war_table(lua_State * L)

 

Por baixo de todo o código dele, adicionar:

	int guild_sistema_apostas(lua_State* L)
	{		
		FBuildLuaGuildWarList f(L);
		CGuildManager::instance().for_each_war(f);
		return 1;
	}

	int guild_dar_recompensa(lua_State* L)
	{
		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();

		CGuild* pGuild = ch->GetGuild();

		lua_pushnumber(L, (pGuild!=NULL)?pGuild->GetGuildWarWinCount():0);
		return 1;
	}

 

Pesquisem por:

{ "get_reserve_war_table",	guild_get_reserve_war_table	},

 

Por baixo, adicionem:

			{ "sistema_apostas",		guild_sistema_apostas		},
			{ "dar_recompensa",		guild_dar_recompensa		},

 

Agora só precisam de compilar, sem esquecer de adicionarem isto no quest_functions:

guild.dar_recompensa
guild.sistema_apostas

 

Em baixo forneço-vos a quest com comentários de forma a explicar o que cada código faz de forma a terem uma leitura mais compreensível:

--[[
Esta quest foi feita pelo Mário, influenciado pela @SG / @skype: iw0web.69
Como é que isto funciona?
Assim que houver uma guerra de guild, um jogador poderá apostar indo no Beleguim da Batalha.
Lá, será disponibilizado todas as informações a saber antes de fazer alguma aposta e o que ganharão se a guild que apostou vença.
Por norma, os jogadores que pertençam a uma guild que esteja em war, não poderão apostar, juntamente com os que não possuem o bilhete da aposta, de forma a evitar que criem outras contas/personagens para terem lucro com o sistema.
]]
quest sistema_apostas begin
	state start begin
	--[[
	function dar_recompensa()
		if guild.dar_recompensa < 1 then
			say_title("LSM2:")
			say("Parabéns, a guild que apostaste acabou de ganhar a war.")
			say("Vais receber 100.000.000.000 yang.")
			pc.changegold(100000000000)
		end
	end
	]] -- Isto foi um teste ridículo que fiz
		when guild_war_observer1.chat."Apostar nas Guerras de Guild" or -- Serão os NPCs onde será posto o sistema // neste caso no Beleguim da Batalha. 
			 guild_war_observer2.chat."Apostar nas Guerras de Guild" or  -- Porquê que são 3?
			 guild_war_observer3.chat."Apostar nas Guerras de Guild" begin -- Porque existem 3 beleguins da batalha, 1 para cada reino. 
			 
				say_title("LSM2:") -- Daqui para baixo, é o que será exibido.
				say("Para apostares nas guerras de guild,[ENTER]",
				"precisas de ter conhecimento de certas coisas:")
				wait()
				say_title("LSM2:")
				say("")
				say("1. Só podes apostar em guerras que estejam a acontecer.")
				say("")
				say("2. Só é possível fazeres 1 aposta se tiveres o bilhete para tal.")
				say("")
				say("3. Recebes o triplo do que apostas.")
				say_reward("Ex: Apostar 1.000.000 yang para ganhar 3.000.000")
                say("")
                wait()
				
				local g = guild.sistema_apostas()
				local gname_table = {}

				table.foreachi(g,
				function(n, p)
					gname_table[n] = guild.get_name(p[1]).." vs "..guild.get_name(p[2])
				end)

				if table.getn(g) == 0 then -- Caso não exista nenhuma guerra de guilds a acontecer, é isto que será exibido:
					say_title("LSM2:")
					say("")
					say("Não existe nenhuma guerra de guild a decorrer.")
				else -- Caso contrário, será isto:
				
					if pc.count_item(30300) >= 1 then -- Condição em caso de terem o igual ou superior a 1 item 30300
						pc.remove_item(30300,1) -- É removido em caso de existir alguma guerra de guild
						gname_table[table.getn(g)+1] = "Cancelar" -- Cancela a escolha da aposta.

						local s = select_table(gname_table) -- Aparece as guilds que estejam em guerra, de forma a poderes escolher a aposta
					
						if s != table.getn(gname_table) then 
                    
						local primeira_guild = guild.get_name(g[s][1]) -- Primeira guild, que neste caso é o que desafiou a outra
						local segunda_guild = guild.get_name(g[s][2]) -- A guild que foi desafiada

						say_title("LSM2:")
						say("")
						say("Escolhe em qual das guilds desejas apostar:")
                    
						local guild_s = select(primeira_guild, segunda_guild, "Cancelar")

							if guild_s != 3 then -- Apenas em caso do jogador não clicar na terceira opção, que neste caso é o Cancelar
							
								local verificar = guild.get_any_war() 
								--[[ 
								Verifica se a guild está em guerra. 
								Perdão por não fazer outra função para isto, mas para além da preguiça, o get_any_war funciona perfeitamente para este caso // questlua_guild.cpp : if (ch->GetGuild()) lua_pushnumber(L, ch->GetGuild()->UnderAnyWar());
								]]
							
									if verificar > 1 then  -- Os jogadores que pertençam a guild que está em guerra não poderá apostar.
										pc.give_item2(30300,1) 
										--[[
										Porquê isto? Porque o jogador que pertença a guild que ia apostar, ficaria sem o cofre uma vez já tirado na linha 44. 
										Para compensar, é-lhe dado outro cofre. Sim, há formas mais fáceis de fazer isto, mas para a simplicidade da quest, será feita desta forma.
										]]
										say_title("LSM2:")
										say("Não podes apostar em guerras que a tua guild participa.")
										return
									end

								say_title("LSM2:")
								say("")
								say("Quanto é yang queres apostar?")

								local tabela_aposta_de_yang = {}

								table.foreachi(guild_war_bet_price_table, -- Os valores para a aposta serão buscados através da função guild_war_bet_price_table que se encontra no questlib.lua
								function(n, p)
									tabela_aposta_de_yang[n] = p.." Yang" 
									--[[ Por default, os valores estão: 
											10000,
											30000,
											50000,
											100000
										Mais uma vez repito, podem alterar o valor das apostas no questlib.lua, pesquisando pelo seguinte: guild_war_bet_price_table ]]
								end)

								tabela_aposta_de_yang[table.getn(tabela_aposta_de_yang)+1] =  "Cancelar"

								local apostar_guerra = select_table(tabela_aposta_de_yang)

								if apostar_guerra != table.getn(tabela_aposta_de_yang) then
									if pc.gold < guild_war_bet_price_table[apostar_guerra] then
										say_title("LSM2:")
										say("")
										say("Não tens esse montante de yang.")
										say("")
									else
										say_title("LSM2:")
										say("")
										say("Aconselho a veres a guerra de guild que apostaste[ENTER]",
										"de forma a controlares a tua aposta.[ENTER]",
										"Boa sorte!")
										pc.changegold(-guild_war_bet_price_table[apostar_guerra])
										guild.war_bet(g[s][1], g[s][guild_s+1], guild_war_bet_price_table[apostar_guerra])
										guild.dar_recompensa()
										sistema_apostas.dar_recompensa()
									end -- if pc.gold < guild_war_bet_price_table[apostar_guerra]
								end --  if apostar_guerra != table.getn(tabela_aposta_de_yang)
							end -- if guild_s !=  
						end -- if s != table.getn(gname_table)
					else
						say_title("LSM2:")
						say("")
						say("Não tens o bilhete para apostar nas guerras de guild.")
						say("Volta quando o tiveres.")
					end -- if table.getn(g)
				end -- if pc.count_item(30300)
		end -- when
	end -- state
end -- quest


 

Qualquer dúvida, não hesitem em deixarem um comentário.

Edited by Mário. (see edit history)

Share this post


Link to post
Share on other sites
antiblock
Rodnia | Alpha & Omega

Isto com uma interface a mostrar as guerras activas e a mostrar as opções para as apostas fica espetacular.

 

Obrigado pela partilha

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this