Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 01/23/22 in all areas

  1. 4CrAM-Open Hey everyone. Today marks a very special day for the 4CrAM project. A day that will change the private server community. The project has been a big success and it has not only made it possible to have fully working for 4th jobs on private server's a thing but it also allowed me to recover from a difficult situation I was in at the start of the project. Im very thankful to the people who have supported me up to this moment. Without you this project wouldn't of been possible. But its been about a year and a half and with the code finally reaching a point that im happy with it, I feel its time to reveal it to the public. Today is the day I make all of the work ive done up to this point public for the community but with a little extra in it. The code contains fully working 4th jobs, fully working traits system with the sub-stats working 100% official, the AP system fully working, all 4th job skills working, a few new commands along with some others modified for developing purposes, a custom job changer NPC for all the latest jobs, and a few other goodies. But the last feature to be included with this release is something I felt would be a good thing for the player base, overall community, and my way of saying thanks. I don't want players to be divided into 2 sides due to one side having access to 4th jobs and the other side having their character's potential limited. So with this I decided to also release full ready to play support for all of the expanded jobs. This will allow all players to reach their final jobs and gain access to base level 250 and the traits system. However, none of their skills are coded in yet. The power gap between 4th jobs and older renewal era expanded jobs was just too great to keep this from the community and with this release the gap can be minimized. I hope everyone enjoys this release and have as much fun with it as I did coding it all. This is my gift to the community. Enjoy. Also be sure to leave me a thank you if your not too lazy. One final note. CHECKMATE AND FUCK YOU TO A CERTAIN PERSON!!!! You know who you are. >=D 4CrAM-Open Github Link Note: A 2020-09-02bRagexeRE client or newer is needed for 4th jobs access. A 2021-11-17aRagexeRE or newer is needed to access everything. Be sure to adjust the set client date your using in the defines_pre.hpp file. Keep in mind the 2021-11-17 client is still new and issues are likely to still exist with its support. https://github.com/Rytech2/4CrAM-Open
    2 points
  2. Elurair Patching Launcher (RO Patcher Lite+ROCred Merge) About Universal auto-patcher for all your updating needs combined with a launcher, which is fully skinnable, highly customizable and easy on resources. It is free of any cost and works on every 32-bit and 64-bit Microsoft* Windows* platform. Known Issues None. FAQ Q: Does the patcher support encrypted GRFs? A: Yes, common GRF encryption schemes are supported. Q: Can I use the Patcher part without the Launcher part? A: Yes, the Launcher mechanics and UI can be disabled in configuration. Q: Can I use the Launcher part without the Patcher part? A: Yes, remove all Patcher sections from the configuration. Download & Website http://ai4rei.net/p/skal (discord available for real-time support) License This work is licensed under a Creative Commons Attribution-Noncommercial 4.0 International License.
    1 point
  3. RO Open Setup About Clone of the default game setup application, shipped with every RagnarokOnline installation. It works on every 32-bit Microsoft* Windows* platform. Source is available for customizations. Known Issues None. Translations English - 100% (primary) French - 100% (Valioukha) German - 100% (Xalion) Brazilian Portuguese - 100% (EvilPuncker) Czech - 100% Japanese - 100% (Mintmoon) Russian - 100% (Jarek) Simplified Chinese - 100% (tinpont) Spanish - 100% (jaBote) Thai - 100% (iSuzutsuki) Traditional Chinese - 100% (Angelmelody) translate OpenSetup into your language Q & A Why does the client not use the Lua settings? Use latest OpenSetup version. If that's already the case, use newer client. Why does OpenSetup not let me to save without Administrator? A few settings are still written to a location in the registry, that needs Administrator rights. I have have issues with OpenSetup, is there something I should add to my report? When you experience the issue, press Shift+Esc inside the OpenSetup window until it closes and provide the generated log file (exename.log) along with your report. Download & Website http://ai4rei.net/p/opensetup License This work is licensed under a Creative Commons Attribution-Noncommercial 3.0 Unported License.
    1 point
  4. @Erossmaybe it use the twitter support of newer clients. Or a WebView. Idk if it is implemented yet if not it's could be an extension injected as dll file in the client. In my opinion one of the hackshield does support WebView but idk which one. Rynbef~
    1 point
  5. I just find another post about remove something like this. But the only way to remove this is use a client with an earlier date. Check this post:
    1 point
  6. I would love to see this too Auto-Attack System : Summon 3 different clone each level lvl 1 Sniper , lvl 2 Whitesmith and lvl 3 is High priest Job: Priest Create Nugget : Jump to enemy inside cell 1x1 Job: Stalker Fire Ivy: Swap enemy with your location Job: High Wizard
    1 point
  7. This is going to be a blunt post. For some time now the rAthena staff have been actively working to reduce the number of reseller advertisements that crop up on our forums, our Discord server, Facebook, websites, etc. We strongly advise that rAthena users do not engage with resellers. The code/content isn’t theirs to sell. You receive little to no support. You are at risk of being scammed. You are not supporting the developers of their respective projects or original content creators. You are lining the pockets of thieves and scammers who have no idea what they’re doing. The original project authors begin to feel demotivated - this can cause them to stop working on this and upcoming projects altogether. The number of reports from our users who have been scammed has increased significantly over the last year. If you wish to hire the services of a known and trusted developer, please use https://rathena.org/board/thirdpartyservices/ - this list of members of our forum has been vetted and approved. This is a list of members who are not going to scam you. If you decide to give your money to some random idiot that claims to have “full working premade x, y, z” then that’s on you. We can’t stop you, but you’re certainly adding fuel to the fire and these idiots will continue to take advantage of other members of our community. If you receive a DM from anyone trying to sell content on rAthena’s Discord or forum and the person is not listed on the Third Party Services page, we suggest taking evidence and report the users to a member of staff. So, what should you do instead? Setting up rAthena and a working client is easy. You don’t need someone else to do it for you - that is not how you learn. Using any of the multitude of tutorials and wiki pages will help you get your rAthena server up and running. If you don’t do it yourself, you will not learn where the configurations are. You won’t learn how to modify an item/mob. You won’t know how to enable an NPC. If you’re now thinking “well, I don’t have time, that’s why I pay someone” then maybe running a game server is not for you. Reseller = Bad. Learning and Self-Betterment = Good. I’m hoping this post gets our point across loud and clear.
    1 point
  8. hello i'm update to new version and have this problem, how to fix it
    1 point
  9. I use this /*========================================= * Check values of resistance to elements * [ Keitenai ] * Adjustments by [ DietmarRuiz ] *-----------------------------------------*/ ACMD_FUNC(resist) { char output[CHAT_SIZE_MAX]; int i; struct { const char* format; int value; } output_table[] = { { " [ %d ] Neutral resist", 0 }, { " [ %d ] Water resist", 0 }, { " [ %d ] Earth resist", 0 }, { " [ %d ] Fire resist", 0 }, { " [ %d ] Wind resist", 0 }, { " [ %d ] Poison resist", 0 }, { " [ %d ] Holy resist", 0 }, { " [ %d ] Dark resist", 0 }, { " [ %d ] Ghost resist", 0 }, { " [ %d ] Undead resist", 0 }, // { " [ %d ] Resist to all", 0 }, { " [ %d ] Long Range Resistance", 0 }, { " [ %d ] Magic Resistance", 0 }, { " [ %d ] Demi-Human Resist", 0 }, { NULL, 0 } }; memset(output, '\0', sizeof(output)); clif_displaymessage(sd->fd, "========= Resistance Values ========="); output_table[0].value = (sd->indexed_bonus.subele[ELE_NEUTRAL] + sd->indexed_bonus.subele_script[ELE_NEUTRAL] + sd->indexed_bonus.subele[ELE_ALL] + sd->indexed_bonus.subele_script[ELE_ALL]); output_table[1].value = (sd->indexed_bonus.subele[ELE_WATER] + sd->indexed_bonus.subele_script[ELE_WATER] + sd->indexed_bonus.subele[ELE_ALL] + sd->indexed_bonus.subele_script[ELE_ALL]); output_table[2].value = (sd->indexed_bonus.subele[ELE_EARTH] + sd->indexed_bonus.subele_script[ELE_EARTH] + sd->indexed_bonus.subele[ELE_ALL] + sd->indexed_bonus.subele_script[ELE_ALL]); output_table[3].value = (sd->indexed_bonus.subele[ELE_FIRE] + sd->indexed_bonus.subele_script[ELE_FIRE] + sd->indexed_bonus.subele[ELE_ALL] + sd->indexed_bonus.subele_script[ELE_ALL]); output_table[4].value = (sd->indexed_bonus.subele[ELE_WIND] + sd->indexed_bonus.subele_script[ELE_WIND]) + sd->indexed_bonus.subele[ELE_ALL] + sd->indexed_bonus.subele_script[ELE_ALL]; output_table[5].value = (sd->indexed_bonus.subele[ELE_POISON] + sd->indexed_bonus.subele_script[ELE_POISON] + sd->indexed_bonus.subele[ELE_ALL] + sd->indexed_bonus.subele_script[ELE_ALL]); output_table[6].value = (sd->indexed_bonus.subele[ELE_HOLY] + sd->indexed_bonus.subele_script[ELE_HOLY] + sd->indexed_bonus.subele[ELE_ALL] + sd->indexed_bonus.subele_script[ELE_ALL]); output_table[7].value = (sd->indexed_bonus.subele[ELE_DARK] + sd->indexed_bonus.subele_script[ELE_DARK] + sd->indexed_bonus.subele[ELE_ALL] + sd->indexed_bonus.subele_script[ELE_ALL]); output_table[8].value = (sd->indexed_bonus.subele[ELE_GHOST] + sd->indexed_bonus.subele_script[ELE_GHOST] + sd->indexed_bonus.subele[ELE_ALL] + sd->indexed_bonus.subele_script[ELE_ALL]); output_table[9].value = (sd->indexed_bonus.subele[ELE_UNDEAD] + sd->indexed_bonus.subele_script[ELE_UNDEAD] + sd->indexed_bonus.subele[ELE_ALL] + sd->indexed_bonus.subele_script[ELE_ALL]); // output_table[10].value = (sd->subele[ELE_ALL] + sd->subele_script[ELE_ALL]); output_table[10].value = (sd->bonus.long_attack_def_rate); output_table[11].value = (sd->special_state.no_magic_damage + sd->bonus.magic_def_rate); output_table[12].value = (sd->indexed_bonus.subrace[RC_PLAYER_HUMAN]); for (i = 0; output_table[i].format != NULL; i++) { sprintf(output, output_table[i].format, output_table[i].value); clif_displaymessage(fd, output); } return 0; } ACMD_DEF(resist),
    1 point
  10. yes. ACMD_FUNC(resist) { char output[CHAT_SIZE_MAX]; int i; struct { const char* format; int value; } output_table[] = { { " [ %d ] Neutral Resist", 0 }, { " [ %d ] Water Resist", 0 }, { " [ %d ] Earth Resist", 0 }, { " [ %d ] Fire Resist", 0 }, { " [ %d ] Wind Resist", 0 }, { " [ %d ] Poison Resist", 0 }, { " [ %d ] Holy Resist", 0 }, { " [ %d ] Dark Resist", 0 }, { " [ %d ] Ghost Resist", 0 }, { " [ %d ] Undead Resist", 0 }, ++ { " [ %d ] Long Range Resistance", 0 }, ++ { " [ %d ] Magic Resistance", 0 }, ++ { " [ %d ] Demi-Human Resist", 0 }, { NULL, 0 } }; memset(output, '\0', sizeof(output)); clif_displaymessage(sd->fd, "========= Resistance Values (in percentage) ========="); output_table[0].value = (sd->indexed_bonus.subele[ELE_NEUTRAL] + sd->indexed_bonus.subele_script[ELE_NEUTRAL] + sd->indexed_bonus.subele[ELE_ALL] + sd->indexed_bonus.subele_script[ELE_ALL]); output_table[1].value = (sd->indexed_bonus.subele[ELE_WATER] + sd->indexed_bonus.subele_script[ELE_WATER] + sd->indexed_bonus.subele[ELE_ALL] + sd->indexed_bonus.subele_script[ELE_ALL]); output_table[2].value = (sd->indexed_bonus.subele[ELE_EARTH] + sd->indexed_bonus.subele_script[ELE_EARTH] + sd->indexed_bonus.subele[ELE_ALL] + sd->indexed_bonus.subele_script[ELE_ALL]); output_table[3].value = (sd->indexed_bonus.subele[ELE_FIRE] + sd->indexed_bonus.subele_script[ELE_FIRE] + sd->indexed_bonus.subele[ELE_ALL] + sd->indexed_bonus.subele_script[ELE_ALL]); output_table[4].value = (sd->indexed_bonus.subele[ELE_WIND] + sd->indexed_bonus.subele_script[ELE_WIND]) + sd->indexed_bonus.subele[ELE_ALL] + sd->indexed_bonus.subele_script[ELE_ALL]; output_table[5].value = (sd->indexed_bonus.subele[ELE_POISON] + sd->indexed_bonus.subele_script[ELE_POISON] + sd->indexed_bonus.subele[ELE_ALL] + sd->indexed_bonus.subele_script[ELE_ALL]); output_table[6].value = (sd->indexed_bonus.subele[ELE_HOLY] + sd->indexed_bonus.subele_script[ELE_HOLY] + sd->indexed_bonus.subele[ELE_ALL] + sd->indexed_bonus.subele_script[ELE_ALL]); output_table[7].value = (sd->indexed_bonus.subele[ELE_DARK] + sd->indexed_bonus.subele_script[ELE_DARK] + sd->indexed_bonus.subele[ELE_ALL] + sd->indexed_bonus.subele_script[ELE_ALL]); output_table[8].value = (sd->indexed_bonus.subele[ELE_GHOST] + sd->indexed_bonus.subele_script[ELE_GHOST] + sd->indexed_bonus.subele[ELE_ALL] + sd->indexed_bonus.subele_script[ELE_ALL]); output_table[9].value = (sd->indexed_bonus.subele[ELE_UNDEAD] + sd->indexed_bonus.subele_script[ELE_UNDEAD] + sd->indexed_bonus.subele[ELE_ALL] + sd->indexed_bonus.subele_script[ELE_ALL]); ++ output_table[10].value = (sd->bonus.long_attack_def_rate); ++ output_table[11].value = (sd->special_state.no_magic_damage + sd->bonus.magic_def_rate); ++ output_table[12].value = (sd->subrace[RC_DEMIHUMAN]); for (i = 0; output_table.format != NULL; i++) { sprintf(output, output_table.format, output_table.value); clif_displaymessage(fd, output); } return 0; }
    1 point
  11. View File mapusers count Functions IP/GePard You need at lest rAthena 10e7035bebdbc2ec25a392ee2cf14172ecf169e5 or above! (for old rAthena you should add the pr manually!) SCRIPT HEADER (INFO) //===== rAthena Script ======================================= //= getgpmapunits command //= getipmapunits command //===== By: ================================================== //= Sader1992 //= Free!! // https://rathena.org/board/profile/30766-sader1992/ //===== Current Version: ===================================== //= 1.0 //===== Compatible With: ===================================== //= rAthena Project // https://github.com/sader1992/sader_scripts //===== Description: ========================================= // getgpmapunits("map"); return the number of players with the same GePard id in the given map. (You must have GePard to work!) // getipmapunits("map"); return the number of players with the same IP in the given map. //============================================================ //==== please report any error you find //============================================================ //============================================================ you should add the functions to your rAthena/npc/other/Global_Functions.txt to work (add it in that file where ever you like, no need for guide for that ?!) Examples: scenario ? > you want a Warper NPC (or maybe event NPC) that allow only one player per IP in the map ? //============================================== //NPC EXAMPLE FOR IP FUNCTION //============================================== prontera,152,183,5 script Warper IP Test 446,{ if(getipmapunits("prontera") > 0){ mes "you already have a char inside this map"; }else{ warp "prontera",152,183; } end; } //============================================== Same as above but per GePard ID not IP //============================================== //NPC EXAMPLE FOR GEPARD FUNCTION //============================================== prontera,155,183,5 script Warper GePard Test 446,{ if(getipmapunits("prontera") > 0){ mes "you already have a char inside this map"; }else{ warp "prontera",155,183; } end; } //============================================== BONUS Test: pvp warper prontera,158,183,5 script PVP Warper IP Test 446,{ mes "would you like to teleport to the pvp map?"; if(select("yes:no") == 2) close; if(getipmapunits("pvp_n_1-1") > 0){ mes "there is another character with the same ip inside the map!"; mes "only 1 character per IP allowed in this map!"; }else{ warp "pvp_n_1-1",0,0; } end; } Submitter sader1992 Submitted 10/29/2018 Category Utilities Video Content Author sader1992  
    1 point
  12. What if you removed Doram race from your server and client... ...but it just left a ugly space on the char creation window? Well here comes the solution. I simply edited the file and made use of the space. You can edit it individually. A .psd file is included for Photoshop/GIMP edits. (Instruction is also included) Download here ~ Requirements:
    1 point
  13. when double click the box and click cancel the item disappear any solution for that heres my code function script WeponBox { setarray .@Jobs$, "Shin Spear", "Shin Shuriken" , "Shin Kudachi" , "Shin Fist" , "Creator Shin Axe" , "Shin Katana" , "Shin Revolver" , "Stalker Shin Mega Bow" , "Shin Whip" , "Shin Guitar" , "Prof Shin Staff" , "Shin Katar" , "Sinx Shin Dagger" , "WS Shin Bloody Axe" , "WZ Shin Staff" , "HP Shin Reaper" , "Sniper Quincy Bow" , "SG Book"; setarray .@Items, 47001, 47002, 47003, 47004, 47005, 47006, 47007, 47008, 47010, 47011, 47012, 47014, 47015, 47016, 47017, 47018, 47019, 47020; .@size = getarraysize(.@Jobs$); for(.@i = 0; .@i < .@size; .@i++) .@menu$ = .@menu$ + .@Jobs$[.@i] + ":"; getitembound .@Items[select(.@menu$) - 1], 1, Bound_Char; end; } its a callfunc command or how can i make my box have a msg like this #TIA
    1 point
  14. Version 3.0

    13514 downloads

    This pack corrects the bad pixels on ragnarok classes and heads with nose or coloured eyes. It makes palletes looks better in general. Take a look at the screenshots for samples. Contains: First classes corrected 2nd Job classes corrected Rebirth classes corrected Special classes corrected (Ninja, taekwon..) Gryphon corrected (for Rune Knight) Official Head Sprites from 1 to 27 corrected. Also contains an extra file: FIX FOR WARLOCK (Credits to Vach ). Use it only if you experience issues with Warlock sprite. If you get any issue with one of the sprites (that shouldn't happen though ), like gravity error when using skill, or moving, just delete the bad-working sprite, update it to the last gravity official version, and make me know about it. Sometimes gravity update a sprite (it happened once in 6 years...so...) and it can crash with new clients. I'm able to fix it very quickly if it happens. If you want the best looking palettes with this pack, take a look at my free Palettes and my 700 Palettes set!
    Free
    1 point
  15. you didn't do anything wrong ... why ? because Emistry script isn't working ... try this, full complete script function script timeleft__ { if ( ( .@left = getarg(0) ) <= 0 ) return getarg(0); .@day = .@left / 86400; .@hour = .@left % 86400 / 3600; .@min = .@left % 3600 / 60; .@sec = .@left % 60; if ( .@day ) return .@day +" day "+ .@hour +" hour"; else if ( .@hour ) return .@hour +" hour "+ .@min +" min"; else if ( .@min ) return .@min +" min "+ .@sec +" sec"; else return .@sec +" sec"; } - shop vipshop#7 -1,501:100 - shop vipshop#30 -1,501:100 - script vipnpc FAKE_NPC,{ OnInit: bindatcmd "vipshop", strnpcinfo(0)+"::Onvipshop"; end; Onvipshop: if ( #vipshop == 1 ) callshop "vipshop#7", 1; else if ( #vipshop == 2 ) callshop "vipshop#30", 1; else { mes "which vip status do you want to buy ?"; mes "vip 7 days = 10 Cash points"; mes "vip 30 days = 20 Cash points"; next; if ( select ( "Vip 7 Days", "Vip 30 Days" ) == 1 ) { if ( #CASHPOINTS < 10 ) { mes "you don't have enough Cash points"; close; } mes "Thanks for purchasing !"; #vipshop = 1; #CASHPOINTS -= 10; addtimer 7*24*60*60*1000, strnpcinfo(0)+"::OnTimeUp"; #viptimeleft = 7*24*60*60 + gettimetick(2); close; } else { if ( #CASHPOINTS < 20 ) { mes "you don't have enough Cash points"; close; } mes "Thanks for purchasing !"; #vipshop = 2; #CASHPOINTS -= 20; // addtimer 30*24*60*60*1000, strnpcinfo(0)+"::OnTimeUp"; // over integer limit #viptimeleft = 30*24*60*60 + gettimetick(2); close; } } dispbottom "You currently have "+ #CASHPOINTS +" Cash points .Expire in "+ callfunc( "timeleft__", #viptimeleft - gettimetick(2) )+"."; end; OnPCLoginEvent: if ( #viptimeleft < gettimetick(2) ) addtimer 1, strnpcinfo(0)+"::OnTimeUp"; // sometimes doevent doesn't work else if ( #viptimeleft - gettimetick(2) < 2147483 ) // don't execute addtimer if over integer limit addtimer ( #viptimeleft - gettimetick(2) )*1000, strnpcinfo(0)+"::OnTimeUp"; end; OnTimeUp: #viptimeleft = #vipshop = 0; end; } - script vipnpc#7 FAKE_NPC,{ OnInit: function addshopitem { npcshopdelitem "vipshop#7", 501; .@count = getargcount(); for ( .@i = 0; .@i < .@count; .@i++ ) { if ( .@i % 2 == 0 ) .itemid[ .@i /2 ] = getarg( .@i ); else { .itemcost[ .@i /2 ] = getarg( .@i ); npcshopadditem "vipshop#7", .itemid[ .@i /2 ], .itemcost[ .@i /2 ]; } } } addshopitem // adds shop items here for vip#7 501,10, 502,20, 503,30, 504,40, 505,50; npcshopattach "vipshop#7"; .@itemsize = getarraysize( .itemid ); for ( .@i = 0; .@i < .@itemsize; .@i++ ) .itemcost[ .itemid[.@i] ] = .itemcost[.@i]; end; OnBuyItem: if ( !@bought_quantity ) end; .@size = getarraysize( @bought_nameid ); for ( .@i = 0; .@i < .@size; .@i++ ) .@itemcost += .itemcost[ @bought_nameid[.@i] ] * @bought_quantity[.@i]; if ( .@itemcost > #CASHPOINTS ) { mes "you don't have enough Cash points"; close; } if ( !checkweight2( @bought_nameid, @bought_quantity ) ) { mes "you can't carry all these items !"; close; } #CASHPOINTS -= .@itemcost; for ( .@i = 0; .@i < .@size; .@i++ ) getitem @bought_nameid[.@i], @bought_quantity[.@i]; end; } - script vipnpc#30 FAKE_NPC,{ OnInit: function addshopitem { npcshopdelitem "vipshop#30", 501; .@count = getargcount(); for ( .@i = 0; .@i < .@count; .@i++ ) { if ( .@i % 2 == 0 ) .itemid[ .@i /2 ] = getarg( .@i ); else { .itemcost[ .@i /2 ] = getarg( .@i ); npcshopadditem "vipshop#30", .itemid[ .@i /2 ], .itemcost[ .@i /2 ]; } } } addshopitem // adds shop items here for vip#30 501,5, 502,10, 503,15, 504,20, 505,25; npcshopattach "vipshop#30"; .@itemsize = getarraysize( .itemid ); for ( .@i = 0; .@i < .@itemsize; .@i++ ) .itemcost[ .itemid[.@i] ] = .itemcost[.@i]; end; OnBuyItem: if ( !@bought_quantity ) end; .@size = getarraysize( @bought_nameid ); for ( .@i = 0; .@i < .@size; .@i++ ) .@itemcost += .itemcost[ @bought_nameid[.@i] ] * @bought_quantity[.@i]; if ( .@itemcost > #CASHPOINTS ) { mes "you don't have enough Cash points"; close; } if ( !checkweight2( @bought_nameid, @bought_quantity ) ) { mes "you can't carry all these items !"; close; } #CASHPOINTS -= .@itemcost; for ( .@i = 0; .@i < .@size; .@i++ ) getitem @bought_nameid[.@i], @bought_quantity[.@i]; end; }
    1 point
  16. Seems the file was deleted from the Download section. Nevermind though here is my copy: mellina.zip
    1 point
×
×
  • Create New...