Jump to content

PandaLovesHamster

Members
  • Posts

    452
  • Joined

  • Last visited

  • Days Won

    5

Everything posted by PandaLovesHamster

  1. https://rathena.org/board/topic/60188-fakename-show-guildparty/ This diff seems to be not working(?) anymore? I followed what the diff file had and I could not get @fakename to work anymore. Any ideas?
  2. Updated: Added For Sale script. -- Future For Sale Script -> Alberta Race [ 3 courses, fully automated ... ] more info coming soon!
  3. prontera,155,175,5 script Skull Exchanger 123,{ mes "[ Skull Girl ]"; mes "I really love "+getitemname(.skull_id)+"s"; mes "give me "+.skull_required+"x and I will give you"; mes .exchange_qty+"x "+getitemname(.exchange_id); mes "How many do you want to exchange?"; input .@input; if(!.@input){ next; mes "[ Skull Girl ]"; mes "Come back again~"; close; } if(.@input < countitem(.skull_id)){ next; mes "[ Skull Girl ]"; mes "You don't have enough to exchange that many."; close; } next; delitem .skull_id,.skull_required * .@input; getitem .exchange_id,.exchange_qty * .@input; mes "[ Skull Girl ]"; mes "Oh em geeee"; mes "Yasss I hassss "+getitemname(.skull_id)+" nowwww!"; mes "Me so happy, here take these "+getitemname(.exchange_id)+"!"; close; OnInit: .skull_required,1; //number of skulls .skull_id,7179; //id # of skull .exchange_qty,1; //number of exchanged items .exchange_id,7539; //id # of exchanged item end; } Not tested, but it should work.
  4. Can't you just stack OnHour event labels? xD This one works, try it if you want // Capuche cleaning Base on the Poring Race Event by Zell_ff8, xianz, Neko sec_in01,161,174,3 script Poring Race Event 882,{ if( .access_Prace == 0 ) { mes "[Poring Race Event Staff]"; mes "Poring Race Event has ended."; close; } mes "[Poring Race Event Staff]"; mes "Do you want to participate on Poring Race Event?"; if( select( "Yes","No" ) -1 ) { next; mes "[Poring Race Event Staff]"; mes "See you again next time!"; close; } if( .access_Prace == 0 ) { next; mes "[Poring Race Event Staff]"; mes "..."; mes "..."; mes "Cheater!!~~"; close; } close2; @prace_winner$ = ""; warp "p_track01",52,41; end; // OnInit: OnMinute20: if( gettime(3)%2 ) end; set .access_Prace, 1; announce "Poring Race Event is now open!",0; setnpctimer 100000,"Bidder#prace0"; startnpctimer "Bidder#prace0"; end; OnPraceEnd: set .access_Prace, 0; announce "Poring Race Event is over!",0; end; OnInit: waitingroom "Poring Race Event",0; end; } p_track01,58,41,3 script Bidder#prace0 877,{ function checkevent; mes "[Bidder]"; if( getstrlen( @prace_winner$ ) ) { mes "You have chosen ^00bb00"+ @prace_winner$ +"^000000"; close; } else if ( checkevent() || .start ) { mes "There is a race in progress..."; close; } else if( !getvariableofnpc( .access_Prace,"Poring Race Event" ) ) { mes "There is no race."; close; } mes "Choose the poring you want to bet:"; mes "It will cost "+ .zeny_req +" Zeny."; .@s = select( .menu_$ ); if( .@s == 7 ) { next; mes "[Bidder]"; mes "Goodbye."; close; } .@c$ = .monst_$[ .@s -1 ]; if ( checkevent() ) { next; mes "[Bidder]"; mes "..."; mes "..."; mes "Cheater!!~~"; close; } else if( Zeny < .zeny_req ) { next; mes "[Bidder]"; mes "You don't have enough Zeny."; close; } Zeny -= .zeny_req; @prace_winner$ = .@c$; .prace_bidders[ .prace_bets ] = getcharid(3); .prace_bets++; next; mes "[Bidder]"; mes "I have "+ .prace_bets +" bets."; initnpctimer; npctalk "I got "+ strcharinfo(0) +" bet!"; close; OnTimer60000: npctalk "I got "+ .prace_bets +" bets. Anyone else?"; end; OnTimer80000: npctalk "The race will start soon. Last chance."; end; OnTimer90000: stopnpctimer; .start = 1; mapannounce "p_track01","Porings, on your marks...",1; sleep 2500; for( .@i = 3; .@i > 0; .@i-- ) { mapannounce "p_track01","..."+ .@i +"...",1; sleep 1000; } donpcevent strnpcinfo(0) +"::OnStartRace"; sleep 1000; mapannounce "p_track01","Gooo!!!",1; end; OnTimer320000: mapwarp "p_track01","prontera",155,180; donpcevent "Poring Race Event::OnPraceEnd"; .prace_winner$ = ""; .start = .prace_bets = 0; donpcevent strnpcinfo(0) +"::OnReturnRace"; end; OnStartRace: callsub L_label, "OnRace"; OnStopRace: callsub L_label, "OnStop"; OnReturnRace: callsub L_label, "OnReturn"; L_label: donpcevent "Metaling#prace3::"+ getarg(0); donpcevent "Poring#prace1::"+ getarg(0); donpcevent "Poporing#prace6::"+ getarg(0); donpcevent "Angeling#prace2::"+ getarg(0); donpcevent "Santa Poring#prace5::"+ getarg(0); donpcevent "Deviling#prace4::"+ getarg(0); if( getarg(0) == "OnStop" && .prace_winner$ != "" ) callsub L_WinRace; end; L_WinRace: mapannounce "p_track01", "The winner is "+ .prace_winner$,1; donpcevent strnpcinfo(0) +"::OnChequeo"; sleep 3000; donpcevent strnpcinfo(0) +"::OnReturnRace"; sleep 10000; mapwarp "p_track01","prontera",155,180; donpcevent "Poring Race Event::OnPraceEnd"; .prace_winner$ = ""; .start = .prace_bets = 0; end; OnChequeo: for( .@i = 0 ; .@i < getarraysize( .prace_bidders ); .@i++ ) { if( attachrid( .prace_bidders[.@i] ) && getstrlen( @prace_winner$ ) ) { dispbottom "The winner is "+ .prace_winner$ +" and you have bet for "+ @prace_winner$ +"."; if( @prace_winner$ == .prace_winner$ ) { dispbottom "You have won!"; mapannounce "p_track01"," Congratulations! "+ strcharinfo(0) +" has won!",1; set #EvtPts,#ChaosPoints,+10; dispbottom "You gained 10 Chaos Points."; emotion 21,1; } else { dispbottom "You have lost."; emotion 28,1; } @prace_winner$ = ""; } } deletearray .prace_bidders; end; OnInit: .zeny_req = 100000; .item_gained = 7539; .item_num_gain = 20; setarray .monst_$,"Poring","Angeling","Metaling","Deviling","Santa Poring","Poporing","None"; .menu_$ = implode( .monst_$, ":" ); end; function checkevent { getmapxy .@mapname$, .@x1, .@y, 1, "Poring#prace1"; getmapxy .@mapname$, .@x2, .@y, 1, "Angeling#prace2"; getmapxy .@mapname$, .@x3, .@y, 1, "Metaling#prace3"; getmapxy .@mapname$, .@x4, .@y, 1, "Deviling#prace4"; getmapxy .@mapname$, .@x5, .@y, 1, "Santa Poring#prace5"; getmapxy .@mapname$, .@x6, .@y, 1, "Poporing#prace6"; .@t = ( .@x1 + .@x2 + .@x3 + .@x4 + .@x5 + .@x6 ) != 58 * 6; return .@t; } } //----------------------------------- // Racer NPC's //----------------------------------- - script pori_race -1,{ OnRace: initnpctimer; end; OnStop: stopnpctimer; end; OnReturn: sleep 1000; while( strnpcinfo(1) != .monst$[ .@i ] ) .@i++; movenpc strnpcinfo(3), 58, .walk_t[.@i]; end; OnTimer1100: getmapxy .@mapname$,.@x,.@y,1, strnpcinfo(3); if( rand(100) < .prace_random ) npcwalkto .@x-1, .@y; .@r = rand( .prace_random2 ); if ( .@x -1 == 29 ) { while( strnpcinfo(1) != .monst$[ .@i ] ) .@i++; set getvariableofnpc( .prace_winner$, "Bidder#prace0" ), .monst$[ .@i ]; emotion 29; donpcevent "Bidder#prace0::OnStopRace"; end; } stopnpctimer; setnpctimer .@r; startnpctimer; end; OnInit: deletearray .walk_t; deletearray .monst$; setarray .walk_t, 38, 36, 34, 32, 30, 28; setarray .monst$, "Poring", "Angeling", "Metaling", "Deviling", "Santa Poring", "Poporing"; .prace_random = 70; .prace_random2 = 600; end; } p_track01,58,38,2 duplicate(pori_race) Poring#prace1 1002 p_track01,58,36,2 duplicate(pori_race) Angeling#prace2 1096 p_track01,58,34,2 duplicate(pori_race) Metaling#prace3 1613 p_track01,58,32,2 duplicate(pori_race) Deviling#prace4 1582 p_track01,58,30,2 duplicate(pori_race) Santa Poring#prace5 1062 p_track01,58,28,2 duplicate(pori_race) Poporing#prace6 1031 p_track01,78,42,0 warp p_track002 1,3,prontera,142,170 p_track01 mapflag nobranch p_track01 mapflag noicewall p_track01 mapflag nomemo p_track01 mapflag noreturn p_track01 mapflag noteleport p_track01 mapflag nowarpto p_track01 mapflag nowarp p_track01 mapflag pvp off p_track01 mapflag nosave
  5. You can create a simple npc where you talk to it and it will start the WoE, though you'll need to be online to do it. I could script something like that, but i'm quite busy so not right now.
  6. Yup, hindi po ganun ka dali. Some might be present sa forums if you look, pero i bet iba is exclusive nasa server lang nila.
  7. Then you'll have to replicate the stuff they have made, how the npcs / events or items are made. Meaning i-sscript mo pa yun, mag dedebugging ka pa and more. Also, if that wro.grf isn't protected you can "borrow" their stuff as well.
  8. Scaraba Hole is kinda good imo..
  9. prontera,149,175,5 script Refine Master 851,{ disable_items; if (countitem(6238) || countitem(6228) || countitem(6229) || countitem(6230) || countitem(6231) || countitem(6456)) set .@bWeaponUp,1; if (countitem(6239) || countitem(6232) || countitem(6233) || countitem(6234) || countitem(6235) || countitem(6457)) set .@bArmorUp,1; if (!.@bWeaponUp && !.@bArmorUp) { mes "[Refine Master]"; mes "Hello!"; mes "What's up?"; mes "I'm a specialist"; mes "for refining items,"; mes "but I don't work anymore."; next; switch(select("I'll go on my way.:Hmm... this makes me curious.")) { case 1: mes "[Refine Master]"; mes "Take care, adventurer."; close; case 2: mes "[Refine Master]"; mes "Actually, I sometimes provide refine services for adventurers with a ^006400Refine Ticket^000000..."; mes "Bye bye~!"; close; } } emotion e_gasp; mes "[Refine Master]"; mes "Greetings!"; mes "I can refine an item up to the ^006400same level as your ticket^000000."; mes "You don't have to worry! There's no chance of breaking your item."; next; if(select("I'll come back later.:Refine item with ticket.") == 1) { mes "[Refine Master]"; mes "Okay."; mes "You can come again later."; close; } mes "[Refine Master]"; mes "Which equipment would you like to refine?"; next; setarray .@position$[1],"Head upper","Armor","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head middle","Head lower"; set .@menu$,""; for(set .@i,1; .@i<=10; set .@i,.@i+1) set .@menu$, .@menu$+((getequipisequiped(.@i))?getequipname(.@i):.@position$[.@i]+"- [Empty]")+":"; set .@part, select(.@menu$); if (!getequipisequiped(.@part)) { mes "[Refine Master]"; mes "You have to equip the item you want to refine."; close; } if (!getequipisenableref(.@part)) { emotion e_otl; mes "[Refine Master]"; mes "Oh, I'm sorry."; mes "This item is impossible to refine."; close; } switch(getequipweaponlv(.@part)) { default: case 0: setarray .@tickets[0],6457,6235,6234,6233,6232,6239; setarray .@levels[0],5,6,7,8,9,11; set .@type$,"Armor"; set .@check,.@bArmorUp; break; case 1: case 2: case 3: case 4: setarray .@tickets[0],6456,6231,6230,6229,6228,6238; setarray .@levels[0],5,6,7,8,9,11; set .@type$,"Weapon"; set .@check,.@bWeaponUp; break; } if (!.@check) { emotion e_dots; mes "[Refine Master]"; mes "If you want to refine this ^006400"+.@type$+"^000000, please come along with ^006400"+.@type$+" Refine Ticket^000000."; mes "See you later!"; close; } switch(getequiprefinerycnt(.@part)){ case 4: //+4 item set .@ticket_id,.@tickets[0]; mes "[Refine Master]"; mes "I will require 1x"+getitemname(.@tickets[0]); mes "to refine this item."; menu "Give him ticket",-; break; case 5: //+5 item set .@ticket_id,.@tickets[1]; mes "[Refine Master]"; mes "I will require 1x"+getitemname(.@tickets[1]); mes "to refine this item."; menu "Give him ticket",-; break; case 6: set .@ticket_id,.@tickets[2]; mes "[Refine Master]"; mes "I will require 1x"+getitemname(.@tickets[2]); mes "to refine this item."; menu "Give him ticket",-; break; case 7: set .@ticket_id,.@tickets[3]; mes "[Refine Master]"; mes "I will require 1x"+getitemname(.@tickets[3]); mes "to refine this item."; menu "Give him ticket",-; break; case 8: set .@ticket_id,.@tickets[4]; mes "[Refine Master]"; mes "I will require 1x"+getitemname(.@tickets[4]); mes "to refine this item."; menu "Give him ticket",-; break; case 9: set .@ticket_id,.@tickets[5]; mes "[Refine Master]"; mes "I will require 1x"+getitemname(.@tickets[5]); mes "to refine this item."; menu "Give him ticket",-; break; case 10: mes "[Refine Master]"; mes "I'm sorry but this has reached its limit."; close; end; default: mes "[Refine Master]"; mes "I can't refine this."; close; end; } mes "[Refine Master]"; mes "Great."; mes "As you wish!"; mes "I have my own special way to refine..."; mes ".......ka boom!"; specialeffect EF_SUI_EXPLOSION; if (countitem(.@ticket_id)) delitem .@ticket_id,1; else { next; mes "[Refine Master]"; mes "You don't have the item I need."; mes "Go away!"; close; } successrefitem .@part, next; emotion e_ho; mes "[Refine Master]"; mes "Alright, here it is~"; mes "Well, ^0000FF"+strcharinfo(0)+"^000000!"; mes "Congratulations on your shining "+.@type$+"."; mes "You look GREAT!"; mes "Farewell~!"; close; }
  10. More info? o_o there's tons of race to 99 scripts in the forums, try using the search function.
  11. Pinoy ka pala Radian xD If meron ka po copy ng files nila (like npc files, db files etc etc) then pwede mong ma gaya yun. You'll just need to follow yung instructions pano mag set up ng local host na server.
  12. I'll try to make this after I'm done with the other guy's request. Seems to be a fun event so I'll give it a try. DISCLAIMER: Don't blame me if I can't do it, I'm just a newbie :x -- Update: Well it just became a more complicated script, I'll try to see what I can do. I'll probably do up until the randomizing part.
  13. Untested: yuno,177,188,3 script Refine Master 851,{ disable_items; if (countitem(6238) || countitem(6228) || countitem(6229) || countitem(6230) || countitem(6231) || countitem(6456)) set .@bWeaponUp,1; if (countitem(6239) || countitem(6232) || countitem(6233) || countitem(6234) || countitem(6235) || countitem(6457)) set .@bArmorUp,1; if (!.@bWeaponUp && !.@bArmorUp) { mes "[Refine Master]"; mes "Hello!"; mes "What's up?"; mes "I'm a specialist"; mes "for refining items,"; mes "but I don't work anymore."; next; switch(select("I'll go on my way.:Hmm... this makes me curious.")) { case 1: mes "[Refine Master]"; mes "Take care, adventurer."; close; case 2: mes "[Refine Master]"; mes "Actually, I sometimes provide refine services for adventurers with a ^006400Refine Ticket^000000..."; mes "Bye bye~!"; close; } } emotion e_gasp; mes "[Refine Master]"; mes "Greetings!"; mes "I can refine an item up to the ^006400same level as your ticket^000000."; mes "You don't have to worry! There's no chance of breaking your item."; next; if(select("I'll come back later.:Refine item with ticket.") == 1) { mes "[Refine Master]"; mes "Okay."; mes "You can come again later."; close; } mes "[Refine Master]"; mes "Which equipment would you like to refine?"; next; setarray .@position$[1],"Head upper","Armor","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head middle","Head lower"; set .@menu$,""; for(set .@i,1; .@i<=10; set .@i,.@i+1) set .@menu$, .@menu$+((getequipisequiped(.@i))?getequipname(.@i):.@position$[.@i]+"- [Empty]")+":"; set .@part, select(.@menu$); if (!getequipisequiped(.@part)) { mes "[Refine Master]"; mes "You have to equip the item you want to refine."; close; } if (!getequipisenableref(.@part)) { emotion e_otl; mes "[Refine Master]"; mes "Oh, I'm sorry."; mes "This item is impossible to refine."; close; } switch(getequipweaponlv(.@part)) { default: case 0: setarray .@tickets[0],6457,6235,6234,6233,6232,6239; setarray .@levels[0],5,6,7,8,9,11; set .@type$,"Armor"; set .@check,.@bArmorUp; break; case 1: case 2: case 3: case 4: setarray .@tickets[0],6456,6231,6230,6229,6228,6238; setarray .@levels[0],5,6,7,8,9,11; set .@type$,"Weapon"; set .@check,.@bWeaponUp; break; } if (!.@check) { emotion e_dots; mes "[Refine Master]"; mes "If you want to refine this ^006400"+.@type$+"^000000, please come along with ^006400"+.@type$+" Refine Ticket^000000."; mes "See you later!"; close; } switch(getequiprefinerycnt(.@part)){ case 4: //+4 item set .@ticket_id,.@tickets[0]; mes "[Refine Master]"; mes "I will require 1x"+getitemname(.@tickets[0]); mes "to refine this item."; menu "Give him ticket",-; break; case 5: //+5 item set .@ticket_id,.@tickets[1]; mes "[Refine Master]"; mes "I will require 1x"+getitemname(.@tickets[0]); mes "to refine this item."; menu "Give him ticket",-; break; case 6: set .@ticket_id,.@tickets[2]; mes "[Refine Master]"; mes "I will require 1x"+getitemname(.@tickets[0]); mes "to refine this item."; menu "Give him ticket",-; break; case 7: set .@ticket_id,.@tickets[3]; mes "[Refine Master]"; mes "I will require 1x"+getitemname(.@tickets[0]); mes "to refine this item."; menu "Give him ticket",-; break; case 8: set .@ticket_id,.@tickets[4]; mes "[Refine Master]"; mes "I will require 1x"+getitemname(.@tickets[0]); mes "to refine this item."; menu "Give him ticket",-; break; case 9: set .@ticket_id,.@tickets[5]; mes "[Refine Master]"; mes "I will require 1x"+getitemname(.@tickets[0]); mes "to refine this item."; menu "Give him ticket",-; break; case 10: mes "[Refine Master]"; mes "I'm sorry but this has reached its limit."; close; end; default: mes "[Refine Master]"; mes "I can't refine this."; close; end; } mes "[Refine Master]"; mes "Great."; mes "As you wish!"; mes "I have my own special way to refine..."; mes ".......ka boom!"; specialeffect EF_SUI_EXPLOSION; if (countitem(.@ticket_id)) delitem .@ticket_id,1; else { next; mes "Error!"; mes "You don't have the item."; mes "Please report this."; close; } successrefitem .@part, next; emotion e_ho; mes "[Refine Master]"; mes "Alright, here it is~"; mes "Well, ^0000FF"+strcharinfo(0)+"^000000!"; mes "Congratulations on your shining "+.@type$+"."; mes "You look GREAT!"; mes "Farewell~!"; close; }
  14. Fixed by using: setarray .top_name$[.@i],.name$; setarray .top_death[.@i],.death_count;
  15. Actually curious too, what would happen if you try to log in using the server username / password in RO client log in? lol
  16. // Can you use _M/_F to make new accounts on the server? new_account: yes Found in login_athena.conf, find that line and see if it is set, if it is set to no, change to yes, restart your server then log in using _m/_f method when creating an account for the first time. -- If you want to be a GM, you'll have to go inside your database, then proceed to login table, then look for group id for your account and change it to 99
  17. I could, but I'm not that good with SQL yet so might take some time. Also, busy with something in real life, I'll get to it as soon as I can.
  18. Then some of your scripts are leaking. I suggest disabling any other script during WoE, this will heavily affect WoE performance I suppose.
  19. Mind posting the script, or at least where the script says a team won? We can start from there.
  20. How do I go about it? Or would it be better if I just add a new database? But I'd really prefer if I can just limit it to what's already available rather than adding another database.
  21. successrefitem .@part, .@ticket_lv - getequiprefinerycnt(.@part); That is the line why it's causing that. If you just need +1 on every refine ticket, just replace it with successrefitem .@part;
  22. prontera,155,175,5 script Ranking#pvp 123,{ if(getgmlevel() >= 99){ mes "[ Ranking ]"; mes "What do you want to do?"; menu "View Ranking",-,"Reset Ranking",OnResetRanking,"Update Ranking",OnRankingUpdate; } mes "[ Ranking ]"; mes "Top Players - Kills / Deaths"; while(.@i < 10){ mes .@i+1+". "+.top_name$[.@i]+" "+.kill_count[.@i]+" "+.top_death[.@i]; .@i++; } close; end; OnResetRanking: query_sql "DELETE FROM `main`.`char_reg_num` WHERE `key`='kill_count'"; //update this line query_sql "DELETE FROM `main`.`char_reg_num` WHERE `key`='death_count'"; //update this line deletearray .top_name$,getarraysize(.top_name$); deletearray .top_death,getarraysize(.top_death); deletearray .id,getarraysize(.id); deletearray .kill_count,getarraysize(.kill_count); mes "Ranking reset confirmed."; close; end; OnRankingUpdate: mes "Ranking updated."; close2; OnMinute30: OnInit: query_sql(" SELECT `char_id`,`value` FROM `char_reg_num` WHERE `key` = 'kill_count' ORDER BY value DESC LIMIT 10 ",.id,.kill_count); for(set .@i,0; .@i < getarraysize(.id); .@i++){ query_sql(" SELECT `name` FROM `char` WHERE `char_id` = '"+.id[.@i]+"'",.name$); query_sql(" SELECT `value` FROM `char_reg_num` WHERE `key` = 'death_count' AND `char_id` = '"+.id[.@i]+"'",.death_count); setarray .top_name$[.@i],.name$[.@i]; setarray .top_death[.@i],.death_count[.@i]; } end; } Well, the issue with the script is that it does not show the proper output. I suspect it's because of this line: query_sql(" SELECT `char_id`,`value` FROM `char_reg_num` WHERE `key` = 'kill_count' ORDER BY value DESC LIMIT 10 ",.id,.kill_count); But I have no idea how to manipulate the ORDER BY <column name>, will it be more appropriate to just use a new table for this? I hope that there can be a solution. Thanks.
  23. - script PlusOneRefinerOnly -1,{ mes "[ Refiner ]" mes "Provide me with enough items, and I will refine your equipment."; next; mes "[ Refiner ]" setarray .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3"; set .@menu$,""; for( set .@i,1; .@i <= 10; set .@i,.@i+1 ){ if( getequipisequiped(.@i) ) set .@menu$, .@menu$ + .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]"; set .@menu$, .@menu$ + ":"; } set .@part,select(.@menu$); if(!getequipisequiped(.@part)){ mes "[ Refiner ]" mes "You're not wearing"; mes "anything there that"; mes "I can refine."; emotion 6; close; } //Check if the item is refinable... if(!getequipisenableref(.@part)) { mes "[ Refiner ]" mes "I don't think I can"; mes "refine this item at all..."; close; } //Check to see if the items is already +10 if(getequiprefinerycnt(.@part) >= 10) { mes "[ Refiner ]" mes "I can't refine this"; mes "any more. This is as"; mes "refined as it gets!"; close; } set .@refineitemid, getequipid(.@part); // save id of the item set .@refinerycnt, getequiprefinerycnt(.@part); //save refinery count switch(getequipweaponlv(.@part)){ case 0: //Refine Armor set .@price,1; set .@material,7179; break; case 1: //Refine Level 1 Weapon set .@price,1; //This is zeny set .@material,7179; //Proof of Donations, change to something else if you want break; case 2: //Refine Level 2 Weapon set .@price,1; set .@material,7179; break; case 3: //Refine Level 3 Weapon set .@price,1; set .@material,7179; break; case 4: //Refine Level 4 Weapon set .@price,1; set .@material,7179; break; case 5: //Refine other stuff? set .@price,1; set .@material,7179; break; } mes "[ Refiner ]" mes "To refine this I need"; mes "one ^003366"+getitemname(.@material)+"^000000 and"; mes "a service fee of " + .@price + " Zeny."; mes "Do you really wish to continue?"; next; if(select("Yes:No") == 2){ mes "[ Refiner ]" mes "Yeah..."; mes "There's no need to"; mes "rush. Take your time."; close; } if((countitem(.@material) < 1) || (Zeny < .@price)) { mes "[ Refiner ]" mes "You don't seem to have"; mes "enough Zeny or "+getitemname(.@material)+"..."; mes "Go get some more. I'll be"; mes "here all day if you need me."; close; } set Zeny,Zeny-.@price; delitem .@material,1; if(getequipisequiped(.@part) == 0) { // hacker has removed the item (not changed, why?) mes "[ Refiner ]" mes "Look here... you don't have any Items on..."; close; } if(getequiprefinerycnt(.@part) != .@refinerycnt || getequipid(.@part) != .@refineitemid) { // hacker has changed the item mes "[ Refiner ]" Emotion e_an; mes "Wait a second..."; mes "Do you think I'm stupid?!"; mes "You switched the item while I wasn't looking! Get out of here!"; close; } mes "[ Refiner ]" successrefitem .@part; Emotion e_heh; set .@win,rand(1,3); if (.@win == 1) { mes "Perfect!"; mes "Heh heh!"; mes "Once again,"; mes "flawless work"; mes "from the master~"; } else if(.@win == 2) { mes "Success...!"; mes "Yet again, my amazing"; mes "talent truly dazzles"; mes "and shines today."; } else { mes "Heh heh!"; mes "I'm all done."; mes "No doubt, my work is"; mes "to your satisfaction."; mes "Sheer, utter perfection~"; } close; } Credits to: //<?> -o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o \\ // Blacksmith/Card Removal Npc V.2.0 \\ // by Luther \\ // Credit To : Mytzer,TyrNemisis,ShadowMaster and \\ // who ever made the Item Identifyer Deckard Cain. \\ // Whoms Scripts were used in making this npc. \\ // Also ToastOfDoom and Chachi911 for helping Debug it\\ // (V.2.0 Uses the original eAthena Refine Script that\\ //can have its rates configured in the refine_db.txt) \\ // -o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o \\ Since this is a modified version of their refiner
×
×
  • Create New...