Jump to content

Lamarck

Miembro
  • Contador contenido

    9
  • Ingreso

  • Última visita

Actividad de reputación

  1. Me Gusta
    Lamarck got a reaction from jade9477 in [QUEST]Anti-Exp   
    Aver, se refiere que un bucle va a estar consumiendo recursos del servidor innecesariamente. Cuando esté activa la quest, estará ejecutando el bucle todo el rato hasta que encuentre la condición de que haya más de 100 exp. Aquí una quest hecha por pepineitor que te la congela:
    --***By Pepineitor***-- quest exp_curse begin     state start begin         when 72501.use begin             if pc.getqf("exp_block") == 1 then                 pc.setqf("exp_block", 0)                 syschat("Anillo Anti-Exp activado.")                 syschat("¡Ahora no ganarás experiencia!")                 syschat("Para volver a ganar experiencia utiliza otra vez el Anillo Anti-Exp.")             else                 pc.setqf("exp_block", 1)                 pc.setqf("exp_last", pc.get_exp())                 syschat("Anillo Anti-Exp desactivado.")                 syschat("¡Ahora ganarás experiencia!")                 syschat("Para no ganar experiencia utiliza otra vez el Anillo Anti-Exp.")             end         end                  when kill or party_kill with pc.getqf("exp_block") == 1 and not npc.is_pc() begin             pc.give_exp2(-(pc.get_exp()-pc.getqf("exp_last")))         end     end end
  2. Me Gusta
    Lamarck got a reaction from matias18 in [QUEST]Anti-Exp   
    Aver, se refiere que un bucle va a estar consumiendo recursos del servidor innecesariamente. Cuando esté activa la quest, estará ejecutando el bucle todo el rato hasta que encuentre la condición de que haya más de 100 exp. Aquí una quest hecha por pepineitor que te la congela:
    --***By Pepineitor***-- quest exp_curse begin     state start begin         when 72501.use begin             if pc.getqf("exp_block") == 1 then                 pc.setqf("exp_block", 0)                 syschat("Anillo Anti-Exp activado.")                 syschat("¡Ahora no ganarás experiencia!")                 syschat("Para volver a ganar experiencia utiliza otra vez el Anillo Anti-Exp.")             else                 pc.setqf("exp_block", 1)                 pc.setqf("exp_last", pc.get_exp())                 syschat("Anillo Anti-Exp desactivado.")                 syschat("¡Ahora ganarás experiencia!")                 syschat("Para no ganar experiencia utiliza otra vez el Anillo Anti-Exp.")             end         end                  when kill or party_kill with pc.getqf("exp_block") == 1 and not npc.is_pc() begin             pc.give_exp2(-(pc.get_exp()-pc.getqf("exp_last")))         end     end end
  3. Me Gusta
    Lamarck got a reaction from MiGueLiT0 in Ayuda Item_Proto   
    No utilices el MasterEpack ya que según la versión suele compilar mal y da bastantes errores. Utiliza este:
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  4. Me Gusta
    Lamarck reacted to Lokkytron in Script de arranque start.sh   
    Hola a todos.
     
    He estado mirando y no he encontrado algo igual.
    Si esta repetido por favor no tengais reparo en pasar de mi cara y tal. (Y retirarlo si es preciso el post)
     
    Bueno he estado algún tiempo pensando en montar server pero nunca tenía tiempo y lo único que he hecho mucho ha sido leer.
     
    Ahora que voy avanzando algo y parece que al final si que lo echare a andar, he visto cosas que podrían mejorarse, y mucho, pero hay que conocer por dentro un poco como funciona FreeBSD. No se si todos los script de arranque son iguales en todos los server files... esto que explico a continuacion lo he hecho sobre
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    El objetivo de este post, y me pongo a ello que me enrollo mucho, es hacer que sin loguearos el server se ponga en marcha:
     
    Sin meter login y pass Y arrancando automáticamente los canales.
     
    Bueno al lio:
     
    Todo SCRIPT que como usuario de FreeBSD queremos ejecutar durante el arranque, debe estar situado en varias rutas, a nosotros nos interesa lo que hay dentro de /usr/local/etc/rc.d/
     
    Dentro de esa ruta tendremos poca cosa. Probablemente un archivo llamado mysql-server que hay que procurar no alterar.
    Crearemos un script en esta ruta
     
    # cd /usr/local/etc/rc.d/
    # ee arranca.sh
     
    Dentro del cual escribiremos las siguientes lineas
     
    #!/bin/sh
    cd /usr/home/game
    ./start.sh 2
     
    Este script lo único que hace es irse a la ruta del juego en mi caso /usr/home/game y ejecutar el script de arranque AÑADIENDO un parámetro, en este caso un 2, que ahora veremos como hacer que funcione.
     
    Para acabar la edición del fichero hemos de darle a ESC, A, A y listo. Ahora hay que hacerlo ejecutable.
     
    # chmod 777 arranca.sh
     
    Nos vamos ahora a la carpeta del juego a modificar el script de arranque un poco para que acepte parámetros.
     
    # cd /usr/home/game
    # ee start.sh
     
    Delante de todas las lineas que muestro a continuación vamos a aÑadir una almohadilla para comentarlas.
     
    # echo -e "033[31m
    # Wie viele Channels m<F6>chtest du starten ? n
    # 1- (1) Channel n
    # 2- (2) Channeles n
    #
    # read chs
     
     
     
    A continuación buscamos la linea "case $chs in" que estará justo debajo de las que acabamos de comentar y escribimos lo siguiente ENCIMA de esa linea.
     
    chs=$1
     
    Ya podéis guardar, ESC, A, A y listo.
     
    Ahora si:
     
    # reboot
     
    Listo. Es la primera vez que explico algo así intentando hacerlo entendible. Si no veis por donde voy dejad vuestras dudas al respecto.
     
    PROBLEMAS Y DUDAS
     
    Esta guia solo os servirá si vuestros script de arranque se parecen a los que indicaba yo antes. Si no, lo mismo os ayuda a orientaros.
    Por otro lado, yo escribo ./start.sh 2 porque arranco los dos canales que tengo implementados. Pero si solo teneis uno o teneis mas tendréis que acoplar esto a vuestra configuración.
    Para hacer una modificacion critica ahora tendréis que LOGUEAROS y CERRAR el server que estará corriendo. Y luego para arrancarlo ./start.sh 2
     
     
    Un saludo.
  5. Me Gusta
    Lamarck reacted to Lokkytron in ITEMs que se venden más caros de lo que se compran   
    Supongo que una buena forma de hacer yang fácil para los jugadores sería que hubiera objetos en el juego que el jugador los compre en una tienda por un precio y los pueda vender por un precio más elevado.
     
    La siguiente consulta SQL reduce completamente esa posibilidad al asegurarse de que cada objeto tiene un precio mayor de compra que de venta.
    UPDATE item_proto SET shop_buy_price=(CEILING(IF(gold<shop_buy_price,FLOOR(gold*0.7),shop_buy_price)));
     
    LO QUE HACE es un UPDATE de cada registro de la tabla item_proto cambiando el valor del campo shop_buy_price solo SI el precio de venta es mayor que el de compra. En mi caso, en la cosulta he puesto que el nuevo shop_buy_price sea del 70% del valor de compra. Se puede poner lo que queráis siempre que sea un valor decimal positivo y NO mayor de uno.
     
    Esta consulta la podéis ejecutar con el Navicat, siempre bajo vuestra responsabilidad, ya que los cambios son permanentes.
     
    Después de ejecutarla mi item_proto fue modificado en 35 registros. Osea, que yo tenía 35 objetos que se vendían mejor de lo que se compraban. Ya no más.
     
    Un saludo
  6. Me Gusta
    Lamarck got a reaction from Migcia in algien abria crear una quest asi   
    Aquí está una quest de blackyuyo:
     
    Está quest lo que hace es crear un archivo txt con el nombre del jugador que ha enviado el reporte, la fecha y su mensaje. El archivo se crea usr/home/game/share/locale/spain(germany, etc)/quest/bug_report/
     
    Quest
    quest gm_inform begin state start begin when login begin set_state(information) end end state information begin when letter begin send_letter("Reporta un informe") end when button or info begin say_title("Reportar un informe") say_reward("Atención: Tu nombre será guardado[ENTER]") say ("Quieres informar de un algo?[ENTER]") local s = select ("Si", "No") if s == 2 then return end local max_rows = 20 local row_n = 1 local bug_mex = "" local stop = false -- Read all rows repeat say_title("Reportar informe - Linea "..row_n.." / "..max_rows) say("Por favor, haz una descripción detallada") say("del informe:[ENTER]") local line = input() say_title("Reportar informe - Linea "..row_n.." / "..max_rows) if string.len(line) < 4 then -- Row too short say("Has insertado un texto demasiado corto.[ENTER]") if row_n == 1 then wait() else local s = select("Continuar", "Enviar reporte") if s == 2 then stop = true end end else -- Next line bug_mex = bug_mex..NEW_LINE_FILE..line row_n = row_n+1 if row_n == max_rows then say("Has realizado el reporte con éxito.[ENTER]") wait() stop = true else say("Deseas escribir más lineas?[ENTER]") local s = select("Si", "No") if s == 2 then stop = true end end end until stop -- Finsh reading rows say_title("Reportes") if (BugReport.Report(bug_mex)) then say("Tu reporte se ha enviado correctamente[ENTER]") else say("Ha ocurrido un error al enviar el reporte.") say("Prueba más tarde.[ENTER]") end end -- when end -- state end -- quest Questlib.lua
    --** --** Report functions --** BugReport = {['Folder'] = get_locale_base_path().."/quest/bug_report/"} --** Write bug report to file function BugReport.Report(bug_message) local written = false local new_count = BugReport.Count.Update() local file_name = BugReport.Folder..pc.get_name().."_"..new_count..".txt" local file = io.open(file_name, "w") if file != nil then written = true file:write("Personaje: "..pc.get_name().." (PID: "..pc.get_player_id()..")\n") file:write("Fecha: "..os.date("%d/%m/%Y - Ore: %H:%M").."\n") file:write("Mensaje:\n") file:write(bug_message.."\n") file:close() end return written end --** Bug count handling BugReport.Count = {['Flag'] = "bug_count"} --** Get the bug count for a player function BugReport.Count.Get() return pc.getqf(BugReport.Count.Flag) end --** Set the bug count for a player function BugReport.Count.Set(new_count) pc.setqf(BugReport.Count.Flag, new_count) end --** Update bug count for a player function BugReport.Count.Update() local new_count = BugReport.Count.Get()+1 BugReport.Count.Set(new_count) return new_count end
  7. Me Gusta
    Lamarck got a reaction from peri200 in algien abria crear una quest asi   
    Aquí está una quest de blackyuyo:
     
    Está quest lo que hace es crear un archivo txt con el nombre del jugador que ha enviado el reporte, la fecha y su mensaje. El archivo se crea usr/home/game/share/locale/spain(germany, etc)/quest/bug_report/
     
    Quest
    quest gm_inform begin state start begin when login begin set_state(information) end end state information begin when letter begin send_letter("Reporta un informe") end when button or info begin say_title("Reportar un informe") say_reward("Atención: Tu nombre será guardado[ENTER]") say ("Quieres informar de un algo?[ENTER]") local s = select ("Si", "No") if s == 2 then return end local max_rows = 20 local row_n = 1 local bug_mex = "" local stop = false -- Read all rows repeat say_title("Reportar informe - Linea "..row_n.." / "..max_rows) say("Por favor, haz una descripción detallada") say("del informe:[ENTER]") local line = input() say_title("Reportar informe - Linea "..row_n.." / "..max_rows) if string.len(line) < 4 then -- Row too short say("Has insertado un texto demasiado corto.[ENTER]") if row_n == 1 then wait() else local s = select("Continuar", "Enviar reporte") if s == 2 then stop = true end end else -- Next line bug_mex = bug_mex..NEW_LINE_FILE..line row_n = row_n+1 if row_n == max_rows then say("Has realizado el reporte con éxito.[ENTER]") wait() stop = true else say("Deseas escribir más lineas?[ENTER]") local s = select("Si", "No") if s == 2 then stop = true end end end until stop -- Finsh reading rows say_title("Reportes") if (BugReport.Report(bug_mex)) then say("Tu reporte se ha enviado correctamente[ENTER]") else say("Ha ocurrido un error al enviar el reporte.") say("Prueba más tarde.[ENTER]") end end -- when end -- state end -- quest Questlib.lua
    --** --** Report functions --** BugReport = {['Folder'] = get_locale_base_path().."/quest/bug_report/"} --** Write bug report to file function BugReport.Report(bug_message) local written = false local new_count = BugReport.Count.Update() local file_name = BugReport.Folder..pc.get_name().."_"..new_count..".txt" local file = io.open(file_name, "w") if file != nil then written = true file:write("Personaje: "..pc.get_name().." (PID: "..pc.get_player_id()..")\n") file:write("Fecha: "..os.date("%d/%m/%Y - Ore: %H:%M").."\n") file:write("Mensaje:\n") file:write(bug_message.."\n") file:close() end return written end --** Bug count handling BugReport.Count = {['Flag'] = "bug_count"} --** Get the bug count for a player function BugReport.Count.Get() return pc.getqf(BugReport.Count.Flag) end --** Set the bug count for a player function BugReport.Count.Set(new_count) pc.setqf(BugReport.Count.Flag, new_count) end --** Update bug count for a player function BugReport.Count.Update() local new_count = BugReport.Count.Get()+1 BugReport.Count.Set(new_count) return new_count end
  8. Me Gusta
    Lamarck reacted to pepineitor in Rachas/Puntuación en Gremios   
    Buenas noches,
    como nadie aporta nada, nada nuevo, útil, etc. pues e desempolvado un poco una de mis carpetas por postear algo, simplemente para ver si esto progresa un poco, aunque sea un poco, posteo esto, a alguien le servirá, hay gente que lo vende.
     

    quest rachas_gremios begin state start begin when kill with npc.is_pc() and pc.get_map_index() >= 1100000 and pc.get_map_index() < 1120000 begin local gM,rachas,e,gE = pc.get_guild(),pc.getqf("rachas_gremios")+1,pc.select(npc.get_vid()),0 if e != 0 and gM != 0 then gE = pc.get_guild() if gE != 0 then pc.setqf("rachas_gremios", 0) syschat("Has muerto, tus rachas vuelven a 0") pc.select(e) if gM != gE then pc.setqf("rachas_gremios", rachas) chat("Has sumado un punto a tus rachas, llevas "..rachas) end end end end when logout with pc.get_map_index() >= 1100000 and pc.get_map_index() < 1120000 begin pc.setqf("rachas_gremios", 0) end endendEl código paso de explicarlo, pero es básico, solo funciona en batallas de gremios, pero si quereis que sea en un mapa especial u otra cosa teneis que cambiar
    pc.get_map_index() >= 1100000 and pc.get_map_index() < 1120000y poneis la condición que querais  
    si quereis que se muestre algún mensajito en el cliente, algúna imagen, poneis un cmdchat debajo del anuncio de tus rachas y ya está.
     
    Nota
    Para que el sistema funcione debeis de tener la función de npc.get_vid(), podeis buscar el dif por donde querais, funciona con cualquier game, si tiene la función, si no lo encontrais, también podeis usar la función que posteo Noa, la teneis en el siguiente link
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  9. Me Gusta
    Lamarck reacted to Shogun in [Quest] Ranking in-game   
    Función mysql y otras escritas por el mismo autor para quien le interese:
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  10. Me Gusta
    Lamarck reacted to Serex in [Quest] Ranking in-game   
    Bueno chicos hoy os traigo una sencilla quest para que podais ver hasta el top 15 en el juego clickando solo a 1 npc.
     

    quest raking begin state start begin when 20095.chat."Ranking" begin local rangliste = mysql_query("SELECT * FROM player.player WHERE player.name NOT LIKE '[%]%' ORDER BY player.level DESC, player.exp DESC","root","rootpw","player","rootip") say_title("Top 15") say("#: Nombre Nivel ") say("Top 1: "..rangliste.name[1].." "..rangliste.level[1].." ") say("Top 2: "..rangliste.name[2].." "..rangliste.level[2].." ") say("Top 3: "..rangliste.name[3].." "..rangliste.level[3].." ") say("Top 4: "..rangliste.name[4].." "..rangliste.level[4].." ") say("Top 5: "..rangliste.name[5].." "..rangliste.level[5].." ") say("Top 6: "..rangliste.name[6].." "..rangliste.level[6].." ") say("Top 7: "..rangliste.name[7].." "..rangliste.level[7].." ") say("Top 8: "..rangliste.name[8].." "..rangliste.level[8].." ") say("Top 9: "..rangliste.name[9].." "..rangliste.level[9].." ") say("Top 10: "..rangliste.name[10].." "..rangliste.level[10].." ") say("Top 11: "..rangliste.name[11].." "..rangliste.level[11].." ") say("Top 12: "..rangliste.name[12].." "..rangliste.level[12].." ") say("Top 13: "..rangliste.name[13].." "..rangliste.level[13].." ") say("Top 14: "..rangliste.name[14].." "..rangliste.level[14].." ") say("Top 15: "..rangliste.name[15].." "..rangliste.level[15].." ") local s = select("Salir") elseif s == 1 then return end end end
×
×
  • Crear nuevo...