Jump to content
Rafa23Alzira

[C++] Ayuda con 2 funciones.

Recommended Posts

Bueno chicos, como de c++ no tengo ni puta idea pregunto esto antes de testearlo, ya que me tiro 5 o 6 horas para compilar el source xd

 

He creado dos funciones para recibir y cambiar el yang del gremio, instantáneamente, ya que por función en questlib y eso no se cambia. Quiero saber si alguien que sepa un poco me puede decir si está bien, se puede hacer de otra manera mejor o cualquier cosa al respecto. Gracias.

 

guild.get_gold (recibir el yang)

	int guild_get_gold(lua_State* L)
	{
		luaL_checknumber(L, 1);

		CGuild * pkGuild = CGuildManager::instance().FindGuild((DWORD) lua_tonumber(L, 1));

		if (pkGuild)
			lua_pushnumber(L, pkGuild->GetGuildMoney());
		else
			lua_pushnumber(L, 0);

		return 1;
	}

guild.change_gold (cambiar el yang)

	int guild_change_gold(lua_State * L)
	{
		int gold = (int)lua_tonumber(L, -1);
		
		CGuild * pkGuild = CGuildManager::instance().FindGuild((DWORD) lua_tonumber(L, 1));

		if (gold + pkGuild->GetGuildMoney() < 0)
			sys_err("QUEST wrong ChangeGold %d (now %d)", gold, pkGuild->GetGuildMoney());
		else{
			/*DBManager::instance().SendMoneyLog(MONEY_LOG_QUEST, pkGuild->GetName(), gold);*/
			DBManager::instance().Query("UPDATE guild%s SET gold=%d WHERE name = %s", get_table_postfix(), gold, pkGuild->GetName());

		}

		return 0;
	}

Share this post


Link to post
Share on other sites

POINT_GOLD Esta creado en pkguild?

Sabes a lo que me refiero?

 

Tampoco entiendo esto, de donde lo has cogido?

((DWORD) lua_tonumber(L, 1));

 

GetGuildMoney Esto esta creado? 

Edite unas cosas que se me habían colado. Lo de 

int gold = (int)lua_tonumber(L, -1);
lo he cogido del pc.get_gold

Share this post


Link to post
Share on other sites

Bueno esto sería de lo mas importante GetGuildMoney lo tienes bien?, la verdad he visto algunas cosas que no tengo claras, pero por la hora no puedo verlo bien ahora XD

viene en guild.h

		int		GetGuildMoney() const	{ return m_data.gold; }

Share this post


Link to post
Share on other sites

El de cambiar el gold lo habria hecho así (no lo e probado)

int guild_change_gold(lua_State* L)
{
	if(!lua_isnumber(L,1) || !lua_isnumber(L,2))
	{
		lua_pushboolean(L,false);
		return 0;
	}

	int guild = lua_tonumber(L,1);
	int gold = lua_tonumber(L,2);
	
	
	if (gold + pkGuild->GetGuildMoney() < 0)
	{
		lua_pushboolean(L,false);
        return 0;
	}

	DBManager::instance().Query("UPDATE guild%s SET gold=%d WHERE id = %s", get_table_postfix(), gold, guild);
	lua_pushboolean(L,true);
	return 1;
}
En quest sería

guild.change_gold(pc.get_guild(),cantidad)

Share this post


Link to post
Share on other sites

El de cambiar el gold lo habria hecho así (no lo e probado)

int guild_change_gold(lua_State* L)
{
	if(!lua_isnumber(L,1) || !lua_isnumber(L,2))
	{
		lua_pushboolean(L,false);
		return 0;
	}

	int guild = lua_tonumber(L,1);
	int gold = lua_tonumber(L,2);
	
	
	if (gold + pkGuild->GetGuildMoney() < 0)
	{
		lua_pushboolean(L,false);
        return 0;
	}

	DBManager::instance().Query("UPDATE guild%s SET gold=%d WHERE id = %s", get_table_postfix(), gold, guild);
	lua_pushboolean(L,true);
	return 1;
}
En quest sería

guild.change_gold(pc.get_guild(),cantidad)

Si no me sirve la manera 1 probaré la tuya, gracias ^^

Share this post


Link to post
Share on other sites

Vale, ya me funcionan las dos, resulta que era así:

guild.change_money(pc.get_guild(),4000)
chat(guild.get_gold(pc.get_guild()))

Pero me queda un problemilla con la primera función, la del cambio, cuando la uso el gold cambia en la base de datos pero no en el juego, y si uso la de get me devuelve el valor antiguo, vamos que no se guarda y no cambiará.

Share this post


Link to post
Share on other sites

Vale, ya me funcionan las dos, resulta que era así:

guild.change_money(pc.get_guild(),4000)
chat(guild.get_gold(pc.get_guild()))

Pero me queda un problemilla con la primera función, la del cambio, cuando la uso el gold cambia en la base de datos pero no en el juego, y si uso la de get me devuelve el valor antiguo, vamos que no se guarda y no cambiará.

Tienes que hacer refresh en binario

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...