Jump to content

Stolao

Developer
  • Posts

    1443
  • Joined

  • Last visited

  • Days Won

    39

Community Answers

  1. Stolao's post in What's the MAX HP that rathena can handle? was marked as the answer   
    2^32-1
    little over 2billion
  2. Stolao's post in ###### What kind of weapon is a barefist weapon type? was marked as the answer   
    Its by default only when no weapon is on, I think you can trick a item into acting like bear hand by putting the view of as 0
  3. Stolao's post in Custom NPC was marked as the answer   
    Did you remove the // before there file exstintion in the https://github.com/rathena/rathena/blob/master/npc/scripts_custom.conf
  4. Stolao's post in H>Weapon Mastery from Stolao was marked as the answer   
    also updated today to v1.26
  5. Stolao's post in How to increase skill level? was marked as the answer   
    1st off use a codebox,
    2ndly
    skill "SN_WINDWALK",13; simply change the 13 to the desired number for each item db entry
     
     
    for more info
    *skill <skill id>,<level>{,<flag>}; *skill "<skill name>",<level>{,<flag>}; *addtoskill <skill id>,<level>{,<flag>}; *addtoskill "<skill name>",<level>{,<flag>}; These commands will give the invoking character a specified skill. This is also used for item scripts. Level is obvious. Skill id is the ID number of the skill in question as per 'db/(pre-)re/skill_db.txt'. It is not known for certain whether this can be used to give a character a monster's skill, but you're welcome to try with the numbers given in 'db/(pre-)re/mob_skill_db.txt'. Flag is 0 if the skill is given permanently (will get written with the character data) or 1 if it is temporary (will be lost eventually, this is meant for card item scripts usage.). The flag parameter is optional, and defaults to 1 in 'skill' and to 2 in 'addtoskill'. Flag 2 means that the level parameter is to be interpreted as a stackable additional bonus to the skill level. If the character did not have that skill previously, they will now at 0+the level given. Flag 3 is the same as flag 1 in that it saves to the database. However, these skills are ignored when any action is taken that adjusts the skill tree (reset/job change). Flag constants: 0 - SKILL_PERM 1 - SKILL_TEMP 2 - SKILL_TEMPLEVEL 3 - SKILL_PERM_GRANT // This will permanently give the character Stone Throw (TF_THROWSTONE,152), at // level 1. skill 152,1,0;
  6. Stolao's post in Drop item checking cell_chkpass was marked as the answer   
    OnPCDieEvent: getmapxy(.@m$,.@x,.@y,0); while (!checkcell(.@m$,.@x,.@y,cell_chkpass)){ set .@x += rand(-3,3); set .@y += rand(-3,3); } makeitem 7793,1,.@m$,.@x,.@y; end; thats what your looking for i think,
  7. Stolao's post in Pre-renewal server with latest/2013 kRO data was marked as the answer   
    When you have the settings set to pre-re you need to make sure you download a data folder that is also pre-re, for both item translations skill translations and maps like izlude,
    the for izlude just download the old izlude and put it in your data folder / grf
    As for the mobs in 2007 I remember that orc zombies where not that strong and could easily be mobbed and killed in groups even before your 2nd job.
    To answer your overall question will there still be issues, I'm sure there are small ones here and there but most are caused by using a non pre-re grf setup, with a few of the renewal npcs leaking to pre-re
    For your woe question I wouldn't know off hand I'd have to look into the npcs bit I'm on phone
  8. Stolao's post in about OnPCStatCalcEvent was marked as the answer   
    Equip, unequip, de/buffs, adding skill points, adding stat points, changing maps, de/buffs ending, changing map/ teleporting on same map, logging in... I think that's them all.
  9. Stolao's post in two-dimensional arrays was marked as the answer   
    No there are no two demintional arrays, however you can use setd and gets with multiple arrays say
    Test1,
    Test2,
    Test9999,
    And create that effect,
    My mining script uses this, its in my git
  10. Stolao's post in About bonus stats was marked as the answer   
    OnPcCalcEvent:
     
    like in this
    https://github.com/Stolao/Npc_Release/tree/master/Weapon_Mastery
  11. Stolao's post in Need a little help was marked as the answer   
    its simply the same emelemnt of array for each array, it works better if you tabulate like this
    setarray .M$[0], "abyss_01" ,"abyss_02" ,"abyss_03" ,"prt_maze02" ,"ein_fild08" ,"lou_fild01"; setarray .XX[0], 206 ,176 ,40 ,11 ,0 ,0; setarray .YY[0], 91 ,207 ,162 ,169 ,0 ,0; then you can see it by just scrolling down
     
     
    then you can
    set .@i,select(implode(.M$,":") - 1); warp .M$[.@i],.XX[.@i],.YY[.@i];
  12. Stolao's post in R>Highness Heal Skill (AB) was marked as the answer   
    in your skill.c
    case AB_HIGHNESSHEAL: { int heal = skill_calc_heal(src, bl, skill_id, skill_lv, true); int heal_get_jobexp; if( status_isimmune(bl) || (dstmd && (dstmd->mob_id == MOBID_EMPERIUM || mob_is_battleground(dstmd))) || (dstsd && pc_ismadogear(dstsd)) )//Mado is immune to heal heal=0; if( tsc && tsc->count ) { if( tsc->data[SC_KAITE] && !(sstatus->mode&MD_BOSS) ) { //Bounce back heal if (--tsc->data[SC_KAITE]->val2 <= 0) status_change_end(bl, SC_KAITE, INVALID_TIMER); if (src == bl) heal=0; //When you try to heal yourself under Kaite, the heal is voided. else { bl = src; dstsd = sd; } } else if (tsc->data[SC_BERSERK] || tsc->data[SC_SATURDAYNIGHTFEVER]) heal = 0; //Needed so that it actually displays 0 when healing. } clif_skill_nodamage (src, bl, skill_id, heal, 1); if( tsc && tsc->data[SC_AKAITSUKI] && heal && skill_id != HLIF_HEAL ) heal = ~heal + 1; heal_get_jobexp = status_heal(bl,heal,0,0); if(sd && dstsd && heal > 0 && sd != dstsd && battle_config.heal_exp > 0){ heal_get_jobexp = heal_get_jobexp * battle_config.heal_exp / 100; if (heal_get_jobexp <= 0) heal_get_jobexp = 1; pc_gainexp (sd, bl, 0, heal_get_jobexp, false); } } break; change  this line
    heal_get_jobexp = status_heal(bl,heal,0,0); to this
            if(heal > 0) heal_get_jobexp = status_percent_heal(bl, skill_lv * 20, 0)  and it will now heal for 20% of max hp per skill level (100% at max level)
  13. Stolao's post in Damage depending on range was marked as the answer   
    think this already exist in KN_CHARGEATK
     
    unit.c
    case KN_CHARGEATK: { unsigned int k = (distance_bl(src,target)-1)/3; // +100% every 3 cells of distance if( k > 2 ) k = 2; // ...but hard-limited to 300%. casttime += casttime * k; } battle.c
    case KN_CHARGEATK: { // +100% every 3 cells of distance but hard-limited to 500% unsigned int k = wd.miscflag / 3; if (k < 2) k = 0; else if (k > 1 && k < 3) k = 1; else if (k > 2 && k < 4) k = 2; else if (k > 3 && k < 5) k = 3; else k = 4; skillratio += 100 * k; } break;
  14. Stolao's post in @storage help please was marked as the answer   
    this can be done via script
    eg
    - script Storecheck -1,{ OnStoreage: if(.var > 1){ end; } else { openstorage; } end; OnInit: bindatcmd("storage" ,"Storecheck::OnStoreage",0,99); bindatcmd("s" ,"Storecheck::OnStoreage",0,99); end; }
  15. Stolao's post in Correction Devil Squared was marked as the answer   
    Find
    Ondevilfinal
    And add this after
    sleep 15000;
  16. Stolao's post in What is "?" and "&&" used for? was marked as the answer   
    ?: - Conditional operator Very useful e.g. to replace if(Sex) mes "..."; else mes "..."; clauses with simple mes "Welcome, " + (Sex?"Mr.":"Mrs.") + " " + strcharinfo(0); or to replace any other simple if-else clauses. It might be worth mentioning that ?: has low priority and has to be enclosed with parenthesis in most (if not all) cases.  
  17. Stolao's post in Stat Reset with Dynamic Price was marked as the answer   
    //===== rAthena Script ======================================= //= Reset NPC //===== By: ================================================== //= rAthena Dev Team //===== Current Version: ===================================== //= 1.06 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= Resets skills, stats, or both. //= https://rathena.org/board/topic/102190-stat-reset-with-dynamic-price/ //===== Additional Comments: ================================= //= 1.00 First Version //= 1.01 Optimized for the greater good. [Kisuka] //= 1.02 Cleaning [Euphy] //= 1.03 All statuses removed upon skill reset. [Euphy] //= 1.04 Compressed Script [Stolao] //= 1.05 Added limit use option [Stolao] //= 1.06 Added Dynamic Pricing For Bisuke on Rathena [Stolao] //============================================================ prontera,150,193,4 script Reset Girl 124,{ // Skills, Stats, Both, Limit if(BaseLevel > 85){ set .@Reset, 100000, 100000, 90000, 0; else if(BaseLevel > 75){ set .@Reset, 75000, 75000, 70000, 0; else if(BaseLevel > 45){ set .@Reset, 50000, 50000, 50000, 0; else { set .@Reset, 10000, 10000, 9000, 0; } mes "[Reset Girl]"; if(.@Reset[3] && reset_limit > .@Reset[3]) { mes "Sorry you can only reset "+.@Reset[3]+" time in your life."; close; } mes "I am the Reset Girl."; mes "Reset Stats: "+ callfunc("F_InsertComma",.@Reset[1]) +"z"; mes "Reset Skills: "+ callfunc("F_InsertComma",.@Reset[0]) +"z"; mes "Reset Both: "+ callfunc("F_InsertComma",.@Reset[2]) +"z"; mes "Please select the service you want:"; next; set .@i,(select("^FF3355Reset Skills:Reset Stats:Reset Both^000000:Cancel")); if(.@i > 3) close; mes "[Reset Girl]"; if (Zeny < .@Reset[.@i-1]) { mes "Sorry, you don't have enough Zeny."; close; } if(.@Reset[3]){ mes "You can only reset "+.@Reset[3]+" time in your life, are you sure?"; if(select("Let me think:Thats fine") == 1) close; } set Zeny, Zeny-.@Reset[.@i-1]; if(.@i&1){ sc_end SC_ALL; ResetSkill; } if(.@i&2) ResetStatus; mes "There you go!"; if(.@Reset[3]) set reset_limit,reset_limit + 1; close; } here you are although an easier option would be to make it x cost per level
    eg:
    set .@Reset, BaseLevel * BaseLevel * 10, JobLevel * JobLevel * 15, BaseLevel * JobLevel * 9, 0;
  18. Stolao's post in Player inmune to designed map was marked as the answer   
    try this
    - script reg_sylph -1,{ OnPCStatCalcEvent: if(getcharid(2) == 3 && ( strcharinfo(3) == "sylph_sky1" || strcharinfo(3) == "splendie" || strcharinfo(3) == "spl_fild01" || strcharinfo(3) == "spl_fild02" || strcharinfo(3) == "spl_fild03" ) ){ if(BaseLevel < 50){ bonus2 bSubRace,RC_Formless,100; bonus2 bSubRace,RC_Undead,100; bonus2 bSubRace,RC_Brute,100; bonus2 bSubRace,RC_Plant,100; bonus2 bSubRace,RC_Insect,100; bonus2 bSubRace,RC_Fish,100; bonus2 bSubRace,RC_Demon,100; bonus2 bSubRace,RC_DemiHuman,100; bonus2 bSubRace,RC_Angel,100; bonus2 bSubRace,RC_Dragon,100; bonus bSpeedRate,40; bonus bSPrecovRate,10; bonus bHPrecovRate,10; } else { bonus bSpeedRate,30; bonus bAspdRate,10; bonus bVariableCastrate,-30; } } }
  19. Stolao's post in Item script help. was marked as the answer   
    29115,Naght_Seiger_Twin_Blades,Naght Twin Blades,5,20000,,100,,1,,1,0xFFFFFFFF,7,2,1,,0,0,1836,{ bonus bAllStats,10; bonus bAgi,5; bonus bLuk,5; bonus2 bAddSize,Size_All,15; bonus2 bMagicAddSize,Size_All,15; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte){ bonus bInt,15; bonus bDex,15; bonus bMatkRate,10; bonus bDelayrate,-10; }else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief){  bonus bStr,15; bonus bVit,15; bonus bAtkRate,10; bonus bBaseAtk,300; }else if(BaseClass==Job_Taekwon){ bonus2 bAddSize,Size_All,15; bonus bAllStats,8; bonus bMaxHPrate,12; bonus bMaxSPrate,12; }else if(BaseClass==Job_Gunslinger){ bonus bDex,15; bonus bLongAtkRate,15; bonus bMaxHPrate,15; }else if(BaseClass==Job_Ninja){ bonus2 bAddSize,Size_All,15; bonus2 bMagicAddSize,Size_All,15; bonus bAllStats,8; } },{},{} look in your ro/doc/item_bonus.txt
    and in your
    ro/doc/script_commands.txt for more help
  20. Stolao's post in Hunting Mission was marked as the answer   
    Add this somewhere appropriate
    OnHuntCmd:     for (.@i = 0; .@i < .Quests; .@i++) {         .@j[.@i] = getd("Mission" + .@i);         .@j[.Quests] = .@j[.Quests] + strmobinfo(3,.@j[.@i]);         .@j[.Quests+1] = .@j[.Quests+1] + (strmobinfo(6,.@j[.@i]) / (getbattleflag("base_exp_rate") / 100) * .Modifier[0]);         .@j[.Quests+2] = .@j[.Quests+2] + (strmobinfo(7,.@j[.@i]) / (getbattleflag("job_exp_rate") / 100) * .Modifier[1]);         announce " > "+strmobinfo(1,.@j[.@i]) + " (" + getd("Mission"+.@i+"_") + "/" + #Mission_Count + ")",bc_self|bc_blue;     } end;
    Add somewhere under
    OnInit:
    bindatcmd "huntinglist","Hunting Missions::OnHuntCmd",0,99;
  21. Stolao's post in Class Mastery was marked as the answer   
    Search for .Mode[4] and edit the section to require items instead of zeny
    id recommend adding a .Mode[5] as well for quantity
     
     
    reminds me i need to update my script like this to my latest rev
  22. Stolao's post in Status Adjustments was marked as the answer   
    // Adjustment for the natural rate of resistance from status changes. // If 50, status defense is halved, and you need twice as much stats to block // them (eg: 200 vit to completely block stun) pc_status_def_rate: 50 mob_status_def_rate: 100 so for example you want 300 vit to be stun immunity you need to change to
    pc_status_def_rate: 33 mob_status_def_rate: 100 you seem to have it backwards
  23. Stolao's post in Hourly Rewards with Per day limit was marked as the answer   
    //===== Hourly Points Script ========================================= //===== By: ========================================================== //= GorthexTiger modified by Nibi //===== Current Version: ============================================= //= 1.0 //===== Compatible With: ============================================= //= Any eAthena Version //===== Description: ================================================= //= Get Points every successful hours of gameplay, you cannot get //= the points even if you miss a second or a minute. A player will //= get a very big bonus if they played 12 hours consecutively //= or without logging out of the game. If the player is vending //= the script will then stop. //===== Additional Comments: ========================================= //= You can modify the script to your liking. //= The default points is Kafrapoints change it anyway if you like. //= 1.1 = Check Chatting too //= 1.2 = 5 Minute Idle Check & @at/@autotrade check. //= 1.3 = Corrected the current balance line on 12 Hours Consecutive //==================================================================== - script hourlypoints -1,{ //--Start of the Script OnPCLoginEvent: set .@i, (gettime(7) * 365 * 24) + (gettime(8) * 24) + gettime(3);// this will set time of origional loging if(.@i >= (#LastClock + .ResetHours)){ set #LastClock,.@i; set #Clock,0; } else { set @minute,#Clock; } attachnpctimer ""+strcharinfo(0)+""; initnpctimer; end; OnPCLoginEvent: set #Clock,@minute; end; OnInit: set .ResetHours,24; end; OnTimer500: //Check if Vending (normal or @at) if(checkvending() >= 1) { dispbottom "The hourly points event stopped because you were vending. Please relog if you wish to start again."; stopnpctimer; end; } OnTimer600000: set @minute, @minute + 1; //Check for 1 Minute if(@minute == 6000){ //set @minute,0; set .@point_amt, 100; //Points to get every hour (default: 10) set #CASHPOINTS, #CASHPOINTS + .@point_amt; dispbottom "You received "+.@point_amt+" Cashpoints by staying ingame for 1 hour"; dispbottom "Current Balance = "+#CASHPOINTS+" Cashpoints"; //set @consecutive_hour, @consecutive_hour + 10; } if(@minute == 12000){ //set @minute,0; set .@point_amt, 200; //Points to get every hour (default: 10) set #CASHPOINTS, #CASHPOINTS + .@point_amt; dispbottom "You received "+.@point_amt+" Cashpoints by staying ingame for 2 hour"; dispbottom "Current Balance = "+#CASHPOINTS+" Cashpoints"; //set @consecutive_hour, @consecutive_hour + 10; } if(@minute == 24000){ //set @minute,0; set .@point_amt, 400; //Points to get every hour (default: 10) set #CASHPOINTS, #CASHPOINTS + .@point_amt; dispbottom "You received "+.@point_amt+" Cashpoints by staying ingame for 4 hour"; dispbottom "Current Balance = "+#CASHPOINTS+" Cashpoints"; //set @consecutive_hour, @consecutive_hour + 10; } if(@minute == 48000){ set @minute,0; set .@point_amt, 1300; //Points to get every hour (default: 10) set #CASHPOINTS, #CASHPOINTS + .@point_amt; dispbottom "You received "+.@point_amt+" Cashpoints by staying ingame for 8 hour"; dispbottom "Current Balance = "+#CASHPOINTS+" Cashpoints"; //set @consecutive_hour, @consecutive_hour + 10; } //Check for 12 hours consecutive // if(@consecutive_hour == 12) { // set @consecutive_hour,0; // set .@cpoint_amt, 100; //Points to get for 12 Consecutive hours (default: 100) // set #CASHPOINTS, #CASHPOINTS + .@cpoint_amt; // dispbottom "You receive "+.@cpoint_amt+" Cashpoints in playing for 12 consecutive hours"; // dispbottom "Current Balance = "+#CASHPOINTS+" Cashpoints"; } stopnpctimer; initnpctimer; end; } //--End of the Script i made it 24 (configurable via .ResetHours) hour period from initial login, will reset initial login on 1st login after 24 hours are up.
    Added Stop on player logout and restart on relogging in (assuming its not been 24 hours)
    as for 2000 points that will never be reached if your other settings are correct so that option is moot
     
    ps this script can be easily optimized and shortened maybe ill even do it myself if i get bored
  24. Stolao's post in Only up to +10 Refine was marked as the answer   
    try
    if(getrefine()<11){ bonus bStr,getrefine(); } else { bonus bStr,10; }
  25. Stolao's post in whats wrong with this 2 npc's? was marked as the answer   
    Second one there are 2 problems

    First
    If( .@amount % 10 > 0) Should be
    If(.@amount % 10 != 0 || .@amount < 1) Secondly
    Getitem 14232,1; Should be
    Getitem 14232, .@amount / 10;
    On phone so odd no codebox.
×
×
  • Create New...