Jump to content

jaBote

Community Contributors
  • Content Count

    2037
  • Joined

  • Last visited

  • Days Won

    43

Everything posted by jaBote

  1. Precisamente, por eso considero mejor habilitar como 500 espacios de una vez, porque así es bastante más complicado que se quede corto, por un lado o por el otro.
  2. jaBote

    MYSQL ERROR

    Important question: Where are you getting this error? On your server consoles or in PhpMyAdmin?
  3. Latest posts on this topic (the ones posted after the last you see about) have been moved to General Server Support, on the Some general questions. thread, to avoid the thread going too off-topic. No actions will be taken against anyone, as long as you ensure to keep this thread on topic.
  4. Just make new table members or edit existent ones there in that file.
  5. Me propuse responder a esto ayer pero se me pasó ya que el foro me apareció como leído. Mil disculpas. Voy a tratar de explicarme lo mejor que pueda: El emulador se reserva las últimas 1000 IDs de monstruo disponibles para la creación de clones, esto es, mobs con sprites y habilidades de otro jugador, generalmente invocados con comandos de GM como @clone, @evilclone o @slaveclone o a través del uso del comando de scripting clone. Al generar un clon, el emulador le asigna una Mob ID libre en este rango (y cuando muere se la elimina). ¿Qué puedes hacer? Lo que ha dicho M45T3R tiene funcionamiento inmediato. Aunque para mí es mucho trabajo encontrar IDs libres. Yo personalmente modificaría el código fuente. Abre el archivo src/map/mob.h: // Change this to increase the table size in your mob_db to accomodate a larger mob database.// Be sure to note that IDs 4001 to 4048 are reserved for advanced/baby/expanded classes.// Notice that the last 1000 entries are used for player clones, so always set this to desired value +1000#define MAX_MOB_DB 4000 Puedes aumentar la cantidad máxima de mobs que puedes tener en tu servidor, cambiando esta configuración con riesgo de que haya problemas con que el servidor utilice alguna ID ya en uso para un job en concreto. Puedes alterar este valor y poner la ID que quieras sin problemas. Recuerda que el cliente solo lee Mob IDs hasta cierto rango de mobs, así que no pongas un valor máximo ridículamente grande, porque puedes recibir otros errores. Desconozco si esto provocará errores en el servidor aunque tras mirar un poco en el código original, parece que no. Si la anterior manera no te convence, hay otra forma de hacer esto. Veamos, ¿cuántos clones necesitas usar a la vez en tu servidor? Yo jamás he necesitado más de 100 (es más, creo que no he usado más de 10 a la vez, pero utilicemos un margen de seguridad razonable. También puedes reducir el número de espacios reservados para clones en el servidor. Eso se encuentra también en el mismo archivo, aquí: // These define the range of available IDs for clones. [Valaris]#define MOB_CLONE_START (MAX_MOB_DB-999)#define MOB_CLONE_END MAX_MOB_DB Simplemente cambia el valor de MOB_CLONE_START. A ese valor le tienes que restar el número de valores que quieres reservar para monstruos, menos uno. Es decir, ahí en ese código se reservan 1000 mobs pero se resta 999, pues igualmente si quieres reservar 100 valores hay que restar 99, y así si prefieres reservar otra cantidad. Esto solo causará problemas si se invocan más clones de los reservados, aunque 100 clones son muchos clones. O si te preocupa mucho, deja la cantidad que quieras, haciendo el espacio que consideres oportuno para tus mobs. Simplemente recuerda que, tras hacer cualquier cambio dentro de la carpeta src, siempre hay que volver a compilar el servidor para que éstos surtan efecto. Espero haber sido de ayuda.
  6. Format (from <--- to the end of that line are my comments): [itemID] = { unidentifiedDisplayName = "read the table name", <--- Content of num2itemdisplaynametable.txt for that Item ID unidentifiedResourceName = "sprite/act/texture filename when unidentified", <--- Content of num2itemresnametable.txt for that Item ID unidentifiedDescriptionName = { <--- Content of num2itemdesctable.txt for that Item ID "read", "the", "table", "name", } identifiedDisplayName = "read the table name", <--- Content of idnum2itemdisplaynametable.txt identifiedResourceName = "sprite/act/texture filename when identified", <--- Content of num2itemresnametable.txt for that Item ID identifiedDescriptionName = { <--- Content of idnum2itemdesctable.txt for that Item ID "read", "the", "table", "name", } slotCount = 0~4, <--- Content of itemslotcounttable.txt for that Item ID ClassNum = viewID if headgear/weapon/robes(garment) put 0 if not for headgear's viewID see accessoryid.lua for weapon's viewID see weapontable.lua for garment's viewID see spriterobeid.lua } Hope this helps!
  7. jaBote

    R>Top Brewer

    They don't? http://irowiki.org/wiki/Potion_Creation#Fame_System
  8. You could make it as a text item shop, but if I were you I'd wait for the release of our newest NPC shops with items or variables as currency, which is being cooked here in Hercules.
  9. First of all, from where are you reading your item DB? Are you using a MySQL item DB or are you simply reading it from db/re or pre-re/item_db.txt? Because if you're reading it from MySQL it's no use to modify your item_db and vice-versa. For knowing how are you reading your item DB, please refer to conf/inter-server.conf and look for your use_sql_item_db configuration.
  10. jaBote

    successrefitem

    Nope. That script is quite processor intensive compared to the recent modification to downrefitem, which is just quite processor straightforward with the use of only 1 scripting command, not calling it on a loop.
  11. Hi. For editing the Mjolnir server-side (its actual properties as an item) you have to go to db/re or pre-re/item_db.txt as Emistry said (the actual rute depends on whether you're using Renewal or Pre-Renewal, for example here's the item_db.txt for Renewal). Then you've got to look for the Mjolnir item ID number, which is ID# 1530. You've got the file structure at the start of that same file. Putting these lines along, you've got something like this: // Structure of Database:// ID,AegisName,Name,Type,Buy,Sell,Weight,ATK,DEF,Range,Slots,Job,Upper,Gender,Loc,wLV,eLV,Refineable,View,{ Script },{ OnEquip_Script },{ OnUnequip_Script }1530,Mjolnir,Mjolnir,4,20,,6000,350,,1,0,0x000444A2,63,2,2,4,95,0,8,{ bonus bAtkEle,Ele_Wind; bonus bDex,50; bonus bStr,20; bonus bAspdRate,10; bonus3 bAutoSpell,"MG_THUNDERSTORM",10,100; autobonus "{ bonus bSplashRange,1; }",50,10000; },{},{} Then take a look at the item_db.txt documentation located at doc/item_db.txt and realise you're looking for the job column in your item_db.txt: Job: Equippable jobs. Uses the following bitmask table:(S.) Novice (2^00): 0x00000001Swordman (2^01): 0x00000002Magician (2^02): 0x00000004Archer (2^03): 0x00000008Acolyte (2^04): 0x00000010Merchant (2^05): 0x00000020Thief (2^06): 0x00000040Knight (2^07): 0x00000080Priest (2^08): 0x00000100Wizard (2^09): 0x00000200Blacksmith (2^10): 0x00000400Hunter (2^11): 0x00000800Assassin (2^12): 0x00001000Unused (2^13): 0x00002000Crusader (2^14): 0x00004000Monk (2^15): 0x00008000Sage (2^16): 0x00010000Rogue (2^17): 0x00020000Alchemist (2^18): 0x00040000Bard/Dancer (2^19): 0x00080000Unused (2^20): 0x00100000Taekwon (2^21): 0x00200000Star Gladiator (2^22): 0x00400000Soul Linker (2^23): 0x00800000Gunslinger (2^24): 0x01000000Ninja (2^25): 0x02000000Gangsi (2^26): 0x04000000Death Knight (2^27): 0x08000000Dark Collector (2^28): 0x10000000Kagerou/Oboro (2^29): 0x20000000Rebellion (2^30): 0x40000000 These are hexadecimal numbers (they all start with the 0x thingy for the server to tell them apart from decimal numbers, but they don't usually start like this elsewhere). From now on, if you have problem summing hexadecimal numbers try to use an online hexadecimal calculator (or even Windows calculator can do it for you if you want) just like the one I just provided. So let's get the jobs that the server currently lets the users to wield this weapon: in item_db it says 0x000444A2, which means: Swordman (2^01): 0x00000002Merchant (2^05): 0x00000020Knight (2^07): 0x00000080Blacksmith (2^10): 0x00000400Crusader (2^14): 0x00004000Alchemist (2^18): 0x00040000Jobs allowed to use: 0x000444A2 If you want it to be also allowed to use by Thief and Acolyte classes, (and their respective second jobs), just add their bitmasks to the original bitmask, so that this value should change to: Swordman (2^01): 0x00000002Acolyte (2^04): 0x00000010Merchant (2^05): 0x00000020Thief (2^06): 0x00000040Knight (2^07): 0x00000080Priest (2^08): 0x00000100Blacksmith (2^10): 0x00000400Assassin (2^12): 0x00001000Crusader (2^14): 0x00004000Monk (2^15): 0x00008000Rogue (2^17): 0x00020000Alchemist (2^18): 0x00040000Jobs allowed to use: 0x0006D5F2 So then, put that value inside your item_db.txt on your Mjolnir: 1530,Mjolnir,Mjolnir,4,20,,6000,350,,1,0,0x0006D5F2,63,2,2,4,95,0,8,{ bonus bAtkEle,Ele_Wind; bonus bDex,50; bonus bStr,20; bonus bAspdRate,10; bonus3 bAutoSpell,"MG_THUNDERSTORM",10,100; autobonus "{ bonus bSplashRange,1; }",50,10000; },{},{} And reload your items on the server side. You're now good to go and will be able to perform some item edits (and maybe making your own ones server-side by yourself after this . P.S.: There could be some possible sprite missing errors, especially with thiefs using maces. Be extremely careful with this.
  12. Você ja tentou usar /conf/groups.conf para definir as permissões corretamente para todos?
  13. You could use getcharip() for that, then use some structure like this inside of a NPC: // NPC Variables used:// .blockedips$ for storing the blocked IPs;// .ipunblocktime for storing the unblock time at the same index as .blockedips$// WARNING!! Up to 128 IP blocks at a time!//Little config you'll need:set .@blocktime, 60; // Block time (in seconds)set .@ip$, getcharip();if ( .@ip$ != "" ) { set .@array_size, getarraysize(.blockedips$); // Getting the array size for the calculations for ( set .@i, 0; .@i < .@array_size; set .@i, .@i + 1 ) { // Checking and removing timed out blocks and if the player is still blocked while ( .ipunblocktime[.@i] < gettimetick(2) && .@i < .@array_size ) { // Bulk removing timed out blocks if more than one in a row, caring not to go outside of the array deletearray .blockedips$[.@i],1; deletearray .ipunblocktime[.@i],1; set .@array_size, .@array_size - 1; // Correction for the array size } if ( .blockedips$[.@i] == .@ip$ ) { // No need to check if outside the array since these values will be "" and forcefully .@i <= 127. Also no need to check if outdated since it should have been removed before set .@blockedtime, gettimetick(2) - .ipunblocktime[.@i]; // Remaining time in seconds of the block // break; // Uncomment if you don't want the loop to finish checking for timed out blocks after finding the player if it's on the list } } if ( .@blockedtime ) { mes "Oh, your IP is still blocked."; mes "You still can't use me for the next " + .@blockedtime + " seconds."; close; } mes "OK, I'll give you an apple and block you for " + .@blocktime + " seconds."; close2; getitem 512,1; set .blockedips$[.@array_size],.@ip$; set .ipunblocktime[.@array_size], gettimetick(2) + .@blocktime; end;} You can modify it the way you want to accomplish your needs.
  14. First of all, a Data folder is also stored inside of the GRF. You could use some GRF file explorers such as GRFFactory or Gryff if you want to navigate through it. Also, as of 2012-04-18, Gravity changed the official behavior of the client reading the data folder. If you're using a client older than that, then these files are still inside the GRF with the names specified. Else, if you're using 2012-04-18 or older, all that information is stored in data/cskroption.lub (inside or outside a GRF) in a different structure.
  15. If you think the problem comes from eAmod, then it's impossible for us to help you in that, mainly because eAmod's source code remains closed and proprietary, so only other eAmod users could help you. If you think it's a problem with the client, then try to build your eAthena server to work with other client and see if you are lucky.
  16. jaBote

    Data

    Olá! Você já tentou a pasta data pré-renewal de Alexandria? Versão 3.0, deste tópico: http://herc.ws/board/topic/901-basic-complete-renewal-data-english-folder/ P.S.: Sorry for my bad Portuguese, I'm Spanish and I'm trying my best here, hehehe.
  17. Maybe there's been dupe somewhere in there?
  18. Use the second script, which is the same than the first except that it doesn't check for mapflags. That way any players who gets hit will get its SP deducted when hit by that weapon regardless of the environment.
  19. Yes, but don't expect it to work smoothly since there's still lots and lots of official information missing from Rebellion (nearly all of the skills if not all), but its basics are working.
  20. I don't like myself the EVERY hit part, but you could try this as your item script: { if(getmapflag(strcharinfo(3),mf_pvp) || getmapflag(strcharinfo(3),mf_gvg)) { bonus bSPVanishRate,1000,4; } } That is supposed to do that, in every hit in PvP or GvG (this includes WoE), target's SP will be reduced by 4% (this effect won't work on things such as @duel on a non-pvp map for example). If you want to reduce 4% SP with each hit regardless of where (remember monsters usually have 0 SP, they cast without SP restrictions), just make its script like this: { bonus bSPVanishRate,1000,4; } P.S.: Documentation says that for this bonus, 1000 means 100% (of hits in this particular case), but I'm not completely sure since in other things 100% is 10000. This is just matter of trial and error I think.
  21. The commands that start with a slash (I'll call them /commands) are just special. See this piece of text in conf/atcommand.conf (it's not in the best place but it's in the best one I can think of: (On that file you can customize your atcommand and charcommand symbols as you can see). While @commands makes you use commands by yourself, #commands basically makes commands used as if other player used them as @commands but you'll get its feedback. As you can see above, /commands are client commands and they are just parsed by the client. Most of them don't even interact with the server-side so you can't control them by any means except modifying the client EXE by yourself (quite a hard task). The few commands that are sent by the client to the server can be controlled (via permission system), so there's very little you can do here. About your second question, I'm not versed on regular expressions, so I can't be of much help there. Sorry!
  22. If I remember well, Haruna was making some upstream merges from rAthena. There's an open issue there on GitHub, but I don't know if the addmonsterdrop and delmonsterdrop rAthena commits were referenced as commits to merge.
  23. Most similar error I've ever got around that is when the server account and password weren't the same as in the DB, but when that error shows it's way more notorious. I mean, did you put the SAME userid and passwd in conf/char-server.conf, conf/map-server.conf and in the account that has the 'S' gender in the `login` table? Chances are you did good, but I can't find the issue ATM.
  24. We made a cleanup of status names so that our emulator has more resemblance to Aegis official server. This has led to some changes on the SC_ names in db/const.txt. If you want to see all of them, I've made an online comparation of these lists (new vs old names) as of July 27th which is still mostly up to date. Your statuses: SC_FIREWEAPONSC_WATERWEAPONSC_WINDWEAPONSC_EARTHWEAPON Are now called: SC_PROPERTYFIRESC_PROPERTYWATERSC_PROPERTYWINDSC_PROPERTYGROUND By checking that list. Just note that if you try to use a SC_ name that it's not in that list (the new ones) it'll default to 0, which you can see it's SC_STONE which means Stone Curse.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.