Jump to content

D4nT3

Miembro
  • Contador contenido

    107
  • Ingreso

  • Última visita

  • Días ganados

    4

Actividad de reputación

  1. Me Gusta
    D4nT3 got a reaction from llollo300 in Descompilar .Pyc   
    Aqui tienen el programa que se poner en la raiz de phyton.Es para descompilar archivos .pyc lo unico malo es que sale sin las tabulaciones. 
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Para descompilar:  from decompile import mainmain('','.',['C:Python22Nombredel.pyc'])   Espero que les sirva. Con esto me despido del metin2, ya he visto que es un gasto de tiempo.Por que he visto que es un gasto de tiempo?1º- Hay mucha gente creando server.2º- Te pueden cojer cosas del cliente facilmente.3º- Recibes ataques al server, publicidad de otros metines.4º- Multi Hacks. Es el juego con mas Hack que he visto xD.
  2. Me Gusta
    D4nT3 got a reaction from XentaX in [TIP]Acabar con el error full pathname   
    Que te den por culo si te molesta, solo quiero ayudar.
  3. Me Gusta
    D4nT3 got a reaction from holywars18 in Armadura Epica de sura -.- fallo se be blanca ayuda   
    Creo que es fallo de la textura, remplazala x otra. Te esta brillando entera la armadura si te fijas, esa textura esta editada y esta mal.
     
    Posdata:
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. entiende de eso xD.
  4. Me Gusta
    D4nT3 reacted to holywars18 in Armadura Epica de sura -.- fallo se be blanca ayuda   
    eso es por que la modificastes sin un plugin para dds y tiene varias capas
  5. Me Gusta
    D4nT3 reacted to Robert in [Encriptacion]Esconder ficheros en el launcher!   
    Bueno navegando por internet encontre una manera de esconder el pong del editor hex y ficheros tambien!Bueno aqui viene la guya:

    -Primero descargais esto:
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    -Segundo miras atento todo lo que pone en las imagenes :
     


    -Tercero probamos si se lanza sin los root


    -En el cuarto paso podeis abrir el launcher con el editor hex y vereis que ya no encuentra el pong!
    Gracias por leerlo
    Contraseña: www.metin2zone.net
  6. Me Gusta
    D4nT3 reacted to Croqueta in [Q]Itemshop without Mysql   
    Informacion:
    Hola a todos aca les traigo una quest de una item shop en el juego. realizada en su totalidad por mi
    Contiene:
    -Historial de Compras(log)
    -Historial De Donaciones (log)
    -Ingreso Como administrador (Agregar artículos / y quitarlos)
    -Tienda: Lecto de coins (Este archivo ha de ser creado manualmente)
    -Imagenes:
     
    Importante:
     
    Dentro de la descarga hay un archivo llamado vnumUtype.txt este se le modifica la extencion a .lua
     
    pathti="/usr/home/game/share/locale/germany/quest/test/" <<-- en esta ruta la tabla de la item shop y el vnumUtype.lua
    pathtc="/usr/home/game/share/locale/germany/quest/coins/"
     
    Se crea una nueva carpeta en las rutas anteriores, que depende de usted.
    Más importante aún es un punto que hay que generar la tabla en el juego,
    como un ejemplo de la matriz que me queda, por lo que puede orientarse a la misma.
     
    special thx on stein20 for help to translate
     
    imagen
     
     
     
    Quest
     

    quest ingameshop begin state start begin when 20006.chat."recharge ccoins" begin say_title(mob_name(npc.get_race())) spenden() end when 20006.chat."generate table" with pc.is_gm() begin --if pc.get_gm_level()!=5 then return end say("really generate table?") if select("Yes","No")==2 then return end local ingameshop={ --[[ if you use this first time, push Yes ]] {--weapons {item1,item2},--ids {coins1,cois2}--coins }, {--armor {item1,item2},--ids {coins1,coins2}--coins }, {--special tems {item1,item2},--ids {coins1,item2}--coins } } table.save(ingameshop,pathti.."testtabelle.lua") end when 20006.chat."ItemShop" begin local name_items={} local ingameshop=table.load(pathti.."testtabelle.lua") say_title(mob_name(npc.get_race())) say() say("Choose your category") local auswahl=select3(itemshopk) for i=1,table.getn(ingameshop[auswahl][1]) do table.insert(name_items,tostring(item_name(ingameshop[auswahl][1][i]))) end say_title(mob_name(npc.get_race())) say() say("select the item ") say() local itemshop_i = select3(name_items) if itemshop_i == table.getn(name_items) then return end say_title(string.format("Coins :%d ", get_coins())) say() say("Would you really buy the item?") say() say_gold("it cost "..ingameshop[auswahl][2][itemshop_i].." Coins") say_item_vnum(ingameshop[auswahl][1][itemshop_i]) say("") if select("Yes","No") == 2 then return end if get_coins()<ingameshop[auswahl][2][itemshop_i] then say("not enough coins ") return end say_green("you have buy "..item_name(ingameshop[auswahl][1][itemshop_i]).." for- ") say_green(ingameshop[auswahl][2][itemshop_i].." Coins") say_item_vnum(ingameshop[auswahl][1][itemshop_i]) coins_write((get_coins()-ingameshop[auswahl][2][itemshop_i])) pc.give_item2(ingameshop[auswahl][1][itemshop_i]) write_log(ingameshop[auswahl][1][itemshop_i],ingameshop[auswahl][2][itemshop_i]) end when 20006.chat."Manage Itemshop" with pc.is_gm() begin local tabelle=table.load(pathti.."vnumUtype.lua") local i_shop=table.load(pathti.."testtabelle.lua") say_title(mob_name(npc.get_race())) say() say("Hello "..string.format("%s",pc.get_name())) say("What would you like do?") local s=select("add new items","removing Items","Nothig") if s==3 then return end if s==1 then say_title(mob_name(npc.get_race())) say() say("Choose a category") say("where you want to add the item") local auswahl=select3(itemshopk) say_title(mob_name(npc.get_race())) say() say(itemshopk[auswahl]..": insert into this category?") if select("Yes","No") == 2 then return end say_title(mob_name(npc.get_race())) say() say("Which item you wish to add?") say("Enter the vnum") local vnum= tonumber(input()) if vnum ==nil then say("You have to enter something") return end if auswahl== 1 then if tabelle[vnum][1] != 1 then say("This is not a weapon") return end elseif auswahl == 2 then if tabelle[vnum][1] != 2 then say("This is not a amor") return end elseif auswahl == 3 then if tabelle[vnum][1] == 1 or tabelle[vnum][1]==2 then say("only for special items") return end end say_title(mob_name(npc.get_race())) say() say("Give the price of that item") say() local money= tonumber(input()) if money==nil then say("You have to enter something") return end say_title(mob_name(npc.get_race())) say() say("keeping?") say() say("Item: "..item_name(vnum).." Price: "..money) say_item_vnum(vnum) if select("Yes","No") == 2 then return end i_shop[auswahl][1][table.getn(i_shop[auswahl][1])+1]=vnum i_shop[auswahl][2][table.getn(i_shop[auswahl][2])+1]=money --table.insert(i_shop[auswahl][1],vnum) --table.insert(i_shop[auswahl][2],money) table.save(i_shop,pathti.."testtabelle.lua") say("you have add "..item_name(vnum)) elseif s==2 then local auswahl_items={} say("Choose the item that you wish to remove") say() local a=select3(itemshopk) for i=1,table.getn(i_shop[a][1]) do table.insert(auswahl_items,tostring(item_name(i_shop[a][1][i]))) end say("Choose the item that you wish to remove") say() local itemshop_r = select3(auswahl_items) if itemshop_r==table.getn(auswahl_items) then return end table.remove(i_shop[a][1],i_shop[a][1][itemshop_r]) table.remove(i_shop[a][2],i_shop[a][2][itemshop_r]) table.save(i_shop,pathti.."testtabelle.lua") --[[for i= 1,table.getn(ingameshop[auswahl][1]) do say(i_shop[auswahl][1][i].."\t"..i_shop[auswahl][2][i]) end]] end end end end questlib.lua
     

    pathti="/usr/home/game/share/locale/germany/quest/test/"--ruta de la tabla pathtc="/usr/home/game/share/locale/germany/quest/coins/"--ruta de los coins itemshopk={"Waffe","Rüstungen","Sonstiges"} function write_log(vnum,coins) local i_name=item_name(vnum) datei = io.open(pathti.."shop_log.lua", "a+") if datei==nil then say("Error loading the file") return end datei:write("PLayerID:\t"..pc.get_player_id().."\tPlayerName:\t"..pc.get_name().."\tItemName:\t"..i_name.."\tDate/Time:\t"..os.date("%c").."\tCoins:\t"..coins.."\n") datei:close() end function get_coins() local file = io.open(pathtc..""..pc.get_player_id()..".txt",'r') if file==nil then return 0 end for line in file:lines() do return line end file:close() end function coins_write(coins) file = io.open(pathtc..""..pc.get_player_id()..".txt","w") file:write(coins) file:close() end function spenden() say() say("How much you want to donate?") say_reward("Online Paysafecard will not be accepted") say() s = select("10","25","50","100","cancel") wert = { 10 , 25 , 50 , 100} if s==table.getn(wert)+1 then return end say_title(mob_name(20006)) say() say("Now give the PSC numbers") say() eing2= input() if string.len(eing2)~=16 then say("Your input has no 16 numbers") return end if string.sub(eing2,0,1)=='1' or string.sub(eing2,0,2)=='00' then say("Online Paysafecard will not be accepted") return end say_title(mob_name(20006)) say() say('The PSC is protected with a password?') if select("Yes","No")==2 then eing3=0 else say("Enter the password") eing3 = input() if eing3=='' then say("You have to enter something") return end end say() say("Your input:") say("cash: "..wert[s]) say("PSC: "..eing2) if eing3 == 0 then say("PW: /") else say("PW: "..eing3) end say("Keeping?") say() if select("Yes","No") == 2 then return end say("your Coins will be credited to you after the control") file = io.open(pathti.."psc_log.lua","a+") --file:write("PlayerName:\t"..pc.get_name().."\tCash:\t"..wert[s].."\tPSC:\t"..eing2.."\tPW:\t"..eing3.."\tDate/Time:\t"..os.date("%c").."\n") file:write("ID:\t"..pc.get_player_id().."PlayerName:\t"..pc.get_name().."\tCash:\t"..wert[s].."\tPSC:\t"..eing2.."\tPW:\t"..eing3.."\tDate:\t"..os.date("%c").."\t\n") file:close() end function select3(...) arg.n = nil local tp,max = arg,5 if type(tp[1]) == 'number' then max = tp[1] if type(tp[2]) == 'table' then tp = tp[2] else table.remove(tp,1) end elseif type(tp[1]) == 'table' then if type(tp[1][1]) == 'number' then max = tp[1][1] table.remove(tp[1],1) tp = tp[1] end tp = tp[1] end local str = '{' local tablen,act,incit = table.getn(tp),0,0 table.foreach(tp,function(i,l) act = act + 1 if act == 1 then str = str .. '{'..string.format('%q',l) elseif act == max+1 and tablen > act+incit then if tablen ~= act+incit+1 then str = str..'},{'..string.format('%q',l) else str=str..','..string.format('%q',l) end incit = incit + max act = 1 else str=str..','..string.format('%q',l) end end) local px = loadstring('return '..str ..'}}')() local function copy_tab(t) local p= {} for i = 1,table.getn(t) do p[i] = t[i] end return p end local pe = {} for i = 1,table.getn(px) do pe [i] = copy_tab(px[i]) end local function init(i,ip) pe[i] = copy_tab(px[i]) local next,back,exit = 0,0,0 if i < table.getn(pe) and table.getn(pe) ~=1 then table.insert(pe[i],table.getn(pe[i])+1,'Para alante Pagina '..(i+1)); next = table.getn(pe[i]) end if i > 1 then table.insert(pe[i],table.getn(pe[i])+1,'Para atraz pagina '..(i-1)); back = table.getn(pe[i]) end table.insert(pe[i],table.getn(pe[i])+1,'Cerrar'); exit = table.getn(pe[i]) if table.getn(pe) > 1 then say('pagina '..i..' de '..table.getn(pe)) end local e = select_table(pe[i]) if e == next then return init(i+1,ip+max) elseif e == back then return init(i-1,ip-max) elseif e == exit then return -1 else return e+ip,pe[i][e] end end return init(1,0) or -1 end local function exportstring( s ) return string.format("%q", s) end function table.save( tbl,filename ) local charS,charE = " ","\n" local file,err = io.open( filename, "wb" ) if err then return err end local tables,lookup = { tbl },{ [tbl] = 1 } file:write( "return {"..charE ) for idx,t in ipairs( tables ) do file:write( "-- Table: {"..idx.."}"..charE ) file:write( "{"..charE ) local thandled = {} for i,v in ipairs( t ) do thandled[i] = true local stype = type( v ) if stype == "table" then if not lookup[v] then table.insert( tables, v ) lookup[v] = table.getn(tables) end file:write( charS.."{"..lookup[v].."},"..charE ) elseif stype == "string" then file:write( charS..exportstring( v )..","..charE ) elseif stype == "number" then file:write( charS..tostring( v )..","..charE ) end end for i,v in pairs( t ) do if (not thandled[i]) then local str = "" local stype = type( i ) if stype == "table" then if not lookup[i] then table.insert( tables,i ) lookup[i] = table.getn(tables) end str = charS.."[{"..lookup[i].."}]=" elseif stype == "string" then str = charS.."["..exportstring( i ).."]=" elseif stype == "number" then str = charS.."["..tostring( i ).."]=" end if str ~= "" then stype = type( v ) if stype == "table" then if not lookup[v] then table.insert( tables,v ) lookup[v] = table.getn(tables) end file:write( str.."{"..lookup[v].."},"..charE ) elseif stype == "string" then file:write( str..exportstring( v )..","..charE ) elseif stype == "number" then file:write( str..tostring( v )..","..charE ) end end end end file:write( "},"..charE ) end file:write( "}" ) file:close() end function table.load( sfile ) local ftables,err = loadfile( sfile ) if err then return _,err end local tables = ftables() for idx = 1,table.getn(tables) do local tolinki = {} for i,v in pairs( tables[idx] ) do if type( v ) == "table" then tables[idx][i] = tables[v[1]] end if type( i ) == "table" and tables[i[1]] then table.insert( tolinki,{ i,tables[i[1]] } ) end end for _,v in ipairs( tolinki ) do tables[idx][v[2]],tables[idx][v[1]] = tables[idx][v[1]],nil end end return tables[1] end quest_function
     

    write_log get_coins coins_write spenden select3 table.save table.load
    http-~~-//www.youtube.com/watch?v=5avAKriuCTg

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  7. Me Gusta
    D4nT3 got a reaction from SrWidow in [TIP]Acabar con el error full pathname   
    Si no puedes entrar al firezilla az esto
     
    Primero de nada cuando te sale eso le das a enter
    despues que te salga este simbolo # escribes esto
    # fsck -y
    Te hara preguntas, y todas las preguntas te diran que respondas Y, y te chequeara el sistema
     
    A continuación, regrese a su nombre y el signo #, vea el paso 3 la función de comando. (Escribes otra vez fsck -y) dejas que termine y reboot, y ya esta como nuevo = )
     
    Ahora es el reinicio, y el error se corrige verlusst sin ningún dato.
     
    Espero que sea comprensible su publicación, por favor no dude en preguntar más. pm / mensajero o ser invitado aquí en el hilo.
     
     
    greetz
    raiden
     
    Edit:
    Weitrere preguntas / problemas a los errores freebsd también pueden ser publicados aquí, también me ayuda por desweiterem pm msn / icq.
     
    Creditos:
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  8. Me Gusta
    D4nT3 got a reaction from repasi123 in Darksiders (Sacado por mi)npc   
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Edito: Esta mal.. las texturas son .png sorry.

    Debes iniciar sesión para ver el contenido del archivo adjunto en esta publicación.
  9. Me Gusta
    D4nT3 got a reaction from izaviona in Video Tutorial 3d max (aprender a dar movimiento)   
    Este es uno de los videos que me ha servido de mucho.
    Espero que a ustedes tambien les sirva.
     

  10. Me Gusta
    D4nT3 reacted to Elite™ in Metin2 File Tool By Balika   
    Usage: m2ft <.dat file>
     
    unpack:
    unpack|pack_name|out_folder|out_dat_name
    pack:
    pack|pack_name
    file_name|file_path|file_type
    comment:
    start line whit "--"
    Press a key to continue...
     
    Ese ejecutable tienes que dejarlo en el escritorio.
     
    Te recomiendo que crees una carpeta en la que crearas un archivo .dat por ejemplo para "root" root.dat con esta información

    unpack|root|D:\Descompilar|root_pack.dat
    Información:
    unpack|nombre del archivo epk,eix|Ruta|Nombre del archivo que va a generar.dat
    Al Descompilarlo nos debera salir todos los archivos descompilados y el .dat
     

    pack|root 20110915_ymir_item_proto|D:\Descompilar\20110915_ymir_item_proto|1 936mob_proto|D:\Descompilar\936mob_proto|1 936skilldesc.txt|D:\Descompilar\936skilldesc.txt|1 936skilltable.txt|D:\Descompilar\936skilltable.txt|1 assassin_m.msm|D:\Descompilar\assassin_m.msm|1 assassin_w.msm|D:\Descompilar\assassin_w.msm|1 atlasinfo.txt|D:\Descompilar\atlasinfo.txt|1 colorinfo.py|D:\Descompilar\colorinfo.py|1 consolemodule.py|D:\Descompilar\consolemodule.py|1 constinfo.py|D:\Descompilar\constinfo.py|1 debuginfo.py|D:\Descompilar\debuginfo.py|1 emotion.py|D:\Descompilar\emotion.py|1 exception.py|D:\Descompilar\exception.py|1 game.py|D:\Descompilar\game.py|1 grpblk.txt|D:\Descompilar\grpblk.txt|1 interfacemodule.py|D:\Descompilar\interfacemodule.py|1 introcreate.py|D:\Descompilar\introcreate.py|1 introempire.py|D:\Descompilar\introempire.py|1 introloading.py|D:\Descompilar\introloading.py|1 intrologin.py|D:\Descompilar\intrologin.py|1 introselect.py|D:\Descompilar\introselect.py|1 locale.py|D:\Descompilar\locale.py|1 mousemodule.py|D:\Descompilar\mousemodule.py|1 musicinfo.py|D:\Descompilar\musicinfo.py|1 networkmodule.py|D:\Descompilar\networkmodule.py|1 npclist.txt|D:\Descompilar\npclist.txt|1 playersettingmodule.py|D:\Descompilar\playersettingmodule.py|1 prototype.py|D:\Descompilar\prototype.py|1 servercommandparser.py|D:\Descompilar\servercommandparser.py|1 serverinfo.py|D:\Descompilar\serverinfo.py|1 shaman_m.msm|D:\Descompilar\shaman_m.msm|1 shaman_w.msm|D:\Descompilar\shaman_w.msm|1 stringcommander.py|D:\Descompilar\stringcommander.py|1 sura_m.msm|D:\Descompilar\sura_m.msm|1 sura_w.msm|D:\Descompilar\sura_w.msm|1 system.py|D:\Descompilar\system.py|1 test_affect.py|D:\Descompilar\test_affect.py|1 ui.py|D:\Descompilar\ui.py|1 uiaffectshower.py|D:\Descompilar\uiaffectshower.py|1 uiattachmetin.py|D:\Descompilar\uiattachmetin.py|1 uiauction.py|D:\Descompilar\uiauction.py|1 uiautoban.py|D:\Descompilar\uiautoban.py|1 uicandidate.py|D:\Descompilar\uicandidate.py|1 uicharacter.py|D:\Descompilar\uicharacter.py|1 uichat.py|D:\Descompilar\uichat.py|1 uicommon.py|D:\Descompilar\uicommon.py|1 uicube.py|D:\Descompilar\uicube.py|1 uiequipmentdialog.py|D:\Descompilar\uiequipmentdialog.py|1 uiex.py|D:\Descompilar\uiex.py|1 uiexchange.py|D:\Descompilar\uiexchange.py|1 uigamebutton.py|D:\Descompilar\uigamebutton.py|1 uigameoption.py|D:\Descompilar\uigameoption.py|1 uiguild.py|D:\Descompilar\uiguild.py|1 uihelp.py|D:\Descompilar\uihelp.py|1 uiinventory.py|D:\Descompilar\uiinventory.py|1 uimapnameshower.py|D:\Descompilar\uimapnameshower.py|1 uimessenger.py|D:\Descompilar\uimessenger.py|1 uiminimap.py|D:\Descompilar\uiminimap.py|1 uioption.py|D:\Descompilar\uioption.py|1 uiparty.py|D:\Descompilar\uiparty.py|1 uiphasecurtain.py|D:\Descompilar\uiphasecurtain.py|1 uipickmoney.py|D:\Descompilar\uipickmoney.py|1 uiplayergauge.py|D:\Descompilar\uiplayergauge.py|1 uipointreset.py|D:\Descompilar\uipointreset.py|1 uiprivateshopbuilder.py|D:\Descompilar\uiprivateshopbuilder.py|1 uiquest.py|D:\Descompilar\uiquest.py|1 uirefine.py|D:\Descompilar\uirefine.py|1 uirestart.py|D:\Descompilar\uirestart.py|1 uisafebox.py|D:\Descompilar\uisafebox.py|1 uiscriptlocale.py|D:\Descompilar\uiscriptlocale.py|1 uiselectitem.py|D:\Descompilar\uiselectitem.py|1 uiselectmusic.py|D:\Descompilar\uiselectmusic.py|1 uishop.py|D:\Descompilar\uishop.py|1 uisystem.py|D:\Descompilar\uisystem.py|1 uisystemoption.py|D:\Descompilar\uisystemoption.py|1 uitarget.py|D:\Descompilar\uitarget.py|1 uitaskbar.py|D:\Descompilar\uitaskbar.py|1 uitip.py|D:\Descompilar\uitip.py|1 uitooltip.py|D:\Descompilar\uitooltip.py|1 uiuploadmark.py|D:\Descompilar\uiuploadmark.py|1 uiweb.py|D:\Descompilar\uiweb.py|1 uiwhisper.py|D:\Descompilar\uiwhisper.py|1 warrior_m.msm|D:\Descompilar\warrior_m.msm|1 warrior_w.msm|D:\Descompilar\warrior_w.msm|1
    Como Descompilar el archivo
    Para descompilar el archivo es tan facil como arrastrar el *.dat sobre el ejecutable que esta en el escritorio y directamente te lo creara en la ruta que le hayas especificado en el *.dat pero antes de eso tienes que estar el .eix y el .epk dentro de esa carpeta.
     

    Como Compilar el archivo
    Para descompilarl el archivo seria coger el archivo .dat que nos genero al descompilarlo y arrrastrarlo hasta el ejecutable del escritorio.
     

    Descargar


    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  11. Me Gusta
    D4nT3 reacted to KeKo in Capitulo VII - El uso del pc.setqf y pc.getqf   
    Buenas zoneros y zoneras, aqui estoi de nuevo con una nueva leccion del curso de creacion de quests dedicada a mi colega akroma y a sema que tenen problemillas con los qfs
     
    Pc.setqf, pc.getqf... pc.set... pc.geee.... De que estabamos hablando?
     
    Uno de los comandos que mas utilizareis cuando os esteis haciendo/revisando quests serán los famosos:
     

    pc.setqf pc.getqf Para explicaros como funcionan estos tan problematicos comandos recurrire de nuevo al bonito simil que utilice cuando mi buen amigo Jordan me pidio una explicacion sencilla para entender de una vez estos comandos. Antes de hacerlo, quiero recordaros un dato muy importante: estos dos comandos llevan pc.algo así que tened muy en mente que afectan siempre a un jugador, que es el que active el qf en la quest y NO ningun otro.
     
    Bien, ahora pensad en un posit (esas notitas de colores que puedes pegar donde quieras) y pensad en una pared en la que podemos pegar nuestro posit. Ahora convirtamos esto a lua, nuestro posit es el pc.setqf y el pc.getqf y nuestra pared es el jugador que activara el qf.
     
    Que narices tiene que ver un posit en todo esto keko?
     
    Esta claro que en lua no hay posits, pero lo que busco con esta comparacion es que pilleis el concepto del qf. Bueno volvamos a donde lo dejamos: tenemos nuestro pj al que le queremos pegar un posit (es decir ponerle un qf) así que cojemos un boli y pensamos algo que poner en nuestro posit, es decir, pensamos que valor le vamos a dar al qf si pensamos en lua.
     
    Una vez ya lo hemos pensando, escribimos lo que queriamos y lo pegamos en la pared, lo que en lua corresponderia con darle un valor al qf y asignarselo al personaje.
     
    Pero esto no se para aquí, para que sirve un posit? Para acordarnos de algo!! Por lo tanto si seguimos con la comparacion al lua, habra veces que necesitemos comprobar que valor tiene nuestro qf para hacer condiciones con el. Además, si queremos cambiar lo que pone el posit, simplemente lo tachamos y ponemos otra cosa; en lua también podemos modificar el valor que tiene el qf de nuestro personaje.
     
    No me he enterao de una mierda , que hago con el posit?
     
    Aver, eso fue una comparación, para los que aun esteis buscando un boli pa escribir algo en el posit os haré un resumen de todo lo que os he estado intentando explicar hasta ahora:
     
    El comando pc.setqf nos permite asignar un determinado valor a un personaje de modo que podamos usar el comando pc.getqf para crear condiciones que impliquen que el personaje tenga ese valor concreto para activarse.
     
    Bueno, ahoara que ya lo he explicado en plan posit y en plan redactado vamos a profundizar un poquito en el uso de estos dos comandos.
     
    Ummm, como decias que le asignaba el valor a eso?
     
    Pues es muy sencillo, lo primero es distinguir entre:
     

    pc.setqf
    pc.getqf El pc.setqf siempre se usará para ASIGNAR un valor, mientras que el pc.getqf se encargará de CHEQUEAR cuál es el valor que tiene el qf que hemos puesto con el setqf.
     
    Bien, una vez sabemos esto procederé a explicaros cual es la sintaxis de un pc.setqf:
     

    pc.setqf("nombredelqf", valor) Del que seria un ejemplo este:
     

    pc.setqf("kekomola", 5) En este caso el jugador tendra asignado el valor "kekomola" con una cantidad igual a 5. El nombre que tenga el qf es el que vosotros querais!
     
    Me gustaria discernir entre dos tipos de setqfs:
     

    pc.setqf("kekomola", 2) pc.setqf("kekomola", pc.getqf("kekomola") + 1) El primero de ellos es un setqf que se utiliza cuando la cantidad que le vamos a dar al valor es fija, mientras que el segundo se utliza cuando la cantidad va a ir aumentando cada vez que utilicemos el setqf.
     
    Por lo tanto, en el primer caso siempre que activemos esa parte de la quest el valor kekomola sera igual a 2. Sin embargo, cada vez que activemos el segundo caso el valor kekomola irá aumentando en 1 (es decir la primera vez que lo usemos la cantidad sera 1, lo volveremos a usar y sera 2, luego 3, etc).
     
    Y por no faltar ahora os explicaré la sintaxis del pc.getqf: como este comando solo se utiliza en condiciones (ya que su funcion es la de chequear) no tiene la misma sintaxis que el setqf:
     

    if pc.getqf("kekomola") == 5 then Este comando lo usareis combinado con el estructurador if, por lo que ira escrito el pc.getqf("nombre") y luego el doble simbolo de igualdad (tipico de las comparaciones) y la cantidad del valor.
     
    Vale ya se asignar valores, ahora de que me sirve esto?
     
    Pues los setqf son unos de los comandos mas utilizados en las quests ya que permiten crear condiciones que van cambiando segun lo que va haciendo el personaje. Veamos un ejemplo:
     

    quest item begin state start begin when 70045.use begin pc.setqf("buenas", pc.getqf("buenas") + 1) if pc.getqf("buenas") == 1 then chat("buenas") elseif pc.getqf("buenas") == 2 then chat("que tal") elseif pc.getqf("buenas") >= 3 then chat("me aburro") end end end end En esta cada vez que usas el item te auemnta en 1 el qf:
     

    pc.setqf("buenas", pc.getqf("buenas") + 1) Por lo tanto ponemos una condicion para diferentes del mismo:
     

    if pc.getqf("buenas") == 1 then elseif pc.getqf("buenas") == 2 then elseif pc.getqf("buenas") >= 3 then De ese modo, dependiendo de cuantas veces hayamos usado el item dira algo diferente cada vez.
     
    Subamos la dificultad, convirtamos funciones en qfs:
     
    Bien, ahora que habeis visto un ejemplo de los qfs me toca enseñaros un paso mas, que seria utilizar funciones que recojen un dato del personaje y asignar el valor de ese dato a un qf. Para ello haremos lo siguiente:
     

    quest prueba begin state start begin when 70044.use begin local cabanivel = horse.get_level() pc.setqf("nivelcaballo", cabanivel) chat("El nivel de tu caballo se ha guardado") end end end Puede que a alguno le suene eso, ya que es la base del sistema de mascotas que cuando le das a control+h se sube al caballo en vez de subirse a la mascota. Pero lo importante para nuestra explicacion es el hecho de que si creamos un local que recoja un dato mediante una funcion:
     

    local cabanivel = horse.get_level() Luego podemos asingar ese valor al qf:
     

    pc.setqf("nivelcaballo", cabanivel) Entonces vamos a seguir desarrolando esa mini quest de sistema de mascotas, metiendo mas qfs:
     

    quest prueba begin state start begin when 70044.use begin if pc.getqf("keko") == 0 then local cabanivel = horse.get_level() pc.setqf("nivelcaballo", cabanivel) pc.setqf("keko", 1) horse.set_level("22") horse.unsummon() horse.summon() chat("Acabas de invocar a tu mascota") return end local volvernivel = pc.getqf("nivelcaballo") horse.set_level(volvernivel) pc.setqf("keko", 0) horse.unsummon() chat("Acabas de guardar tu mascota") end end end Bien, que ha pasado aqui? Pues varias cosas la verdad, vayamos de una en una:
     

    if pc.getqf("keko") == 0 then Aqui ponemos una condicion de que este qf sea igual y a 0, es decir, que aun no hayas usado nunca el item ya que cuando lo uses pondras cantidad 1 a ese valor:
     

    pc.setqf("keko", 1) Ahora como ya has usado el item el qf se ha vuelto 1, por lo que si vuelves a usar el item ya no estaras cumpliendo la condicion de que sea igual a 0, y la otra parte de la condicion (lo que va despues del return+end) se activa. Una vez se activo eso volvemos a poner cantidad 0 al qf:
     

    pc.setqf("keko", 0) Por lo tanto os habreis dado cuenta de que este objeto va alternando dos cosas: lo usas una vez y hace la primera, lo usas otra vez y hace la segunda, lo usas una tercera y vuelve a la primera y así constantemente.
     
    Además, aqui tambien hemos jugado con el nivel del caballo:
     

    local cabanivel = horse.get_level() pc.setqf("nivelcaballo", cabanivel) Primero miramos cual es con el local, y luego se lo asignamos al qf. Una vez asignado lo cambiamos con el comando horse.set_level e invocamos la mascota. Pero que pasa cuando guardamos la mascota? Queremos que el caballo vuelva a estar a su nivel, asi que hacemos lo siguiente: como ya tenemos nuestro qf con el nivel del caballo antes de cambiarlo, cogemos el valor de ese qf y lo convertimos en un local que luego damos de valor al horse.set_level
     

    local volvernivel = pc.getqf("nivelcaballo") horse.set_level(volvernivel) Vale, pues a otra cosa no?
     
    Ahora que ya entendeis como mezclar una funcion que recoje datos con un qf ya solo me quedaria explicaros como podeis hacer para mostrar la cantidad de un qf en una quest:
     

    quest muertes begin state start begin when kill with not npc.is_pc() begin pc.setqf("mobs", pc.getqf("mobs) + 1") chat("LLevas "..pc.getqf("mobs").." matados en tu juego") end end end Esta sencilla quest lo que hace es que cada vez que matas un mob suma un punto al qf mobs, y ademas por el chat te muestra cuantos puntos lleva ese qf:
     

    "..pc.getqf("mobs").." Para ello lo mete entre ".. .." como cuando os enseñé a mostrar el valor de un local en una quest.
     
    Por supuesto no tenemos xq mostrar el valor del qf en el mismo when ni en la misma quest que en la que le damos un valor, ya que el juego almacena para siempre el valor que tiene un qf.
     

    quest muertes begin state start begin when kill with not npc.is_pc() begin pc.setqf("mobs", pc.getqf("mobs") + 1) end when 20094.chat."Mobs" begin say("LLevas "..pc.getqf("mobs").." derrotados") end end end Y bueno eso es todo, espero que os haya sido útil este capítulo para todos aquellos que teniais dudas utilizando los pc.setqf y pc.getqf
  12. Me Gusta
    D4nT3 reacted to SeMa™ in [Master Set] Armas By Plechito.   
    Buenas a todos , tras sacar todo de la web de plechito , os vengo a traer un set de armas.
     
     

     
     
    master_set.rar (2.0 MB)

    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.  
    Un saludo, SeMa
  13. Me Gusta
    D4nT3 got a reaction from jhosua fernandez in Darksiders (Sacado por mi)npc   
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Edito: Esta mal.. las texturas son .png sorry.

    Debes iniciar sesión para ver el contenido del archivo adjunto en esta publicación.
  14. Me Gusta
    D4nT3 reacted to Akroma in Encriptacion por LZO, XML corruptos i types 4 a 872   
    Bueno MZ, empezemos ,
     
    Arxivos necesarios:
    M2.EXE
    ARXIVO .BIN, O ARXIVO .EXE QUE INICIE EL CLIENTE
    Descargar HxD
     
    Primero:
    1- Abrir el HxD, i abrir el m2.exe del descompilador, i el arxivo .bin o .exe
     
    2- Buscar estas cadenas en el .bin:

    B99EB0026F69810563989B2879181A00 22B8B40464B26E1FAEEA1800A6F6FB1C A1A40200AA155404E78B5A18ABD6AA01 467449000B4A0000B76E08009D186800 3- Las sustituimos por otras cadenas de 16 bytes hexadecimales.
    4- Abrimos el arxivo m2.exe del descompilador, i buscamos estas cadenas:

    B99EB0026F69810563989B2879181A00 22B8B40464B26E1FAEEA1800A6F6FB1C A1A40200AA155404E78B5A18ABD6AA01 467449000B4A0000B76E08009D186800 5- Como abreis visto son iguales que las del .bin cuando las cambieis tienen que ser exactamente = 1 vez echo esto.
     
    6- copiamos todo el cliente en la carpeta del Compilador/Descompilador que useis, i descompilamos el cliente entero. ALERTA: Con un compilador sin editar el M2.EXE, sino no os dejara descompilar.
     
    7- Una vez descompilado todo entero, lo copiamos TODO, i lo llevamos al Compilador/descompilador que tiene el m2.exe editado, i entonces compilamos todo.
     
    8- una vez compilado podemos comprobar su efecto intentando descompilar 1 arxivo compilado con el m2.exe editado con tan solo intentar descompilarlo con 1 m2.exe sin editar, vereis que os sale Decrypt Failed, XML are descompiled without any errors.
     
    9- Una vez ayamos echo tenemos que sustituir los arxivos compilados con el editado, x los de pack de tu cliente, i el .bin editado, para que lea las cadenas
     
    10- Una vez echo eso ejecutamos el cleinte normal, i os deberia arrancar sin problemas.
     
    11- Si os arranca pasamos al paso B, añadirle encriptacion de XML corrupto, para que tenga 2 encriptaciones.
     
    12- Como crear encriptacion con XML corrupto.
     
    13- Bueno cojemos 1 arxivo qualquiera que sepamos que no usaremos, compilamos, descompilamos, i ai 1 parte del XML en la qual aparece esto:
     
    14- Debeis modificar la parte que pone *Feasz_Z*
     
    15- Una vez echo esto compilamos ese .epk i ia tendra 2 encriptaciones. LZO, i XML corrupto.
     
    16- Encriptacion por types = que 1 oficial.
     
    17- Primero buscamos en el XML 1 parte que pone Type= de 0 a 2 estan los numeros normalmente, nosotros podemos poner el que queramos siempre i cuando editemos el m2.exe para que lea esos types i el .bin, esta ultima parte de la guia anda aun en construccion debido a que ando mirando como se termina.
     
    Posibles errores:
     
    Bueno posiblemente tengan errores, tipo el cleinte me carga entro, me carga la barra i me echa i io WTF?, eso es debido a que en el locale tmbn se tiene que descompilar item proto i mob proto i compilarlos con el editado.
     
    Guia 100% echa por mi
  15. Me Gusta
    D4nT3 got a reaction from Hunyadi Jani in Mob proto Converter   
    Aquí les traigo un programa para pasar sus archivos .xml a sql.
    Espero que les sirva.
     
    Saludos.

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  16. Me Gusta
    D4nT3 got a reaction from x Dante in Una barquita   
    Una barquita almejera sacada x mi, espero que sirva.
    si no funciona y quieren que la arregle digamelo..
     
    Saludos.
  17. Me Gusta
    D4nT3 got a reaction from Kohaku/Baek in Truco, Para descargas que se cortan.   
    Truco para que No se Corte tu Descarga o Subida


    Para solucionar el problema de los archivos que quedan mal descargados o se corta la conexión antes de terminar de descargar o subir un archivo, deben hacer lo siguiente:


    1) Vayan a Inicio/Ejecutar y escriban una de estas líneas (pueden copiar y pegar si Gustan )

    ping ping.symantec.com -t

    ping servidor.com -t

    ping yahoo.com -t

    ping de2en2.com -t

    ping google.com -t

    ping kingguru.net -t


    Depende de tu explorador.


    Luego presionen ACEPTAR o ENTER.



    INFORMACION


    Un ping (Packet Internet Grouper) se trata de una utilidad que comprueba el estado de la conexión con uno o varios equipos remotos por medio de los paquetes de solicitud de eco y de respuesta de eco.

    Cuando escriban cualquiera de esas líneas se abrirá una ventana de MS-DOS que les mostrará los resultados del Ping.

    Pueden minimizar la ventanita para que no moleste, PERO NO CERRARLA pues cortarían el ping.

    Puede darse que les aparezca la frase: Tiempo de espera agotado para esta solicitud pero eso es normal dado que el ping puede tardar mas de lo necesario en llegar a destino (desde su PC o desde el servidor al cual hicieron ping).
    Pueden observar en la imagen que les he dejado que casi al final hubo una demora en el ping y aparece esa frase.
    Si esto ocurre constantemente deben de intentar con otra dirección, esto puede ocurrir porque sencillamente están muy alejados del servidor al cual intentar acceder con el ping.


    Lo he visto x ai y me a parecido interesante. espero que les sirva.
    Saludos.
  18. Me Gusta
    D4nT3 reacted to Joseks in [GUIA1]Introducción al Iterprete Python y Descarga   
    Bienvenido a La primera guia instalacion e itroduccion a python


    -INSTALACION: Para comensar aprender programacion con python lo esencial es el programa podemos descargarlo
    de la pagina oficial gratuitamente haciendo Debes iniciar sesión para ver el contenido del enlace en esta publicación. y seleccionando el adecuado para su sistema


    2- una ves instalado, nos dirijimos a abrir python.exe (Python (command line) ese es el



    -interprete de python, el iterprete es un programa donde python iterpreta las ordenes que les damos un ejemplo sensillo es una suma




    2+2 interpreta que es una suma y te devuelve el resultado osea 4

    igual con todas las operación matemáticas (multiplicación, divicion, resta, suma etc)


    solamente no es operaciones matemáticas sino con letras un ejemplo lógico es el comando print


    -Print: cumple la función de devolverte lo que escribes ejemplo:


    primero va el print seguido de las comillas entre ellas pones una palabra al darle enter
    te debulve lo puesto anteriormente:



    bueno ya visto esto que es una introducción pasamos a las

    -funciones
    que lo que es la funciones: es una programación la cual al llamarla cumple una función ya definida osea ya programada
    para crear una función primero se coloca def seguido de una palabra definida por ustd ejmplo:
    def metin2zone y le agrega unos paréntesis quedando:


    luego apretas enter y creas la funcion para programarla tenemos esta dentro del cuerpo (dentro de ella) lo que tendrias que apretar el tab eso es porque python iterpreta que estas dentro de la funcion



    Al estar adentro aplicamos lo ya visto:

    Agregamos un print "Hola Metin2Zone" enter y tab y print "Chau Metin2Zone" apretamos dos enter y listo.

    Ahora para llamar a la funcion solo ponemos el nombre que le designaron (en mi caso Metin2Zone). seguida de los parentesis ()






    y se imprime lo puesto anteriormente,




    Seguido a esto veremos la

    -Variable: Las variable son útiles para guardar información e usarla mas tarde en ella se puede guardar cualquier tipo de carácter, (letra numero símbolo etc)

    Seguramente en matematicas vieron operaciones en donde X era igual a un numero aqui seria parecido, ejemplo






    X= 3

    Seria va X (que es la variable) luego el igual seguido de un espacio y el numero a asignar

    y si ponemos x *(por) 3 nos dara como resultado 9 porque definimos que X es igual a 3 no solo se le puede agregar a x o Y sino tambien a nombres :





    tambien se puede agregar a una operaciones variable con palabras ejemlo





    Tambien puedes hacerlo con palabras osea al nombre en ves de agregarle un numero le pones una palabra
    y nos imprimira dos veses la plabra









    -Combinacion


    podemos convinar las dos funciones vistas anteriormente, un ejemplo si queremos crear un programa que salude a nuestro usuarios


    creamos una funcion agregando def seguido del nombre que le asignan y los paréntesis, dentro de ello ponemos el parametro nombre, (el que le pedirá al entrar al usuario) le damos enter luego un tab y creamos un print con el paramatro nombre como indica la imagen



    les damos los dos enter y la llamando con el nombre asignado Bienvenido y entreparentesis con comillas su nombre Ejemplo: Bienvenido("Joseks") y nos dara la bienvenida:



    En nombre iría el nombre del usuario no Joseks es un ejemplo





    Bueno eso es todo por ahora espero averles dado una idea mas clara de la programación en python luego seguir con mas guías, dudas preguntas hacerla en el post o mp como quede mas cómodo, evitar insultos y falta de respeto si me equivoque en algo avisarlo y lo corrijo sin ningún problema ademas disculpen los errores de ortografía saludos hasta la proxima.



    Derechos de autor de la guía propios, no copy paste en ningún lado GRACIAS
  19. Me Gusta
    D4nT3 reacted to KeKo in [Quest+cliente] El sistema de logros   
    Buenasss zoneros y zoneras, hoy os voi a explicar como implementar en vuestro servidores el sistema de logros que meti en Metin2Extasis, hasta con mi querida quest de canjes xd (aunque en elite hay una mas completa la mia es mas sencillita).
     
    ESTA GUIA ES EXCLUSIVA DE METIN2ZONE, QUE NADIE LA COPY PASTEE A OTROS FOROS
     
    1 - Qué es el sistema de logros?
     
    Este sistema consiste en una quest y una edicion del cliente que hace que cada vez que un jugador alcance un objetivo concreto, que tu fijas en la quest, le da los puntos correspondientes al logro que haya alcanzando. Si un jugador acumula puntos luego los puede canjear por premios.
     
    Aqui teneis algunas fotos del resultado final (son antiguas del extasis xd):
     

     

     
     
     
    2 - Como meto yo esto?
     
    El sistema de logros consiste en una quest y en editar unos archivos en el cliente, así que vamos a ir paso por paso:
     
     
    2.1: Parte del cliente:
     
    *Todos los archivos que tengais que meter estan en esta descarga:
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    2.1.1 - Que archivos vamos a editar? En el cliente editaremos los siguientes archivos:
     
    -Root: dentro de el los archivos game.py y uiachievement.py (este lo meteremos nosotros).
    -Etc: donde meteremos los archivos achievement_small.sub y achievement_small.dds
    -Uiscript: aqui meteremos el archivo achievementboard.py y warteschleife.py
     
    2.1.2 - Manos a la obra, a implementar!
     
     
    2.1.2.1: Primero empezaremos con el root. Decompilad vuestro root, abrid el archivo game.py y buscad esto:
     

    def __ServerCommand_Build(self): Una vez esteis ahi, vais hasta donde pone "CloseSafeBox" y cuando esteis en esa linea le dais a a enter y pegais esto:
     

    # Achievement System START "achievement" : self.__AchievementTest, "achievementpoints" : self.__ShowAchievementPoints, # Achievement System END Quedandoos asi:
     

     
    (Las -------------------- las pongo solo para que distingais la parte que acabamos de añadir, no hay que ponerlas)
     
    Ahora vais al final del archivo, le dais a enter para dejar algo de espacio y pegais esto:
     

    # Achievement System START def __ShowAchievementPoints(self, points): import uiAchievement import uiTaskbar self.uiAchievement = uiAchievement.AchievementDialog() uiAchievement.AchievementPoints = int(points) def __AchievementTest(self, archivement): import uiAchievement self.uiAchievement = uiAchievement.AchievementDialog() self.uiAchievement.Show(1, str(archivement)) self.uiAchievement.SetTop() # Achievement System END Quedará asi:
     

     
     
    *Siguiente paso: metemos en la carpeta root el archivo uiachievement.py y lo añadimos al xml
     

    <File archivedPath="uiachievement.py" type="2"><![CDATA[Sourceuiachievement.py]]></File> Listo el root! Sigamos con el etc.
     
    2.1.2.2: Decompilamos nuestro etc, vamos a la carpeta ymir work/ui y metemos el achievement_small.dds. Despues vamos a la carpeta ymir work/ui/public y metemos el achievement_small.sub. Por ultimo agregamos ambos al xml:
     

    <File archivedPath="d:/ymir work/ui/public/achievement_small.sub" type="0"><![CDATA[Sourceymir workuipublicachievement_small.sub]]></File> <File archivedPath="d:/ymir work/ui/achievement_small.dds" type="0"><![CDATA[Sourceymir workuiachievement_small.dds]]></File> 2.1.2.3: El ultimo paso en el cliente es decompilar nuestro uiscript y meter el archivo achievementboard.py y el warteschleife.py: en la carpeta. Los añadimos al xml y compilamos:
     

    <File archivedPath="uiscript/achievementboard.py" type="2"><![CDATA[Sourceuiscriptachievementboard.py]]></File> <File archivedPath="uiscript/warteschleife.py" type="2"><![CDATA[Sourceuiscriptwarteschleife.py]]></File> Y listo ya tenemos todo lo del cliente
     
     
    2.1: Parte del server:
     
    Bueno ahora ya solo nos queda meter nuestra quest del sistema de logros en la carpeta /home/game/quest (o la ruta en la que tengais la carpeta quest). Aqui os dejo la mia, con los nombres en español, algunos logros añadidos, canje, un item que te da logros (pa quien lo quiera xd), una opcion que te dice tus logros, etc
     

    quest logros_keko begin state start begin --LOGIN when login begin local actual_achievement_points = pc.getqf("achievement_points") if pc.getqf("firstlogin") != 1 then local Reward = 1 pc.setqf("firstlogin", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement Primer_login%".. actual_achievement_points + Reward .."") else cmdchat("achievementpoints ".. pc.getqf("achievement_points")) end end --BOSSE when 691.kill begin local Reward = 2 local Achievement = "Jefe_Orco" local killcount = pc.getqf("691") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("691", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 791.kill begin local Reward = 3 local Achievement = "Lider_esoterico" local killcount = pc.getqf("791") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("791", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 2493.kill begin local Reward = 100 local Achievement = "Dragon_azul" local killcount = pc.getqf("2493") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("2493", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 2492.kill begin local Reward = 20 local Achievement = "Comandante_Setaou" local killcount = pc.getqf("2492") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("2492", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 1091.kill begin local Reward = 5 local Achievement = "Rey_demonio" local killcount = pc.getqf("1091") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("1091", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 2597.kill begin local Reward = 20 local Achievement = "Muerte" local killcount = pc.getqf("2597") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("2597", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 1192.kill begin local Reward = 12 local Achievement = "Bruja_de_hielo" local killcount = pc.getqf("1192") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("1192", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 1304.kill begin local Reward = 5 local Achievement = "Tigre_fantasma" local killcount = pc.getqf("1304") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("1304", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 1901.kill begin local Reward = 4 local Achievement = "9_colas" local killcount = pc.getqf("1901") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("1901", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 2091.kill begin local Reward = 3 local Achievement = "Reina_araña" local killcount = pc.getqf("2091") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("2091", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 2206.kill begin local Reward = 4 local Achievement = "Jefe_logros" local killcount = pc.getqf("2206") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("2206", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 2191.kill begin local Reward = 5 local Achievement = "Tortuga_del_desierto" local killcount = pc.getqf("2191") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("2191", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 692.kill begin local Reward = 3 local Achievement = "Orco_elite" local killcount = pc.getqf("692") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("692", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 693.kill begin local Reward = 5 local Achievement = "Orco_renacido" local killcount = pc.getqf("693") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("693", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end --Item shop--- when 50129.use begin say_title ( "Obten puntos logro") local actual_achievement_points = pc . getqf ( "achievement_points" ) local p = select ( "Obten 200 puntos logro" ) if p == 1 then local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points + 200 ) say ( "Enorabuena tienes 200 logros mas" ) say ( "Disfrutalos!" ) item.remove ( "50129", 1 ) end end when 50130.use begin say_title ( "Obten puntos logro") local actual_achievement_points = pc . getqf ( "achievement_points" ) local p = select ( "Obten 100 puntos logro" ) if p == 1 then local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points + 100 ) say ( "Enorabuena tienes 100 logros mas" ) say ( "Disfrutalos!" ) item.remove ( "50130", 1 ) end end when 50131.use begin say_title ( "Obten puntos logro") local actual_achievement_points = pc . getqf ( "achievement_points" ) local p = select ( "Obten 50 puntos logro" ) if p == 1 then local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points + 50 ) say ( "Enorabuena tienes 50 logros mas" ) say ( "Disfrutalos!" ) item.remove ( "50131", 1 ) end end when 50132.use begin say_title ( "Obten puntos logro") local actual_achievement_points = pc . getqf ( "achievement_points" ) local p = select ( "Obten 25 puntos logro" ) if p == 1 then local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points + 25 ) say ( "Enorabuena tienes 25 logros mas" ) say ( "Disfrutalos!" ) item.remove ( "50132", 1 ) end end --CANJES-- when 50115.use begin say_title ( "Canjea tus puntos logro" ) local actual_achievement_points = pc . getqf ( "achievement_points" ) local p = select ( "Caballo armado - 5 puntos" , "Caballo militar - 30 puntos" , "Bonus mediohumanos +20% por 30min - 50 puntos" , "Bonus HP +5000 por 30min - 60 puntos" , "Armadura divina - 400 logros" , "Mascota de ataque - 30 puntos" , "Mas" ) if p == 1 then if pc . getqf ( "achievement_points" ) <= 4 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 5 ) say ( "Has recibido un caballo armado" ) horse . set_level ( "11" ) horse . unsummon ( ) horse . summon ( ) pc . give_item2 ( "50052" , 1 ) return elseif p == 2 then if pc . getqf ( "achievement_points" ) <= 29 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 30 ) say ( "Has recibido un caballo militar" ) horse . set_level ( "21" ) horse . unsummon ( ) horse . summon ( ) pc . give_item2 ( "50053" , 1 ) return elseif p == 3 then if pc . getqf ( "achievement_points" ) <= 49 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 50 ) say ( "Has recibido 20% fuerza contra mediohumanos por 30min" ) affect . add_collect ( apply . ATTBONUS_HUMAN , 20 , 60 * 30 ) return elseif p == 4 then if pc . getqf ( "achievement_points" ) <= 59 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 60 ) say ( "Has recibido 5000hp por 30min" ) affect . add_collect ( apply . MAX_HP , 5000 , 60 * 30 ) return elseif p == 5 then if pc. getqf ( "achievement_points" ) <= 399 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 399 ) local armor = select ( "Armd. divina (G)" , "Armd. divina (N)" , "Armd. divina (S)" , "Armd. divina (C)" ) if armor == 1 then say ( "Has recibido la Armadura divina" ) pc . give_item2 ( "42080" , 1 ) return elseif armor == 2 then say ( "Has recibido la Armadura divina" ) pc . give_item2 ( "44080" , 1 ) return elseif armor == 3 then say ( "Has recibido la Armadura divina" ) pc . give_item2 ( "46080" , 1 ) return elseif armor == 4 then say ( "Has recibido la Armadura divina" ) pc . give_item2 ( "48080" , 1 ) return end elseif p == 6 then if pc . getqf ( "achievement_points" ) <= 29 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 29 ) say ( "Has recibido la mascota de ataque" ) pc . give_item2 ( "30312" , 1 ) return elseif p == 7 then local p2 = select ( "Leon Blanco - 40 puntos" , "Anillo experiencia - 5 puntos" , "Fuerza monstruo +20% 30min - 15 puntos" , "Velocidad movimiento +25% 30min - 10 puntos" , "Mascota de defensa - 25 puntos" , "Cuantos logros tengo?" , "Cerrar" ) if p2 == 1 then if pc . getqf ( "achievement_points" ) <= 39 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 40 ) say ( "Has recibido un leon blanco disfrtualo, no se acaba" ) pc . give_item2 ( "50110" , 1 ) return elseif p2 == 2 then if pc . getqf ( "achievement_points" ) <= 4 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 5 ) say ( "Disfruta de un anillo de experiencia" ) pc . give_item2 ( "71015" , 1 ) return elseif p2 == 3 then if pc . getqf ( "achievement_points" ) <= 14 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 15 ) say ( "Has recibido 20% fuerza monstruo por 30min" ) affect . add_collect ( apply . ATTBONUS_MONSTER , 20 , 60 * 30 ) return elseif p2 == 4 then if pc . getqf ( "achievement_points" ) <= 9 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 10 ) say ( "Has recibido 25% velo.movimiento por 30min" ) affect . add_collect ( apply . MOV_SPEED , 25 , 60 * 30 ) return elseif p2 == 5 then if pc . getqf ( "achievement_points" ) <= 24 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 25 ) say ( "Has recibido la mascota de defensa" ) pc . give_item2 ( "71124" , 1 ) return elseif p2 == 6 then local Reward = 0 local Achievement = "Ver_tus_logros" local killcount = pc.getqf("logros") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") elseif p2 == 7 then return end end end --METINS when 8013.kill begin local Reward = 8 local Achievement = "Metin_muerte" local killcount = pc.getqf("8013") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("8013", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 8016.kill begin local Reward = 5 local Achievement = "Metin_demonio" local killcount = pc.getqf("8016") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("8016", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 8012.kill begin local Reward = 6 local Achievement = "Metin_caida" local killcount = pc.getqf("8012") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("8012", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 8015.kill begin local Reward = 5 local Achievement = "Metin_dureza" local killcount = pc.getqf("8015") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("8015", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 8026.kill begin local Reward = 2 local Achievement = "Metin_85" local killcount = pc.getqf("8026") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("8026", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 8027.kill begin local Reward = 3 local Achievement = "Metin_90" local killcount = pc.getqf("8027") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("8027", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end --LEVELS when login or levelup with pc.get_level() >= 15 and pc.getqf("Level15") != 1 begin local Reward = 2 local Achievement = "Level_15" local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("Level15", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."") end when login or levelup with pc.get_level() >= 30 and pc.getqf("Level30") != 1 begin local Reward = 2 local Achievement = "Level_30" local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("Level30", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."") end when login or levelup with pc.get_level() >= 40 and pc.getqf("Level40") != 1 begin local Reward = 3 local Achievement = "Level_40" local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("Level40", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."") end when login or levelup with pc.get_level() >= 50 and pc.getqf("Level50") != 1 begin local Reward = 4 local Achievement = "Level_50" local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("Level50", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."") end when login or levelup with pc.get_level() >= 75 and pc.getqf("Level75") != 1 begin local Reward = 5 local Achievement = "Level_75" local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("Level75", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."") end when login or levelup with pc.get_level() >= 85 and pc.getqf("Level85") != 1 begin local Reward = 10 local Achievement = "Level_85" local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("Level85", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."") end when login or levelup with pc.get_level() >= 90 and pc.getqf("Level90") != 1 begin local Reward = 25 local Achievement = "Level_90" local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("Level90", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."") end when login or levelup with pc.get_level() >= 95 and pc.getqf("Level95") != 1 begin local Reward = 50 local Achievement = "Level_95" local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("Level95", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."") end when login or levelup with pc.get_level() >= 99 and pc.getqf("Level99") != 1 begin local Reward = 100 local Achievement = "Level_99" local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("Level99", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."") end --CHECK EQUIP when login begin loop_timer("check_eq", 10) end when check_eq.timer begin local russi = pc.get_armor() local waffe = pc.get_weapon() local actual_achievement_points = pc.getqf("achievement_points") local Reward = 5 if russi==11299 and pc.getqf("achievement_ssp") != 1 then pc.setqf("achievement_ssp", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement Armadura negra+9%".. actual_achievement_points + Reward .."") elseif russi==11499 and pc.getqf("achievement_swa") != 1 then pc.setqf("achievement_swa", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement Armadura negra+9%".. actual_achievement_points + Reward .."") elseif russi==11699 and pc.getqf("achievement_mpp") != 1 then pc.setqf("achievement_mpp", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement Armadura negra+9%".. actual_achievement_points + Reward .."") elseif russi==11899 and pc.getqf("achievement_sk") != 1 then pc.setqf("achievement_sk", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement Armadura negra+9%".. actual_achievement_points + Reward .."") elseif waffe==189 and pc.getqf("achievement_gifti") != 1 then pc.setqf("achievement_gifti", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement Giftschwert+9%".. actual_achievement_points + Reward .."") elseif waffe==199 and pc.getqf("achievement_lowenschw.") != 1 then pc.setqf("achievement_lowenschw.", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement Löwenschwert+9%".. actual_achievement_points + Reward .."") elseif waffe==5129 and pc.getqf("achievement_orchiglocke") != 1 then pc.setqf("achievement_orchiglocke", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement Orchideenglocke+9%".. actual_achievement_points + Reward .."") elseif waffe==2179 and pc.getqf("achievement_krahenstahl") != 1 then pc.setqf("achievement_krahenstahl", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement Krähenstahlbogen+9%".. actual_achievement_points + Reward .."") elseif waffe==1139 and pc.getqf("achievement_teufelsflugenchak") != 1 then pc.setqf("achievement_teufelsflugenchak", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement Teufelsflügel-Chakram+9%".. actual_achievement_points + Reward .."") elseif waffe==3169 and pc.getqf("achievement_Grolli") != 1 then pc.setqf("achievement_Grolli", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement Grollschwert+9%".. actual_achievement_points + Reward .."") end end end end Y para que no os quedeis simplemente metiendo la quest y ya ta os voi a explicar como funciona:
     
    1 - Lo mas importante de los logros es que cuando alcanzas uno (por ejemplo matar al jefe orco) te suma puntos mediante un pc.setqf:
     

    when 691.kill begin local Reward = 2 pc.setqf("achievement_points", actual_achievement_points + Reward) Como veis ahí al jefe orco (mob de id 691) le asigna los puntos que vale con local Reward = 2 y luego te suma 2 puntos con el pc.setqf("achievement_points", actual_achievement_points + Reward (el reward en este caso seria un +2).
     
    Por lo tanto si quereis añadir otro mob a la lista de logros solo tendreis que hacer lo siguiente:
     

    when idmob.kill begin local Reward = puntos -- Poneis cuantos puntos quereis que os de local Achievement = "Nombre del mob que saldra en el cliente" local killcount = pc.getqf("idmob") -- Se usa para que el juego lleve la cuenta de cuantas veces lo mataste local actual_achievement_points = pc.getqf("achievement_points") -- Calcula cuantos puntos tenes pc.setqf("693", killcount + 1) -- Aqui os suma 1 al numero de ese mob que llevais pc.setqf("achievement_points", actual_achievement_points + Reward) -- aqui te suma tus puntos por matarlo cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") -- Con esto te saldra la ventana en el cliente diciendo que lo mataste y cuantos puntos tenes end Ahora os enseñare como hacer los canjes. En mi caso los canjes se hacen mediante un item, pero vosotros podeis hacerlo como querais simplement cambiando el when iditem.use por un when npc.chat."Canje de Logros" o como os apetezca.
     
    Veamos como tengo yo los canjes:
     

    when 50115.use begin say_title ( "Canjea tus puntos logro" ) local actual_achievement_points = pc . getqf ( "achievement_points" ) local p = select ( "Caballo armado - 5 puntos" , "Caballo militar - 30 puntos" , "Bonus mediohumanos +20% por 30min - 50 puntos" , "Bonus HP +5000 por 30min - 60 puntos" , "Armadura divina - 400 logros" , "Mascota de ataque - 30 puntos" , "Mas" ) if p == 1 then if pc . getqf ( "achievement_points" ) <= 4 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 5 ) say ( "Has recibido un caballo armado" ) horse . set_level ( "11" ) horse . unsummon ( ) horse . summon ( ) pc . give_item2 ( "50052" , 1 ) return elseif p == 2 then if pc . getqf ( "achievement_points" ) <= 29 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 30 ) say ( "Has recibido un caballo militar" ) horse . set_level ( "21" ) horse . unsummon ( ) horse . summon ( ) pc . give_item2 ( "50053" , 1 ) return elseif p == 3 then if pc . getqf ( "achievement_points" ) <= 49 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 50 ) say ( "Has recibido 20% fuerza contra mediohumanos por 30min" ) affect . add_collect ( apply . ATTBONUS_HUMAN , 20 , 60 * 30 ) return elseif p == 4 then if pc . getqf ( "achievement_points" ) <= 59 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 60 ) say ( "Has recibido 5000hp por 30min" ) affect . add_collect ( apply . MAX_HP , 5000 , 60 * 30 ) return elseif p == 5 then if pc. getqf ( "achievement_points" ) <= 399 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 399 ) local armor = select ( "Armd. divina (G)" , "Armd. divina (N)" , "Armd. divina (S)" , "Armd. divina (C)" ) if armor == 1 then say ( "Has recibido la Armadura divina" ) pc . give_item2 ( "42080" , 1 ) return elseif armor == 2 then say ( "Has recibido la Armadura divina" ) pc . give_item2 ( "44080" , 1 ) return elseif armor == 3 then say ( "Has recibido la Armadura divina" ) pc . give_item2 ( "46080" , 1 ) return elseif armor == 4 then say ( "Has recibido la Armadura divina" ) pc . give_item2 ( "48080" , 1 ) return end elseif p == 6 then if pc . getqf ( "achievement_points" ) <= 29 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 29 ) say ( "Has recibido la mascota de ataque" ) pc . give_item2 ( "30312" , 1 ) return elseif p == 7 then local p2 = select ( "Leon Blanco - 40 puntos" , "Anillo experiencia - 5 puntos" , "Fuerza monstruo +20% 30min - 15 puntos" , "Velocidad movimiento +25% 30min - 10 puntos" , "Mascota de defensa - 25 puntos" , "Cuantos logros tengo?" , "Cerrar" ) if p2 == 1 then if pc . getqf ( "achievement_points" ) <= 39 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 40 ) say ( "Has recibido un leon blanco disfrtualo, no se acaba" ) pc . give_item2 ( "50110" , 1 ) return elseif p2 == 2 then if pc . getqf ( "achievement_points" ) <= 4 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 5 ) say ( "Disfruta de un anillo de experiencia" ) pc . give_item2 ( "71015" , 1 ) return elseif p2 == 3 then if pc . getqf ( "achievement_points" ) <= 14 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 15 ) say ( "Has recibido 20% fuerza monstruo por 30min" ) affect . add_collect ( apply . ATTBONUS_MONSTER , 20 , 60 * 30 ) return elseif p2 == 4 then if pc . getqf ( "achievement_points" ) <= 9 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 10 ) say ( "Has recibido 25% velo.movimiento por 30min" ) affect . add_collect ( apply . MOV_SPEED , 25 , 60 * 30 ) return elseif p2 == 5 then if pc . getqf ( "achievement_points" ) <= 24 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 25 ) say ( "Has recibido la mascota de defensa" ) pc . give_item2 ( "71124" , 1 ) return elseif p2 == 6 then local Reward = 0 local Achievement = "Ver_tus_logros" local killcount = pc.getqf("logros") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") elseif p2 == 7 then return end end end *Si os fijais la ultima opcion de la tienda de canjes te permite ver tus logros, para ello le hice un logro que te sume 0 puntos pero que te enseña cuantos tienes:
     

    elseif p2 == 6 then local Reward = 0 local Achievement = "Ver_tus_logros" local killcount = pc.getqf("logros") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") Asi que si necesitais hacer vuestra opcion de ver logros ahi teneis
     
    Tal como eso son todos los canjes, si quereis hacer vuestros propios canjes os hago aqui un pequeño script de canje para explicaros como seria:
     
     

    when 20095.chat."Canjear mis logros" begin say_title("Canjear mis logros") say("") say("Hola jugador, si tienes logros") say("yo te los puedo cambiar por cositas.") say("") say("Si no tienes intenta conseguir alguno") say("porque merece la pena") say("") say_reward("Quieres canjear tus punots?") local canje = select ("Si" , "No") if canje == 1 then say_title("Canjes de logros") say("") say("Elige lo que quieras") local elegir = select ("Quinto bonus - 3 logros" , "Añadir 6-7 bonus - 4 logros" , "Cambiar 6-7 bonus - 5 logros" , "Caballo armado - 6 logros" , "Caballo militar - 8 logros" , "Cerrar") if elegir == 1 then if pc . getqf ( "achievement_points" ) <= 2 then chat( "Lo siento necesitas mas puntos" ) return end pc.give_item2("70024", 1) local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 3 ) return elseif elegir == 2 then if pc . getqf ( "achievement_points" ) <= 3 then chat( "Lo siento necesitas mas puntos" ) return end pc.give_item2("71051", 1) local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 4 ) return elseif elegir == 3 then if pc . getqf ( "achievement_points" ) <= 4 then say ( "Lo siento necesitas mas puntos" ) return end pc.give_item2("71052", 1) local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 5 ) return elseif elegir == 4 then if pc . getqf ( "achievement_points" ) <= 5 then chat( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 6 ) chat ( "Has recibido un caballo armado" ) horse . set_level ( "11" ) horse . unsummon ( ) horse . summon ( ) pc . give_item2 ( "50052" , 1 ) return elseif elegir == 5 then elseif p == 2 then if pc . getqf ( "achievement_points" ) <= 7 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 8 ) chat( "Has recibido un caballo militar" ) horse . set_level ( "21" ) horse . unsummon ( ) horse . summon ( ) pc . give_item2 ( "50053" , 1 ) return elseif elegir == 6 then return end elseif canje == 2 then return end end Este script es un pequeño regalo para vosotros, lo hice ahora para que podais usar otro si no quereis el que tenia en el extasis.
     
    *Para meterla en vuestra quest podeis quitar mi tienda de canjes y pegar esta si quereis, o hacerla como quest separada.
     
    Por ultimo os explicare como funcionan los canjes con un ejemplo:
     

    local p = select ( "Caballo armado - 5 logros") if p == 1 then if pc . getqf ( "achievement_points" ) <= 4 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 5 ) say ( "Has recibido un caballo armado" ) horse . set_level ( "11" ) horse . unsummon ( ) horse . summon ( ) pc . give_item2 ( "50052" , 1 ) return Empieza con un local = select para que escojais vuestro premio y os aconsejo que pongais ahi cuantos logros cuesta como hice yo.
     
    Luego puse una restriccion para que si teneis menos puntos que los que pide el item no os deje comprarlo:
     

    if pc . getqf ( "achievement_points" ) <= 2 then chat( "Lo siento necesitas mas puntos" ) return end Funciona de la siguiente manera: donde pone <= 2 teneis que poner un punto menos que los que pide, ya que eso dice que si tienes esos puntos o menos no te deje comprar.
     
    Despues del return end ya solo teneis que poner el comando para que os quite los puntos que es este:
     

    local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 5 ) --Poneis ahi los que quereis que quite Y lo que quereis que os dea justo debajo de esas dos lineas:
     

    pc.give_item2("71052", 1) --- Ahi poned lo que quereis que dea Y eso es todo zoneros, que disfruteis del sistema de logros !!!
     
    Creditos: al creador del sistema (que no es mio xd) y a mi por la parte de la quest mia y la traduccion de la original.
×
×
  • Crear nuevo...