Jump to content

Emistry

Forum Moderator
  • Posts

    10018
  • Joined

  • Days Won

    408

Everything posted by Emistry

  1. delay too long? 60,000 seconds?
  2. disable this settings to enable vending near npc conf/battle/player.conf#L174-L176
  3. i think this should do the trick. itemID, ..........., { progressbar "0xFFFFFF", 5; unitskilluseid getcharid(3), "NPC_SELFDESTRUCTION", 1; },{ },{ }
  4. you can try this, i think it should do the trick. prontera,155,181,5 script Sample 4_F_KAFRA1,{ OnRetry: .@guild_id = getcharid(2); query_sql("SELECT `guild_lv` FROM `guild` WHERE `guild_id` = "+.@guild_id, .@guild_lv); if (!.@guild_id || !.@guild_lv) { mes "Guild not found, or kindly retry."; if (.@guild_id) if (select("Retry", "Cancel") == 1) { requestguildinfo(.@guild_id, strnpcinfo(3)+"::OnRetry"); } close; } else if (getguildmasterid(.@guild_id) != getcharid(0)) { mes "You're not guild master."; close; } else if (.@guild_lv >= 50) { mes "Your guild already reached max level."; close; } // increase guild exp if (.@guild_lv <= 1) guildgetexp(100000); if (.@guild_lv <= 2) guildgetexp(400000); if (.@guild_lv <= 3) guildgetexp(900000); if (.@guild_lv <= 4) guildgetexp(1600000); if (.@guild_lv <= 5) guildgetexp(2500000); if (.@guild_lv <= 6) guildgetexp(3600000); if (.@guild_lv <= 7) guildgetexp(4900000); if (.@guild_lv <= 8) guildgetexp(6400000); if (.@guild_lv <= 9) guildgetexp(8100000); if (.@guild_lv <= 10) guildgetexp(10000000); if (.@guild_lv <= 11) guildgetexp(12100000); if (.@guild_lv <= 12) guildgetexp(14400000); if (.@guild_lv <= 13) guildgetexp(16900000); if (.@guild_lv <= 14) guildgetexp(19600000); if (.@guild_lv <= 15) guildgetexp(22500000); if (.@guild_lv <= 16) guildgetexp(25600000); if (.@guild_lv <= 17) guildgetexp(28900000); if (.@guild_lv <= 18) guildgetexp(32400000); if (.@guild_lv <= 19) guildgetexp(36100000); if (.@guild_lv <= 20) guildgetexp(40000000); if (.@guild_lv <= 21) guildgetexp(44100000); if (.@guild_lv <= 22) guildgetexp(48400000); if (.@guild_lv <= 23) guildgetexp(52900000); if (.@guild_lv <= 24) guildgetexp(57600000); if (.@guild_lv <= 25) guildgetexp(62500000); if (.@guild_lv <= 26) guildgetexp(67600000); if (.@guild_lv <= 27) guildgetexp(72900000); if (.@guild_lv <= 28) guildgetexp(78400000); if (.@guild_lv <= 29) guildgetexp(84100000); if (.@guild_lv <= 30) guildgetexp(90000000); if (.@guild_lv <= 31) guildgetexp(96100000); if (.@guild_lv <= 32) guildgetexp(102400000); if (.@guild_lv <= 33) guildgetexp(108900000); if (.@guild_lv <= 34) guildgetexp(115600000); if (.@guild_lv <= 35) guildgetexp(122500000); if (.@guild_lv <= 36) guildgetexp(129600000); if (.@guild_lv <= 37) guildgetexp(136900000); if (.@guild_lv <= 38) guildgetexp(144400000); if (.@guild_lv <= 39) guildgetexp(152100000); if (.@guild_lv <= 40) guildgetexp(160000000); if (.@guild_lv <= 41) guildgetexp(168100000); if (.@guild_lv <= 42) guildgetexp(176400000); if (.@guild_lv <= 43) guildgetexp(184900000); if (.@guild_lv <= 44) guildgetexp(193600000); if (.@guild_lv <= 45) guildgetexp(202500000); if (.@guild_lv <= 46) guildgetexp(211600000); if (.@guild_lv <= 47) guildgetexp(220900000); if (.@guild_lv <= 48) guildgetexp(230400000); if (.@guild_lv <= 49) guildgetexp(240100000); if (.@guild_lv < 50) guildgetexp(250000000); // guild skills. guildskill(10000,1); guildskill(10001,1); guildskill(10002,1); guildskill(10003,3); guildskill(10004,10); guildskill(10005,1); guildskill(10006,5); guildskill(10007,5); guildskill(10008,5); guildskill(10009,5); guildskill(10010,1); guildskill(10011,3); guildskill(10012,1); guildskill(10013,1); guildskill(10014,1); guildskill(10016,5); mes "Done"; close; } it would be more accurate if there was a script command like *getguildinfo that retrieve the guild information.
  5. prontera,155,181,5 script Sample 4_F_KAFRA1,{ mes "Warp to "+.map$+" ?"; if (.item_id_size) { for (.@i = 0; .@i < .item_id_size; .@i++) { mes "> "+.item_qty[.@i]+"x "+getitemname(.item_id[.@i]); if (countitem(.item_id[.@i]) < .item_qty[.@i]) .@failed++; } } if (select("Warp", "Cancel") == 1) { if (.@failed) { mes "You didnt have enough items."; } else { if (.item_id_size) for (.@i = 0; .@i < .item_id_size; .@i++) delitem .item_id[.@i], .item_qty[.@i]; warp .map$, 0, 0; } } close; OnInit: .map$ = "prontera"; setarray .item_id, 501, 502, 503; setarray .item_qty, 100, 200, 300; .item_id_size = getarraysize(.item_id); end; }
  6. // +10 HP for every refines. bonus bMaxHP, (getrefine() * 10); // +10 HP for every 2 refines. bonus bMaxHP, ((getrefine() / 2) * 10); // +10 HP for every 3 refines. bonus bMaxHP, ((getrefine() / 3) * 10); // +10 HP for every 4 refines. bonus bMaxHP, ((getrefine() / 4) * 10); // +10 HP for every 5 refines. bonus bMaxHP, ((getrefine() / 5) * 10);
  7. your max stat are too high and lead to max def and hence you getting damage immune =='
  8. if i am not mistaken about it ... Navi_Mob = { { "abbey01", --> Map Name 20594, --> Unique Code 300, --> Monster Type (300 = Normal Mob, 301 = MVP) 3736588, --> (Not sure) "구울", --> Monster Name 1 "GHOUL", --> Monster Name 2 (Sprite Name) 61, --> Mob Level 3211521 --> (Not sure) }, additional info. https://github.com/HerculesWS/StaffPlugins/blob/master/Haru/naviluagenerator/naviluagenerator.c#L397-L418
  9. that is the solution, apply it to your server as shown in the commit.
  10. you could add additional condition checking such as check if its in town area. if (!getmapflag(strcharinfo(3), mf_town)) nude; nude if char aren't in town.
  11. @JaranSwitch0101 you're obviously did wrong somewhere in your src without following with the diff or did incorrectly, recheck every single lines that you have edit. No point in checking the item_db are using spaces or not, because its irrelevant.
  12. function script omnirefine { .@name$ = getarg(0); /// Custom chances 1 to 20. setarray .@refine_chances[1], 100, 100, 100, 100, 95, 80, 80, 50, 50, 35, 20, 20, 16, 16, 15, 15, 14, 14, 10, 10; /// Equipment position names (Don't edit that order). setarray .@equip_name$[1],"Head","Middle","Lower","Armor","Weapon","Shield","Garment","Shoes","Accessory 1","Accessory 2"; /// Weapon material .@weapon_material = 6438; // Omni-Oridecon .@weapon_material_name$ = "Omni-Oridecon"; /// Armor material .@armor_material = 6439; // Mega-Elunium .@armor_material_name$ = "Mega-Elunium": disable_items; mes "["+ .@name$ +"]"; mes "I am the best Armsmith ever!"; mes "I don't refine with normal, boring materials."; // mes "I only refine items using ^FF0000" + getitemname(.@weapon_material) + "^000000 and FF0000" + getitemname(.@armor_material) + "^000000."; mes "I only refine items using ^FF0000"+.@weapon_material_name$+"^000000 and ^FF0000"+.@armor_material_name$+"^000000."; next; mes "["+ .@name$ +"]"; mes "Anyway, you may use my services if you have any of that materials."; mes "What do you want me to refine?"; next; setarray .@equip_pos[1],EQI_HEAD_TOP,EQI_HEAD_MID,EQI_HEAD_LOW,EQI_ARMOR,EQI_HAND_R,EQI_HAND_L,EQI_GARMENT,EQI_SHOES,EQI_ACC_R,EQI_ACC_L; for (.@i = 1; .@i <= getarraysize(.@equip_pos); ++.@i) { if (getequipisequiped(.@equip_pos[.@i])) .@menu$ += getequipname(.@equip_pos[.@i]); else .@menu$ += "^777777" + .@equip_name$[.@i] + " - " + "[Unavailable]" + "^000000"; .@menu$ += ":"; } .@part = .@equip_pos[select(.@menu$)]; .@equip_id = getequipid(.@part); .@refinerycnt = getequiprefinerycnt(.@part); if (!getequipisequiped(.@part)) { //custom check mes "["+ .@name$ +"]"; mes "You're not wearing"; mes "anything there that"; mes "I can refine."; emotion ET_FRET; close; } if (!getequipisenableref(.@part)) { mes "["+ .@name$ +"]"; mes "I don't think I can"; mes "refine this item at all..."; close; } if (.@refinerycnt >= 20) { //custom check mes "["+ .@name$ +"]"; mes "I can't refine this"; mes "any more. This is as"; mes "refined as it gets!"; close; } if (getiteminfo(.@equip_id,2) == 5) { .@material = .@weapon_material; .@material_name$ = .@weapon_material_name$; } else if (getiteminfo(.@equip_id,2) == 4) { .@material = .@armor_material; .@material_name$ = .@armor_material_name$; } if ((getequipweaponlv(.@part) >= 1) && (getequipweaponlv(.@part) <= 4)) { .@article$ = "a"; .@type$ = "weapon"; } else { .@article$ = "an"; .@type$ = "armor"; } mes "["+ .@name$ +"]"; mes "Hmm " + .@article$ + " " + .@type$ + ", is that ok?"; mes "If you want to refine this " + .@type$ + ","; mes "I will need 1 ^FF0000" + .@material_name$ + "^000000."; mes "Are you sure you want to continue?"; next; if(select("Yes:No") == 2){ mes "["+ .@npc_name$ +"]"; mes "Hm... if you mind... never mind..."; close; } while (1) { .@refinerycnt = getequiprefinerycnt(.@part); if (countitem(.@material) < 1) { mes "["+ .@name$ +"]"; mes "Hm. You don't seem to have enough "+.@material_name$+"."; mes "Please come back when you have them."; close; } delitem .@material,1; // anti-hack if (callfunc("F_IsEquipIDHack", .@part, .@equip_id) || callfunc("F_IsEquipRefineHack", .@part, .@refinerycnt)) { mes "["+ .@name$ +"]"; emotion ET_FRET; 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; } if (.@refine_chances[.@refinerycnt+1] > rand(100)) { mes "["+ .@name$ +"]"; mes "Clang! Clang! Clang! Clang!"; successrefitem .@part; next; emotion ET_BEST; mes "["+ .@name$ +"]"; mes "Good! Succes!!!"; mes "I am the best Armsmith."; next; } else { if (rand(100) < 80) { mes "["+ .@name$ +"]"; mes "Clang! Clang! Clang! Clang!"; downrefitem .@part,0; // Only for the fail refinement animation next; emotion (!rand(5))?ET_MONEY:ET_HUK; mes "["+ .@name$ +"]"; mes "Ahhh!!!"; next; mes "["+ .@name$ +"]"; mes "Oh my god!"; mes "The upgrade level has dropped..."; } else { mes "["+ .@name$ +"]"; mes "Clang! Clang! Clang!"; downrefitem .@part,0; // Only for the fail refinement animation next; emotion (!rand(5))?ET_MONEY:ET_HUK; mes "["+ .@name$ +"]"; mes "Hmmm!"; next; mes "["+ .@name$ +"]"; mes "Oh my! I've failed to refine stuff..."; mes "I didn't mean it!"; } mes "I could have made a mistake even though I am the best Armsmith ever."; mes "It just wasn't meant to be."; next; mes "["+ .@name$ +"]"; mes "I will do a better job next time! Don't worry!"; next; } mes "["+ .@name$ +"]"; mes "Do you want to refine again?"; next; if(select("Yes:No") == 2){ mes "["+ .@npc_name$ +"]"; mes "Hm... if you mind... never mind..."; close; } } return; } prt_in,54,58,3 script Refiner#1 813,{ callfunc "omnirefine","^0000FFBlessed Refiner^000000"; end; } try this, you just have to find all and rename it... or save the name to a variable, and use that variable to display the name
  13. try this https://pastebin.com/RCqBbTc1
  14. https://pastebin.com/urEAkcLB
  15. i believe your script already hit some error like infinity loop since you removed this line from the script. // sleep 100; uncomment it
  16. if i recall correctly, monster drop are recorded in picklog as well with the monster ID and item ID with the action of drop (D). @n0tttt nice try, didnt realize there exists a script command for getareadropitem. but the script wont work for autoloot.
  17. you didnt have the sprite for xmas / summer Check your kRO grf, if doesn't exists then download from other sources and add to your grf.
  18. set the cells of the map to water cell.
  19. remove the char deletion delay? conf/char_athena.conf#L168-L171 delete a char through SQL aren't recommended, unless you're familiar with which other tables also related with it and delete the data from those other table too.
  20. none, currently you cant retrieve the info of item dropped when you killed a monster using the OnNPCKillEvent... you could edit the source to have it store the item info when the monster drop, then retrieve it when it execute the OnNPCKillEvent.
  21. restart server, i dont recall there are any command for you to reload the client cash shop if you ever updated. reloadscript are only possible if your cash shop are write as npc script.
  22. ensure you didnt accidentally edit anything at the end of that line, especially unicode that you're not aware of. you could just rewrite the whole line and save it again or remove anything that exists at the end of that line.
  23. the shop shall restock every day npc/re/merchants/eden_market.txt#L83-L121
×
×
  • Create New...