Jump to content

Skorm

Forum Moderator
  • Posts

    1282
  • Joined

  • Last visited

  • Days Won

    41

Everything posted by Skorm

  1. Maybe like this? - script hold -1,{ OnInit: bindatcmd("hold", strnpcinfo(3)+"::OnHold"); end; OnHold: if ( !@Hold ) { set @Hold, 1; message strcharinfo(0), "Hold mode is ON."; pcblockmove getcharid(3), 1; } else { set @Hold, 0; message strcharinfo(0), "Hold mode is OFF."; pcblockmove getcharid(3), 0; } }
  2. - script item_get -1,{ OnPCKillEvent: getitem 501, 10; }
  3. Sounds like a client problem are you using the correct exe with packetver?
  4. I'm glad to see people are taking interest in this... I really need to just remake the whole thing... It's just a mess. In the process of debugging and optimizing it just got really convoluted.
  5. I imagine it's because your missing RixSquirrel_10.eot font. Btw I see your avatar and always think it's Annie ~... *sigh*
  6. Ive add code box through mobile but i recommend reposting the code to preserve tabs.
  7. Yeah I like that one. When I first learned of it I couldn't stop listening to it xD https://soundcloud.com/maxoelectronic/h-o-n-e-y-b-e-l-l
  8. Just sell the items you want to convert to cashpoints to this npc he also sells the items for cashpoints to convert them back. - shop exg_exp -1,501:50. prontera,100,100,5 script Exchanger Express 100,{ callshop "exg_exp",0; npcshopattach "exg_exp"; end; OnBuyItem: setarray .@choice$, "@bought_", "bought", "-1", "@item"; if( !checkweight2(getd(.@choice$+"nameid"),getd(.@choice$+"quantity")) ) { mes "I'm sorry but purchasing this many items would put you over weight!"; close; } OnSellItem: if( !getarraysize(.@choice$) ) setarray .@choice$, "@sold_", "sold", "1", "@delitem"; .@len = getarraysize(getd(.@choice$+"nameid")); for ( .@i = 0; .@i < .@len; .@i++ ) { if( .@choice$[1] == "sold" ) { if ( countitem(@sold_nameid[.@i]) < @sold_quantity[.@i] || @sold_quantity[.@i] <= 0 ) { mes "Something went wrong!"; close; } } else { if ( @bought_quantity[.@i] <= 0 ) { mes "Something went wrong..."; close; } } for ( .@a = 0; .@a < .len; .@a = .@a + 2 ) { if( getd(.@choice$+"nameid["+.@i+"]") == .item_base[.@a] ) { if ( #CASHPOINTS < .item_base[.@a+1] * @bought_quantity[.@i] && .@choice$[1] != "sold" ) { mes "You have insufficient cashpoints."; close; } atcommand .@choice$[3]+" "+.item_base[.@a]+" "+getd(.@choice$+"quantity["+.@i+"]"); .@cashpoints = ( getd(.@choice$+"quantity["+.@i+"]") * .item_base[.@a+1] ) * atoi(.@choice$[2]); #CASHPOINTS = #CASHPOINTS + .@cashpoints; dispbottom getitemname(.item_base[.@a]) +" x"+ getd(.@choice$+"quantity["+.@i+"]") +" "+ .@choice$[1] +" for "+ .@cashpoints +" CASHPOINTS!"; } } } deletearray getd(.@choice$+"quantity"); deletearray getd(.@choice$+"nameid"); mes "Deal completed."; close; OnInit: setarray .item_base, 7539, 3, 7227, 5, 671, 10; .len = getarraysize(.item_base); npcshopdelitem "exg_exp",501; for ( .@a = 0; .@a < .len; .@a = .@a + 2 ) npcshopadditem "exg_exp",.item_base[.@a],.item_base[.@a+1]; }
  9. Skorm

    Resting System

    Perhaps something like this? http://rathena.org/board/topic/93779-hourly-rewards-version-2
  10. Skorm

    ANTI DL IP

    prontera,102,102,3 script IP_WARP 45,3,3,{ end; OnTouch: if( getcharip() == "127.0.0.1" ) warp "prontera",0,0; end; }
  11. And you're sure you have /effect enabled? It works fine for me what emulator are you using?
  12. https://www.youtube.com/watch?v=MoQZkIzIPgk&feature=youtu.be
  13. - script announcer#2 -1,{ OnClock1900: // This label is triggered automatically at the corresponding time. OnClock2300: // Same with this label. .@event$ = strnpcinfo(0)+"::OnBossDead"; // Setting .@event$ now equals announcer#2::OnBossDead. if( mobcount( "pvp_y_1-2",.@event$ ) ) // Count the amount of monsters with the event label .@event$. killmonster "pvp_y_1-2",.@event$; // If they exist we kill them this is so there will only be one spawned at a time. monster "pvp_y_1-2",0,0,"Ifrit",1832,1,.@event$; // Now we spawn a new mob with the event label .@event$ on pvp_y_1-2. announce "IFRIT HAS SPAWNED IN THE PVP ARENA!",bc_blue|bc_all; // And announce that the mob was spawned. OnBossDead: // This is a dummy label to avoid warnings/errors. }
  14. Something like this would also work. prontera,102,102,3 script SpecialEffect 66,{ mes "Done"; close; OnInit: OnTimer500: specialeffect 70; initnpctimer; }
  15. Skorm

    Need Help!

    if ( strcharinfo(3) == "ordeal_3-2" ) { bonus bDelayRate,-100; }
  16. Hmm, something like this would probably work too. - script size_changer -1,{ OnPCLoginEvent: if( my_size ) atcommand "@size "+my_size; end; OnSizeMe: my_size = atoi( .@atcmd_parameters$ ); if( my_size > 2 || my_size < 0 ) my_size = 0; atcommand "@size "+my_size; end; OnInit: bindatcmd "size","size_changer::OnSizeMe",0,99; }
  17. When are we going to see a Tokei's client. :)

  18. If you enabled the switch to getitem2 there was a problem with that option. It's fixed now, but I'm not really sure why custom items aren't working for you. I don't think it has anything todo with the script.
  19. prontera,100,100,5 script ticket_refine 100,{ mes .npc$; mes "Which item would you like to refine?"; next; while( .@a++ <= .e_len ) { .@b = .@a -1; if( .eqpl[ .@b ] ) { if( getequipid( .@a ) > -1 ) .@menu$ = .@menu$ + .eqp$[ .@b ]+" - [^0000FF"+getitemname( getequipid( .@a ) )+"^000000]:"; else .@menu$ = .@menu$ + "^adb4be"+.eqp$[ .@b ]+" - [Empty]^000000:"; } else .@menu$ = .@menu$ + ":"; } .@menu = select( .@menu$ ); .@eq_loc = .eqpl[ .@menu -1 ]; .@eq_itm = getequipid( .@eq_loc ); .@eq_ref = getequiprefinerycnt( .@eq_loc ); if( .@eq_itm <= 0 ) { mes .npc$; mes "Hmm, I don't think you have anything equipped there."; close; } if( !getequipisenableref( .@eq_loc ) && .chk_rf_able ) { mes .npc$; mes "Hmm, this item doesn't seem to be refine-able."; close; } if( .@eq_ref < .ref_cap ) { mes .npc$; mes "Sorry but I don't refine items that so weak. Come back when it's at least +"+.ref_cap+"."; close; } mes .npc$; mes "Input desired refine."; next; switch( input( .@ds_ref, (( .@eq_ref < .min_ref )? .min_ref : .@eq_ref+1 ), .max_ref ) ) { case -1: mes .npc$; if( .@eq_ref < .min_ref ) mes "I do not refine items lower than "+.min_ref+"."; else mes "This item can not be refined lower than "+(.@eq_ref+1)+"."; close; case 1: mes .npc$; mes "Items can not be refined above "+.max_ref+"!"; close; default: } .@nw_ref = .@ds_ref - .@eq_ref; for( .@c = .@eq_ref; .@c < .c_len && .@c < .@ds_ref; .@c++ ) .@tk_cost = .@tk_cost + .cost[.@c]; mes .npc$; mes "This new refine will cost you "+.@tk_cost+" "+getitemname(.tk_id)+"(s). Do you accept?"; next; if( select("Yes:No") == 2 ) { mes .npc$; mes "Alright, thanks anyways, goodbye!"; close; } if( .chk_rf_prct ) { mes .npc$; mes "There is a chance that this item will break! Do you still accept?"; next; if( select("Yes:No") == 2 ) { mes .npc$; mes "Alright, that's probably for the best!"; close; } } if( countitem(.tk_id) < .@tk_cost ) { mes .npc$; mes "I'm sorry but you don't have enough tickets for that."; close; } if( .@eq_itm != getequipid( .@eq_loc ) || .@eq_ref != getequiprefinerycnt( .@eq_loc ) ) { mes .npc$; mes "Something went wrong! Aborting!"; close; } if( .chk_rf_gtim ) { .@card1 = getequipcardid( .@eq_loc, 0 ); .@card2 = getequipcardid( .@eq_loc, 1 ); .@card3 = getequipcardid( .@eq_loc, 2 ); .@card4 = getequipcardid( .@eq_loc, 3 ); } while( (.@tmp_ref = getequiprefinerycnt( .@eq_loc )) < .@ds_ref && .@tmp_ref < .c_len ) { if( .chk_rf_prct && getequippercentrefinery(.@eq_loc) <= rand(101) ) { failedrefitem( .@eq_loc ); mes "Ahh! I'm soooo sorry but your item broke!"; close; } if( !.@h ) { successrefitem( .@eq_loc ); if( .chk_rf_gtim ) { delequip(.@eq_loc); getitem2 .@eq_itm, 1, 1, .@ds_ref, 0, .@card1, .@card2, .@card3, .@card4; equip(.@eq_itm); .@h = 1; } } .@tmp_ref2 = getequiprefinerycnt( .@eq_loc ); if( .@tmp_ref == .@tmp_ref2 ) break; delitem .tk_id, .cost[ .@tmp_ref ]; } mes .npc$; mes "All done thanks for stopping bye!."; close; OnInit: .npc$ = "[ Ticket Refiner ]"; .tk_id = 674; setarray .cost, // Ticket cost per level. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1~10 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 11~20 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5; // 21~31 .ref_cap = 10; // An item must be at least this refine before it can be refined by this npc. 0 disabled. .max_ref = 31; // This is the max refine. 0 disabled. .min_ref = 10; // This is the min refine. 0 disabled. .chk_rf_able = 1; // Check if the item is refine-able? 0 disabled. .chk_rf_prct = 0; // Check refine-able percentages? 0 disabled. .chk_rf_gtim = 0; // The npc will switch to getitem if the refine cap is too high. 0 disabled. setarray .eqp$, "Upper Headgear", "Armor", "Left Hand", "Right Hand", "Garment", "Shoes", "Accessory1", "Accessory2", "Mid Headgear", "Low Headgear"; setarray .eqpl, //Set EQI 0 to disable slot. EQI_HEAD_TOP, EQI_ARMOR, EQI_HAND_L, EQI_HAND_R, EQI_GARMENT, EQI_SHOES, EQI_ACC_L, EQI_ACC_R, EQI_HEAD_MID, EQI_HEAD_LOW; .e_len = getarraysize( .eqp$ ); .c_len = getarraysize( .cost ); } About the other thing in the item script just do... doevent "ticket_refine::OnGoNPCEvent"; getitem 674, 1;
  20. You put it on the mithril coin? And made it usable? because the refine doesn't take the mithril coins unless the player accepts.
  21. Replace: prontera,100,100,5 script ticket_refine 100,{ With: - script ticket_refine -1,{ OnGoNPCEvent: In the itemscript put: doevent "ticket_refine::OnGoNPCEvent";
×
×
  • Create New...