Jump to content

jaBote

Community Contributors
  • Content Count

    2037
  • Joined

  • Last visited

  • Days Won

    43

Reputation Activity

  1. Upvote
    jaBote reacted to Patskie in help with this npc tia   
    Sample1 = first request
    Sample2 = second request
    Sample3 = third request
     
    Didn't test though ( /me lazy ). Just a side note i just copy the function of @KeyWorld here ( http://rathena.org/board/topic/66255-party-checker-job/?p=118481 ) so credits to him. If any error occur post it. 
    prontera,150,150,0 script Sample1 100,{ getinventorylist; query_sql "SELECT `nameid` FROM `storage` WHERE `account_id` = '" +getcharid(3)+ "'", .@names; if ( ( BaseClass == Job_Novice ) && ( BaseLevel == 1 ) && ( Zeny > 1000000 ) && ( @inventorylist_count == 0 ) && ( !.@names ) ) { for ( .@i = 1; .@i < 15; .@i++ ) { if ( getequipid(.@i) == -1 ) { mes "Where you want to warp?"; next; input .@map$; Zeny -= 1000000; warp .@map$,0,0; close; } } }}prontera,153,153,0 script Sample2 100,{ for ( .@i = 1; .@i < 15; .@i++ ) { if ( getequipid(.@i) == -1 ) { getinventorylist; for ( set .@a, 0; .@a < @inventorylist_count; .@a++ ) { delitem @inventorylist_id[.@a], @inventorylist_amount[.@a]; } jobchange Job_Novice; BaseLevel = 1; JobLevel = 1; savepoint "prontera",150,150; end; } }}prontera,156,156,0 script Sample3 100,{ if ( getcharid(2) ) { if ( callfunc("party_has_duplicate_job") ) { mes "It seems that someone in the party has the same class than another member. Please check again the requirements..."; close; } getmapxy .@map$, .@x, .@y, 0; savepoint .@map$, .@x, .@y; end; }}function script party_has_duplicate_job{ set .@party_id, getarg( 0, getcharid(1) ); // Need to have a party. if ( .@party_id != 1 ) { return -1; } // Loading party members variables getpartymember getcharid(1),1; getpartymember getcharid(1),2; // Keep rid attached. set .@rid, playerattached(); // Check all members for ( set .@i,0; .@i<$@partymembercount; set .@i, .@i+1 ) { // Online user if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i]) ) { // Attach the member to access "Class" attachrid( $@partymemberaid[.@i] ); if ( compare( .@tmp_class$ + "|", "|" + Class + "|" ) ) { if ( .@rid ) attachrid(.@rid); else detachrid; return 1; } set .@tmp_class$, .@tmp_class$ + "|" + Class; } // Offline user (use sql) else { set .@sql$, .@sql$ + ( .@sql_i ? "OR " : "" ) "`char_id`='" + $@partymembercid[.@i] + "' "; set .@sql_i, .@sql_i + 1; } } // SQL for offline users if ( getstrlen(.@sql$) ) { // get class from offline members set .@count, query_sql("SELECT `class` FROM `char` WHERE " + .@sql$, .@class ); // Check the class. for ( set .@i, 0; .@i<.@count; set .@i, .@i+1 ) { if ( compare( .@tmp_class$ + "|", "|" + .@class[.@i] + "|" ) ) { if ( .@rid ) attachrid(.@rid); else detachrid; return 1; } set .@tmp_class$, .@tmp_class$ + "|" + .@class[.@i]; } } // Restore RID. if ( .@rid ) attachrid(.@rid); else detachrid; return 0;}
  2. Upvote
    jaBote got a reaction from nikki1200 in PVP/WOE DOTA SOUNDS   
    All clients must have the sounds in their respective data folder to work, so try giving them a new GRF or better use a patcher for managing the patch of the new files.
  3. Upvote
    jaBote reacted to Angelmelody in How to change the Background Music Of Prontera Map   
    modify datamp3nametable.txt
     
    and put custom mp3 file into BGM folder
  4. Upvote
    jaBote got a reaction from nikki1200 in PVP/WOE DOTA SOUNDS   
    First, all the sounds must be in .wav format. Then, open your GRF with a tool designed for that, then go to the data/wav folder (or make it if your GRF hasn't that) and simply put all of your wavs in there.
     
    Notes: Default directory after opening a GRF is data; so you should just open the data/wav folder inside that. Also, don't use the data/wav/effect folder if it exists, just the data/wav folder. Example pic of wav folder on the official data.grf:
     

  5. Upvote
    jaBote got a reaction from Mumbles in Access denied for user root@ localhost <using password: YES>   
    Hello Khenma:
     
    Here's a guide on how to reset your password, depending on your OS: http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html
     
    About the MySQL user, you should set a valid MySQL user and password at least in your conf/inter-server.conf file. Also, the server communication ID and password are made so that char and map servers can communicate, so they must be the same. Your server communication account and password are stored in the `login` table inside your database, with its sex marked as 'S' (usually on the first row).
     
    Hope I helped.
  6. Upvote
    jaBote got a reaction from nikki1200 in WOE SCRIPT   
    Load the NPC, then access it as an admin (GM level 99, you should already know what it is).
     
    Choose the "~ Manage sessions" option, then follow the instructions.
     
    P.S.: It's unlikely you'll get detailed support from Euphy's scripts if not from Euphy himself, since they all are uncommented and its code is messy and hard to read even for seasoned scripters. Not that I dislike or despise Euphy's work, but it could be made quite plainer and edit-friendly.
  7. Upvote
    jaBote got a reaction from hemagx in Dont you think this is a good Idea?   
    The idea is good, but good developers will jealously keep their secrets from being told to other projects until they implement them first. So it won't have any actual effect on improvement of any kind.
  8. Upvote
    jaBote reacted to quesoph in Announce the Player when Entering PVP   
    single pvp room.
    - script FSRS::fsr -1,{if ( select ( "warp now!", "nothing." ) == 2 ) close; if (getmapusers(.map$[0]) >= atoi(.map$[2])) { mes "[PVP Fight Square Reception Staff]"; mes "This map is currently full."; close; } announce "[ "+strcharinfo(0)+" ] has been join the battle!",0; warp .map$[0],0,0; end;OnInit: setarray .map$[0], "pvp_y_8-2", "Izlude", 128; waitingroom "PVP TAGISAN NG LAKAS",0; end;}//Fight Square Reception Staffaldebaran,146,172,4 duplicate(fsr) PVP#f1 685 // duplicate
  9. Upvote
    jaBote got a reaction from AnnieRuru in Making Pull Requests on Hercules   
    Do you remember the many advantages Git has against Subversion (SVN)? One of those many advantages is the fact that in Git, you can send pull requests in order to directly collaborate with the community, without even the need of being an official Hercules dev, and if you contribute enough you can surely become a dev if you want. Well then, this is an – as detailed as possible – guide on how to make them.
     
    First of all: What is a pull request? It's a way of telling the original devs of a (commonly open-sourced) project what changes you've made yourself on their project supposedly for the better, and kindly ask them (request) to merge it (pull). In short, it's a way of collaborating to a project without the need of being related at all to it. Obviously, your pull request may be rejected if it doesn't meet some requirements, but this is another story.
     
    Git does also offer its own tools for pull requests (more info), but they're incompatible with the ones GitHub has. Moreover, GitHub pull request tools are easier to use than Git's.
     
    What steps are required in order to do a pull request? In abstract, you'll have to:
    Sign up for a GitHub account, if you don't have it already. Fork Hercules project in GitHub, if you haven't done this already. Clone your previous fork to a local repository in your computer, if you haven't done this already. Work on your fork. Commit your changes to your local repository. Push the changes you've previously committed to your remote repository on GitHub. Make the aforementioned pull request to the Hercules official repository. Steps 3 and 5 have already been shown on the Obtaining Hercules guide by @Ind (Obtaining Hercules through Git on *insert OS here* and Troubleshooting sections). These two steps will be slightly reviewed, but expect a fully detailed how-to in the others.
     
    By the way, GitHub also has its own (generic) guides on how to fork a repo and then make a pull request, which also explain the toughest parts of this guide (though they're not so tough) and cover steps 2-6 (supposing you have a Git console). You're encouraged to go and read them if you want.
     
    Well, here we go with the guide!
     
    Step 1: Sign up for a GitHub account



    Step 2: Fork Hercules project in GitHub



    Steps 3 to 6: Local computer work



    Step 7: (Finally) submitting the pull request


     
    Congratulations! You have successfully made your first pull request on Hercules! This is a reason to be proud of yourself, isnt it?
  10. Upvote
    jaBote reacted to Angelmelody in Please Implement party script command   
    It's  useful  , hope devs agree
     
    http://trac.rathena.org/changeset/17414/rathena
    http://trac.rathena.org/changeset/17415/rathena
  11. Upvote
    jaBote reacted to Mhalicot in Question about Droprate Setting   
    Hi,
     
    Assuming you are using Renewal.
     
    go to src/config/renewal.h
     
    search for this
    /// renewal drop rate algorithms/// (disable by commenting the line)////// leave this line to enable renewal item drop rate algorithms/// while enabled a special modified based on the difference between the player and monster level is applied/// based on the http://irowiki.org/wiki/Drop_System#Level_Factor table#define RENEWAL_DROP in this feature.. monster level gap affects the percentage of drops.
     
    then if its in comment like //#define RENEWAL_DROP
     
    meaning it is disabled, Enable it to make it work like what you mentioned, but leave it in comment if you dont want.
     
    -----------
    and you can also try to use this feature if you want to based increase droprate based on luk
    conf/battle/drops.conf
     
    // Makes your LUK value affect drop rates on an absolute basis.// Setting to 100 means each luk adds 0.01% chance to find items// (regardless of item's base drop rate).drops_by_luk: 0// Makes your LUK value affect drop rates on a relative basis.// Setting to 100 means each luk adds 1% chance to find items// (So at 100 luk, everything will have double chance of dropping).drops_by_luk2: 0
  12. Upvote
    jaBote got a reaction from Angelmelody in limit 3 times per week how to write?   
    This counts a week from the first time you talk to the NPC. I could calculate next Monday for you but I'll do that when I'm back home or have some free time, if anybody else hasn't already done that.
     
    P.S.: It's easier if you calculate next Sunday instead of Monday.
  13. Upvote
    jaBote reacted to Mhalicot in Account Bound Items   
    ~ Original: by Xantara
    ~ Updated by Akanari [Guild/Party/Char]Bind
    ~ Merged by Mhalicot
     
    Update:
    ~ Added Guild/Party/Char/Account Bind
    ~ Include Akanari's NPC
    ~ Request by: quesoph
    ~ Pull Req: 2b074de9cd5d4f3ebd115c4db799c2453346a7ce
    ~ Item default.
     
     
     
     
    ~ If Bounded
     
     
  14. Upvote
    jaBote got a reaction from Mumbles in Block npc by IP adress   
    You could use getcharip() for that, then use some structure like this inside of a NPC:
     
    // NPC Variables used:// .blockedips$ for storing the blocked IPs;// .ipunblocktime for storing the unblock time at the same index as .blockedips$// WARNING!! Up to 128 IP blocks at a time!//Little config you'll need:set .@blocktime, 60; // Block time (in seconds)set .@ip$, getcharip();if ( .@ip$ != "" ) { set .@array_size, getarraysize(.blockedips$); // Getting the array size for the calculations for ( set .@i, 0; .@i < .@array_size; set .@i, .@i + 1 ) { // Checking and removing timed out blocks and if the player is still blocked while ( .ipunblocktime[.@i] < gettimetick(2) && .@i < .@array_size ) { // Bulk removing timed out blocks if more than one in a row, caring not to go outside of the array deletearray .blockedips$[.@i],1; deletearray .ipunblocktime[.@i],1; set .@array_size, .@array_size - 1; // Correction for the array size } if ( .blockedips$[.@i] == .@ip$ ) { // No need to check if outside the array since these values will be "" and forcefully .@i <= 127. Also no need to check if outdated since it should have been removed before set .@blockedtime, gettimetick(2) - .ipunblocktime[.@i]; // Remaining time in seconds of the block // break; // Uncomment if you don't want the loop to finish checking for timed out blocks after finding the player if it's on the list } } if ( .@blockedtime ) { mes "Oh, your IP is still blocked."; mes "You still can't use me for the next " + .@blockedtime + " seconds."; close; } mes "OK, I'll give you an apple and block you for " + .@blocktime + " seconds."; close2; getitem 512,1; set .blockedips$[.@array_size],.@ip$; set .ipunblocktime[.@array_size], gettimetick(2) + .@blocktime; end;}  
    You can modify it the way you want to accomplish your needs.
  15. Upvote
    jaBote reacted to Mhalicot in Emperium Breaker Event (Just a new IDEA)   
    change the 
    monster "prontera",150,150,"Emperium",1288,1,strnpcinfo(1)+ "::OnKill"; to 
    monster "prontera",0,0,"Emperium",1288,1,strnpcinfo(1)+ "::OnKill";
  16. Upvote
    jaBote got a reaction from Angelmelody in Obtaining Hercules   
    If you haven't committed the changes yet, you can do as follows (on that pic I "accidentally" deleted conf/map folder with all contents):
     
    Right click on your repository folder or the folder you accidentally deleted files from (whichever you like). Then hover the mouse over TortoiseGit and select Revert... on the new menu.

    A new window will appear. This will let you select any of the files you deleted or modified for reverting the changes (on all the repository or just in that folder if you opted for selecting that folder). Watch out since if you revert a modified file, you won't be able to retrieve your former changes. Select what you want to revert, then click OK
    A new window will appear, which will revert all selected files for you. Wait for it to finish, then click OK an now you're done!
    Hope this works! 
    P.S.: If you don't know if you have committed it or that word doesn't seem familiar to you, then chances are you haven't done it since commits are almost always done on purpose
     
    Sorry for using the Spanish UI, but it shouldn't be much of a problem here since I use English TortoiseGit.
  17. Upvote
    jaBote reacted to malufett in Monster Transform Update   
    Monster Transform Update

    What is it?
    A new feature when in you can transform your characters into monsters and you can still use all your skills like a normal character do. The Transformation Scroll is consumable for 20 mins. Can only be removed when your killed or if you die. What are those?
    Deviruchi Scroll: Increase ASPD +1, HIT + 5 during transformed as Deviruchi. Raydric Archer Scroll: Increase attack 25% by using bow. Mavka Scroll: Increase attack 25% by using bow. Marduk Scroll: Increase magical attack 25%. Banshee Scroll: Increase magical attack 25%. Poring Scroll: Increase critical damage 25% during transformed as Poring Golem Scroll: Increase  resistance of non property 2% and activate Endure 5Lv by certain chance when gets physical attack. Changes:You can customize your transformation by using 'montransformation' script command and add specific status effect. ex. montransform <monster name>, <duration>, <sc type>, <val1>, <val2>, <val3>, <val4> This feature can be disabled in GvG by switching its config in 'confbattlemisc.conf' // Is monster transformation disabled during Guild Wars? // If set to yes, monster transforming is automatically removed/disabled when entering castles during WoE times mon_trans_disable_in_gvg: no 
    Special Thanks:Beret Kyeme Super Awesome Yommy Link/s:commit Screenshot/s:

     
  18. Upvote
    jaBote reacted to Mhalicot in Help emblem not working!! BUMP   
    The emblem must be in  .bmp format and 24x24 px size..
     
    and make a new folder inside your RO folder and name it "Emblem"
     
    then your done..
  19. Upvote
    jaBote reacted to Ai4rei in RO Patcher Lite, v4.2.3.1325 - last updated 2024/05/11   
    RO Patcher Lite


    About
    Replacement for Gravity's RO patcher. Works faster and doesn't consume your entire memory for just seeing it crashing, aside from this, it works almost exactly as the official patcher does, so that it shouldn't break, unless Gravity changes something vital to their patcher. It works on every 32-bit and 64-bit Microsoft* Windows* platform and is free of any cost.

    Known Issues
    None.

    Download & Website
    http://ai4rei.net/p/rsu

    License

    This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 4.0 International License.
  20. Upvote
    jaBote reacted to Ind in Introducing Bank Support   
    Bank Support

    Account-Wide Bank
    May store up to 2.1 Billion Zeny Works on clients from 2013-07-24 onwards New DB Table 'account_data' Primarily to store the bank value, we have plans to employ it on new features as well (the official exp/death/drop modifiers for example) Run the '2013-10-09--21-38.sql' and '2013-10-10--16-36.sql' upgrade files. New Log TypeBan(K) to store bank transactions Bank Enable/Disable SwitchIn /conf/battle/feature.conf map-server.conf/save_settings UpdateNew '256' option to save bank transactions as soon as they take place. Made Possible Thanks to Yommy
    Wouldn't have been able to complete the feature without all the data Yommy made available, Thanks! Special Thanks
    Yommy Haru Links~!
    Commit
  21. Upvote
    jaBote reacted to Mumbles in Pawn Shop   
    @themon
    I apologise for being blunt, but I'm no scripting god or machine lol. I fulfilled your request for a few reasons:
    Nobody else did The script didn't exist anywhere else (to my knowledge) I found the idea intriguing

    I'm glad you enjoyed my script enough to want more (it's flattering, honestly), but I'm unable to fulfill such a large quantity of requests at one time. If you would like your other scripts to be reviewed, please post individual requests in the appropriate forums with as much detail as you are able to provide.
  22. Upvote
    jaBote got a reaction from kyeme in successrefitem   
    Nope. That script is quite processor intensive compared to the recent modification to downrefitem, which is just quite processor straightforward with the use of only 1 scripting command, not calling it on a loop.
  23. Upvote
    jaBote reacted to Ind in HPM Hooking Now Available!   
    Hercules Plugin Manager: Hooking
     
    Hello~! What?!
    In March 1st we started the Hercules Renewal Phase One, in order to prepare Hercules for this update, and now 7 months later it's fully complete, we've gone all over the map-server's code, taken hundreds of notes, modified thousands of lines, and have greatly improved our knowledge, making it very much worth the effort. HPM Hooking
    Zero Processing OverheadNormally programs that avail hooking end up paying a price for it, processing-time-wise, HPM Design frees Hercules from that toll -- absolutely no processing overhead to functions not being hooked to. Smart, Flexible Design Hooks receive all function params as pointers, whereas the original is int pc_dropitem(struct map_session_data *sd,int n,int amount)the one for the hook shall be (struct map_session_data *sd,int *n,int *amount)which allows for hooks to modify any and all data as it pleases.
    postHooks receive one additional param, which accounts for the result of the original function, int <name>(int retVal, struct map_session_data *sd,int *n,int *amount)In this case it'd allow for the postHook to react properly to what the original returned, in this case (for pc_dropitem) 0 (failure) or 1 (success) Hooking is a simple operation, it is possible to hook an infinite number of times to the over 2k hookable functions (all the interfaced ones, accounting for over 99% of map server) HPExport void plugin_init (void) {     addHookPre("pc->dropitem",my_pc_dropitem_preHook);  /* int my_pc_dropitem_preHook(struct map_session_data *sd,int *n,int *amount) */     addHookPost("pc->dropitem",my_pc_dropitem_postHook);/* int my_pc_dropitem_postHook(int retVal, struct map_session_data *sd,int *n,int *amount) */ } DocumentationThe sample plugin has already been updated to demonstrate hooking, the documentation present in the wiki will be updated shortly. Hercules-Hooks Updates This covers how we'll maintain the hookable points up to date with the game server's code The cache that boosts the hooks -- Made Possible Thanks to Haruna! -- is maintained by an application, for a couple days it will remain like that so we can keep an eye on it and debug as we go, once we're confident with it we'll enable its standalone mode, which will make the process automatic (without the need for developers to proofread and approve) and able to follow up on any new commits within seconds of it landing on the repository. Also in
    Haruna has redesigned the Makefile for plugins, so those of you not using windows will need to re-enter your plugins in it (its much easier now, Haruna provided a very straight-forward documentation in the file) Pre-existing plugins will need to be recompiled, given the chances in the Hercules Plugin Manager, attempting to load any not-recompiled plugin will lead to it not being loaded (and a warning in console will be displayed) Design by
    Haruna, Xgear, Gepard and Ind Special Thanks to
    Hercules Team, Contributors, for all have contributed to us getting here, Thank you all very much! Takkun for the MSVC-2012 project files Haruna for the MSVC-2010 project files Link~u!
    Commit And - On the Horizon
    Script Engine UpdatesThose of you who lurk our page on github probably have already noticed some stuff from it, we'll soon be resuming, for those of you not familiar with it: Many syntax additions and improvements (Thanks to Haruna!) Limitless array support, improvements to array storage and processing Support for Char and Account variable arrays (and no more limit on amount of char/acc vars), improvements to processing and storage of char/acc variables. Catching UpWe hear you, we're lagging on staying up to date with the releases of other projects, we'll be prioritising towards catching up with them. Hercules Stress Test ServerI'll be delaying the release of our Stress Test Server, while it is now viable thanks to hooking, I'd like to prioritise catching up with other releases
  24. Upvote
    jaBote reacted to quesoph in Reduce MATK   
    .../src/map/status.c
    Line 1912 and 1913
    Pre-RE
    static inline unsigned short status_base_matk_min(const struct status_data *st){ return st->int_+(st->int_/7)*(st->int_/7); }static inline unsigned short status_base_matk_max(const struct status_data *st){ return st->int_+(st->int_/5)*(st->int_/5); } Renewal:
    #ifdef RENEWALunsigned short status_base_matk(const struct status_data *st, int level){ return st->int_+(st->int_/2)+(st->dex/5)+(st->luk/3)+(level/4); }#endif I think you need to adjust this.
     
    return st->int_+(st->int_/7)*(st->int_/7) Try to change 7 to 10.
     
    return st->int_+(st->int_/5)*(st->int_/5); and 5 to 7.
     
    if Renewal
     
     
    return st->int_+(st->int_/2)+(st->dex/5)+(st->luk/3)+(level/4); Try higher numbers.
  25. Upvote
    jaBote got a reaction from JulioCF in Data   
    Olá!
     
    Você já tentou a pasta data pré-renewal de Alexandria? Versão 3.0, deste tópico: http://herc.ws/board/topic/901-basic-complete-renewal-data-english-folder/
     
    P.S.: Sorry for my bad Portuguese, I'm Spanish and I'm trying my best here, hehehe.
×
×
  • Create New...

Important Information

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