Jump to content

pepineitor

Miembro
  • Contador contenido

    168
  • Ingreso

  • Última visita

  • Días ganados

    11

Mensajes publicados por pepineitor

  1. Si que podrán, ya que el is_delayed sirve para eso, si te fijas bien: 

                        elseif get_time() <= pc.getqf('tries') then                        say'Since you failed 5 times your password[ENTER]you have to wait 2 hours to try again.[ENTER]Too bad!'                        return                    end                    if pc.getqf('is_delayed') == 1 then pc.delqf('is_delayed') pc.delqf('tries') end
    Si get_time() no es <= tries y el is_delayed es 1 entonces borra el qf is_delayed y tries, de este modo podrán volver a intentarlo y el contaje se borrará, como es obvio.De todos modos, gracias por tu comentário y el de los demás ^^

     

    Bueno tampoco me había fijado en eso x), pensaba que estaba esa condición superior a la anterior.
  2. Tiene algunos errores de funcionalidad pero esta muy buena

    if pc.getqf('tries') == 5 then                        say'Sorry, you have tried too many times.[ENTER]Please, try later.'                        pc.setqf('tries', get_time()+60*60*2)                        pc.setqf('is_delayed', 1)                        return
     

    						if pc.getqf('tries_to_login') == 5 then                    say'Sorry, you have tried to log in too many times.[ENTER]Please try later.'                    pc.setqf('tries_to_login', get_time()+60*60*2)                    pc.setqf('is_login_delayed', 1)                    return
    tries_to_login y tries les estás asignando un tiempo(ej: 97412497412459) nunca podran recuperar pass o la función que tengan si se equibocan.

     

    Así por encima no he mirado mucho, pero esta buena ;)

  3. 	    quest questinicio begin            state start begin                    when 100052.use begin                    say_title("Elector de Iniciación")                    say("")                    say("Hola jugador, aquí puedes Elegir tu Pack de Inicio")                    say("y recibirlo en tu inventario, procura tener")                    say("8 Espacios vacios en tu inventario antes de seleccionar")                    say("")                    say_reward("¿Deseas Elegir tu Pack de Iniciación?")                    local canjear = select ("Seleccionar" , "Ahora no")                                       if canjear == 1 then                            local s = select ("Packs Iniciación Disponibles","Salir")                                                       if s == 1 then                                    local misc = select("Pack Iniciación Guerreros","Pack Iniciación Ninjas","Pack Iniciación Suras","Pack Iniciación Chamanes","Salir")                                            if misc == 1 then                                                    say ("Has recibido Pack Iniciacion para Guerreros.")                                                    if select("Espada", "Lanza") == 1 then                                                       pc . give_item2 ( "14209" , 1 ) --#                                                    else                                                      pc . give_item2 ( "15209" , 1 ) --#                                                    end                                            pc . remove_item(100052, 1)                                                                                       elseif misc == 2 then                                                    say ("Has recibido Pack Iniciación para Ninjas.")                                                    if select("Daga", "Arco") == 1 then                                                       pc . give_item2 ( "14209" , 1 ) --#                                                    else                                                      pc . give_item2 ( "15209" , 1 ) --#                                                    end                                            pc . remove_item(100052, 1)                                                                                       elseif misc == 3 then                                                    say ("Has recibido Pack Iniciación para Suras.")                                                    pc . give_item2 ( "14209" , 1 )                                                    pc . give_item2 ( "15209" , 1 )                                            pc . remove_item(100052, 1)                                                                                       elseif misc == 4 then                                                    say ("Has recibido Pack Iniciación para Chamanes.")                                                    pc . give_item2 ( "14209" , 1 )                                                    pc . give_item2 ( "15209" , 1 )                                            pc . remove_item(100052, 1)                                                 elseif misc == 5 then                                            return                                            end                                 elseif s == 2 then                            return                            end                    end                    end            end    end
    Modifica el item que se da en las lineas marcadas con --#
  4. quest blablab beginstate start beginwhen xx.use beginsay("Introduce el nombre")local nombre = input()say("Intorudce duracion en minutos")local tiempo = tonumber(input())if select("Continuar", "Cerrar") == 1 thencommand('block_chat "..nombre.." "..tiempo.."')notice_all(nombre.." ha sido bloqueado por chat durante "..tiempo.." segundos.")endendendend

  5. Vas a locale -> effect

    Abres gm.mse

     

    Si no me equiboco, ya que esto no lo suelo modificar, buscas esto

    0.005714 0.600000
    eso es la dimensión en X(el ancho), seguidamente encontrarás
    0.000000 0.800000
    , eso es la dimensión en Y(el alto) creo que hay que modificar el segundo valor de cada componente, pruebalo y ya nos dices.

     

    Si con esos no funciona es modificar los próximos, ya que no lo voy a testear, pero es así.

  6. Este tipo de quest es mejor hacerlo con " pc.getqf "

    ¿Porque lo digas tu no? Se puede hacer con todo.

     

    @Troll

    Simplemente tienes que añadir entre

     end              end
    que encontraras al final, la función

    setstate(__COMPLETE__)
    Quedando tal que así.

     [...]say_reward ( "Has Recibido Set de Chaman!" )        end       setstate(__COMPLETE__)       end          end          state __COMPLETE__ begin                when enter begin[...]
  7. Bueno, como no hay una sección dedicada a SQL, dejo aquí un par de querys que os seran de utilidad a la hora de banear a alguien sin necesidad de tener que memorizar/copiar ip's, cuentas, etc.

     

    Made by Pepineitor.

     

    Primera(1º) - Banear una cuenta a través del nombre del jugador

    UPDATE account.account SET status = 'BLOCK' WHERE account.id = (SELECT account_id FROM player.player WHERE name='##NOMBRE DEL PJ##');
    Segunda(2º) - Banear todas las cuentas relaccionadas con una IP a través de nombre del jugador
    UPDATE account.account SET status = 'BLOCK' WHERE account.id in (SELECT account_id FROM player.player WHERE ip = (SELECT ip FROM player.player WHERE name='##NOMBRE DEL PJ##'));
    Para los que no sepan como ejecutarlas, abrimos nuestro programa de gestión de bases de datos, en mi caso Navicat, pulsamos F6(en Navicat), y aquí pegamos la query que elijamos, la parte a cambiar es ##NOMBRE DEL PJ##.

     

    Un saludo.

  8. Bueno, para poder comprobar lo que hemos aprendido en los cursos de quest e elaborado este examen para vosotros, recordad que es para mejorar vuestros fallos y poder aprender así más.

     

    El examen constará de cuatro(4) ejercicios valorados a dos puntos y medio(2.5) cada uno.

     

    El examen se enviará a través de Mensaje Privado a mi(Pepineitor), en el tema/asunto se deberá poner 'Mi examen - 1st Examen de Quest', los mensajes que no contengan este asunto seran descartados automáticamente.

     

    En este examen se veran contemplados los temas tratados en el Curso de Quest desde el Primer(1) capítulo hasta el Sexto(6), de tal modo que no se podran ver incluidos contenidos de capítulos superiores, además podeis usar los manuales de lua, todos los link serán adjuntados al final del articulo, el objetivo del examen es comprender y elaborar los diversos ejercicios propuestos con una sintaxis correcta e intentando que su extensión se la mínima posible.

     

    Recomendaciones: para realizar este examen es recomendable hacerlo solo mirando los correspondientes capítulos, es preferible que no copies partes de otras quest o pidais ayuda unos a otros, ya que la finalidad es evaluar tus conocimientos. Los ejercicios seran resueltos via mensaje privado o publicando el solucionario de dicho examen en este post, recuerdo que la sintaxis se puede aplicar de distintas formas, por lo tanto habra más de una solución para cualquier ejercicio, intentare que sea lo más intuitivo posible.

     

    Los resultados seran publicados en el este artículo con la correspondiente nota del usuario. ¡Recordad que podemos hacer una recuperación si se estimase necesario! :P

     

    Cualquier duda relaccionada con los ejercicios podeis realizarla en este mensaje. ¡Buena suerte a todos!

     

    ¡Comencemos el examen! ;)

     

     

    Nota:

    Las cadenas de texto AAAA, B, CCC, DDD, EEEE, GG, HHH, IIII, JJJ, KKK, LLL, MMM, NN son variables, en lugar de poner números(si se estimase oportuno) debeis de  poner las letras indicadas.

     

    Primer ejercicio(1)

    En este ejercicio deberás de relizar una quest en la cual:1.- Al hacer click sobre el NPC AAAA te diga tu Nombre y separado por un espacio, te diga tu Nivel, seguidamente si tu Nivel es igual o superior a 50 te de la opción de Viajar al Mapa B con cordenadas (CCC, DDD).2.- Al entrar/logearse en dicho mapa deberá de comprobarse si el Nivel es igual o superior a 50, si no es así, se te deberá de llevar a la ciudad, por el contrario, el sistema de dará la bienvenida al mapa a través de un SAY().
    Segundo Ejercicio(2)

    En este ejercicio deberás de realizar una quest en la cual:1.- Al usar el item EEEE deberá de aparecer en el chat un mensaje en el cual se deberá incluir los siguientes datos:1.1.- Resultado de un número aleatorio entre FF y GG1.2.- Una palabra(Por ejemplo: Poca suerte, Suerte normal, Buena suerte) que dependa del número aleatorio, esto quiere decir que dependiendo del número que os salga en el apartado 1.1 deberá de salir una palabra u otra.2.- Al usar el item EEEE deberán de eliminarse todos los items EEEE que se posean en el inventario.
    Tercer Ejercicio(3)

    En este ejercicio deberás de realizar una quest en la cual:1.- Al matar al Mob HHH aparecera un mensaje felicitandote.2.- Al matar al Mob HHH por segunda vez aparecera un mensaje felicitandote y se te entregara el item IIII.3.- Al matar al Mob HHH por tercera vez y teniendo en el inventario el item IIII, aparecerá una noticia general/anuncio en la cual se incluira el nombre del jugador y la información extra que deseeis.4.- Al matar al Mob HHH por cuarta vez o más no pasará nada excepcional.
    Cuarto Ejercicio(4) #El más dificil

    En este ejercicio deberás de realizar una quest en la cual:1.- Al usar el item JJJ o el item KKK y estando montado en un Caballo Basico o Militar deberá de suceder lo siguiente:1.1.- Deberá de aparecer un Mob LLL en la posición del usuario incrementada en 5 puntos en X y 20 puntos en Y.2.- Al derrotar al Mob LLL a través de lo especificado en el apartado uno(1), el Mob LLL deberá de dropear un item MMM con una cantidad igual al resultado redondeado entre la división de Hp y el Sp.3.- Al viajar/logearte en el mapa con id NN, comprobar si dispones una cantidad de Items MMM igual o superior al resultado redondeado de la division de la Id del mapa NN elevada al cuadrado entre el Nivel del usuario.3.1- Si dispones de la cantidad de items especificada en el punto tres(3), eliminar dicha cantidad de items, por el contrario, llevar al usuario a su ciudad.4.- Al logearte en cualquier mapa tras haber gastado los articulos contemplados en el punto 3.1 se te notifique via chat que no disponias de los articulos necesarios y desactivar: el uso articulo mencionado en el punto uno(1), el drop del articulo mencionado en el punto dos(2) y la eliminación de items descrito en el punto tres(3)5.- Si has conseguido realizar todos los ejercicios ¡felicidades!
    Información adicional:

    Resultado redondeado, hace alusión al redondeo de números decimales ejemplo: 1,463 -> 1; 94,238 -> 94, etc.

     

    Páginas recomendadas para realizar los ejercicios:

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    í­tulo-v-los-states/

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    ­tulo-iii-profundicemos-en-los-whens/

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    ­tulo-ii-estructura-de-una-quest/

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.

    Funciones de Quest - Original de Noa

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.

     

     

     

     

    Ejemplo de Variable

    Enunciado: Al matar al Mob ZZZ se debe recibir un total de W items del vnum YYYY.

     

    quest ejemplo beginstate start beginwhen ZZZ.kill beginpc.give_item2(YYYY, W)endendend
  9. quest bichos_hielo begin	state start begin		when login or levelup with pc.get_level() >= 10 begin			set_state(info)		end	end	state info begin		when letter begin			send_letter("Los perros de city")			local v = find_npc_by_vnum(20087)			if v != 0 then				target.vid("__TARGET__", v, "Los perros de city")			end		end		when info or button begin			say_title("Los perros de city")			say(mob_name(20087) .. " necesita de tu ayuda")			say("Buscale y ayudale!")			say("")		end		when __TARGET__.target.click or 20087.chat."Los perros de city" begin			target.delete("__TARGET__")			say_title(mob_name(20087) .. ":")			say("")			say("ya que estas entrenando me podrias ayudarme con")			say("los perros salvajes, por favor, quiero pedirte otro")			say("favor ya que estaras por ahi, yo seria mas")			say("tranquila si los perros salvajes, tambien")			say("fueran acabados por ti, por favor ayudame a")			say("matarlos, ya quiero estar mas tranquila.")			say("")			wait()			say("Entonces dime:")			say_reward("Deseas tomar la mision?")			local res = select("Si","No")			if res == 2 then				say("Bueno, estare aqui para cuando decidas volver")				clear_letter()				set_state(start)			else				say_title(mob_name(20087) .. ":")				say("Perfecto has decidido tomarla ahora")				say("Esperare, a que vuelvas")				set_state(__MISION__)			end		end	end	state __MISION__ begin		when letter begin			setskin(NOWINDOW)			makequestbutton("Los perros de city")			q.set_title("Los perros de city")			q.start()		end		when button or info begin			say_title("Informacion de la Quest")			say("")			say("Dirigete hacia las afueras de la city y mata  30")			say("perros salvajes, para que banco pueda recuperar")			say("un poco mas de tranquilidad.")			say("")		end		when enter begin			pc.setqf("kill_count", 30)		end		when letter begin			q.set_counter("perro salvaje", pc.getqf("kill_count"))		end		when 101.kill begin			local count = pc.getqf("kill_count")-1			pc.setqf("kill_count", count)			q.set_counter("perro salvaje", count)			if count < 1 then				set_state(__REWARD__)			end		end	end	state __REWARD__ begin		when letter begin			send_letter("Has completado la mision!")		end		when info or button begin			say_title("Mission Accomplished")			say("Ahora ve y entregala")			say_reward("vuelve con " .. mob_name(20087))			local k = find_npc_by_vnum(20087)			if k != 0 then				target.vid("__TARGET__", k, "Los perros de city")			end		end		when __TARGET__.target.click or 20087.chat."Los perros de city" begin			target.delete("__TARGET__")			say_title(mob_name(20087) .. ":")			say("Oh! Has Realizado la Quest Correctamente!")			say("Yo te recompensare...")			say_reward("Recibes: 1.500 exp")			say_reward("Recibes: 1000000000 yang")			say_reward("Recibes: Piedra ArcoIris")			pc.give_exp2(1500)			pc.give_item2(50512)			pc.changegold(1000000000)			clear_letter()			set_state(__COMPLETE__)		end	end	state __COMPLETE__ begin		when enter begin			q.done()		end	endend
  10. when 20095.chat."Evento Loko" begin            say_title(mob_name(npc.get_race()))            say("")            say("Olá "..pc.get_name().." ,")            say("")            wait()                if game.get_event_flag("evento_loko") == 0 then                    say("")                    say("Desculpe mais o evento não está aberto!")                    say("")                elseif game.get_event_flag("evento_loko") == 1 then                    say("O evento Loko está ativado Se quiser")                    say("posso te levar para participar decida rápido pois")                    say("temos apenas 10 min antes das entrada fecharem")                    local ss = select ("Quero Participar", "Não obrigado")                    if ss == 1 then                        if pc.get_empire == 1 then                            pc.warp(0, 0)                        elseif pc.get_empire == 2 then                            pc.warp(0, 0)                        elseif pc.get_empire == 3 then                            pc.warp(0, 0)                        end                    end                end            end
  11. Toma anda, modifica solo las cosas con -- en su linea

    quest viajar beginstate start beginwhen #npc#.chat."Viajar" begin ---Poner Vnum NPC sin #datos= {['X'] = #CORDX#, --Poner la Cord X sin #['Y'] = #CORDY#, --Poner la Cord Y sin #['L'] = #LVL#    --Poner el Nivel requerido sin #}say("Pon los dialogos que quieras")if select("Viajar", "Cerrar") == 1 then    if pc.get_level() < datos['L'] then say("Nivel requerido "..datos['L']) return end    pc.warp(datos['X'], datos['Y'])    endendendendend
  12. Como va a llegar al chat melón...

    chat("categoria:"..items[1].." y id "..items[2])

    será

    chat("categoria:"..items[i][1].." y id "..items[i][2])

    Tienes que poner en todos los items[1], items[2]...--> items[1]...
    Yo la e probado así y me funciona:

    quest tatata beginstate start beginwhen 70010.use beginitems = {	{1, 1, 149,1, "Espada Batalla +9"},	{1, 2, 19,1, "Espada +9"}}						local categoria = 1			local id = 2			local i = 0			while (i != table.getn(items)) do				i = i + 1				if categoria == items[i][1] and id == items[i][2]  then					chat("categoria:"..items[i][1].." y id "..items[i][2])				end			end			endendend
  13. items = {	--ID_categoria, ID_item, vnum, cantidad, precio, itemCostType, attr1, val1, attr2, val2, attr3, val3, attr4, val4, attr5, val5, attr6, val6, attr7, val7, sock1, sock2, sock3, Descripcion			{1, 1, 149, 1, 100, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Espada Batalla +9"},			{1, 2, 19, 1, 200, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Espada +9"}			}						local categoria = input(cmdchat("GetISBuyID")) --- esto devuelve 1 valor a la quest			local id = input(cmdchat("GetISBuyID2")) --- esto devuelve 1 valor a la quest						chat("categoria: "..categoria.." id: "..id)			local i = 1 			while (i <= table.getn(items)) do				i = i + 1				if categoria == items[i][1] and id == items[i][2] then					chat("categoria:"..items[1].." y id "..items[2])					mysql_query("UPDATE account.account SET coins = coins-"..items[5].." WHERE id = "..pc.get_account_id().." LIMIT 1;")					pc.give_item2(items[3], items[4])					break				end			end
×
×
  • Crear nuevo...