Jump to content

All Activity

This stream auto-updates     

  1. Today
  2. It seems that this forum is dead. I tried asking on different places discord, scriptng etc etc. Coz i dont want to bump this old topic. My only problem is i want the prize only to be given on the first rebirth and not on the next rebirths, Hope someone can help me here. Thank you sir @Dastgir for this wonderful script.
  3. Yesterday
  4. Updated to 2.7.0, adds support for deleting files, obfuscated config, more flexible patch list paths, improved UI accessibility, ja_JP localization and fixes a bunch of community reported bugs.
  5. This is my rebirth script prontera,210,218,6 script Rebirth NPC 811,{ function deleteItem; // Deletes Required Items function CheckItemNeed; // Shows the Required Items function getItemReward; // Gives the Reward mes "^11E6D0[Rebirth System]^000000"; mes strcharinfo(0)+", How may I help you?"; switch( select( "^777777~ Ranking:~ Rebirth:~ Information:~ Reset Stat:~ Cancel"+((getgmlevel()>=.GMLevel)?":~ Reset Ranking":"")+"^000000" ) ) { case 1: next; mes "^11E6D0[Rebirth System]^000000"; mes "Rankings:"; query_sql "SELECT `name`,`rebirth_no`,`master_rebirth` FROM `rebirth_system` ORDER BY `master_rebirth` DESC, `rebirth_no` DESC LIMIT "+.list,@name$,@rebirth_no,@master_rebirth; if(getarraysize(@name$)==0){mes "^F20808 No Records Found ^000000"; close;} mes "Format:"; mes "^0814F2[Character Name]^000000 - ^B308F2[Rebirths]^000000 - ^B303F2[Master_Rebirth]^000000"; for ([email protected]=0; [email protected] < getarraysize(@name$); [email protected]++){ mes ([email protected]+1) +".) ^0814F2["+ @name$[[email protected]] +"]^000000 - ^B308F2["+ @rebirth_no[[email protected]] +"]^000000 - ^B303F2["+ @master_rebirth[[email protected]] +"]^000000"; } deletearray @name$[0],.list; deletearray @rebirth_no[0],.list; deletearray @master_rebirth[0],.list; close; case 2: next; mes "^11E6D0[Rebirth System]^000000"; if (.MasterRebirth>0 && rebirth_no >= .MasterRebirth){ mes "You can Do Master Rebirth too."; mes "Master rebirth allows you to earn some more powerful items."; mes "On doing Master Rebirth, you will lose "+ .MasterRebirth +" Rebirths"; if (.MaxRebirth[1]){ mes "You can do "+ .MaxRebirth[1] +" Master Rebirths Only"; } @rebirth_type = select("Do Standard Rebirth:Do Master Rebirth"); next; mes "^11E6D0[Rebirth System]^000000"; }else{ @rebirth_type = 1; } if ((@rebirth_type==1 && .MaxRebirth[0] > 0 && rebirth_no >= .MaxRebirth[0]) || (@rebirth_type==2 && .MaxRebirth[1] > 0 && master_rebirth >= .MaxRebirth[1]) ){ mes "You have Reached the Maximum Number of "+ ( (@rebirth_type==2)?"Master":"" ) +" Rebirths("+ ( (@rebirth_type==2)?master_rebirth:rebirth_no ) +")"; close; } [email protected] = eaclass(); [email protected]_rebirth = false; for ([email protected]=0; [email protected]<getarraysize(.add_jobs); [email protected]++){ if (Class==.add_jobs[[email protected]]){ [email protected]_rebirth = true; break; } } if ([email protected]_rebirth){ [email protected]_rebirth = true; setarray [email protected][0],EAJL_2,EAJL_2_1,EAJL_2_2,EAJL_UPPER,EAJL_BABY,EAJL_THIRD; for ([email protected] = 0; [email protected] < getarraysize([email protected]); [email protected]++) if ((.job_rebirth&[email protected][[email protected]])){ if (!([email protected]&[email protected][[email protected]])){ if (([email protected] == 1 || [email protected] == 2) && [email protected] == true) continue; [email protected]_rebirth = false; break; } if ([email protected] == 0) [email protected] = true; } } if( BaseLevel < 500 || JobLevel < 120 ) { mes "You must be Max BaselLevel/Joblevel to Rebirth."; close; }else if( [email protected]_rebirth ){ if (.job_rebirth&EAJL_BABY) [email protected]$ = "Baby "; if (.job_rebirth&EAJL_THIRD) [email protected]$ = [email protected]$+"Third"; else if (.job_rebirth&EAJL_2_1 || .job_rebirth&EAJL_2_2) [email protected]$ = [email protected]$+"Second"; else if (.job_rebirth&EAJL_UPPER) [email protected]$ = [email protected]$+"1-1"; mes "You need to be "+ ((.job_rebirth&EAJL_UPPER)?"Trans":"") +" "+ [email protected]$ +" Job"; close; } mes "Items need :"; CheckItemNeed(@rebirth_type); next; mes "^11E6D0[Rebirth System]^000000"; deleteItem(@rebirth_type); break; case 3: next; mes "^11E6D0[Rebirth System]^000000"; switch(.reset_opt){ case 1: case 2: mes "Your BaseLevel,JobLevel"+ ((.reset_opt==1)?",Skills,StatPoints And Status":" And SkillPoints") +" will be Reset."; break; case 3: case 4: mes "You will be Changed to "+ ((.reset_opt==3)?"Base":"Job") +"Level 1 with JobLevel and Skills/Status Unaffected"; break; } if (.job_rebirth&EAJL_BABY) [email protected]$ = "Baby "; if (.job_rebirth&EAJL_THIRD) [email protected]$ = [email protected]$+"Third"; else if (.job_rebirth&EAJL_2_1 || .job_rebirth&EAJL_2_2) [email protected]$ = [email protected]$+"Second"; else if (.job_rebirth&EAJL_UPPER) [email protected]$ = [email protected]$+"1-1"; mes "You Should be "+ ((.job_rebirth&EAJL_UPPER)?"Trans":"") +" "+ [email protected]$ +" Job to be able to Rebirth."; if (.job_rebirth&EAJL_UPPER) [email protected] = 1; if (.StatusN){ mes "You Get "+ .StatusN +" Extra Status point for every Rebirth"; } if (.ResetJob==2 || (.ResetJob==1 && [email protected]) || [email protected]_rebirth){ mes "You will become Novice Upon rebirth"; } else if ((.ResetJob==1 && [email protected]) || (.ResetJob==3)){ mes "You will become High Novice Upon rebirth"; } else{ mes "Your Job will not change upon rebirth"; } next; mes "^11E6D0[Rebirth System]^000000"; mes "For Rebirth, you may need some items."; CheckItemNeed(1,1); if (.MasterRebirth > 0){ next; mes "^11E6D0[Rebirth System]^000000"; mes "Upon Reaching "+ .MasterRebirth +" Rebirths, you can do Master Rebirth"; if (.MaxRebirth[1]){ mes "You can do "+ .MaxRebirth[1] +" Master Rebirths Only"; } if (.StatusM){ mes "You Get "+ ((.StatusM)-(.StatusN * .MasterRebirth)) +" Extra Status point than Normal Rebirth for every Master Rebirth"; } mes "Master Rebirth Allows you to earn some powerful items."; next; mes "^11E6D0[Rebirth System]^000000"; mes "For Master Rebirth, you may need some items."; CheckItemNeed(2,1); } close; case 4: mes "[Reset Stats]"; mes "Reset Stats: "+ .ResetStat +"z"; mes "Continue?"; if (select("~ Yes, Reset Stat", "No, I don't want to reset") == 2) close; next; mes "[Reset Stats]"; if (Zeny < .ResetStat) { mes "Sorry, you don't have enough Zeny."; close; } Zeny -= .ResetStat; resetstatus; StatusPoint = StatusPoint + (.StatusM * master_rebirth) + (.StatusN * rebirth_no); mes "There you go!"; close; case 5: next; mes "^11E6D0[Rebirth System]^000000"; mes "Bye."; close; case 6: next; mes "^11E6D0[Rebirth System]^000000"; mes "Are you sure you want to reset Ranking?"; mes "Once done, Action cannot be reverted."; if (select("Yes, Reset the Ranking:No, Let me think again.")==2){ next; mes "^11E6D0[Rebirth System]^000000"; mes "Thank you for using my service."; close; } next; query_sql "TRUNCATE TABLE `rebirth_system`"; query_sql "DELETE FROM `char_reg_num_db` WHERE `key`='rebirth_no' OR `key`='master_rebirth'"; query_sql "SELECT `account_id` from `char` where `online`=1", [email protected]_id; for ([email protected]=0; [email protected] < getarraysize([email protected]_id); [email protected]++){ if (attachrid([email protected]_id[[email protected]])){ if (rebirth_no){ rebirth_no = 0; } if (master_rebirth){ master_rebirth = 0; } } } deletearray [email protected]_id[0],getarraysize([email protected]_id); mes "^11E6D0[Rebirth System]^000000"; mes "Ranker Reset."; close; } if (@rebirth_type==1){rebirth_no += 1;} else{master_rebirth += 1; rebirth_no = rebirth_no - .MasterRebirth; } switch(.ResetJob){ case 1: if (!Upper){ jobchange Job_Novice; break; } case 3: jobchange Job_Novice_High; break; case 2: jobchange Job_Novice; break; default: break; } //set BaseLevel,200; if (.reset_ss&1){resetstatus;} if (.reset_ss&2){resetskill;} query_sql "INSERT INTO `rebirth_system` (`char_id`,`name`,`rebirth_no`,`master_rebirth`) VALUES ("+getcharid(0)+",'"+strcharinfo(0)+"',"+rebirth_no+","+master_rebirth+") ON DUPLICATE KEY UPDATE `rebirth_no`="+rebirth_no+", `master_rebirth`="+master_rebirth+" "; getItemReward(@rebirth_type); if (.StatusN || .StatusM){ StatusPoint = StatusPoint + (.StatusM * master_rebirth) + (.StatusN * rebirth_no); } mes "^11E6D0[Rebirth System]^000000"; mes "You have taken Rebirth."; if (@rebirth_type==1){ announce "[ Rebirth system ] : "+ strcharinfo(0) +" rebirth for the "+ rebirth_no +" time !", 0; }else{ announce "[ Rebirth system ] : "+ strcharinfo(0) +" has done Master rebirth for "+ master_rebirth +" time !", 0; } close; function deleteItem { for ([email protected]=0 ; [email protected] < .size_item; [email protected] += 3 ){ if ( !( getarg(0)&(.item_req[[email protected]+2]) ) ){continue;} delitem .item_req[[email protected]], ( .item_req[ [email protected]+1 ]*(rebirth_no+1) ); } return; } function CheckItemNeed { if ( Weight > 200000 ) { mes "You must reduce your weight to 2000 to do Rebirth."; close; } [email protected] = 0; for ([email protected]=0 ; [email protected] < .size_item; [email protected] += 3 ){ if ( !( getarg(0)&(.item_req[[email protected]+2]) ) ){continue;} if ( countitem( .item_req[[email protected]] ) < .item_req[ [email protected]+1 ]*(rebirth_no+1) ) { mes "You Require [^ff0000"+countitem( .item_req[[email protected]] )+" / "+ .item_req[[email protected]+1]*(rebirth_no+1) +"^000000] ^112FD9"+getitemname( .item_req[[email protected]] )+"^000000"; [email protected] = 1; }else{ mes "You Require [^00ff00"+countitem( .item_req[[email protected]] )+" / "+ .item_req[[email protected]+1]*(rebirth_no+1) +"^000000] ^112FD9"+getitemname( .item_req[[email protected]] )+"^000000"; } } if ([email protected] && !getarg(1,0)){close;} return; } function getItemReward { for ([email protected]=0 ; [email protected] < .size_reward; [email protected] += 4 ){ if ( !( getarg(0)&( .reward[[email protected]+3] ) ) ) {continue;} if (rand(1,10000) <= .reward[[email protected]+2]){ mes "You Got "+.reward[[email protected]+1]+" "+getitemname(.reward[[email protected]])+" "; getitem .reward[[email protected]], .reward[ [email protected]+1 ]; } } next; return; } //OnNPCKillEvent: //if( getmonsterinfo( killedrid,MOB_MVPEXP ) ){ // if( getcharid(1) ){ // getpartymember getcharid(1),2; // [email protected]$ = [email protected]$[ rand( [email protected] ) ]; // }else{ // [email protected]$ = strcharinfo(0); // } //for (set [email protected],0; [email protected] < getarraysize(.mvp_reward); set [email protected], [email protected]+3){ // if(rand(0,99) < .mvp_reward[[email protected]+2]){ // getitem .mvp_reward[[email protected]], .mvp_reward[[email protected]+1]; // } //} // announce "[ "+( getcharid(1) ? "Party":"Player" )+" ] "[email protected]$+" has killed "+getmonsterinfo( killedrid,MOB_NAME )+" at "+strcharinfo(3),0; //} //end; OnInit: bindatcmd("reborninfo",strnpcinfo(0)+"::OnCommand"); waitingroom "Rebirth NPC",0,"",0; //MVP Kill Reward List <item[0], number of item[0], chance[0], item[1], number of item[1], chance[1], ...> setarray .mvp_reward[0], 60001,1,50,60002,1,100; // item required <item ID>, <number> , <1=NormalRebirth,2=MasterRebirth,3=ForBorthRebirths> setarray .item_req, 60001, 1, 1; .size_item = getarraysize( .item_req ); // rewards <item ID>, <quantity>,<chance(10000=100%)>,<1=NormalRebirth,2=MasterRebirth,3=PriceForBothRebirths> // recalculates the chance and gives the next reward if chance is met. setarray .reward,80078,1,10000,1; .size_reward = getarraysize( .reward ); //Do not Change This .list = 10; //Show Top x in Ranking /* EAJL_2_1: 2-1 Class EAJL_2_2: 2-2 Class EAJL_2: All Second Class EAJL_UPPER: All Trans Class EAJL_BABY: All Baby Class EAJL_THIRD: All Third Class Full List: EAJL_2_1|EAJL_UPPER: Trans 2-1 Class EAJL_2_2|EAJL_UPPER: Trans 2-2 Class EAJL_2|EAJL_UPPER: Trans Second Class EAJL_BABY|EAJL_2: All Second Baby Class (Same for 2_1/2_2/Upper as mentioned above) EAJL_THIRD|EAJL_2_1: 3-1 Class EAJL_THIRD|EAJL_2_2: 3-2 Class EAJL_THIRD|EAJL_2_1|EAJL_UPPER: Trans 3-1 Class EAJL_THIRD|EAJL_2_2|EAJL_UPPER: Trans 3-2 Class EAJL_THIRD|EAJL_2|EAJL_UPPER: Trans 3rd Class EAJL_THIRD|EAJL_2_1|EAJL_UPPER|EAJL_BABY: Baby Trans 3-1 Class ... You can have any Combination of classes ... */ .job_rebirth = EAJL_2|EAJL_UPPER; setarray .add_jobs[0],Job_Rebellion,Job_Gunslinger, // Additional Jobs, who can rebirth Job_Soul_Linker, Job_Star_Gladiator, Job_Taekwon; .ResetStat = 1000000000; // Zeny needed for Resetting Stat .reset_opt = 1; // (1=Reset Base and JobLevel to 1(0 skill points and all stats to 1),2=Reset Base and JobLevel to 1(SkillPoint=0, While Skills and stats are not affected),3=Reset BaseLevel to 1, 4=Reset Job Level to 1) .reset_ss = 3; // (1=Reset Status, 2=Reset Skills, 3 = Reset Status and Skills). setarray .MaxRebirth[0],100,1; // Maximum Number of Normal Rebirth/Master Rebirth.(0=Unlimited) .ResetJob = 1; // 0=Don't Change Job, Just Reset Level,1=Reset Job to Novice/Novice_High depending upon the job, 2=Force Reset to Novice, 3=Force Reset to Novice_High .MasterRebirth = 0; // Number of rebirths require to do Master Rebirth. (0 to disable) .StatusN = 600; // Status Point to Give at Every Normal Rebirth. .StatusM = (.StatusN * .MasterRebirth) + 600; // Status Point to Give at Every Master Rebirth. (Don't Change initial part) .GMLevel = 99; // Minimum GM Level to Reset the Ranking. query_sql "CREATE TABLE IF NOT EXISTS `rebirth_system` ( `char_id` int(11) NOT NULL default '0', `name` varchar(24) NOT NULL DEFAULT 'NULL', `rebirth_no` mediumint(6) NOT NULL default '0', `master_rebirth` mediumint(6) NOT NULL default '0', PRIMARY KEY (`char_id`)) ENGINE=MyISAM"; end; OnCommand: dispbottom "REBIRTH COUNTS: " + rebirth_no; dispbottom "+ 10% MaxHP Per Rebirth"; dispbottom "+ 225 Max Weight Per Rebirth"; dispbottom "+ 10M Break HP Limit Per Rebirth"; dispbottom "+ 1 All Stats when Rebirth is 101"; dispbottom "10M Max Damage when Rebirth 150"; dispbottom "15M Max Damage when Rebirth 180"; dispbottom "20M Max Damage when Rebirth 200"; end; } I want the rebirth prize to be given only after the first rebirth. And no prize will be given on the next rebirths after that. Also why expanded jobs cant rebirth? Is it possible to enable rebirth on all expanded job too? Thank you in advance guys.
  6. Last week
  7. Hi guys ✋ All my works here: https://discord.gg/fmSbTy3x6h ⭐ I present to you my new map : Christmas Prontera ! ❄️ I let you watch the videos below or the screenshots to get an overview of the project ! 🔥Screenshot: https://www.artstation.com/artwork/nEnKko
  8. No need anymore. People on rAthena suggested to use a new (renewal) client to do it. That "solution" did NOT work. Instead I randomly chose another ragexe (2019-05-30aRagexe) and it works fine with NEMO + ENG translation no errors No need for anymore help, ty!
  9. Good day! Been trying to look for this files may I know what files are these? please share to me.. thank you!
  10. Hi, I used to play ragnarok alot as a kid and now I kinda want to come and enjoy the game I loved. Trough various guides I managed to setup a hercules dedicated server on ubuntu (SVN). I realized there are some sprites/items and maps my current patched ragexe doesn't have. Now I spent the last probably 24hrs figuring out how to make my own client with english translations and (for now) no costum items - just a plain old pre-renewal client. Somehow I cannot wrap my head around this topic at all, I run into errors all the time, trying to fix one issue brings up further. I am giving up. Spent alot of time looking for guides, those were mostly ages ago and didn't work in the end. It may be that I am the issue for not understanding what I need to do. At this point I am desperately looking for help - either coaching me to do what needs to be done or build me the client I need. I am willing to pay a fair price, maybe someone is interested OR could provide an up-to-date guide on how to handle stuff. Thank you for your time and any help is appreciated.
  11. I tried creating a command that will execute different actions on different intervals, and using the command will turn them ON/OFF, but it is just not working, what am I doing wrong? - script test FAKE_NPC,{ OnInit: bindatcmd("test", strnpcinfo(NPC_NAME)+"::OnAtcommand", 0, 99); end; OnAtcommand: atcommand("@test"); // executes the "test" command ON/OFF if ([email protected] == 1) { [email protected] = 0; deltimer(strnpcinfo(NPC_NAME_UNIQUE)+"::OnEvent1"); deltimer(strnpcinfo(NPC_NAME_UNIQUE)+"::OnEvent2"); deltimer(strnpcinfo(NPC_NAME_UNIQUE)+"::OnEvent3"); end; } else { [email protected] = 1; // 1000 = 1 second | 60000 = 1 min | 3600000 = 1 hour addtimer(10000, strnpcinfo(NPC_NAME_UNIQUE)+"::OnEvent1"); addtimer(5000, strnpcinfo(NPC_NAME_UNIQUE)+"::OnEvent2"); addtimer(300, strnpcinfo(NPC_NAME_UNIQUE)+"::OnEvent3"); end; } end; OnEvent1: if ([email protected] == 0) { deltimer(strnpcinfo(NPC_NAME_UNIQUE)+"::OnEvent1"); end; } // do something X addtimer(10000, strnpcinfo(NPC_NAME_UNIQUE)+"::OnEvent1"); end; OnEvent2: if ([email protected] == 0) { deltimer(strnpcinfo(NPC_NAME_UNIQUE)+"::OnEvent2"); end; } // do something Y addtimer(5000, strnpcinfo(NPC_NAME_UNIQUE)+"::OnEvent2"); end; OnEvent3: if ([email protected] == 0) { deltimer(strnpcinfo(NPC_NAME_UNIQUE)+"::OnEvent3"); end; } // do something Z addtimer(300, strnpcinfo(NPC_NAME_UNIQUE)+"::OnEvent3"); end; }
  12. Hello everyone! I have recently returned to the RO scene and I was wondering, do we even have any "True Classics" anymore? I miss the good old days, with original spawns, and real true to form mechanics. Even the new "Classics" are so different to me, I understand a lot of that is QOL updates, etc... But, gosh I'd love to find someone or somewhere that I could talk about or play like it TRULY was mid 2000's. I have to believe I am not the only one that misses it.... or, am I....?
  13. Earlier
  14. Hello, can you tell me if there is a guide for installing the ragnarok server for newbies?
  15. SQL DB/LOGIN -> Group_ID: 99
  16. Sorry for the noob question but where can you find the greenflag? 😅
  17. Hello anacondaq, first thank you for continuing your work.. I follow your work since from rathena forum... so sad they hold you back. Thank you, once again. But, anyone ever cross this problem, for Cram Job 4th? Any solution for this error?
  18. Directly sql_connection.conf not support import folder. But you can use hack for any conf files loaded from "@import". But for this need duplicate this file for each server. for login, for char and for map. Store your file in this dirs conf/import/include/login-server/conf/global/sql_connection.conf conf/import/include/char-server/conf/global/sql_connection.conf conf/import/include/map-server/conf/global/sql_connection.conf
  19. hi, i've been gone for 2+ years. are graphics still needed by ppl for ro/does it make sense to offer them again?
  20. How to set inter_server.conf userid, password, and database name on import folder? I have set the server like this : db_username: ragnarok db_password: password db_database: ragnarok And get this Warning on Server: Edit: Is the a way to set the sql credentials on import folder? I've found that sql credentials are stored in 'conf/global/sql_connection.conf' and there's no import folder attached to it. Can I set the sql credentials on inter_server.conf file on import folder?
  21. you can use tools/skilldbconverter.php
  22. how to converte skill_db.txt to skill_db.conf?
  23. plz update the link. i need. ^_^
  24. Youtube, Forum guides section, Herc/rAthena wiki, all these places teach you how to create a Ragnarok server. Any questions about a specific content ask me so I can help you. ☺️ ps; And this area is not the right one to ask for support, so topic closed.
  1. Load more activity
  • Create New...

Important Information

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