Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 07/01/21 in all areas

  1. View File GRF Editor Hey everyone, This is a GRF tool I started to develop for my own personnal use, but I thought I'd share it since I've upgraded the UI. Its primary goal is to be easy to use while offering a wide variety of options and customizations. The software is quite stable and can handle large operations easily. How to install Download the zip archive provided from the download link at the bottom of this description or directly from there : http://www.mediafire.com/?aflylbhblrzpz0h Install the application with GRF Editor Installer.exe; if you are missing a .NET Framework you will be prompted to download it. Once you are done, you can start the program from the link on your desktop. Key features Overall speed is faster (or at least equal) than any GRF tool. Common operations : add, delete, merge, extract, preview, save. Undo and redo for any operation. It can open any GRF file. Clean and very interactive interface. Saving formats supported : 0x200, 0x103 and 0x102 (through the Settings page) and conversion to the Thor format. Instant filter and search options (example : "map .gat"). File association and context menus integration for .grf, .gpf, .rgz and .thor (through the Settings page). Can rebuild separated images into one file easily. Drag and drop (with the ALT key, can be modified in the Settings page). This is a big part of the software; most of the items can be moved around within the application itself or from/to Windows Explorer. Tools Sprite editor : a simple sprite editor with powerful features. Semi-transparent images can be added, you can easily change the order or replace images, etc. This tool can convert images in the wrong type by showing you multiple solutions (merging a new palette, dithering the image by using current palette, using the closest color, and a few more). Grf validation : allows you to validate a GRF with multiple settings. It can detect corrupted GRF entries, invalid sprites, empty files, non-GRF files, duplicate files and a lot more. Flat maps maker : generates flat maps from .gat and .rsw files. Useful to generate WoE maps or to fasten up the loading time. Patch maker : generates a GRF patch based on two different GRFs. Hash viewer : shows the hash code (both CRC32 and MD5) for files. Image converter : converts an image to any format requested (BMP, PNG, JPG, TGA). GrfCL : used to create batch files (.bat) which can automate tasks on GRF files. See the content in GrfCL.rar in the download for more information. This tool can be customized from the sources as well. Palette recolorer : creates new sprites by changing their colors (this tool is now deprecated). Client database editor : allows modifications of the database client files (txt and lua) with easy and simple tools. Work in progress. Grf encryption The encryption feature has been enabled again. It's similar to what it used to be and it has been tested on client versions ranging from 2012-08-01 to 2014-02-05. Some error messages will be displayed if necessary. If you have an issue, copy the error message (with the code, if there's one) and send me the client executable with the cps.dll file generated by GRF Editor. There shouldn't be compatibility issues anymore though! Thor files Thor files are patches used by Thor Patcher ( http://thor.aeomin.net/ ). Because of their similarity with the GRF file structure, they have been integrated within GRF Editor. The primary utility of this feature is that it allows you to add encrypted files to a Thor patch. All the other options can be achieved by using Thor Maker. You'll find the necessary steps below, but test your patches before sending them off to players (I've done a lot of testing on my end, but better be safe). If you're using SecureGRF, then make a new GRF, add the files and encrypt it. In GRF Editor, open the encrypted GRF you just made, use "Save as" and name the new file with a .thor extension. That's it, if you want to change the output directory, click on the root node of the project and select the tab "Container options". You can select the output mode and the GRF to merge the patch with. Simply save again if you change these properties. If you're using GRF Editor's encryption, then make a new Thor file (File > New > New Thor) and add the files you want to patch it with. Right-click on the files you want to encrypt and use Encryption > Encrypt. Technical stuff Requires .Net Framework 3.5 (SP1) Client Profile to run (3.5 or more will work as well). Automatically converts file name encoding to their proper values (you can change the encoding). Data virtualization is used as much as possible to preview files, meaning the files aren't completely loaded. Right-clicking an item will bring up the available options with that file. Preview file formats : txt, log, xml, lua, lub, bmp, png, tga, jpp, db, ebm, pal, gnd, rsw, gat, rsm, str, spr, act, imf, fna and wav. Services are "crash ready", meaning that you will be warned about a failed operation and no work will be lost (the application won't close and crash). It tries to continue operating even if it meets unsual conditions. Operations can be cancelled by clicking on the button near the progress bar. The warning level can be changed to avoid messages like "Please select a folder first." When prompted with an error, use Ctrl-C to copy the current dialog's content. Some screenshots! 1) Previewing an act file, while showing the search feature 2) Preview of a model file (rsm) 3) Preview of GrfCL with the MakeGrf command 4) Preview of maps 5) Preview of Grf validation 6) Search feature (press Ctrl-F or Ctrl-H to bring up within a text editor) Got a feedback? I'd gladly hear you out and fix issues you have with the program. Submitter Tokei Submitted 01/11/2013 Category GRF Files Video Content Author Tokeiburu  
    1 point
  2. Hello people, I'm Katakuri. I'm on a part of learning deeply on spriting and I hoped you like it. ----------------------------------------------------------------------------------------------------------------------------- Various headgears, monster & weapons from different anime. ----------------------------------------------------------------------------------------------------------------------------- 2020 Update Equipment Set for each job/classes Seven Deadly Sins - Sacred Treasure Weapons Monsters Vermilion Bird Suzaku Midgard's Bane Grordag the Twin Head Wounded Dragon Giant Rat - with Recolors Tailed Cape Squid Game Hoodie Attack on Titan - Faction Capes Elemental Garments Demon Slayers FREE RELEASE Owl Mask Link Chubby Meow Link Randoseru / School Bag (Japanese) Link Notes: 1. Sprites came from different game resources which I reworked to make it ROish looks. 2. I won't teach where to find raw image references of it. 3. I will always update this topic as I accomplished something new. 4. I'm newbie regards this matter but I always helping myself to get better. 4. Feel free to comment thanks. 5. If you want to contact me here's my discord. Katakuri#4880 For more works of mine kindly join us on our discord channel! Link: Click me for Discord Link!
    1 point
  3. Version 3.0

    17 downloads

    In response to this post : + two client requesting this Kindly message me if you want to buy this. By downloading this file, you agree with my Terms of Service: • You are not allowed remove my signature from any of the included files. • You are not allowed claim my work as yours. • I can give you support, kindly message me.
    60.00 USD
    1 point
  4. Version 1.0.0

    510 downloads

    *Don't forget to add required skill on your suit item skill "RK_DRAGONTRAINING",5; skill "NC_MADOLICENCE",5; Report all error/bugs in the forum post not in the PM for faster fix, Thanks! By downloading this file, you agree with my Terms of Service: • You are not allowed remove my signature from any of the included files. • You are not allowed claim my work as yours. • I can give you support, but please, do not message me. If you like it, give me a
    Free
    1 point
  5. Version 1.0.1

    41 downloads

    In response to this post : Kindly message me if you want to buy this. Report all error/bugs in the forum post not in the PM for faster fix, Thanks! By downloading this file, you agree with my Terms of Service: • You are not allowed remove my signature from any of the included files. • You are not allowed claim my work as yours. • I can give you support, but please, do not message me.
    60.00 USD
    1 point
  6. Version 1.0.1

    45 downloads

    Sample Video: https://drive.google.com/file/d/1vsVErqmxK-JADKQbMwbTgM_8Vv49LgIa/view?usp=sharing Kindly message me if you want to buy this. Report all error/bugs in the forum post not in the PM for faster fix, Thanks! By downloading this file, you agree with my Terms of Service: • You are not allowed remove my signature from any of the included files. • You are not allowed claim my work as yours. • I can give you support, but please, do not message me.
    60.00 USD
    1 point
  7. NPC and MVP for Ragnarok Online RE4 Merchant (npc) and Nemesis (mvp) from Resident Evil "Hello Strange" hahahha .. well ... it was funny
    1 point
  8. By default, it should inherit id: 5 name: "VIP" inherit: ( "Player" ) /* can do everything Players can */
    1 point
  9. Add them here VIP are group 5 https://github.com/rathena/rathena/blob/6a12857583c4747aacc1428feb47d717da2527c7/conf/groups.conf#L230
    1 point
  10. Hi, you can use mapflag noskill to disable all skills; https://github.com/rathena/rathena/blob/master/doc/mapflags.txt#L161 or create new zone with list of skills that shouldn't be used on current map https://github.com/rathena/rathena/blob/master/db/re/skill_nocast_db.txt for that you need mapflag restricted <zone> https://github.com/rathena/rathena/blob/master/doc/mapflags.txt#L167
    1 point
  11. Sample Music Project .•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•. Hello and hi!) My dear colleagues!) Honestly, I do not know if this is the first project of its kind, but it reached the point when I have something to show. I have noticed for a long time that there are enough musical instruments in RO, but there is no variability and the bards are rigidly driven into the framework of certain song skills. And what if, in the breaks between the endless standing in a party, casting «A Poem of Bragi», would they want to slightly improvise on favorite instruments? ~~~ About the SMP : ~~~ At the moment the "solo" command only calls up a certain sound sample, animation of the play on the instrument and emotion, which can be turned off together with the sound effects in the settings. It is collected exclusively for fun. For example, playing a show in a RO or conducting a meeting, you can create a background atmosphere. (!) All samples are taken from videos that demonstrate the sound of musical instruments on YouTube (!) The project consists of collected clean samples of musical instruments specially selected for the style of each instrument, so they can be easily distinguished from each other, even if it's another guitar. The length of the samples varies from 3 to 26 seconds, they are all collected in .wav format in good quality. (video quality is quite low, sorry) ~~~ A few statistics that are at the moment : ~~~ +) 821 ~1000 code lines for «@ solo» command activating samples that everyone can hear within the screen +) 282 355 music samples with 2753 3558 sec (~1 hour) of samples duration in total +) total weight about 500 mb in grf [In Video] 00:05 - Bass Guitar - 46 samples x 515 sec [In Video] 00:58 - Guitar - 17 samples x 155 sec - 21 samples x 274 sec [In Video] 01:47 - Burning Passion Guitar - 13 samples x 124 sec [In Video] 02:32 - Loner's Guitar - 9 samples x 99 sec - 17 samples x 155 sec [In Video] 03:15 - Gentle Breeze Guitar - 15 samples x 135 sec [In Video] 04:13 - Green Acre Guitar - 14 samples x 159 sec [In Video] 04:45 - Lute/Oriental Lute - 11 samples x 119 sec [In Video] 05:29 - Mandolin - 11 samples x 88 sec [In Video] 06:26 - Electric Guitar - 12 samples x 133 sec [In Video] 07:38 - Berserk Guitar - 17 samples x 147 sec [In Video] 08:42 - Cello - 20 samples x 210 sec [In Video] 09:48 - Violin - 26 samples x 211 sec [In Video] 10:52 - Gumoongoh - 21 samples x 197 sec [In Video] 12:09 - Harp, Harp of Nepenthes - 21 samples x 221 sec [In Video] 13:15 - Green Whistle - 18 samples x 129 sec [In Video] None - Contrabass - 11 samples x 111 sec - 16 samples x 169 sec [In Video] None - Oz's New Ukulele - 13 samples x 131 sec [In Video] None - Hippie Guitar - 30 samples x 295 sec [In Video] None - Brute Guitar - 13 samples x 146 sec ~~~ About the script part : ~~~ The script was tested on the emulator eAthena, because I was stuck in 2010. (There should be no difference with rA in the case of this command, please report if any) In src/common/mmo.hpp : (w0w!) find these two lines #define WEDDING_RING_M 2634 #define WEDDING_RING_F 2635 (w0w!) add after the variables // @solo #define GUITAR 1907 #define GUITAR2 1908 #define ELE_GUITAR 1913 #define BER_GUITAR 1920 #define BAS_GUITAR 1919 #define FIRE_GUITAR 1914 #define WATER_GUITAR 1915 #define EARTH_GUITAR 1916 #define WIND_GUITAR 1917 #define CELLO 1925 #define GUMOONGOH 1911 #define GUMOONGOH2 1912 #define HARP 1909 #define HARP2 1910 #define HARP_OF_NEP 1926 #define LUTE 1905 #define LUTE2 1906 #define ORI_LUTE 1918 #define ORI_LUTE2 1922 #define MANDOLIN 1903 #define MANDOLIN2 1904 #define VIOLIN 1901 #define VIOLIN2 1902 #define GREEN_WHISTLE 1930 #define CONTRABASS 1934 #define OZ_UKULELE 1935 #define HIPPIE_GUITAR 1944 #define BRUTE_GUITAR 32100 In src/map/atcommand.cpp : ACMD_FUNC(solo) { int nameid; struct item_data* id; if(sd->weapontype1==W_MUSICAL) { // Guitar if(pc_isequipped(sd, GUITAR) || pc_isequipped(sd, GUITAR2)) { if(!message || !*message || atoi(message)<1 || atoi(message)>21){ clif_displaymessage(fd, "usage: @solo 1-21"); return -1; } clif_emotion(&sd->bl, E_HO); clif_skill_nodamage(&sd->bl,&sd->bl,317,-1,1); if ( atoi(message) == 1 ) { clif_soundeffectall(&sd->bl, "gui01.wav", 0, AREA); } else if ( atoi(message) == 2 ) { clif_soundeffectall(&sd->bl, "gui02.wav", 0, AREA); } else if ( atoi(message) == 3 ) { clif_soundeffectall(&sd->bl, "gui03.wav", 0, AREA); } else if ( atoi(message) == 4 ) { clif_soundeffectall(&sd->bl, "gui04.wav", 0, AREA); } else if ( atoi(message) == 5 ) { clif_soundeffectall(&sd->bl, "gui05.wav", 0, AREA); } else if ( atoi(message) == 6 ) { clif_soundeffectall(&sd->bl, "gui06.wav", 0, AREA); } else if ( atoi(message) == 7 ) { clif_soundeffectall(&sd->bl, "gui07.wav", 0, AREA); } else if ( atoi(message) == 8 ) { clif_soundeffectall(&sd->bl, "gui08.wav", 0, AREA); } else if ( atoi(message) == 9 ) { clif_soundeffectall(&sd->bl, "gui09.wav", 0, AREA); } else if ( atoi(message) == 10 ) { clif_soundeffectall(&sd->bl, "gui10.wav", 0, AREA); } else if ( atoi(message) == 11 ) { clif_soundeffectall(&sd->bl, "gui11.wav", 0, AREA); } else if ( atoi(message) == 12 ) { clif_soundeffectall(&sd->bl, "gui12.wav", 0, AREA); } else if ( atoi(message) == 13 ) { clif_soundeffectall(&sd->bl, "gui13.wav", 0, AREA); } else if ( atoi(message) == 14 ) { clif_soundeffectall(&sd->bl, "gui14.wav", 0, AREA); } else if ( atoi(message) == 15 ) { clif_soundeffectall(&sd->bl, "gui15.wav", 0, AREA); } else if ( atoi(message) == 16 ) { clif_soundeffectall(&sd->bl, "gui16.wav", 0, AREA); } else if ( atoi(message) == 17 ) { clif_soundeffectall(&sd->bl, "gui17.wav", 0, AREA); } else if ( atoi(message) == 18 ) { clif_soundeffectall(&sd->bl, "gui18.wav", 0, AREA); } else if ( atoi(message) == 19 ) { clif_soundeffectall(&sd->bl, "gui19.wav", 0, AREA); } else if ( atoi(message) == 20 ) { clif_soundeffectall(&sd->bl, "gui20.wav", 0, AREA); } else if ( atoi(message) == 21 ) { clif_soundeffectall(&sd->bl, "gui21.wav", 0, AREA); } return 0; } // Electric Guitar else if(pc_isequipped(sd, ELE_GUITAR)) { if(!message || !*message || atoi(message)<1 || atoi(message)>12){ clif_displaymessage(fd, "usage: @solo 1-12"); return -1; } clif_emotion(&sd->bl, E_HO); clif_skill_nodamage(&sd->bl,&sd->bl,317,-1,1); if ( atoi(message) == 1 ) { clif_soundeffectall(&sd->bl, "ele01.wav", 0, AREA); } else if ( atoi(message) == 2 ) { clif_soundeffectall(&sd->bl, "ele02.wav", 0, AREA); } else if ( atoi(message) == 3 ) { clif_soundeffectall(&sd->bl, "ele03.wav", 0, AREA); } else if ( atoi(message) == 4 ) { clif_soundeffectall(&sd->bl, "ele04.wav", 0, AREA); } else if ( atoi(message) == 5 ) { clif_soundeffectall(&sd->bl, "ele05.wav", 0, AREA); } else if ( atoi(message) == 6 ) { clif_soundeffectall(&sd->bl, "ele06.wav", 0, AREA); } else if ( atoi(message) == 7 ) { clif_soundeffectall(&sd->bl, "ele07.wav", 0, AREA); } else if ( atoi(message) == 8 ) { clif_soundeffectall(&sd->bl, "ele08.wav", 0, AREA); } else if ( atoi(message) == 9 ) { clif_soundeffectall(&sd->bl, "ele09.wav", 0, AREA); } else if ( atoi(message) == 10 ) { clif_soundeffectall(&sd->bl, "ele10.wav", 0, AREA); } else if ( atoi(message) == 11 ) { clif_soundeffectall(&sd->bl, "ele11.wav", 0, AREA); } else if ( atoi(message) == 12 ) { clif_soundeffectall(&sd->bl, "ele12.wav", 0, AREA); } return 0; } // Berserk Guitar else if(pc_isequipped(sd, BER_GUITAR)) { if(!message || !*message || atoi(message)<1 || atoi(message)>17){ clif_displaymessage(fd, "usage: @solo 1-17"); return -1; } clif_emotion(&sd->bl, E_HO); clif_skill_nodamage(&sd->bl,&sd->bl,317,-1,1); if ( atoi(message) == 1 ) { clif_soundeffectall(&sd->bl, "ber01.wav", 0, AREA); } else if ( atoi(message) == 2 ) { clif_soundeffectall(&sd->bl, "ber02.wav", 0, AREA); } else if ( atoi(message) == 3 ) { clif_soundeffectall(&sd->bl, "ber03.wav", 0, AREA); } else if ( atoi(message) == 4 ) { clif_soundeffectall(&sd->bl, "ber04.wav", 0, AREA); } else if ( atoi(message) == 5 ) { clif_soundeffectall(&sd->bl, "ber05.wav", 0, AREA); } else if ( atoi(message) == 6 ) { clif_soundeffectall(&sd->bl, "ber06.wav", 0, AREA); } else if ( atoi(message) == 7 ) { clif_soundeffectall(&sd->bl, "ber07.wav", 0, AREA); } else if ( atoi(message) == 8 ) { clif_soundeffectall(&sd->bl, "ber08.wav", 0, AREA); } else if ( atoi(message) == 9 ) { clif_soundeffectall(&sd->bl, "ber09.wav", 0, AREA); } else if ( atoi(message) == 10 ) { clif_soundeffectall(&sd->bl, "ber10.wav", 0, AREA); } else if ( atoi(message) == 11 ) { clif_soundeffectall(&sd->bl, "ber11.wav", 0, AREA); } else if ( atoi(message) == 12 ) { clif_soundeffectall(&sd->bl, "ber12.wav", 0, AREA); } else if ( atoi(message) == 13 ) { clif_soundeffectall(&sd->bl, "ber13.wav", 0, AREA); } else if ( atoi(message) == 14 ) { clif_soundeffectall(&sd->bl, "ber14.wav", 0, AREA); } else if ( atoi(message) == 15 ) { clif_soundeffectall(&sd->bl, "ber15.wav", 0, AREA); } else if ( atoi(message) == 16 ) { clif_soundeffectall(&sd->bl, "ber16.wav", 0, AREA); } else if ( atoi(message) == 17 ) { clif_soundeffectall(&sd->bl, "ber17.wav", 0, AREA); } return 0; } // Bass Guitar else if(pc_isequipped(sd, BAS_GUITAR)) { if(!message || !*message || atoi(message)<1 || atoi(message)>46){ clif_displaymessage(fd, "usage: @solo 1-46"); return -1; } clif_emotion(&sd->bl, E_HO); clif_skill_nodamage(&sd->bl,&sd->bl,317,-1,1); if ( atoi(message) == 1 ) { clif_soundeffectall(&sd->bl, "bas01.wav", 0, AREA); clif_soundeffectall(&sd->bl, "bas01.wav", 0, AREA); } else if ( atoi(message) == 2 ) { clif_soundeffectall(&sd->bl, "bas02.wav", 0, AREA); clif_soundeffectall(&sd->bl, "bas02.wav", 0, AREA); } else if ( atoi(message) == 3 ) { clif_soundeffectall(&sd->bl, "bas03.wav", 0, AREA); } else if ( atoi(message) == 4 ) { clif_soundeffectall(&sd->bl, "bas04.wav", 0, AREA); } else if ( atoi(message) == 5 ) { clif_soundeffectall(&sd->bl, "bas05.wav", 0, AREA); } else if ( atoi(message) == 6 ) { clif_soundeffectall(&sd->bl, "bas06.wav", 0, AREA); } else if ( atoi(message) == 7 ) { clif_soundeffectall(&sd->bl, "bas07.wav", 0, AREA); clif_soundeffectall(&sd->bl, "bas07.wav", 0, AREA); } else if ( atoi(message) == 8 ) { clif_soundeffectall(&sd->bl, "bas08.wav", 0, AREA); clif_soundeffectall(&sd->bl, "bas08.wav", 0, AREA); } else if ( atoi(message) == 9 ) { clif_soundeffectall(&sd->bl, "bas09.wav", 0, AREA); clif_soundeffectall(&sd->bl, "bas09.wav", 0, AREA); } else if ( atoi(message) == 10 ) { clif_soundeffectall(&sd->bl, "bas10.wav", 0, AREA); } else if ( atoi(message) == 11 ) { clif_soundeffectall(&sd->bl, "bas11.wav", 0, AREA); } else if ( atoi(message) == 12 ) { clif_soundeffectall(&sd->bl, "bas12.wav", 0, AREA); } else if ( atoi(message) == 13 ) { clif_soundeffectall(&sd->bl, "bas13.wav", 0, AREA); } else if ( atoi(message) == 14 ) { clif_soundeffectall(&sd->bl, "bas14.wav", 0, AREA); } else if ( atoi(message) == 15 ) { clif_soundeffectall(&sd->bl, "bas15.wav", 0, AREA); } else if ( atoi(message) == 16 ) { clif_soundeffectall(&sd->bl, "bas16.wav", 0, AREA); } else if ( atoi(message) == 17 ) { clif_soundeffectall(&sd->bl, "bas17.wav", 0, AREA); clif_soundeffectall(&sd->bl, "bas17.wav", 0, AREA); } else if ( atoi(message) == 18 ) { clif_soundeffectall(&sd->bl, "bas18.wav", 0, AREA); clif_soundeffectall(&sd->bl, "bas18.wav", 0, AREA); } else if ( atoi(message) == 19 ) { clif_soundeffectall(&sd->bl, "bas19.wav", 0, AREA); } else if ( atoi(message) == 20 ) { clif_soundeffectall(&sd->bl, "bas20.wav", 0, AREA); } else if ( atoi(message) == 21 ) { clif_soundeffectall(&sd->bl, "bas21.wav", 0, AREA); } else if ( atoi(message) == 22 ) { clif_soundeffectall(&sd->bl, "bas22.wav", 0, AREA); } else if ( atoi(message) == 23 ) { clif_soundeffectall(&sd->bl, "bas23.wav", 0, AREA); } else if ( atoi(message) == 24 ) { clif_soundeffectall(&sd->bl, "bas24.wav", 0, AREA); } else if ( atoi(message) == 25 ) { clif_soundeffectall(&sd->bl, "bas25.wav", 0, AREA); clif_soundeffectall(&sd->bl, "bas25.wav", 0, AREA); } else if ( atoi(message) == 26 ) { clif_soundeffectall(&sd->bl, "bas26.wav", 0, AREA); } else if ( atoi(message) == 27 ) { clif_soundeffectall(&sd->bl, "bas27.wav", 0, AREA); } else if ( atoi(message) == 28 ) { clif_soundeffectall(&sd->bl, "bas28.wav", 0, AREA); } else if ( atoi(message) == 29 ) { clif_soundeffectall(&sd->bl, "bas29.wav", 0, AREA); } else if ( atoi(message) == 30 ) { clif_soundeffectall(&sd->bl, "bas30.wav", 0, AREA); } else if ( atoi(message) == 31 ) { clif_soundeffectall(&sd->bl, "bas31.wav", 0, AREA); clif_soundeffectall(&sd->bl, "bas31.wav", 0, AREA); } else if ( atoi(message) == 32 ) { clif_soundeffectall(&sd->bl, "bas32.wav", 0, AREA); } else if ( atoi(message) == 33 ) { clif_soundeffectall(&sd->bl, "bas33.wav", 0, AREA); } else if ( atoi(message) == 34 ) { clif_soundeffectall(&sd->bl, "bas34.wav", 0, AREA); } else if ( atoi(message) == 35 ) { clif_soundeffectall(&sd->bl, "bas35.wav", 0, AREA); } else if ( atoi(message) == 36 ) { clif_soundeffectall(&sd->bl, "bas36.wav", 0, AREA); } else if ( atoi(message) == 37 ) { clif_soundeffectall(&sd->bl, "bas37.wav", 0, AREA); } else if ( atoi(message) == 38 ) { clif_soundeffectall(&sd->bl, "bas38.wav", 0, AREA); } else if ( atoi(message) == 39 ) { clif_soundeffectall(&sd->bl, "bas39.wav", 0, AREA); } else if ( atoi(message) == 40 ) { clif_soundeffectall(&sd->bl, "bas40.wav", 0, AREA); } else if ( atoi(message) == 41 ) { clif_soundeffectall(&sd->bl, "bas41.wav", 0, AREA); } else if ( atoi(message) == 42 ) { clif_soundeffectall(&sd->bl, "bas42.wav", 0, AREA); } else if ( atoi(message) == 43 ) { clif_soundeffectall(&sd->bl, "bas43.wav", 0, AREA); } else if ( atoi(message) == 44 ) { clif_soundeffectall(&sd->bl, "bas44.wav", 0, AREA); } else if ( atoi(message) == 45 ) { clif_soundeffectall(&sd->bl, "bas45.wav", 0, AREA); } else if ( atoi(message) == 46 ) { clif_soundeffectall(&sd->bl, "bas46.wav", 0, AREA); } return 0; } // Burning Passion Guitar else if(pc_isequipped(sd, FIRE_GUITAR)) { if(!message || !*message || atoi(message)<1 || atoi(message)>13){ clif_displaymessage(fd, "usage: @solo 1-13"); return -1; } clif_emotion(&sd->bl, E_HO); clif_skill_nodamage(&sd->bl,&sd->bl,317,-1,1); if ( atoi(message) == 1 ) { clif_soundeffectall(&sd->bl, "pas01.wav", 0, AREA); } else if ( atoi(message) == 2 ) { clif_soundeffectall(&sd->bl, "pas02.wav", 0, AREA); } else if ( atoi(message) == 3 ) { clif_soundeffectall(&sd->bl, "pas03.wav", 0, AREA); } else if ( atoi(message) == 4 ) { clif_soundeffectall(&sd->bl, "pas04.wav", 0, AREA); } else if ( atoi(message) == 5 ) { clif_soundeffectall(&sd->bl, "pas05.wav", 0, AREA); } else if ( atoi(message) == 6 ) { clif_soundeffectall(&sd->bl, "pas06.wav", 0, AREA); } else if ( atoi(message) == 7 ) { clif_soundeffectall(&sd->bl, "pas07.wav", 0, AREA); } else if ( atoi(message) == 8 ) { clif_soundeffectall(&sd->bl, "pas08.wav", 0, AREA); } else if ( atoi(message) == 9 ) { clif_soundeffectall(&sd->bl, "pas09.wav", 0, AREA); } else if ( atoi(message) == 10 ) { clif_soundeffectall(&sd->bl, "pas10.wav", 0, AREA); } else if ( atoi(message) == 11 ) { clif_soundeffectall(&sd->bl, "pas11.wav", 0, AREA); } else if ( atoi(message) == 12 ) { clif_soundeffectall(&sd->bl, "pas12.wav", 0, AREA); } else if ( atoi(message) == 13 ) { clif_soundeffectall(&sd->bl, "pas13.wav", 0, AREA); } return 0; } // Loner's Guitar else if(pc_isequipped(sd, WATER_GUITAR)) { if(!message || !*message || atoi(message)<1 || atoi(message)>17){ clif_displaymessage(fd, "usage: @solo 1-17"); return -1; } clif_emotion(&sd->bl, E_HO); clif_skill_nodamage(&sd->bl,&sd->bl,317,-1,1); if ( atoi(message) == 1 ) { clif_soundeffectall(&sd->bl, "lon01.wav", 0, AREA); } else if ( atoi(message) == 2 ) { clif_soundeffectall(&sd->bl, "lon02.wav", 0, AREA); } else if ( atoi(message) == 3 ) { clif_soundeffectall(&sd->bl, "lon03.wav", 0, AREA); } else if ( atoi(message) == 4 ) { clif_soundeffectall(&sd->bl, "lon04.wav", 0, AREA); } else if ( atoi(message) == 5 ) { clif_soundeffectall(&sd->bl, "lon05.wav", 0, AREA); } else if ( atoi(message) == 6 ) { clif_soundeffectall(&sd->bl, "lon06.wav", 0, AREA); } else if ( atoi(message) == 7 ) { clif_soundeffectall(&sd->bl, "lon07.wav", 0, AREA); } else if ( atoi(message) == 8 ) { clif_soundeffectall(&sd->bl, "lon08.wav", 0, AREA); } else if ( atoi(message) == 9 ) { clif_soundeffectall(&sd->bl, "lon09.wav", 0, AREA); } else if ( atoi(message) == 10 ) { clif_soundeffectall(&sd->bl, "lon10.wav", 0, AREA); } else if ( atoi(message) == 11 ) { clif_soundeffectall(&sd->bl, "lon11.wav", 0, AREA); } else if ( atoi(message) == 12 ) { clif_soundeffectall(&sd->bl, "lon12.wav", 0, AREA); } else if ( atoi(message) == 13 ) { clif_soundeffectall(&sd->bl, "lon13.wav", 0, AREA); } else if ( atoi(message) == 14 ) { clif_soundeffectall(&sd->bl, "lon14.wav", 0, AREA); } else if ( atoi(message) == 15 ) { clif_soundeffectall(&sd->bl, "lon15.wav", 0, AREA); } else if ( atoi(message) == 16 ) { clif_soundeffectall(&sd->bl, "lon16.wav", 0, AREA); } else if ( atoi(message) == 17 ) { clif_soundeffectall(&sd->bl, "lon17.wav", 0, AREA); } return 0; } // Green Acre Guitar else if(pc_isequipped(sd, EARTH_GUITAR)) { if(!message || !*message || atoi(message)<1 || atoi(message)>14){ clif_displaymessage(fd, "usage: @solo 1-14"); return -1; } clif_emotion(&sd->bl, E_HO); clif_skill_nodamage(&sd->bl,&sd->bl,317,-1,1); if ( atoi(message) == 1 ) { clif_soundeffectall(&sd->bl, "acr01.wav", 0, AREA); } else if ( atoi(message) == 2 ) { clif_soundeffectall(&sd->bl, "acr02.wav", 0, AREA); } else if ( atoi(message) == 3 ) { clif_soundeffectall(&sd->bl, "acr03.wav", 0, AREA); } else if ( atoi(message) == 4 ) { clif_soundeffectall(&sd->bl, "acr04.wav", 0, AREA); } else if ( atoi(message) == 5 ) { clif_soundeffectall(&sd->bl, "acr05.wav", 0, AREA); } else if ( atoi(message) == 6 ) { clif_soundeffectall(&sd->bl, "acr06.wav", 0, AREA); } else if ( atoi(message) == 7 ) { clif_soundeffectall(&sd->bl, "acr07.wav", 0, AREA); } else if ( atoi(message) == 8 ) { clif_soundeffectall(&sd->bl, "acr08.wav", 0, AREA); } else if ( atoi(message) == 9 ) { clif_soundeffectall(&sd->bl, "acr09.wav", 0, AREA); } else if ( atoi(message) == 10 ) { clif_soundeffectall(&sd->bl, "acr10.wav", 0, AREA); } else if ( atoi(message) == 11 ) { clif_soundeffectall(&sd->bl, "acr11.wav", 0, AREA); } else if ( atoi(message) == 12 ) { clif_soundeffectall(&sd->bl, "acr12.wav", 0, AREA); } else if ( atoi(message) == 13 ) { clif_soundeffectall(&sd->bl, "acr13.wav", 0, AREA); } else if ( atoi(message) == 14 ) { clif_soundeffectall(&sd->bl, "acr14.wav", 0, AREA); } return 0; } // Gentle Breeze Guitar else if(pc_isequipped(sd, WIND_GUITAR)) { if(!message || !*message || atoi(message)<1 || atoi(message)>15){ clif_displaymessage(fd, "usage: @solo 1-15"); return -1; } clif_emotion(&sd->bl, E_HO); clif_skill_nodamage(&sd->bl,&sd->bl,317,-1,1); if ( atoi(message) == 1 ) { clif_soundeffectall(&sd->bl, "bre01.wav", 0, AREA); } else if ( atoi(message) == 2 ) { clif_soundeffectall(&sd->bl, "bre02.wav", 0, AREA); } else if ( atoi(message) == 3 ) { clif_soundeffectall(&sd->bl, "bre03.wav", 0, AREA); } else if ( atoi(message) == 4 ) { clif_soundeffectall(&sd->bl, "bre04.wav", 0, AREA); } else if ( atoi(message) == 5 ) { clif_soundeffectall(&sd->bl, "bre05.wav", 0, AREA); } else if ( atoi(message) == 6 ) { clif_soundeffectall(&sd->bl, "bre06.wav", 0, AREA); } else if ( atoi(message) == 7 ) { clif_soundeffectall(&sd->bl, "bre07.wav", 0, AREA); } else if ( atoi(message) == 8 ) { clif_soundeffectall(&sd->bl, "bre08.wav", 0, AREA); } else if ( atoi(message) == 9 ) { clif_soundeffectall(&sd->bl, "bre09.wav", 0, AREA); } else if ( atoi(message) == 10 ) { clif_soundeffectall(&sd->bl, "bre10.wav", 0, AREA); } else if ( atoi(message) == 11 ) { clif_soundeffectall(&sd->bl, "bre11.wav", 0, AREA); } else if ( atoi(message) == 12 ) { clif_soundeffectall(&sd->bl, "bre12.wav", 0, AREA); } else if ( atoi(message) == 13 ) { clif_soundeffectall(&sd->bl, "bre13.wav", 0, AREA); } else if ( atoi(message) == 14 ) { clif_soundeffectall(&sd->bl, "bre14.wav", 0, AREA); } else if ( atoi(message) == 15 ) { clif_soundeffectall(&sd->bl, "bre15.wav", 0, AREA); } return 0; } // Cello else if(pc_isequipped(sd, CELLO)) { if(!message || !*message || atoi(message)<1 || atoi(message)>20){ clif_displaymessage(fd, "usage: @solo 1-20"); return -1; } clif_emotion(&sd->bl, E_HO); clif_skill_nodamage(&sd->bl,&sd->bl,317,-1,1); if ( atoi(message) == 1 ) { clif_soundeffectall(&sd->bl, "cel01.wav", 0, AREA); clif_soundeffectall(&sd->bl, "cel01.wav", 0, AREA); } else if ( atoi(message) == 2 ) { clif_soundeffectall(&sd->bl, "cel02.wav", 0, AREA); clif_soundeffectall(&sd->bl, "cel02.wav", 0, AREA); } else if ( atoi(message) == 3 ) { clif_soundeffectall(&sd->bl, "cel03.wav", 0, AREA); } else if ( atoi(message) == 4 ) { clif_soundeffectall(&sd->bl, "cel04.wav", 0, AREA); } else if ( atoi(message) == 5 ) { clif_soundeffectall(&sd->bl, "cel05.wav", 0, AREA); } else if ( atoi(message) == 6 ) { clif_soundeffectall(&sd->bl, "cel06.wav", 0, AREA); clif_soundeffectall(&sd->bl, "cel06.wav", 0, AREA); } else if ( atoi(message) == 7 ) { clif_soundeffectall(&sd->bl, "cel07.wav", 0, AREA); } else if ( atoi(message) == 8 ) { clif_soundeffectall(&sd->bl, "cel08.wav", 0, AREA); } else if ( atoi(message) == 9 ) { clif_soundeffectall(&sd->bl, "cel09.wav", 0, AREA); clif_soundeffectall(&sd->bl, "cel09.wav", 0, AREA); } else if ( atoi(message) == 10 ) { clif_soundeffectall(&sd->bl, "cel10.wav", 0, AREA); } else if ( atoi(message) == 11 ) { clif_soundeffectall(&sd->bl, "cel11.wav", 0, AREA); clif_soundeffectall(&sd->bl, "cel11.wav", 0, AREA); } else if ( atoi(message) == 12 ) { clif_soundeffectall(&sd->bl, "cel12.wav", 0, AREA); clif_soundeffectall(&sd->bl, "cel12.wav", 0, AREA); } else if ( atoi(message) == 13 ) { clif_soundeffectall(&sd->bl, "cel13.wav", 0, AREA); clif_soundeffectall(&sd->bl, "cel13.wav", 0, AREA); } else if ( atoi(message) == 14 ) { clif_soundeffectall(&sd->bl, "cel14.wav", 0, AREA); clif_soundeffectall(&sd->bl, "cel14.wav", 0, AREA); } else if ( atoi(message) == 15 ) { clif_soundeffectall(&sd->bl, "cel15.wav", 0, AREA); clif_soundeffectall(&sd->bl, "cel15.wav", 0, AREA); } else if ( atoi(message) == 16 ) { clif_soundeffectall(&sd->bl, "cel16.wav", 0, AREA); clif_soundeffectall(&sd->bl, "cel16.wav", 0, AREA); } else if ( atoi(message) == 17 ) { clif_soundeffectall(&sd->bl, "cel17.wav", 0, AREA); } else if ( atoi(message) == 18 ) { clif_soundeffectall(&sd->bl, "cel18.wav", 0, AREA); clif_soundeffectall(&sd->bl, "cel18.wav", 0, AREA); } else if ( atoi(message) == 19 ) { clif_soundeffectall(&sd->bl, "cel19.wav", 0, AREA); clif_soundeffectall(&sd->bl, "cel19.wav", 0, AREA); } else if ( atoi(message) == 20 ) { clif_soundeffectall(&sd->bl, "cel20.wav", 0, AREA); } return 0; } // Gumoongoh else if(pc_isequipped(sd, GUMOONGOH) || pc_isequipped(sd, GUMOONGOH2)) { if(!message || !*message || atoi(message)<1 || atoi(message)>21){ clif_displaymessage(fd, "usage: @solo 1-21"); return -1; } clif_emotion(&sd->bl, E_HO); clif_skill_nodamage(&sd->bl,&sd->bl,317,-1,1); if ( atoi(message) == 1 ) { clif_soundeffectall(&sd->bl, "geo01.wav", 0, AREA); } else if ( atoi(message) == 2 ) { clif_soundeffectall(&sd->bl, "geo02.wav", 0, AREA); } else if ( atoi(message) == 3 ) { clif_soundeffectall(&sd->bl, "geo03.wav", 0, AREA); } else if ( atoi(message) == 4 ) { clif_soundeffectall(&sd->bl, "geo04.wav", 0, AREA); } else if ( atoi(message) == 5 ) { clif_soundeffectall(&sd->bl, "geo05.wav", 0, AREA); } else if ( atoi(message) == 6 ) { clif_soundeffectall(&sd->bl, "geo06.wav", 0, AREA); } else if ( atoi(message) == 7 ) { clif_soundeffectall(&sd->bl, "geo07.wav", 0, AREA); } else if ( atoi(message) == 8 ) { clif_soundeffectall(&sd->bl, "geo08.wav", 0, AREA); } else if ( atoi(message) == 9 ) { clif_soundeffectall(&sd->bl, "geo09.wav", 0, AREA); } else if ( atoi(message) == 10 ) { clif_soundeffectall(&sd->bl, "geo10.wav", 0, AREA); } else if ( atoi(message) == 11 ) { clif_soundeffectall(&sd->bl, "geo11.wav", 0, AREA); clif_soundeffectall(&sd->bl, "geo11.wav", 0, AREA); } else if ( atoi(message) == 12 ) { clif_soundeffectall(&sd->bl, "geo12.wav", 0, AREA); clif_soundeffectall(&sd->bl, "geo12.wav", 0, AREA); } else if ( atoi(message) == 13 ) { clif_soundeffectall(&sd->bl, "geo13.wav", 0, AREA); clif_soundeffectall(&sd->bl, "geo13.wav", 0, AREA); } else if ( atoi(message) == 14 ) { clif_soundeffectall(&sd->bl, "geo14.wav", 0, AREA); clif_soundeffectall(&sd->bl, "geo14.wav", 0, AREA); } else if ( atoi(message) == 15 ) { clif_soundeffectall(&sd->bl, "geo15.wav", 0, AREA); clif_soundeffectall(&sd->bl, "geo15.wav", 0, AREA); } else if ( atoi(message) == 16 ) { clif_soundeffectall(&sd->bl, "geo16.wav", 0, AREA); clif_soundeffectall(&sd->bl, "geo16.wav", 0, AREA); } else if ( atoi(message) == 17 ) { clif_soundeffectall(&sd->bl, "geo17.wav", 0, AREA); clif_soundeffectall(&sd->bl, "geo17.wav", 0, AREA); } else if ( atoi(message) == 18 ) { clif_soundeffectall(&sd->bl, "geo18.wav", 0, AREA); clif_soundeffectall(&sd->bl, "geo18.wav", 0, AREA); } else if ( atoi(message) == 19 ) { clif_soundeffectall(&sd->bl, "geo19.wav", 0, AREA); clif_soundeffectall(&sd->bl, "geo19.wav", 0, AREA); } else if ( atoi(message) == 20 ) { clif_soundeffectall(&sd->bl, "geo20.wav", 0, AREA); clif_soundeffectall(&sd->bl, "geo20.wav", 0, AREA); } else if ( atoi(message) == 21 ) { clif_soundeffectall(&sd->bl, "geo21.wav", 0, AREA); clif_soundeffectall(&sd->bl, "geo21.wav", 0, AREA); } return 0; } // Harp else if(pc_isequipped(sd, HARP) || pc_isequipped(sd, HARP2) || pc_isequipped(sd, HARP_OF_NEP)) { if(!message || !*message || atoi(message)<1 || atoi(message)>21){ clif_displaymessage(fd, "usage: @solo 1-21"); return -1; } clif_emotion(&sd->bl, E_HO); clif_skill_nodamage(&sd->bl,&sd->bl,317,-1,1); if ( atoi(message) == 1 ) { clif_soundeffectall(&sd->bl, "har01.wav", 0, AREA); clif_soundeffectall(&sd->bl, "har01.wav", 0, AREA); } else if ( atoi(message) == 2 ) { clif_soundeffectall(&sd->bl, "har02.wav", 0, AREA); clif_soundeffectall(&sd->bl, "har02.wav", 0, AREA); } else if ( atoi(message) == 3 ) { clif_soundeffectall(&sd->bl, "har03.wav", 0, AREA); clif_soundeffectall(&sd->bl, "har03.wav", 0, AREA); } else if ( atoi(message) == 4 ) { clif_soundeffectall(&sd->bl, "har04.wav", 0, AREA); } else if ( atoi(message) == 5 ) { clif_soundeffectall(&sd->bl, "har05.wav", 0, AREA); } else if ( atoi(message) == 6 ) { clif_soundeffectall(&sd->bl, "har06.wav", 0, AREA); clif_soundeffectall(&sd->bl, "har06.wav", 0, AREA); } else if ( atoi(message) == 7 ) { clif_soundeffectall(&sd->bl, "har07.wav", 0, AREA); clif_soundeffectall(&sd->bl, "har07.wav", 0, AREA); } else if ( atoi(message) == 8 ) { clif_soundeffectall(&sd->bl, "har08.wav", 0, AREA); clif_soundeffectall(&sd->bl, "har08.wav", 0, AREA); } else if ( atoi(message) == 9 ) { clif_soundeffectall(&sd->bl, "har09.wav", 0, AREA); clif_soundeffectall(&sd->bl, "har09.wav", 0, AREA); } else if ( atoi(message) == 10 ) { clif_soundeffectall(&sd->bl, "har10.wav", 0, AREA); clif_soundeffectall(&sd->bl, "har10.wav", 0, AREA); } else if ( atoi(message) == 11 ) { clif_soundeffectall(&sd->bl, "har11.wav", 0, AREA); clif_soundeffectall(&sd->bl, "har11.wav", 0, AREA); } else if ( atoi(message) == 12 ) { clif_soundeffectall(&sd->bl, "har12.wav", 0, AREA); } else if ( atoi(message) == 13 ) { clif_soundeffectall(&sd->bl, "har13.wav", 0, AREA); clif_soundeffectall(&sd->bl, "har13.wav", 0, AREA); } else if ( atoi(message) == 14 ) { clif_soundeffectall(&sd->bl, "har14.wav", 0, AREA); clif_soundeffectall(&sd->bl, "har14.wav", 0, AREA); } else if ( atoi(message) == 15 ) { clif_soundeffectall(&sd->bl, "har15.wav", 0, AREA); } else if ( atoi(message) == 16 ) { clif_soundeffectall(&sd->bl, "har16.wav", 0, AREA); } else if ( atoi(message) == 17 ) { clif_soundeffectall(&sd->bl, "har17.wav", 0, AREA); } else if ( atoi(message) == 18 ) { clif_soundeffectall(&sd->bl, "har18.wav", 0, AREA); clif_soundeffectall(&sd->bl, "har18.wav", 0, AREA); } else if ( atoi(message) == 19 ) { clif_soundeffectall(&sd->bl, "har19.wav", 0, AREA); clif_soundeffectall(&sd->bl, "har19.wav", 0, AREA); } else if ( atoi(message) == 20 ) { clif_soundeffectall(&sd->bl, "har20.wav", 0, AREA); clif_soundeffectall(&sd->bl, "har20.wav", 0, AREA); } else if ( atoi(message) == 21 ) { clif_soundeffectall(&sd->bl, "har21.wav", 0, AREA); clif_soundeffectall(&sd->bl, "har21.wav", 0, AREA); } return 0; } // Lute else if(pc_isequipped(sd, LUTE) || pc_isequipped(sd, LUTE2) || pc_isequipped(sd, ORI_LUTE) || pc_isequipped(sd, ORI_LUTE2)) { if(!message || !*message || atoi(message)<1 || atoi(message)>11){ clif_displaymessage(fd, "usage: @solo 1-11"); return -1; } clif_emotion(&sd->bl, E_HO); clif_skill_nodamage(&sd->bl,&sd->bl,317,-1,1); if ( atoi(message) == 1 ) { clif_soundeffectall(&sd->bl, "lut01.wav", 0, AREA); clif_soundeffectall(&sd->bl, "lut01.wav", 0, AREA); } else if ( atoi(message) == 2 ) { clif_soundeffectall(&sd->bl, "lut02.wav", 0, AREA); clif_soundeffectall(&sd->bl, "lut02.wav", 0, AREA); } else if ( atoi(message) == 3 ) { clif_soundeffectall(&sd->bl, "lut03.wav", 0, AREA); clif_soundeffectall(&sd->bl, "lut03.wav", 0, AREA); } else if ( atoi(message) == 4 ) { clif_soundeffectall(&sd->bl, "lut04.wav", 0, AREA); clif_soundeffectall(&sd->bl, "lut04.wav", 0, AREA); } else if ( atoi(message) == 5 ) { clif_soundeffectall(&sd->bl, "lut05.wav", 0, AREA); clif_soundeffectall(&sd->bl, "lut05.wav", 0, AREA); } else if ( atoi(message) == 6 ) { clif_soundeffectall(&sd->bl, "lut06.wav", 0, AREA); clif_soundeffectall(&sd->bl, "lut06.wav", 0, AREA); } else if ( atoi(message) == 7 ) { clif_soundeffectall(&sd->bl, "lut07.wav", 0, AREA); clif_soundeffectall(&sd->bl, "lut07.wav", 0, AREA); } else if ( atoi(message) == 8 ) { clif_soundeffectall(&sd->bl, "lut08.wav", 0, AREA); clif_soundeffectall(&sd->bl, "lut08.wav", 0, AREA); } else if ( atoi(message) == 9 ) { clif_soundeffectall(&sd->bl, "lut09.wav", 0, AREA); clif_soundeffectall(&sd->bl, "lut09.wav", 0, AREA); } else if ( atoi(message) == 10 ) { clif_soundeffectall(&sd->bl, "lut10.wav", 0, AREA); clif_soundeffectall(&sd->bl, "lut10.wav", 0, AREA); } else if ( atoi(message) == 11 ) { clif_soundeffectall(&sd->bl, "lut11.wav", 0, AREA); clif_soundeffectall(&sd->bl, "lut11.wav", 0, AREA); } return 0; } // Mandolin else if(pc_isequipped(sd, MANDOLIN) || pc_isequipped(sd, MANDOLIN2)) { if(!message || !*message || atoi(message)<1 || atoi(message)>11){ clif_displaymessage(fd, "usage: @solo 1-11"); return -1; } clif_emotion(&sd->bl, E_HO); clif_skill_nodamage(&sd->bl,&sd->bl,317,-1,1); if ( atoi(message) == 1 ) { clif_soundeffectall(&sd->bl, "man01.wav", 0, AREA); } else if ( atoi(message) == 2 ) { clif_soundeffectall(&sd->bl, "man02.wav", 0, AREA); } else if ( atoi(message) == 3 ) { clif_soundeffectall(&sd->bl, "man03.wav", 0, AREA); } else if ( atoi(message) == 4 ) { clif_soundeffectall(&sd->bl, "man04.wav", 0, AREA); } else if ( atoi(message) == 5 ) { clif_soundeffectall(&sd->bl, "man05.wav", 0, AREA); } else if ( atoi(message) == 6 ) { clif_soundeffectall(&sd->bl, "man06.wav", 0, AREA); } else if ( atoi(message) == 7 ) { clif_soundeffectall(&sd->bl, "man07.wav", 0, AREA); } else if ( atoi(message) == 8 ) { clif_soundeffectall(&sd->bl, "man08.wav", 0, AREA); } else if ( atoi(message) == 9 ) { clif_soundeffectall(&sd->bl, "man09.wav", 0, AREA); } else if ( atoi(message) == 10 ) { clif_soundeffectall(&sd->bl, "man10.wav", 0, AREA); } else if ( atoi(message) == 11 ) { clif_soundeffectall(&sd->bl, "man11.wav", 0, AREA); } return 0; } // Violin else if(pc_isequipped(sd, VIOLIN) || pc_isequipped(sd, VIOLIN2)) { if(!message || !*message || atoi(message)<1 || atoi(message)>26){ clif_displaymessage(fd, "usage: @solo 1-26"); return -1; } clif_emotion(&sd->bl, E_HO); clif_skill_nodamage(&sd->bl,&sd->bl,317,-1,1); if ( atoi(message) == 1 ) { clif_soundeffectall(&sd->bl, "vio01.wav", 0, AREA); clif_soundeffectall(&sd->bl, "vio01.wav", 0, AREA); } else if ( atoi(message) == 2 ) { clif_soundeffectall(&sd->bl, "vio02.wav", 0, AREA); clif_soundeffectall(&sd->bl, "vio02.wav", 0, AREA); } else if ( atoi(message) == 3 ) { clif_soundeffectall(&sd->bl, "vio03.wav", 0, AREA); clif_soundeffectall(&sd->bl, "vio03.wav", 0, AREA); } else if ( atoi(message) == 4 ) { clif_soundeffectall(&sd->bl, "vio04.wav", 0, AREA); clif_soundeffectall(&sd->bl, "vio04.wav", 0, AREA); } else if ( atoi(message) == 5 ) { clif_soundeffectall(&sd->bl, "vio05.wav", 0, AREA); clif_soundeffectall(&sd->bl, "vio05.wav", 0, AREA); } else if ( atoi(message) == 6 ) { clif_soundeffectall(&sd->bl, "vio06.wav", 0, AREA); clif_soundeffectall(&sd->bl, "vio06.wav", 0, AREA); } else if ( atoi(message) == 7 ) { clif_soundeffectall(&sd->bl, "vio07.wav", 0, AREA); clif_soundeffectall(&sd->bl, "vio07.wav", 0, AREA); } else if ( atoi(message) == 8 ) { clif_soundeffectall(&sd->bl, "vio08.wav", 0, AREA); clif_soundeffectall(&sd->bl, "vio08.wav", 0, AREA); } else if ( atoi(message) == 9 ) { clif_soundeffectall(&sd->bl, "vio09.wav", 0, AREA); clif_soundeffectall(&sd->bl, "vio09.wav", 0, AREA); } else if ( atoi(message) == 10 ) { clif_soundeffectall(&sd->bl, "vio10.wav", 0, AREA); clif_soundeffectall(&sd->bl, "vio10.wav", 0, AREA); } else if ( atoi(message) == 11 ) { clif_soundeffectall(&sd->bl, "vio11.wav", 0, AREA); clif_soundeffectall(&sd->bl, "vio11.wav", 0, AREA); } else if ( atoi(message) == 12 ) { clif_soundeffectall(&sd->bl, "vio12.wav", 0, AREA); clif_soundeffectall(&sd->bl, "vio12.wav", 0, AREA); } else if ( atoi(message) == 13 ) { clif_soundeffectall(&sd->bl, "vio13.wav", 0, AREA); clif_soundeffectall(&sd->bl, "vio13.wav", 0, AREA); } else if ( atoi(message) == 14 ) { clif_soundeffectall(&sd->bl, "vio14.wav", 0, AREA); clif_soundeffectall(&sd->bl, "vio14.wav", 0, AREA); } else if ( atoi(message) == 15 ) { clif_soundeffectall(&sd->bl, "vio15.wav", 0, AREA); clif_soundeffectall(&sd->bl, "vio15.wav", 0, AREA); } else if ( atoi(message) == 16 ) { clif_soundeffectall(&sd->bl, "vio16.wav", 0, AREA); clif_soundeffectall(&sd->bl, "vio16.wav", 0, AREA); } else if ( atoi(message) == 17 ) { clif_soundeffectall(&sd->bl, "vio17.wav", 0, AREA); } else if ( atoi(message) == 18 ) { clif_soundeffectall(&sd->bl, "vio18.wav", 0, AREA); } else if ( atoi(message) == 19 ) { clif_soundeffectall(&sd->bl, "vio19.wav", 0, AREA); } else if ( atoi(message) == 20 ) { clif_soundeffectall(&sd->bl, "vio20.wav", 0, AREA); } else if ( atoi(message) == 21 ) { clif_soundeffectall(&sd->bl, "vio21.wav", 0, AREA); } else if ( atoi(message) == 22 ) { clif_soundeffectall(&sd->bl, "vio22.wav", 0, AREA); } else if ( atoi(message) == 23 ) { clif_soundeffectall(&sd->bl, "vio23.wav", 0, AREA); } else if ( atoi(message) == 24 ) { clif_soundeffectall(&sd->bl, "vio24.wav", 0, AREA); } else if ( atoi(message) == 25 ) { clif_soundeffectall(&sd->bl, "vio25.wav", 0, AREA); } else if ( atoi(message) == 26 ) { clif_soundeffectall(&sd->bl, "vio26.wav", 0, AREA); } return 0; } // Green Whistle else if(pc_isequipped(sd, GREEN_WHISTLE)) { if(!message || !*message || atoi(message)<1 || atoi(message)>18){ clif_displaymessage(fd, "usage: @solo 1-18"); return -1; } clif_emotion(&sd->bl, E_HO); clif_skill_nodamage(&sd->bl,&sd->bl,317,-1,1); if ( atoi(message) == 1 ) { clif_soundeffectall(&sd->bl, "gre01.wav", 0, AREA); } else if ( atoi(message) == 2 ) { clif_soundeffectall(&sd->bl, "gre02.wav", 0, AREA); } else if ( atoi(message) == 3 ) { clif_soundeffectall(&sd->bl, "gre03.wav", 0, AREA); } else if ( atoi(message) == 4 ) { clif_soundeffectall(&sd->bl, "gre04.wav", 0, AREA); } else if ( atoi(message) == 5 ) { clif_soundeffectall(&sd->bl, "gre05.wav", 0, AREA); } else if ( atoi(message) == 6 ) { clif_soundeffectall(&sd->bl, "gre06.wav", 0, AREA); } else if ( atoi(message) == 7 ) { clif_soundeffectall(&sd->bl, "gre07.wav", 0, AREA); } else if ( atoi(message) == 8 ) { clif_soundeffectall(&sd->bl, "gre08.wav", 0, AREA); } else if ( atoi(message) == 9 ) { clif_soundeffectall(&sd->bl, "gre09.wav", 0, AREA); } else if ( atoi(message) == 10 ) { clif_soundeffectall(&sd->bl, "gre10.wav", 0, AREA); } else if ( atoi(message) == 11 ) { clif_soundeffectall(&sd->bl, "gre11.wav", 0, AREA); } else if ( atoi(message) == 12 ) { clif_soundeffectall(&sd->bl, "gre12.wav", 0, AREA); } else if ( atoi(message) == 13 ) { clif_soundeffectall(&sd->bl, "gre13.wav", 0, AREA); } else if ( atoi(message) == 14 ) { clif_soundeffectall(&sd->bl, "gre14.wav", 0, AREA); } else if ( atoi(message) == 15 ) { clif_soundeffectall(&sd->bl, "gre15.wav", 0, AREA); } else if ( atoi(message) == 16 ) { clif_soundeffectall(&sd->bl, "gre16.wav", 0, AREA); } else if ( atoi(message) == 17 ) { clif_soundeffectall(&sd->bl, "gre17.wav", 0, AREA); } else if ( atoi(message) == 18 ) { clif_soundeffectall(&sd->bl, "gre18.wav", 0, AREA); } return 0; } // Contrabass else if(pc_isequipped(sd, CONTRABASS)) { if(!message || !*message || atoi(message)<1 || atoi(message)>16){ clif_displaymessage(fd, "usage: @solo 1-16"); return -1; } clif_emotion(&sd->bl, E_HO); clif_skill_nodamage(&sd->bl,&sd->bl,317,-1,1); if ( atoi(message) == 1 ) { clif_soundeffectall(&sd->bl, "con01.wav", 0, AREA); } else if ( atoi(message) == 2 ) { clif_soundeffectall(&sd->bl, "con02.wav", 0, AREA); } else if ( atoi(message) == 3 ) { clif_soundeffectall(&sd->bl, "con03.wav", 0, AREA); } else if ( atoi(message) == 4 ) { clif_soundeffectall(&sd->bl, "con04.wav", 0, AREA); } else if ( atoi(message) == 5 ) { clif_soundeffectall(&sd->bl, "con05.wav", 0, AREA); } else if ( atoi(message) == 6 ) { clif_soundeffectall(&sd->bl, "con06.wav", 0, AREA); } else if ( atoi(message) == 7 ) { clif_soundeffectall(&sd->bl, "con07.wav", 0, AREA); } else if ( atoi(message) == 8 ) { clif_soundeffectall(&sd->bl, "con08.wav", 0, AREA); } else if ( atoi(message) == 9 ) { clif_soundeffectall(&sd->bl, "con09.wav", 0, AREA); } else if ( atoi(message) == 10 ) { clif_soundeffectall(&sd->bl, "con10.wav", 0, AREA); } else if ( atoi(message) == 11 ) { clif_soundeffectall(&sd->bl, "con11.wav", 0, AREA); } else if ( atoi(message) == 12 ) { clif_soundeffectall(&sd->bl, "con12.wav", 0, AREA); } else if ( atoi(message) == 13 ) { clif_soundeffectall(&sd->bl, "con13.wav", 0, AREA); } else if ( atoi(message) == 14 ) { clif_soundeffectall(&sd->bl, "con14.wav", 0, AREA); } else if ( atoi(message) == 15 ) { clif_soundeffectall(&sd->bl, "con15.wav", 0, AREA); } else if ( atoi(message) == 16 ) { clif_soundeffectall(&sd->bl, "con16.wav", 0, AREA); } return 0; } // Oz's New Ukulele else if(pc_isequipped(sd, OZ_UKULELE)) { if(!message || !*message || atoi(message)<1 || atoi(message)>13){ clif_displaymessage(fd, "usage: @solo 1-13"); return -1; } clif_emotion(&sd->bl, E_HO); clif_skill_nodamage(&sd->bl,&sd->bl,317,-1,1); if ( atoi(message) == 1 ) { clif_soundeffectall(&sd->bl, "ozs01.wav", 0, AREA); } else if ( atoi(message) == 2 ) { clif_soundeffectall(&sd->bl, "ozs02.wav", 0, AREA); } else if ( atoi(message) == 3 ) { clif_soundeffectall(&sd->bl, "ozs03.wav", 0, AREA); } else if ( atoi(message) == 4 ) { clif_soundeffectall(&sd->bl, "ozs04.wav", 0, AREA); } else if ( atoi(message) == 5 ) { clif_soundeffectall(&sd->bl, "ozs05.wav", 0, AREA); } else if ( atoi(message) == 6 ) { clif_soundeffectall(&sd->bl, "ozs06.wav", 0, AREA); } else if ( atoi(message) == 7 ) { clif_soundeffectall(&sd->bl, "ozs07.wav", 0, AREA); } else if ( atoi(message) == 8 ) { clif_soundeffectall(&sd->bl, "ozs08.wav", 0, AREA); } else if ( atoi(message) == 9 ) { clif_soundeffectall(&sd->bl, "ozs09.wav", 0, AREA); } else if ( atoi(message) == 10 ) { clif_soundeffectall(&sd->bl, "ozs10.wav", 0, AREA); } else if ( atoi(message) == 11 ) { clif_soundeffectall(&sd->bl, "ozs11.wav", 0, AREA); } else if ( atoi(message) == 12 ) { clif_soundeffectall(&sd->bl, "ozs12.wav", 0, AREA); } else if ( atoi(message) == 13 ) { clif_soundeffectall(&sd->bl, "ozs13.wav", 0, AREA); } return 0; } // Hippie Guitar else if(pc_isequipped(sd, HIPPIE_GUITAR)) { if(!message || !*message || atoi(message)<1 || atoi(message)>30){ clif_displaymessage(fd, "usage: @solo 1-30"); return -1; } clif_emotion(&sd->bl, E_HO); clif_skill_nodamage(&sd->bl,&sd->bl,317,-1,1); if ( atoi(message) == 1 ) { clif_soundeffectall(&sd->bl, "hip01.wav", 0, AREA); } else if ( atoi(message) == 2 ) { clif_soundeffectall(&sd->bl, "hip02.wav", 0, AREA); } else if ( atoi(message) == 3 ) { clif_soundeffectall(&sd->bl, "hip03.wav", 0, AREA); } else if ( atoi(message) == 4 ) { clif_soundeffectall(&sd->bl, "hip04.wav", 0, AREA); } else if ( atoi(message) == 5 ) { clif_soundeffectall(&sd->bl, "hip05.wav", 0, AREA); } else if ( atoi(message) == 6 ) { clif_soundeffectall(&sd->bl, "hip06.wav", 0, AREA); } else if ( atoi(message) == 7 ) { clif_soundeffectall(&sd->bl, "hip07.wav", 0, AREA); } else if ( atoi(message) == 8 ) { clif_soundeffectall(&sd->bl, "hip08.wav", 0, AREA); } else if ( atoi(message) == 9 ) { clif_soundeffectall(&sd->bl, "hip09.wav", 0, AREA); } else if ( atoi(message) == 10 ) { clif_soundeffectall(&sd->bl, "hip10.wav", 0, AREA); } else if ( atoi(message) == 11 ) { clif_soundeffectall(&sd->bl, "hip11.wav", 0, AREA); } else if ( atoi(message) == 12 ) { clif_soundeffectall(&sd->bl, "hip12.wav", 0, AREA); } else if ( atoi(message) == 13 ) { clif_soundeffectall(&sd->bl, "hip13.wav", 0, AREA); } else if ( atoi(message) == 14 ) { clif_soundeffectall(&sd->bl, "hip14.wav", 0, AREA); } else if ( atoi(message) == 15 ) { clif_soundeffectall(&sd->bl, "hip15.wav", 0, AREA); } else if ( atoi(message) == 16 ) { clif_soundeffectall(&sd->bl, "hip16.wav", 0, AREA); } else if ( atoi(message) == 17 ) { clif_soundeffectall(&sd->bl, "hip17.wav", 0, AREA); } else if ( atoi(message) == 18 ) { clif_soundeffectall(&sd->bl, "hip18.wav", 0, AREA); } else if ( atoi(message) == 19 ) { clif_soundeffectall(&sd->bl, "hip19.wav", 0, AREA); } else if ( atoi(message) == 20 ) { clif_soundeffectall(&sd->bl, "hip20.wav", 0, AREA); } else if ( atoi(message) == 21 ) { clif_soundeffectall(&sd->bl, "hip21.wav", 0, AREA); } else if ( atoi(message) == 22 ) { clif_soundeffectall(&sd->bl, "hip22.wav", 0, AREA); } else if ( atoi(message) == 23 ) { clif_soundeffectall(&sd->bl, "hip23.wav", 0, AREA); } else if ( atoi(message) == 24 ) { clif_soundeffectall(&sd->bl, "hip24.wav", 0, AREA); } else if ( atoi(message) == 25 ) { clif_soundeffectall(&sd->bl, "hip25.wav", 0, AREA); } else if ( atoi(message) == 26 ) { clif_soundeffectall(&sd->bl, "hip26.wav", 0, AREA); } else if ( atoi(message) == 27 ) { clif_soundeffectall(&sd->bl, "hip27.wav", 0, AREA); } else if ( atoi(message) == 28 ) { clif_soundeffectall(&sd->bl, "hip28.wav", 0, AREA); } else if ( atoi(message) == 29 ) { clif_soundeffectall(&sd->bl, "hip29.wav", 0, AREA); } else if ( atoi(message) == 30 ) { clif_soundeffectall(&sd->bl, "hip30.wav", 0, AREA); } return 0; } // Brute Guitar else if(pc_isequipped(sd, BRUTE_GUITAR)) { if(!message || !*message || atoi(message)<1 || atoi(message)>13){ clif_displaymessage(fd, "usage: @solo 1-13"); return -1; } clif_emotion(&sd->bl, E_HO); clif_skill_nodamage(&sd->bl,&sd->bl,317,-1,1); if ( atoi(message) == 1 ) { clif_soundeffectall(&sd->bl, "bru01.wav", 0, AREA); } else if ( atoi(message) == 2 ) { clif_soundeffectall(&sd->bl, "bru02.wav", 0, AREA); } else if ( atoi(message) == 3 ) { clif_soundeffectall(&sd->bl, "bru03.wav", 0, AREA); } else if ( atoi(message) == 4 ) { clif_soundeffectall(&sd->bl, "bru04.wav", 0, AREA); } else if ( atoi(message) == 5 ) { clif_soundeffectall(&sd->bl, "bru05.wav", 0, AREA); } else if ( atoi(message) == 6 ) { clif_soundeffectall(&sd->bl, "bru06.wav", 0, AREA); } else if ( atoi(message) == 7 ) { clif_soundeffectall(&sd->bl, "bru07.wav", 0, AREA); } else if ( atoi(message) == 8 ) { clif_soundeffectall(&sd->bl, "bru08.wav", 0, AREA); } else if ( atoi(message) == 9 ) { clif_soundeffectall(&sd->bl, "bru09.wav", 0, AREA); } else if ( atoi(message) == 10 ) { clif_soundeffectall(&sd->bl, "bru10.wav", 0, AREA); } else if ( atoi(message) == 11 ) { clif_soundeffectall(&sd->bl, "bru11.wav", 0, AREA); } else if ( atoi(message) == 12 ) { clif_soundeffectall(&sd->bl, "bru12.wav", 0, AREA); } else if ( atoi(message) == 13 ) { clif_soundeffectall(&sd->bl, "bru13.wav", 0, AREA); } return 0; } } } In src/map/atcommand.cpp also don't forget to add : { "solo", 0,0, atcommand_solo }, // solo [Download Link: https://www.mediafire.com/folder/pwcyadczve81h/sample_music_project] [The map used in this video - Barcode]
    1 point
  12. I've finally solved it. battle.cpp: if (flag & BF_SHORT) {//Bounces back part of the damage. if ( (skill_get_inf2(skill_id, INF2_ISTRAP) || !status_reflect) && sd && sd->bonus.short_weapon_damage_return ) { rdamage += damage * sd->bonus.short_weapon_damage_return / 100; rdamage = i64max(rdamage,1); } else if( status_reflect && sc && sc->count ) { to if (flag & BF_SHORT) {//Bounces back part of the damage. if ( (skill_get_inf2(skill_id)&INF2_TRAP || !status_reflect) && sd && sd->bonus.short_weapon_damage_return) { rdamage = i64max(rdamage,-1); } else if ( (status_reflect) && sd && sd->bonus.short_weapon_damage_return) { rdamage += damage * sd->bonus.short_weapon_damage_return / 100; rdamage = i64max(rdamage,1); } if( status_reflect && sc && sc->count ) { Thanks a lot to @Wazaby for assisting me with this. EDIT: You may just add this line on else if, if you want trap to reflect skill_get_inf2(skill_id)&INF2_TRAP EDIT 2: Just to update to my fix, for those people using bLongWeaponDamageReturn: in battle.cpp Find: if (!status_reflect && sd && sd->bonus.long_weapon_damage_return) { rdamage += damage * sd->bonus.long_weapon_damage_return / 100; rdamage = i64max(rdamage, 1); } } to: if (!status_reflect && sd && sd->bonus.long_weapon_damage_return) { rdamage = i64max(rdamage,-1); } else if (status_reflect && sd && sd->bonus.long_weapon_damage_return) { rdamage += damage * sd->bonus.long_weapon_damage_return / 100; rdamage = i64max(rdamage, 1); }
    1 point
  13. @Alberan Wow, thanks that you say about ESRGAN! I work with some npc sprites and it`s really looking good in game~ New part of sprites:
    1 point
  14. function script box____ { setarray .@reward, 20103, 60, 20104, 10, 20105, 10, 20106, 10, 20106, 5, 20107, 5; set .@size, getarraysize( .@reward ); for( set .@i, 1; .@i < .@size; .@i += 2 ) { .@percent[.@i] = .@total + .@reward[.@i]; .@total += .@reward[.@i]; } .@r = rand( .@total +1 ); for( set .@i, 1; .@i < .@size; .@i += 2 ) if( .@percent[.@i] > .@r ) break; getitem .@reward[ .@i-1 ], 1; end; } EDIT : Fix a mistake. 25620,3D_Glasses_Box,Box of Minion,2,0,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc "box____"; },{},{}
    1 point
×
×
  • Create New...