Jump to content

Ragno

Members
  • Posts

    82
  • Joined

  • Last visited

  • Days Won

    6

Ragno last won the day on July 30 2022

Ragno had the most liked content!

6 Followers

About Ragno

  • Birthday August 28

Profile Information

Recent Profile Visitors

6011 profile views

Ragno's Achievements

Poring

Poring (1/15)

  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

40

Reputation

1

Community Answers

  1. hi ragno.

    can you update 

    llike in hercules has 1.1

     

  2. It is because the npc definition: <map name>,<x>,<y>,<facing>%TAB%script%TAB%<NPC Name>%TAB%<sprite id>,<triggerX>,<triggerY>,{<code>} You have an extra ",2" argument. The correct should be: paradise,143,87,1 script Time Portal#porev 723,2,2,{ morocc_o,159,112,1 script Time Portal#porev3 723,2,2,{
  3. Ragno

    0 HP Bug

    One way I know to produce that, is forcing to sit a dead player. They sit, but with 0 hp. A way to prevent it is check it's hp has more than 0 hp before sit them.
  4. Maybe we can do a team in other projects, I haven't made an inventory of iRO contents, but there is still lots of contents to bring.
  5. The following script emulates iRO's Weekly Turn-In Event (Gramps NPC). This was made by having direct interaction with Gramps npc ingame. For more details please check: Weekly Turn-In Events - iRO Wiki Special thanks to: ZacktheBear from AtlantisRO. This would not have been possible without his invaluable help by providing replay data and testing. Resources: Gramps_Weekly_TurnIn.txt quest_db.txt questid2display.txt resnametable.txt Some notes about this script: This script uses special maps to warp players. Please prepare the map-cache according to data provided. This script uses some arrays on the OnInit label to set the Turn-In quest and maps: Arrays .Gramps_MapName$, .Gramps_MapWarp$, .Gramps_MapX and .Gramps_MapY defines the turn-in map where player will be warped. Array .Gramps_Turn defines the questlog id and target monster for Tur-In in this order: Low Maps: Index 0 = Quest Id 1 Index 1 = Monster Id 1 Index 2 = Quest Id 2 Index 3 = Monster Id 2 Mid Maps: Index 4 = Quest Id 1 Index 5 = Monster Id 1 Index 6 = Quest Id 2 Index 7 = Monster Id 2 High Maps: Index 8 = Quest Id 1 Index 9 = Monster Id 1 Index 10 = Quest Id 2 Index 11 = Monster Id 2 Some quest gives Zeny reward, but it is not clear which one gives and which one doesn't. Please provide any data to know how does this works. Since I have no way to know how much monsters have Turn-In maps, I didn't put monster spawn. Please configure it as your needs. Please feel free to make any suggestion for improve this script and report any issue you may find.
  6. According to kRO 2014.02.01 Notice it was added a Guild Storage NPC in every city: I have this questions about this update: How does this npc works? Is it an independent npc or it was added via Kafra Employee? Can every guild member access the guild storage? Or only those who has the storage check in guild window? What are the requisits to use it? And also want to request for somebody with kRO account to please bring screenshots (or video if possible) with the official dialogues of this npc to make it a script. Thanks!
  7. If you want to replace prontera map without replacing the files, you need to edit your resnametable.txt file in data.grf. Add this: prontera.gnd#pprontera.gnd# prontera.gat#pprontera.gat# prontera.rsw#pprontera.rsw# À¯ÀúÀÎÅÍÆäÀ̽º\map\prontera.bmp#À¯ÀúÀÎÅÍÆäÀ̽º\map\pprontera.bmp# In this way, when player loads prontera map, client will use "pprontera.*" instead of "prontera.*" resources.
  8. Ragno

    Clan System

    iRO has the clan system active since some months, and players can apply to a clan. Here are some observations: When you pass the mouse over the clan master npc, it shows the clan logo in his name: This are the buffs seted when player joins the clan: StateIconList[EFST_IDs.EFST_SWORDCLAN] = { descript = { { "Sword clan", COLOR_TITLE_BUFF }, { "STR + 1, VIT + 1" }, { "MHP + 30, MSP + 10" } } } StateIconList[EFST_IDs.EFST_ARCWANDCLAN] = { descript = { { "Arcwand Clan", COLOR_TITLE_BUFF }, { "INT + 1, DEX + 1" }, { "MHP + 30, MSP + 10" } } } StateIconList[EFST_IDs.EFST_GOLDENMACECLAN] = { descript = { { "Goldenmace Clan", COLOR_TITLE_BUFF }, { "LUK + 1, INT + 1" }, { "MHP + 30, MSP + 10" } } } StateIconList[EFST_IDs.EFST_CROSSBOWCLAN] = { descript = { { "Crossbow Clan", COLOR_TITLE_BUFF }, { "DEX + 1, AGI + 1" }, { "MHP + 30, MSP + 10" } } } And this are the dialogues and messages from that four npcs: prt_in,33,114,5 script Raffam Oranpere 10058,{ mes "[Raffam Oranpere]"; mes "Hi! I'm Raffam, master of ^3131FFSword Clan^000000, one the Rune-Midgarts Kingdom."; next; switch(select("Introducing Clan", "Join.", "Leave.")){ case 1: switch(select("Clans are", "About the Sword Clan", "Cancel.")){ case 1: mes "[Raffam Oranpere]"; mes "The Clans are a type of guild ran by the Kingdom."; mes "They don't participate in the Siege, so members are free to join/leave anytime."; next; mes "[Raffam Oranpere]"; mes "I wish we could join the Siege. I'd love flying over on my dragon and burning everyone in my way!"; mes "Oops, too thrilled!"; next; mes "[Raffam Oranpere]"; mes "Join us, if no clan suits your taste."; mes "New members are given ^3131FFfree stat bonus^000000."; next; mes "[Raffam Oranpere]"; mes "Melee stats are offered as the name ^3131FFSword Clan^000000 suggests, but not all members are Melee classes."; mes "Don't feel pressured, just count on me!"; next; mes "[Raffam Oranpere]"; mes "Difference in variety creates the fun"; mes "These odd bunches never bore me in the party."; next; mes "[Raffam Oranpere]"; mes "And who knows you'll meet your soul mate in the clan? Hahah!"; close; case 2: mes "[Raffam Oranpere]"; mes "The ^3131FFSword Clan^000000 mainly supports Melee adventurers."; mes "Join for free ^FF0000<STR+1, VIT+1, MHP+30, MSP+10>^000000!"; next; mes "[Raffam Oranpere]"; mes "Remember, no Siege participation."; mes "You should contact other guilds for Siege."; next; mes "[Raffam Oranpere]"; mes "A question?"; mes "Excited to join me? Hahah!"; close; case 3: close; } case 2: mes "[Raffam Oranpere]"; mes "Oh, you'll join? Good choice!"; mes "Let's check the Clan policy then take admission procedures."; next; mes "[Raffam Oranpere]"; mes "^3131FFClansmen^000000 cannot participate in the Siege."; mes "New members are given these stat bonuses: ^FF0000<STR+1, VIT+1, MHP+30, MSP+10>^000000."; mes "You with me so far?"; next; if (select("Yes.", "No.") == 2){ mes "[Raffam Oranpere]"; mes "Uh, oh. Let's go back to"; mes "beginning."; close; } mes "[Raffam Oranpere]"; mes "Join and leave the clans anytime, but if you don't show up at clan for ^FF0000longer than 2 weeks^000000, you'll be ^FF0000expelled^000000."; mes "Clan masters exist for reason, like I."; mes "Understood?"; next; if (select("Yes.", "No.") == 2){ mes "[Raffam Oranpere]"; mes "Uh, oh. Let's go back to"; mes "beginning."; close; } mes "[Raffam Oranpere]"; mes "Great, sign name here on the register."; next; input .@input$; mes "[Raffam Oranpere]"; mes "So, you're ^3131FF" + strcharinfo(0) + "^000000! Nice name!"; mes "Let me register you."; next; if (getcharid(2)){ mes "[Raffam Oranpere]"; mes "Come back to join after you leave the current guild."; close; //} else if (clan()){ mes "[Raffam Oranpere]"; mes "Eh?"; mes "Oh, you're in Clan."; mes "Don't mess with me, it's not cool."; close; } mes "[Raffam Oranpere]"; mes "Welcome to ^3131FFSword Clan^000000!"; mes "You can review Clan info with ^3131FFCtrl+G^000000."; mes "At your service!"; // added to Sword Clan close; case 3: mes "[Raffam Oranpere]"; mes "You want to leave?"; mes "No problem. I hope you'll find more suitable clan."; mes "Ready for withdrawal?"; next; if (select("Continue.", "Cancel.") == 1){ /* if (clan() == Sword_Clan){ mes "[Raffam Oranpere]"; mes "Okay, it's done. But let's not be strangers, okay?"; mes "It was nice having you!"; // removed from Sword Clan } else if (clan()){ mes "[Raffam Oranpere]"; mes "Hey, talk to your guild master if you want to leave."; } else { mes "[Raffam Oranpere]"; mes "Wait, you're not with us! Grr, don't make me breathe fire at you!"; } */ } close; } } prt_in,35,114,5 script Devon Aire 10059,{ mes "[Devon Aire]"; mes "I'm Devon, master of ^3131FFArc Wand Clan^000000."; next; switch(select("Introducing Clan", "Join.", "Leave.")){ case 1: switch(select("Clans are", "About the Arc Wand Clan", "Cancel.")){ case 1: mes "[Devon Aire]"; mes "The ^3131FFClans^000000 are ran by the Kingdom, not privately like others."; mes "And I manage one of them."; next; mes "[Devon Aire]"; mes "..."; mes "What's with that look? You got a problem?"; next; mes "[Berman Aire]"; mes "Brother, you're scaring the potential member, be gentle."; next; mes "[Devon Aire]"; mes "..."; next; mes "[Devon Aire]"; mes "Join if seeking a place to fit in."; mes "We give ^3131FFfree bonus stat^000000. But no Siege."; next; mes "[Devon Aire]"; mes "Most members are offensive mage classes as the name ^3131FFArc Wand Clan^000000 suggests, but that's no requirement."; next; mes "[Devon Aire]"; mes "...Hey, Shaam Rumi."; mes "Stop hitting on my brother, and go work."; next; mes "[Shaam Rumi]"; mes "Whatever!"; next; mes "[Devon Aire]"; mes "...Hmpf!"; mes "Listen, Crossbow Clan's master is an evil."; next; mes "[Shaam Rumi]"; mes "Get over me, Decon! Don't spread rumors!"; // Note. Here literally says "Decon", but it may be "Devon" (typo mistake) next; mes "[Berman Aire]"; mes "Haha. stop it. You two are making a scene."; mes "Come on, back to work, guys."; close; case 2: mes "[Devon Aire]"; mes "The ^3131FFArc Wand Clan^000000 mainly supports offensive mage classes."; mes "We offer ^FF0000<INT+1, DEX+1, MHP+30, MSP+10>^000000 to new members. Don't ask for more; it's the Kingdom's rule."; next; mes "[Devon Aire]"; mes "^3131FFClansmen^000000 can't participate in the Siege."; mes "If you like the Siege, then go join a regular guild."; next; mes "[Devon Aire]"; mes "That is all. No questions."; close; case 3: close; } case 2: mes "[Devon Aire]"; mes "..."; mes "Let's check the Clan policy then take admission procedures."; next; mes "[Devon Aire]"; mes "^3131FFClansmen^000000 cannot participate in the Siege."; mes "New members are given these stat bonuses: ^FF0000<INT+1, DEX+1, MHP+30, MSP+10>^000000."; mes "You with me so far?"; next; if (select("Yes.", "No.") == 2){ mes "[Devon Aire]"; mes "Gosh, listen to the policy again."; close; } mes "[Devon Aire]"; mes "Join and leave the clans anytime, but if you don't show up at clan for ^FF0000more than 2 weeks^000000, you'll be ^FF0000expelled^000000."; mes "Do you agree?"; next; if (select("Yes.", "No.") == 2){ mes "[Devon Aire]"; mes "Then I don't want you."; close; } mes "[Devon Aire]"; mes "Sign your name here."; next; input .@input$; mes "[Devon Aire]"; mes "^3131FF" + strcharinfo(0) + "^000000...."; mes "Good, let me invite you in."; next; if (getcharid(2)){ mes "[Devon Aire]"; mes "Leave your guild first to join mine, duh."; close; //} else if (clan()){ mes "[Devon Aire]"; mes "You're already in a clan. You joking?!"; mes "Oh, I can be funny, too--FIRE PILLAR!"; close; } mes "[Devon Aire]"; mes "You have joined the ^3131FFArc Wand Clan^000000."; // added to Arc Wand Clan next; mes "[Devon Aire]"; mes "You can review Clan info with ^3131FFCtrl+G^000000."; mes "So don't bother me later."; next; mes "[Devon Aire]"; mes "That's all. Visit often or be expelled. Dismissed."; close; case 3: mes "[Devon Aire]"; mes "Want to leave, huh?"; mes "I understand it it's about Siege."; mes "If not, why are...Never mind.."; mes "I'll process your withdrawal."; next; if (select("Continue.", "Cancel.") == 1){ /* if (clan() == Arc_Wand_Clan){ mes "[Devon Aire]"; mes "You are withdrawn from the clan."; mes "Now leave. I don't feel like talking anymore."; // removed from Arc Wand Clan } else if (clan()){ mes "[Devon Aire]"; mes "You're barking up the wrong tree."; mes "Go to your clan master."; } else { mes "[Devon Aire]"; mes "Naughty children deserve a good Jupitel Thunder."; } */ } close; } } prt_in,37,114,5 script Berman Aire 10060,{ mes "[Berman Aire]"; mes "Nice to meet you. I'm Berman Aire, master of ^3131FFGoldenmace Clan^000000."; mes "I'm also the older brother of Devon Aire here. Devon looks tough, but he's a sweetheart."; next; switch(select("Introducing Clan", "Join.", "Leave.")){ case 1: switch(select("Clans are", "About the Golden Mace Clan", "Cancel.")){ case 1: mes "[Berman Aire]"; mes "The ^3131FFClans^000000 are established by the Kingdom to help adventurers connect and share information."; next; mes "[Berman Aire]"; mes "Because the Kingdom runs the clan, no Sieges, but at least the members are given ^3131FFstat bonuses^000000."; mes "The stat bonuses are small, but can be very useful for beginning adventurers."; next; mes "[Berman Aire]"; mes "We're named the ^3131FFGolden Mace Clan^000000, but we don't discriminate against applicants based on their classes."; mes "The name is just to help you easily choose your clan."; next; mes "[Shaam Rumi]"; mes "Berman, enough with the explanation. Let's go hang out in Glast Heim."; next; mes "[Devon Aire]"; mes "... Hey."; next; mes "[Shaam Rumi]"; mes "Ooh, you're scaring me."; mes "Berman, call me when you can!~"; next; mes "[Berman Aire]"; mes "Hah hah, I apologize for their bickering."; next; mes "[Berman Aire]"; mes "Do you have a question?"; mes "If you're tired of traveling alone, join us! You can join and leave the Clans anytime you want."; close; case 2: mes "[Berman Aire]"; mes "The ^3131FFGolden Mace Clan^000000 mainly supports supportive classes."; mes "We offer ^FF0000<INT+1, LUK+1, MHP+30, MSP+10>^000000 to new members."; next; mes "[Berman Aire]"; mes "As I told you earlier, Clans cannot join the Siege because they already belong to the Kingdom."; mes "If you want to be in the Siege, then I recommend you join a regular guild."; next; mes "[Berman Aire]"; mes "Do you understand about the Clans now?"; close; case 3: close; } case 2: mes "[Berman Aire]"; mes "Great!"; mes "Let's check the Clan policy then take admission procedures."; next; mes "[Berman Aire]"; mes "^3131FFClansmen^000000 cannot participate in the Siege."; mes "As our new member, you'll receive the following stat bonuses: ^FF0000<DEX+1, AGI+1, MHP+30, MSP+10>^000000."; mes "Do you agree?"; next; if (select("Yes.", "No.") == 2){ mes "[Berman Aire]"; mes "I suggest you to think it over."; close; } mes "[Berman Aire]"; mes "Join and leave the clans anytime, but if you don't show up at clan for ^FF0000more than 2 weeks^000000, you'll be ^FF0000expelled^000000."; mes "Do you agree to maintain good standing in Clan?"; next; if (select("Yes.", "No.") == 2){ mes "[Berman Aire]"; mes "I'm sure you'll find a clan better suited for your needs."; close; } mes "[Berman Aire]"; mes "Now, please write your name here."; next; input .@input$; mes "[Berman Aire]"; mes "^3131FF" + strcharinfo(0) + "^000000! What a good name!"; mes "Okay, then..."; next; if (getcharid(2)){ mes "[Berman Aire]"; mes "Oh, no."; mes "In order to join, you first have to leave the current guild."; close; //} else if (clan()){ mes "[Berman Aire]"; mes "You're already in a clan."; mes "You're just confused, right?"; close; } mes "[Berman Aire]"; mes "Welcome to the ^3131FFGolden Mace Clan^000000!"; // added to Golden Mace Clan next; mes "[Berman Aire]"; mes "You can review Clan info with ^3131FFCtrl+G^000000."; next; mes "[Berman Aire]"; mes "Please remember the few precautions I gave you, and enjoy your Clan activities!"; close; case 3: mes "[Berman Aire]"; mes "With meeting, there is parting."; mes "I hope you enjoyed your time in ^3131FFGolden Mace Clan^000000."; mes "Now, should I process your withdrawal?"; next; if (select("Continue.", "Cancel.") == 1){ /* if (clan() == Goldenmace_Clan){ mes "[Berman Aire]"; mes "It's processed."; mes "Come back anytime to ^3131FFGolden Mace Clan^000000. I'll be here."; // removed from Golden Mace Clan } else if (clan()){ mes "[Berman Aire]"; mes "I'm sorry, but I can't remove you from another clan.."; } else { mes "[Berman Aire]"; mes "You can't leave the clan without joining it first."; } */ } close; } } prt_in,39,114,5 script Shaam Rumi 10061,{ mes "[Shaam Rumi]"; mes "Hi, there! I'm Shaam, master of ^3131FFCrossbow Clan^000000"; mes "What can I do for you?"; next; switch(select("Introducing Clan", "Join.", "Leave.")){ case 1: switch(select("Clans are", "About the Crossbow Clan", "Cancel.")){ case 1: mes "[Shaam Rumi]"; mes "The Clan established by the Rune-Midgarts Kingdom to... Raffam, why are our ^3131FFclans^000000 made?"; next; mes "[Raffam Oranpere]"; mes "Did you sleep in class? Gosh."; mes "The Clans help lone adventurers connect with each other and share information."; next; mes "[Shaam Rumi]"; mes "A-ha, got it! Thank you, Captain!"; mes "You heard that too, right?"; next; mes "[Shaam Rumi]"; mes "Run by the Kingdom itself, the Clans are not allowed to participate in the Siege, but the good news is that the members are given some ^3131FFstat bonuses^000000."; next; mes "[Shaam Rumi]"; mes "In case you wonder if the ^3131FFCrossbow Clan^000000 only recruits Archers, no, it doesn't."; mes "All the Clans accept all classes."; mes "You can choose the one that suits your needs best."; next; mes "[Shaam Rumi]"; mes "That should cover everything there is to know."; mes "Berman, let's go hang out in Glast Heim."; next; mes "[Devon Aire]"; mes "You..."; next; mes "[Shaam Rumi]"; mes "Ooh, scary! You're so protective of your brother."; close; case 2: mes "[Shaam Rumi]"; mes "The ^3131FFCrossbow Clan^000000 is ideal for Ranged classes."; next; mes "[Shaam Rumi]"; mes "Eh, let me check the Clan manual."; mes "Ah, and we offer stat bonuses to new members: ^FF0000<DEX+1, AGI+1, MHP+30, MSP+10>^000000."; next; mes "[Shaam Rumi]"; mes "The Clans are not allowed to participate in the Siege; you should join a private guild instead for the Siege."; mes "The Clans are for adventurers that hate being tied down."; next; mes "[Shaam Rumi]"; mes "Do you have a question?"; close; case 3: close; } case 2: mes "[Shaam Rumi]"; mes "Oh, yeah? Good choice!"; mes "Let's check the Clan policy then take admission procedures."; next; mes "[Shaam Rumi]"; mes "^3131FFClansmen^000000 cannot participate in the Siege."; mes "As our new member, you'll receive the following stat bonuses: ^FF0000<DEX+1, AGI+1, MHP+30, MSP+10>^000000."; mes "Do you agree?"; next; if (select("Yes.", "No.") == 2){ mes "[Shaam Rumi]"; mes "Ah, do you need time to think about this? No problem."; close; } mes "[Shaam Rumi]"; mes "Join and leave the clans anytime, but if you don't show up at clan for ^FF0000more than 2 weeks^000000, you'll be ^FF0000expelled^000000."; mes "Do you promise you'll maintain good standing?"; next; if (select("Yes.", "No.") == 2){ mes "[Shaam Rumi]"; mes "All right then. I'm just going to go have some fun."; close; } mes "[Shaam Rumi]"; mes "Good, write your name here."; next; input .@input$; mes "[Shaam Rumi]"; mes "^3131FF" + strcharinfo(0) + "^000000..!"; mes "Ugh, your penmanship needs work."; mes "Let me process your application."; next; if (getcharid(2)){ mes "[Shaam Rumi]"; mes "Did you finish things up with your old clan?"; close; //} else if (clan()){ mes "[Shaam Rumi]"; mes "Eh, you're already in a clan. Hey, this isn't funny."; close; } mes "[Shaam Rumi]"; mes "Welcome to the ^3131FFCrossbow Clan^000000!"; // added to Crossbow clan next; mes "[Shaam Rumi]"; mes "You can review Clan info with ^3131FFCtrl+G^000000."; next; mes "[Shaam Rumi]"; mes "Don't pick fights with other clansmen. Be social."; mes "If you need help, you can always whisper me, okay? See you around!"; close; case 3: mes "[Shaam Rumi]"; mes "Why, did you find a better clan?"; mes "I'm disappointed, but it's your call. Let me process your withdrawal."; next; if (select("Continue.", "Cancel.") == 1){ /* if (clan() == Crossbow_Clan){ mes "[Shaam Rumi]"; mes "It's done."; mes "If you ever miss us, don't hesitate to come back, all right?"; // removed from Crossbow Clan } else if (clan()){ mes "[Shaam Rumi]"; mes "Sorry, but I don't meddle with other clan's business."; } else { mes "[Shaam Rumi]"; mes "I can't let you leave--you're not even in my clan!"; } */ } close; } } I used a "clan()" fictional command to indicate the kind of activity every npc do. I hope this help
  9. Emistry's code is correct, Yami. Here is the complete script with the suggested editions: //===== rAthena Script ======================================= //= Battleground: PVP //===== By: ================================================== //= AnnieRuru //===== Current Version: ===================================== //= 1.0 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= A simple battleground script: //= Kill players from the other team. //===== Additional Comments: ================================= //= 1.0 First version, edited. [Euphy] //============================================================ - script bg_pvp1#control1 -1,{ OnInit: .minplayer2start = 5; // minimum players to start (ex. if 3vs3, set to 3) .eventlasting = 15*60; // event duration before auto-reset (20 minutes * seconds) setarray .rewarditem[0], // rewards for the winning team: <item>,<amount>,... 7773, 15; end; OnStart: .@Guillaume = getwaitingroomstate( 0, .rednpcname$ ); .@Croix = getwaitingroomstate( 0, .bluenpcname$ ); if ( .@Guillaume < .minplayer2start || .@Croix < .minplayer2start ){ announce "Battleground 5v5 : "+.@Guillaume+"/5 Red Side | "+.@Croix+"/5 Blue Side",16; end; } // create Battleground and teams .red = waitingroom2bg( "guild_vs1", 5,50, strnpcinfo(0)+"::OnRedQuit", strnpcinfo(0)+"::OnRedDead", .rednpcname$ ); copyarray .team1aid, $@arenamembers, $@arenamembersnum; .team1count = .minplayer2start; .blue = waitingroom2bg( "guild_vs1", 95,50, strnpcinfo(0)+"::OnBlueQuit", strnpcinfo(0)+"::OnBlueDead", .bluenpcname$ ); copyarray .team2aid, $@arenamembers, $@arenamembersnum; .team2count = .minplayer2start; delwaitingroom .rednpcname$; delwaitingroom .bluenpcname$; bg_warp .red, "guild_vs1", 5,50; bg_warp .blue, "guild_vs1", 95,50; .score[1] = .score[2] = .minplayer2start; bg_updatescore "guild_vs1", .score[1], .score[2]; // match duration sleep .eventlasting * 1000; // end match, destroy Battleground, reset NPCs if ( .score[1] > .score[2] ) { mapannounce "guild_vs1", "- Red Team is victorious! -", bc_map; callsub L_Reward, 1; } else if ( .score[1] < .score[2] ) { mapannounce "guild_vs1", "- Blue Team is victorious! -", bc_map; callsub L_Reward, 2; } else mapannounce "guild_vs1", "- The match has ended in a draw! -", bc_map; bg_warp .red, "prontera",156,182; bg_warp .blue, "prontera",156,182; bg_destroy .red; bg_destroy .blue; donpcevent .rednpcname$ +"::OnStart"; donpcevent .bluenpcname$ +"::OnStart"; end; L_Reward: for ( .@i = 0; .@i < getd(".team"+ getarg(0) +"count"); .@i++ ) getitem .rewarditem[0], .rewarditem[1], getd(".team"+ getarg(0) +"aid["+ .@i +"]" ); return; // "OnDeath" event OnRedDead: callsub L_Dead, 1; OnBlueDead: callsub L_Dead, 2; L_Dead: .score[ getarg(0) ]--; bg_updatescore "guild_vs1", .score[1], .score[2]; while ( getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ) != getcharid(3) && .@i < getd(".team"+ getarg(0) +"count") ) .@i++; deletearray getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ), 1; setd ".team"+ getarg(0) +"count", getd(".team"+ getarg(0) +"count") -1; bg_leave; if ( !.score[ getarg(0) ] ) awake strnpcinfo(0); sleep2 1250; percentheal 100,100; end; // "OnQuit" event OnRedQuit: callsub L_Quit, 1; OnBlueQuit: callsub L_Quit, 2; L_Quit: .score[ getarg(0) ]--; bg_updatescore "guild_vs1", .score[1], .score[2]; percentheal 100, 100; while ( getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ) != getcharid(3) && .@i < getd(".team"+ getarg(0) +"count") ) .@i++; deletearray getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ), 1; setd ".team"+ getarg(0) +"count", getd(".team"+ getarg(0) +"count") -1; if ( !.score[ getarg(0) ] ) awake strnpcinfo(0); end; } prontera,147,162,5 script Red Team#bg_pvp1 413,{ mes "5v5 Battleground"; mes "Time Limit : 15 minutes"; mes "Cooldown : 0 minute"; mes "Rewards"; mes "Winner : 15"; mes "Loser : 0"; end; OnInit: sleep 1; set getvariableofnpc( .rednpcname$, "bg_pvp1#control1" ), strnpcinfo(0); OnStart: waitingroom "Battleground - 5v5", getvariableofnpc( .minplayer2start, "bg_pvp1#control1" ) +1, "bg_pvp1#control1::OnStart", 1; end; } prontera,164,162,3 script Blue Team#bg_pvp1 413,{ mes "5v5 Battleground"; mes "Time Limit : 15 minutes"; mes "Cooldown : 0 minute"; mes "Rewards"; mes "Winner : 15"; mes "Loser : 0"; end; OnInit: sleep 1; set getvariableofnpc( .bluenpcname$, "bg_pvp1#control1" ), strnpcinfo(0); OnStart: waitingroom "Battleground - 5v5", getvariableofnpc( .minplayer2start, "bg_pvp1#control1" ) +1, "bg_pvp1#control1::OnStart", 1; end; } guild_vs1 mapflag battleground 2 guild_vs1 mapflag nosave SavePoint guild_vs1 mapflag nowarp guild_vs1 mapflag nowarpto guild_vs1 mapflag noteleport guild_vs1 mapflag nomemo guild_vs1 mapflag nopenalty guild_vs1 mapflag nobranch guild_vs1 mapflag noicewall
  10. You're right. The location for bookshelf is ra_in01,187,149, I confused it in the replay Here is the sprite data, if needed: sprite.rar
  11. Thank you =) There was an error on iteminfo.lub, I have corrected it in this other version and also added the item sprites: items data.rar
  12. In both waitingroom of [Red Team#bg_pvp1] and [Blue Team#bg_pvp1] you need to chance the Trigger value from [ "bg_pvp1#control1::OnStart", getvariableofnpc( .minplayer2start, "bg_pvp1#control1" ) ] to 1. This will trigger the event "bg_pvp1#control1::OnStart" everytime a player enters the waiting room. Then add your announce in OnStart label, just after the first if conditional: OnStart: if ( getwaitingroomstate( 0, .rednpcname$ ) < .minplayer2start || getwaitingroomstate( 0, .bluenpcname$ ) < .minplayer2start ){ announce "Battleground 5v5 : "+.@Guillaume+"/5 Red Side | "+.@Croix+"/5 Blue Side",16; end; }
  13. The following script emulates the iRO's 13th Anniversary Quest Event active on 2016 June in iRO. This was made by directly doing this quest on iRO. For more details please check: Event Notice || iRO Wiki Resources: iRO_13th_Anniv.txt items data.rar quest_db.txt questid2display.txt Feel free to make any question.
  14. The following script emulates the Spotlight Quest: Adventure of the Tarnished Lamp active on 2016 June in iRO. This was made directly by doing this quest on iRO. For more details please check: Event Notice || iRO Wiki This quest requires an special spawn of Byorgue monster named "Byorgue Mercenary" who hasn't any exp/drops and has the following stats: Resources: iRO_Event_2016-06.txt item data.txt quest_db.txt questid2display.txt sprite.rar Feel free to make any question.
×
×
  • Create New...