Jump to content

Litro

Members
  • Content Count

    365
  • Joined

  • Last visited

  • Days Won

    4

Reputation Activity

  1. Like
    Litro reacted to Functor in Old Character Creation   
    I'm happy for you if you have so high skills and it isn't just in words.  But what is the sense to inform about it if you aren't going to help Khonsu? As I see you even created account to tell about it. It was very useful info for the community. Please, keep us informed. 
    P.S. I can go into space in a couple hours easily, but I will not do it. 
  2. Like
    Litro got a reaction from skyblue in Daily Reward IP check   
    try this
    prontera,155,160,5 script 60 seconds Reward 4_F_FAIRYKID4,{ getcharip(); .@npc_name$ = "[Reward NPC]"; for (.@i = 0; .@i < getarraysize($ip_reward$); .@i+=2) { if ($ip_reward$[.@i] != getcharip()) continue; .@delays = atoi($ip_reward$[.@i+1]) + .delay; if ( .@delays > gettimetick(2)) { mes .@npc_name$; mes "Your IP addres have been claim the reward"; mes "You have to wait for "+callfunc("Time2Str", .@delays - gettimetick(2)); close; } .@index = .@i; break; } mes .@npc_name$; mes "Hello "+strcharinfo(0)+",I"; mes "am here to give you a daily"; mes "Reward. Do you want to have it?"; next; switch (select("-Yes,sure!:-No,bye!:-Cancel")) { case 1: mes .@npc_name$; for (.@j = 0; .@j < getarraysize(.reward); .@j+=2) getitem .reward[.@j], .reward[.@j+1]; mes "Okay have fun with it!"; if (.@index) $ip_reward$[.@index+1] = gettimetick(2); else { .@index = getarraysize($ip_reward$); $ip_reward$[.@index] = getcharip(); $ip_reward$[.@index+1] = gettimetick(2); } close; default: mes .@npc_name$; mes "Okay goodbye!"; close; } OnInit: setarray .reward, 601, 1; // <item id>, <item amount>{, <item id>, <item amount>,...} .delay = 86400; // Delay time before reward can be re-claimed. time set in second, default 24 Hours = 86400 seconds end; }
  3. Upvote
    Litro got a reaction from u niver X in King Poring Recolor - First Time Recoloring   
    Hi everyone.. here my first time sprite recoloring work
     

     
    UPDATE:
    - Fix Die animation Recolor-king_poring.7z
    - adding King Ghostring
  4. Upvote
    Litro reacted to Sephus in Hercules Battlegrounds   
    Hercules Battlegrounds
    A full conversion and enhancement of eAmod's Battlegrounds system into a easy-to-install Hercules plugin library.
    Version: 1.0a (alpha)
     

     
    Repository @ https://github.com/Smokexyz/HerculesBG

    Installation
    1) Place plugin files in plugin directory. (If you wish to re-compile the code, please do so the standard way.)
    2) Place all script files in the default directory provided in the repository (or your own).
    3) Place all database and config parts in their respective files.
    4) in conf/plugins.conf add "hBG".
     
    Instructions on installing Plugins - http://herc.ws/wiki/HPM#Building_a_plugin
     
    Battleground Modes
    Capture the Flag Eye of Storm Triple Inferno Team DeathMatch Bossnia Conquest Stone Control Domination Rush Free For All Why use it?
    1) Prevents conflicts when updating Hercules.
    2) Easy to install.
    3) Can be easily modified for more functions/features in the future.

    For contributors
    If you wish to add a free BG script to the list of available battleground modes, please contact me.
     
    Bug Reporting
    Please feel free to open an issue on the repository and I'll get to it as soon as I can.

    Donate to support the project and motivate updates.


  5. Upvote
    Litro got a reaction from estoudegreve in King Poring Recolor - First Time Recoloring   
    Hi everyone.. here my first time sprite recoloring work
     

     
    UPDATE:
    - Fix Die animation Recolor-king_poring.7z
    - adding King Ghostring
  6. Upvote
    Litro reacted to Jguy in HAT - The Hercules Admin Tool!   
    All,
     
    I am working on an installation "script" to help you walk through the steps to install the panel.
     
    I am also working on a bit of a database re-write which will see some of the field names change to be more uniform. With this, a couple of new tables will be added relating to connection to the Hercules information (most of this will move out of the config directory and into the database).
  7. Upvote
    Litro reacted to Jguy in HAT - The Hercules Admin Tool!   
    Greetings all,
     
    Today, I am introducing a project I've been envisioning and working on for a couple of months that is finally in a usable and sharing state where multiple people could potentially contribute to the project.
     
    Introducing HAT!
     
    What is HAT?!
    HAT, or Hercules Admin Tool, is an administration tool for your RO server running the Hercules emulator. It is coded in PHP and Javascript and uses backends of CodeIgniter and Twitter Bootstrap to present information in a secure and meaningful way. Written by a server owner for a server owner. It is completely Open Source and hosted on Github, released under the Apache license.
     
    Another Control Panel? Too many! Stop making these damn things!
    Yes, another one. However, this one is different. A lot of Control Panels today are written as a CMS for your users as well as administration for your GM's. HAT is not designed to be accessed by your users, similar to the PHPMyAdmin tool. Your users will never know its there, therefore already enhancing security. However, contrary to PHPMyAdmin, you can more deeply control what your GM's have access to.
     
    Oooh, control? I'm a control freak, tell me more!
    HAT has a separate database of users for your GM's that have access to your panel. You're not relying on the login table of your server and their group level to provide access. Instead, a separate user database allows access, with a fully customisable set of permission settings on what those GM's can do and not do. 98 different permission sets are possible. So, you can have an in-game support GM with some limited powers in game, and they don't have to have access to your admin panel. Likewise, you can have a developer who only needs access to some server functions and your item/mob DB's without access to your server's accounts.
     
    What other features does it have?
    HAT gives you the ability to administrate just about everything on your Hercules server or its databases. It's a backend tool designed to be installed to the same server as your running Hercules server, giving you error tracking, server restarting and GM commands through a web interface without needing to login to SSH. With its fully responsive interface, its suitable for access via mobile, tablet or desktop without comprising access to information you need.
     
    So far, a somewhat complete list of the features already done:
    Account Management including: Changing account name, email, reset passwords/PINs, manage bans, account notes, account flags, manage account storage Character Management including: Change character name, stats, levels, jobs, items, flags Guild Management including: Change guild name, leader Server Management including: Viewing server console logs, start/stop/restart running Hercules server, reload item/mob db's, scripts and battleconf, viewing server performance data Admin Management including: Add/disable/delete GM's, assign/delete/change permission sets (groups)

    More features being added almost every week!
     
    How can I use it?
    Note that the panel is still in constant development and could be unstable. We would appreciate more testers and bug reports regarding the panel. While I try to write and test code that I know will work before pushing it to Github, sometimes I miss something or it doesn't work as expected in another environment. If you're willing to contribute by using and reporting bugs, you can find the panel to download here:
     
    https://github.com/jguy1987/HercAdminTool
     
    I found a bug! How do I report it to you?!
    You can use the Github issue tracker to report bugs: https://github.com/jguy1987/HercAdminTool/issues
     
    I want XYZ feature! Can you make it?
    Maybe. Use the Gitbhub issue tracker to give me the suggestion and I'll see if I can/want to add it: https://github.com/jguy1987/HercAdminTool/issues
     
    You lied! My panel completely destroyed my server!
    Take backups. As mentioned above, you're using something that is constantly in development. If you encounter a bug, please report it. If you encounter an issue that leads to the destruction of data, this is a beta product, and I'm sorry, but I cannot and will not be held responsible.
     
    What are the system and server requirements for running the HAT?!
     
    The following system I run my testing on, let me know if you have similar results with a system with different packages or such:
    * Linux, specifically Ubuntu 14.04. Windows or BSD at this moment is completely untested. I plan on hopefully testing this weekend.
    * apache2, version 3.4.7
    * php5, version 5.5.9
    * php5-mcrypt needs to be installed and enabled. You can do such by adding to your php.ini: `extension=mcrypt.so`.
    * php5-mysql extension. MySQL can be installed on a different machine if you so desire but you must have the php5 extension installed on the machine
    * apache needs to be configured to include the mod_rewrite extension. In addition, your per directory settings for apache configuration must allow "follow symlinks" and "AllowOverride all".
    * You can optimize Apache to use a bit less memory so that your Hercules server can expand if you do not anticipate many people using your panel by taking the following steps:
    - Install apache2-mpm-prefork.
    - Reduce the amount of clients your apache can serve and reduce the amount of servers it starts up in httpd.conf/apache2.conf.
     
    So....
    Github: https://github.com/jguy1987/HercAdminTool
    IRC: irc.rizon.net @ #hercadmintool - if you want to talk to me about it or submit features or poke me to do more work.
    Demo available at: http://hatdemo.jemstuff.com
    The demo can be access with username/password: admin/admin. You can do most things in the demo so feel free to play around. I know there's not much data there to experiment with, but feel free to play.
  8. Upvote
    Litro got a reaction from Like it~* in Rental NPC (with PAYMENT)   
    @@Quazi try this script: http://upaste.me/7bbc2166170cb9962
     
    - shop rental_shop -1,501:50prontera,150,150,4 script Rentals Shop 100,{ callshop "rental_shop", 1; npcshopattach "rental_shop"; end;OnBuyItem: dispbottom "Rentals Shop: You can only buy one item at once."; setarray .@q[0], @bought_nameid[0], @bought_quantity[0]; for (.@i = 0; .@i < getarraysize(.items_list); .@i++) { if (.@q[0] == .items_list[.@i]) { .@q[2] = .price_list[.@i]; } } mes .@npc_name$ = "[Rentals Shop]"; mes "Rental Item: "+getitemname(.@q[0]); mes "Rental Cost: "+.@q[2]+"x "+getitemname(.currency)+" for one day."; mes " "; mes "How many days do you want to rent it ?"; next; if (input(.@day, 1, 365)) { mes .@npc_name$; mes "Invalid input days.."; callsub ClearBought; close; } .@q[3] = .@day * .@q[2]; mes .@npc_name$; mes "Rental Item: "+getitemname(.@q[0]); mes "Rental Cost: "+.@q[3]+"x "+getitemname(.currency)+" for "+.@day+" day"+((.@day > 1) ? "s" : "")+"."; mes " "; mes "Still want to make the rent ?"; next; if (select("Yes:No") == 2) { mes .@npc_name$; mes "All right, "+callfunc("F_Bye"); callsub ClearBought; close; } if (countitem(.currency) < .@q[3]) { mes .@npc_name$; mes "I'm sorry, you haven't enought "+getitemname(.currency)+" to pay the rental"; callsub ClearBought; close; } if (!checkweight(.@q[0], .@q[1])) { mes .@npc_name$; mes "You need more space in your inventory."; callsub ClearBought; close; } delitem .currency, .@q[3]; // delete items rentitem .@q[0], .@day * 86400; // rent an items. 86400 = 1 day in seconds callsub ClearBought; end; ClearBought: deletearray @bought_quantity, getarraysize(@bought_quantity); deletearray @bought_nameid, getarraysize(@bought_nameid); return;OnInit: // Configuration setarray .items_list, 1201, 1201, 1201; // items list that you want to sell. setarray .price_list, 100, 200, 300; // itens price that item you sell in the shop. .currency = 7227; // items that will be used as exchange currency // do not touch from here!! npcshopdelitem "rental_shop", 501; for (.@i = 0; .@i < getarraysize(.items_list); .@i++) npcshopadditem "rental_shop", .items_list[.@i], .price_list[.@i]; end;}
  9. Upvote
    Litro got a reaction from mrlongshen in Multi selection reward   
    it missing ';' like the script parser showed you on line 7
    change
    .@menu$ = "Loyal Reward:" into
    .@menu$ = "Loyal Reward:"; from what i understand from your request is when player click the npc, the npc will show the list reward he can claim, after the reward claimed the menu will be hidden or removed
     
    if you want to add more case on it my be some thing like this
    gonryun,162,126,4 script Event Reward 4_F_OPERATION,{ if (.error) { mes "Script Configuration Error Please Fix it"; close; } while(1) { .@menu$ = ""; for (.@i = 0; .@i < getarraysize(.reward_menu$); ++.@i) { if (getd(.reward_var$[.@i])) .@menu$ += ":"; else { .@menu$ += .reward_menu$[.@i]+":"; .@[member=check] = 1; } } if (!.@[member=check]) { mes "There is no more reward you can redeem."; close2; emotion e_bzzz; end; } mes "Please select which reward you want to redeem"; next; .@select = select(.@menu$); switch(.@select) { default: mes "Error On: "+.reward_menu$[(.@select-1)]+" did not have a case label"; close; case 1: getitem 607,1; break; case 2: getitem 607,1; break; } setd .reward_var$[(.@select-1)], 1; } OnInit: setarray .reward_menu$, "Loyal Reward", "LoL Reward"; setarray .reward_var$ , "#Loyal_Reward", "#LoL_Reward"; if (getarraysize(.reward_menu$) != getarraysize(.reward_var$)) .error = 1; end; }
  10. Upvote
    Litro got a reaction from rizkiolivia in restrict multi login in woe same ip address   
    // http://rathena.org/board/topic/58835-done-request-ip-check/page__view__findpost__p__80798/*To add more maps:1. add it to this string : set .maps$, "bat_room,anothermap,etc";2. and add the 'loadevent' mapflag on that map : <map name> mapflag loadevent*/// Checking I P when entering a Map and kick if dual .. example map bat_room- script Only1perIP -1,{OnPCLoadMapEvent: set .maps$, "bat_room,anothermap,etc"; set .@my_map$, strcharinfo(3); // check if they are on a "1-per-IP" map if (compare(","+.maps$+"," , ","+.@my_map$+",")) { // look for other online players from the same IP query_sql("SELECT login.account_id FROM login LEFT JOIN `char` ON login.account_id=`char`.account_id " + "WHERE login.last_ip=(SELECT last_ip FROM login WHERE account_id="+getcharid(3)+") " + "AND `char`.online=1 AND login.account_id!="+getcharid(3), .@account_id; for (set .@i,0; .@i<getarraysize(.@account_id); set .@i,.@i+1) { // check if other online players are on the same map getmapxy .@map$,.@x,.@y, 0, rid2name(.@account_id[.@i]); if (.@map$ == .@my_map$) { // kick the new player arriving to map set .@name$, strcharinfo(0); announce "Sorry, only 1 char per IP can be on this map at a time.", bc_self; sleep 1000; atcommand "@kick " + .@name$; } } } end;}bat_room mapflag loadevent here what i have in my script collection, link can be found on top of script and i think it can be more optimized for your own need
  11. Upvote
    Litro reacted to 15peaces in 15peaces 3CeAM Patches   
    Some of you allready know it through facebook.
    I've created some patches for 3CeAM in past. I want to share them here. Also I'll give you support for these patches in this topic.
     
    If you're missing some features in 3CeAM you can also ask me to create a patch file for it.
    However, I cannot guarantee for every requested feature to be implemented...
     
    You can find all patches on my GitHub page: https://github.com/15peaces/3ceam-Patches/
     
    Feel free to report all bugs you'll find. I'll try to fix them ASAP. ^^
  12. Upvote
    Litro reacted to Dastgir in Charms [Item gift effect while in inventory]   
    http://upaste.me/f8b42118100b0bab2
    ^ This is as it is version, made months ago, there's no compile warnings/errors, but dont' know if it works or not with new rev,
     
    How it works?
    Add Following to item:
    Charm: true in item_db.conf in whichever item you want.
  13. Upvote
    Litro reacted to AnnieRuru in Charms   
    Download: 1.6
    plugin
     
     
    tested with
    { Id: 909 AegisName: "Jellopy" Name: "Jellopy" Buy: 6 Weight: 10 BuyingStore: true Charm: true // Charm_Stack: true Script: <" bonus bStr, 10000; "> OnEquipScript: <" sc_start4 SC_ENDURE,60000,10,0,0,1; hateffect HAT_EF_BOTTOM_BLOODYLUST, true; "> OnUnequipScript: <" sc_end SC_ENDURE; hateffect HAT_EF_BOTTOM_BLOODYLUST, false; "> // OnRentalStartScript: <" dispbottom "rent start"; "> // OnRentalEndScript: <" dispbottom "rent end"; "> }, just having Jellopy inside inventory will get bonus
    Remember: it has to use IT_ETC type item, which has been default to type 3 if you didn't specify
    and also "Charm: true" flag
    if added the "Charm_Stack: true" flag, the charms will stack
    - if the flag is false (default), having 10 same charms will give bonus 10 times, because they are separate items
    - if the flag is true, having 10 same charms will only give bonus once, because they are stack together
     
    version 1.3 onwards, added nocharms mapflag
    http://herc.ws/board/topic/15219-modification-to-noitem-plugin/
    to disable charms bonuses given in certain maps
    prontera mapflag nocharms disable all charms from taking effect on the map
    prontera mapflag nocharms 909 prontera mapflag nocharms Jellopy disable only this 'Jellopy' charm from giving bonus
     
    version 1.5 onwards, added OnEquipScript and OnUnequipScript support
    now you can gives permanent SC_ENDURE bonus like eddga card like effect
    or gives hateffect bonus like the example shown
     
     
    credit to digitalhamster
    in case you guys forgotten, I fixed digitalhamster's patch on eathena forum 4 years ago
    and the one in rathena also credited my name
    and if you like this plugin, remember to also repup Dastgir's post in this topic
    because I copy paste most of his stuffs
     
  14. Upvote
    Litro reacted to AnnieRuru in Card Collector   
    this script gets in the way when I editing the wiki, so I have to dispose here
    ops, I mean, release here
     
    Download:
    script
     
    simple script, the npc announce the name of the card it wants
    if the player having this card, can give to this npc for a reward
     
    found this idea from rathena script request
  15. Upvote
    Litro reacted to AnnieRuru in OnPCUseSkillEvent   
    After so many years of hearing rumor of this modification,
    finally today is the day I can release this to public
     
    Download : 1.5
    plugin
     
    original topic from eathena
     
     
  16. Upvote
    Litro reacted to AnnieRuru in OnPCStatCalcEvent   
    rathena already has this by default -> https://github.com/rathena/rathena/commit/27a0f3f
    someone else has tried to pull request in hercules, -> https://github.com/HerculesWS/Hercules/pull/351
    but it was denied, so have to leave this as plugin
    UPDATE: rathena has taken out -> https://github.com/rathena/rathena/commit/b65443d8f564175196d57ef9bc1d000a5661fbdc
     
    Download : 2.1
    plugin
     
    Tested with:
    conf\import\OnPCStatCalcEvent.conf
    both `@reloadscript` and `@reloadonpcstatcalcevent` command can reload conf\import\OnPCStatCalcEvent.conf file 
     
    `@reloadscript` = reload everything -> cause destruction on live server
    `@reloadonpcstatcalcevent` = only reload conf\import\OnPCStatCalcEvent.conf file , combine with `@reloadnpc` command -> not so destructive
    script: ( { // give GM permanent bonus ? OnPCStatCalcEvent: <" bonus bVit, 1234; end; "> }, { // for xxx event OnPCStatCalcEvent: <" skill TF_HIDING, 1; end; "> }, { // npc/custom/xxxevent.txt OnPCStatCalcEvent: <" if (@a) { bonus bStr, 1000; skill WZ_ICEWALL, 1; } end; "> }, ) script
    prontera,158,185,5 script djk2sfhsd 1_F_MARIA,{ @a ^= 1; mes "hmm..."; recalculatestat(); next; mes "what ?"; @a ^= 1; recalculatestat(); next; mes "maybe..."; @a ^= 1; recalculatestat(); next; mes "probably..."; @a ^= 1; recalculatestat(); next; mes "yeah..."; @a ^= 1; recalculatestat(); close; } yes, this actually works !!
     
    with version 2.0 onwards,
    no more spamming <npc name>::OnPCStatCalcEvent !!
    and even `*skill` working perfectly fine now
     
     
  17. Upvote
    Litro got a reaction from MikZ in QUEST SHOP NPC   
    how you intend to give a player 5 M zeny ? if you will give 5M zeny as an item or coin, you can use this but the menu will have ugly outcome since it have long pharase, do not use in live server before you test it, i never test this script to make sure it was working as intended
     
    - script Item Trader -1,{ mes .@npc_name$ = "["+strnpcinfo(1)+"]"; mes "Do yo want to trade some items?"; next; .@s = select(.menu$) -1; .@choice = .@s * 6; mes .@npc_name$; mes "I can trade you..."; mes .item_list[.@choice+1]+"x "+getitemname(.item_list[.@choice])+" + "+.item_list[.@choice+3]+"x "+getitemname(.item_list[.@choice+2]); mes "For exchange.."; mes .item_list[.@choice+5]+"x "+getitemname(.item_list[.@choice+4]); mes " "; mes "Do you want to?"; next; if (select("Yes:No") == 2) { mes .@npc_name$; mes "All right "+callfunc("F_Bye"); close; } mes .@npc_name$; if (countitem(.item_list[.@choice+4]) < .item_list[.@choice+5]) { mes "You dont have enought item I want."; close; } mes "Glad to do bussines with you"; delitem .item_list[.@choice+4], .item_list[.@choice+5]; for (.@i = .@choice; .@i < .@choice+4; .@i+=2) getitem item_list[.@i], .item_list[.@i+1]; close;OnInit: setarray .item_list, 7539,1, 501,1, 7227,1, // <Item ID>,<Amount>,<Item ID>,<Amount>,<Item Price>,<Amount> 7539,2, 502,2, 7227,2, 7539,3, 503,3, 7227,3; .menu$ = ""; for (.@i = 0; .@i < getarraysize(.item_list); .@i+=6) .menu$ += .item_list[.@i+1]+"x "+getitemname(.item_list[.@i])+" + "+.item_list[.@i+3]+"x "+getitemname(.item_list[.@i+2])+" = "+.item_list[.@i+5]+"x "+getitemname(.item_list[.@i+4])+":"; end;}
  18. Upvote
    Litro got a reaction from MikZ in QUEST SHOP NPC   
    try this ripped form Euphy's Quest Shop, i'm trying to match your request , do not use it in live server before you test it in your local server this script yet be tested by my self but it pas script check
    -  script  Item Trader  -1,{  function Chk;  mes .@npc_name$ = "["+strnpcinfo(1)+"]";  mes "I can trade you some TCG, do you want it?";  next;  .@s = select(.menu$);  copyarray .@q[0],getd(".q_"+.@s+"[0]"),getarraysize(getd(".q_"+.@s));  mes .@npc_name$;  mes "I can trade you...";  mes .@q[2]+"x "+getitemname(.@q[1]);  mes "For exchange..";  if (.@q[3]) mes " > "+Chk(Zeny,.@q[4])+(.@q[4])+" Zeny^000000";  if (.@q[4]) for (.@i = 4; .@i < getarraysize(.@q); .@i += 2)    mes " > "+Chk(countitem(.@q[.@i]), .@q[.@i+1])+getitemname(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+(.@q[.@i+1])+")^000000";  next;  if (select("Trade:No") == 2) {    mes .@npc_name$;    mes "All right "+callfunc("F_Bye");    close;  }  if (@qe[0]) {    mes .@npc_name$;    mes "You're missing one or more requirements.";    @qe = 0;    close;  }  if (!checkweight(.@q[1],.@q[2])) {    mes .@npc_name$;    mes "^FF0000You need "+(((.@q[2]*getiteminfo(.@q[1],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000";    close;  }  if (.@q[3]) Zeny -= .@q[4];  if (.@q[4])    for (.@i = 4; .@i < getarraysize(.@q); .@i += 2)      delitem .@q[.@i], .@q[.@i+1];  getitem .@q[1], .@q[2];  mes .@npc_name$;  mes "Thanks, Glad to have a bussines with you "+callfunc("F_Bye");  specialeffect2 EF_FLOWERLEAF;  close;OnInit:  function Add;  .menu$ = "";  // Add(<menu index>, <item reward id>, <item reward amount>, <zeny requirement>, <item requirement id>, <item requiremnt amount>{,...});  Add(1, 7227,1, 1000000000, 501,1);  Add(2, 7227,2, 1500000000, 502,2,503,3);  Add(3, 7227,3, 2000000000, 503,3,504,4,505,5);  end;  function Chk {  if (getarg(0) < getarg(1)) {    @qe = 1;    return "^FF0000";  } else    return "^00FF00";}function Add {  if (getitemname(getarg(1)) == "null") {    debugmes "Item Trader: invalid item id in index #"+getarg(0)+" (skipped).";    return;  }  setarray .@j[0],getarg(0), getarg(1), getarg(2),getarg(3);  for(.@i = 4; .@i < getargcount(); .@i += 2) {    if (getitemname(getarg(.@i)) == "null") {      debugmes "Item Trader: index #"+getarg(0)+" have invalid requirement item id #"+getarg(.@i)+" (skipped).";      return;    } else      setarray .@j[.@i], getarg(.@i), getarg(.@i+1);  }  copyarray getd(".q_"+getarg(0)+"[0]"), .@j[0],getarraysize(.@j);  .menu$ += getarg(2)+"x "+getitemname(getarg(1))+":";  return;}}
  19. Upvote
    Litro got a reaction from AnnieRuru in how to make this inventory (Alt+E) shorter ?   
    it seem you got uncompatible msgstringtable maam, you can get it from translation github either from here or this
     
    and if the inventory still have long window alternatively you can edit the msgstringtable for inventory....
    Line: 1466 = Usable ItemsLine: 1472 = Etc. ItemsLine: 2051 = EquipmentLine: 2052 = Personal/Favourite Tab
  20. Upvote
    Litro reacted to • TSilver • in [WIP] TProtect for Ragnarok Servers   
    News : Will be releasing some binaries later.
  21. Upvote
    Litro reacted to ossi0110 in 2014-10-22 Client Download   
    Just a Small note ,  i figured out the Problem with the Equip window while checking the EQ of other players, it will be fixed in the next days.
     
    Also i will release a new Full client for a Recent 2015 Client
     
    and when all its done the 2015-10-01 Client will be released too with the New Dorma race
  22. Upvote
    Litro got a reaction from MikZ in RK RUNESTONE   
    Upper: Equippable upper-types. Uses the following bitmasks: Normal jobs: 0x01 (1) Upper jobs: 0x02 (2) Baby jobs: 0x04 (4) Third jobs: 0x08 (8) Upper Third jobs: 0x10 (16) Baby Third jobs: 0x20 (32) Under pre-re mode third classes are considered upper, making use of the 8 and above masks is therefore not necessary unless in renewal mode. When no value is specified, all classes (mask 0x3f) are able to equip the item. change
    Upper: 8 to
    Upper: 56 that will be Third + Upper Third + Baby Third jobs who can use the runes
  23. Upvote
    Litro got a reaction from mrlongshen in Farm zone no mob ?   
    can't see where is error that cause no mobs spawning except for mapflag nogo (not sure that will stop the script to run again or stop entirely at that point), there is 2 nogo in the first post in code box except that i think the script will run as supposed to be... if you want you can try this one
     
    prontera,164,172,5 script Farm Zone 4_F_JPN2,{ while(1) { mes "How can i help you ?"; switch( select( "Information:Farm Items" )) { case 1: mes "This is a Farm Zone."; mes "You are able to Hunt Monster inside this Room."; mes "Every Monster will award you random items."; next; mes "But there is some Condition.."; mes "You can only go in ^FF0000once every "+.RoomCleanMin+" minutes for 1 times.^000000"; mes "And Maximum of ^FF0000"+.MaxPlayers+" Players per "+.RoomCleanMin+" Minutes.^000000"; mes "Maximum Hunting Limit ^FF0000"+.MaxItemLimit+"^000000"; next; mes "There will be a ^FF0000Room Cleaning^000000 from time to time..."; mes "All players will be kicked out, it is your bad luck if you meet this."; mes "Delay will still apply even though you just go in for 1 Seconds.."; next; break; case 2: if (#HuntRoomDelay > gettimetick(2)) { .@last = #HuntRoomDelay - gettimetick(2); .@min = .@last % ( 24 * 3600 ) % 3600 / (60); mes "Wait for ^FF0000"+.@min+" Minutes^000000."; close; } else if (getarraysize(.Hunter) >= .MaxPlayers ) { mes "Currently the Room is Full. Please try again later."; close; } else { warp .Map$,0,0; .Hunter[getarraysize( .Hunter )] = strcharinfo(0); #HuntRoomDelay = gettimetick(2) + ( .DelayMin * 60 ); #FarmHunt = 0; end; } } }OnInit: function RandomizeItem; .MaxPlayers = 2; // Maximum Player can join per X Minutes. .DelayMin = 1; // Adding X Minutes of Delay before can go in again. .MaxItemLimit = 10; // Maximum Hunt Limit per round inside the Zone. .Map$ = "guild_vs5"; // Map that will be used in thos Zone. .RoomCleanMin = 15; // Clear Map Every X Minutes. // Mapflag Initialization setarray .@mapflag, mf_nomobloot, mf_nomvploot, mf_nowarp, mf_nowarpto, mf_nochat, mf_novending, mf_nojobexp, mf_nobaseexp; for (.@i = 0; .@i < getarraysize(.@mapflag); .@i++) setmapflag .Map$, .@mapflag[.@i]; setmapflag .Map$, mf_nocommand, 60; while(1) { killmonster .Map$,"All"; mapwarp .Map$,"prontera",155,181; monster .Map$, 0, 0,"[ Farm Zone ] Resident", -1, 80, strnpcinfo(0)+"::OnNormalKill"; monster .Map$, 0, 0,"[ Farm Zone ] Guardian", -3, 5, strnpcinfo(0)+"::OnBossKill"; deletearray .Hunter,getarraysize( .Hunter ); announce "[ Farm Zone ] : Farming Zone has been Cleaned up, another 5 Players may go in now.",bc_blue; sleep ( .RoomCleanMin * 60000 ); mapannounce .Map$,"[ Farm Zone ] : Room Clean Up now...All Users will be warped Out.",0; killmonster .Map$,"All"; sleep 3000; } end;OnNormalKill: RandomizeItem( 0,rand(1,5) ); monster .Map$,0,0,"--ja--",-1,1,strnpcinfo(0)+"::OnNormalKill"; end;OnBossKill: RandomizeItem( 1,rand(1,3) ); monster .Map$,0,0,"--ja--",-3,1,strnpcinfo(0)+"::OnBossKill"; end;// Function that used to Generate Random Itemsfunction RandomizeItem { #FarmHunt += getarg(1); // Normal Monster in Zone Drops Lists if( getarg(0) == 0 ) setarray .ItemList[0],13989,14232,13517,7139,12033,12016,14534; // Normal Boss in Zone Drops Lists if( getarg(0) == 1 ) setarray .ItemList[0],14536,12912,12267,12266,14601,13830,13831,13832,13833; for(.@i = 1; .@i <= getarg(1); .@i++) getitem .ItemList[rand(getarraysize(.ItemList))], 1; deletearray .ItemList, getarraysize(.ItemList); dispbottom "[ Farm Zone ] : Farmed "+#FarmHunt+" / "+.MaxItemLimit+" Items"; if (#FarmHunt >= .MaxItemLimit) { message strcharinfo(0),"Limit Reach , you may join again later."; sleep2 2000; warp "prontera",155,181; } return;}}
  24. Upvote
    Litro reacted to Haru in Mob DB file structure overhaul   
    Mob DB file structure overhaul
     
    Hello~!
     
    Just like the Item DB, the Mob DB has a less than optimal (read: terrible) format, that doesn't play well with Git or any other Version Control System.
     
    For example, this is a snippet from the current file:
    1012,RODA_FROG,Roda Frog,Roda Frog,5,133,0,6,5,1,11,14,0,5,1,5,5,5,10,5,10,12,1,5,21,0x81,200,2016,816,288,0,0,0,0,0,0,0,918,9000,908,500,511,300,721,7,713,2000,0,0,0,0,0,0,0,0,4014,11013,WOLF,Wolf,Wolf,25,919,0,329,199,1,37,46,0,0,1,20,28,15,32,20,10,12,1,2,22,0x1089,200,1054,504,432,0,0,0,0,0,0,0,1011,20,920,9000,2308,10,517,650,528,1050,919,5500,578,600,0,0,0,0,4029,1 1014,SPORE,Spore,Spore,16,510,0,66,108,1,24,48,0,5,1,12,12,5,19,8,10,12,1,3,21,0x81,200,1872,672,288,0,0,0,0,0,0,0,921,9000,507,800,510,50,743,10,2220,40,7033,5,578,600,0,0,0,0,4022,11015,ZOMBIE,Zombie,Zombie,15,534,0,50,33,1,67,79,0,10,1,8,7,0,15,0,10,12,1,1,29,0x3885,400,2612,912,288,0,0,0,0,0,0,0,957,9000,724,5,938,1000,958,50,727,70,0,0,0,0,0,0,0,0,4038,1 Can you tell, at a glance, if any of these mobs drops a Strawberry? You certainly can't (unless you already know).
     
    Now, after locating the Strawberry drop, what happens if we want to remove it?
    1012,RODA_FROG,Roda Frog,Roda Frog,5,133,0,6,5,1,11,14,0,5,1,5,5,5,10,5,10,12,1,5,21,0x81,200,2016,816,288,0,0,0,0,0,0,0,918,9000,908,500,511,300,721,7,713,2000,0,0,0,0,0,0,0,0,4014,11013,WOLF,Wolf,Wolf,25,919,0,329,199,1,37,46,0,0,1,20,28,15,32,20,10,12,1,2,22,0x1089,200,1054,504,432,0,0,0,0,0,0,0,1011,20,920,9000,2308,10,517,650,528,1050,919,5500,0,0,0,0,0,0,4029,1 1014,SPORE,Spore,Spore,16,510,0,66,108,1,24,48,0,5,1,12,12,5,19,8,10,12,1,3,21,0x81,200,1872,672,288,0,0,0,0,0,0,0,921,9000,507,800,510,50,743,10,2220,40,7033,5,0,0,0,0,0,4022,11015,ZOMBIE,Zombie,Zombie,15,534,0,50,33,1,67,79,0,10,1,8,7,0,15,0,10,12,1,1,29,0x3885,400,2612,912,288,0,0,0,0,0,0,0,957,9000,724,5,938,1000,958,50,727,70,0,0,0,0,0,0,0,0,4038,1 How many Strawberry entries did I remove and from which lines? Can you tell at a glance? Certainly not.
     
    What happens if we try to diff it? (this is the output of 'git diff' with the modified file)
    @@ -16,8 +16,8 @@ 1010,WILOW,Willow,Willow,4,95,0,5,4,1,9,12,5,15,1,4,8,30,9,10,10,12,1,3,22,0x81,200,1672,672,432,0,0,0,0,0,0,0,902,9000,1019,100,907,1500,516,700,1068,3500,1067,2000,1066,1000,0,0,0,0,4010,1 1011,CHONCHON,Chonchon,Chonchon,4,67,0,5,4,1,10,13,10,0,1,10,4,5,12,2,10,12,0,4,24,0x181,200,1076,576,480,0,0,0,0,0,0,0,998,50,935,6500,909,1500,1205,55,601,100,742,5,1002,150,0,0,0,0,4009,1 1012,RODA_FROG,Roda Frog,Roda Frog,5,133,0,6,5,1,11,14,0,5,1,5,5,5,10,5,10,12,1,5,21,0x81,200,2016,816,288,0,0,0,0,0,0,0,918,9000,908,500,511,300,721,7,713,2000,0,0,0,0,0,0,0,0,4014,1 -1013,WOLF,Wolf,Wolf,25,919,0,329,199,1,37,46,0,0,1,20,28,15,32,20,10,12,1,2,22,0x1089,200,1054,504,432,0,0,0,0,0,0,0,1011,20,920,9000,2308,10,517,650,528,1050,919,5500,578,600,0,0,0,0,4029,1 -1014,SPORE,Spore,Spore,16,510,0,66,108,1,24,48,0,5,1,12,12,5,19,8,10,12,1,3,21,0x81,200,1872,672,288,0,0,0,0,0,0,0,921,9000,507,800,510,50,743,10,2220,40,7033,5,578,600,0,0,0,0,4022,1 +1013,WOLF,Wolf,Wolf,25,919,0,329,199,1,37,46,0,0,1,20,28,15,32,20,10,12,1,2,22,0x1089,200,1054,504,432,0,0,0,0,0,0,0,1011,20,920,9000,2308,10,517,650,528,1050,919,5500,0,0,0,0,0,0,4029,1 +1014,SPORE,Spore,Spore,16,510,0,66,108,1,24,48,0,5,1,12,12,5,19,8,10,12,1,3,21,0x81,200,1872,672,288,0,0,0,0,0,0,0,921,9000,507,800,510,50,743,10,2220,40,7033,5,0,0,0,0,0,4022,1 1015,ZOMBIE,Zombie,Zombie,15,534,0,50,33,1,67,79,0,10,1,8,7,0,15,0,10,12,1,1,29,0x3885,400,2612,912,288,0,0,0,0,0,0,0,957,9000,724,5,938,1000,958,50,727,70,0,0,0,0,0,0,0,0,4038,1 1016,ARCHER_SKELETON,Archer Skeleton,Archer Skeleton,31,3040,0,483,283,9,128,153,0,0,1,8,14,5,90,5,10,12,1,1,29,0x2085,300,2864,864,576,0,0,0,0,0,0,0,932,4500,756,70,2285,3,1708,35,1752,1000,507,1800,1701,150,0,0,0,0,4094,1 //1017,THIEF_BUG_FEMALE,Thief Bug Female,Thief Bug Female,10,170,0,35,18,1,33,40,5,5,1,15,10,5,23,5,10,12,1,4,27,0x651,200,988,288,768,0,0,0,0,0,0,0,955,3500,910,250,1108,15,928,200,507,400,716,50,1002,400,0,0,0,0,4026,1 Oh, so two lines were modified. Now, to locate the entry that was changed. By the way, you didn't notice that I purposely introduced a syntax error, did you? (hint: count the commas in the SPORE line: there's one less entry!)
     
    Now what happens if someone else changes the file (on a nearby, but unrelated line), and you pull the change?
    <<<<<<< HEAD 1012,RODA_FROG,Roda Frog,Roda Frog,5,133,0,6,5,1,11,14,0,5,1,5,5,5,10,5,10,12,1,5,21,0x81,200,2016,816,288,0,0,0,0,0,0,0,918,9000,908,500,511,300,721,7,713,2000,0,0,0,0,0,0,0,0,4014,1 1013,WOLF,Wolf,Wolf,25,919,0,329,199,1,37,46,0,0,1,20,28,15,32,20,10,12,1,2,22,0x1089,200,1054,504,432,0,0,0,0,0,0,0,1011,20,920,9000,2308,10,517,650,528,1050,919,5500,0,0,0,0,0,0,4029,1 1014,SPORE,Spore,Spore,16,510,0,66,108,1,24,48,0,5,1,12,12,5,19,8,10,12,1,3,21,0x81,200,1872,672,288,0,0,0,0,0,0,0,921,9000,507,800,510,50,743,10,2220,40,7033,5,0,0,0,0,0,4022,1 =======1012,RODA_FROG,Roda Frog,Roda Frog,5,133,0,6,5,1,11,14,0,5,1,5,5,5,10,5,10,12,1,5,21,0x81,200,2016,816,288,0,0,0,0,0,0,0,918,9000,908,500,511,300,721,7,713,2000,578,600,0,0,0,0,0,0,4014,1 1013,WOLF,Wolf,Wolf,25,919,0,329,199,1,37,46,0,0,1,20,28,15,32,20,10,12,1,2,22,0x1089,200,1054,504,432,0,0,0,0,0,0,0,1011,20,920,9000,2308,10,517,650,528,1050,919,5500,578,600,0,0,0,0,4029,1 1014,SPORE,Spore,Spore,16,510,0,66,106,1,24,48,0,5,1,12,12,5,19,8,10,12,1,3,21,0x81,200,1872,672,288,0,0,0,0,0,0,0,0,921,9000,507,800,510,50,743,10,2220,40,7033,5,578,600,0,0,0,0,4022,1 >>>>>>> upstream change Well, have fun figuring out how to merge it! (hint: a Strawberry drop was added to RODA_FROG -- could you tell? And now, are you sure nothing else was changed? Doublecheck? Would you believe it if I said that SPORE's Job EXP was also decreased by two? Anything else? I'll leave that as homework.)
     
     
    How do we fix it?
     
    Once again, we're switching to a different file format. Just like last time, it'll be libconfig. We're aware there are plenty of other suitable file formats out there (who said yaml?), but unfortunately this is not the time and place to change what was already started, and we'll have to stick with libconfig for the time being. (we'll see about writing some tools that leverage the Hercules libconfig parser to lessen everyone's pain).
     
    Some highlights:
    There is no need for those annoying sequences of zeros. If a mob drops less than 10 items, only the needed entries will be there. The mob_db2 entries can be left incomplete and set to inherit the original mob_db entry. If you want your SPORE to have higher Attack, , you can just write that in your mob_db2, and let it read the other values from the mob_db, so that if we update them, you get the update automatically We can finally add more fields (to support new features) to the file at any time, easily and without having to edit all the lines (or force you to edit all the lines of your custom mob_db2)! What does it look like?
     
    Each entry follows this structure:
    {     // =================== Mandatory fields ===============================     Id: ID                                (int)     SpriteName: "SPRITE_NAME"             (string)     Name: "Mob name"                      (string)     // =================== Optional fields ================================     Lv: level                             (int, defaults to 1)     Hp: health                            (int, defaults to 1)     Sp: mana                              (int, defaults to 0)     Exp: basic experience                 (int, defaults to 0)     JExp: job experience                  (int, defaults to 0)     AttackRange: attack range             (int, defaults to 1)     Attack: [attack1, attack2]            (int, defaults to 0)     Def: defence                          (int, defaults to 0)     Mdef: magic defence                   (int, defaults to 0)     Stats: {         Str: strength                 (int, defaults to 0)         Agi: agility                  (int, defaults to 0)         Vit: vitality                 (int, defaults to 0)         Int: intelligence             (int, defaults to 0)         Dex: dexterity                (int, defaults to 0)         Luk: luck                     (int, defaults to 0)     }     ViewRange: view range                 (int, defaults to 1)     ChaseRange: chase range               (int, defaults to 1)     Size: size                            (int, defaults to 1)     Race: race                            (int, defaults to 0)     Element: (type, level)     Mode: {         CanMove: true/false           (bool)         Looter: true/false            (bool)         Aggressive: true/false        (bool)         Assist: true/false            (bool)         CastSensorIdle:true/false     (bool)         Boss: true/false              (bool)         Plant: true/false             (bool)         CanAttack: true/false         (bool)         Detector: true/false          (bool)         CastSensorChase: true/false   (bool)         ChangeChase: true/false       (bool)         Angry: true/false             (bool)         ChangeTargetMelee: true/false (bool)         ChangeTargetChase: true/false (bool)         TargetWeak: true/false        (bool)     }     MoveSpeed: move speed                 (int, defaults to 0)     AttackDelay: attack delay             (int, defaults to 4000)     AttackMotion: attack motion           (int, defaults to 2000)     DamageMotion: damage motion           (int, defaults to 0)     MvpExp: mvp experience                (int, defaults to 0)     MvpDrops: {         AegisName: chance             (string: int)         ...     }     Drops: {         AegisName: chance         (string: int)         ...     } } Here's a PORING in the old format:
    1002,PORING,Poring,Poring,1,50,0,2,1,1,7,10,0,5,1,1,1,0,6,30,10,12,1,3,21,0x83,400,1872,672,480,0,0,0,0,0,0,0,909,7000,1202,100,938,400,512,1000,713,1500,512,150,619,20,0,0,0,0,4001,1 And here's the same PORING in the new format:
    {     Id: 1002     SpriteName: "PORING"     Name: "Poring"     Lv: 1     Hp: 50     Sp: 0     Exp: 2     JExp: 1     AttackRange: 1     Attack: [7, 10]     Def: 0     Mdef: 5     Stats: {         Str: 1         Agi: 1         Vit: 1         Int: 0         Dex: 6         Luk: 30     }     ViewRange: 10     ChaseRange: 12     Size: 1     Race: 3     Element: (1, 1)     Mode: {         CanMove: true         Looter: true         CanAttack: true     }     MoveSpeed: 400     AttackDelay: 1872     AttackMotion: 672     DamageMotion: 480     MvpExp: 0     Drops: {         Jellopy: 7000         Knife_: 100         Sticky_Mucus: 400         Apple: 1000         Empty_Bottle: 1500         Apple: 150         Unripe_Apple: 20         Poring_Card: 1     } }, Not convinced yet it's better?
     
    Do you like Strawberries? Irrelevant? Not really:
    {     Id: 1012     SpriteName: "RODA_FROG"     Name: "Roda Frog"     Lv: 5     Hp: 133     Sp: 0     Exp: 6     JExp: 5     AttackRange: 1     Attack: [11, 14]     Def: 0     Mdef: 5     Stats: {         Str: 1         Agi: 5         Vit: 5         Int: 5         Dex: 10         Luk: 5     }     ViewRange: 10     ChaseRange: 12     Size: 1     Race: 5     Element: (1, 1)     Mode: {         CanMove: true         CanAttack: true     }     MoveSpeed: 200     AttackDelay: 2016     AttackMotion: 816     DamageMotion: 288     MvpExp: 0     Drops: {         Sticky_Webfoot: 9000         Spawn: 500         Green_Herb: 300         Azure_Jewel: 7         Empty_Bottle: 2000         Roda_Frog_Card: 1     } }, {     Id: 1013     SpriteName: "WOLF"     Name: "Wolf"     Lv: 25     Hp: 919     Sp: 0     Exp: 329     JExp: 199     AttackRange: 1     Attack: [37, 46]     Def: 0     Mdef: 0     Stats: {         Str: 1         Agi: 20         Vit: 28         Int: 15         Dex: 32         Luk: 20     }     ViewRange: 10     ChaseRange: 12     Size: 1     Race: 2     Element: (2, 1)     Mode: {         CanMove: true         Assist: true         CanAttack: true         ChangeTargetMelee: true     }     MoveSpeed: 200     AttackDelay: 1054     AttackMotion: 504     DamageMotion: 432     MvpExp: 0     Drops: {         Emveretarcon: 20         Claw_Of_Wolves: 9000         Mantle_: 10         Meat: 650         Monster's_Feed: 1050         Animal's_Skin: 5500         Strawberry: 600         Wolf_Card: 1     } }, {     Id: 1014     SpriteName: "SPORE"     Name: "Spore"     Lv: 16     Hp: 510     Sp: 0     Exp: 66     JExp: 108     AttackRange: 1     Attack: [24, 48]     Def: 0     Mdef: 5     Stats: {         Str: 1         Agi: 12         Vit: 12         Int: 5         Dex: 19         Luk: 8     }     ViewRange: 10     ChaseRange: 12     Size: 1     Race: 3     Element: (1, 1)     Mode: {         CanMove: true         CanAttack: true     }     MoveSpeed: 200     AttackDelay: 1872     AttackMotion: 672     DamageMotion: 288     MvpExp: 0     Drops: {         Mushroom_Spore: 9000         Red_Herb: 800         Blue_Herb: 50         Spore_Doll: 10         Hat: 40         Poison_Spore: 5         Strawberry: 600         Spore_Card: 1     } }, {     Id: 1015     SpriteName: "ZOMBIE"     Name: "Zombie"     Lv: 15     Hp: 534     Sp: 0     Exp: 50     JExp: 33     AttackRange: 1     Attack: [67, 79]     Def: 0     Mdef: 10     Stats: {         Str: 1         Agi: 8         Vit: 7         Int: 0         Dex: 15         Luk: 0     }     ViewRange: 10     ChaseRange: 12     Size: 1     Race: 1     Element: (9, 1)     Mode: {         CanMove: true         Aggressive: true         CanAttack: true         Angry: true         ChangeTargetMelee: true         ChangeTargetChase: true     }     MoveSpeed: 400     AttackDelay: 2612     AttackMotion: 912     DamageMotion: 288     MvpExp: 0     Drops: {         Decayed_Nail: 9000         Cardinal_Jewel_: 5         Sticky_Mucus: 1000         Horrendous_Mouth: 50         White_Jewel: 70         Zombie_Card: 1     } }, Is it easier to spot all the Strawberry there? I bet.
    {     Id: 1012     SpriteName: "RODA_FROG"     Name: "Roda Frog"     Lv: 5     Hp: 133     Sp: 0     Exp: 6     JExp: 5     AttackRange: 1     Attack: [11, 14]     Def: 0     Mdef: 5     Stats: {         Str: 1         Agi: 5         Vit: 5         Int: 5         Dex: 10         Luk: 5     }     ViewRange: 10     ChaseRange: 12     Size: 1     Race: 5     Element: (1, 1)     Mode: {         CanMove: true         CanAttack: true     }     MoveSpeed: 200     AttackDelay: 2016     AttackMotion: 816     DamageMotion: 288     MvpExp: 0     Drops: {         Sticky_Webfoot: 9000         Spawn: 500         Green_Herb: 300         Azure_Jewel: 7         Empty_Bottle: 2000         Roda_Frog_Card: 1     } }, {     Id: 1013     SpriteName: "WOLF"     Name: "Wolf"     Lv: 25     Hp: 919     Sp: 0     Exp: 329     JExp: 199     AttackRange: 1     Attack: [37, 46]     Def: 0     Mdef: 0     Stats: {         Str: 1         Agi: 20         Vit: 28         Int: 15         Dex: 32         Luk: 20     }     ViewRange: 10     ChaseRange: 12     Size: 1     Race: 2     Element: (2, 1)     Mode: {         CanMove: true         Assist: true         CanAttack: true         ChangeTargetMelee: true     }     MoveSpeed: 200     AttackDelay: 1054     AttackMotion: 504     DamageMotion: 432     MvpExp: 0     Drops: {         Emveretarcon: 20         Claw_Of_Wolves: 9000         Mantle_: 10         Meat: 650         Monster's_Feed: 1050         Animal's_Skin: 5500         Wolf_Card: 1     } }, {     Id: 1014     SpriteName: "SPORE"     Name: "Spore"     Lv: 16     Hp: 510     Sp: 0     Exp: 66     JExp: 108     AttackRange: 1     Attack: [24, 48]     Def: 0     Mdef: 5     Stats: {         Str: 1         Agi: 12         Vit: 12         Int: 5         Dex: 19         Luk: 8     }     ViewRange: 10     ChaseRange: 12     Size: 1     Race: 3     Element: (1, 1)     Mode: {         CanMove: true         CanAttack: true     }     MoveSpeed: 200     AttackDelay: 1872     AttackMotion: 672     DamageMotion: 288     MvpExp: 0     Drops: {         Mushroom_Spore: 9000         Red_Herb: 800         Blue_Herb: 50         Spore_Doll: 10         Hat: 40         Poison_Spore: 5         Spore_Card: 1     } }, {     Id: 1015     SpriteName: "ZOMBIE"     Name: "Zombie"     Lv: 15     Hp: 534     Sp: 0     Exp: 50     JExp: 33     AttackRange: 1     Attack: [67, 79]     Def: 0     Mdef: 10     Stats: {         Str: 1         Agi: 8         Vit: 7         Int: 0         Dex: 15         Luk: 0     }     ViewRange: 10     ChaseRange: 12     Size: 1     Race: 1     Element: (9, 1)     Mode: {         CanMove: true         Aggressive: true         CanAttack: true         Angry: true         ChangeTargetMelee: true         ChangeTargetChase: true     }     MoveSpeed: 400     AttackDelay: 2612     AttackMotion: 912     DamageMotion: 288     MvpExp: 0     Drops: {         Decayed_Nail: 9000         Cardinal_Jewel_: 5         Sticky_Mucus: 1000         Horrendous_Mouth: 50         White_Jewel: 70         Zombie_Card: 1     } }, Removed them all? Yup.
     
    Want to see a diff? sure:
    diff --git a/db/pre-re/mob_db.conf b/db/pre-re/mob_db.confindex 0ac34d7..ff4f0bd 100644--- a/db/pre-re/mob_db.conf+++ b/db/pre-re/mob_db.conf @@ -588,7 +588,6 @@ mob_db: (          Meat: 650          Monster's_Feed: 1050          Animal's_Skin: 5500-         Strawberry: 600          Wolf_Card: 1      } }, @@ -634,7 +633,6 @@ mob_db: (          Spore_Doll: 10          Hat: 40          Poison_Spore: 5-         Strawberry: 600          Spore_Card: 1      } }, Looks pretty? Very much so.
     
    What happens if we pull a commit like the one before?
    {     Id: 1012     SpriteName: "RODA_FROG"     Name: "Roda Frog"     Lv: 5     Hp: 133     Sp: 0     Exp: 6     JExp: 5     AttackRange: 1     Attack: [11, 14]     Def: 0     Mdef: 5     Stats: {         Str: 1         Agi: 5         Vit: 5         Int: 5         Dex: 10         Luk: 5     }     ViewRange: 10     ChaseRange: 12     Size: 1     Race: 5     Element: (1, 1)     Mode: {         CanMove: true         CanAttack: true     }     MoveSpeed: 200     AttackDelay: 2016     AttackMotion: 816     DamageMotion: 288     MvpExp: 0     Drops: {         Sticky_Webfoot: 9000         Spawn: 500         Green_Herb: 300         Azure_Jewel: 7         Empty_Bottle: 2000         Strawberry: 600         Roda_Frog_Card: 1     } }, {     Id: 1013     SpriteName: "WOLF"     Name: "Wolf"     Lv: 25     Hp: 919     Sp: 0     Exp: 329     JExp: 199     AttackRange: 1     Attack: [37, 46]     Def: 0     Mdef: 0     Stats: {         Str: 1         Agi: 20         Vit: 28         Int: 15         Dex: 32         Luk: 20     }     ViewRange: 10     ChaseRange: 12     Size: 1     Race: 2     Element: (2, 1)     Mode: {         CanMove: true         Assist: true         CanAttack: true         ChangeTargetMelee: true     }     MoveSpeed: 200     AttackDelay: 1054     AttackMotion: 504     DamageMotion: 432     MvpExp: 0     Drops: {         Emveretarcon: 20         Claw_Of_Wolves: 9000         Mantle_: 10         Meat: 650         Monster's_Feed: 1050         Animal's_Skin: 5500         Wolf_Card: 1     } }, {     Id: 1014     SpriteName: "SPORE"     Name: "Spore"     Lv: 16     Hp: 510     Sp: 0     Exp: 66     JExp: 106     AttackRange: 1     Attack: [24, 48]     Def: 0     Mdef: 5     Stats: {         Str: 1         Agi: 12         Vit: 12         Int: 5         Dex: 19         Luk: 8     }     ViewRange: 10     ChaseRange: 12     Size: 1     Race: 3     Element: (1, 1)     Mode: {         CanMove: true         CanAttack: true     }     MoveSpeed: 200     AttackDelay: 1872     AttackMotion: 672     DamageMotion: 288     MvpExp: 0     Drops: {         Mushroom_Spore: 9000         Red_Herb: 800         Blue_Herb: 50         Spore_Doll: 10         Hat: 40         Poison_Spore: 5         Spore_Card: 1     } }, {     Id: 1015     SpriteName: "ZOMBIE"     Name: "Zombie"     Lv: 15     Hp: 534     Sp: 0     Exp: 50     JExp: 33     AttackRange: 1     Attack: [67, 79]     Def: 0     Mdef: 10     Stats: {         Str: 1         Agi: 8         Vit: 7         Int: 0         Dex: 15         Luk: 0     }     ViewRange: 10     ChaseRange: 12     Size: 1     Race: 1     Element: (9, 1)     Mode: {         CanMove: true         Aggressive: true         CanAttack: true         Angry: true         ChangeTargetMelee: true         ChangeTargetChase: true     }     MoveSpeed: 400     AttackDelay: 2612     AttackMotion: 912     DamageMotion: 288     MvpExp: 0     Drops: {         Decayed_Nail: 9000         Cardinal_Jewel_: 5         Sticky_Mucus: 1000         Horrendous_Mouth: 50         White_Jewel: 70         Zombie_Card: 1     } }, What do you expect? No conflicts.
     
    What's changed? Here:
    diff --git a/db/pre-re/mob_db.conf b/db/pre-re/mob_db.confindex 0ac34d7..59a53b6 100644--- a/db/pre-re/mob_db.conf+++ b/db/pre-re/mob_db.conf @@ -541,6 +541,7 @@ mob_db: (                 Green_Herb: 300                 Azure_Jewel: 7                 Empty_Bottle: 2000 +               Strawberry: 600                 Roda_Frog_Card: 1         } }, @@ -588,7 +589,6 @@ mob_db: (                 Meat: 650                 Monster's_Feed: 1050                 Animal's_Skin: 5500 -               Strawberry: 600                 Wolf_Card: 1         } }, @@ -600,7 +600,7 @@ mob_db: (         Hp: 510         Sp: 0         Exp: 66 -       JExp: 108 +       JExp: 106         AttackRange: 1         Attack: [24, 48]         Def: 0 @@ -634,7 +634,6 @@ mob_db: (                 Spore_Doll: 10                 Hat: 40                 Poison_Spore: 5 -               Strawberry: 600                 Spore_Card: 1         } }, But... I have several custom mobs, do I have to manually convert all of them...?
     
    It's true that you need to convert your item database to the new format, but we can do it for you!
    Go to http://haru.ws/hercules/mobdbconverter/ and paste (or upload) your mob_db2.txt (or even your mob_db.txt if you have custom entries there), pick between renewal or pre-renewal (or upload your item_db if it's customized), press the Convert button, wait a few seconds and you're done! It's already converted for you. Easy, isn't it? Don't trust us? No, no, we don't need your custom mobs, you can sleep safe... But if you still don't want to paste anything on a website... well, we have provided the source code of the converter script! It's in the 'tools' folder of the Hercules repository. All you need is a Python interpreter, version 2.6 or newer (and if you're running Linux or Mac OS, on either your server or your own computer, it's almost certain that you already have that). All you have to do is run it (example: python tools/mobdbconverter.py pre-re . < db/mob_db2.txt > db/mob_db2.conf), and your item database will be converted in a split second! What if I was using SQL mob databases?
     
    Well, you're out of luck. It was deprecated long ago and it's being removed. It'll stay available for website/control panel purposes though. An automated converter (much like the db2sql plugin for the item db) will be available soon, and even executed automatically whenever we update the mob db, to keep the sql counterpart in sync!
     
    I have this event mob entry that came with an old script I downloaded...
     
    No worries, you can get it converted. Use the same script (or the provided web page) you'd use to convert an entire mob database, it'll work just fine even for a mob or two!
     
    Special thanks
    To Ind, for bringing up the idea, a long time ago. To Andrei Karas for actually doing it, after picking up this project from the bottom of our forgotten items box. To me, for putting this at the bottom of the forgotten items box, and burying it with several other things so that it'd stay there until now (sigh) Links
    Merged pull request. Web-based converter.
  25. Upvote
    Litro reacted to fxfreitas in [Showcase] FXFreitas Sprites   
    Sasuke Hairstyle Finished, will be added in my hairpack in next update.

×
×
  • Create New...

Important Information

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