-
Contador contenido
9 -
Ingreso
-
Última visita
Actividad de reputación
-
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 -
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 -
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. -
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.
-
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
-
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 -
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 -
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. -
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. -
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