Jump to content

mrlongshen

Members
  • Content Count

    1126
  • Joined

  • Last visited

  • Days Won

    3

Reputation Activity

  1. Upvote
    mrlongshen reacted to Aeromesi in Multiple reward   
    The edit you'll want is a simple function Global_Functions.txt contains inside the Hercules folder npc folder.

     
    .RandomItemAmount = 10;.RandomItemList = callfunc("F_Rand",1129,1222,1163,1357,1360,1522,1811,1410);getitem .RandomItemList, .RandomItemAmount;
    Would give you the items of ID's listed after "F_Rand"

    PS: You can always message me on Skype instead of making new topic for simple request. I'm more than glad to help with easy solutions like this personally with you.
  2. Upvote
    mrlongshen reacted to quesoph in how can i add soul link buffs on this script?   
    -  script  Healer  -1,{    set .@Price,0;  // Zeny required for heal  set .@Buffs,1;  // Also buff players? (1: yes / 0: no)  set .@Delay,0;  // Heal delay, in seconds  callfunc "F_ClearGarbage",0;  switch ( BaseJob ) {    case 18:  .@spirit = 445; break;    case 20:    case 15:  .@spirit = 447; break;    case 19:  .@spirit = 455; break;    case 4047: .@spirit = 448; break;    case 17:  .@spirit = 456; break;    case 16:  .@spirit = 449; break;    case 12:  .@spirit = 457; break;    case 14:  .@spirit = 450; break;    case 10:  .@spirit = 458; break;    case 23:  .@spirit = 451; break;    case 11:  .@spirit = 460; break;    case 7: .@spirit = 452; break;    case 4049:  .@spirit = 461; break;    case 8: .@spirit = 454; break;    case 9: .@spirit = 453; break;  }  if (@HD > gettimetick(2)) end;  if (.@Price) {    message strcharinfo(0),"Healing costs "+.@Price+" Zeny.";    if (Zeny < .@Price) end;    if(select("^0055FFHeal^000000:^777777Cancel^000000") == 2) close;    set Zeny, Zeny-.@Price;  }  specialeffect2 EF_HEAL2; percentheal 100,100;      if (.@Buffs) {    for( .@i = 0; .@i < getarraysize( .Buffs$ ); .@i++ ) {      .@sum = atoi(.@b$[.@i]) + .min_Levels[.@i];      .@j = .Buffs$[.@i];      stand (strcharinfo(0)); // <- Added this so characters dont get stuck when soul link is casting.      if( .@sum )        sc_start4 .@j, 240000, 5,  .@spirit,0,0;      if ( .min_Levels[3] )        skilleffect .@spirit, 5;   // Start Soul Link Effect.    }  }  if (.@Delay) set @HD, gettimetick(2)+.@Delay;  close;OnInit:  setarray .Buffs$, SC_INC_AGI, SC_BLESSING, SC_KYRIE, SC_SOULLINK;  setarray .min_Levels,    5,   5, 1, 5;  end;  }prontera,163,185,6  duplicate(Healer)  Healer1#alb  909
  3. Upvote
    mrlongshen reacted to Aeromesi in Lucky Poring   
    I turned your script-request into quite a lively thing. I sent you a message @@mrlongshen, and you can view it here:

    http://herc.ws/board/topic/9149-aeromesis-fast-as-the-wind-ragnarok-services/?p=66356

    Hop on Skype!
  4. Upvote
    mrlongshen reacted to Samuel in Increase max hp for all job   
    @@mrlongshen
     
    in conf/battle/player.conf
     
    // Maximum HP. (Default is 1000000)
    max_hp: 1000000
  5. Upvote
    mrlongshen reacted to AnnieRuru in Cashmount   
    - script asdaskdha FAKE_NPC,{OnInit: setitemscript 12111 , "{ if ( !hascashmount() ) setcashmount; }", 1; setitemscript 12111 , "{ if ( hascashmount() ) setcashmount; }", 2; end;}
  6. Upvote
    mrlongshen got a reaction from Easycore in PvP Ladder - Discount point at die   
    @@Easycore Hello bro. I'm using annie script.
     
    //===== eAthena Script ======================================================= //= PVP ladder script with dota announcement ( SQL only ) //===== By: ================================================================== //= ~AnnieRuru~ //===== Current Version: ===================================================== //= 2.9 //===== Compatible With: ===================================================== //= eAthena SQL 14279, with MySQL 5.1 //===== Description: ========================================================= //= PVP ladder store in SQL table //= plus anti-sit-killer feature //===== Topic ================================================================ //= http://www.eathena.ws/board/index.php?showtopic=177918 //===== Additional Comments: ================================================= //= still don't have modify value option, will be done ... in next year ... //============================================================================
  7. Upvote
    mrlongshen reacted to Dastgir in New 2015 alt+v   
    https://github.com/ROClientSide/Translation/tree/master/data/texture/%C3%80%C2%AF%C3%80%C3%BA%C3%80%C3%8E%C3%85%C3%8D%C3%86%C3%A4%C3%80%C3%8C%C2%BD%C2%BA/ro_menu_icon
  8. Upvote
    mrlongshen reacted to ossi0110 in FluxCP for new SQL Table   
    Ok 
     
    Open the modulesrankingdeath.php
     
    and change
     
     
    $sql .= "LEFT JOIN {$server->charMapDatabase}.`global_reg_value` AS reg ON reg.char_id = ch.char_id AND reg.str = 'PC_DIE_COUNTER' ";  into
     
    $sql .= "LEFT JOIN {$server->charMapDatabase}.`char_reg_num_db` AS reg ON reg.char_id = ch.char_id AND reg.key = 'PC_DIE_COUNTER' ";  
     
     
    now Open modulescharacterview.php
     
    and change
     
    $sql .= "LEFT OUTER JOIN {$server->charMapDatabase}.`global_reg_value` AS reg ON reg.char_id = ch.char_id AND reg.str = 'PC_DIE_COUNTER' "; into
     
    $sql .= "LEFT OUTER JOIN {$server->charMapDatabase}.`char_reg_num_db` AS reg ON reg.char_id = ch.char_id AND reg.key = 'PC_DIE_COUNTER' ";   
     
    and errors are solved
     
  9. Upvote
    mrlongshen reacted to AnnieRuru in Find the MVP   
    https://eathena.ws/board/index.php?showtopic=243753
    it just exactly like find the mushroom event
     
    http://upaste.me/4b1521981271160f0
  10. Upvote
    mrlongshen reacted to eaea in 3rd Job Suit Problem   
    Hi,
     
    I made a 3rd job suit using this code:
     
    OnEquipScript: <" { changebase roclass(eaclass()|EAJL_THIRD); } "> OnUnequipScript: <" {changebase Class;} ">  
    Everything works fine except for the Rune Knight with mount.
    I tried to equip it to a Crusader with Peco and when I equip the suit, it changes into a Royal Guard with Gryphon, when I try to do it with a Knight mounted on Peco, it displays the mounted status but the Dragon Mount is not showing.
     
    I also tried to change my job into an actual Rune Knight and tried to mount and the sprites works just fine.
     
    I also tried to use the class_suits v1.2 script using an NPC. Same result.
     
     Any one have ideas how to fix this? Thank you!
  11. Upvote
    mrlongshen reacted to AnnieRuru in 3rd Job Suit Problem   
    sry, I gave wrong answer
     
    I noticed we already have script commands to setoption, so there is no need to patch
    - script kfsdkfhsf FAKE_NPC,{OnInit: setitemscript 1201, "{ if ( Class == Job_Knight && checkmount() ) { setoption Option_Dragon1; } changebase roclass(eaclass()|EAJL_THIRD); }", 1; setitemscript 1201, "{ changebase Class; } ", 2; end;}
  12. Upvote
    mrlongshen reacted to Dastgir in Sending own point by command in script or item based   
    @set #EVENTPOINTS 1
    ^ Will change points to 1
  13. Upvote
    mrlongshen reacted to ossi0110 in Sending own point by command in script or item based   
    use @set #EVENTPOINTS +1
  14. Upvote
    mrlongshen reacted to AnnieRuru in Poring Summoner problem.   
    you are right, newer scripting engine now strict with end; or close; command
     
    this one should be bug free, I think ?
    http://upaste.me/1f8221954a6d19088
  15. Upvote
    mrlongshen reacted to Winterfox in PVP rest time   
    @@mrlongshen
    prontera,165,177,3 script PVP Warper 1_M_MOC_LORD,{ if ( !agitcheck() || !agitcheck2() ) { if( gettimetick( 2 ) < PVPCD ) { dispbottom "You need to rest for 5 minutes."; end; } if ( select( "Yes!", "No thanks.") == 2 ) close; warp "guild_vs5",0,0; announce strcharinfo(0) + " has entered the PVP Room.",0; announce "There are ["+getmapusers("guild_vs5")+"/30] players inside.",0; } end; OnPCKillEvent: if ( strcharinfo( PC_MAP ) != "guild_vs5" ) end; if( PVPKilltarget == killedrid ) { PVPTargetKillCount++; } else { PVPKilltarget = killedrid; PVPTargetKillCount = 1; } if( PVPTargetKillCount == 5 ) { PVPCD = gettimetick( 2 ) + 300; PVPKilltarget = 0; PVPTargetKillCount = 0; warp "prontera",0,0; }}
  16. Upvote
    mrlongshen reacted to AnnieRuru in PVP rest time   
    hehehe ... 1 of my super old script
    https://www.eathena.ws/board/index.php?showtopic=155874
    I mean I used in my dota announcement script -> https://www.eathena.ws/board/index.php?showtopic=237765
    prontera,155,187,3 script PVP Warper 1_F_MARIA,{ if ( !agitcheck() && !agitcheck2() ) { if ( pvproom_cooldown + 5*60 > gettimetick(2) ) { dispbottom "You need to rest for 5 minutes."; end; } if ( select("Yes!","No thanks.") == 2 ) close; announce strcharinfo(0) + " has entered the PVP Room.", bc_all; announce "There are ["+getmapusers("guild_vs5")+"/30] players inside.", bc_all; warp "guild_vs5",0,0; deletearray @sitkillid; deletearray @sitkillidtimes; @sitkillsize = 0; end; } end;OnPCKillEvent: if ( strcharinfo(PC_MAP) != "guild_vs5" ) end; while ( killedrid != @sitkillid[.@i] && .@i < @sitkillsize ) .@i++; if ( .@i == @sitkillsize ) // only add new entry if kill new players @sitkillid[.@i] = killedrid; @sitkillidtimes[.@i]++; @sitkillsize++;// dispbottom "You just killed "+ rid2name( killedrid ) +" for "+ @sitkillidtimes[.@i] +" times."; if ( @sitkillidtimes[.@i] == 5 ) { // when kill same player 5 times pvproom_cooldown = gettimetick(2); warp "Save", 0,0; } end;}guild_vs5 mapflag pvp.btw it should be && condition
    either if ( !agitcheck() && !agitcheck2() ) {
    or if ( agitcheck() || agitcheck2() ) end;
  17. Upvote
    mrlongshen reacted to AnnieRuru in noitem plugin   
    turn this into plugin
    1.3 plugin
  18. Upvote
    mrlongshen reacted to Winterfox in How to delete all cashpoints?   
    You could make that a bit better like that:
    - script CashReset -1,{ OnPCLoginEvent: if( #CashReset ) end; #CASHPOINTS = 0; #CashReset = 1;} The table you are searching for is acc_reg_num_db where account_id is the account of the user of course, key is #CASHPOINTS and value is the current amount of cashpoints the user has. If there is no entry for a specific user that means he has 0.
     
    The same applies to kafra points you just have to switch the key to #KAFRAPOINTS.
     
    Instead of a script you also could use this sql query to delete all cashpoints:
    DELETE FROM acc_reg_num_db WHERE key = "#CASHPOINTS"
  19. Upvote
    mrlongshen reacted to Winterfox in How to delete all cashpoints?   
    @@mrlongshen
    #CASHPOINTS = 0;
  20. Upvote
    mrlongshen reacted to Aeromesi in How to delete all cashpoints?   
    Here's a script @@mrlongshen.
     
    - script CashReset -1,{OnPCLoginEvent: if( !#CashReset ) { #CASHPOINTS = 0;#CashReset++;} elseend;}

    That way when they login the next time Cash Points will be 0'd out.

    I'm curious what happened? Some abuse of Cash Point script?
  21. Upvote
    mrlongshen reacted to AnnieRuru in All monster drops specific item with blacklist mobs   
    simple script
    - script kdjsfhksdjfh FAKE_NPC,{OnInit: setarray .itemid, Poring_Coin, TCG_Card; setarray .rate, 10000, 10000; .blacklist$ = "1062,1088,1183,1186,1200,1212,1220,1221,1234,1235," + "1244,1245,1250,1268,1290,1293,1294,1296,1298,1299," + "1300,1301,1303,1304,1305,1306,1308,1309,1311,1313," + "1515,1588,1618,1676,1677,1678,1679,1796,1797,1974," + "1975,1976,1977,1978,1979"; .size = getarraysize(.itemid); freeloop true; for ( .@id = 1001; .@id <= 5000; .@id++ ) // 5000 is MAX_MOB_DB from srcmapmob.h if ( strmobinfo( 3, .@id ) && !compare( ","+ .blacklist$ +",", ","+ .@id +"," ) ) for ( .@i = 0; .@i < .size; .@i++ ) addmonsterdrop( .@id, .itemid[.@i], .rate[.@i] ); end;}..
    .
    @@Winterfox
    there is no need to use query_sql for this operation
    just a *compare command will do
     
     
    EDITING for dynamic item ID and random rate
    done
  22. Upvote
    mrlongshen got a reaction from Legend in GRF Encryption   
    Use the grf editor or securegrf
  23. Upvote
    mrlongshen reacted to jezznarRox in Farm zone no mob ?   
    Please try this. Not Tested.
    adjust syntax if erroneous.

    this will:
    1. Wait for a person to go in before spawning monsters
    2. attaches a player timer to the first person who goes in marking the start of the existence of the event FarmZone
    3. When timer expires, deletest player timer, warps players out, cleans the map, announces to the whole server that it is already usable by other players
    4. Still warp out players when they reach Item hunting limit
     
    prontera,164,172,5 script Farm Zone 4_F_JPN2,{function RandomizeItem;while( 1 ){mes "How can i help you ?";switch( select( "Information:Farm Items" )){case 1: mes "This is a Farm Zone."; mes "You are able to Hunt Monster inside this Room."; mes "Every Monster will award you random items."; next; mes "But there is some Condition.."; mes "You can only go in ^FF0000once every "+.RoomCleanMin+" minutes for 1 times.^000000"; mes "And Maximum of ^FF0000"+.MaxPlayers+" Players per "+.RoomCleanMin+" Minutes.^000000"; mes "Maximum Hunting Limit ^FF0000"+.MaxItemLimit+"^000000"; next; mes "There will be a ^FF0000Room Cleaning^000000 from time to time..."; mes "All players will be kicked out, it is your bad luck if you meet this."; mes "Delay will still apply even though you just go in for 1 Seconds.."; next; break;case 2: if( #HuntRoomDelay > gettimetick(2) ){ set .last,#HuntRoomDelay - gettimetick(2); set .@min, .last % ( 24 * 3600 ) % 3600 / (60); mes "Wait for ^FF0000"+.@min+" Minutes^000000."; close; }else if( getarraysize( .Hunter ) >= .MaxPlayers ){ mes "Currently the Room is Full. Please try again later."; close; }else{ if(!getmapusers(.Map$)) {//mrlongshen: Populate the map only when someone goes in and noone is in the map. monster .Map$,0,0,"[ Farm Zone ] Resident",-1,80,strnpcinfo(0)+"::OnNormalKill"; monster .Map$,0,0,"[ Farm Zone ] Guardian",-3,5,strnpcinfo(0)+"::OnBossKill"; addtimer .RoomCleanMin*60*1000, strnpcinfo(0)+"::OnFarmCleanUp"; //add player timer to when he clean up is done }//mrlongshen warp .Map$,0,0; set .Hunter[getarraysize( .Hunter )],strcharinfo(0); set #HuntRoomDelay,gettimetick(2) + ( .DelayMin * 60 ); set #FarmHunt,0; end; } }}end; //mrlongshenOnFarmCleanUp: //mrlongshen clean up algorithm deltimer strnpcinfo(0)+"::OnFarmCleanUp"; killmonster .Map$,"All"; if(getarraysize( .Hunter )) mapannounce .Map$,"[ Farm Zone ] : Room Clean Up now...All Users will be warped Out.",0; sleep2 3000; mapwarp .Map$,"prontera",155,181; deletearray .Hunter,getarraysize( .Hunter ); announce "[ Farm Zone ] : Farming Zone has been Cleaned up, another "+.MaxPlayers+" Players may go in now.",bc_blue; //tell people that the farm zone can now be used againend; //mrlongshenOnInit:// Maximum Player can join per X Minutes.set .MaxPlayers,2;// Adding X Minutes of Delay before can go in again.set .DelayMin,1;// Maximum Hunt Limit per round inside the Zone.set .MaxItemLimit,10;// Map that will be used in thos Zone.set .Map$,"guild_vs5";// Clear Map Every X Minutes.set .RoomCleanMin,15;// Mapflag Initializationsetmapflag .Map$,mf_nomobloot;setmapflag .Map$,mf_nomvploot;setmapflag .Map$,mf_nowarpto;setmapflag .Map$,mf_nochat;setmapflag .Map$,mf_novending;setmapflag .Map$,mf_nocommand,60;setmapflag .Map$,mf_nojobexp;setmapflag .Map$,mf_nobaseexp;end;OnNormalKill:RandomizeItem( 0,rand(1,5) );monster .Map$,0,0,"--ja--",-1,1,strnpcinfo(0)+"::OnNormalKill";end;OnBossKill:RandomizeItem( 1,rand(1,3) );monster .Map$,0,0,"--ja--",-3,1,strnpcinfo(0)+"::OnBossKill";end;// Function that used to Generate Random Itemsfunction RandomizeItem {set #FarmHunt,#FarmHunt + getarg(1);// Normal Monster in Zone Drops Listsif( getarg(0) == 0 ) setarray .ItemList[0],13989,14232,13517,7139,12033,12016,14534;// Normal Boss in Zone Drops Listsif( getarg(0) == 1 ) setarray .ItemList[0],14536,12912,12267,12266,14601,13830,13831,13832,13833;for( set .@i,1; .@i <= getarg(1); set .@i,.@i + 1 ){ getitem .ItemList[ rand( getarraysize( .ItemList ) ) ],1; }deletearray .ItemList,getarraysize( .ItemList );dispbottom "[ Farm Zone ] : Farmed "+#FarmHunt+" / "+.MaxItemLimit+" Items";if( #FarmHunt >= .MaxItemLimit ){ message strcharinfo(0),"Limit Reached , you may join again later."; sleep2 2000; warp "prontera",155,181; }return;} }
  24. Upvote
    mrlongshen reacted to Litro in Farm zone no mob ?   
    can't see where is error that cause no mobs spawning except for mapflag nogo (not sure that will stop the script to run again or stop entirely at that point), there is 2 nogo in the first post in code box except that i think the script will run as supposed to be... if you want you can try this one
     
    prontera,164,172,5 script Farm Zone 4_F_JPN2,{ while(1) { mes "How can i help you ?"; switch( select( "Information:Farm Items" )) { case 1: mes "This is a Farm Zone."; mes "You are able to Hunt Monster inside this Room."; mes "Every Monster will award you random items."; next; mes "But there is some Condition.."; mes "You can only go in ^FF0000once every "+.RoomCleanMin+" minutes for 1 times.^000000"; mes "And Maximum of ^FF0000"+.MaxPlayers+" Players per "+.RoomCleanMin+" Minutes.^000000"; mes "Maximum Hunting Limit ^FF0000"+.MaxItemLimit+"^000000"; next; mes "There will be a ^FF0000Room Cleaning^000000 from time to time..."; mes "All players will be kicked out, it is your bad luck if you meet this."; mes "Delay will still apply even though you just go in for 1 Seconds.."; next; break; case 2: if (#HuntRoomDelay > gettimetick(2)) { .@last = #HuntRoomDelay - gettimetick(2); .@min = .@last % ( 24 * 3600 ) % 3600 / (60); mes "Wait for ^FF0000"+.@min+" Minutes^000000."; close; } else if (getarraysize(.Hunter) >= .MaxPlayers ) { mes "Currently the Room is Full. Please try again later."; close; } else { warp .Map$,0,0; .Hunter[getarraysize( .Hunter )] = strcharinfo(0); #HuntRoomDelay = gettimetick(2) + ( .DelayMin * 60 ); #FarmHunt = 0; end; } } }OnInit: function RandomizeItem; .MaxPlayers = 2; // Maximum Player can join per X Minutes. .DelayMin = 1; // Adding X Minutes of Delay before can go in again. .MaxItemLimit = 10; // Maximum Hunt Limit per round inside the Zone. .Map$ = "guild_vs5"; // Map that will be used in thos Zone. .RoomCleanMin = 15; // Clear Map Every X Minutes. // Mapflag Initialization setarray .@mapflag, mf_nomobloot, mf_nomvploot, mf_nowarp, mf_nowarpto, mf_nochat, mf_novending, mf_nojobexp, mf_nobaseexp; for (.@i = 0; .@i < getarraysize(.@mapflag); .@i++) setmapflag .Map$, .@mapflag[.@i]; setmapflag .Map$, mf_nocommand, 60; while(1) { killmonster .Map$,"All"; mapwarp .Map$,"prontera",155,181; monster .Map$, 0, 0,"[ Farm Zone ] Resident", -1, 80, strnpcinfo(0)+"::OnNormalKill"; monster .Map$, 0, 0,"[ Farm Zone ] Guardian", -3, 5, strnpcinfo(0)+"::OnBossKill"; deletearray .Hunter,getarraysize( .Hunter ); announce "[ Farm Zone ] : Farming Zone has been Cleaned up, another 5 Players may go in now.",bc_blue; sleep ( .RoomCleanMin * 60000 ); mapannounce .Map$,"[ Farm Zone ] : Room Clean Up now...All Users will be warped Out.",0; killmonster .Map$,"All"; sleep 3000; } end;OnNormalKill: RandomizeItem( 0,rand(1,5) ); monster .Map$,0,0,"--ja--",-1,1,strnpcinfo(0)+"::OnNormalKill"; end;OnBossKill: RandomizeItem( 1,rand(1,3) ); monster .Map$,0,0,"--ja--",-3,1,strnpcinfo(0)+"::OnBossKill"; end;// Function that used to Generate Random Itemsfunction RandomizeItem { #FarmHunt += getarg(1); // Normal Monster in Zone Drops Lists if( getarg(0) == 0 ) setarray .ItemList[0],13989,14232,13517,7139,12033,12016,14534; // Normal Boss in Zone Drops Lists if( getarg(0) == 1 ) setarray .ItemList[0],14536,12912,12267,12266,14601,13830,13831,13832,13833; for(.@i = 1; .@i <= getarg(1); .@i++) getitem .ItemList[rand(getarraysize(.ItemList))], 1; deletearray .ItemList, getarraysize(.ItemList); dispbottom "[ Farm Zone ] : Farmed "+#FarmHunt+" / "+.MaxItemLimit+" Items"; if (#FarmHunt >= .MaxItemLimit) { message strcharinfo(0),"Limit Reach , you may join again later."; sleep2 2000; warp "prontera",155,181; } return;}}
  25. Upvote
    mrlongshen reacted to Litro in One click mining constant   
    now mining will only stop when the miner exhausted his mining tools supply, when the miner get nothing the mining process will not be stopped any more and you can set success rate again
     
    i have integrate the progress bar reduce time in the script below, look at the comment and make sure you put it right
     
    /*=========================================================Variant Miningby Glitch [Via]===========================================================Request: http://herc.ws/board/topic/1886-simple-mining/===========================================================Description:A simple mining system; allows for interacting players toexcavate minerals by "mining" them with special equipmentand tools.Configuration is done in arrays so that settings may bechanged with no modifications to the script. Keep in mindthat each array value is respective to their commented set.Duplicate in additional locations as needed.=========================================================*/pay_dun00,54,147,0 script Variant Mineral#1::mining 1907,{ disable_items; .@progress = .progress; // Check equipment for (.@i = 0; .@i < getarraysize(.equip); .@i++) { if (!isequipped(.equip[.@i])) { message strcharinfo(0), "You need to have '"+ getitemname(.equip[.@i]) +"' equipped to mine!"; .@unequipped++; } else .@progress -= .e_cast[.@i]; } // Show count of equipment not worn if (.@unequipped) { message strcharinfo(0), .@unequipped +" of "+ getarraysize(.equip) +" equipment has not been worn."; end; } while(1) { // Check tools for (.@i = 0; .@i < getarraysize(.tool); .@i++) { if (countitem(.tool[.@i]) < .inventory[.@i]) { message strcharinfo(0), "You need to bring "+ .inventory[.@i] +" "+ getitemname(.tool[.@i]) +" to mine!"; .@gearless++; } } // Show count of tools not in inventory if (.@gearless) { .@grammar$ = ((getarraysize(.tool) > 1) ? "tools were" : "tool was"); message strcharinfo(0), .@gearless +" of "+ getarraysize(.tool) +" "+ .@grammar$ +" not brought."; end; } // Progress message strcharinfo(0), "Mining in progress..."; progressbar "green", .@progress; // Delete tools for (.@i = 0; .@i < getarraysize(.tool); .@i++) delitem .tool[.@i], .inventory[.@i]; // Audio/visual effects soundeffect .sound$, 0; specialeffect .effect; // Drop random debris getmapxy(.@m$, .@x, .@y, 0); makeitem .debris, .scatter, .@m$, .@x + rand(2), .@y + rand(1,2); // Randomize target mineral to mine .@target = rand(getarraysize(.mineral)); // Max range of success .@range = .success[.@target * 2 + 1]; // Check if failed if(rand(1, .@range) != .success[.@target * 2]) { message strcharinfo(0), "Nothing valuable was excavated..."; // Get mineral(s) } else { getitem .mineral[.@target], .amount[.@target]; message strcharinfo(0), "You have successfully mined "+ .amount[.@target] +" "+ getitemname(.mineral[.@target]) +"!"; } } end; OnWhisperGlobal: // Whisper anything to initialize settings message strcharinfo(0), strnpcinfo(1) +" : 'OnInit' label has been intialized."; OnInit: // Minerals setarray .mineral[0], 985, 984, 6224, 6223; // Jejelopy, Elunium, Oridecon, Bradium, Cranium setarray .amount[0], 1, 1, 1, 1; // Amount to mine // Success rate: (x / y)% chance setarray .success[0], 1, 2, // 50% for Elunium 1, 2, // 50% for Oridecon 1, 4, // 25% Bradium 1, 4; // 25% Cranium //Example of calculation //1, 5, // 1/5 (20%) //1, 2, // 1/2 (50%) //4, 5, // 4/5 (80%) //1, 50; // 1/50 (2%) // Mining time (in seconds) - .progress need to be greater than from total .e_cast!! .progress = 3; // Equipment setarray .equip[0], 5009, 2218; // Safety Helmet, Flu Mask setarray .e_cast[0], 1, 1; // Progress bar reduce time. - .e_cast need to be smaller from total .progress!! // Tools setarray .tool[0], 7318, 7327; // Old Pick, Flashlight setarray .inventory[0], 1, 1; // Amount per tool // Audio/visual effects .sound$ = "chepet_attack.wav"; .effect = 4; // Debris .debris = 7049; // Stone .scatter = 5; // Debris amount end; }// Duplicatespay_dun00,55,147,0 duplicate(mining) Variant Mineral#2 1907pay_dun00,53,146,0 duplicate(mining) Variant Mineral#3 1907pay_dun00,53,145,0 duplicate(mining) Variant Mineral#4 1907pay_dun00,69,148,0 duplicate(mining) Variant Mineral#5 1907pay_dun00,70,147,0 duplicate(mining) Variant Mineral#6 1907pay_dun00,70,146,0 duplicate(mining) Variant Mineral#7 1907
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.