Rafa23Alzira
-
Contador contenido
588 -
Ingreso
-
Última visita
-
Días ganados
34
Mensajes publicados por Rafa23Alzira
-
-
Sorry, que estaba pensando en otras cosas, ya está.
-
quest karma begin
state start begin
when 20094.chat."Karma" begin
say_title("By DjZed")
say("Puedo subir tu karma a Chivalric,")
say_reward("Deseas subir tu Karma?")
local a = select ( "Si" , "No" )
if a != 2 then
say_reward("Karma subido con exito.")
pc.change_alignment ( 20000 )
end
end
end
end
-
se callo la pagina no hay otra ?
Tienes el código aquí:
Debes iniciar sesión para ver el contenido del enlace en esta publicación. -
Hola chicos, he preguntado por el chat si a alguien le interesaba este tip y se me ha respondido que si, así que os lo hago por si a alguien os puede servir.
Hay otras guías que lo que hacen es simplemente reemplazar el positioninfo (las coord), con este método lo pondréis bajo
Sale la hora de vuestra ordenador, estoy intentando que salga la del país que queramos, pero por ahora no he podido.
Empezamos
Descompilamos uiscript y abrimos minimap.py
Buscamos
## PositionInfo
Debajo de su cierre ( } ) ponemos lo siguiente
## TimeInfo { "name" : "TimeInfo", "type" : "text", "text_horizontal_align" : "center", "outline" : 1, "x" : 70, "y" : 180, "text" : "", },
Quedará así:
Guardamos y compilamos uiscript.
Ahora descompilamos root y vamos a uiminimap.py
Buscamos
self.positionInfo = 0
y debajo ponemos
self.timeInfo = 0
De nuevo buscamos
self.positionInfo = self.GetChild("PositionInfo")
y bajo ponemos
self.timeInfo = self.GetChild("TimeInfo")
Otra vez, buscamos
self.positionInfo.Hide()
y bajo ponemos
self.timeInfo.SetPosition(70, 160)
Por último buscamos
self.positionInfo.SetText("(%.0f, %.0f)" % (x/100, y/100))
y bajo ponemos
self.timeInfo.SetText(time.strftime('(%X)'))
Para terminar añadimos el import, buscamos
import background
y bajo ponemos
import time
-
-
Espacios y tab no, end si
-
Coge los cuatro 0 y solo cambia los primeros dos
-
-
-
-
Hola chicos, os traigo una cosilla que he hecho que creo que es bastante útil y hará que nos evitemos crear cupones distintos para cantidad de Coins - Md's
Este objeto te permite ingresarle o retirarle coins y comerciar el cupón con las coins guardadas.
- El título del objeto cambia según las coins ingresadas
- La descripción cambia según las coins ingresadas
- Título y descripción se ven perfectamente en comercio, tanto un jugador como el otro
Pasos a seguir:
Parte cliente
- Descompilamos root y abrimos uitooltip.py, dentro de uitooltip.py buscamos
if 50026 == itemVnum:
bajo de ese if añadimos el siguiente elif:
elif 80018 == itemVnum: if 0 != metinSlot[0]: name = item.GetItemName() cantidad = metinSlot[0] name += " (" name += str(metinSlot[0]) name += ")" self.SetTitle(name) self.AppendDescription("Cupón por valor de "+str(cantidad)+" Coins. Este objeto es comerciable." , 26) self.ShowToolTip() else: name = item.GetItemName() self.SetTitle(name) self.AppendDescription("Puedes ingresar coins a este objeto para después comerciarlo." , 26) self.ShowToolTip()
Cuidado con las tabulaciones, debe quedar así:
Ya tenemos la parte del root hecha. Ahora descompilamos locale.
Abrimos item_list.txt y buscáis el item 80018. Si lo tenéis dejadlo de esta manera, y si no lo tenéis agregadlo así:
80018 ETC icon/item/90009.tga
Ahora en el item_proto.xml ponéis esta linea:
<ItemDef Vnum="80018" Name="Cupon de Coins" LocalizedName="Cupón de Coins" Type="18" SubType="0" Weight="0" Size="1" AntiFlags="0" Flags="8192" WearFlags="0" ImmuneFlags="0" Gold="0" ShopBuyPrice="0" LimitType0="0" LimitValue0="0" LimitType1="0" LimitValue1="0" ApplyType0="0" ApplyValue0="0" ApplyType1="0" ApplyValue1="0" ApplyType2="0" ApplyValue2="0" Value0="0" Value1="0" Value2="0" Value3="0" Value4="0" Value5="0" Socket0="0" Socket1="0" Socket2="0" RefinedVnum="0" RefineSet="0" AlterToMagicItemPercent="0" Specular="0" GainSocketPercent="0" AddonType="0" />
Compilais el item_proto, el locale y el root y lo metéis en la carpeta pack.Parte servidorPara proto en txtAbrimos item_names.txt y ponemos80018 Cupón de Coins
después abrimos item_proto.txt y introducimos
80018 ±³È¯±Ç ITEM_QUEST 0 1 NONE LOG NONE NONE 0 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0
Para proto en SQL (Navicat)Introducimos la siguiente query (No testeada, uso txt):INSERT INTO `player.item_proto` VALUES ('80018', 0xB1B3C8AFB1C7, 0x4375706F6E20646520436F696E73, '18', '0', '0', '1', '0', '8192', '0', '', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '-1', '-1', '-1', '-1', '-1', '-1', '0', '0', '0');
Ahora la quest (En LIMIT_COINS cambiáis el máximo de Coins que se pueden ingresar de golpe):quest cupon_coins begin state start begin function ingresar() local LIMIT_COINS = 10000 say_title("Cupón de Coins - Ingresar") say("¿Cuantas Coins deseas ingresarle?") say_reward("Dispones de "..pc.get_coins().." Coins") local coi = tonumber(input()) if coi > LIMIT_COINS then say("El número máximo de coins a ingresar[ENTER]son "..LIMIT_COINS.."") return end if coi > 0 and coi < LIMIT_COINS then if pc.get_coins() < coi then say("No tienes suficientes coins.") return else pc.change_coins(-coi) item.set_socket(0,coi+item.get_socket(0)) say("Has ingresado "..coi.." coins al cupón.") char_log(80018, "ITEM", "Ingreso de "..coi.." Coins") return end end end when 80018.use begin if item.get_socket(0) == 0 then say_title("Cupón de Coins") say("El cupón está vacío, ¿Deseas") say("ingresarle Coins?") local a = select("Ingresar coins","Cancelar") if a == 1 then cupon_coins.ingresar() end else say_title("Cupón de Coins") say("El cupón tiene "..item.get_socket(0).." Coins.") say("¿Que deseas hacer?") local b = select("Retirar","Poner más Coins","Cancelar") if b == 1 then say_title("Cupón de Coins - Retirar") say("Has retirado las "..item.get_socket(0).." Coins[ENTER]disponibles") pc.change_coins(item.get_socket(0)) item.set_socket(0,0) char_log(80018, "ITEM", "Retiro de "..item.get_socket(0).." Coins") elseif b == 2 then cupon_coins.ingresar() end end end end end
Si surge algún problema no dudéis en decirlo -
Uy, lo habré borrado sin querer al postearlo.
-
Muchas gracias
Podéis cerrar
-
Yo el único cliente que lo he visto es ese y encriptado, si puedes pasarmelo te lo agradecería
-
Hola chicos, he encontrado una imagen que me ha parecido muy bonita y me gustaría ponerla para el seleccionar pj.
¿Alguien tiene esa interfaz de elegir pj o la imagen? Gracias
-
Os traigo una quest que he creado para poner los items en el shop_item sin tener que ir poniendo 1 a 1 (la vagancia)
quest item_to_shop begin state start begin function change_flag() say("Para que tienda deseas poner los[ENTER]objetos") local t = tonumber(input()) if t >0 then say("Has puesto la tienda "..t.."") game.set_event_flag("item_to_shop",t) return end end when 20095.take with pc.is_gm() begin local ITEM_PARA_CAMBIAR_FLAG = 2 local item,flag,cantidad = item.get_vnum(),game.get_event_flag("item_to_shop"),item.get_count() if flag == 0 then item_to_shop.change_flag() else if item == ITEM_PARA_CAMBIAR_FLAG then item_to_shop.change_flag() else mysql_query("INSERT INTO player.shop_item (shop_vnum, item_vnum, count) VALUES ('"..flag.."', '"..item.."', '"..cantidad.."')") chat("Item "..item.." ("..cantidad..") agregado a la NPC "..flag.."") end end end end end
-
Pues mira la exp de los del anterior mapa y le pones un poco más
-
No toques la exp de los mobs, dejalo por defecto, pon rates y ya
-
- Este es un tema popular.
- Este es un tema popular.
Hola chicos, he creado una tabla de experiencia bastante bien regulada para servidores que tengan hasta el nivel 255. Lo he hecho de la siguiente manera, he dividido la tabla normal entre 3 y luego he sumado el último nivel (105) con el 1, 2, etc. Ha quedado perfecto la verdad.
Debes iniciar sesión para ver el contenido del enlace en esta publicación.La dejo en pastebin y aquí en el spoiler:
0 30 50 80 120 200 430 1100 1900 2900 4260 6000 8330 12000 17330 24330 33330 41660 53330 73330 93330 123330 180000 223330 293330 333330 412330 472660 541330 619000 707330 807000 920330 1048330 1193330 1357660 1544000 1731330 1905660 2088000 2279000 2533330 2758000 2996660 3251000 3520000 3803330 4106660 4423330 4760000 5113330 5623330 6320000 6660000 7140000 7643330 8176660 8733330 9320000 9933330 10926660 12020000 13223330 14546660 16000000 17600000 19360000 21296660 23426660 25770000 28346660 31180000 34300000 37733330 41500000 45666660 50233330 55233330 78996660 86883330 95593330 105126660 115656660 127226660 139923330 153920000 169346660 186246660 204880000 225376660 247910000 347074000 381781400 419959540 461955490 508151040 558966140 614862760 676349030 694148030 694148050 694148080 694148120 694148200 694148430 694149100 694149900 694150900 694152260 694154000 694156330 694160000 694165330 694172330 694181330 694189660 694201330 694221330 694241330 694271330 694328000 694371330 694441330 694481330 694560330 694620660 694689330 694767000 694855330 694955000 695068330 695196330 695341330 695505660 695692000 695879330 696053660 696236000 696427000 696681330 696906000 697144660 697399000 697668000 697951330 698254660 698571330 698908000 699261330 699771330 700468000 700808000 701288000 701791330 702324660 702881330 703468000 704081330 705074660 706168000 707371330 708694660 710148000 711748000 713508000 715444660 717574660 719918000 722494660 725328000 728448000 731881330 735648000 739814660 744381330 749381330 773144660 781031330 789741330 799274660 809804660 821374660 834071330 848068000 863494660 880394660 899028000 919524660 942058000 1041222000 1075929400 1114107540 1156103490 1202299040 1253114140 1309010760 1390201660 1390384000 1390575000 1390829330 1391054000 1391292660 1391547000 1391816000 1392099330 1392402660 1392719330 1393056000 1393409330 1393919330 1394616000 1394956000 1395436000 1395939330 1396472660 1397029330 1397616000 1398229330 1399222660 1400316000 1401519330 1402842660 1404296000 1405896000 1407656000 1409592660 1411722660 1414066000 1416642660 1419476000 1422596000 1426029330 1429796000 1433962660 1438529330 1443529330 1467292660 1475179330 1483889330 1493422660 1503952660 1515522660 1528219330 1542216000 1557642660 1574542660 1593176000 1613672660 1636206000 1735370000 1770077400 1808255540 1850251490 1896447040 1947262140 2003158760
-
El sistema de soporte este es bueno, panamera creo que lo sigue usando, pero a mi me resulta incomodo
Demo:
Debes iniciar sesión para ver el contenido del enlace en esta publicación. -
Hola chicos, os traigo un sencillo sistema de noticias que serán más cómodas para el usuario y para el staff. Este sistema lee las noticias a traves de un txt y si el usuario aún no lo ha leído le manda un mp con información.
Una de las ventajas de este sistema es que no hace falta ningún tipo de reload o /e, ya que lee el qf a través de un txt y solo ejecuta la función si el qf del jugador es menor.
Empezamos
Abrimos game.py:
Debajo de
"mall"
ponemos
"open_notice_info" : self.__open_notice_info, "write_notice_info" : self.__write_notice_info,
Luego buscamos
__InGameShop_Show(self,url):
y bajo de ese def ponemos
def __open_notice_info(self): self.interface.RegisterGameMasterName("<--System-->") self.interface.RecvWhisper("<--System-->") def __write_notice_info(self,text): chat.AppendWhisper(chat.WHISPER_TYPE_CHAT, "<--System-->", text.replace("_", " "))
Debe quedar así:
Vamos ahora a la parte quest
Cogemos esta quest
quest noticias begin state start begin function read_notice_line(l) return readline("/quest/system/noticias/noticias.txt", l) end when login begin local qf = readline("/quest/system/noticias/qf.txt", 1) local lineas = 0 if tonumber(qf) > pc.getqf("noticias_ver") then for line in io.lines("/quest/system/noticias/noticias.txt") do lineas = lineas + 1 end cmdchat("open_notice_info") for i = 1,lineas do cmdchat("write_notice_info "..string.gsub(noticias.read_notice_line(i), ' ', '_')) end pc.setqf("noticias_ver", qf) end end end end
Y creamos un fichero en nuestra carpeta quest llamado noticias.quest, dentro metemos la quest, guardamos y cerramos.
Ahora creamos una carpeta en quest llamada System, y dentro de ella otra llamada noticias. En esa carpeta creamos un archivo llamado qf.txt con un 0 dentro, y creamos otro llamado noticias.txt que puede estar en blanco.
¡Atención!
Es probable que no tengáis la función readline, así que aquí os la dejo.
function readline(path, x) local linetable = {} for line in io.lines(path) do table.insert(linetable, line) end return linetable[x] end
Para terminar añadimos a quest_functions estas dos funciones:
readline
io.lines
Ya lo demás es hacer qc y reload q o reboot y ya tendréis listo esto.
Como añadir noticias.
Para añadir una nueva versión de noticias deberéis sumar 1 al qf.txt, por ejemplo si está en 11 poner 12 o si está en 0 poner 1.
Y en noticias.txt debéis poner cada noticia en una linea.
Así queda:
-
Esa página no es para eso
-
-
Bueno, yo tenía este problema y si a alguien le puedo ayudar mejor.
Resulta que al hacer when login en el pet system no invocaba la mascota, así que "inventé" un cmdchat para usar el objeto.
En vuestra quest del pet_system deberíais poner algo así, cambiando el qf por como vosotros tengáis lo de el pet:
when login with pc.getqf("pet_item") > 0 begin local peti = pc.getqf("pet_item") cmdchat("summon_pet "..peti.."") end
Y en el game.py debéis poner esto:
Si tenéis 4 inventarios en vez de *2 ponéis *4
def __summon_pet(self,vnumpet): for i in xrange(player.INVENTORY_PAGE_SIZE*2): YourItemID = player.GetItemIndex(i) if YourItemID == int(vnumpet): net.SendItemUsePacket(i) break
bajo de "mall" ponéis
"summon_pet" : self.__summon_pet,
Es una tontería pero es útil y a mi me vino bien para mi sistema.
[IMPORTANTE] Exploit cube r_info (afecta a todos los games)
en Modificación y edición del servidor.
Publicado
Y por esto amigos es mejor usar source. Gracias shogun