Jump to content

sandbox

Members
  • Posts

    949
  • Joined

  • Last visited

  • Days Won

    16

Community Answers

  1. sandbox's post in natural_heal_skill_interval was marked as the answer   
    Yes, but it would affect everyone since it's a configuration.
  2. sandbox's post in How to disable item in certain map i need a script was marked as the answer   
    You don't need a script, you can configure them on that file..
  3. sandbox's post in About Thor Patcher (GRF) was marked as the answer   
    You don't need to upload your whole GRF when you patch with Thor, you only have to upload the compiled patch. Then Thor will compress it to your main GRF.
  4. sandbox's post in instance db was marked as the answer   
    https://github.com/rathena/rathena/blob/35d838c9d2612abfbfd7e4e2abc5a7dc7dce5b8b/src/map/instance.c#L27
  5. sandbox's post in Dead Branch Room Support. was marked as the answer   
    Oh my bad..
     
    Try this
    menu "Room 1 ["+getmapusers("new_1-3")+"]",pvp1,"Room 2 ["+getmapusers("new_2-3")+"]",pvp2,"Room 3 ["+getmapusers("new_3-3")+"]",pvp3,"Room 4 ["+getmapusers("new_4-3")+"]",pvp4,"Room 5 ["+getmapusers("new_5-3")+"]",pvp5;  
    To enable, you can config it in
     
    npc/mapflag/nobranch.txt
  6. sandbox's post in Thor Patcher Issue stuck at "Getting file -patchfilename-.thor" was marked as the answer   
    Maybe your RO client is running? And or you are out of disk space.
  7. sandbox's post in Homunculus item feed script was marked as the answer   
    Oops sorry..
     
    Try this.
    atcommand "@homfriendly "+(gethominfo(3)+100);
  8. sandbox's post in Q>Full/Default effects of some AILMENTS (ex. fear) was marked as the answer   
    Then read the codes here..
     
    https://github.com/rathena/rathena/blob/master/src/map/status.c
     
    Press ctrl+F then type SC_FEAR / SC_DPOISON
  9. sandbox's post in Max HP was marked as the answer   
    Set it up here
     
    https://github.com/rathena/rathena/blob/master/conf/battle/player.conf#L76
  10. sandbox's post in WoE live breaker ranking was marked as the answer   
    My script? D=
     
    http://rathena.org/board/topic/93063-empladder/#entry247019
  11. sandbox's post in Translate Item Korean to English. was marked as the answer   
    I think you have to translate them yourself, since we don't have an updated client files, or you can also use iRO's item tables, though i'm not sure if they are updated too.
  12. sandbox's post in Deluge looks messed up was marked as the answer   
    Might wanna check the .tga files of your custom grf, if i'm not mistaken..
  13. sandbox's post in Disable Skills on Map was marked as the answer   
    You can load them anytime via @loadnpc npc/pre-re/mapflag/gvg.txt
  14. sandbox's post in Monster Invasion Script was marked as the answer   
    - script TownInvasion -1,{ OnMinute00: if(gettime(3) % 2 == 1 && !agitcheck() && !agitcheck2()) { for(.@i = 0; .@i < 4; .@i++) { //Spawn on 4 towns .Town_Invade$ = .Town$[rand(getarraysize(.Town$))]; announce .Town_Invade$+" Guard: Help us! Our town is being invaded!",bc_blue|bc_all; for(.@ix = 0; .@ix < 5; .@ix++) { //MvP spawner monster .Town_Invade$,0,0,"--ja--",.MvP[rand(getarraysize(.MvP))],1,strnpcinfo(1)+"::OnInvadeDeath"; } for(.@iy = 0; .@iy < 100; .@iy++) { //Mob spawner monster .Town_Invade$,0,0,"--ja--",-1,1,strnpcinfo(1)+"::OnMobsDeath"; } } } end; OnInvadeDeath: .@RandMvP = rand(getarraysize(.Prize)); getitem .Prize[.@RandMvP],.PAmt[.@RandMvP]; end; OnMobsDeath: .@RandMob = rand(getarraysize(.Prize2)); getitem .Prize2[.@RandMob],.PAmt2[.@RandMob]; end; OnInit: //Towns to Invade setarray .Town$[0],"prontera","izlude","geffen","payon","alberta","aldebaran","yuno","lighthalzen","einbroch","einbech","comodo","umbala","amatsu","gonryun","ayothaya","louyang","hugel","rachel","veins"; //MvPs to summon setarray .MvP[0],1583,1832,1312; //Prize to give MVP setarray .Prize[0],7227,607,608,501,502,503,504,505,506,507,508,509,510,511,512; setarray .PAmt[0],1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; //Prize to give Mobs setarray .Prize2[0],7227,607,608,501,502,503,504,505,506,507,508,509,510,511,512; setarray .PAmt2[0],1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; end; } make sure .Prize, .PAmt, .Prize2, .PAmt2 has the same length of elements in their array. Just change their values to the Item ID of your prize
  15. sandbox's post in Custom Map as Town? was marked as the answer   
    Zone 7 restrictions are different from town, you should be adding your map in mapflag/restricted.txt instead,
     
    afaik, town mapflags only grants mailbox access when you are on that map.
     
    For the zoom speed, might wanna check your map setting/config
  16. sandbox's post in Job Master! was marked as the answer   
    Find the comment "//Weapon Reward"
     
    then add more class and their corresponding reward in the switch statement.
    //===== rAthena Script ======================================= //= Job Master //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.4 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= A fully functional job changer. //===== Additional Comments: ================================= //= 1.0 Initial script. //= 1.1 Fixed reset on Baby job change. //= 1.2 Added Expanded Super Novice support and initial Kagerou/Oboro support. //= 1.3 Kagerou/Oboro added. //= 1.4 Rebellion added. //============================================================ trinity,99,154,5 script Job Master 635,{ function Job_Menu; mes "[Job Master]"; if (Class > 4049) { mes "No more jobs are available."; close; } if (checkfalcon() || checkcart() || checkriding() || ismounting()) { mes "Please remove your "+((checkfalcon())?"falcon":"")+((checkcart())?"cart":"")+((checkriding())?"Peco":"")+((ismounting())?"mount":"")+" before proceeding."; close; } if (.SkillPointCheck && SkillPoint) { mes "Please use all your skill points before proceeding."; 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; } if (Class > 21) { mes "Switch to third class?"; next; Job_Menu(roclass(.@eac|EAJL_THIRD)); 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 Master]"; mes "Are you sure?"; next; Job_Menu(((.@i==1)?4001:roclass(.@eac|EAJL_THIRD))); mes "[Job Master]"; } } 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 Master]"; mes "A base level of "+.SNovice+" is required to turn into a "+jobname(.@i)+"."; close; } mes "[Job Master]"; mes "Are you sure?"; next; } else set .@i, getarg(0); if (select(" ~ Change into ^0055FF"+jobname(.@i)+"^000000 class: ~ ^777777"+((getargcount() > 1)?"Go back":"Cancel")+"^000000") == 1) { mes "[Job Master]"; mes "You are now "+callfunc("F_InsertArticle",jobname(.@i))+"!"; if (.@i==4001 && .LastJob) set lastJob, Class; jobchange .@i; switch(Class) { //Weapon Reward case 1: getitem2 1108,1,1,10,0,0,0,0,0; break; //+10 Blade for Class 1 = Swordsman case 7: getitem2 1408,1,1,10,0,0,0,0,0; break; //+10 Pike for Class 7 = Knight default: break; } if (.@i==4001 || .@i==4023) resetlvl(1); specialeffect2 EF_ANGEL2; specialeffect2 EF_ELECTRIC; if (.Platinum) callsub Get_Platinum; close; } if (getargcount() == 1) return; mes "[Job Master]"; } end; } Get_Platinum: skill 142,1,0; switch(BaseClass) { case 0: if (Class !=23) skill 143,1,0; break; case 1: skill 144,1,0; skill 145,1,0; skill 146,1,0; break; case 2: skill 157,1,0; break; case 3: skill 147,1,0; skill 148,1,0; break; case 4: skill 156,1,0; break; case 5: skill 153,1,0; skill 154,1,0; skill 155,1,0; break; case 6: skill 149,1,0; skill 150,1,0; skill 151,1,0; skill 152,1,0; break; default: break; } switch(BaseJob) { case 7: skill 1001,1,0; break; case 8: skill 1014,1,0; break; case 9: skill 1006,1,0; break; case 10: skill 1012,1,0; skill 1013,1,0; break; case 11: skill 1009,1,0; break; case 12: skill 1003,1,0; skill 1004,1,0; break; case 14: skill 1002,1,0; break; case 15: skill 1015,1,0; skill 1016,1,0; break; case 16: skill 1007,1,0; skill 1008,1,0; skill 1017,1,0; skill 1018,1,0; skill 1019,1,0; break; case 17: skill 1005,1,0; break; case 18: skill 238,1,0; break; case 19: skill 1010,1,0; break; case 20: skill 1011,1,0; break; default: break; } return; 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,0; // Enable new expanded second classes: Ex. Super Novice, Kagerou/Oboro, Rebellion? (1: yes / 0: no) set .SNovice,10; // 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; }
  17. sandbox's post in Updating SVN without conf/db folder changes was marked as the answer   
    add your configs to their corresponding files. example, you want to backup your item_db, put them on the item_db import file
  18. sandbox's post in Column length was marked as the answer   
    src/common/mmo.h
    //Guilds #define MAX_GUILDMES1 60 #define MAX_GUILDMES2 120
  19. sandbox's post in R> NPC Full Buffs for VIP Players was marked as the answer   
    prontera,100,200,3 script VIPBuffer 78,{ specialeffect2 EF_HEAL2; percentheal 100,100; if(countitem(30000)){ specialeffect2 EF_INCAGILITY; sc_start SC_INCREASEAGI,600000,10; specialeffect2 EF_BLESSING; sc_start SC_BLESSING,600000,10; specialeffect2 EF_ANGELUS; sc_start SC_ANGELUS,600000,10; specialeffect2 EF_SUFFRAGIUM; sc_start SC_SUFFRAGIUM,600000,3; specialeffect2 EF_IMPOSITIO; sc_start SC_IMPOSITIO,600000,5; specialeffect2 EF_GLORIA; sc_start SC_GLORIA,600000,5; specialeffect2 EF_MAGNIFICAT; sc_start SC_MAGNIFICAT,600000,5; specialeffect2 EF_CHEMICALPROTECTIOn; sc_start SC_CP_WEAPON,600000,5; sc_start SC_CP_ARMOR,600000,5; sc_start SC_CP_SHIELD,600000,5; sc_start SC_CP_HELM,600000,5; specialeffect2 EF_ASSUMPTIO; sc_start SC_ASSUMPTIO,600000,5; sc_start SC_ADRENALINE2,600000,1; specialeffect2 EF_MAXPOWER; sc_start SC_MAXIMIZEPOWER,600000,5; specialeffect2 EF_PERFECTION; sc_start SC_WEAPONPERFECTION,600000,5; specialeffect2 EF_ENDURE; sc_start SC_ENDURE,600000,10; sc_start SC_KAUPE,600000,3; sc_start SC_KAITE,600000,7; sc_start SC_STRFOOD,600000,5; sc_start SC_AGIFOOD,600000,5; sc_start SC_VITFOOD,600000,5; sc_start SC_INTFOOD,600000,5; sc_start SC_DEXFOOD,600000,5; sc_start SC_LUKFOOD,600000,5; switch(Class){ case 18: case 4019: case 4071: case 4078: skilleffect "SL_ALCHEMIST",0; sc_start4 SC_SPIRIT,9999999,5,455,0,0; break; case 15: case 4016: case 4070: case 4077: skilleffect "SL_MONK",0; sc_start4 SC_SPIRIT,9999999,5,447,0,0; break; case 4047: skilleffect "SL_STAR",0; sc_start4 SC_SPIRIT,9999999,5,448,0,0; break; case 16: case 4017: case 4067: case 4074: skilleffect "SL_SAGE",0; sc_start4 SC_SPIRIT,9999999,5,449,0,0; break; case 14: case 4015: case 4066: case 4073: skilleffect "SL_CRUSADER",0; sc_start4 SC_SPIRIT,9999999,5,450,0,0; break; case 23: case 4190: skilleffect "SL_SUPERNOVICE",0; sc_start4 SC_SPIRIT,9999999,5,451,0,0; break; case 7: case 4008: case 4054: case 4060: skilleffect "SL_KNIGHT",0; sc_start4 SC_SPIRIT,9999999,5,452,0,0; break; case 9: case 4010: case 4055: case 4061: skilleffect "SL_WIZARD",0; sc_start4 SC_SPIRIT,9999999,5,453,0,0; break; case 8: case 4009: case 4057: case 4063: skilleffect "SL_PRIEST",0; sc_start4 SC_SPIRIT,9999999,5,454,0,0; break; case 19: case 20: case 4020: case 4021: case 4068: case 4069: case 4075: case 4076: skilleffect "SL_BARDDANCER",0; sc_start4 SC_SPIRIT,9999999,5,455,0,0; break; case 17: case 4018: case 4072: case 4079: skilleffect "SL_ROGUE",0; sc_start4 SC_SPIRIT,9999999,5,456,0,0; break; case 12: case 4013: case 4059: case 4065: skilleffect "SL_ASSASIN",0; sc_start4 SC_SPIRIT,9999999,5,457,0,0; break; case 10: case 4011: skilleffect "SL_BLACKSMITH",0; sc_start4 SC_SPIRIT,9999999,5,458,0,0; break; case 11: case 4012: case 4056: case 4062: skilleffect "SL_HUNTER",0; sc_start4 SC_SPIRIT,9999999,5,460,0,0; break; case 4049: skilleffect "SL_SOULLINKER",0; sc_start4 SC_SPIRIT,9999999,5,461,0,0; break; default: break; } } end; } prontera,101,201,3 script Broadcaster 78,{ if(!countitem(30000)) { if(Zeny < 1000000) { mes .Npc_Name$; mes "You need 1M to broadcast"; close; } } mes .Npc_Name$; mes "Input your message"; input .@bc$; if(!countitem(30000)) Zeny = Zeny-1000000; announce strcharinfo(0)+": "+.@bc$,0; close; OnInit: .Npc_Name$ = "Broadcaster"; end; } For your ticket, Put this on a box or an NPC that will summon the ticket. Tag it as an equip, just set the eLvl = your server's max level + 1
    renitem 30000,2592000;
  20. sandbox's post in R>Adjusting status damages guide was marked as the answer   
    Just find their respective codes in src/map/status.c
     
    For example, here's Burning's status formula
    case SC_BURNING: if( --(sce->val4) >= 0 ) { struct block_list *src = map_id2bl(sce->val3); int damage = 1000 + 3 * status_get_max_hp(bl) / 100; // Deals fixed (1000 + 3%*MaxHP) map_freeblock_lock(); clif_damage(bl,bl,tick,0,0,damage,1,9,0); // Damage is like endure effect with no walk delay status_damage(src, bl, damage, 0, 0, 1); if( sc->data[type]) { // Target still lives. [LimitLine] sc_timer_next(2000 + tick, status_change_timer, bl->id, data); } map_freeblock_unlock(); return 0; } break; Change
    int damage = 1000 + 3 * status_get_max_hp(bl) / 100; // Deals fixed (1000 + 3%*MaxHP) To
    int damage = 500 + 1 * status_get_max_hp(bl) / 100; // Deals fixed (500 + 1%*MaxHP)
  21. sandbox's post in Broadcast when a special monster is killed was marked as the answer   
    - script SpecialMonster -1,{ OnThisMobDeath: announce strcharinfo(0)+" just killed this monster!",0; end; } The event label format is "NPCName::OnEventLabel";
     
    Now, for the script above to work, you must change the event label of your special monster into..
     
    ...,"SpecialMonster::OnThisMobDeath";
  22. sandbox's post in R> Working emp test breaker and ladder was marked as the answer   
    Try this one though it's not the same as Emistry's, I used it on my server before
     
    http://rathena.org/board/pastebin/b339ae4nr0l/
  23. sandbox's post in Mob - Boss mode and immobile? was marked as the answer   
    Yep, checkout https://github.com/rathena/rathena/blob/master/doc/mob_db_mode_list.txt
     
    So the initial mode of your monster should be..
     
    0x20 = MvP, cannot be knocked back, snatched, etc.
     
    Then just add more bit to suit your desired target.
  24. sandbox's post in N>this kind of Warper was marked as the answer   
    You can check out my Dice Event script though its old and badly written.
     
    Anyways here's the code, it's basically a warp portal npc.
    quiz_01,100,100,0    warp    100to200    1,1,quiz_01,200,200 ^Will transfer the user from quiz_01 100 100 to quiz_01 200 200 upon walking through the portal
     
  25. sandbox's post in Can someone help to script this? was marked as the answer   
    1 line only..
    if(readparam(bStr) >= 90) { bonus bAllStats,1; bonus bMaxHPrate,1; bonus bMaxSPrate,1; bonus bStr,getrefine(); } if(readparam(bAgi) >= 90) { bonus bAllStats,1; bonus bMaxHPrate,1; bonus bMaxSPrate,1; bonus Agi,getrefine(); } if(readparam(bVit) >= 90) { bonus bAllStats,1; bonus bMaxHPrate,1; bonus bMaxSPrate,1; bonus bVit,getrefine(); } if(readparam(bInt) >= 90) { bonus bAllStats,1; bonus bMaxHPrate,1; bonus bMaxSPrate,1; bonus bInt,getrefine(); } if(readparam(bDex) >= 90) { bonus bAllStats,1; bonus bMaxHPrate,1; bonus bMaxSPrate,1; bonus bDex,getrefine(); } if(readparam(bLuk) >= 90) { bonus bAllStats,1; bonus bMaxHPrate,1; bonus bMaxSPrate,1; bonus bLuk,getrefine(); }
×
×
  • Create New...