Rafa23Alzira Publicado 16 de Abril del 2015 Reportar Compartir Publicado 16 de Abril del 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; } Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Dragonslayer Publicado 16 de Abril del 2015 Reportar Compartir Publicado 16 de Abril del 2015 POINT_GOLD Esta creado en pkguild? Sabes a lo que me refiero? GetGuildMoney Esto esta creado? Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Rafa23Alzira Publicado 16 de Abril del 2015 Author Reportar Compartir Publicado 16 de Abril del 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 Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Dragonslayer Publicado 16 de Abril del 2015 Reportar Compartir Publicado 16 de Abril del 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 Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Rafa23Alzira Publicado 16 de Abril del 2015 Author Reportar Compartir Publicado 16 de Abril del 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; } Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Dragonslayer Publicado 16 de Abril del 2015 Reportar Compartir Publicado 16 de Abril del 2015 Pues en principio debería funcionar, mira ver si compila sin errores y si actualiza la db. Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Rafa23Alzira Publicado 16 de Abril del 2015 Author Reportar Compartir Publicado 16 de Abril del 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 Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
pepineitor Publicado 16 de Abril del 2015 Reportar Compartir Publicado 16 de Abril del 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) Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Rafa23Alzira Publicado 16 de Abril del 2015 Author Reportar Compartir Publicado 16 de Abril del 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 Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
PACI Publicado 17 de Abril del 2015 Reportar Compartir Publicado 17 de Abril del 2015 En vez de ejecutar la query desde el game lo haria desde la db. Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Rafa23Alzira Publicado 17 de Abril del 2015 Author Reportar Compartir Publicado 17 de Abril del 2015 Resultado del compilado: La función get_money no retorna nada. La función change_money peta el server Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Dragonslayer Publicado 17 de Abril del 2015 Reportar Compartir Publicado 17 de Abril del 2015 Claro que retorna XD return m_data.gold; Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Rafa23Alzira Publicado 17 de Abril del 2015 Author Reportar Compartir Publicado 17 de Abril del 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) Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Rafa23Alzira Publicado 17 de Abril del 2015 Author Reportar Compartir Publicado 17 de Abril del 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á. Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Dragonslayer Publicado 17 de Abril del 2015 Reportar Compartir Publicado 17 de Abril del 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 Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Rafa23Alzira Publicado 17 de Abril del 2015 Author Reportar Compartir Publicado 17 de Abril del 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. Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Mensajes recomendados
Unirse a la conversación
Puedes publicar ahora y registrarte más tarde. Si tienes una cuenta, regístrate para publicar con su cuenta.