Jump to content

Emistry

Forum Moderator
  • Posts

    10018
  • Joined

  • Days Won

    408

Everything posted by Emistry

  1. this mapflag doesn't exists in your emulator or you didnt defined it as a constant. mf_noguildstorage
  2. you could also try something like this. a more simpler approach. // add more line if needed. // .@item_id[getarraysize(.@item_id)] = func_ItemCategory(<item_id_list>); prontera,155,181,5 script Sample 4_F_KAFRA1,{ function func_ItemCategory { .@getargcount = getargcount(); if (.@getargcount) { for (.@i = 0; .@i < .@getargcount; .@i++) { .@menu$ = .@menu$ + getitemname(getarg(.@i)) + ":"; } .@i = select(.@menu$) - 1; return getarg(.@i, 0); } return; } .@item_id[getarraysize(.@item_id)] = func_ItemCategory(4001, 4002, 4003); // item 1 .@item_id[getarraysize(.@item_id)] = func_ItemCategory(4011, 4012, 4013); // item 2 .@item_id[getarraysize(.@item_id)] = func_ItemCategory(4021, 4012, 4023); // item 3 .@item_id[getarraysize(.@item_id)] = func_ItemCategory(4031, 4022, 4033); // item 4 .@size = getarraysize(.@item_id); mes "Check card list:"; for (.@i = 0; .@i < .@size; .@i++) { if (.@item_id[.@i]) mes "> "+getitemname(.@item_id[.@i]); } if (select("Confirm", "Cancel") == 1) { for (.@i = 0; .@i < .@size; .@i++) { if (.@item_id[.@i]) getitem .@item_id[.@i], 1; } } close; }
  3. you could also do like this. if (isequippedcnt(1292,13071,18112,21000) <= 0) { message strcharinfo (0), "You have not equipped any Upg weapon"; } else if (countitem (6240) < 1 || countitem (984) < 1) { message strcharinfo (0), "You need some ores so I can upgrade your weapon"; } else { // upgrage... }
  4. you need to reset the destination coordinate so that it could keep re-roll a new destination. odin_tem03,276,236,3 script Valkyrie Eir 1751,{ mes "Hello"; close; OnInit: npcspeed 200; OnTimer13000: set $valk_walkx,rand(100,299); //random x on map set $valk_walky,rand(100,230); //random y on map initnpctimer; end; OnTimer2000: OnTimer10000: npcwalkto $valk_walkx, $valk_walky; end; }
  5. you can also try something like this... prontera,155,181,5 script Sample 4_F_KAFRA1,{ callfunc("F_ShuffleNumbers", 0, getarraysize(.array$) - 1, .@output, .menu_count); for (.@i = 0; .@i < .menu_count; .@i++) .@menu$ = .@menu$ + .array$[.@output[.@i]] + ":"; .@i = select(.@menu$) - 1; mes "Selected "+.array$[.@output[.@i]]; close; OnInit: .menu_count = 2; setarray .array$, "Kill Mantis", "Kill Bees", "Kill Soils", "Kill Porings"; end; } but you will need this function function script F_ShuffleNumbers { deletearray getarg(2); .@static = getarg(0); .@range = getarg(1) +1 - .@static; .@count = getarg(3, .@range); if (.@range <= 0 || .@count <= 0) return 0; if (.@count > .@range) .@count = .@range; for (.@i = 0; .@i < .@range; ++.@i) .@temparray[.@i] = .@i; for (.@i = 0; .@i < .@count; ++.@i) { .@rand = rand(.@range); set getelementofarray( getarg(2), .@i ), .@temparray[.@rand] + .@static; .@temparray[.@rand] = .@temparray[--.@range]; } return .@count; }
  6. try this prontera,100,100,4 script Champions Room 100,{ .@guild = getcharid(2); mes "[Champions Room]"; for(.@i = 0; .@i < .castle_size; .@i++) { .@winner = getcastledata(.castles$[.@i],CD_GUILD_ID); if(.@winner && .@winner == .@guild) { mes "Welcome to the Champions Hall!"; mes "What do you want?"; next; switch(select( "- Enter", "- Information", "Leave" )) { case 1: mes "[Champions Room]"; mes "I'll take you there!"; close2; warp "sec_in01",167,37; end case 2: mes "[Champions Room]"; mes "There you will find exclusive quests."; break; default: mes "[Champions Room]"; mes "Come back when you need"; break; } close; } } mes "Sorry, only members of the clans that have conquered the castles can enter!"; close; OnInit: setarray .castles$[0], "prtg_cas01","prtg_cas02","prtg_cas03","prtg_cas04","prtg_cas05", "payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05", "gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05", "aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05", "arug_cas01","arug_cas02","arug_cas03","arug_cas04","arug_cas05", "schg_cas01","schg_cas02","schg_cas03","schg_cas04","schg_cas05"; .castle_size = getarraysize(.castles$); end; }
  7. prontera,155,181,5 script Sample 4_F_KAFRA,{ end; OnAgitStart: .woe_timer_1 = gettimetick(2) + 3600; // 1 hour WOE FE donpcevent strnpcinfo(3)+"::OnCountdown"; end; OnAgitStart2: .woe_timer_2 = gettimetick(2) + 3600; // 1 hour WOE SE donpcevent strnpcinfo(3)+"::OnCountdown"; end; OnCountdown: .@gettimetick = gettimetick(2); if (.woe_timer_1 > .@gettimetick) .@string$ = .@string$ + "(FE: "+(.woe_timer_1 - .@gettimetick)+") "; if (.woe_timer_2 > .@gettimetick) .@string$ = .@string$ + "(SE: "+(.woe_timer_2 - .@gettimetick)+") "; if (.@string$ != "") { .@string$ = "WOE " + .@string$; sleep 1000; donpcevent strnpcinfo(3)+"::OnCountdown"; } end; }
  8. also known as "GM menu" the extra menu that shown when you right click on the object.
  9. cutin .Pic$[.@g],4; change to cutin sprintf("Daily_%02d_%d", .@g, gettime(6)), 4;
  10. he probably killed those monster using GM commands.
  11. configure the mininum refine for each ores refer the setting and configure the refine rate.
  12. if(sd->status.base_level >= 99 && pc_readglobalreg(sd, add_str("noexp")) == 1) base_exp = 0;
  13. https://github.com/HerculesWS/Hercules/pull/2432 how they lock the src code when its a public repository lol
  14. try 4117,Side_Winder_Card,Sidewinder Card,6,20,,10,,,,,,,,2,,,,,{ addtoskill "TF_DOUBLE",1,2; bonus bDoubleRate,5; },{},{}
  15. prontera,155,181,5 script PVP Room 4_F_KAFRA1,{ for (.@i = 0; .@i < .size; .@i++) .@menu$ += .name$[.@i] + "[ "+getmapusers(.map$[.@i])+" ]" + ":"; .@i = select(.@menu$) - 1; warp .map$[.@i], 0, 0; end; OnInit: setarray .name$, "Title 1", "Title 2", "Title 3", "Title 4", "Title 5", "Title 6"; setarray .map$, "pvp_map_1", "pvp_map_2", "pvp_map_3", "pvp_map_4", "pvp_map_5", "pvp_map_6"; .size = getarraysize(.map$); initnpctimer; OnTimer5000: .index = (.index % .size); delwaitingroom; waitingroom .name$[.index] + "[ "+getmapusers(.map$[.index])+" ]", 0; .index++; initnpctimer; end; } try
  16. maybe something like this ? prontera,155,181,5 script Sample 4_F_KAFRA1,{ .@current_aid = getcharid(3); .@sql$ = "SELECT c.`account_id`,c.`name`,c.`online`, SUM(ISNULL(i.`amount`, 0)) " + "FROM `char` c " + "INNER JOIN `inventory` i ON c.`char_id` = i.`char_id` AND i.`nameid` IN (21026, 210267) " + "WHERE c.`account_id` IN (SELECT `account_id` FROM `login` WHERE `level` > 0) " // + "AND c.`online` = 1 " + "GROUP BY i.`char_id` " + "ORDER BY c.`name`"; .@size = query_sql(.@sql$, .@aid, .@name$, .@online, .@count); mes "Found "+.@size+" Record(s)"; for (.@i = 0; .@i < .@size; .@i++) { if (.@online[.@i]) { if (attachrid(.@aid[.@i])) .@count[.@i] = (countitem(21026) + countitem(210267)); attachrid(.@current_aid); } mes "^0000FF"+(.@i+1) +". ^007700"+ .@name$[.@i] +" "+(.@count[.@i] ? "(VIP)" : "" )+" - ^007700"+(.@online[.@i] ? "Online":"Offline" )+"^000000"; } close; } it shall include offline players too.
  17. another option for invisible npc, change the NPC sprite into -1 or 111 or 844, but the npc mostly will remain clickable depend on which sprite you selected.
  18. https://rathena.org/board/topic/118628-grf-encryption-file-not-found/
  19. try change else if ( !getcharid( 2,.@player$ ) ) { mes .npcname$; mes "^ff0000"+.@player$+" is not a member of your guild."; close; } into else if ( !getcharid(2) || getcharid(2) != getcharid( 2,.@player$ ) ) { mes .npcname$; mes "^ff0000"+.@player$+" is not a member of your guild."; close; }
  20. OnCampFireHeal: .@healrate = getd(sprintf(".%s_healrate", .@npcname$)); .@range = getd(sprintf(".%s_range", .@npcname$)); getmapxy(.@map$, .@x, .@y, BL_NPC); addrid(4, 0, (.@x - .@range), (.@y - .@range), (.@x + .@range), (.@y + .@range)); if (Sitting) percentheal .@healrate, .@healrate; end; maybe ... add this part into the script. then find areapercentheal(.@map$, (.@x - .@range), (.@y - .@range), (.@x + .@range), (.@y + .@range), .@healrate, .@healrate); and replace with donpcevent .@npcname$+"::OnCampFireHeal";
  21. Too bad RO equipments only can fit 4 items into the slots, I may have attempt to create a similar infinity glove if it can fit all 6 stones.
  22. View File Infinity Gauntlet - Snap Spoiler Alert !!! The following content consists of info for the recent Avengers: Endgame movie. View and download at your own discretion, I am not responsible for anything if you're so weak heart and so easily get spoiled with such contents. Real fans never afraid of spoiler contents! Use at your own risk .... Mirror Link: https://pastebin.com/6GX0LmW2 Submitter Emistry Submitted 04/28/2019 Category Utilities Video Content Author Emistry
  23. View File iRO - Ben Recycle NPC Ben Recycle in Prontera allows players to turn certain equipment into Rough Elunium and Rough Oridecon. How to use: func_AddItem(<equipment_id>, <item1>, <amount1>, <item2>, <amount2>); // WEAPONS func_AddItem(1421, 757, 4, 756, 4); func_AddItem(1822, 757, 2, 756, 2); func_AddItem(1625, 757, 5, 756, 5); func_AddItem(1819, 757, 3, 756, 3); func_AddItem(1269, 757, 4, 756, 4); func_AddItem(1142, 757, 3, 756, 3); func_AddItem(1624, 757, 5, 756, 5); func_AddItem(1626, 757, 5, 756, 5); func_AddItem(13404, 757, 5, 756, 5); func_AddItem(13027, 757, 6, 756, 6); func_AddItem(1821, 757, 1, 756, 1); func_AddItem(1268, 757, 5, 756, 5); // ARMORS func_AddItem(2422, 757, 3, 756, 3); func_AddItem(2104, 757, 1, 756, 1); func_AddItem(5124, 757, 2, 756, 1); func_AddItem(2406, 757, 3, 756, 3); func_AddItem(5122, 757, 2, 756, 1); func_AddItem(5126, 757, 2, 756, 1); func_AddItem(2504, 757, 2, 756, 1); func_AddItem(2353, 757, 15, 756, 15); func_AddItem(2514, 757, 6, 756, 6); func_AddItem(2404, 757, 2, 756, 1); func_AddItem(2315, 757, 2, 756, 1); func_AddItem(2102, 757, 2, 756, 1); func_AddItem(2114, 757, 2, 756, 2); Additional: // if enable shop UI (only work if items can sell to npc shop) .shop_npc$ = "ben_recycle_shop#iro"; Mirror Link: https://pastebin.com/cCBdevB5 Submitter Emistry Submitted 04/28/2019 Category Utilities Video Content Author Emistry  
×
×
  • Create New...