-
Posts
290 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by Reborn
-
This one actually only apply to party members. I need an assumptio be casted to players within the 3x3 area from the targetted player. I know its in the source but i dont know how the map_foreachinallrange works?
-
Hi guys, I just wanted to know how to modify the assumptio skill. Like if the player wear a specific headgear the assumptio skill will be applied to the players within the 3x3 radius from the target of the assumptio skill. This applies whether the caster is on a party, guild or not. It kinda similar to sanctuary. All players inside the radius of sactuary will be healed but this one all players within a 3x3 radius from the target will be buffed by assumptio. Thanks in afvance.
-
Hello everyone. Can anyone help me make this script? What I need to do is this. The player will require item ID 501 for them to play this npc. setarray .itemReward[0], ItemID, ItemChance, ... setarray .itemReward[0],501,10,502,20,503,30,504,40,505,50; The player will get one item reward depending on the chances that they will get. Rare item will have small chance only.
-
https://www.youtube.com/watch?v=sKwfejUfhlo In this video it will teach you how you can install and run ragnarok offline server using the rathena emulator. Make sure to download and install the prerequisites first. ~~ Prerequisites ~~ ► Visual Studio Express 2017 ► MSysGit ► TortoiseGit ► Wamp Server ► rAthena Github
- 1 reply
-
- 1
-
-
Hello guys. Can anyone help me to fix this? addrid(4,0,36,63,63,36); for (set .@i,0; .@i < getarraysize(.prize); .@i++ ){ getitem .prize[.@i],.prize[.@i]; } announce .npcName$ + " : We have a winner. "+ strcharinfo(0) +" wins the death by dice event round "+ .diceRound +".",0; detachrid; if (.consolation){ addrid(1); for (set .@t,0; .@t < getarraysize(.consolation); .@t++ ){ getitem .consolation[.@t],.consolation[.@t]; } detachrid; } sleep 5000; announce "Thank you for playing..."; The issue is when this event was triggered. The "rids" works fine however after the rid, the announcement "Thank you for playing..." will be announced multiple times. If there is 5 players the announcement will announced 5 times as well. How can I make it announce once only?
-
It's working except for one thing.. The function did check the location of all party member however if a member is not in the map of prontera, that player receive the message "All members is not in prontera.". this message should be getting by the party leader only.
-
can anyone help me on this party check. a leader will talk to the NPC for the whole party get warp to a specific map. the npc requirement will be > all party members should be in the map of prontera. if some member are not in this map the party leader will get a message that all party members must be in prontera. > all party members should be online. if some member are not online the party leader will get a message some of your party member are currently offline. > all party members should have this variable called TICKETMANIAC. if some party member does not have 1 TICKETMANIAC variable, the party leader will get a message some of your party member doesn't have enough TICKETMANIAC. if all party members including the leader meet the requirements > all party member will be warp to a specific map let say payon. > all party member TICKETMANIAC will decrease by 1. Thanks in advance ...
-
yes it will duplicate NPC but the difference is this function will work inside the script. unlike the usual duplicate it works outside the script only.
-
Can anyone help me on converting this src code to rathena. // duplicatenpc("NpcName", "DuplicateName", "DupHiddenName", "map", x, y, dir{, sprite{, xs, ys}}); BUILDIN(duplicatenpc) { const char *npc_name = script_getstr(st, 2); const char *dup_name = script_getstr(st, 3); const char *dup_hidden_name = script_getstr(st, 4); const char *tmap = script_getstr(st, 5); int tx = script_getnum(st, 6); int ty = script_getnum(st, 7); int tdir = script_getnum(st, 8); int tclass_, txs = -1, tys = -1, tmapid; struct npc_data *nd_source, *nd_target; char targetname[24] = ""; if(script_hasdata(st, 10)) txs = (script_getnum(st, 10) < -1) ? -1 : script_getnum(st, 10); if(script_hasdata(st, 11)) tys = (script_getnum(st, 11) < -1) ? -1 : script_getnum(st, 10); if(txs == -1 && tys != -1) txs = 0; if(txs != - 1 && tys == -1) tys = 0; if(strlen(dup_name) + strlen(dup_hidden_name) > NAME_LENGTH) { ShowError("duplicatenpc: Name#HiddenName is to long (max %d chars). (%s)\n",NAME_LENGTH, npc_name); script_pushint(st, 0); return 0; } nd_source = npc->name2id(npc_name); if(script_hasdata(st, 9)) tclass_ = (script_getnum(st, 9) < -1) ? -1 : script_getnum(st, 9); else tclass_ = nd_source->class_; if( nd_source == NULL) { ShowError("duplicatenpc: original npc not found for duplicate. (%s)\n", npc_name); script_pushint(st, 0); return 0; } tmapid = map->mapname2mapid(tmap); if(tmapid < 0) { ShowError("duplicatenpc: target map not found. (%s)\n", tmap); script_pushint(st, 0); return 0; } nd_target = npc->create_npc(nd_source->subtype, tmapid, tx, ty, tdir, tclass_); strcat(targetname, dup_name); strncat(targetname, "#", 1); strncat(targetname, dup_hidden_name, strlen(dup_hidden_name)); safestrncpy(nd_target->name, targetname , sizeof(nd_target->name)); safestrncpy(nd_target->exname, targetname, sizeof(nd_target->exname)); npc->duplicate_sub(nd_source, nd_target, txs, tys, NPO_ONINIT); script_pushint(st, 1); return true; } BUILDIN(duplicateremove) { struct npc_data *nd; if(script_hasdata(st, 2)) { nd = npc->name2id(script_getstr(st, 2)); if(nd == NULL) { ShowError("duplicateremove: NPC not found: %s\n", script_getstr(st, 2)); script_pushint(st, -1); return 0; } } else nd = (struct npc_data *)map->id2bl(st->oid); if (nd == NULL){ }else if(nd->src_id == 0){ //remove all dupicates for this source npc map->foreachnpc(npc->unload_dup_sub,nd->bl.id); }else// just remove this duplicate npc->unload(nd,true); script_pushint(st, 1); return true; }
-
I already red this topic however I don't know how to edit the client by using this one. I tried to download this however I dont know how I can edit it or see the source code.
-
Hello everyone. Does anyone know where to get an open source for ragnarok client?
-
@Ai4rei How can I edit the client? What tool should I need to use? Sorry Im really new to this and I want to learn it to the best that I can.
-
@Ai4rei Where can I find this file? is it from the src files? I was able to find it but I can figure it out how to create a custom alt function. Sorry for the noob question. Reason Im asking this because I have a custom window in mind that I would like to apply in my RO server.
-
Hello there, can anyone update this source file that can be compatible for the latest rAthena Emulator? Thanks
-
Hi everyone. In ragnarok client we have some alt functions like Alt + E => Opening Inventory Alt + S => Opening Skills Alt + Q => Opening Equipment and etc.. My questions are: 1. how can I make a custom Alt function. for example if I do Alt + D it will open a custom window. 2. how can I make the Alt + Q show the Equipment and the Stats together Im using client 2016-12-28aRagexeRE.
-
Can anyone help me on adding Item Effect to this description. If Cure is known, allows it to remove Critical Wounds or Deadly Poison. If Heal is known, allows it to be cast as an AoE on Party or Guild members within a 3x3 area around the target. If the refine is 3 or higher, the area increases to 5x5. Does not work properly unless the skill Heal is learned naturally. Acolyte class, Paladins, Super Novices, etc.
-
Cooldown. How to remove the cooldown of an instance and based all the timer inside the script
-
Hi there, can anyone teach me how to make an instance without any timer?
-
Can anyone give me the steps?
-
Hi rathenians, As the title said. How can I make LAN Party Ragnarok? I already know how to setup the rAthena emulator offline to a one PC and its working fine, next is how can I let the other PC join the server via LAN so that they can play the same server and see each other, play to each other.
-
Hello rathenians, I just want to ask how to make an npc script that will enable the whole party member to get the loot from the npc with the highest percentage of loot. For example: Party consist of 6 members including the leader. Npc will show same item rewards to the whole party members. Items are randomly selected by the npc. Party leader view: 1st: When the party leader click the npc for the first time, the npc will show to him the item rewards then he will have an option to put it on the party pool or assigned it to a specific member. 2nd: If the leader put it on the party pool, the members will be able to loot that item but if the leader assigned it to a member then that member will automatically gets that item. This process will continue until all items are pooled or assigned. 3rd: Once the leader already distributed the items he will now hmgonna have the chance to loot the items as well. 4th: If the leader clicked the npc for the first time then click the cancel button when it is aboit to distribute then all items will automatically be putted in the party pool. Party member view: 1st: When they clicked the npc they will be able to see what are the items that they can get. 2nd: if the leader is not yet done distributing the items, the members will not be able to loot the items yet. 3rd: Once the leader is done distributing the items the member will have an option to loot the items. This process will continue untill all items are looted. Party leader did not touch the npc: If the leader did not touch the npc at all after 2 mins all items will be distributed to all party members randomly. After the whole party rried to loot the items from the npc: After 2 mins, evwn if they are not yet done looting the items, the items will be distributed to the member who got the highest loot percentage to a specific item. Example: Red potion [1ea] - player 1 (25%) Orange Potion [1ea] - player 2 (69%) Green Potion [1ea] - player 1 (75%) White potion [1ea] - player 3 (44%) This example shows that this are the pnly players who will be able to get the items from the npc. Format: Items, quantity, player who got the highest percentage to that specific item, percentage or numbers that they got from rand(1,100). I hope everybody got what i mean to this script. Thank you. .
-
@Technoken Is it possible that once the party leader generates the instance the whole party will be warped automatically with talking to the NPC again?
-
@Technoken It seems like its not warping the whole party automatically. What I am looking for is once the party leader enter the dungeon the whole party should be warp as well automatically.
-
How can I do this? when the party leader picks enter dungeon all the party member will be warped too at the same time. Can anyone provide me a sample script for this one please... I tried to use getpartymember but I dont know how to create it. please guide me. Thanks
-
Hi everyone, Can anyone help me with this script? PS: This is Goddameit Script // // // Author Goddameit // Version 2014/05/14 // Web http://goo.gl/0vY9GV // // prontera,150,180,4 script Party Dungeon#fb156df 100,{ if( .NP_GAME_STATUS ) { mes "Sorry, someone is playing."; close; } mes "Hi, do you want to join this game?"; if( select("No","Yes") == 1 ) close; next; if( getcharid(1) == 0 ) { mes "You need to join or create a party."; close; } if( getcharid(0) != getpartyleader(getcharid(1),2) ) { mes "You're not party leader"; close; } if( countitem(.SP_PLAYER_ITEM) == 0 ) { mes "You don't have any "+getitemname(.SP_PLAYER_ITEM); close; } getpartymember getcharid(1),2; getpartymember getcharid(1),1; if( $@partymembercount < .SP_PLAYER_NUM ) { mes "You need at least "+.SP_PLAYER_NUM+" player"; deletearray $@partymembercid[0],$@partymembercount; deletearray $@partymemberaid[0],$@partymembercount; $@partymembercount = 0; close; } .@amount = 0; for( .@i = 0; .@i<$@partymembercount; .@i++ ) { if( !isloggedin($@partymemberaid[.@i],$@partymembercid[.@i]) ) { $@partymemberaid[.@i] = 0; $@partymembercid[.@i] = 0; }else .@amount++; } if( .@amount < .SP_PLAYER_NUM ) { mes "You need at least "+.SP_PLAYER_NUM+" player"; deletearray $@partymembercid[0],$@partymembercount; deletearray $@partymemberaid[0],$@partymembercount; $@partymembercount = 0; close; } if( .NP_GAME_STATUS ) { mes "Sorry, someone is playing."; close; } .@amount = 0; delitem .SP_PLAYER_ITEM,1; .NP_GAME_LPID = getcharid(1); .NP_GAME_LAID = getcharid(3); .NP_GAME_LCID = getcharid(0); .NP_GAME_STATUS = 1; .NP_GAME_TICK = 600; deletearray .p_cid[0],.p_num; deletearray .p_aid[0],.p_num; .p_num = $@partymembercount; copyarray .p_cid[0],$@partymembercid[0],.p_num; copyarray .p_aid[0],$@partymemberaid[0],.p_num; deletearray $@partymembercid[0],$@partymembercount; $@partymembercount = 0; disablenpc "Treasure Chest#ukdfkbp"; Initnpctimer; mes "Done"; warpparty "guild_vs2",55,55,getcharid(1); close; end; OnTimer1000: if( !mobcount("guild_vs2",strnpcinfo(0)+"::OnKill") && .NP_GAME_STATUS == 1 ) { sleep2 5000; monster "guild_vs2",50,50,"--ja--",1002,1,strnpcinfo(0)+"::OnKill"; } if( .NP_GAME_TICK > 0 ) { .NP_GAME_TICK--; .@bool = 0; if( !isloggedin(.NP_GAME_LAID,.NP_GAME_LCID) ) .@bool = 1; if( .@bool == 0 ) { getmapxy(.@map$, .@x, .@y, 0, rid2name(.NP_GAME_LAID)); if( .@map$ != "guild_vs2" ) .@bool = 1; } if( .@bool == 1 ) { .NP_GAME_STATUS = -1; MapAnnounce "guild_vs2","[System]: You're team leader is gone!!",0; sleep2 2000; mapwarp "guild_vs2","prontera",150,180; .NP_GAME_STATUS = 0; }else Initnpctimer; } else { .NP_GAME_STATUS = -1; MapAnnounce "guild_vs2","[System]: Time Out!!",0; sleep2 2000; mapwarp "guild_vs2","prontera",150,180; .NP_GAME_STATUS = 0; donpcevent "Treasure Chest#ukdfkbp::OnCleanVar"; disablenpc "Treasure Chest#ukdfkbp"; } end; OnKill: detachrid; if( .NP_GAME_STATUS == 1 ) { .NP_GAME_STATUS = 2; MapAnnounce "guild_vs2","[System]: You win!!",0; killmonsterall "guild_vs2"; sleep2 2000; enablenpc "Treasure Chest#ukdfkbp"; donpcevent "Treasure Chest#ukdfkbp::OnCleanVar"; .NP_GAME_TICK = 120; $@NP_GAME_LPID = .NP_GAME_LPID; .@j = 0; for( .@i = 0; .@i<.p_num; .@i++ ) { if( !isloggedin(.p_aid[.@i],.p_cid[.@i]) ) continue; getmapxy(.@map$, .@x, .@y, 0, rid2name(.p_aid[.@j])); if( .@map$ != "guild_vs2" ) continue; $@p_aid[.@j] = .p_aid[.@i]; $@p_name$[.@j] = rid2name(.p_aid[.@i]); .@j++; } $@p_num = .@j; } end; OnInit: .SP_PLAYER_NUM = 2; .SP_PLAYER_ITEM = 501; disablenpc "Treasure Chest#ukdfkbp"; mapwarp "guild_vs2","prontera",150,180; end; OnCleanVar: donpcevent "Treasure Chest#ukdfkbp::OnCleanVar"; disablenpc "Treasure Chest#ukdfkbp"; deletearray .p_aid[0], .p_num; deletearray .p_cid[0], .p_num; .p_num = 0; .NP_GAME_LPID = 0; .NP_GAME_LAID = 0; .NP_GAME_LCID = 0; .NP_GAME_TICK = 0; end; } guild_vs2,50,50,0 script Treasure Chest#ukdfkbp 1324,{ function __st ; if( getcharid(0) != getpartyleader($@NP_GAME_LPID,2) ) end; .@item = 5; setarray .@item1max[0],607,10; setarray .@item2max[0],501,10; setarray .@item3max[0],502,10; setarray .@item4max[0],503,10; setarray .@item5max[0],504,10; while( __st() == 2 ) { mes " "; next; mes "------Less------"; for( .@i = 1; .@i<=.@item; .@i++ ) mes ""+getitemname(getd(".@item"+.@i+"max[0]"))+" X "+(getd(".@item"+.@i+"max[1]")-.@useitem[.@i])+""; if( (.@co = prompt(implode($@p_name$,":")+":[Send]")) == 255 ) { mes " "; next; close; } if( .@co > $@p_num ) { close2; detachrid; for( .@j = 0; .@j<$@p_num; .@j++ ) { for( .@i = 1; .@i<=.@item; .@i++ ) { getitem getd(".@item"+.@i+"max[0]"),getd(".@player"+.@j+"item["+.@i+"]"),$@p_aid[.@j]; sleep2 1; } } mapwarp "guild_vs2","prontera",150,180; donpcevent "Party Dungeon#fb156df::OnCleanVar"; end; } mes " "; next; .@co -= 1; if( .@co < 0 ) break; deletearray .@select$[0],.@item; next; mes "--- "+$@p_name$[.@co]+" ---"; for( .@i = 1; .@i<=.@item; .@i++ ) { .@select$[.@i-1] = ""+getitemname(getd(".@item"+.@i+"max[0]"))+" X "+(getd(".@player"+.@co+"item["+.@i+"]"))+""; mes ""+.@select$[.@i-1]; } if( (.@ct = prompt(implode(.@select$,":"))) == 255 ) continue; mes " "; next; mes "Adujust "+$@p_name$[.@co]+""; mes ""+.@select$[.@ct-1]+" to..."; input .@amount; if( .@amount < 0 ) .@amount = 0; if( (.@useitem[.@ct]-getd(".@player"+.@co+"item["+.@ct+"]")+.@amount) > getd(".@item"+.@ct+"max[1]") ) .@amount = getd(".@item"+.@ct+"max[1]")-.@useitem[.@ct]; setd ".@player"+.@co+"item["+.@ct+"]", .@amount; deletearray .@useitem[0], .@item; for( .@i = 1; .@i<=.@item; .@i++ ) for( .@j = 0; .@j<$@p_num; .@j++ ) set .@useitem[.@i], .@useitem[.@i] + getd(".@player"+.@j+"item["+.@i+"]"); } mes " "; next; close; end; OnCleanVar: deletearray $@p_aid[0], $@p_num; deletearray $@p_name$[0], $@p_num; $@p_num = 0; $@NP_GAME_LPID = 0; end; function __st { return getvariableofnpc(.NP_GAME_STATUS,"Party Dungeon#fb156df"); } } please help on changing the appearance of the items. because in this script the item reward is already fixed meaning whatever is in there those are the only items the player will get. How can I change it to "the item will appear by chances or percentage? example in this part setarray .@item1max[0],607,10; //100% chance to show setarray .@item2max[0],501,10; //75% chance to show setarray .@item3max[0],502,10; //50% chance to show setarray .@item4max[0],503,10; //25% chance to show setarray .@item5max[0],504,10; //1% chance to show those items will only show by chances or percentage to the treasure pool. I hope someone can help me with this.