Jump to content

Banco por sql


Edward™
 Share

Recommended Posts

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 

 

 

Link to comment
Share on other sites

No puedes poner funciones dentro de un when. Y cuando usas funciones hechas en la quest debes usarlo así: nombrequest.funcion().

 

b74d1a71a5.png

 

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.

Link to comment
Share on other sites

No puedes poner funciones dentro de un when. Y cuando usas funciones hechas en la quest debes usarlo así: nombrequest.funcion().

 

b74d1a71a5.png

 

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 :)

Link to comment
Share on other sites

No puedes poner funciones dentro de un when. Y cuando usas funciones hechas en la quest debes usarlo así: nombrequest.funcion().

 

b74d1a71a5.png

 

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.

Link to comment
Share on other sites

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;
}

Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • 5 years later...

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.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...