Edward™ Publicado 19 de Diciembre del 2014 Reportar Compartir Publicado 19 de Diciembre del 2014 Bueno, aquí os dejo un sistema de banco que hice un día que me aburría. Funciona bien, de momento no tengo fallos con el. Query: ALTER TABLE player.player ADD banco int(20) NOT NULL DEFAULT 0; Esto lo metéis en questlib.lua para que os funcione el texto en color. function say_color(color, text) local rgb = rawget(colors_data, color) say(color256(rgb[1],rgb[2],rgb[3])..text..color256(colors_data.default[1], colors_data.default[2], colors_data.default[3])) end function set_text_color(color) local rgb = rawget(colors_data, color) raw_script(color256(rgb[1],rgb[2],rgb[3])) end colors_data = { ['verde'] = {0,190,0}, ['verde chiaro'] = {0,255,0}, ['verde scuro'] = {0,120,0}, ['verde leggero'] = {144,238,144}, ['verde acqua'] = {102,205,170}, ['rosso'] = {240,0,0}, ['rosso leggero'] = {255,69,51}, ['rosa'] = {255,64,160}, ['rosa scuro'] = {255,0,128}, ['rosa chiaro'] = {255,182,193}, ['corallo'] = {255,127,80}, ['arancione'] = {255,130,0}, ['arancione scuro'] = {255,90,0}, ['fucsia'] = {255,0,255}, ['viola'] = {224,129,255}, ['viola scuro'] = {148,0,148}, ['lilla'] = {200,162,200}, ['marrone'] = {161,63,0}, ['marrone scuro'] = {120,66,0}, ['marrone chiaro'] = {200,164,115}, ['giallo'] = {255,255,53}, ['giallo chiaro'] = {255,255,128}, ['oro'] = {255,191,24}, ['blu'] = {0,0,250}, ['blu scuro'] = {0,0,150}, ['azzurro'] = {128,255,255}, ['azzurro chiaro'] = {193,255,255}, ['turchese'] = {0,255,255}, ['bianco'] = {255,255,225}, ['grigio'] = {128,128,128}, ['nero'] = {0,0,0}, ['default'] = {196,196,196} } quest banco begin state start begin when 20094.chat."Banco" begin -----------------------FUNCIONES---------------------------- function isempty(s) return s == nil or s == '' end local tudinero = mysql_query("SELECT banco FROM player.player WHERE name='"..pc.get_name().."' LIMIT 1;") -----------------------FUNCIONES---------------------------- say("Este es el banco de Metin2 Themis") say("Elige la operacion que deseas realizar") local opcion = select("Guardar dinero", "Sacar dinero", "Mi dinero", "Salir") ---------------------------------- GUARDAR DINERO ------------------------ if opcion == 1 then say_color("verde", "Ahora mismo en tu inventario tienes: "..pc.get_money().." Yang") say("Escribe la cantidad de dinero que quieres ingresar.") local cantidad = tonumber(input()) -------- ERROR AL INGRESAR EL DINERO------------------------ if isempty(cantidad) then syschat("Debes introducir algun numero.") return end if cantidad > pc.get_money() then syschat("No tienes tanto dinero en tu inventario.") return end if cantidad <= 0 then syschat("Debes ingresar un numero positivo.") return end if cantidad > 1999999999 then syschat("No puedes poner un numero mayor a 1.9kkk.") return end -------- ERROR AL INGRESAR EL DINERO------------------------ say("Vas a ingresar "..cantidad.." yang.") say("Estas seguro?") local ingresar_dinero = select ("Si", "No") if ingresar_dinero == 1 then mysql_query("UPDATE player.player SET banco = (banco + "..cantidad..") WHERE name='"..pc.get_name().."' LIMIT 1;") pc.changegold(-cantidad) elseif ingresar_dinero == 2 then say("Vale, ningun problema.") say("Vuelve cuando quieras ingresarlo") end ---------------------------------- SACAR DINERO ------------------------ elseif opcion == 2 then say_color("verde", "Ahora mismo en tu banco tienes: "..tudinero[1][1].." Yang.") say("Escribe el dinero que quieres sacar") local dinero = tonumber(input()) say("Has escrito : "..dinero.."") say("Estas seguro que quieres sacar esa cantidad?") local sacar_dinero = select("Si","No") if sacar_dinero == 1 then if (tudinero[1][1] - dinero) >= 0 then if (pc.get_money() + dinero) < 1999999999 then pc.changegold(dinero) mysql_query("UPDATE player.player SET banco = (banco - "..dinero..") WHERE name='"..pc.get_name().."' LIMIT 1;") else syschat("Tienes demasiado dinero en tu inventario.") end else syschat("No tienes tanto dinero en el banco") end elseif sacar_dinero == 2 then return end ---------------------------------- MI DINERO --------------------------- elseif opcion == 3 then chat("Tienes "..tudinero[1][1].." Yang.") ---------------------------------- SALIR ------------------------------- elseif opcion == 4 then return end end end end Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
ZoneLife Publicado 19 de Diciembre del 2014 Reportar Compartir Publicado 19 de Diciembre del 2014 +1 Gracias por el aporte! Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
PromeTheuS Publicado 19 de Diciembre del 2014 Reportar Compartir Publicado 19 de Diciembre del 2014 ¿Cuánto de máximo deja meter Yang en el banco? Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Rafa23Alzira Publicado 19 de Diciembre del 2014 Reportar Compartir Publicado 19 de Diciembre del 2014 Tú no les des la query y verás que te vienen 20 a decirte que no funciona Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Edward™ Publicado 19 de Diciembre del 2014 Author Reportar Compartir Publicado 19 de Diciembre del 2014 ¿Cuánto de máximo deja meter Yang en el banco? 20 cifras pero lo puedes cambiar. Tú no les des la query y verás que te vienen 20 a decirte que no funciona Gracias xd #Query añadida. Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
PACI Publicado 19 de Diciembre del 2014 Reportar Compartir Publicado 19 de Diciembre del 2014 No puedes poner funciones dentro de un when. Y cuando usas funciones hechas en la quest debes usarlo así: nombrequest.funcion(). En el primer if no haces return, así que saldrá el syschat() y continuará haciendo las demás funciones. Tampoco necesitas hacer: if noseque then -- tu codigo end if otronoseque then -- tu codigo end Puedes usar elseif: if noseque then -- tu codigo elseif noseque then -- tu codigo end Por último, no necesitas darle función a una opción que hace un return. Como la opción de salir. Aunque no le hagas la parte de opcion == x, si no tiene ninguna función, hará return por si sola. Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Edward™ Publicado 19 de Diciembre del 2014 Author Reportar Compartir Publicado 19 de Diciembre del 2014 No puedes poner funciones dentro de un when. Y cuando usas funciones hechas en la quest debes usarlo así: nombrequest.funcion(). En el primer if no haces return, así que saldrá el syschat() y continuará haciendo las demás funciones. Tampoco necesitas hacer: if noseque then -- tu codigo end if otronoseque then -- tu codigo end Puedes usar elseif: if noseque then -- tu codigo elseif noseque then -- tu codigo end Por último, no necesitas darle función a una opción que hace un return. Como la opción de salir. Aunque no le hagas la parte de opcion == x, si no tiene ninguna función, hará return por si sola. 1º- Lo he probado y funciona bien. (la función) 2º- Culpa mia. 3º- Lo he hecho con elseif pero no me funcionaba. Así que decidí hacerlo con if if if... 4º- El return en el exit lo pongo por si alguien quiere poner alguna otra cosa y que lo tenga de referencia. Gracias Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
PACI Publicado 19 de Diciembre del 2014 Reportar Compartir Publicado 19 de Diciembre del 2014 Perdona, pero es imposible que funcione un function dentro de un when. A menos que sea local. Y por lo que veo en la quest, no lo es. Y descartando la posibilidad de que hayas editado el qc. Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Guest Caes Publicado 19 de Diciembre del 2014 Reportar Compartir Publicado 19 de Diciembre del 2014 No puedes poner funciones dentro de un when. Y cuando usas funciones hechas en la quest debes usarlo así: nombrequest.funcion(). En el primer if no haces return, así que saldrá el syschat() y continuará haciendo las demás funciones. Tampoco necesitas hacer: if noseque then -- tu codigo end if otronoseque then -- tu codigo end Puedes usar elseif: if noseque then -- tu codigo elseif noseque then -- tu codigo end Por último, no necesitas darle función a una opción que hace un return. Como la opción de salir. Aunque no le hagas la parte de opcion == x, si no tiene ninguna función, hará return por si sola. De poder definir la función dentro de un when puede, pero no podrá usarla fuera del when, y eso le dará algunos dolores de cabeza ajajaj. Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Edward™ Publicado 19 de Diciembre del 2014 Author Reportar Compartir Publicado 19 de Diciembre del 2014 Perdona, pero es imposible que funcione un function dentro de un when. A menos que sea local. Y por lo que veo en la quest, no lo es. Y descartando la posibilidad de que hayas editado el qc. Ahora te hablo en skype y te lo enseño, 1 seg. Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
PACI Publicado 19 de Diciembre del 2014 Reportar Compartir Publicado 19 de Diciembre del 2014 Va tenéis razón Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Edward™ Publicado 19 de Diciembre del 2014 Author Reportar Compartir Publicado 19 de Diciembre del 2014 Es justo lo que dice @caes95 . Si quieres poner esa función en otro when no funciona. Gracias. Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Guest Caes Publicado 19 de Diciembre del 2014 Reportar Compartir Publicado 19 de Diciembre del 2014 Lo de elseif debería funcionar, sino algo raro está pasando. Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Edward™ Publicado 19 de Diciembre del 2014 Author Reportar Compartir Publicado 19 de Diciembre del 2014 Lo de elseif debería funcionar, sino algo raro está pasando. Pongo elseif y me salen todos los demás elseif. Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Guest Caes Publicado 19 de Diciembre del 2014 Reportar Compartir Publicado 19 de Diciembre del 2014 La hice en C++ y evalúa bien las condiciones usando else if, por tanto creo que en Quest debería funcionar: #include <iostream> using namespace std; bool isempty(int s) { if (s == NULL) { return true; } else return false; } int main() { int cantidad = 0; int money = 1500000; cout << "Escribe la cantidad de dinero que quieres ingresar." << endl; cin >> cantidad; if (isempty(cantidad)==true) { cout << "Debes introducir algun numero" << endl; return 0; } else if (cantidad>money) { cout << "No tienes tanto dinero en tu inventario" << endl; return 0; } else if (cantidad <= 0) { cout <<"Debes ingresar un numero positivo." << endl; return 0; } else if (cantidad > 1999999999) { cout <<"No puedes poner un numero mayor a 1.9kkk." << endl; return 0; } cout << "Dinero ingresado correctamente, okno" << endl; return 0; } LovePlay reacciono a esto 1 Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Yori Publicado 20 de Diciembre del 2014 Reportar Compartir Publicado 20 de Diciembre del 2014 Por cierto, porque pongas int(20) no quiere decir que te valla a poner un int de 20 cifras, lo que tienes que usar es un BIGINT. Debes iniciar sesión para ver el contenido del enlace en esta publicación. PD: se ve bien la quest, y se agradece el aporte Saludos Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Tow Metin2 Publicado 22 de Julio del 2020 Reportar Compartir Publicado 22 de Julio del 2020 graciasss 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.