Dragonslayer Posted February 6, 2015 Report Share Posted February 6, 2015 Buenas, pues eso que busco una función que restaure el hp. Me vale que restaure un porcentaje de hp o que restaure uno fijo, la restauración del hp tiene que ser inmediata. Gracias de antemano. Link to comment Share on other sites More sharing options...
Edward™ Posted February 6, 2015 Report Share Posted February 6, 2015 En lua no se me ocurre, pero puedes hacer un item en c++ para que funcione y sea como una poción de 100% de vida, y le cambias tu el porcentaje, Link to comment Share on other sites More sharing options...
Dragonslayer Posted February 6, 2015 Author Report Share Posted February 6, 2015 Bueno tendré que seguir el esquema de las bendiciones de vida al final. Bueno gracias de todas formas. Link to comment Share on other sites More sharing options...
RafaVK Posted February 6, 2015 Report Share Posted February 6, 2015 Es fácil con quest... affect.add_collect(apply.HP_REGEN, 100000, 5) Dragonslayer 1 Link to comment Share on other sites More sharing options...
Edward™ Posted February 6, 2015 Report Share Posted February 6, 2015 Es fácil con quest... affect.add_collect(apply.HP_REGEN, 100000, 5) Sabes que eso es un bonus no? Y eso no te regenera vida sino te aumenta la que tienes, si tienes 123/5000hp, en vez de regenerar te sube la de 5000 a mas vida, asi que tu vida baja se queda igual. Link to comment Share on other sites More sharing options...
RafaVK Posted February 6, 2015 Report Share Posted February 6, 2015 Sabes que eso es un bonus no? Y eso no te regenera vida sino te aumenta la que tienes, si tienes 123/5000hp, en vez de regenerar te sube la de 5000 a mas vida, asi que tu vida baja se queda igual. La puse por que en mi servidor me funciona de esa manera..... y lo que realmente hace es que te pone a que se regenere la vida en 100k durante un corto espacio de tiempo lo cual sirve para solucionar lo que pide el dueño del post... Buenas, pues eso que busco una función que restaure el hp. Me vale que restaure un porcentaje de hp o que restaure uno fijo, la restauración del hp tiene que ser inmediata. Gracias de antemano. Restaurar la HP inmediatamente.... E incluso si buscas un poco en este mismo foro.... veras que keko, noa la usan (Te dejo el link... Debes iniciar sesión para ver el contenido del enlace en esta publicación.) Link to comment Share on other sites More sharing options...
Dragonslayer Posted February 6, 2015 Author Report Share Posted February 6, 2015 Vale lo probare, gracias Link to comment Share on other sites More sharing options...
ZoneLife Posted February 6, 2015 Report Share Posted February 6, 2015 Puedes explicar que quieres hacer exactamente, a ver que podemos hacer tengo algunas ideas pero no se que quieres hacer exactamente. Link to comment Share on other sites More sharing options...
RafaVK Posted February 7, 2015 Report Share Posted February 7, 2015 Vale lo probare, gracias Te dejo un ejemplo de una quest completa. quest RestaurarVida begin state start begin when login begin if pc.get_hp() <=0 then affect.add_collect(apply.HP_REGEN, 1000000, 5) end if pc.get_sp() <=0 then affect.add_collect(apply.SP_REGEN, 1000000, 5) end end end end Link to comment Share on other sites More sharing options...
Dragonslayer Posted February 7, 2015 Author Report Share Posted February 7, 2015 Básicamente he echo esto, pero todavía no se si funciona. Tengo que probarlo. quest pocion20 begin state start begin when 27118.use begin if get_time() < pc.getqf("tiempo1") then syschat("Aun no puedes, tienes que esperar "+ get_time() + " segundos") return else pc.setqf("tiempo1",0) pc.setqf("tiempo1",get_time()+4) affect.add_collect(apply.HP_REGEN, 20000, 3) pc.remove_item(27118,1) end end end end Link to comment Share on other sites More sharing options...
ZoneLife Posted February 7, 2015 Report Share Posted February 7, 2015 Dragon que es lo que quieres hacer exactamente reparar el HP/SP bug? Link to comment Share on other sites More sharing options...
Dragonslayer Posted February 7, 2015 Author Report Share Posted February 7, 2015 Que recupere instantaneamente ese hp por ejmplo. 20k. Ya se que la función esa lo que hace es añadir 20k de vida durante 3 segundos. Pero como no encuentro y creo que no hay una que restaure hp voy a usar y esa, pero todavía no la he podido probar. Link to comment Share on other sites More sharing options...
RafaVK Posted February 7, 2015 Report Share Posted February 7, 2015 Básicamente he echo esto, pero todavía no se si funciona. Tengo que probarlo. quest pocion20 begin state start begin when 27118.use begin if get_time() < pc.getqf("tiempo1") then syschat("Aun no puedes, tienes que esperar "+ get_time() + " segundos") return else pc.setqf("tiempo1",0) pc.setqf("tiempo1",get_time()+4) affect.add_collect(apply.HP_REGEN, 20000, 3) pc.remove_item(27118,1) end end end end Te recomiendo 2 estados para la quest debido que al hacer esto: if get_time() < pc.getqf("tiempo1") then Sin que tengas el qf antes definido puede darte errores (No graves) pero si te marcaría un error en locale algo de comparación con algo nulo o inexistente. pc.setqf("tiempo1",0) pc.setqf("tiempo1",get_time()+4) Es innecesario poner 2 setqf cuando en el segundo estás reemplazando completamente el primero.... Resumiendo.... Yo lo haría así... quest pocion20 begin state start begin when login or enter begin pc.setqf("tiempo1",0) set_state(estado2) end end state estado2 begin when 27118.use begin if get_time() < pc.getqf("tiempo1") then syschat("Aun no puedes, tienes que esperar ".. pc.getqf("tiempo1")-get_time() .." segundos") return else pc.setqf("tiempo1",get_time()+4) affect.add_collect(apply.HP_REGEN, 20000, 3) item.remove() end end end end Dragonslayer 1 Link to comment Share on other sites More sharing options...
Dragonslayer Posted February 7, 2015 Author Report Share Posted February 7, 2015 Vale gracias. Link to comment Share on other sites More sharing options...
ZoneLife Posted February 7, 2015 Report Share Posted February 7, 2015 Desde source: Abre "input_login.cpp" busca void CInputLogin::Entergame(LPDESC d, const char * data) después busca ch->ReviveInvisible(5); debajo escribe ch->PointChange(POINT_HP, ch->GetMaxHP() - ch->GetHP()); ch->PointChange(POINT_SP, ch->GetMaxSP() - ch->GetSP()); Eso debería solucionar eso. ( si eso no te sirve dimelo y te digo otros modos más.) Link to comment Share on other sites More sharing options...
SeMa™ Posted February 7, 2015 Report Share Posted February 7, 2015 Te recomiendo 2 estados para la quest debido que al hacer esto: if get_time() < pc.getqf("tiempo1") then Sin que tengas el qf antes definido puede darte errores (No graves) pero si te marcaría un error en locale algo de comparación con algo nulo o inexistente. pc.setqf("tiempo1",0) pc.setqf("tiempo1",get_time()+4) Es innecesario poner 2 setqf cuando en el segundo estás reemplazando completamente el primero.... Resumiendo.... Yo lo haría así... quest pocion20 begin state start begin when login or enter begin pc.setqf("tiempo1",0) set_state(estado2) end end state estado2 begin when 27118.use begin if get_time() < pc.getqf("tiempo1") then syschat("Aun no puedes, tienes que esperar "+ pc.getqf("tiempo1")-get_time() + " segundos") return else pc.setqf("tiempo1",get_time()+4) affect.add_collect(apply.HP_REGEN, 20000, 3) item.remove() end end end end Está mal, no puedes usar un "+", en lua es ".." Dragonslayer and Digital-RBK 2 Link to comment Share on other sites More sharing options...
RafaVK Posted February 7, 2015 Report Share Posted February 7, 2015 Está mal, no puedes usar un "+", en lua es ".." Tienes toda la razón no me fije en eso... ya lo edito... Link to comment Share on other sites More sharing options...
Dragonslayer Posted February 13, 2015 Author Report Share Posted February 13, 2015 Desde source: Abre "input_login.cpp" busca void CInputLogin::Entergame(LPDESC d, const char * data) después busca ch->ReviveInvisible(5); debajo escribe ch->PointChange(POINT_HP, ch->GetMaxHP() - ch->GetHP()); ch->PointChange(POINT_SP, ch->GetMaxSP() - ch->GetSP()); Eso debería solucionar eso. ( si eso no te sirve dimelo y te digo otros modos más.) Te has confundido ese es el fix para recuperar toda la vida cuando revives no? Yo no pedía eso XD. De todas formas ya me lo solucionaron entre Rafa y Sema. Gracias Link to comment Share on other sites More sharing options...
Dragonslayer Posted February 24, 2015 Author Report Share Posted February 24, 2015 Vale despues de un tiempo, no he tenido de probarlo antes. Y el resultado es que con apply.HP_REGEN, me restaura toda la vida. También he probado esto:(Pero no me restaura vida, solo me da 25k mas durante 1 segundo(y no me regenera 25k)). Al final me toca hacer la poción por c++? quest pocion20 begin state start begin when login or enter begin pc.setqf("tiempo1",0) set_state(estado2) end end state estado2 begin when 27118.use begin if get_time() < pc.getqf("tiempo1") then syschat("Aun no puedes, tienes que esperar ".. pc.getqf("tiempo1")-get_time() .." segundos") return else pc.setqf("tiempo1",get_time()+7) affect.add_collect(apply.MAX_HP, 25000, 1) pc.remove_item(27118,1) end end end end Link to comment Share on other sites More sharing options...
Rafa23Alzira Posted February 24, 2015 Report Share Posted February 24, 2015 Para c++ creo que es así (en questlua_pc) int pc_give_hp(lua_State* L) { int hp = (int)lua_tonumber(L, 1); LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); PointChange(POINT_HP, hp); return 0; } Dragonslayer 1 Link to comment Share on other sites More sharing options...
Dragonslayer Posted February 24, 2015 Author Report Share Posted February 24, 2015 Para c++ creo que es así (en questlua_pc) int pc_give_hp(lua_State* L) { int hp = (int)lua_tonumber(L, 1); LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); PointChange(POINT_HP, hp); return 0; } Vale gracias, lo probare. Link to comment Share on other sites More sharing options...
Rafa23Alzira Posted February 24, 2015 Report Share Posted February 24, 2015 Vale gracias, lo probare. Si no te sirve fijate en la función pc.change_sp Link to comment Share on other sites More sharing options...
Recommended Posts