Jump to content

Jfirewall

Miembro
  • Contador contenido

    359
  • Ingreso

  • Última visita

  • Días ganados

    19

Todo lo publicado por Jfirewall

  1. say_size(0, 0) setbgimage('test.tga')
  2. quest mob begin state start begin function Tiempo() local mTime = 60*60*24*30 --Cada 30 dias return mTime end function Valores() local mValue = { (pc.getqf("uso")), (pc.getqf("tiempo")) } return mValue when x.use begin say_title'hola' say'....' pc.setqf("uso", 1) pc.setqf("tiempo", get_time() + mob.Tiempo()) chat'en 30 dias el mob sera invocado' end when login with mob.Valores()[1] > 0 begin if get_time() > mob.Valores()[2] then pc.invocar_mob(id,x,y) end end end end questlua_pc.cpp #ifdef ENABLE_INVOCAR_MOB int pc_invocar_mob(lua_State* L) { if (!lua_isnumber(L, 1) || !lua_isnumber(L, 2) || !lua_isnumber(L, 3)) { sys_err("argumento invalido"); return 0; } CQuestManager& mob = CQuestManager::instance(); DWORD vid = 0; DWORD dwVnum = (DWORD) lua_tonumber(L, 1); long x = (long) lua_tonumber(L, 2); long y = (long) lua_tonumber(L, 3); float radius = lua_isnumber(L, 4) ? (float) lua_tonumber(L, 4) : 0; DWORD count = (lua_isnumber(L, 5)) ? (DWORD) lua_tonumber(L, 5) : 1; if (count == 0) count = 1; while (count --) { if (radius<1) { LPCHARACTER ch = mob->CaerMob(dwVnum, x, y); if (ch && !vid) vid = ch->GetVID(); } else { float angle = number(0, 999) * M_PI * 2 / 1000; float r = number(0, 999) * radius / 1000; long nx = x + (long)(r * cos(angle)); long ny = y + (long)(r * sin(angle)); LPCHARACTER ch = mob->CaerMob(dwVnum, nx, ny); if (ch && !vid) vid = ch->GetVID(); } } lua_pushnumber(L, vid); return 1; } #endif #ifdef ENABLE_INVOCAR_MOB { "invocar_mob", pc_invocar_mob }, #endif service.h #define ENABLE_INVOCAR_MOB
  3. quest coins begin state start begin when 27992.use or 27993.use or 27994.use begin coins = { [27992] = { "Moneda de Oro", 1000}, [27993] = { "Moneda de Plata", 500}, [27994] = { "Moneda de Bronce", 250} } say_title(""..coins[item.get_vnum()][1].."") say("Si utilizas esta moneda puedes obtener una") say("determinada cantidad de coins canjeables en la") say("ItemShop del servidor.") say("Con esta "..coins[item.get_vnum()][1].." obtendras "..coins[item.get_vnum()][2].." coins.") say("") say("¿Quieres canjear la moneda por "..coins[item.get_vnum()][2].." coins?") local s = select("Si","No") if s == 2 then return end say_title(""..coins[item.get_vnum()][1].."") say("Felicidades!") say("Has obtenido "..coins[item.get_vnum()][2].." coins.") say("Entra en la ItemShop de nuestro servidor para") say("canjearlas.") pc.cambiar_coins(coins[item.get_vnum()][2]) item.remove() end end end questlua_pc.cpp #ifdef ENABLE_FUNCION_COINS int pc_cambiar_coins(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); const char * coins = lua_tostring(L, 1); char szQuerycoins[QUERY_MAX_LEN]; snprintf(szQuerycoins, sizeof(szQuerycoins), "UPDATE account.account SET coins=coins+'%s' WHERE id=%u", coins, ch->GetDesc()->GetAccountTable().login); DBManager::Instance().DirectQuery(szQuerycoins); db_clientdesc->DBPacket(HEADER_GD_RELOAD_ADMIN, 0, NULL, 0); return 0; } #endif { "cambiar_coins", pc_cambiar_coins }, service.h #define ENABLE_FUNCION_COINS
  4. https://i.gyazo.com/b412d1d3ae4d3cd87b1d0ed8122785df.png
  5. Primero debes saber algo basico normalmente las empresas de Internet dan un router el cual viene con ciertas direcciones ip en área local que casi siempre van de 192.168.1.100 a la 192.168.1.254, luego la mascara de subred siempre sera 255.255.255.0 y la puerta de enlace sera terminada siempre en 1, con un poco de conocimientos, puedes en tu router pedir una ip fija y en el router crear un dmz dirigido a la dirección ip que le asignes al servidor, así cada que se conecten ala ip fija que contratas el router automáticamente te redireccionara ala ip asignada ala maquina virtual, pero ademas de eso debes abrir algunos puertos, y saber configurar el router con la ip que te den, en mi opinión es mejor comprar un vps y listo te evitas todo el royo
  6. https://metin2zone.net/index.php?/topic/25091-libs-para-tu-servidor/&tab=comments#comment-152341
  7. https://metin2zone.net/index.php?/topic/25091-libs-para-tu-servidor/&tab=comments#comment-152341
  8. Video de sistema en el juego https://www.youtube.com/watch?v=VtPkjrXphXY Buenas noches, este sistema lo cree hace algunos años, mirando mi baúl decidí aportarlo la verdad ya ahora todo avanzado tanto que esto es una "basura" por decirlo de esta manera en que consiste el sistema: Para ganar puntos de bendiciones lo que tienes que hacer es matar, personaje de otros reinos y ir acumulando, como en todo servidor ay muchos ventajosos y yo lo configure para que fueran 100 muertes, para que tuviera un poquito de dificultad igual en la quest ustedes pueden editar el numero, el beneficio que yo decidi ponerle es poner una mini loteria porque tu das los puntos y el te entrega un item aletoriamente, pero no cualquier item, sino que te entrega un item con el bonus que tu elijas y al maximo (cada cual lo maneja a su modo) local items = {19,29,39,49,59,69,89,99,59,109}-- vnum items local bonus = { -- puedes agregar mas bonus si lo deseas {1,5000}, -- Max Hp {2,20}, -- Max Sp {3,20}, -- Vitalidad {4,20}, -- Inteligencia {5,20}, -- Fuerza {6,20}, -- Dextreza {7,20}, -- Velocidad de ataque {8,20}, -- Velocidad de Movimiento {9,20}, -- Velocidad Hechizo {10,20}, -- Regeneración de HP {11,20}, -- Regeneración de SP {12,20}, -- Probabilidad de Envenenamiento {13,20}, -- Probabilidad de Apagon {14,20}, -- Probabilidad de Retardo {15,20}, -- Probabilidad de golpes críticos {16,20}, -- Probabilidad de golpes de penetración {17,20}, -- Fuerza Contra MedioHumanos {18,20}, -- Fuerza Contra Animales {19,20}, -- Fuerza Contra Orcos {20,20}, -- Fuerza Contra Misticos {21,20}, -- Fuerza Contra No-muertos {22,20}, -- Fuerza Contra Demonios {23,20}, -- Probabilidad de Absorver HP {24,20}, -- Probabilidad de Absorver SP {25,20}, -- Probabilidad de robar HP {26,20}, -- Probabilidad de recuperar SP al golpear {27,20} -- Posibilidad de bloquear un ataque cuerpo a cuerpo } Yo agregue una tabla de bonus, no esta toda ya realmente ay muchos servidores que tendrán mas y mejores los numero que van del 1 al 27 son el id del bonus y deje la descripcion de cada uno ya ustedes deciden si quieren agregar mas, las que van en "20" son el valor que se da en el juego ejm si elijen fuerza contra no muertos el valor sera de 20% ya ustedes lo editan a su manera. yo lo diseñe pensando en que fuera aletoriamente, entonces cree el local items, donde va el id del item que entregara al azar en el .rar va una mini guia como instalarlo y va con tabulaciones, la verdad es muy sencillo de instalar ademas que lleva el efecto incluido solo tienen que agregarlo Creditos: Firewall Works Sistema de bendiciones.rar
  9. Hace unos días estuve buscando un pack de libs que necesitaba y encontré uno muy completo lo comparto para los que de pronto tienes dificultades ala hora de montar su servidor. PD: Poco a poco iré subiendo algunos sistemas para uso de sus servidores, como también abriré una tienda con mis servicios https://mega.nz/#!UEdURISS!yqEFhmn-JBY7g0Z2D8ez1Up9svjdeC1_yuksm3d9TUg
  10. Esos files necesitan unas librerias, verifica el log del auth para que te inicie
  11. Jfirewall

    Dopador

    quest npc_dopador begin state start begin when 9010.take with pc.is_gm() begin if item.get_type() == ITEM_WEAPON or item.get_type() == ITEM_ARMOR or item.get_sub_type() == ARMOR_EAR then say_title'Npc Dopador Jfirewall' local ver = select('Comenzar a dopar','Ver tabla de bonus','Luego Regreso') local b1,vb1,b2,vb2,b3,vb3,b4,vb4,b5,vb5 if ver == 1 then say'1: Introdusca el ID del bonus:' b1 = tonumber(input()) say'1: Introdusca el valor que le quieres dar' vb1 = tonumber(input()) if vb1 == nil or vb1 >= 1000 then say_title'Firewall' say'Lo siento es mucha cantidad para un item' say'lo maximo son 20' return end say'2: Introdusca el ID del bonus:' b2 = tonumber(input()) say'2: Introdusca el valor que le quieres dar' vb2 = tonumber(input()) if vb2 == nil or vb2 >= 1000 then say_title'Firewall' say'Lo siento es mucha cantidad para un item' say'lo maximo son 20' return end say'3: Introdusca el ID del bonus:' b3 = tonumber(input()) say'3: Introdusca el valor que le quieres dar' vb3 = tonumber(input()) if vb3 == nil or vb3 >= 1000 then say_title'Firewall' say'Lo siento es mucha cantidad para un item' say'lo maximo son 20' return end say'4: Introdusca el ID del bonus:' b4 = tonumber(input()) say'4: Introdusca el valor que le quieres dar' vb4 = tonumber(input()) if vb4 == nil or vb4 >= 1000 then say_title'Firewall' say'Lo siento es mucha cantidad para un item' say'lo maximo son 20' return end say'5: Introdusca el ID del bonus:' b5 = tonumber(input()) say'5: Introdusca el valor que le quieres dar' vb5 = tonumber(input()) if vb5 == nil or vb5 >= 1000 then say_title'Firewall' say'Lo siento es mucha cantidad para un item' say'lo maximo son 20' return end say'Bonus cambiados con exito' item.set_value(0, b1, vb1) item.set_value(1, b2, vb2) item.set_value(2, b3, vb3) item.set_value(3, b4, vb4) item.set_value(4, b5, vb5) elseif ver == 2 then say_title'Npc Dopador' say'Tabla de bonus en construccion' return elseif ver == 3 then return end else syschat'Ocurrio un error no podemos cambiar el bonus' end end end end Hace mucho tiempo habia creado esta quest para realizar un nuevo sistema que despues lo deje a medias y no quize terminarlo, lo que trata esta quest es de arrastrar x item y añadirle el bonus y la cantidad que quieras, como les digo no esta terminado, pero funciona en lo poco que le hice, ya el que la quiera mejorar o utilizar la tiene. PD: compartire sistemas creados por mi, que tengo guardados y que en realidad no utilizo, ademas, enseñare a desencriptar clientes que solo tienen una sola extencion con un programa diseñado por mi buen dia
  12. Puedes crearla tu mismo, esta función te puede servir https://metin2zone.net/index.php?/topic/15295-pcgive_item2_select-para-34k-game/
  13. Tienes que jugar con las tabulaciones, alguna duda de uso mp
  14. quest dar_item begin state start begin when kill begin local items = {130,115,990,1209,1402} local jefes = { [691] = {"Jefe Orco"}, [791] = {"Lider Esoterico"}, [2492] = {"Comandante_Setaou"}, [2493] = {"Dragon Azul"}, [1091] = {"Rey Demonio"}, [2597] = {"Muerte"}, [1192] = {"Bruja de Hielo"}, [1304] = {"Tigre Fantasma"}, [1901] = {"9 colas"}, [2091] = {"Reina Araña"} } for i=1, table.getn(items) do pc.give_item2(items) chat("Has destruido un "..jefes[npc.get_race()][1]..", recibes el item "..item_name(items)) end end end end
  15. def __nada(self): net.SendChatPacket("(efecto)") o tambien def __nada2(self): net.SendEmoticon(12) # 12 = numero del efecto en el playersettingmodule.py playersettingmodule.py chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+12, "", EmoticonStr+"efecto.mse") net.RegisterEmoticonString("(efecto)")
  16. gui_monturas_yc new_mount
  17. Bueno aca les comparto lo ultimo que se trabajo algo mas avanzado y mejorado para nuestro uso, se puede mejorar mas pero mi tiempo es muy poco y edward tambien esta alejado entonces cuando pueda lo mejoro y se los comparto les adjunto fotos y los demas archivos --[[ Quest: Premium System Version: 1.2 (Game 34k en adelante) ]] quest premium begin state start begin when 20094.chat.'Sistema Premium' begin say_title'Sistema Premium' say(pc.get_name()) say'Hola aca tienes la opcion de poder ser miembo [VIP] de nuestro servidor[ENTER]' say'Con esta opcion tienes la posibilidad de tener nuevos bonus, ademas de nuevas tiendas para tu uso[ENTER]' say'Ademas tu nombre tendra una manera distinta de verse con [VIP], un logo que te ara ver mejor[ENTER]' say'Ademas que cuando hablas podran ver tu rango [VIP], para obtener esto y muchos mas privilegios[ENTER]' say'Deberas cancelar la suma de 50 coins por mes, para poder disfrutar de este sistema.' say_reward'Realmente Quieres obtenerlo?' local elejir = select('Si, Comprarlo', 'Salir') if elejir == 2 then return end if pc.get_coins() < 50 then say_title'Sistema Premium' say(pc.get_name()) say'Lo siento, no tienes los coins suficientes para ser miembo VIP' else say_title'Sistema Premium' say(pc.get_name()) say'FELICIDADES!, de ahora en adelante eres miembro vip de nuestro servidor[ENTER]' say'Usalo bien y con cautela todo estara moritoriado por el staff del servidor.' say'Recibido: bonus de experiencia' pc.change_coins(-50) affect.add(43, 100, 60*60*24) pc.set_vip() end end end end --[[ Quest: Premium System Version: 1.2 (Game 34k en adelante) ]] quest shop_vip begin state start begin when login begin -- aqui yo entiendo que es: cuando se conecta cualquier user, ya le da el premium. Premium.Shop1() end when button or info begin say_title'Sistema Premium' say(pc.get_name()) say'Tienda VIP activa, compra tus objetos unicos' npc.open_shop(3) end end end --[[ Quest: Premium System Version: 1.2 (Game 34k en adelante) ]] quest shop_vip2 begin state start begin when login begin Premium.Shop2() end when button or info begin local items = {19,29,39,49,59}-- vnum items local bonus = { -- puedes agregar mas bonus si lo deseas {1,5000}, -- Max Hp {2,20}, -- Max Sp {3,20}, -- Vitalidad {4,20}, -- Inteligencia {5,20}, -- Fuerza {6,20}, -- Dextreza {7,20}, -- Velocidad de ataque {8,20}, -- Velocidad de Movimiento {9,20}, -- Velocidad Hechizo {10,20}, -- Regeneración de HP {11,20}, -- Regeneración de SP {12,20}, -- Probabilidad de Envenenamiento {13,20}, -- Probabilidad de Apagon {14,20}, -- Probabilidad de Retardo {15,20}, -- Probabilidad de golpes críticos {16,20}, -- Probabilidad de golpes de penetración {17,20}, -- Fuerza Contra MedioHumanos {18,20}, -- Fuerza Contra Animales {19,20}, -- Fuerza Contra Orcos {20,20}, -- Fuerza Contra Misticos {21,20}, -- Fuerza Contra No-muertos {22,20}, -- Fuerza Contra Demonios {23,20}, -- Probabilidad de Absorver HP {24,20}, -- Probabilidad de Absorver SP {25,20}, -- Probabilidad de robar HP {26,20}, -- Probabilidad de recuperar SP al golpear {27,20} -- Posibilidad de bloquear un ataque cuerpo a cuerpo } if pc.getqf('iniciar') <= 5 then say_title'Sistema Premium' say(pc.get_name()) say'Aqui podras obtener un item vip, el cual se te dara al azar.' say'Solo puedes usar 5 veces este metodo.' local aceptar = select('Si, quiero', 'Salir') if aceptar == 2 then return end say_title'Agregar bonus 1' local bonus1 = select('Maximo Hp', 'Maximo Sp', 'Vitalidad', 'Inteligencia', 'Fuerza', 'Dextreza', 'Velocidad de ataque', 'Velocidad de Movimiento', 'Velocidad Hechizo', 'Regeneracion de HP', 'Regeneracion de SP', 'Probabilidad de Envenenamiento', 'Probabilidad de Apagon', 'Probabilidad de Retardo', 'Probabilidad de golpes criticos', 'Probabilidad de golpes de penetracion', 'Fuerza Contra MedioHumanos', 'Fuerza Contra Animales', 'Fuerza Contra Orcos', 'Fuerza Contra Misticos', 'Fuerza Contra No-muertos', 'Fuerza Contra Demonios', 'Probabilidad de Absorver HP', 'Probabilidad de Absorver SP', 'Probabilidad de robar HP', 'Probabilidad de recuperar SP al golpear', 'Posibilidad de bloquear un ataque cuerpo a cuerpo') say_title'Agregar bonus 2' local bonus2 = select('Maximo Hp', 'Maximo Sp', 'Vitalidad', 'Inteligencia', 'Fuerza', 'Dextreza', 'Velocidad de ataque', 'Velocidad de Movimiento', 'Velocidad Hechizo', 'Regeneracion de HP', 'Regeneracion de SP', 'Probabilidad de Envenenamiento', 'Probabilidad de Apagon', 'Probabilidad de Retardo', 'Probabilidad de golpes criticos', 'Probabilidad de golpes de penetracion', 'Fuerza Contra MedioHumanos', 'Fuerza Contra Animales', 'Fuerza Contra Orcos', 'Fuerza Contra Misticos', 'Fuerza Contra No-muertos', 'Fuerza Contra Demonios', 'Probabilidad de Absorver HP', 'Probabilidad de Absorver SP', 'Probabilidad de robar HP', 'Probabilidad de recuperar SP al golpear', 'Posibilidad de bloquear un ataque cuerpo a cuerpo') say_title'Agregar bonus 3' local bonus3 = select('Maximo Hp', 'Maximo Sp', 'Vitalidad', 'Inteligencia', 'Fuerza', 'Dextreza', 'Velocidad de ataque', 'Velocidad de Movimiento', 'Velocidad Hechizo', 'Regeneracion de HP', 'Regeneracion de SP', 'Probabilidad de Envenenamiento', 'Probabilidad de Apagon', 'Probabilidad de Retardo', 'Probabilidad de golpes criticos', 'Probabilidad de golpes de penetracion', 'Fuerza Contra MedioHumanos', 'Fuerza Contra Animales', 'Fuerza Contra Orcos', 'Fuerza Contra Misticos', 'Fuerza Contra No-muertos', 'Fuerza Contra Demonios', 'Probabilidad de Absorver HP', 'Probabilidad de Absorver SP', 'Probabilidad de robar HP', 'Probabilidad de recuperar SP al golpear', 'Posibilidad de bloquear un ataque cuerpo a cuerpo') say_title'Agregar bonus 4' local bonus4 = select('Maximo Hp', 'Maximo Sp', 'Vitalidad', 'Inteligencia', 'Fuerza', 'Dextreza', 'Velocidad de ataque', 'Velocidad de Movimiento', 'Velocidad Hechizo', 'Regeneracion de HP', 'Regeneracion de SP', 'Probabilidad de Envenenamiento', 'Probabilidad de Apagon', 'Probabilidad de Retardo', 'Probabilidad de golpes criticos', 'Probabilidad de golpes de penetracion', 'Fuerza Contra MedioHumanos', 'Fuerza Contra Animales', 'Fuerza Contra Orcos', 'Fuerza Contra Misticos', 'Fuerza Contra No-muertos', 'Fuerza Contra Demonios', 'Probabilidad de Absorver HP', 'Probabilidad de Absorver SP', 'Probabilidad de robar HP', 'Probabilidad de recuperar SP al golpear', 'Posibilidad de bloquear un ataque cuerpo a cuerpo') say_title'Agregar bonus 5' local bonus5 = select('Maximo Hp', 'Maximo Sp', 'Vitalidad', 'Inteligencia', 'Fuerza', 'Dextreza', 'Velocidad de ataque', 'Velocidad de Movimiento', 'Velocidad Hechizo', 'Regeneracion de HP', 'Regeneracion de SP', 'Probabilidad de Envenenamiento', 'Probabilidad de Apagon', 'Probabilidad de Retardo', 'Probabilidad de golpes criticos', 'Probabilidad de golpes de penetracion', 'Fuerza Contra MedioHumanos', 'Fuerza Contra Animales', 'Fuerza Contra Orcos', 'Fuerza Contra Misticos', 'Fuerza Contra No-muertos', 'Fuerza Contra Demonios', 'Probabilidad de Absorver HP', 'Probabilidad de Absorver SP', 'Probabilidad de robar HP', 'Probabilidad de recuperar SP al golpear', 'Posibilidad de bloquear un ataque cuerpo a cuerpo') pc.give_item2_select(items[math.random(1,5)]) -- si agregas mas items debes modificar el numero 4 asta el numero mayor de items agregados item.set_value(0,bonus[bonus1][1],bonus[bonus1][2]) item.set_value(1,bonus[bonus2][1],bonus[bonus2][2]) item.set_value(2,bonus[bonus3][1],bonus[bonus3][2]) item.set_value(3,bonus[bonus4][1],bonus[bonus4][2]) item.set_value(4,bonus[bonus5][1],bonus[bonus5][2]) pc.setqf('iniciar', pc.getqf('iniciar') + 1) else say_title'Sistema Premium' say(pc.get_name()) say'Lo siento, ya lo usaste mas de 5 veces' say'compra premium item para volver a utilizar este metodo otras 5 veces' end end when 40002.use begin say_title'Sistema Premium' say(pc.get_name()) say'Al usar este item premium obtienes la posibilidad de 5 nuevos items nuevos, con los bonus al azar' say'Usalo cuando lo veas necesario es un item bastante valioso' pc.setqf('iniciar', 0) end end end questlib --[[ Quest: Premium System Version: 1.2 (Game 34k en adelante) ]] Premium = Premium or {} function Premium.Shop1() cmdchat("tiendita1 "..q.getcurrentquestindex()) end function Premium.Shop2() cmdchat("tiendita2 "..q.getcurrentquestindex()) end function pc.change_coins(x) mysql_query("UPDATE account.account SET coins=coins+'"..x.."' WHERE id='"..pc.get_account_id().."' LIMIT 1") end function pc.get_coins() local a = mysql_query("select * from account.account where id ='"..pc.get_account_id().."' LIMIT 1") return a.coins[1] end function pc.set_vip() local nombre = pc.get_name() mysql_query("UPDATE player.player SET name='[VIP]"..nombre.."' WHERE account_id='"..pc.get_account_id().."' LIMIT 1") end function pc.give_item2_select(...) local tmp = { ['Alt']={}, ['Neu']={} } for i =0,89 do item.select_cell(i) if not tmp.Alt[item.get_id()] then tmp.Alt[item.get_id()] = i end end if table.getn(arg)< 2 then pc.give_item2(arg[1]) else pc.give_item2(arg[1],arg[2]) end for i =0,89 do item.select_cell(i) if not tmp.Neu[item.get_id()] then tmp.Neu[item.get_id()] = i end end local data = {{},{}} for id,slot in next,tmp.Alt do table.insert(data[1],slot) end for id,slot in next,tmp.Neu do table.insert(data[2],slot) end table.sort(data[1]);table.sort(data[2]) for i = 1,table.getn(data[1]) do for i = 1,table.getn(data[2]) do if data[1][i] ~= data[2][i] then item.select_cell(data[2][i]) return end end end end parte cliente game.py class GameWindow(ui.ScriptWindow): def __init__(self, stream): self.lastupdate = 0 self.lastupdatee = 0 onPressKeyDict[app.DIK_F6] = lambda : self.__premium() def OnUpdate(self): premiumvip = player.GetName() if app.GetGlobalTimeStamp() - self.lastupdate < 0: self.lastupdate = app.GetGlobalTimeStamp() if app.GetGlobalTimeStamp() - self.lastupdatee < 0: self.lastupdatee = app.GetGlobalTimeStamp() if premiumvip.find("[VIP]")!=-1: if self.lastupdate == 0: self.lastupdate = app.GetGlobalTimeStamp() if app.GetGlobalTimeStamp() - self.lastupdate >= 60: self.lastupdate = app.GetGlobalTimeStamp() net.SendEmoticon(12) def __ServerCommand_Build(self): serverCommandList={ # sistema vip 'tiendita1' : self.__tienda1, 'tiendita2' : self.__tienda2, # end sistema vip def __premium(self): import uipremium self.fire = uipremium.Premium() self.fire.Show() def __tienda1(self, tienda1vip): import event,constInfo constInfo.SHOP1 = int(tienda1vip) def __tienda2(self, tienda2vip): import event,constInfo constInfo.SHOP2 = int(tienda2vip) crean el archivo uipremium.py import ui,uiCommon,item,player class Premium(ui.ScriptWindow): def __init__(self): ui.ScriptWindow.__init__(self) self.Fire() def __del__(self): ui.ScriptWindow.__del__(self) def Fire(self): self.Board = ui.BoardWithTitleBar() self.Board.SetSize(220, 280) self.Board.SetCenterPosition() self.Board.AddFlag("movable") self.Board.AddFlag("float") self.Board.SetTitleName("Panel Premium") self.Board.SetCloseEvent(self.Close) self.Board.Show() self.cancelar = ui.Button() self.cancelar.SetParent(self.Board) self.cancelar.SetPosition(135,250) self.cancelar.SetUpVisual('d:/ymir work/ui/game/windows/tab_button_small_01.sub') self.cancelar.SetOverVisual('d:/ymir work/ui/game/windows/tab_button_small_02.sub') self.cancelar.SetDownVisual('d:/ymir work/ui/game/windows/tab_button_small_03.sub') self.cancelar.SetText("Cancelar") self.cancelar.SetEvent(ui.__mem_func__(self.Close)) self.cancelar.Show() self.refrescar = ui.Button() self.refrescar.SetParent(self.Board) self.refrescar.SetPosition(90,250) self.refrescar.SetUpVisual('d:/ymir work/ui/game/windows/tab_button_small_01.sub') self.refrescar.SetOverVisual('d:/ymir work/ui/game/windows/tab_button_small_02.sub') self.refrescar.SetDownVisual('d:/ymir work/ui/game/windows/tab_button_small_03.sub') self.refrescar.SetText("Refrescar") self.refrescar.SetEvent(ui.__mem_func__(self.__refrescar)) self.refrescar.Show() self.aceptar = ui.Button() self.aceptar.SetParent(self.Board) self.aceptar.SetPosition(45,250) self.aceptar.SetUpVisual('d:/ymir work/ui/game/windows/tab_button_small_01.sub') self.aceptar.SetOverVisual('d:/ymir work/ui/game/windows/tab_button_small_02.sub') self.aceptar.SetDownVisual('d:/ymir work/ui/game/windows/tab_button_small_03.sub') self.aceptar.SetEvent(ui.__mem_func__(self.__Premium)) self.aceptar.SetText("Aceptar") self.aceptar.Show() self.fileListBox = ui.ListBoxEx() self.fileListBox.SetParent(self.Board) self.fileListBox.SetPosition(20, 50) self.fileListBox.Show() self.ScrollBar = ui.ScrollBar() self.ScrollBar.SetParent(self.Board) self.ScrollBar.SetPosition(190, 35) self.ScrollBar.SetScrollBarSize(220) self.fileListBox.SetScrollBar(self.ScrollBar) self.fileListBox.AppendItem(Item("Abrir Tienda VIP")) self.fileListBox.AppendItem(Item("Obtener Items VIP")) self.ScrollBar.Show() def Close(self): self.Board.Hide() self.ScrollBar.Hide() self.fileListBox.Hide() def __refrescar(self): self.fileListBox.Hide() self.fileListBox.Show() def __Premium(self): premiumvip = player.GetName() elItem=self.fileListBox.GetSelectedItem() if premiumvip.find("[VIP]")!=-1: if elItem: alcanzado=elItem.GetText() if alcanzado =="Abrir Tienda VIP": import event,constInfo event.QuestButtonClick(constInfo.SHOP1) elif alcanzado =="Obtener Items VIP": import event,constInfo event.QuestButtonClick(constInfo.SHOP2) else: self.PopupMessage = uiCommon.PopupDialog() self.PopupMessage.SetWidth(200) self.PopupMessage.SetText("No Seleccionaste ninguna opcion") self.PopupMessage.Show() else: self.PopupMessage = uiCommon.PopupDialog() self.PopupMessage.SetWidth(200) self.PopupMessage.SetText("No Seleccionaste ninguna opcion") self.PopupMessage.Show() else: self.PopupMessage = uiCommon.PopupDialog() self.PopupMessage.SetWidth(200) self.PopupMessage.SetText("Lo siento, no eres miembro VIP") self.PopupMessage.Show() class Item(ui.ListBoxEx.Item): def __init__(self, fileName): ui.ListBoxEx.Item.__init__(self) self.canLoad=0 self.text=fileName self.textLine=self.__CreateTextLine(fileName[:40]) def __del__(self): ui.ListBoxEx.Item.__del__(self) def GetText(self): return self.text def SetSize(self, width, height): ui.ListBoxEx.Item.SetSize(self, 6*len(self.textLine.GetText()) + 4, height) def __CreateTextLine(self, fileName): textLine=ui.TextLine() textLine.SetParent(self) textLine.SetPosition(0, 0) textLine.SetText(fileName) textLine.Show() return textLine constinfo.py SHOP1 = 0 SHOP2 = 0 playersettingmodule.py chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+12, "", EmoticonStr+"vip_mark.mse") net.RegisterEmoticonString("(vip)") agregan la emocion en ymir work\effect\etc\emoticon reemplazan el uiquest.py https://mega.co.nz/#!RI8lnDqa!7kALkS7T2URo-U2o08WKbIoyTnev6yLJTPzieb_qoLc buen resto de dia
  18. todo esta en el lugar correcto, antes había mirado y me fallaba esta ruta, pero ya lo había acomodado y igual Resuelto, no me habia fijado y habia colocado solo pc y no pc3 Gracias
  19. No me sale la textura, tengo colocado todos los msm en su sitio las respectivas texturas en su lugar, y no me tira ningún error el sysser la verdad e mirado muchas veces las lineas del playersettingmodule y todo esta como lo tengo, la verdad si alguien me colabora seria bueno, a mi ya se me acabaron las posibilidades de error que tenia. gracias antemano
  20. http://metin2zone.net/index.php?/topic/3610-minicurso-mysql-en-quest/
  21. local items = { {53003, 1}, {53005, 1}, {53006, 1}, {53007, 1} } pc.give_item2(items[math.random(1,table.getn(items))][1],items[math.random(1,table.getn(items))][2])
×
×
  • Crear nuevo...