Leaderboard
Popular Content
Showing content with the highest reputation on 06/01/17 in Posts
-
File Name: Dice Event File Submitter: sandbox File Submitted: 21 Feb 2014 File Category: Games, Events, Quests Content Author: sandbox, UnoDelta This is Yet Another Dice Event script which was used on my server.. The objective of this event is to correct the right number between 1~4 that the NPC would be picking.. Players that chose the wrong number, will automatically be kicked from the event, the process will repeat until there's 1 player left.. Installation Enable the script on your NPC folder To trigger it, you have to create a new NPC, something like this - script DiceTrigger -1,{OnMinute00:if(gettime(3) == 0 || gettime(3) == 3 || gettime(3) == 6 || gettime(3) == 9 || gettime(3) == 12 || gettime(3) == 15) donpcevent "DiceTrigger::OnDiceETrigger";end;} Carefully read the comments I made inside the script and make sure to configure it properly Edit the warper NPC coordinates Edit the prize to be given Edit the coordinates where you will warp losing players Terms & Conditions You are not allowed to reproduce or make profit of this script You are not allowed to take credit for this script. Though you can modify/edit it to your liking. I can give you support, but please, do not message me. Click here to download this file1 point
-
Could anyone provide me with a npc of stuffs battleground, that I had the option of sending them to the storage or direct to the inventory?1 point
-
hello rathena no longer support compiling with older compilers. i believe they support vs2015+ so the sln to use now is rAthena.sln I personally use vs2017 community which is free.1 point
-
Here my Custom status Icon on Land PRO src/map/script_constants.h export_constant(SC_VOLCANO); export_constant(SC_DELUGE); export_constant(SC_VIOLENTGALE); + export_constant(SC_LANDPROTECTOR); export_constant(SI_VOLCANO); export_constant(SI_DELUGE); export_constant(SI_VIOLENTGALE); + export_constant(SI_LANDPROTECTOR);1 point
-
Its about typo's, tabs in your groups.conf, check it or use fresh groups.conf, it will fixed1 point
-
You can try to add callsub under the script after creating instance. case 1: if( instance_create(.@md_name$) < 0 ) { mes "Party Name: "+ getpartyname(.@party_id); mes "Party Leader: "+strcharinfo(0); mes "^0000ff"+.@md_name$+" ^000000- Reservation Failed!"; close; } //mes "^0000ff"+.@md_name$+"^000000 - Try to reserve"; //mes "After making a reservation, you have to talk to NPC behind and select the menu 'Enter the Dungeon' to enter the dungeon."; //close; callsub L_Enter,0,1,1; end;1 point
-
Just make sure that when you warped the whole party, all of them should go thru 'setquest' and set the variables that is needed when the player entered the instance. I think you should also use "instance_enter" instead of "warp" to make sure they are on the right instance map. I recently made an instance that warps the whole party when the party leader enter the instance for the first time. I use the script from endless tower and modified the warping part. This one was the script. PS: I removed some checking part bc it was long so i wont recommend just copy pasting this one. Just wanted to give u an idea how warping was made .@party_id = getcharid(1); .@md_name$ = "Dragons Dungeon"; .@dragon_timer = checkquest(25000,PLAYTIME); // Cooldown 24 Hours .@dragon_timer2 = checkquest(25001,PLAYTIME); // Time Limit 3 hours if( !instance_check_party(.@party_id,2) ) { mes "Make or join a party with more than 1 member and try again."; close; } switch( .@dragon_timer ) { case -1: if( getcharid(0) == getpartyleader(.@party_id,2) ) { mes "Confirmed the party has been made. Would you like to reserve entrance to the Dragons Dungeon?"; next; switch( select("Generate dungeon "+.@md_name$+":Enter the dungeon:Cancel") ) { case 1: if( instance_create(.@md_name$) < 0 ) { mes "Party Name: "+ getpartyname(.@party_id); mes "Party Leader: "+strcharinfo(0); mes "^0000ff"+.@md_name$+" ^000000- Reservation Failed!"; close; } mes "^0000ff"+.@md_name$+"^000000 - Try to reserve"; mes "After making a reservation, you have to talk to NPC behind and select the menu 'Enter the Dungeon' to enter the dungeon."; close; case 2: callsub L_Enter,0,1,1; case 3: close; } } switch( select("Enter the "+.@md_name$+":Cancel") ) { case 1: callsub L_Enter,1,1,0; case 2: end; } case 0: case 1: if( .@dragon_timer2 < 2 && getcharid(1) == dragonq_partyid ) { mes "If you have the dungeon generated already, you can enter it. "; next; switch(select("Enter the "+.@md_name$+":Cancel")) { case 1: callsub L_Enter,0,0,0; case 2: close; } } else { .@dun_lim_time = dragonq_timer + 86400; // 24 hours .@dun_cur_time = gettimetick(2); .@dun_ent_t = (.@dun_lim_time - .@dun_cur_time); .@dun_h = (.@dun_ent_t / 3600); .@dun_m = (.@dun_ent_t - (.@dun_h * 3600)) / 60; .@dun_s = .@dun_ent_t - ((.@dun_h * 3600) + (.@dun_m * 60)); mes "You cannot enter the Dragons Dungeon right now, " + .@dun_h + "hours " + .@dun_m + "minutes " + .@dun_s + "seconds left to enter the dungeon."; close; } case 2: dragonq_timer = 0; erasequest 25000; erasequest 25001; mes "^0000ffThe records related to the Dragons Dungeon have been removed. You can generate and enter the Dragons Dungeon again.^000000"; close; } L_Enter: switch( instance_enter("Dragons Dungeon") ) { case IE_OTHER: mes "An unknown error has occurred."; close; case IE_NOINSTANCE: mes "The Dragons Dungeon does not exist."; mes "The party leader did not generate the dungeon yet."; close; case IE_NOMEMBER: mes "You can enter the dungeon after making the party."; close; case IE_OK: if( getarg(2) ) { .@myRID = getcharid(3); .@myPID = getcharid(1); mapannounce "prontera", "The party, "+ getpartyname( .@myPID ) +", is entering the Dragons Dungeon.",bc_map,"0x00ff99",FW_NORMAL,12; addrid(2), 0, .@myPID; if( getcharid(3) != .@myRID ) { if( instance_enter("Dragons Dungeon") == IE_OK ) { dragonq_timer = gettimetick(2); dragonq_partyid = getcharid(1); setquest 25000; setquest 25001; end; } else { mes "An unknown error has occurred."; close; } } } else mapannounce "prontera", strcharinfo(0) +" of the party, "+ getpartyname( getcharid(1) ) +", is entering the Dragons Dungeon.",bc_map,"0x00ff99",FW_NORMAL,12; if( getarg(1) ) { dragonq_timer = gettimetick(2); dragonq_partyid = getcharid(1); setquest 25000; setquest 25001; } if( getarg(0) == 0 ) close; else end; } This one was the warping part case IE_OK: if( getarg(2) ) { .@myRID = getcharid(3); .@myPID = getcharid(1); mapannounce "prontera", "The party, "+ getpartyname( .@myPID ) +", is entering the Dragons Dungeon.",bc_map,"0x00ff99",FW_NORMAL,12; addrid(2), 0, .@myPID; if( getcharid(3) != .@myRID ) { if( instance_enter("Dragons Dungeon") == IE_OK ) { dragonq_timer = gettimetick(2); dragonq_partyid = getcharid(1); setquest 25000; setquest 25001; end; } else { mes "An unknown error has occurred."; close; } } }1 point
-
try this code if(getpartyleader(getcharid(1),2) == getcharid(0)) { getpartymember getcharid(1), 1; getpartymember getcharid(1), 2; for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) { attachrid $@partymemberaid[.@i]; warp "destination",0,0; } } }1 point
-
i made the script because he wants it in the first place a classic type of server i' didn't noticed that he want's a renewal class though..1 point
-
//===== rAthena Script ======================================= //= Job Warper //===== By: ================================================== //= Euphy, edit by Normynator //===== Current Version: ===================================== //= 1.0 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= A job warper. //============================================================ prontera,153,182,6 script Job Warper 123,{ function Job_Menu; mes "[Job Warper]"; if (Class > 4049) { mes "No more jobs are available."; close; } set .@eac, eaclass(); set .@i, ((.ThirdClass)?roclass(.@eac&EAJ_UPPERMASK):Class); if (.@i > 6 && .@i < 22) { if (BaseLevel < .Rebirth[0] || JobLevel < .Rebirth[1]) { set .@blvl, .Rebirth[0]-BaseLevel; set .@jlvl, .Rebirth[1]-JobLevel; mes "You need "+((.@blvl>0)?.@blvl+" more base levels "+((.@jlvl>0)?"/ ":""):"")+((.@jlvl>0)?.@jlvl+" more job levels ":"")+"to continue."; close; } while(1) { mes "Select an option."; next; set .@i, select(" ~ ^0055FFRebirth^000000:"+((.ThirdClass)?" ~ ^FF0000Third Class^000000":"")+": ~ ^777777Cancel^000000"); if (.@i==3) close; mes "[Job Warper]"; mes "Are you sure?"; next; Job_Menu(((.@i==1)?4001:roclass(.@eac|EAJL_THIRD))); mes "[Job Warper]"; } } set .@j1, roclass(.@eac|EAJL_2_1); set .@j2,roclass(.@eac|EAJL_2_2); if ((.@eac&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE) setarray .@exp[0],roclass(.@eac|EAJL_THIRD),99; if (Class == Job_Ninja || Class == Job_Gunslinger) setarray .@exp[0],.@j1,70; if (.@exp[0] && .SecondExpanded) { if (BaseLevel < .Rebirth[0] || JobLevel < .@exp[1]) { set .@blvl, .Rebirth[0]-BaseLevel; set .@jlvl, .@exp[1]-JobLevel; mes "You need "+((.@blvl>0)?.@blvl+" more base levels "+((.@jlvl>0)?"/ ":""):"")+((.@jlvl>0)?.@jlvl+" more job levels ":"")+"to continue."; close; } mes "Switch to "+jobname(.@exp[0])+"?"; next; Job_Menu(.@exp[0]); close; } if (.@eac&EAJL_2) if (.@eac&(EAJL_UPPER|EAJL_BABY) || roclass(.@eac|EAJL_UPPER) == -1) { mes "No more jobs are available."; close; } if ((.@eac&EAJ_BASEMASK) == EAJ_NOVICE) { if (JobLevel < .JobReq[0]) mes "A job level of "+.JobReq[0]+" is required to change into the 1st Class."; else if (Class == 4001 && .LastJob && lastJob) { mes "Switch classes now?"; next; Job_Menu(roclass((eaclass(lastJob)&EAJ_BASEMASK)|EAJL_UPPER)); } else switch(Class) { case 0: Job_Menu(1,2,3,4,5,6,23,4046,24,25,4023); case 4001: Job_Menu(4002,4003,4004,4005,4006,4007); case 4023: Job_Menu(4024,4025,4026,4027,4028,4029,4045); default: mes "An error has occurred."; break; } close; } if (roclass(.@eac|EAJL_2_1) == -1 || roclass(.@eac|EAJL_2_2) == -1) mes "No more jobs are available."; else if (!(.@eac&EAJL_2) && JobLevel < .JobReq[1]) mes "A job level of "+.JobReq[1]+" is required to change into the 2nd Class."; else if (.LastJob && lastJob && (.@eac&EAJL_UPPER)) { mes "Switch classes now?"; next; Job_Menu(lastJob+4001); } else Job_Menu(.@j1,.@j2); close; function Job_Menu { while(1) { if (getargcount() > 1) { mes "Select a job."; set .@menu$,""; for(set .@i,0; .@i<getargcount(); set .@i,.@i+1) set .@menu$, .@menu$+" ~ "+jobname(getarg(.@i))+":"; set .@menu$, .@menu$+" ~ ^777777Cancel^000000"; next; set .@i, getarg(select(.@menu$)-1,0); if (!.@i) close; if ((.@i == 23 || .@i == 4045) && BaseLevel < .SNovice) { mes "[Job Warper]"; mes "A base level of "+.SNovice+" is required to turn into a "+jobname(.@i)+"."; close; } mes "[Job Warper]"; mes "Are you sure?"; next; } else set .@i, getarg(0); if (select(" ~ Want to become a ^0055FF"+jobname(.@i)+"^000000 class: ~ ^777777"+((getargcount() > 1)?"Go back":"Cancel")+"^000000") == 1) { mes "[Job Warper]"; mes "You are getting Warped to "+callfunc("F_InsertArticle",jobname(.@i))+" Quest Npc!"; if (.@i==4001 && .LastJob) set lastJob, Class; //mes .@i; goto Job; //Warps here !!!! if (.@i==4001 || .@i==4023) warp "yuno_in02",88,164; //specialeffect2 EF_ANGEL2; specialeffect2 EF_ELECTRIC; close; } if (getargcount() == 1) return; mes "[Job Warper]"; } end; } Job: if(.@i > 4000){ warp "valkyrie", 48, 48; }else{ switch(.@i){ case 1: warp "izlude", 52, 137; break; case 2: warp "geffen", 64, 177; break; case 3: warp "pay_arche", 145, 164; break; case 4: warp "prontera", 234, 314; break; case 5: warp "alberta", 36, 42; break; case 6: warp "moc_ruins", 58, 159; break; case 7: warp "prontera", 35, 346; break; case 8: warp "prt_church", 16, 41; break; case 9: warp "geffen", 120, 111; break; case 10: warp "einbroch", 255, 107; break; case 11: warp "hu_in01", 381, 368; break; case 12: warp "in_moc_16", 19, 33; break; case 14: warp "prontera", 156, 356; break; case 15: warp "prt_monk", 184, 16; break; case 16: warp "yuno_in03", 154, 35; break; case 17: warp "cmd_fild07", 196, 117; break; case 18: warp "alde_alche", 27, 185; break; case 19: warp "comodo", 226, 122; break; case 20: warp "comodo", 193, 150; break; } } end; OnInit: setarray .Rebirth[0],99,50; // Minimum base level, job level to rebirth OR change to third class setarray .JobReq[0],10,40; // Minimum job level to turn into 1st class, 2nd class set .ThirdClass,0; // Enable third classes? (1: yes / 0: no) set .SecondExpanded,1; // Enable new expanded second classes: Ex. Super Novice, Kagerou/Oboro, Rebellion? (1: yes / 0: no) set .SNovice,45; // Minimum base level to turn into Super Novice set .LastJob,1; // Enforce linear class changes? (1: yes / 0: no) set .SkillPointCheck,1; // Force player to use up all skill points? (1: yes / 0: no) set .Platinum,0; // Get platinum skills automatically? (1: yes / 0: no) end; } I started writing such a script today, this script is based on Euphys JobChanger NPC (credits to him, awesome work^^) At the moment the expanded classes are missing, i am adding them soon1 point
-
if you said classic style RO then you'll have to stick to the classic quest the way it is.. //Job Quest Warper NPC //by: Geiszer "greyman15" //Version 1 //Caution: don't touch in it you don't know how to change it.. //-----------------------Script Goes here--------------------// prontera,159,187,3 script Job Quester::Job Quester 733,{ mes "[Job Quest]"; mes "Hello there!"; mes "are you qualified to test your"; mes "self to change your job and"; mes "choose what class do you want?"; next; mes "[Job Quest]"; mes "Then I'm here to help you on your"; mes "trip to your chosen class."; next; mes "[Job Quest]"; mes "Please make a Selection"; next; menu "1st Job Quest",FJob,"2nd Job Quest",SJob,"Super Novice",snov; next; snov: mes "[Job Quest]"; mes "Well good luck to your quest"; warp "aldeba_in" ,219,167; close; //First Job Quest---------------------------------- FJob: mes "[Job Quest]"; mes "Please Select what class"; mes "will I warp you."; menu "Acolyte",aco,"Archer",arch,"Mage",mage,"Merchant",merch,"Swordman",sword,"Thief",thief; next; aco: mes "[Job Quest]"; mes "Well good luck to your quest"; warp "prt_church" ,184,36; close; arch: mes "[Job Quest]"; mes "Well good luck to your quest"; warp "payon_in02" ,64,66; close; mage: mes "[Job Quest]"; mes "Well good luck to your quest"; warp "geffen_in" ,157,119; close; merch: mes "[Job Quest]"; mes "Well good luck to your quest"; warp "alberta_in" ,61,43; close; sword: mes "[Job Quest]"; mes "Well good luck to your quest"; warp "izlude_in" ,74,166; close; thief: mes "[Job Quest]"; mes "Well good luck to your quest"; warp "moc_prydb1" ,47,120; close; //Second Job Quest---------------------------------- SJob: mes "[Job Quest]"; mes "Please Select what class"; mes "will I warp you."; menu "Priest",prst,"Hunter",hunt,"Wizard",wiz,"Blacksmith",blck,"Knight",cav,"Assassin",ass; next; prst: mes "[Job Quest]"; mes "Well good luck to your quest"; warp "prt_church" ,16,36; close; hunt: mes "[Job Quest]"; mes "Well good luck to your quest"; warp "in_hunter" ,99,104; close; wiz: mes "[Job Quest]"; mes "Well good luck to your quest"; warp "gef_tower" ,110,33; close; blck: mes "[Job Quest]"; mes "Well good luck to your quest"; warp "ein_in01" ,19,22; close; cav: mes "[Job Quest]"; mes "Well good luck to your quest"; warp "prt_in" ,82,102; close; ass: mes "[Job Quest]"; mes "Well good luck to your quest"; warp "in_moc_16" ,19,30; close; } here I tried my best to do it hope it works.... if something gone wrong in the script text file in the attached file just use this code.. jobquester.txt jobquester - Revised.txt1 point