Rafa23Alzira Posted April 16, 2015 Report Share Posted April 16, 2015 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; } Quote Link to comment Share on other sites More sharing options...
Dragonslayer Posted April 16, 2015 Report Share Posted April 16, 2015 POINT_GOLD Esta creado en pkguild? Sabes a lo que me refiero? GetGuildMoney Esto esta creado? Quote Link to comment Share on other sites More sharing options...
Rafa23Alzira Posted April 16, 2015 Author Report Share Posted April 16, 2015 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 Quote Link to comment Share on other sites More sharing options...
Dragonslayer Posted April 16, 2015 Report Share Posted April 16, 2015 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 Quote Link to comment Share on other sites More sharing options...
Rafa23Alzira Posted April 16, 2015 Author Report Share Posted April 16, 2015 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; } Quote Link to comment Share on other sites More sharing options...
Dragonslayer Posted April 16, 2015 Report Share Posted April 16, 2015 Pues en principio debería funcionar, mira ver si compila sin errores y si actualiza la db. Quote Link to comment Share on other sites More sharing options...
Rafa23Alzira Posted April 16, 2015 Author Report Share Posted April 16, 2015 Pues en principio debería funcionar, mira ver si compila sin errores y si actualiza la db. Intentaré, mañana os digo que lo dejaré a la noche compilando xD Quote Link to comment Share on other sites More sharing options...
pepineitor Posted April 16, 2015 Report Share Posted April 16, 2015 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) Quote Link to comment Share on other sites More sharing options...
Rafa23Alzira Posted April 16, 2015 Author Report Share Posted April 16, 2015 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 Quote Link to comment Share on other sites More sharing options...
PACI Posted April 17, 2015 Report Share Posted April 17, 2015 En vez de ejecutar la query desde el game lo haria desde la db. Quote Link to comment Share on other sites More sharing options...
Rafa23Alzira Posted April 17, 2015 Author Report Share Posted April 17, 2015 Resultado del compilado: La función get_money no retorna nada. La función change_money peta el server Quote Link to comment Share on other sites More sharing options...
Dragonslayer Posted April 17, 2015 Report Share Posted April 17, 2015 Claro que retorna XD return m_data.gold; Quote Link to comment Share on other sites More sharing options...
Rafa23Alzira Posted April 17, 2015 Author Report Share Posted April 17, 2015 Claro que retorna XD return m_data.gold; En la quest no devuelve ningún valor bad argument #1 to `get_gold' (number expected, got no value) Quote Link to comment Share on other sites More sharing options...
Rafa23Alzira Posted April 17, 2015 Author Report Share Posted April 17, 2015 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á. Quote Link to comment Share on other sites More sharing options...
Dragonslayer Posted April 17, 2015 Report Share Posted April 17, 2015 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 Quote Link to comment Share on other sites More sharing options...
Rafa23Alzira Posted April 17, 2015 Author Report Share Posted April 17, 2015 Tienes que hacer refresh en binario No es el binario el problema, es la cache de la db, ya que con el guild.get_gold no cambia aunque lo cambie con la función. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.