Jump to content

anacondaq

Members
  • Content Count

    161
  • Joined

  • Last visited

  • Days Won

    21

Reputation Activity

  1. Upvote
    anacondaq reacted to AnnieRuru in How to setup OFFLINE server for personal development use   
    I'll just pick a few to reply
    1. you did a good job helping people to instantly setup a server, I wont deny that part
    just like playing games online, for example, just download the package, plug and play
    what I did is post a proper guide for the community, same as many others before me,
    http://herc.ws/board/topic/152-obtaining-hercules/
    http://herc.ws/board/topic/968-guide-how-to-setup-hercules/#comment-6870
    http://herc.ws/board/topic/93-guidehow-to-setup-a-ragnarok-onlineserver-side-only/
    your package can last forever, assuming members want to use an outdated emulator
    mine will not last, and will wash just like any other guides
     
     
    2. I have A LOT OF MEMBERS asking me how to apply King of Emperium patch,
    and when I ask how they setup their server, 90% of them say use your guide
    your guide is plug and play, but it doesn't teach the process,
    yes, there are a lot of bumpy road if take the hard way, but you actually learn something every time solve a problem
    for example, following my guide, already learn how to update the server, apply patch, how to create grf, how to write SQL ... all in screenshots
     
    3. and no, when comes to contributing, we have to use the latest/updated emulator ... same goes to rathena or hercules
    for example, your current version which last update on 07 July 2018
    it still having bugs on *inarray script command, and many of my scripts using this script command will throw error on your current package
    yes, I told them to update to latest revision, and 3 people asked me how to do it, I just sigh ....
    well at least 3 people doesn't understand the 9th minute part of your video
     
    4. I guess we just have a different opinion on the subject,
    I prefer to do the traditional method, and you like to help newbies
    some might prefer to follow my guide, but I think majority (especially newbies) will prefer yours
    make no mistakes, when I hear people say --> I just want to install RO just for childhood memory <-- I would still recommend your guide
     
    5. I think its rude to come here and bash some other member's guide
    I hope you won't do the same if there is another similar guide post on rathena forum
     
    the rest are minor
    compare windows to linux ... of course linux better ...
    to be honest, I'm the only hercules staff member using windows, all other staff members use linux
    imgur ... no ... if I make this topic fully load with screenshots, it eats lots of bandwidth
     
    how did I learn to ride bicycle ?
    my father rent a bicycle and I ride on it while I was 7~8 years old,
    nobody push at the back, no book, no guide, straight on to the real thing, fell a few times
    ... typical chinese teaching method ... yes I'm chinese
    EDIT: yes, how the chinese children learn how to swim -> throw them into the water
    that's why western culture thinks chinese are child abuse
  2. Upvote
    anacondaq reacted to Skyline in [Release] ExtendedBG for Hercules (with eAmod BG modes)   
    *Casts spider web on Dastgir*
  3. Upvote
    anacondaq reacted to zackdreaver in What kind of RO interests the Ragnarok community?   
    well what yommy said is true lol
  4. Upvote
  5. Upvote
    anacondaq got a reaction from Fou-lu in Game Shield   
    The best protection - software with active development. Rather than creating for "checkbox", and then stop active development. Antivirus without updates - not antivirus. The same i can say about protection against cheats. Cheats appear every day, the main thing that there was someone who would release the fixes against them.
     
    There were a couple of protections, i can talk about only 3: gepard, hashield, harmony.   harmony - totally bypassed (even opencore working fine in xKore) gepard - big piece of shit until 2015, for now looks good, do not know about support, but i see regular updates. hashield - from the start it was the very friendly & good protection (in all aspects), but for now developer not so active like earlier. The last updates (major) were few month ago, still many bugs, not really show to customers what is going on.   i saw here at forum few extra, did't test them yet, but many features out the box cool.     Against bots.... Oh Friend... If you are looking against OpenCore, then Gepard / Hashield will be your choise. If you are looking against visual bots, i like more Hashield, but Gepard have the same features..   Just try both, and share your opinion. At current time i have a lot of things (bad things) which i can say about each protection which i was try. But at current time, as i see, only Gepard still active...
  6. Upvote
    anacondaq reacted to GmOcean in explode to push arraysize   
    I just wanna suggest that the *explode script command, should push the array size of the one it creates. So that things like this are possible:
    .@a = 10;while( .@b != .@a ) { .@menu$ = .@menu$ +""+ .@b +":"; .@b++;}.@menu$ = .@menu$ +"Last Option";if( select( .@menu$ ) == ( .@size = explode( .@temp$, .@menu$, ":" ) ) ) { close; } // Clicked Last Option in list. vs what we have to do now:
    .@a = 10;while( .@b != .@a ) { .@menu$ = .@menu$ +""+ .@b +":"; .@b++;}.@menu$ = .@menu$ +"last Option";explode( .@temp$, .@menu$, ":" );if( select( .@menu$ ) == getarraysize( .@temp$ ) ){ close; } // Clicked Last Option in list.  
    It's not really " needed " more of just a feature I think it should have since commands like query_sql have it. I figure why not give it the extra feature since it's not a downgrade nor does it break backwards compatibility.
  7. Upvote
    anacondaq reacted to Mystery in Midgard-Community   
    What is Midgard Community?

    - Midgard Community is a Ragnarok Online community that provides various information regarding the world of Ragnarok. We have a Ragnarok Server Listing service that provides space for server owners to list their Ragnarok Online Private Server with us. We provide a download system to the Ragnarok Community which houses multiple files that range from NPC sprites, Class Sprites, Palettes, Maps, Items, Monsters, Cutins/Illustrations, Models, etc. !

     
    Does Midgard Community have a Database?

    - Midgard Community provides both a Renewal and Pre-Renewal database for our community. Unfortunately, the database is not integrated with the main site. In both databases, you'll find information regarding various Ragnarok items, monsters, and maps. We also have various calculators and informational tables.

     
    What is Midgard Community's Download system?

    - The download system found in Midgard Community's forum houses tons of files that range from NPC sprites, Class Sprites, Palettes, Maps, Items, Monsters, Cutins/Illustrations, Models, etc. In order to get any files from the system, you must be an active member in the forum. The plan for the download system is to be the #1 stop to get files for a server owner's Ragnarok Server.

     
    API (Application Programming Interface)

    - As suggested by a member of the community, I've worked diligently with a fellow friend on implementing an API for Midgard's database. When you send a request for either an item or monster, you'll get different structured outputs returned back to you depending on what you've searched for.

     Item

     


    Monster
     


    However, not anyone can fetch what they want. When you create an account through the main site, if setup, there will be a token assigned to your username. You will need this token in order to fetch data from the database.
     
    Required Fields:
    api_key id (Item / Monster ID)  
    ​Optional Field:
    type - If no type is given, you'll directly get an item. To get monster, set Type's value to 1.
     
    Site Links & Information
    Homepage: http://www.midgard-community.com Forums: http://www.board.midgard-community.com Download System: http://www.board.midgard-community.com/files/ Pre-Renewal Database: http://www.database.midgard-community.com Renewal Database: http://www.database.midgard-community.com/renewal
  8. Upvote
    anacondaq reacted to awesome in Act Editor   
    Save .Gif want to see the character of the program.
     
     
    ex.

  9. Upvote
    anacondaq reacted to Tokeiburu in RO Installer Script (Inno Setup)   
    File Name: RO Installer Script (Inno Setup)
    File Submitter: Tokeiburu
    File Submitted: 17 Aug 2015
    File Category: Client Resources

    Heya!

    This 'release' is a very simple Inno Setup script to create Full or Lite client installers.

    It requires Inno Setup, which can be downloaded here : http://www.jrsoftware.org/isdl.php#stable. While installing Inno Setup, make sure the "Install Inno Setup Preprocessor" option is checked; otherwise you will get an "unknown option" error.

    How to make this work?
    Put your client files in either RO_Lite or RO_Full and then run the "_Make New Installer.bat" files. This will output a new installer called "YourRO Installer.exe".



    Customization
    Server name : open RO.iss and change the first line : #define ServerName "YourRO" The left image can be customized by editing background.bmp (or background.psd). The file format must remain a 24bit bmp. The wizard small image uses wizardSmallImage.bmp; the file format must remain 24bit as well. To add files to your installer, add them to the RO_Lite or RO_Full subfolders. Once you run the script, all the files in these folders will be packed in your installer. It can go over 2 GB, although if that's the case you might want to consider using the LZMA compression for your GRFs...! Install the VC++ Redistributable files (required by Harmony) silently. Open RO.iss and remove the semi-colon in front of "#define Harmony" to enable this option. By default, the necessary registry keys to start the game will be set if they aren't already. This is to avoid the "small window" issue people will have with older clients. The installer icon can be changed via installer.ico Uninstallating removes the entire RO folder, watch out (you can disable that). The default installer icon used comes from Lykos's icon pack, which can be found here : https://rathena.org/board/files/file/3190-s1-lykos-icon-pack/. It has been modified through hexing to allow the icon to be resizable by Windows Vista or more recent.

    Click here to download this file
  10. Upvote
    anacondaq reacted to Tokeiburu in File upload limit   
    It's... nothing really; It's just an Inno Setup script to create client installers. I've been using it for a while but I wasn't sure if it was worth uploading or not. It's mostly for people who have no idea how to make installers or end up using weird tools like Winrar's SFX tool...!
  11. Upvote
    anacondaq reacted to Haru in File upload limit   
    Please try again now. I've removed some upload file size restrictions that were set by default.
  12. Upvote
    anacondaq reacted to Tokeiburu in File upload limit   
    Heya,
     
    I was wondering what happened to the file upload limit on the forum? I used to be able to upload files past 4MB with no issues although now it seems to be lower than that. I'm referring to this :
     

     
    Is it normal? ;x
  13. Upvote
    anacondaq reacted to CrescentSaga in What kind of RO interests the Ragnarok community?   
    Seems like we have the same dream...
    When you are set to go for the server... Contact me if you would??
    I'd say i'm pretty good with scripts, I can do almost anykind of scripting and database related stuff, also PHP, but very limited in Design and Source Mods.
     
    And no, I'm not doing this for money... Just for the sake of living up my dream on RO
  14. Upvote
    anacondaq reacted to Takari in What kind of RO interests the Ragnarok community?   
    Sad as it may sound, a lot of servers have been spoiling their players lately.. Tell them they get gods & donate items as freebies and voila you got your players lol. That's what I've observed at least. It might be different in your point of view so yeah
  15. Upvote
    anacondaq reacted to reddozen in What kind of RO interests the Ragnarok community?   
    LMAO Yommy...
    You're 100% correct.
     
    Sell every item in your server on a black market under the table and you'll have more players that you can handle, and more money than you can spend...
     
     
    lol
  16. Upvote
    anacondaq reacted to Neo-Mind in [Guide] How to add Custom Jobs   
    Introduction
         For our Example we will create the Custom Class "Shinobi" and its Child version i.e. "Baby Shinobi" along with their Cash Mounts/Halter Mounts. Each Job has 3 ID values :
     
    1) Job ID - we will use 4230 & 4231 respectively for the jobs (4232 & 4233 will be reserved for the mounts client side).   2) Map ID - Also called EA Mask. If we are extending a class we OR the existing class with a modifier. Since Shinobi is going to be a seperate branch, we will use 0x11 for Shinobi and 0x11 | 0x2000 for Baby Shinobi (0x2000 is the JOBL_BABY mask).   3) Msg ID - Defined in messages.conf file. We will use 700 and 701.   Before we begin, A few points to note:
    1) For the client side i will be using my own patch from NEMO not Xray clients - So dont ask me about Xray.
     
    2) This guide is meant to be an overview towards adding jobs - meaning that your job will be enabled once you have done the changes     specified here . You can add further details on your own which depends on your Class.
     
    3) If i am missing out on anything please let me know. Nobody is perfect including me
     
    4) We will use Sprite and some data from Ninja class for the time being but you can add your own entries just as easily.
     
     
    Server Source 1) src/common/mmo.h: look for JOB_REBELLION assignment and insert our Job IDs after it.      
     
    2) src/map/map.h: look for MAPID_BABY_CHASER and insert our Map IDs after it.         3) src/map/pc.c:     i) find case JOB_BABY_CHASER: and insert our cases after it       ii) find case MAPID_BABY_CHASER: and insert our cases after it         iii) find case JOB_REBELLION: followed by return msg_txt(655); and insert our cases after it. (returns the Msg ID)       iv) find { "Rebellion", JOB_REBELLION }, and insert our Job Names after it       4) src/map/itemdb.c: Here we check the job masks that is specified in item_db.conf. There is one limitation, however.     Currently there is only 1 more slot left in the job mask since it is 32 bit. In case you need to add more you will need to     change the variable to 64 bit.         Find jobmask & 1<<30 and insert our class check after it.         5) src/char/inter.c: Find case JOB_REBELLION: and insert our case after it.(returns the Msg ID)         Server Config 1) db/const.txt:       i) Find Job_Rebellion and insert our Job IDs after it       ii) Find EAJ_BABY_CHASER and insert our Map IDs after it         2) db/<pre-re|re>/exp.txt: Insert your IDs in one of the entries (or if you want to specify your own exp per level you can add that).    Since our jobs are meant to be amongst First Class, we will simply add it into existing ones.       i) Base:     ii) Job:   3) db/<pre-re|re>/job_db.conf: Add entry for your Job. We will copy the entry from Ninja with slight changes for now.         4) db/job_db2.txt: Add entry for your Job. Again we will reuse the data from Ninja.         5) conf/help.txt: Insert your class entries to the @go message         6) conf/messages.conf: Add the Msg IDs after Shadow Chaser T         7) db/<pre-re|re>/skill_tree.conf: Add entry for your Job similar to the others.      -pic to be added-     Client Lua Files Now to make the client support Custom Jobs it should be patched with "Enable Custom Jobs" patch in NEMO.  Also you should copy the lua files inside Support folder to different area so we can Add entries of our jobs.  (LuaFiles514/Lua Files/Admin folder inside is what we need essentially)   1) PCIDs.lub :     i) First we add all our Job IDs (look for JT_2004_JOB_LAST entry).       ii) Next we connect the Cash Mount Job IDs to Main Job IDs (Look for JT_REBELLION mapping).         iii) Lastly we need to add our Baby Class & its mount to the Baby_List (Look for JT_LION_CRUSADER_B).       2) PCNames.lub: To illustrate that different names can be assigned based on gender, I am calling them as Shinobi M & Shinobi F for Male & Female respectively.     i) First we add the Job Name for Male Characters (Look for Rebellion)     ii) Next we make the Cash Mounts inherit Names from their respective Main Jobs - since Mounting don't change the name (Look for JT_PECO_REBELLION).         iii) Last but not least we add the Job Name for Female characters - Only necessary if it differs from Male name (Look for JT_SORCERER_B).       3) PCPaths.lub: Here we specify the job specific prefix used by the client to get the job sprite.   i) First we add the Path prefix for Jobs that is not shared with any existing ones.       ii) Next we make the Jobs that has shared path inherit from existing (for e.g. Baby Jobs inherit from Adult versions).   4)PCHands.lub: Here we specify the job specific prefix used by the client to get the weapon and shield sprite locations     i) Like before, First we add the Hand prefix for Jobs that is not shared with any existing ones.     ii) Next we make the Jobs with shared prefix inherit from existing (e.g. Baby Jobs, Mounts, Baby Mounts etc. all can inherit from Adult versions).   5)PCPals.lub: Here we specify the job specific prefix used by the client to get the Palette file location.     i) Like before, First we add the Pal prefix for Jobs that is not shared with any existing ones.     ii) Next we make the Jobs with shared prefix inherit from existing (e.g. Baby Jobs, Mounts, Baby Mounts etc. all can inherit from Adult versions).     Note: You can also optionally add entries in PCImfs.lub file in case you have an Imf file, but I haven't seen any issues even without it.  Hence I am not pursuing it.   Once the edits are done pack it into your grf or put it in your data folder and use it. With this much your job will be visible and able to do everything provided you have the sprite files in the right location.   spriteÀΰ£Á·¸öÅë³²<pathprefix>_³².spr and act for Male Job  spriteÀΰ£Á·¸öÅë¿©<pathprefix>_¿©.spr and act for Female Job   Snapshot: (to be added)    
  17. Upvote
    anacondaq reacted to Tepoo in What kind of RO interests the Ragnarok community?   
    Yommy is totaly right.
     
    people dont want stability, professionality or anything.
    they want to complain, abuse bugs to get advantages, and some of them wants pay to win to be the best on the server without doing something.
     
    use your time for other stuff and dont waste it with putting effort in a good server. because this time is wasted.
  18. Upvote
    anacondaq reacted to Tepoo in What kind of RO interests the Ragnarok community?   
    i tryed it by myself, and i had a stable server, with a nice client based on 2014 clients with all features.
    arround 100players left the server because i fixed bugs and exploits they where not able to abuse anymore.
     
    seeing those behaviors is damn sad.
  19. Upvote
    anacondaq reacted to Jguy in What kind of RO interests the Ragnarok community?   
    This is sadly extremely true. You can have a perfectly timed maintenance schedule, professional staff that knows what they are doing, non-game breaking items on your donation only shop, use your excess donations for charities instead of keeping it for profit...and you'll get 100 players max. Do the exact opposite, bam, 500+.
     
    Indeed, good luck.
  20. Upvote
    anacondaq reacted to satsugaides in What kind of RO interests the Ragnarok community?   
    I somehow is saddened by the fact that players would tend to go for abusing bugs or anything termed as imbalance including cheating. The moment you put a stop to these things the player count suddenly drops. Some server owners however are just putting a blind eye to it to keep the server alive. Ragnarok is more than a decade old game you will be lucky if you still hit more than a hundred players. Nonetheless, Ive always lived up to quality > quantity. Nowadays, highrate servers lifespan is not even hitting 3 months. So goodluck and make sure you think this through.
     
    half of my cent
  21. Upvote
    anacondaq reacted to Kong in What kind of RO interests the Ragnarok community?   
    Aim for fun, do things you would like to do. Don't create a server based on a player who wants to play, or a guild waiting, or someone who thinks he know all the sh*t. Because in the end, these players will go, what else is left with you is a server those quitters wanted.
  22. Upvote
    anacondaq reacted to Legend in What kind of RO interests the Ragnarok community?   
    LOL! This is so true. 
  23. Upvote
    anacondaq reacted to Skyline in What kind of RO interests the Ragnarok community?   
    This is so true in so many levels.
    Like when I opened my server just this March for example, I had like 60 players the first day, when I enabled the antiWPE and other security features we went down to 30. 
  24. Upvote
    anacondaq reacted to Yommy in What kind of RO interests the Ragnarok community?   
    easy, setup a really shit server and have no clue about what you are doing, then you are destined for 2000 players.but be careful, any kind of professionalism in your setup, you are lucky to get 200 players
     
    good luck
  25. Upvote
    anacondaq got a reaction from JohnyRox in skill_require modification (if/else) statement.   
    Hi, i want to make next thing.
     
    As we all know we have at db/pre or re/skill_require_db.txt
    With next structure:
     
    SkillID,HPCost,MaxHPTrigger,SPCost,HPRateCost,SPRateCost,ZenyCost,RequiredWeapons,RequiredAmmoTypes,RequiredAmmoAmount,RequiredState,RequiredStatuses,SpiritSphereCost,RequiredItemID1,RequiredItemAmount1,RequiredItemID2,RequiredItemAmount2,RequiredItemID3,RequiredItemAmount3,RequiredItemID4,RequiredItemAmount4,RequiredItemID5,RequiredItemAmount5,RequiredItemID6,RequiredItemAmount6,RequiredItemID7,RequiredItemAmount7,RequiredItemID8,RequiredItemAmount8,RequiredItemID9,RequiredItemAmount9,RequiredItemID10,RequiredItemAmount10,RequiredEquipment  
    I need to modify that to:
    SkillID,HPCost,MaxHPTrigger,SPCost,HPRateCost,SPRateCost,ZenyCost,RequiredWeapons,RequiredAmmoTypes,RequiredAmmoAmount,RequiredState,RequiredStatuses,SpiritSphereCost,RequiredItemID1:ORRequiredItemID1:ORRequiredItemID1,RequiredItemAmount1,RequiredItemID2,RequiredItemAmount2,RequiredItemID3,RequiredItemAmount3,RequiredItemID4,RequiredItemAmount4,RequiredItemID5,RequiredItemAmount5,RequiredItemID6,RequiredItemAmount6,RequiredItemID7,RequiredItemAmount7,RequiredItemID8,RequiredItemAmount8,RequiredItemID9,RequiredItemAmount9,RequiredItemID10,RequiredItemAmount10,RequiredEquipment EDIT: (code block do not modify text in block....)
     
    Original:
     
    RequiredItemID1,RequiredItemAmount1   
    I want to:
     
    RequiredItemID1 : ORRequiredItemID1 : ORRequiredItemID1,RequiredItemAmount1  If player don't have item in inventory -> player can use ANOTHER item for requirement after ":".
     
     
    EXAMPLES
     
    I need to modify sources & that db to next prototype:
     
    Original:
     
    289,0,0,1,0,0,0,99,0,0,none,0,0,715,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SA_DISPELL  
    Modified:
     
    289,0,0,1,0,0,0,99,0,0,none,0,0,715:505:506,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SA_DISPELL  
    What i want to get by this edit:
     
    IF player have itemID 715 (yellow gemstone) -> he can use spell and that item will be removed (like by default) IF player DON'T have itemID 715 map-server will be looking for player inventory for next value after ":", the next value in this example 505. So, if player Don't have 715, but have 505 -> the skill will require this item for skill. IF player don't have 715 or 505 in inventory -> server will looking for next item_id after ":", the next item is 506. So if player don't have 715 or 505 item in inventory (order is important) the skill will require and use 506 item id. IF player don't have any item of that list (715, 505, 506) in inventory -> skill will fail. Requirement Amount (715:505:506,1) is the same for all of this items.

     
     
    In few words:
    I want to make alternative require_db for spell in txt file which is divided by ":" (like weapon's (Spiral Pierce in renewal (it's required OR Spear or Sword))
     
     
    I did found this function, and i'm get stucked.
    /*** Read skill requirement from skill_require_db.txt**/static bool skill_parse_row_requiredb(char* split[], int columns, int current){// skill_id,HPCost,MaxHPTrigger,SPCost,HPRateCost,SPRateCost,ZenyCost,RequiredWeapons,RequiredAmmoTypes,RequiredAmmoAmount,RequiredState,RequiredStatuss,SpiritSphereCost,RequiredItemID1,RequiredItemAmount1,RequiredItemID2,RequiredItemAmount2,RequiredItemID3,RequiredItemAmount3,RequiredItemID4,RequiredItemAmount4,RequiredItemID5,RequiredItemAmount5,RequiredItemID6,RequiredItemAmount6,RequiredItemID7,RequiredItemAmount7,RequiredItemID8,RequiredItemAmount8,RequiredItemID9,RequiredItemAmount9,RequiredItemID10,RequiredItemAmount10 char* p; uint16 skill_id = atoi(split[0]), idx, i; if (!(idx = skill_get_index(skill_id))) // invalid skill id return false; skill_split_atoi(split[1],skill_db[idx].require.hp); skill_split_atoi(split[2],skill_db[idx].require.mhp); skill_split_atoi(split[3],skill_db[idx].require.sp); skill_split_atoi(split[4],skill_db[idx].require.hp_rate); skill_split_atoi(split[5],skill_db[idx].require.sp_rate); skill_split_atoi(split[6],skill_db[idx].require.zeny); //Witch weapon type are required, see doc/item_db for weapon types (View column) p = split[7]; while (p) { int l = atoi(p); if( l == 99 ) { // Any weapon skill_db[idx].require.weapon = 0; break; } else skill_db[idx].require.weapon |= 1<<l; p = strchr(p,':'); if(!p) break; p++; } //Ammo type that required, see doc/item_db for ammo types (View column) p = split[8]; while (p) { int l = atoi(p); if( l == 99 ) { // Any ammo type skill_db[idx].require.ammo = 0xFFFFFFFF; break; } else if( l ) // 0 stands for no requirement skill_db[idx].require.ammo |= 1<<l; p = strchr(p,':'); if( !p ) break; p++; } skill_split_atoi(split[9],skill_db[idx].require.ammo_qty); if( strcmpi(split[10],"hidden") == 0 ) skill_db[idx].require.state = ST_HIDDEN; else if( strcmpi(split[10],"riding") == 0 ) skill_db[idx].require.state = ST_RIDING; else if( strcmpi(split[10],"falcon") == 0 ) skill_db[idx].require.state = ST_FALCON; else if( strcmpi(split[10],"cart") == 0 ) skill_db[idx].require.state = ST_CART; else if( strcmpi(split[10],"shield") == 0 ) skill_db[idx].require.state = ST_SHIELD; else if( strcmpi(split[10],"recover_weight_rate") == 0 ) skill_db[idx].require.state = ST_RECOV_WEIGHT_RATE; else if( strcmpi(split[10],"move_enable") == 0 ) skill_db[idx].require.state = ST_MOVE_ENABLE; else if( strcmpi(split[10],"water") == 0 ) skill_db[idx].require.state = ST_WATER; else if( strcmpi(split[10],"dragon") == 0 ) skill_db[idx].require.state = ST_RIDINGDRAGON; else if( strcmpi(split[10],"warg") == 0 ) skill_db[idx].require.state = ST_WUG; else if( strcmpi(split[10],"ridingwarg") == 0 ) skill_db[idx].require.state = ST_RIDINGWUG; else if( strcmpi(split[10],"mado") == 0 ) skill_db[idx].require.state = ST_MADO; else if( strcmpi(split[10],"elementalspirit") == 0 ) skill_db[idx].require.state = ST_ELEMENTALSPIRIT; else if( strcmpi(split[10],"peco") == 0 ) skill_db[idx].require.state = ST_PECO; else skill_db[idx].require.state = ST_NONE; // Unknown or no state //Status requirements //FIXME: Default entry should be -1/SC_ALL in skill_require_db.txt but it's 0/SC_STONE. trim(split[11]); if (split[11][0] != '0' || atoi(split[11])) { int require[MAX_SKILL_STATUS_REQUIRE]; if ((skill_db[idx].require.status_count = skill_split_atoi2(split[11], require, ":", SC_STONE, ARRAYLENGTH(require)))) { CREATE(skill_db[idx].require.status, enum sc_type, skill_db[idx].require.status_count); for (i = 0; i < skill_db[idx].require.status_count; i++) skill_db[idx].require.status[i] = (sc_type)require[i]; } } skill_split_atoi(split[12],skill_db[idx].require.spiritball); for( i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++ ) { skill_db[idx].require.itemid[i] = atoi(split[13+ 2*i]); skill_db[idx].require.amount[i] = atoi(split[14+ 2*i]); } //Equipped Item requirements. //NOTE: We don't check the item is exist or not here trim(split[33]); if (split[33][0] != '0' || atoi(split[33])) { int require[MAX_SKILL_EQUIP_REQUIRE]; if ((skill_db[idx].require.eqItem_count = skill_split_atoi2(split[33], require, ":", 500, ARRAYLENGTH(require)))) { CREATE(skill_db[idx].require.eqItem, uint16, skill_db[idx].require.eqItem_count); for (i = 0; i < skill_db[idx].require.eqItem_count; i++) skill_db[idx].require.eqItem[i] = require[i]; } } return true;}
×
×
  • Create New...

Important Information

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