Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 03/31/23 in Posts

  1. 4 points
  2. So, if you believed I was done editing the game you probably shouldn't have. A while back, I downloaded the latest Korean GRF, which I periodically backport content from. I'd had my eye on a couple of the enemies from Ep19 for a while, but I never really had a place for them to go. There simply weren't any more useful maps to steal from Renewal, and the maps from Episode 19 are in a different format that my version of the game can't read. I was fiddling around with the Episode 19 maps to see if I could figure out how to get them to load, and I noticed the error just complains about the rsw file. So I tried subbing out the rsw for the new maps with one from an old map, and this does allow the maps to load, albeit in an extremely glitchy way. It turns out the problem is linked to the size of the map specified in the rsw, so I was able to get it to work by creating a new map in Browedit with the same dimensions, saving it, substituting the gat and gnd files for the ones from Episode 19, reopening it in Browedit, and saving it again. This produces a viable Episode 19 map that can be loaded in the old client. So now we have a new dungeon based on Episode 19, Nightmare Canyon: This area uses 1@jorchs and 1@jorlab and is located near Rachel. The monsters here have endgame-level power and a number of interesting cards, for example one adds a speed down effect to Provoke. I did a fair amount of fiddling around with the map editor to get this working and learned how to do a few new things, like changing the water colour (this is under windows -> water -> type). I think this purple water really helps enhance the atmosphere of this location. These areas beside the final walkway were actually not filled with water originally, I had to edit the stage geometry to create these pools. I also created a second new dungeon, this time a past version of Juperos. This allows you to visit the town of Verus. Incidentally, this required me to add some of the Juperos characters to the npc folder. These characters initially make noise, so I had to edit their sprites with act editor to remove the sound effects. You can proceed through Verus to reach the past version of Juperos core, which uses 1@mcd. This stage has many geometry edits to allow you to get through the whole thing (it has many walls, which I assume use NPCs to warp you around int he base game) You can fight the Limacinas here, which I think are neat enemies. They were incredibly hard to get working, though. Backporting enemy sprites from the new version of the game is easy, you just have to add them to jobname.lua and npcidentity.lua. However, Limacina is a shooter. It has a separate sprite file for its bullet, but for the life of me I couldn't figure out how to specify the name of their bullet file. It turns out that this is because you can't - the monster bullet sprites are hardcoded inside the client file. The only way to add a new bullet is to replace an existing one, and there aren't many. About the only shooters that aren't used in the base game are the Photon Cannon enemies. There's 4 of them, which means I can give shots to 4 enemies by stealing their enemy ids and renaming the bullets of the enemies to the name of the photon cannon bullets. So I had to make Limacina monster ID 1664, and its bullet is named canon_bullet.spr. This was an absolute pain in the neck, but it paid off. Limacina can shoot! As for the Photon Cannons, they're still in the game, but they no longer shoot. In fact, they don't attack at all. They instead simply cast spells. Monsters can use spells without having the "can attack" flag set, if those spells are set to be cast during idle state and on a random target. The boss of this area is Charleston 3. I had considered using this boss before, but I felt it didn't fit with any of the existing areas, but it works well here. It has a number of fun drops, but my favourite is this. This might be my new favourite weapon. It has this script: bonus bSplashRange,1; bonus4 bAutoSpellOnSkill,"GS_DUST","NC_FLAMELAUNCHER",1 + (getskilllv("GS_DUST")>=5) + (getskilllv("GS_DUST")==10),10000; bonus2 bSkillUseSPrate,"GS_DUST",100; There was a problem initially, though. When NC_Flamelauncher is used, it's suppose to show a cool flame animation, but it doesn't appear when using the above. After a ton of debugging, I discovered that this attack actually has a 2 stage animation - the animation of the flames is actually shown during the attack's casting animation, and then the animation of the target being burned occurs after the casting animation. In the script above, the casting animation never plays, so there's no flames. I fixed this by adding the following code to skill_castend_damage_id if (skill_id == NC_FLAMELAUNCHER && sd && sd->state.autocast) clif_skillcasting(src, src->id, bl->id, bl->x, bl->y, skill_id, skill_get_ele(skill_id, skill_lv), 1); Basically, this causes the game to show the cast animation for one frame whenever you use Flame Launcher, even if it wouldn't otherwise be shown. And it works: It's hard to capture how sick this looks in a still image, but it was well worth the effort to get it working. Finally, all this fiddling around with the map editor finally led me to solve something that had been a problem for a long time. When you create maps with Browedit, they don't automatically update the lightmaps, which leaves you with either the shadows the map started with or no shadows at all. You can create lights to cast shadows, but they create overly dark shadows that turn anything inside pure black. You can see this above when I posted a picture of the new Lutie map. After a bunch of tweaking, I figured out how to fix this. You have to go to Tools->Lightmap->Export, which will export the lightmap as a BMP. You can then edit the bitmap with paint, by altering the colour from black to gray. Then re-import the lightmap, and this is the result: Finally correct lightmaps! You can't tell this is a custom map anymore. I feel like I've solved almost all the mysteries of how to edit stuff in the game now, it now feels like there's very little I don't know how to edit, save for stuff that's locked to the client exe file. Kind of crazy when I think of how much I struggled with things at the beginning.
    2 points
  3. Nothing fancy here, just a pack of 35 cloth colours for male and female summoners, since in the distribution I had they didn't have any. To add this to your server, download the doram-palettes.grf from the bottom of the post, then find your data.ini (in your client folder) and add a line including this grf file, like so (the last line is the one you would add): [Data] 0=rathena_resources.grf 1=pre20190427.grf 2=renewal20190427.grf 3=palettes.grf 4=data.grf 5=rdata.grf 6=doram-palettes.grf You can also merge this into an existing grf file using GRF Editor if you prefer. If the "max_cloth_color" on your server is not 35, you'll also probably want this, this is a slightly modified version of the stylist npc who manually specifies the maximum number of palettes for Summoners. This should replace your npc/custom/stylist.txt //===== rAthena Script ======================================= //= Stylist //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.1 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= Changes your hair style, hair color, and cloth color. //===== Additional Comments: ================================= //= 1.0 Initial script. //= 1.1 Switched to 'getbattleflag', credits to Saithis. [Euphy] //= 1.2 Manually specified limits for Summoners [Tero] //============================================================ prontera,170,180,1 script Stylist#custom_stylist 122,{ mes "[Stylist]"; mes "Hey baby!"; mes "I can make you look fabulous!"; mes "Are you ready?"; if (Class == 4218 || Class == 4220) { setarray .@Styles[1], 35, 6, 8; setarray .@Look[1], LOOK_CLOTHES_COLOR, LOOK_HAIR, LOOK_HAIR_COLOR; set .@s, select(" ~ Cloth color: ~ Hairstyle: ~ Hair color"); set .@Revert, getlook(.@Look[.@s]); set .@Style,1; } else { setarray .@Styles[1], getbattleflag("max_cloth_color"), getbattleflag("max_hair_style"), getbattleflag("max_hair_color"); setarray .@Look[1], LOOK_CLOTHES_COLOR, LOOK_HAIR, LOOK_HAIR_COLOR; set .@s, select(" ~ Cloth color: ~ Hairstyle: ~ Hair color"); set .@Revert, getlook(.@Look[.@s]); set .@Style,1; } while(1) { setlook .@Look[.@s], .@Style; message strcharinfo(0),"This is style #"+.@Style+"."; set .@menu$, " ~ Next (^0055FF"+((.@Style!=.@Styles[.@s])?.@Style+1:1)+"^000000): ~ Previous (^0055FF"+((.@Style!=1)?.@Style-1:.@Styles[.@s])+"^000000): ~ Jump to...: ~ Revert to original (^0055FF"+.@Revert+"^000000)"; switch(select(.@menu$)) { case 1: set .@Style, ((.@Style != .@Styles[.@s]) ? .@Style+1 : 1); break; case 2: set .@Style, ((.@Style != 1) ? .@Style-1 : .@Styles[.@s]); break; case 3: message strcharinfo(0),"Choose a style between 1 - "+.@Styles[.@s]+"."; input .@Style,0,.@Styles[.@s]; if (!.@Style) set .@Style, rand(1,.@Styles[.@s]); break; case 4: set .@Style, .@Revert; setlook .@Look[.@s], .@Revert; break; } } } Enjoy colourful cats! doram-palettes.grf
    1 point
  4. Para lo del Doram. data\luafiles514\lua files\service_korea\ExternalSettings_kr.lub MakeableRace = { Doram = true } Cambia por false* Y sobre el signboardlist... solo borra de la lista los carteles que no quieres ver...
    1 point
  5. Use rand command before giving the item. Example: - script satan -1,{ OnNPCKillEvent: if ( killedrid != 31001 ) end; if ( getcharid(1) ) { getpartymember getcharid(1), 1; getpartymember getcharid(1), 2; for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) { // what happens if someone in the party member is offline =/ .@partymemberaid[.@c] = $@partymemberaid[.@i]; .@c++; } } //Party has 10% chance to get the item 45018 if (rand(100) < 10) getitem 45018, 1, .@partymemberaid[ rand( .@c ) ]; announce "Party ["+ strcharinfo(1) +"] has killed "+ getmonsterinfo( killedrid, MOB_NAME ) +" at "+ strcharinfo(3), 0; } else { //Players without party has 15% chance to get the item 45018 if (rand(100) < 15) getitem 45018, 1; announce "Player ["+ strcharinfo(0) +"] has killed "+ getmonsterinfo( killedrid, MOB_NAME ) +" at "+ strcharinfo(3), 0; } end; }
    1 point
  6. Me parece que no, creo que lo que puedes hacer esen el archivo externalSettings_kr.lub hay un apartado que dice MakeableRace = { Doram = true }, el cual puedes volver false, seguido, en WARP, puedes seleccionar este patch si gustas Creo que igual te sería más fácil desactivare ese botón desde WARP/NEMO Esos los encuentras en signboardlist.lub, dentro de tu carpeta RO\System, creo que puedes dejar en blanco el archivo y así no cargan esos chats de NPC
    1 point
  7. Aquí: https://github.com/llchrisll/ROenglishRE/blob/master/Renewal/data/luafiles514/lua files/signboardlist_f.lub
    1 point
  8. 1. make sure you can access that IP/domain webserver. Try open it with your browser your file_url and also root_url. 2. try disable https or SSL (if its auto or u enable it) for the subdomain or path for thor web server data.
    1 point
×
×
  • Create New...