Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 09/27/22 in Posts

  1. Hello friends of rAthena, I came to share the CD of Brazil Ragnarok Online that was distributed at the time. (I remember coming to Sucrilhos) In case anyone wants to study or try to make an Old Times Root. Episode of Niflheim (EP-6), Released in Brazil in 2004. Promotional video of the time that was released. Credit: LevelUpGames/Gravity Download
    1 point
  2. View File MvP's Tombs with top 3 damage players The mvps tombs include the top 3 players with damage. tomb_damage.diff Submitter EveeX Submitted 07/02/2022 Category Source Modifications Video Content Author gndx  
    1 point
  3. Heya, The original script can be opened with Scripts > Open scripts folder > script5_remove_unused_sprites.cs. In your case, you'd want something like this: foreach (var actPath in Directory.GetFiles(@"C:\Test\", "*.act")) { var sprPath = actPath.ReplaceExtension(".spr"); if (!File.Exists(sprPath)) continue; var actFile = new Act(actPath, sprPath); for (int i = actFile.Sprite.Images.Count - 1; i >= 0; i--) { if (actFile.FindUsageOf(i).Count == 0) { actFile.Sprite.Remove(i, actFile, EditOption.AdjustIndexes); } } actFile.SaveWithSprite(actPath, sprPath); }
    1 point
  4. hey guys that's simple though complicated: anyway i have deployed server inside kuber, why not xxbbxb/open-ro (github.com) as the matter of joke you are free to play
    1 point
  5. Hi all ? I haven't written any updates for a long time. Causes covid, life, work and more... Other full server configuration , i decide to implements a visual scripting editor like Blue Print (Unreal Engine) How to work is very simple, Just connect Node to Node, setting value, and the program, generate the npc script. The source code work like that. All nodes contains this function to generate code relative to parameters setting. public string CreateCode() { return map.Text + "," + x.Text + "," + y.Text + "," + dir.Text + " script " + name.Text + " " + graphics.Text + ",{"; } Really simple. And, this is Frontend Hope like this new NPC Editor. Actually need more time to create all Node and function relative to all npc command and sql operation. Follow for more news or join in rAthena Studio on discord ??
    1 point
  6. grfeditor does not support data.grf more than 4GB, I tried to create a clean date with all contents of kRO, bRO, jRO, thRO and twRO. when finalizing all the files disappear inside the grf.
    1 point
  7. extract fluxcp C:\xampp\htdocs [if you install xampp on C:\xampp] open on web browser 127.0.0.1/fluxcp input secretpassword on password at Install & Update choise Install or Update Everything if show notice press OK -Finis-
    1 point
  8. make sure u didn't diff this option
    1 point
  9. here you go //===== Athena Script ===================================== //= Mr. Password //===== By ================================ //= //===== Description ======================================= //= Use the GM menu to enter a Password, clue and prize. //= Players will then have to input the password using the //= clue given. //===== Credits =========================================== //= //===== Version =========================================== //= v1.1 //========================================================= //= v1.0 - First release. //= v1.1 - Fixed an exploit. //========================================================= prontera,159,226,1 script Mr Password 869,{ // Set this to the minimum GM level allowed to access the GM CP. if (getgmlevel() > 10) goto L_gm; L_insert: if($prizewon == 0) { mes "[Mr Password]"; mes "Somebody already guessed the password."; mes "Please wait for my boss to give me a new one."; close; } mes "[Mr Password]"; mes "Hello " + strcharinfo(0) + ", would you like to guess the password?"; mes "The clue is: ^008000"+$clue$+"^000000"; next; mes "[Mr Password]"; mes "Go on, take a guess."; input @text$; if ( $prizewon == 0 ) { mes "Too late, you were'nt fast enough!"; close; } if (@text$ == $password$) goto L_win; if (@text$ != $password$) goto L_error; L_error: mes "[Mr Password]"; mes "Sorry, that's incorrect. Try again."; close; L_win: mes "[Mr Password]"; mes "Congratulations!! You guessed correctly!"; mes "Check your Inventory for your amazing ^008000"+ getitemname($get_item_id) +"^000000"; mes "Cool Prize huh?"; announce "Mr Password: " + strcharinfo(0) + " has guessed correctly, what a smart person!",0; getitem $get_item_id,$get_item_amount; set $prizewon, 0; close; L_gm: mes "[Mr Password]"; mes "Hello GM " + strcharinfo(0) + ", What would you like to do?"; switch(select("Set Password:Set Clue:Set Prize:Normal Player Mode:Announce")) { case 1: mes "[Mr Password]"; mes "So, what password should I use this time boss?"; input $password$; next; mes "[Mr Password]"; mes "Ok, so you want the password to be ^008000"+$password$+"^000000? cool."; next; goto L_gm; case 2: mes "[Mr Password]"; mes "So, what clue should I give them boss?"; input $clue$; next; mes "[Mr Password]"; mes "Ok, so the clue is: ^008000"+$clue$+"^000000, gotcha!"; next; goto L_gm; case 3: mes "[Mr Password]"; mes "Alright, what should the prize be boss?"; input $get_item_id; next; mes "[Mr Password]"; mes "How many of this item should I give them?"; input $get_item_amount; next; mes "[Mr Password]"; mes "So, the prize is ^008000"+ $get_item_amount +" "+ getitemname($get_item_id) +"^000000? Awesome."; next; goto L_gm; case 4: next; goto L_insert; case 5: mes "[Mr Password]"; mes "Ok, I'll let everyone know we're ready."; next; announce "Mr Password: The Boss has given me a new Password, come try guess it and get a prize!",0; set $prizewon, 1; next; goto L_gm; } }
    1 point
  10. An easier way: - script #sample -1,{ OnAgitStart: OnAgitStart2: sleep rand(10,50); // In case both are executed simultaneously, don't overlap. if (!.bound) { set .bound,1; bindatcmd("guildrecall",strnpcinfo(0)+"::OnBlock"); bindatcmd("recall",strnpcinfo(0)+"::OnBlock"); } end; OnAgitEnd: OnAgitEnd2: sleep rand(10,50); if (.bound && !agitcheck() && !agitcheck2()) { set .bound,0; unbindatcmd("guildrecall"); unbindatcmd("recall"); } end; OnBlock: message strcharinfo(0),.@atcmd_command$+" is blocked during WoE."; end; }
    1 point
  11. @joelolopez I totally mess this part.. thanks ! prontera,150,145,5 script register 56,{ function isreq; callsub L_check; select( "Register ?" ); if( !getcharid(1) ) { mes "you're not in a party"; close; } else if( .party1 == getcharid(1) || .party2 == getcharid(1) ) { mes "you're already on my list"; close; } getpartymember getcharid(1); if( $@partymembercount != .count_req || !instance_check_party( getcharid(1),.count_req ) ) { mes "you need "+ .count_req +" players online in your party"; close; } callsub L_check; if( !.party2 ) .party2 = getcharid(1); else .party1 = getcharid(1); dispbottom "your party is now on my list"; if( !.party1 || !.party2 ) end; .start = 1; warpparty .map_event$, 0,0, .party1; warpparty .map_event$, 0,0, .party2; initnpctimer; end; OnPCKillEvent: .@self = getcharid(3); .@killed = killedrid; .@is_reg = isreq(); attachrid( .@killed ); if( !isreq() ) end; getpartymember getcharid(1),1; getpartymember getcharid(1),2; for( .@i = 0; .@i < $@partymembercount; .@i++ ) { if( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) { attachrid( $@partymemberaid[.@i] ); sleep2 1; if( strcharinfo(3) == .map_event$ ) { .@is_online += 1; if( Hp < 1 ) .@count += 1; } } } if( .@is_online != .@count ) { attachrid( .@killed ); sleep2( .wait * 1000 ); atcommand "@alive"; end; } else if( !.@is_reg ) end; attachrid( .@self ); sleep2 2; announce "team "+ getpartyname( getcharid(1) ) +" win the event !", 0; getpartymember getcharid(1); getpartymember getcharid(1),1; getpartymember getcharid(1),2; for( .@i = 0; .@i < $@partymembercount; .@i++ ) if( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) { getmapxy .@map$, .@x, .@y, 0, $@partymembername$[.@i]; if( .@map$ == .map_event$ ) getitem .item_id, .item_count, $@partymemberaid[.@i]; } stopnpctimer; sleep 3000; OnTimer300000: // 5 min then end of event .start = .party1 = .party2 = 0; mapwarp .map_event$,"prontera",0,0; end; L_check: if( .start ) end; else if( getpartyname( .party1 ) == "null" ) .party1 = 0; else if( getpartyname( .party2 ) == "null" ) .party2 = 0; else if( getpartyname( .party1 ) != "null" ) { getpartymember .party1; if( $@partymembercount != .count_req || !instance_check_party( .party1,.count_req ) ) .party1 = 0; } else if( getpartyname( .party2 ) != "null" ) { getpartymember .party2; if( $@partymembercount != .count_req || !instance_check_party( .party2,.count_req ) ) .party2 = 0; } return; function isreq { if( strcharinfo(3) == .map_event$ && .start && ( getcharid(1) == .party1 || getcharid(1) == .party2 ) ) return 1; return 0; } OnInit: .map_event$ = "geffen"; // your event map .count_req = 1; // count required in the party to start the event .wait = 20; // time in secs to be rezu .item_id = 501; // item id gained .item_count = 1; // item count gained setmapflag .map_event$,mf_noteleport; setmapflag .map_event$,mf_nowarp; setmapflag .map_event$,mf_nowarpto; setmapflag .map_event$,mf_nomemo; setmapflagnosave .map_event$,"prontera",0,0; setmapflag .map_event$,mf_partylock; setmapflag .map_event$,mf_pvp; end; } Now those who leave the event map are not in the killed list + can't gain a reward. No don't touch the map name in the mapflag. Just change the setting : .map_event$ = "geffen"; // your event map .count_req = 1; // count required in the party to start the event .wait = 20; // time in secs to be rezu .item_id = 501; // item id gained .item_count = 1; // item count gained
    1 point
  12. Try this http://pastebin.com/QfydWwrY Put your item id to be restricted in this line of code : setarray .@restricted[0],607,608; // Restricted items
    1 point
×
×
  • Create New...