-
Posts
63 -
Joined
-
Last visited
-
Days Won
5
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Posts posted by Mastagoon
-
-
OnPCAttackEvent
This event triggers when a player character attacks another entity. And it registers the damage and other information about the attack.
Example usage:
// @damage holds the amount of damage dealt. // @damagegid holds the GID of the target (account ID if the target is a player). // @damagerid holds the rid of the mob OnPCAttackEvent: dispbottom "You've dealt "+@damage+" to target with GID "+@damagegid+" and RID "+@damagerid;
-
Submitter
-
Submitted05/10/2021
-
Category
-
Video
-
Content AuthorMastagoon
- 1
-
-
46 minutes ago, AinsLord said:
very much thank you i do really appreciate this
edit:@Mastagoon i got this error showing on my console
here was the script i edit i dunno if i put it on wrong place
but i followed the instructions
//===== rAthena Script ======================================= //= Find the gm event (hide and seek) //===== By: ================================================== //= Mastagoon //===== Description: ========================================= //= The npc (GM sprite) will teleport to a random location on //= the map, and will open a waiting room. The first player to //= join that waiting room will win the round. //===== Current Version: ===================================== //= 1.0 //===== Featuers: ============================================ //= Can set the number of rounds, map, item&zeny rewards. //= the event can start manually or automatically. //= There is another version of this script compatiable with //= Stolao's event manager. You can DM me if you want that file. //============================================================ alexandria,166,155,4 script GM Masta#findgm 871,{ if(.status < 2) { mes "["+.npcName+"]"; mes "When the event begins, i will teleport to a random location on this map."; mes "And you need to find me to win!"; close; } end; OnInit: //SETTINGS .rounds = 5; // for how many rounds should the event last? .map$ = "prontera"; // the event where the gm will hide setarray .maps$[0], 'prontera', 'izlude', 'geffen'; .itemReward = 1; setarray .rewards[0],6379,5,7227,5; // [itemId, itemAmount, {....}] .zenyReward = 0; .zenyAmount = 10000; .debugMode = 0; .npcName$ = "GM Kiks"; .countdown = 3; // the time between event announcements and when the event actually starts. .automatic = 1; // automatic event or does it need a gm to run it manually? .runEvery = 3; // (ignore if manual) run the event ever X hours .offset = 1; // (ignore if manual) sometimes, you might have another event/announcement at the same time as the event announcement. you can set an offset (announce X minutes after event time.) // Do not edit the code below. if(.countdown < 0) .countdown = 1; if(.rounds < 1) .rounds = 1; if(.winnersPerRound < 1) .winnersPerRound = 1; for(.@i = 0; .@i < getarraysize(.rewards); .@i = .@i+2) { if(getitemname(.rewards[.@i]) == "null") { debugmes "[Find GM]: Invalid item id provided "+.rewards[.@i]+" removing item from the rewards list.."; deletearray .rewards[.@i],2; .@i -= 2; } } .status = 0; bindatcmd("eventstart", strnpcinfo(3)+"::OnEventAnnounce",60,99); strnpcinfo(3); end; OnMinute00: if(.status || !.automatic || gettime(DT_HOUR) % .runEvery != 0 || agitcheck() || agitcheck2() || agitcheck3()) end; sleep .offset * 1000 * 60; OnEventAnnounce: .status = 1; for(.@i = .countdown; i > 0; i--) { announce "[Find "+.npcName$+"] : The event will begin in "+callfunc("F_InsertPlural",.@i,"minute")+"!",bc_all|bc_blue; sleep .debugMode ? 5000 : 60000; } announce "[Find "+.npcName$+"] : The event has now begun!",bc_all|bc_blue; OnEventStart: .map$ = .maps$[rand(getarraysize(.maps$))]; sleep 2000; npctalk "I will now teleport to a random location"; sleep 2000; npctalk "You must find me to win the event!"; sleep 2000; npctalk "This event will last for "+callfunc("F_InsertPlural",.rounds,"round"); sleep 2000; npctalk "Goodluck!"; donpcevent strnpcinfo(3)+"::OnRoundStart"; .status = 2; .round = 1; end; OnRoundStart: initnpctimer; do { .@x = rand(0,450); .@y = rand(0,450); } while (!checkcell(.map$,.@x,.@y,cell_chkpass)); unitwarp getnpcid(0),.map$,.@x,.@y; debugmes "[Event]: npc is at: "+.@x+" & "+.@y; announce "[Find "+.npcName$+"] :"+.npcName$+" is hiding in a random place in "+.map$+", Find him now!",bc_all|bc_blue; delwaitingroom; waitingroom "Here!", 2, strnpcinfo(3)+"::OnRoundEnd",1; .status = 2; end; OnRoundEnd: if(.status != 2) end; .status = 1; //#TODO the winner should be already attached here no? getwaitingroomusers strnpcinfo(3); for(.@i = 0; .@i < getarraysize(.@waitingroom_users); .@i++) { if(.@waitingroom_users[.@i] > 0) { .@winner = .@waitingroom_users[.@i]; } } if(!attachrid(.@winner)) { .status = 2; end; } specialeffect2 EF_SPHERE; announce .npcName$+": I've been found by "+strcharinfo(0)+"!",bc_all|bc_blue; if(.itemReward) { for(.@i = 0; .@i < getarraysize(.rewards); .@i = .@i +2) { getitem .rewards[.@i],.rewards[.@i+1]; } } if(.zenyReward) { Zeny += .zenyAmount; dispbottom "You've gained "+.zenyAmount+" zeny for winning a round in the event."; } sleep 1000; if(.round >= .rounds) { donpcevent strnpcinfo(3)+"::OnEventEnd"; end; } .round++; donpcevent strnpcinfo(3)+"::OnRoundStart"; end; OnEventEnd: .status = 0; announce "[Find "+.npcName$+"]: The event is over! thank you for participating.",bc_all|bc_blue; unitwarp getnpcid(0),.map$,195,58; delwaitingroom; sleep 5000; end; OnTimer1800000: if(.status) { stopnpctimer; donpcevent strnpcinfo(3)+"::OnEventEnd"; } end; }
thanks again
use "" instead of ''
"prontera", "izlude", "geffen", ...etc
-
2 hours ago, umbraqueen said:
By commenting you mean putting // before all the cooldown line right?
In .yml files, you comment by adding # before the line, not //.
Alternatively you can remove the entire line aswell
-
2 hours ago, AinsLord said:
@Radian in addition to this post
how can i add additional maps where the NPC hide like randomly
i was trying to put
.map$ = "prontera"||"izlue"; // the event where the gm will hide
im getting error
Keep the .map$ line as it was. Then add below it:
setarray .maps$[0], 'prontera', 'izlude', 'geffen';
Then, right below the OnEventStart label, add this line:
.map$ = .maps$[rand(getarraysize(.maps$))];
Now the map will be randomly chosen each time.
goodluck.
-
announce "Player "+strcharinfo(0)+" Enters the PvP Room.",bc_all|bc_blue;
The line above announces it to the entire server. You want this line right above the warp script.
To make the announcement only inside the pvp room:
mapannounce strcharinfo(3),"Player "+strcharinfo(0)+" Enters the PvP Room.",bc_map|bc_blue;
- 1
-
8 minutes ago, umbraqueen said:
I tried, but when i did i had a bunch of error in the server console at startup, and i wasnt able to allocate any point in the skill tree. Is there something special i must do once i have put all skill to 0 cooldown?
Remove the Cooldown line or comment it out from the file.
If you got an error please share it to help us figure out what's wrong
-
Here's one solution:
In script.inc. Add this function at the end of the file:
BUILDIN_FUNC(logout_tick) { TBL_PC *sd; if (!script_rid2sd(sd)) { script_pushint(st, -1); return SCRIPT_CMD_FAILURE; } if (sd->canlog_tick == 0) script_pushint(st, 0); else script_pushint(st, DIFF_TICK(gettick(), sd->canlog_tick)); return SCRIPT_CMD_SUCCESS; }
in script_def.inc. Add this line at the end of the file:
BUILDIN_DEF(logout_tick, ""),
Then recompile your server.
This script command will check for the same timer used to check if a player can log out or not. Basically it returns how many milliseconds ago was the character in combat.
Example usage:
- script testscript -1,{ OnInit: bindatcmd("testcmd", strnpcinfo(3)+"::OnAtCmd"); end; OnAtCmd: .@tick = logout_tick(); dispbottom "You have been in combat "+.@tick/1000+" seconds ago."; if(.@tick >= 5000 || .@tick == 0) dispbottom "Command used successfully!"; else dispbottom "You cannot use this command if you have been in combat during the last 5 seconds."; end; }
Result:
- 1
-
What client version are you using? and is it hexed ? if so please share your NEMO hex profile.
Seems like a client-side problem. Basically your server is not receiving the correct packets from the client. I don't have alot of expertise in this area, but first you should make sure the client version you're using matches the PACKETVER constant on your server side.
-
9 hours ago, hannahhaven621 said:
i did a clean up of the script however i have experienced an issue when the item in your inventory is greater than what you have from your restock list. what happens is that a negative amount of item is dropped from the player.
this version does not need the ticket however it only works whenever you are in town.
EDIT:
v1.2 with the function to prevent the error when the items in your inventory is greater than that of your re-stock list.
//===== rAthena Script ======================================= //= @restock command //===== By: ================================================== //= Mastagoon //===== Description: ========================================= //= @restock command to get certain items from your storage //===== Current Version: ===================================== //= 1.0 //= 1.1 added town only and clean up on some of the code. //= 1.2 added an if function when your items in your inventory is greater than the items from your stock list<hannahhaven621> //===== TODO: ================================================ //= @restock SNAPSHOT //============================================================ - script restock_atcmd -1,{ function addSpace { set .@space$, ""; for(.@i = 1; .@i <= getarg(0); .@i++) { set .@space$, .@space$+" "; } return .@space$; } function showRestockHelp { dispbottom "Command Usage : "; dispbottom "@restock add <itemid> <quantity> : add item to restock list"; dispbottom "@restock remove <itemid> : remove item from restock list"; dispbottom "@restock list : show current restock list"; dispbottom "@restock reset : reset restock list"; dispbottom "@restock help/h : show this help menu"; dispbottom "@restock : get restock items from the storage."; } OnInit: .TicketID = -1; setarray .allowedtypes[0],0,1,2,3,7,8,9,10,11,12; //healing,usable,etc,delayed usable bindatcmd "restock",strnpcinfo(3)+"::OnAtcommand"; end; OnAtcommand: switch(.@atcmd_numparameters) { case 0: // @restock command if(getarraysize(RestockList) == 0) { dispbottom "Your restock list is empty."; end; } if(!getmapflag(strcharinfo(3),mf_town,0)) { dispbottom "You can only use this command inside Towns."; end; } for(.@i = 0; .@i < getarraysize(RestockList); .@i++) { .@amount = RestockAmountList[.@i] - countitem(RestockList[.@i]); if(!storagecountitem(RestockList[.@i]) > .@amount) { dispbottom "@restocking "+getitemname(RestockList[.@i])+" failed, your item in your inventory is greater than your restock list."; close; } if(storagecountitem(RestockList[.@i]) >= .@amount) { getitem RestockList[.@i],.@amount; storagedelitem RestockList[.@i],.@amount; // successful @restock } else { dispbottom "@restocking "+getitemname(RestockList[.@i])+" failed, not enough in storage."; } } break; case 1: if(strtolower(.@atcmd_parameters$[0]) == "list") { // get restock list if(getarraysize(RestockList) == 0) { dispbottom "Your restock list is empty."; end; } dispbottom "ID"+addSpace(32)+"Name"+addSpace(32)+"Quantity"; dispbottom "============================================"; for(.@i = 0; .@i < getarraysize(RestockList); .@i++) { .@item_name$ = getitemname(RestockList[.@i]); dispbottom RestockList[.@i]+addSpace(30-getstrlen(.@i+""))+.@item_name$+addSpace(36- getstrlen(.@item_name$))+RestockAmountList[.@i]; } } else if(strtolower(.@atcmd_parameters$[0]) == "reset") { // reset restock list deletearray RestockList[0],getarraysize(RestockList); deletearray RestockAmountList[0],getarraysize(RestockAmountList); dispbottom "Your restock list have been reset."; } else if(strtolower(.@atcmd_parameters$[0]) == "help" || strtolower(.@atcmd_parameters$[0]) == "h") { showRestockHelp(); } break; case 2: if(strtolower(.@atcmd_parameters$[0]) != "remove") { showRestockHelp(); end; } .@item = atoi(.@atcmd_parameters$[1]); if(getitemname(.@item) == "null") { dispbottom "@restock : This item dones not exist. (id "+.@item+")"; end; } .@index = inarray(RestockList, .@item); if(.@index == -1) { //item is not in the list dispbottom "@restock : This item is not on your restock list."; end; } deletearray RestockList[.@index],1; deletearray RestockAmountList[.@index],1; dispbottom "@restock: item "+getitemname(.@item)+" deleted succesfully!"; break; case 3: .@item = atoi(.@atcmd_parameters$[1]); .@quantity = atoi(.@atcmd_parameters$[2]); if(strtolower(.@atcmd_parameters$[0]) != "add" || !.@item || !.@quantity) { dispbottom "@restock : Invaild parameters."; showRestockHelp(); end; } if(getitemname(.@item) == "null"){ dispbottom "@restock : This item does not exist. (id "+.@item+")"; end; } else if(inarray(.allowedtypes[0],getiteminfo(.@item,2)) == -1) { dispbottom "@restock : You cannot restock this type of items."; end; } else if(inarray(RestockList[0],.@item) >= 0) { dispbottom "@restock : Item '"+getitemname(.@item)+"' (id:"+.@item+") already in list."; end; } else if(.@quantity < 1 || .@quantity > 500) { dispbottom "@restock : Please enter valid quantity value (1 - 500)"; end; } //passed all checks setarray RestockList[getarraysize(RestockList)],.@item; setarray RestockAmountList[getarraysize(RestockAmountList)],.@quantity; dispbottom "@restock : Item '"+getitemname(.@item)+"' (id:"+.@item+") amount "+.@quantity+" successfully added!"; break; default: showRestockHelp(); break; } end; }
Thank you for your contribution . I have updated the file and added a few options.
-
Have you tried making the skills remove all OTHER elemental change statuses before applying a new one?
Kinda like how the Gentle Touch skills used to work before Sura improvement. Whenever you cast one it would remove all the others first
-
I have never seen the behavior in the second clip before. afaik, the first clip in the video reflects the correct behavior of LP.
-
I'm assuming you mean the 5 second window where you cannot regain SP from any sources after using Asura strike.
It would be much simpler to just add a 5 seconds cooldown to the skill istelf:
Find the entry for MO_EXTREMITYFIST inside db/pre-re/skill_db.yml and add a 5 seconds cooldown like so:
HitCount: 1 CopyFlags: Skill: Plagiarism: true Reproduce: true CastCancel: true Cooldown: 5000 <<<<<<<<<< add this line CastTime: ....
However if you want the skill to behave like renewal, you need to do the following:
pc.cpp: search for this line and edit it like this:
//#ifdef RENEWAL <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< comment or remove this line if (sd->sc.data[SC_EXTREMITYFIST2]) sp = 0; //#endif< <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< comment or remove this line
script_constants.hpp:
search for SC_EXTREMITYFIST2 and edit this line:
//#ifdef RENEWAL <<<<<<<<<<< comment or remove this line export_constant(SC_EXTREMITYFIST2); //#endif <<<<<<<<<<< comment or remove this line
script.cpp:
search for SC_EXTREMITYFIST2 and edit this line:
//#ifdef RENEWAL if( sd->sc.data[SC_EXTREMITYFIST2] ) sp = 0; //#endif
skill.cpp, status.hpp, status.cpp:
basically you want find every occurrence of SC_EXTREMITY_FIST2 and remove the renewal condition check from it. There should be 7 occurrences inside skill.cpp, and 1 in status.hpp & status.cpp
Recompile and start your server and the skill's 5s SP debuff will be active just like in renewal.
-
1 hour ago, AinsLord said:
Sorry for the delay, here's the correct code:
- script maintown -1,{ OnInit: bindatcmd "maintown",strnpcinfo(3)+"::OnAtcommand"; end; OnAtcommand: if(gettimetick(2) < cooldowntime) { dispbottom "Please wait "+(cooldowntime - gettimetick(2))+" seconds."; end; } atcommand "@warp prontera 158 144"; set cooldowntime, gettimetick(2) + 5; end; }
- 1
-
-
Untested
- script maintown -1,{ OnInit: bindatcmd "maintown",strnpcinfo(3)+"::OnAtcommand"; end; OnAtcommand: if(gettimetic(2) < cooldowntime) { dispbottom "Please wait "+(cooldowntime - gettimetic(2)) / 1000+" seconds."; end; } atcommand "@warp alexandria 158 144"; set cooldowntime, 5000; end; }
-
To make them work like a normal warp, use the OnTouch label.
You want to place this right above your warp command like this:
OnTouch: warp "sch_gld",97,196; end;
You must also specify the range of your NPC's no touch event on its first line:
Warp NPCs usually have a 2x2 range.
sch_gld,89,205,0 script Left Portal 723,2,2{ // 2x2 range sch_gld,89,205,0 script Left Portal 723,4,4{ // 4x4 range sch_gld,89,205,0 script Left Portal 723,6,6{ // 6x6 range
-
Add the option to set a threshold for announcement inside onInit, and then check for it whenever someone wins a reward:
OnInit:
setarray .p1, 32131,100, 19827,1,1, 5335,1,1, 32041,1,28, 32091,1,28, 32092,1,28, 32093,1,28, 32040,1,28, 7517,1,70; // Gold Coinannounce_threshold = 5; // <<<<<<<<<<<<<<< ADD THIS LINEInside your code:mes "You got ^FF00CC"+ getd( ".p"+ .@s +"["+( 1+3*.@r -1 )+"]" ) +" "+ getitemname( getd( ".p"+ .@s +"["+ (1+ 3*.@r -2) +"]" ) ) +"^000000";if(getd( ".p"+ .@s +"["+ (1+ 3*.@r) +"]" ) <= .announce_threshold)announce "Player "+strcharinfo(0)+" Has won "+getd( ".p"+ .@s +"["+( 1+3*.@r -1 )+"]" ) +" "+ getitemname( getd( ".p"+ .@s +"["+ (1+ 3*.@r -2) +"]" ) )+" From the Gacha!"; -
On 2/10/2021 at 4:43 AM, Cookie-rae said:
The usability of this is really good specially on the items info and monster info it a huge help.
Nice development and information you share.Thanks for your support!
-
On 2/8/2021 at 10:52 PM, lShinel said:
Gj, nice usabilty.
Thank you sir.
-
Hello everyone.
It's been a crazy past month for me, and I wasn't able to update this thread. However, The development of this project is almost complete ~
Updates
Mostly I've been working on bugfixes and code optimization, so there's not many new features more than the ones listed above.
This project has been renamed to Ragnabot (Creative, i know), I've also refactored most of the codebase. I've also set up an API to format or generate data (I.E, Trivia questions/answers) and send it back to the discord bot client.
Also you can now set aliases(shortcuts) for commands. so !monster !mob !mi !mobinfo all work as the same command.
Logs
Spoiler- Improved the way Ragnabot displays log messages.
- Added a config option to choose which logs will be displayed.
- Colors!
Configuration
Spoiler- Added a general configuration file to set everything up and/or change it easily.
This includes options to:
- Specifying the "Admins" who can use administrative commands.
- Setting the bot's Discord activity and command prefix
- Setting up language files
- Setting rewards and various options for the trivia/disguise/bossfight events
Language and Localization
SpoilerAuction
Spoiler- Updated the Auction to accept slotted / enchanted items.
- Can now accept multiple items to be auctioned at once.
- Prevented players from flooding the auction channel (messages will be deleted automatically).
- You can just drag & drop the item you want to auction (just like NPC item selling)
- Added options to set the time limit of your auctioned item.
- Added options to set a minimum bid for your auctioned item.
- Changed the display of auctioned items on discord to look more neat and organized. The color at the left edge of the auction message represents time remaining before the auction expires (The color starts as red and gradually turns to green as the auction duration expires)
- Changed the order of auction items to show items that are closer to expiration last.
Item/Monster Lookup
Spoiler- Ragnabot can now generate a local Item Database from a iteminfo.lua file. This makes searching for items much much faster, and allows searching for items that are custom and not official.
- When there's multiple search results, You can now browse through all the candidate items instead of just displaying links for these items (Inspired by SMRO's moon boot).
- Monster search now also shows the monster drops and their most common spawn locations (need to work more on this one, doesn't look good tbh)
Whosell Command
Spoiler- This command replaces the old vendors command. It searches the vendors for an item and displays all who vend the particular item.
TODO
Spoiler- Websocket (to allow #channel to discord channel communication, and giving rewards at real-time. Can also ban players or mute them directly from discord)
- Whobuys command
- More items and effects for the Bossfight event
- More questions for the trivia event (current count: 218. Also you can DM me if you need this API ; ) )
- ??? any cool suggestions
Release
You can expect a release hopefully very soon. You will be able to Buy Ragnabot as a one-time purchase, or as a monthly subscription.
I'm also planning on adding a free trial and paritally release some of the features for free
Thank you for your support on this thread and DMs. Have a good day
- 1
-
Hi everyone
Now I used to play PvP all the time in classic and early renewal. But unforutnately PvP in RO is extremely unbalanced not really that great, especially in Renewal.
So I came up with the idea to take a different approach to PvP, and today I'll share with you three PvP modes that I created.
Some of these modes require source modification, but alot of the mechanics can be achieved with scripts only, I hope you enjoy ; )
PvP Mode: Abracadabra
SpoilerThis pvp mode is more focused toward having a fun experience rather than competition.
Rules:
- In this mode, players can only use the skills Abracadabra, Sight, and Hiding.
- Abracadabra does not consume yellow gemstones on cast inside the map.
- All players will have their hotkeys replaced with the skills mentioned above (Upon leaving the PvP map, your hotkeys will be restored).
- All players will have their gears unequipped, and they cannot re-equip them inside (Although your gear will be re-equipped when you leave the map).
- All external buffs, homunculi, wargs/falcons will be removed, and your stats will be reset to 1.
- All consumable items cannot be used.
- The damage of all skill cast through abracadabra is multiplied for up to 50 fold.
Gameplay video (old):
PvP Mode: Rapidfire
SpoilerInspired by League of Legends URF mode, this pvp mode allows players to spam all their skills and come up with creative builds that would work in normal PvP.
Rules:
Players in this mode will recieve the following effects:
- -100% Variable and fixed Cast Time.
- -90% Skill After cast delay.
- -85% Cooldown on all skills.
- Attack speed will be set to 193.
- Skills usage will not consume any SP (unless the skill itself uses SP, like Asura Strike)
- All consumable items cannot be used.
- Damage from all sources is reduced by 90%.
- Players recover 20% of their max HP every 10 seconds.
- Killing another player will restore 100% of your HP.
Gameplay video:
PvP Mode: Biohazard
SpoilerPlayers in this mode will be transformed into one of the 13 Bio Lab monsters randomly, and their skills and stats will be changed according to the transformation.
Each one of the 13 playable characters has some strength and weaknesses, knowing and exploiting these weaknesses is the key to victory.
In this mode, there's only 4 possible types of debuffs (Stone curse, Freezing, Stun, Silence) and each Character has a certain resistance against these statuses.
For example, Players who turn into Lord Knight Seyren will have a very high movement speed , HP, and base ATK. but will be vulnerable to freeze and stone curse effects. But players who turn into High Priest Margreta will be immune to freeze and stone effects and have lower HP value.
Rules:
- In this mode, players can only use the five skills they get depending on their transformation.
- Skills that normally need specific equipment to use will bypass their requirements (so you can use autoguard without a shield, arrow shower without a bow, etc..)
- All players will have their hotkeys replaced with the skills mentioned above (Upon leaving the PvP map, your hotkeys will be restored).
- All players will have their gears unequipped, and they cannot re-equip them inside (Although your gear will be re-equipped when you leave the map).
- All external buffs, homunculi, wargs/falcons will be removed, and stats will be reset to a certain value depending on the transformation.
- The maximum HP of each player will be set to a certain value depending on their transformation.
- All consumable items cannot be used.
- Killing another player fully restores your HP.
- Players will be warped out immediately after death.
List of playable characters:
High Wizard Katrinn:
Skills available: Frost Diver, Jupitel Thunder, Storm Gust, Lord Varmilion, Mystical Amplification
MaxHP: 50,000 (lowest)
Professor Celia:
Skills available: Double Casting, Wall of Fog, Stone Curse, Firebolt, Spider Web
MaxHP: 70,000
Lord Knight Seyren:
Skills available: Bash, Magnum Break, Charge Attack, Provoke, Berserk
MaxHP: 140,000
Paladin Randel:
Skills available: Autoguard, Reflect Shield, Shield Charge, Holy Cross, Grand Cross
MaxHP: 180,000 (Highest)
High Priest Margreta:
Skills available: Safety Wall, Pneuma, Lex Divina High Heal, Holy Elemental Attack
MaxHP: 80,000
Champion Chen:
Skills available: Chain Combo, Combo Finish, Tiger Fist, Chain Crush Combo, Ruwach
MaxHP: 90,000
Assassin Cross Eremes:
Skills available: Cloaking (lvl2), Venom Splasher, Meteor Assault, Soul Destroyer, Sonic Blow
MaxHP: 60,000
Stalker Gertie:
Skills available: Chasewalk, Hiding, Backstab, Close Confine, Preserve, and Plagiarism
MaxHP: 90,000
Creator Flamel:
Skills available: Cannibalize, Create Marine Sphere, Demonstration, Acid Terror, Potion Pitcher
MaxHP: 80,000
Mastersmith Haward:
Skills available: Weapon Perfection, Cart Boost, Maximum Thrust, Hammerfall, Cart Termination
MaxHP: 140,000
Sniper Cecil:
Skills available: Sharp Shooting, Concentration, Arrow Shower, Freezing Trap, Land Mine
MaxHP: 70,000
Clown Alphoccio/Gypsy Trentieni:
Skills available: Arrow Vulcan, Concentration, Tarot Card of Fate, Scream/Frost Joker, A Poem of Bragi
MaxHP: 80,000
Gameplay Video:
note: this video is dated now and does not include all the 13 characters:
What do you guys think of this approach to pvp? is there a pvp mode you'd like to see in RO? please reply with your thoughts, Cheers.
- 1
- 4
-
WoE rewards depending on time spent in castle
This script rewards players for each minute spent on WoE castle.
Features:
- Can reward players for every minute they spend inside a WoE castle
- Can reward players for every kill in WoE castle, and will also display the name of the killed/killer.
- Excludes AFK players and players who are not in a guild.
- Announces kills with different colors depending on the killer's castle
- Can set a modifier for certain classes to gain more points than others
Settings:
setarray .maps$ ,"schg_cas03", "prtg_cas01"; //maps where the system is active .points_per_minute = 1; //number of points earned for each minute you spend in the castle for (.@i = 0 ; .@i < getarraysize(.maps$) ; .@i++) if (!getmapflag(.maps$[.@i],mf_loadevent)) setmapflag .maps$[.@i],mf_loadevent; .s_idle_time = 180; // time before player is considered idle (in seconds) .rewardId = 909; // ID of the reward item .announce = 0; // Announce kills (0 = no announcement, 1 = map announcement, 2 = global announcement) .color_defenders$ = "0xffff00"; // Announcement color when a defending player kills an attacking player .color_attackers$ = "0x99ccff"; // Announcement color when an attacking player kills a member of the castle's owner .kill_reward = 1; // Amount of points earned for every kill, set to 0 to disable it setarray .class_modifier[0],4063,3,4076,2; // Modifier for certain classes [Id, Modifier, Id, Modifier....]
This script is a part of a larger rewards script that includes a WoE ranking, emperium breaking rewards, and rewards depending on the damage dealt during WoE. I might release the entire script in the future.
-
Submitter
-
Submitted02/18/2021
-
Category
-
Video
-
Content AuthorMastagoon
-
On 2/5/2021 at 3:37 AM, Ryonin said:
Does rAthena have a source release with skills modifications based on Ragnarok Zero & iRO Transcendent?
If you mean the massive 1st and 2nd job update mentioned here, then yes, it's all implemented in rAthetna afaik.
just make sure you have the latest version of rAthena.
-
On 2/8/2021 at 5:11 AM, kalabasa said:
just try right now i comment it out and i can still use the skill without shield
Make sure you're using a normal account and not a GM account. GMs can bypass all skill requirements.
PVP, WoE, GVG: WoE Rewards & Statistics
in PvP, GvG, WoE, Battleground Script Releases
Posted
View File
WoE Rewards & Statistics
This file is a different version from WoE rewards depending on time spent in castle. It has all the features listed there, plus a statistic rundown on each WoE, And the ability to track the damage dealt by each player during WoE.
Features: