Jump to content

[C++] Ayuda con 2 funciones.


Rafa23Alzira

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;
	}
Link to comment
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)
Link to comment
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 ^^

Link to comment
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á.

Link to comment
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

Link to comment
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...