Jump to content

Racaae

Members
  • Posts

    269
  • Joined

  • Last visited

  • Days Won

    42

Everything posted by Racaae

  1. Hello. Open the file \conf\import\battle_conf.txt and add: // EDP setting: (Note 3) // When switching/unequipping a right hand weapon, should EDP be removed? EDP can't be used with bare hand. // 0: Disabled (rAthena legacy and pre-renewal behavior). // 1: Enabled on pre-renewal. // 2: Enabled on renewal. // 3: 1+2 switch_remove_edp: 0 Save the file and restart your server.
  2. Use TAB instead of space between the parameters. This is a tab: " " This is a space: " " Correct: bossnia_01,0,0,0,0 monster Poring 1002,70,0,0,0 bossnia_02,0,0,0,0 monster Poring 1002,70,0,0,0 bossnia_03,0,0,0,0 monster Poring 1002,70,0,0,0 bossnia_04,0,0,0,0 monster Poring 1002,70,0,0,0
  3. It is possible, using a variable to track when the monster was summoned. cell_game,155,150,5 script Human King? 4_M_MINISTER,{ if ( mobcount( "this", strnpcinfo(3)+"::OnMobDead" ) ) { npctalk strnpcinfo(1) + " : Defeat the Warrior!"; end; } mes "^808080[ Human King? ]^000000"; mes "You are here, finally!"; next; switch ( select( "Tournament of Dimensions", "Return to our world") ) { case 1: for ( .@i = 0; .@i < getarraysize( .mvpid ); .@i++ ) { if (getd("TournamentD_" + .mvpid[.@i]) < gettimetick(2)) { .@mvpid_menu$ += strmobinfo(1, .mvpid[.@i]); .@ok = true; } .@mvpid_menu$ += ":"; } if (.@ok == false) { for ( .@i = 0; .@i < getarraysize( .mvpid ); .@i++ ) .@my_coldown[.@i] = getd("TournamentD_" + .mvpid[.@i]); mes "^808080[ Human King? ]^000000"; mes "You defeated all available warriors!"; mes "You can participate again when a warrior resurfaces in ^0000FF" + Time2Str(min(.@my_coldown)) + "^000000."; close; } if ( .cost_id ) { mes "^808080[ Human King? ]^000000"; if (.itemlink) mes "The cost to summon a Warrior is "+ F_InsertComma(.cost_amt) + " " + mesitemlink(.cost_id) + "."; else mes "The cost to summon a Warrior is ^0000FF"+ F_InsertComma(.cost_amt) + " " + getitemname(.cost_id) + "^000000."; next; set .@menu, select(.@mvpid_menu$) -1; mes "^808080[ Human King? ]^000000"; if (countitem(.cost_id) < .cost_amt ) { mes "You don't have the item."; close; } } else { set .@menu, select(.@mvpid_menu$) -1; mes "^808080[ Human King? ]^000000"; } mes "Please get ready."; specialeffect EF_MAP_MAGICZONE4; close2; if ( countitem(.cost_id) < .cost_amt ) end; delitem .cost_id, .cost_amt; monster "this", 0, 0, "--en--", .mvpid[.@menu], 1, strnpcinfo(3)+"::OnMobDead"; setd "TournamentD_" + .mvpid[.@menu], gettimetick(2) + .cooldown; sleep 3000; removespecialeffect EF_MAP_MAGICZONE4; end; case 2: mes "^808080[ Human King? ]^000000"; mes "Are you sure you want to leave?"; next; if ( select( "Yes", "No") == 1 ) warp .respawnmap$, .respawnx, .respawny; close; } OnMobDead: .@i = rand(.zeny_reward_min, .zeny_reward_max); Zeny += .@i; mapannounce strnpcinfo(4), strnpcinfo(1) + " : The Warrior dropped " + F_InsertComma(.@i) + "z!", 0; end; OnInit: // Config --------------------------------------------------------------------------------------- .itemlink = false; //use item link system? .cooldown = 3000; //seconds to wait to summon again (3000=1 hour) .cost_id = 909; // Item ID to summon .cost_amt = 6; // Item amount to summon .zeny_reward_min = 100000; // Minimum Zeny reward .zeny_reward_max = 999999; // Maximum Zeny reward setarray .mvpid[0], 1647,// Assassin Cross Eremes 1649,// High Priest Magaleta 1651,// High Wizard Katrinn 1646,// Lord Knight Seyren 1650,// Sniper Shecil 1648,// Whitesmith Harword 1658;// Ygnizem // Respawn point when players leave set .respawnmap$, "askald"; set .respawnx, 162; set .respawny, 237; // Config Ends ------------------------------------------------------------------------ mapannounce strnpcinfo(4), "An administrator has refreshed the server. Please re-register this room.", bc_map; mapwarp strnpcinfo(4), .respawnmap$, .respawnx, .respawny; end; }
  4. Hello //===== rAthena Script ======================================= //= https://rathena.org/board/topic/142407-need-help-script-summon-monster/ //= Modified from AnnieRuru's Private MVP & Branch Room //============================================================ askald,166,237,1 script The Dimensions Tournament 110,{ set .@npc$,"^F904EA[ Human King ]^000000"; switch( select( "I would like more information", "Let's go" ) ) { case 1: mes .@npc$; mes "In a remote corner of the world of Midgard, a mysterious rift has opened, connecting our world to another dimension populated by fearsome human warriors."; next; mes .@npc$; mes "These warriors, coming from a parallel universe called ^FF7700Terra Nova^000000, have skills and powers different from those known in Midgard. "; next; mes .@npc$; mes "Their abilities often surpass those of our world's greatest heroes. An ancient prophecy says that these interdimensional warriors would be drawn to tournaments of strength and honor."; next; mes .@npc$; mes "So the king of Prontera, eager to test the bravery and skill of the adventurers of Midgard, organized a great tournament called The ^FF0000Tournament of Dimensions^000000."; next; mes .@npc$; mes "Each of these warriors has a unique strength and ability that makes them formidable. However, each victory against one of these fighters guarantees the winning hero a reward of"; next; mes .@npc$; mes "Registration for the tournament is open to all adventurers brave enough to challenge these fighters from another world."; next; mes .@npc$; mes "Rumors have it that the ultimate winner will receive not only a vast fortune in zeny, but also an artifact from Terra Nova, an item of immeasurable power capable of changing the course of Midgard's history."; close; case 2: mes .@npc$; if (.warped) { mes "I already sent a hero through the rift."; mes "We need to wait for their return so I can send someone else."; close; } mes "I'm counting on you !"; close2; warp "cell_game",150,143; .warped = true; initnpctimer; end; } end; OnTimer30000: stopnpctimer; if (getmapusers("cell_game")) initnpctimer; else .warped = false; end; } cell_game,155,150,5 script Human King? 110,{ if ( mobcount( "this", strnpcinfo(3)+"::OnMobDead" ) ) { npctalk strnpcinfo(1) + " : Defeat the Warrior!"; end; } mes "^808080[ Human King? ]^000000"; mes "You are here, finally!"; next; switch ( select( "Tournament of Dimensions", "Return to our world") ) { case 1: if ( mobcount( "this", strnpcinfo(3)+"::OnMobDead" ) ) { mes "^808080[ Human King? ]^000000"; mes "I cannot summon another MVP when there are monsters around."; close; } else if ( .cost_id ) { mes "^808080[ Human King? ]^000000"; mes "The cost to summon an Warrior is "+ F_InsertComma(.cost_amt) + " " + mesitemlink(.cost_id) + ".";; next; set .@menu, select(.mvpid_menu$) -1; mes "^808080[ Human King? ]^000000"; if (countitem(.cost_id) < .cost_amt ) { mes "You don't have the item."; close; } } else { set .@menu, select(.mvpid_menu$) -1; mes "^808080[ Human King? ]^000000"; } mes "Please get ready."; specialeffect EF_MAP_MAGICZONE4; close2; if ( countitem(.cost_id) < .cost_amt ) end; delitem .cost_id, .cost_amt; monster "this", 0, 0, "--ja--", .mvpid[.@menu], 1, strnpcinfo(3)+"::OnMobDead"; sleep 3000; removespecialeffect EF_MAP_MAGICZONE4; end; case 2: mes "^808080[ Human King? ]^000000"; mes "Are you sure you want to leave?"; next; if ( select( "Yes:No") == 1 ) warp .respawnmap$, .respawnx, .respawny; close; } OnMobDead: .@i = rand(.zeny_reward_min, .zeny_reward_max); Zeny += .@i; mapannounce strnpcinfo(4), strnpcinfo(1) + " : The Warrior dropped " + F_InsertComma(.@i) + "z!", 0; end; OnInit: // Config --------------------------------------------------------------------------------------- set .cost_id, 909; // Item ID to summon an MVP set .cost_amt, 6; // Item amount to summon an MVP .zeny_reward_min = 100000; // Minimum Zeny reward .zeny_reward_max = 999999; // Maximum Zeny reward setarray .mvpid[0], 1647,// Assassin Cross Eremes 1649,// High Priest Magaleta 1651,// High Wizard Katrinn 1646,// Lord Knight Seyren 1650,// Sniper Shecil 1648,// Whitesmith Harword 1658;// Ygnizem // Respawn point when players leave set .respawnmap$, "askald"; set .respawnx, 162; set .respawny, 237; // Config Ends ------------------------------------------------------------------------ .@size = getarraysize( .mvpid ); for ( .@i = 0; .@i < .@size; .@i++ ) .mvpid_menu$ = .mvpid_menu$ + getmonsterinfo( .mvpid[.@i], MOB_NAME ) +":"; mapannounce strnpcinfo(4), "An administrator has refreshed the server. Please re-register this room.", bc_map; mapwarp strnpcinfo(4), .respawnmap$, .respawnx, .respawny; end; }
  5. Hi. Remove the ; (semicolon) from these lines. Permanent monster spawns don't need semicolon. bossnia_01,0,0,0,0 monster Poring 1002,70,0,0,0; bossnia_02,0,0,0,0 monster Poring 1002,70,0,0,0; bossnia_03,0,0,0,0 monster Poring 1002,70,0,0,0; bossnia_04,0,0,0,0 monster Poring 1002,70,0,0,0;
  6. Hi. It is possible. Here's a example for you. //===== Script for rAthena by Racaae ========================= //= https://rathena.org/board/topic/142357-question-about-transfer-enchant-npc-random-option/ //===== Additional Comments: ================================= //= Modified from Sader1992' enchant npc //============================================================ prontera,165,215,5 script Costume Enchant Transfer 4_BULL,{ disable_items; mes "[Costume Enchant Transferer]"; mes "Hello!"; mes "Do you want to transfer enchantment from your equipped costume to another item?"; if (.ZenyCost) mes "This will cost ^0000FF" + F_InsertComma(.ZenyCost) + "z^000000 only!"; next; if (select("Random Option Transfer", "Enchant Socket Transfer") == 1) .@mode = true; for(.@i = 0; .@i < getarraysize(.s_all$); .@i++) { if (getequipid(.s_all_loc[.@i])>-1) set .@armor_menu$, .@armor_menu$ + .s_all$[.@i] + " - [ ^E81B02" + getitemname(getequipid(.s_all_loc[.@i])) + "^000000 ]:"; else set .@armor_menu$, .@armor_menu$ + .s_all$[.@i] + " - [ ^D6C4E8" + "No Equip" + "^000000 ]:"; } .@input_loc = select(.@armor_menu$) -1; mes "[Costume Enchant Transferer]"; if (getequipid(.s_all_loc[.@input_loc]) < 0){ mes "You don't have item equipped there."; close; } .@item = getequipid(.s_all_loc[.@input_loc]); .@refine = getequiprefinerycnt(.s_all_loc[.@input_loc]); .@card0 = getequipcardid(.s_all_loc[.@input_loc],0); .@card1 = getequipcardid(.s_all_loc[.@input_loc],1); .@card2 = getequipcardid(.s_all_loc[.@input_loc],2); .@card3 = getequipcardid(.s_all_loc[.@input_loc],3); for(.@i=0; .@i < (MAX_ITEM_RDM_OPT); .@i++) { .@r_id[.@i] = getequiprandomoption(.s_all_loc[.@input_loc],.@i,ROA_ID); .@r_v[.@i] = getequiprandomoption(.s_all_loc[.@input_loc],.@i,ROA_VALUE); .@r_p[.@i] = getequiprandomoption(.s_all_loc[.@input_loc],.@i,ROA_PARAM); } if (.@mode) { if (getarraysize(.@r_id) == 0) { mes "This costume has no Random Options..."; close; } } else if (!.@card0 && !.@card1 && !.@card2 && !.@card3) { mes "This costume has no enchants..."; close; } mes "Which enchantment to transfer?"; if (.@mode) { for(.@i=0; .@i < 5; .@i++) { if (.@r_id[.@i]) .@slot_menu$ += F_RDMOPT_Name(.@r_id[.@i],.@r_v[.@i]); .@slot_menu$ += ":"; } .@input_slot = select(.@slot_menu$) -1; } else { for(.@i=0; .@i < 4; .@i++) { if (getequipcardid(.s_all_loc[.@input_loc], .@i)) .@slot_menu$ += "[ ^E81B02" + getitemname(getequipcardid(.s_all_loc[.@input_loc],.@i)) + "^000000 ]:"; else .@slot_menu$ += ":"; } .@input_slot = select(.@slot_menu$) -1; } set .@item, getequipid(.s_all_loc[.@input_loc]); clear; mes "[Costume Enchant Transferer]"; mes "To what costume in your inventory you want to transfer?"; next; .@armor_menu$ = ""; for(.@i=0; .@i < getarraysize(.s_all$); .@i++) .@armor_menu$ += .s_all$[.@i] + ":"; .@output_type = select(.@armor_menu$) -1; getinventorylist; for(.@i = 0; .@i < @inventorylist_count; .@i++) { .@item_type = getiteminfo(@inventorylist_id[.@i], ITEMINFO_LOCATIONS); .@item_id = @inventorylist_id[.@i]; if (.@item_type & .s_all_loc2[.@output_type] && !@inventorylist_equip[.@i]) { .@item_ref = getarraysize(.@equipment_id_list); if (countinarray(.@equipment_id_list, .@item_id)) continue; .@equipment_id_list[.@item_ref] = @inventorylist_id[.@i]; .@menu_labels$[.@item_ref] = getitemname(@inventorylist_id[.@i]); } } if (!getarraysize(.@equipment_id_list[0])) { mes "[Costume Enchant Transferer]"; mes "There are no items of this category in your inventory."; close; } .@index = select(implode(.@menu_labels$, ":")) - 1; .@output_id = .@equipment_id_list[.@index]; mes "[Costume Enchant Transferer]"; mes "You selected " + getitemname(.@output_id) + "."; if (countitem(.@output_id) > 1) { mes "You have more than one of this item."; close; } getinventorylist; .@i2 = inarray(@inventorylist_id, .@output_id); .@output_refine = @inventorylist_refine[.@i2]; .@output_card0 = @inventorylist_card1[.@i2]; .@output_card1 = @inventorylist_card2[.@i2]; .@output_card2 = @inventorylist_card3[.@i2]; .@output_card3 = @inventorylist_card4[.@i2]; for(.@i = 0; .@i < (MAX_ITEM_RDM_OPT); .@i++) { .@output_r_id[.@i] = getd("@inventorylist_option_id" + (.@i + 1) + "[" + .@i2 + "]"); .@output_r_v[.@i] = getd("@inventorylist_option_value" + (.@i + 1) + "[" + .@i2 + "]"); .@output_r_p[.@i] = getd("@inventorylist_option_parameter" + (.@i + 1) + "[" + .@i2 + "]"); } if (.@mode) { for(.@i = 0; .@i < MAX_ITEM_RDM_OPT; .@i++) { if (.@output_r_id[.@i] == 0) { .@output_slot = .@i; .@ok = true; break; } } if (!.@ok) { mes "You already have full Random Options in this item."; close; } } else { mes "Transfer to which slot?"; .@slot_menu$ = ""; for(.@i = 0; .@i < 4; .@i++) { if (getd(".@output_card" + .@i)) .@slot_menu$ += "[^E81B02" + getitemname(getd(".@output_card" + .@i)) + "^000000 ]:"; else .@slot_menu$ += "[^D6C4E8" + "Empty" + "^000000 ]:"; } .@output_slot = select(.@slot_menu$) -1; if (!.Overwrite) { if(getd(".@output_card" + .@output_slot)) { mes "You already have enchant in this slot."; close; } } } clear; mes "[Costume Enchant Transferer]"; if (.@mode) mes "Transfer: ^FF7700" + F_RDMOPT_Name(.@r_id[.@input_slot],.@r_v[.@input_slot]) + "^000000"; else mes "Transfer: " + mesitemlink(getequipcardid(.s_all_loc[.@input_loc], .@input_slot)); mes "^FF0000From: " + getitemname(getequipid(.s_all_loc[.@input_loc])) + "^000000"; mes "^0000FFTo: " + getitemname(.@output_id) + "^000000"; mes "Are you sure?"; next; if(select("Cancel.", "Confirm") == 1) close; mes "[Costume Enchant Transferer]"; if (.ZenyCost && Zeny < .ZenyCost) { mes "Sorry, but you don't have enough zeny."; close; } mes "Stay put while the process is ongoing."; close2; specialeffect2 EF_MAPPILLAR; progressbar "ffff00", .progress_time; // anti-hack if (callfunc("F_IsEquipIDHack", .s_all_loc[.@input_loc], .@item) || callfunc("F_IsEquipCardHack", .s_all_loc[.@input_loc], .@card0, .@card1, .@card2, .@card3) || callfunc("F_IsEquipRefineHack", .s_all_loc[.@input_loc], .@refine) || countitem(.@output_id) != 1) { mes "[Costume Enchant Transferer]"; mes "You switched the item while I wasn't looking! Get out of here!"; close; } if (.ZenyCost && Zeny < .ZenyCost) { mes "Sorry, but you don't have enough zeny."; close; } Zeny -= .ZenyCost; if (.@mode) { .@output_r_id[.@output_slot] = .@r_id[.@input_slot]; .@output_r_v[.@output_slot] = .@r_v[.@input_slot]; .@output_r_p[.@output_slot] = .@r_p[.@input_slot]; deletearray .@r_id[.@input_slot], 1; deletearray .@r_v[.@input_slot], 1; deletearray .@r_p[.@input_slot], 1; } else { setd(".@output_card" + .@output_slot, getd(".@card" + .@input_slot)); setd(".@card" + .@input_slot, 0); } delequip .s_all_loc[.@input_loc]; delitem .@output_id, 1; getitem3 .@item, 1, 1, .@input_refine, 0, .@card0, .@card1, .@card2, .@card3,.@r_id,.@r_v,.@r_p; getitem3 .@output_id, 1, 1, .@output_refine, 0, .@output_card0, .@output_card1, .@output_card2, .@output_card3,.@output_r_id,.@output_r_v,.@output_r_p; equip .@item; npctalk "Enchant Transfer successful!", strnpcinfo(0), bc_self; end; OnInit: //--------------------------------------------------------------// //-------------------- configuration -----------------------// //--------------------------------------------------------------// //--------------------------------------------------------------// //if you want to remove one from the menu you need to remove it down too!! /or add //--------------------------------------------------------------// setarray .s_all$,"Upper","Middle","Lower","Garment"; setarray .s_all_loc,EQI_COSTUME_HEAD_TOP,EQI_COSTUME_HEAD_MID,EQI_COSTUME_HEAD_LOW,EQI_COSTUME_GARMENT; setarray .s_all_loc2,EQP_COSTUME_HEAD_TOP,EQp_COSTUME_HEAD_MID,EQP_COSTUME_HEAD_LOW,EQP_COSTUME_GARMENT; //--------------------------------------------------------------// //other configuration //--------------------------------------------------------------// .ZenyCost = 1000000; //if you don't want zeny requirment set it to 0 .Overwrite = true; //if true then you can overwrite the enchant .progress_time = 4; //the time that needed to wait until the socket end end; } You need to use this function to display random options in the NPC. ////////////////////////////////////////////////////////////////////////////////// // Returns Random Option name and value // -- callfunc "F_RDMOPT_Name",<ROA_ID>{,<Value>{,<2nd value>}}; ////////////////////////////////////////////////////////////////////////////////// function script F_RDMOPT_Name { if (getargcount() > 2) .@s$ = getarg(1) + "~" + getarg(2); else if (getargcount() > 1) .@s$ = getarg(1); else .@s$ = "?"; if (#langtype = 8) { //POR switch(getarg(0)){ case 3: return "FOR +" + .@s$; case 6: return "INT +" + .@s$; case 7: return "DES +" + .@s$; case 8: return "SOR +" + .@s$; case 232: return "EXP ganha de Amorfos +" + .@s$ + "%"; case 233: return "EXP ganha de Morto-Vivos +" + .@s$ + "%"; case 234: return "EXP ganha de Brutos +" + .@s$ + "%"; case 235: return "EXP ganha de Plantas +" + .@s$ + "%"; case 236: return "EXP ganha de Insetos +" + .@s$ + "%"; case 237: return "EXP ganha de Peixes +" + .@s$ + "%"; case 238: return "EXP ganha de Demônios +" + .@s$ + "%"; case 239: return "EXP ganha de Humanoides +" + .@s$ + "%"; case 240: return "EXP ganha de Anjos +" + .@s$ + "%"; case 241: return "EXP ganha de Dragões +" + .@s$ + "%"; case 242: return "EXP ganha de todas raças +" + .@s$ + "%"; } } switch(getarg(0)){ case 1: return "MaxHP +" + .@s$; case 2: return "MaxSP +" + .@s$; case 3: return "STR +" + .@s$; case 4: return "AGI +" + .@s$; case 5: return "VIT +" + .@s$; case 6: return "INT +" + .@s$; case 7: return "DEX +" + .@s$; case 8: return "LUK +" + .@s$; case 9: return "MaxHP +" + .@s$ + "%"; case 10: return "MaxSP +" + .@s$ + "%"; case 11: return "HP regen +" + .@s$ + "%"; case 12: return "SP regen +" + .@s$ + "%"; case 13: return "ATK +" + .@s$ + "%"; case 14: return "MATK +" + .@s$ + "%"; case 15: return "ASPD +" + .@s$; case 16: return "Delay after attack -" + .@s$ + "%"; case 17: return "ATK +" + .@s$; case 18: return "HIT +" + .@s$; case 19: return "MATK +" + .@s$; case 20: return "DEF +" + .@s$; case 21: return "MDEF +" + .@s$; case 22: return "FLEE +" + .@s$; case 23: return "Perfect dodge +" + .@s$; case 24: return "CRIT +" + .@s$; case 25: return "Neutral elemental resistance +" + .@s$ + "%"; case 26: return "Water elemental resistance +" + .@s$ + "%"; case 27: return "Earth elemental resistance +" + .@s$ + "%"; case 28: return "Fire elemental resistance +" + .@s$ + "%"; case 29: return "Wind elemental resistance +" + .@s$ + "%"; case 30: return "Poison elemental resistance +" + .@s$ + "%"; case 31: return "Holy elemental resistance +" + .@s$ + "%"; case 32: return "Shadow elemental resistance +" + .@s$ + "%"; case 33: return "Ghost elemental resistance +" + .@s$ + "%"; case 34: return "Undead elemental resistance +" + .@s$ + "%"; case 35: return "All elemental (except Neutral) resistance +" + .@s$ + "%"; case 36: return "Neutral monster resistance +" + .@s$ + "%"; case 37: return "ATK +" + .@s$ + "% against Neutral monster"; case 38: return "Water monster resistance +" + .@s$ + "%"; case 39: return "ATK +" + .@s$ + "% against Water monster"; case 40: return "Earth monster resistance +" + .@s$ + "%"; case 41: return "ATK +" + .@s$ + "% against Earth monster"; case 42: return "Fire monster resistance +" + .@s$ + "%"; case 43: return "ATK +" + .@s$ + "% against Fire monster"; case 44: return "Wind monster resistance +" + .@s$ + "%"; case 45: return "ATK +" + .@s$ + "% against Wind monster"; case 46: return "Poison monster resistance +" + .@s$ + "%"; case 47: return "ATK +" + .@s$ + "% against Poison monster"; case 48: return "Holy monster resistance +" + .@s$ + "%"; case 49: return "ATK +" + .@s$ + "% against Holy monster"; case 50: return "Shadow monster resistance +" + .@s$ + "%"; case 51: return "ATK +" + .@s$ + "% against Shadow monster"; case 52: return "Ghost monster resistance +" + .@s$ + "%"; case 53: return "ATK +" + .@s$ + "% against Ghost monster"; case 54: return "Undead monster resistance +" + .@s$ + "%"; case 55: return "ATK +" + .@s$ + "% against Undead monster"; case 56: return "Neutral monster magic resistance +" + .@s$ + "%"; case 57: return "MATK +" + .@s$ + "% against Neutral monster"; case 58: return "Water monster magic resistance +" + .@s$ + "%"; case 59: return "MATK +" + .@s$ + "% against Water monster"; case 60: return "Earth monster magic resistance +" + .@s$ + "%"; case 61: return "MATK +" + .@s$ + "% against Earth monster"; case 62: return "Fire monster magic resistance +" + .@s$ + "%"; case 63: return "MATK +" + .@s$ + "% against Fire monster"; case 64: return "Wind monster magic resistance +" + .@s$ + "%"; case 65: return "MATK +" + .@s$ + "% against Wind monster"; case 66: return "Poison monster magic resistance +" + .@s$ + "%"; case 67: return "MATK +" + .@s$ + "% against Poison monster"; case 68: return "Holy monster magic resistance +" + .@s$ + "%"; case 69: return "MATK +" + .@s$ + "% against Holy monster"; case 70: return "Shadow monster magic resistance +" + .@s$ + "%"; case 71: return "MATK +" + .@s$ + "% against Shadow monster"; case 72: return "Ghost monster magic resistance +" + .@s$ + "%"; case 73: return "MATK +" + .@s$ + "% against Ghost monster"; case 74: return "Undead monster magic resistance +" + .@s$ + "%"; case 75: return "MATK +" + .@s$ + "% against Undead monster"; case 76: return "Armor element Neutral"; case 77: return "Armor element Water"; case 78: return "Armor element Earth"; case 79: return "Armor element Fire"; case 80: return "Armor element Wind"; case 81: return "Armor element Poison"; case 82: return "Armor element Holy"; case 83: return "Armor element Shadow"; case 84: return "Armor element Ghost"; case 85: return "Armor element Undead"; case 87: return "Formless monster resistance +" + .@s$ + "%"; case 88: return "Undead monster resistance +" + .@s$ + "%"; case 89: return "Brute monster resistance +" + .@s$ + "%"; case 90: return "Plant monster resistance +" + .@s$ + "%"; case 91: return "Insect monster resistance +" + .@s$ + "%"; case 92: return "Fish monster resistance +" + .@s$ + "%"; case 93: return "Demon monster resistance +" + .@s$ + "%"; case 94: return "Demihuman monster resistance +" + .@s$ + "%"; case 95: return "Angel monster resistance +" + .@s$ + "%"; case 96: return "Dragon monster resistance +" + .@s$ + "%"; case 97: return "ATK +" + .@s$ + "% against Formless monster"; case 98: return "ATK +" + .@s$ + "% against Undead monster"; case 99: return "ATK +" + .@s$ + "% against Brute monster"; case 100: return "ATK +" + .@s$ + "% against Plant monster"; case 101: return "ATK +" + .@s$ + "% against Insect monster"; case 102: return "ATK +" + .@s$ + "% against Fish monster"; case 103: return "ATK +" + .@s$ + "% against Demon monster"; case 104: return "ATK +" + .@s$ + "% against Demihuman monster"; case 105: return "ATK +" + .@s$ + "% against Angel monster"; case 106: return "ATK +" + .@s$ + "% against Dragon monster"; case 107: return "MATK +" + .@s$ + "% against Formless monster"; case 108: return "MATK +" + .@s$ + "% against Undead monster"; case 109: return "MATK +" + .@s$ + "% against Brute monster"; case 110: return "MATK +" + .@s$ + "% against Plant monster"; case 111: return "MATK +" + .@s$ + "% against Insect monster"; case 112: return "MATK +" + .@s$ + "% against Fish monster"; case 113: return "MATK +" + .@s$ + "% against Devil monster"; case 114: return "MATK +" + .@s$ + "% against Demihuman monster"; case 115: return "MATK +" + .@s$ + "% against Angel monster"; case 116: return "MATK +" + .@s$ + "% against Dragon monster"; case 117: return "CRIT +" + .@s$ + " against Formless monster"; case 118: return "CRIT +" + .@s$ + " against Undead monster"; case 119: return "CRIT +" + .@s$ + " against Brute monster"; case 120: return "CRIT +" + .@s$ + " against Plant monster"; case 121: return "CRIT +" + .@s$ + " against Insect monster"; case 122: return "CRIT +" + .@s$ + " against Fish monster"; case 123: return "CRIT +" + .@s$ + " against Demon monster"; case 124: return "CRIT +" + .@s$ + " against Demihuman monster"; case 125: return "CRIT +" + .@s$ + " against Angel monster"; case 126: return "CRIT +" + .@s$ + " against Dragon monster"; case 127: return "Pierces " + .@s$ + "% DEF of Formless monster"; case 128: return "Pierces " + .@s$ + "% DEF of Undead monster"; case 129: return "Pierces " + .@s$ + "% DEF of Brute monster"; case 130: return "Pierces " + .@s$ + "% DEF of Plant monster"; case 131: return "Pierces " + .@s$ + "% DEF of Insect monster"; case 132: return "Pierces " + .@s$ + "% DEF of Fish monster"; case 133: return "Pierces " + .@s$ + "% DEF of Demon monster"; case 134: return "Pierces " + .@s$ + "% DEF of Demihuman monster"; case 135: return "Pierces " + .@s$ + "% DEF of Angel monster"; case 136: return "Pierces " + .@s$ + "% DEF of Dragon monster"; case 137: return "Pierces " + .@s$ + "% MDEF of Formless monster"; case 138: return "Pierces " + .@s$ + "% MDEF of Undead monster"; case 139: return "Pierces " + .@s$ + "% MDEF of Brute monster"; case 140: return "Pierces " + .@s$ + "% MDEF of Plant monster"; case 141: return "Pierces " + .@s$ + "% MDEF of Insect monster"; case 142: return "Pierces " + .@s$ + "% MDEF of Fish monster"; case 143: return "Pierces " + .@s$ + "% MDEF of Demon monster"; case 144: return "Pierces " + .@s$ + "% MDEF of Demihuman monster"; case 145: return "Pierces " + .@s$ + "% MDEF of Angel monster"; case 146: return "Pierces " + .@s$ + "% MDEF of Dragon monster"; case 147: return "ATK +" + .@s$ + "% against Normal monster"; case 148: return "ATK +" + .@s$ + "% against Boss monster"; case 149: return "Normal monster resistance +" + .@s$ + "%"; case 150: return "Boss monster resistance +" + .@s$ + "%"; case 151: return "MATK +" + .@s$ + "% against Normal monster"; case 152: return "MATK +" + .@s$ + "% against Boss monster"; case 153: return "Pierces " + .@s$ + "% DEF of Normal monster"; case 154: return "Pierces " + .@s$ + "% DEF of Boss monster"; case 155: return "Pierces " + .@s$ + "% MDEF of Normal monster"; case 156: return "Pierces " + .@s$ + "% MDEF of Boss monster"; case 157: return "ATK +" + .@s$ + "% against Small size monster"; case 158: return "ATK +" + .@s$ + "% against Medium size monster"; case 159: return "ATK +" + .@s$ + "% against Large size monster"; case 160: return "Small monster resistance +" + .@s$ + "%"; case 161: return "Medium monster resistance +" + .@s$ + "%"; case 162: return "Large monster resistance +" + .@s$ + "%"; case 163: return "Nullify weapon's DMG size penalty"; case 164: return "Critical attack +" + .@s$ + "%"; case 165: return "Critical DMG -" + .@s$ + "%"; case 166: return "Long range physical attack +" + .@s$ + "%"; case 167: return "Long range physical DMG -" + .@s$ + "%"; case 168: return "Healing skills +" + .@s$ + "%"; case 169: return "Restoration gained from Healing skills +" + .@s$ + "%"; case 170: return "Variable cast time -" + .@s$ + "%"; case 171: return "After cast delay -" + .@s$ + "%"; case 172: return "Reduces SP cost by " + .@s$ + "%"; case 175: return "Weapon element Neutral"; case 176: return "Weapon element Water"; case 177: return "Weapon element Earth"; case 178: return "Weapon element Fire"; case 179: return "Weapon element Wind"; case 180: return "Weapon element Poison"; case 181: return "Weapon element Holy"; case 182: return "Weapon element Shadow"; case 183: return "Weapon element Ghost"; case 184: return "Weapon element Undead"; case 185: return "Indestructible in battle"; case 186: return "Indestructible in battle"; case 187: return "MATK against Small size monster +" + .@s$ + "%"; case 188: return "MATK against Medium size monster +" + .@s$ + "%"; case 189: return "MATK against Large size monster +" + .@s$ + "%"; case 190: return "Small monster magic resistance +" + .@s$ + "%"; case 191: return "Medium monster magic resistance +" + .@s$ + "%"; case 192: return "Large monster magic resistance +" + .@s$ + "%"; case 193: return "Elemental attacks resistance +" + .@s$ + "%"; case 194: return "Formless monster resistance +" + .@s$ + "%"; case 195: return "Undead monster resistance +" + .@s$ + "%"; case 196: return "Brute monster resistance +" + .@s$ + "%"; case 197: return "Plant monster resistance +" + .@s$ + "%"; case 198: return "Insect monster resistance +" + .@s$ + "%"; case 199: return "Fish monster resistance +" + .@s$ + "%"; case 200: return "Demon monster resistance +" + .@s$ + "%"; case 201: return "Demihuman monster resistance +" + .@s$ + "%"; case 202: return "Angel monster resistance +" + .@s$ + "%"; case 203: return "Dragon monster resistance +" + .@s$ + "%"; case 206: return "Demi-Human players resistance + " + .@s$ + "%"; case 207: return "Doram players resistance +" + .@s$ + "%"; case 208: return "ATK against Demi-Human players +" + .@s$ + "%"; case 209: return "ATK against Doram players +" + .@s$ + "%"; case 210: return "MATK against Demi-Human players +" + .@s$ + "%"; case 211: return "MATK against Doram players +" + .@s$ + "%"; case 212: return "Critical +" + .@s$ + " for Demi-Human players"; case 213: return "Critical +" + .@s$ + " for Doram players"; case 214: return "Pierces " + .@s$ + "% DEF of Demi-Human players"; case 215: return "Pierces " + .@s$ + "% DEF of Doram players"; case 216: return "Pierces " + .@s$ + "% MDEF of Demi-Human players"; case 217: return "Pierces " + .@s$ + "% MDEF of Doram players"; case 218: return "Received reflected DMG -" + .@s$ + "%"; case 219: return "Melee physical DMG +" + .@s$ + "%"; case 220: return "Melee physical DMG -" + .@s$ + "%"; case 221: return "Neutral elemental magic skill DMG +" + .@s$ + "%"; case 222: return "Water elemental magic skill DMG +" + .@s$ + "%"; case 223: return "Earth elemental magic skill DMG +" + .@s$ + "%"; case 224: return "Fire elemental magic skill DMG +" + .@s$ + "%"; case 225: return "Wind elemental magic skill DMG +" + .@s$ + "%"; case 226: return "Poison elemental magic skill DMG +" + .@s$ + "%"; case 227: return "Holy elemental magic skill DMG +" + .@s$ + "%"; case 228: return "Shadow elemental magic skill DMG +" + .@s$ + "%"; case 229: return "Ghost elemental magic skill DMG +" + .@s$ + "%"; case 230: return "Undead elemental magic skill DMG +" + .@s$ + "%"; case 231: return "All elemental magic skill DMG +" + .@s$ + "%"; case 232: return "EXP gained from Formless race +" + .@s$ + "%"; case 233: return "EXP gained from Undead race +" + .@s$ + "%"; case 234: return "EXP gained from Brute race +" + .@s$ + "%"; case 235: return "EXP gained from Plant race +" + .@s$ + "%"; case 236: return "EXP gained from Insect race +" + .@s$ + "%"; case 237: return "EXP gained from Fish race +" + .@s$ + "%"; case 238: return "EXP gained from Demon race +" + .@s$ + "%"; case 239: return "EXP gained from Demi-Human race +" + .@s$ + "%"; case 240: return "EXP gained from Angel race +" + .@s$ + "%"; case 241: return "EXP gained from Dragon race +" + .@s$ + "%"; case 242: return "EXP gained from all races +" + .@s$ + "%"; case 243: return "POW + " + .@s$; case 244: return "SPL + " + .@s$; case 245: return "STA + " + .@s$; case 246: return "WIS + " + .@s$; case 247: return "CON + " + .@s$; case 248: return "CRT + " + .@s$; case 249: return "P.ATK + " + .@s$; case 250: return "S.MATK + " + .@s$; case 251: return "RES + " + .@s$; case 252: return "MRES + " + .@s$; case 253: return "H.PLUS + " + .@s$; case 254: return "C.RATE + " + .@s$; default: return "Unknow Random Option"; } }
  7. Hi prontera,161,220,5 script Top 2 who died the most 4_BOARD3,{ mes "[Top 2 who died the most]"; .@nb = query_sql( "SELECT count(2) as deaths, (SELECT name FROM `char` where char_id = died_id) FROM diedlog GROUP BY died_id ORDER BY deaths DESC LIMIT 2", .@kills, .@name$ ); query_sql( "SELECT count(2) as deaths FROM diedlog where died_id = '" + getcharid(0) + "'", .@personal ); if (.@nb) { for ( .@i = 0; .@i < .@nb; ++.@i ) mes F_GetNumSuffix(.@i+1) + " ^0000FF" + .@name$[.@i] + "^000000 - "+ .@kills[.@i] + " death" + (.@kills==1?"":"s"); } else mes "no entry"; mes " ", "Your deaths : " + .@personal; if (getgroupid() > 80) { if (select("Cancel.", "^FF0000Reset^000000") == 2) { query_sql(" TRUNCATE TABLE `diedlog`; "); mes "Reset done."; } } close; OnInit: query_sql("CREATE TABLE IF NOT EXISTS `diedlog` (`id` mediumint(9) unsigned NOT NULL auto_increment, `date` datetime NOT NULL, `died_id` int(11) NOT NULL default '0', PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1;"); end; OnPCDieEvent: query_sql("INSERT INTO `diedlog` (`date`, `died_id`) VALUES (now(), '" + getcharid(0) + "');"); end; }
  8. Yes, you can make the item cast on self. Please follow the instructions to set this thing. Open the file \db\import\item_db.yml and add this code at the end of the file. - Id: 690000 AegisName: SL_SOULLINKER_Scroll Name: Spirit of the Soul Linker Type: DelayConsume Buy: 1000 Weight: 10 Flags: BuyingStore: true NoUse: Sitting: true Script: | itemskill "SL_SOULLINKER",5; Open your iteminfo file on YourGameClientFolder\System\itemInfo and add this: [690000] = { unidentifiedDisplayName = "Spirit of the Soul Linker Scroll", unidentifiedResourceName = "ºÒÀÇÁÖ¹®¼­", unidentifiedDescriptionName = { "" }, identifiedDisplayName = "Spirit of the Soul Linker Scroll", identifiedResourceName = "ºÒÀÇÁÖ¹®¼­", identifiedDescriptionName = { "A spell scroll which was made by the essence of ancient magic.", "_______________________", "^0000CCType:^000000 Magic scroll", "^0000CCCast:^000000 Level 5 Soul Linker Spirit", "^FF0000Must be cast on a Soul Linker class.^000000", "^0000CCWeight:^000000 1" }, slotCount = 0, ClassNum = 0, costume = false }, Then restart the server and reopen your game. Try using @item 690000 to receive the item and test it.
  9. Sorry. Also replace Type: Armor to Type: Shadowgear.
  10. Change Both_Accessory to Shadow_Right_Accessory or Shadow_Left_Accessory. \doc\item_db.txt Locations: Equipment's placement. Head_Top - Upper Headgear Head_Mid - Middle Headgear Head_Low - Lower Headgear Armor - Armor Right_Hand - Weapon Left_Hand - Shield Garment - Garment/Robe Shoes - Shoes Right_Accessory - Accessory Right Left_Accessory - Accessory Left Costume_Head_Top - Costume Top Headgear Costume_Head_Mid - Costume Mid Headgear Costume_Head_Low - Costume Low Headgear Costume_Garment - Costume Garment/Robe Ammo - Ammo Shadow_Armor - Shadow Armor Shadow_Weapon - Shadow Weapon Shadow_Shield - Shadow Shield Shadow_Shoes - Shadow Shoes Shadow_Right_Accessory - Shadow Accessory Right (Earring) Shadow_Left_Accessory - Shadow Accessory Left (Pendant) Both_Hand - Right_Hand + Left_Hand Both_Accessory - Right_Accessory + Left_Accessory
  11. Hi. Example: - Id: 2609 AegisName: Skul_Ring Name: Skull Ring Type: Armor Locations: Both_Accessory: true Script: | changebase 4023; UnEquipScript: | changebase Class;
  12. Hi. Open \db\import\skill_db.yml and add this code at the end of the file. Body: - Id: 461 Description: Spirit of the Soul Linker Flags: NoTargetSelf: false Then restart your server or use @reloadskilldb.
  13. I get warped and the announce just fine. ShadowClone_Slain should be 1. Remove the whole killedgid line, it is most likely the cause of your error. ShadowClone_Slain = 0 //challenge not completed ShadowClone_Slain = XXXXXXX //challenge ongoing ShadowClone_Slain = 1 //challenge completed
  14. Hi. Use a invencible hidden monster, give it use invisible skill and earthquake. Summon it wherever you want. It will look like the main monster casts the skill. Example: \db\re\mob_db.yml - Id: 3038 AegisName: HIDDEN_MOB7 Name: Monster 7 JapaneseName: Hidden Mob 7 Level: 151 Hp: 10000 Attack: 500 Defense: 200 MagicDefense: 100 Str: 100 Agi: 100 Vit: 100 Int: 100 Dex: 400 Luk: 100 AttackRange: 1 SkillRange: 12 ChaseRange: 12 Size: Small Race: Formless Element: Ghost ElementLevel: 4 WalkSpeed: 1000 Class: Boss Modes: Aggressive: true IgnoreMagic: true IgnoreMelee: true IgnoreMisc: true IgnoreRanged: true \db\re\mob_skill_db.txt 3038,Hidden Mob 7@NPC_INVISIBLE,idle,353,1,10000,0,30000,yes,self,always,0,,,,,,, 3038,Hidden Mob 7@NPC_INVISIBLE,attack,353,1,10000,0,30000,yes,self,always,0,,,,,,, 3038,Hidden Mob 7@NPC_HELLBURNING,idle,719,1,10000,0,3000,yes,self,always,0,,,,,,, 3038,Hidden Mob 7@NPC_HELLBURNING,attack,719,1,10000,0,3000,yes,self,always,0,,,,,,, Script prontera,155,145,5 script Test#bssk03 2362,{ npctalk "Walk close to me in the next 10 seconds and you will burn!"; .@event$ = strnpcinfo(0) + "::OnMyMobDead"; monster "prontera",155,148, "#f_w_1",3038,1, .@event$; monster "prontera",158,145, "#f_w_1",3038,1, .@event$; monster "prontera",155,142, "#f_w_1",3038,1, .@event$; monster "prontera",152,145, "#f_w_1",3038,1, .@event$; sleep 10000; killmonster "prontera", .@event$; npctalk "It's safe now..."; end; OnMyMobDead: end; }
  15. Hi. Your clone command is setting the event label in a incorret way. getcharid and setcharid are also showing errors. The remaining code is fine. You can use OnPCDieEvent to trigger the clone death when the player dies. Check the script below. Feel free to ask anything about it. prt_fild01,76,171,5 script Kelly 4_F_KHELLY,{ // Check if the player has already defeated the shadow clone if (ShadowClone_Slain == 1) { mes "[NPC Challenge]"; mes "Congratulations! You have already defeated your own clone."; close; } // Check if the player is fighting the shadow clone if (unitexists(ShadowClone_Slain)) { npctalk "Defeat your own clone to pass this challenge.", strnpcinfo(0), bc_self; end; } mes "[NPC Challenge]"; mes "Hello, adventurer. Are you ready for the next test?"; next; mes "[NPC Challenge]"; mes "To pass this test, you will have to face your greatest weakness: yourself."; next; mes "[NPC Challenge]"; mes "Now, get ready..."; next; mes "[NPC Challenge]"; mes "I have summoned a shadowy clone of you. Only you can see it and defeat it."; next; mes "[NPC Challenge]"; mes "Defeat your own clone to pass this challenge."; close2; // Get the name of the player interacting with the NPC set .@player_name$, strcharinfo(0); // Call the @clone command to summon the shadow clone ShadowClone_Slain = clone("anrydrago", 76, 171, strnpcinfo(0) + "::OnEvilClone_Event", getcharid(0), 0, 0); end; OnEvilClone_Event: if (playerattached() == 0) end; if (killedgid != ShadowClone_Slain) end; mes "[Shadow Clone Event]"; mes "You have defeated your own clone. Congratulations!"; next; // Mark that the player has slain the shadow clone //setcharid(0, "ShadowClone_Slain", 1); ShadowClone_Slain = 1; // Teleport the player to Prontera warp "prontera", 150, 150; close; OnPCDieEvent: if (strcharinfo(3) == strnpcinfo(4) && ShadowClone_Slain > 1 && unitexists(ShadowClone_Slain)) { unitkill ShadowClone_Slain; ShadowClone_Slain = 0; announce strnpcinfo(1) + " : The clone defeated you...", bc_self; } end; }
  16. Hi. You can use getstatus command to check if player used Battle Manual. *getstatus(<effect type>{,<type>{,<char_id>}}) Retrieve information about a specific status effect when called. Depending on <type> specified the function will return different information. Possible <type> values: - 0 or undefined: whether the status is active - 1: the val1 of the status if (getstatus(SC_EXPBOOST)) BaseExp = BaseExp + 100 + 50 * getmonsterinfo(killedrid, 3); Example: - script 175Exp -1,{ OnNPCKillEvent: if (getmonsterinfo(killedrid, 1) < 70) end; if (BaseLevel >= 99 && BaseLevel <= 120) { .@base_bonus = 100; .@job_bonus = 50; } else if (BaseLevel >= 120 && BaseLevel <= 139) { .@base_bonus = 3000; .@job_bonus = 2500; } else if (BaseLevel >= 140 && BaseLevel <= 159) { .@base_bonus = 3000; .@job_bonus = 1500; } else if (BaseLevel >= 160 && BaseLevel <= 180) { .@base_bonus = 40000; .@job_bonus = 6000; } else if (BaseLevel >= 180 && BaseLevel <= 199) { .@base_bonus = 200000; .@job_bonus = 8000; } else if (BaseLevel >= 200 && BaseLevel <= 250) { .@base_bonus = 600000; .@job_bonus = 300000; } if (getstatus(SC_EXPBOOST)) { .@base_bonus += getstatus(SC_EXPBOOST,1); .@job_bonus += getstatus(SC_EXPBOOST,1); } .@base_total = .@base_bonus * getmonsterinfo(killedrid, MOB_BASEEXP); .@job_total = .@job_bonus * getmonsterinfo(killedrid, MOB_JOBEXP); getexp2 .@base_total,.@job_total; end; }
  17. Hi, this area of the forum is primarily for use in English. There is a specific area for using Portuguese. You could change the maximum level of each class to match the amount of points you need, but I think that would be too much work. Maybe an NPC that gives more points to the player who needs it, I made one for you to test. PT: Oi, essa área do fórum é para uso principal em inglês. Tem a área especíifica para usar portugûes. Você poderia mudar o nível máximo de cada classe para corresponder com a quantidade de ponto que precisa, mas acho que daria muito trabalho. Pode ter um NPC que dá mais pontos para o player que precisar, fiz um para você testar. //===== Script for rAthena by Racaae ========================= //= https://rathena.org/board/topic/142172-aumenta-a-quantidade-de-pontos-para-distribuir-nas-habilidades/ //============================================================ gonryun,153,115,5 script Mestre das Habilidades 4_M_FAIRYSCHOLAR,{ .@extra_point = 50; //Quantos pontos o NPC oferece .@job_level = 130; //nível de classe máximo if (!SkillPoint && JobLevel >= .@job_level) { npctalk "Eu lhe conçedo conhecimento!!", strnpcinfo(0), bc_self; SkillPoint += .@extra_point; specialeffect2 EF_BASH3D6; specialeffect2 EF_ITEM315; specialeffect2 1044; specialeffect2 1044; sleep2 3000; emotion ET_DELIGHT; npctalk "Aproveite seus pontos de habilidade.", strnpcinfo(0), bc_self; end; } cutin "ep14_robert1", 1; mes "[" + strnpcinfo(1) + "]"; mes "Olá, já pensou em como seria se você pudesse aprender TODAS as habilidades da sua classe?"; mes "Estou aqui para ajudar nisso!"; next; mes "[" + strnpcinfo(1) + "]"; mes "Quando você chegar ao ^FF8000nível máximo de classe e estiver sem pontos de habilidades^000000, venha falar comigo para eu lhe conceder ^000088pontos de habilidade extras^000000."; next; mes "[" + strnpcinfo(1) + "]"; mes "Quantas vezes você precisar, de graça e sem pegadinhas."; mes "Faço isso apenas com o intuito de proporcionar para você a melhor experiência!"; close3; }
  18. prontera,150,150,5 script YouTubeReward 123,{ goto Main; // Configuration OnInit: // YouTube video link set .video_link$, "https://www.youtube.com/your_video_link"; // Code to be entered by the player set .correct_code$, "your_code_here"; // Cash points reward set .cash_points_reward, 100; end; // Main script Main: mes "[YouTube Reward NPC]"; if (youtube_reward == 1) { mes "You have already received your reward for watching the video."; close; } mes "Hello, adventurer!"; mes "Watch the following YouTube video and find the hidden code to receive a reward."; mes "<URL>Video link<INFO>" + .video_link$ + "</INFO></URL>"; next; if (select("I watched the video.", "Cancel") == 2) close; mes "[YouTube Reward NPC]"; mes "Enter the code you found in the video:"; input @code$; clear; if (@code$ == .correct_code$) { mes "[YouTube Reward NPC]"; mes "Congratulations! You have entered the correct code."; mes "Here is your reward."; // Give the player cash points set #CASHPOINTS, #CASHPOINTS + .cash_points_reward; set youtube_reward, 1; // Mark the player as having received the reward close; } else { mes "[YouTube Reward NPC]"; mes "Sorry, that code is incorrect. Please watch the video and try again."; close; } }
  19. It's working fine here. Could you share your \npc\kafras\functions_kafras.txt?
  20. Refine? Do you mean identify? Any warning on the map-server console? Which Kafra NPC you talking? This should work only on the default/commom ones.
  21. Hi, find in \npc\kafras\functions_kafras.txt .@menu$ = implode(.@K_Menu0$,":"); And insert above it: .@s = getarraysize(.@K_Menu0$); .@K_Menu0$[.@s] = .@K_Menu0$[.@s-1]; .@K_Menu0$[.@s-1] = "Identify items (100z each)"; Find: else if (.@K_Menu0$[.@j] == "Use Guild Storage") { callfunc "F_KafStor",1,0; next; } And insert below it: else if (.@K_Menu0$[.@j] == "Identify items (100z each)") { callfunc "F_KafIdentify"; next; } Also insert this at the end of the file: //=================================================== // Identify Items Function //=================================================== function script F_KafIdentify { .@zeny = 100; .@i = identifyall(false); mes "[Kafra Employee]"; mes "The cost for identify each item is " + .@zeny + "z."; if (.@i) { mes "You have " + F_InsertPlural(.@i, "unidentified item") + "."; mes "Are you sure you want to pay ^0000FF" + .@zeny * .@i + "z^000000?"; next; if(select("Yes.", "No, I changed my mind.") == 1) { if (Zeny < .@zeny * .@i) { mes "[Kafra Employee]"; mes "I'm sorry, but you don't have enough zeny."; return; } Zeny -= .@zeny * .@i; identifyall; mes "[Kafra Employee]"; mes "All your items have been identified."; mes "Thank you for using the Kafra Services!"; } } else mes "You have no unidentified items in your inventory."; return; } Or just replace the whole file:functions_kafras.txt
  22. Hi. aura_vips2.txt
  23. Hi, each category needs a unique .variable, it cannot be shared. AddCata("Level 150",.TransMedium AddCata("Level 160",.TransMedium AddCata("Level 170",.TransMedium AddCata("Level 180",.TransMedium AddCata("Level 190",.TransMedium In the example above only the last loaded category (Level 190) gets the variable .TransMedium. The previous ones remain empty. I edited the script to support more .variables for each AddMob. It's just a workaround so I don't know if that will work for you. Syntax example: //AddMob(<.var>,<mob id>,<min count>,<max count> {,<extra .var{,<extra .var...}}); AddMob(.Hard,1219,25,50); AddMob(.Trans,1098,25,50,Trans110,Trans120); AddMob(.TransNormal,1219,25,50,.TransNor140); AddMob(.TransMedium,1716,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); //===== rAthena Script ======================================= //= saders hunting quest //===== By: ================================================== //= Sader1992 //https://rathena.org/board/profile/30766-sader1992/ //===== Current Version: ===================================== //= 5.2 //===== Compatible With: ===================================== //= rAthena Project //https://rathena.org/board/files/file/3579-saders-hunting-quest/ //https://github.com/sader1992/sader_scripts //===== Description: ========================================= //============================================================ //============================================================ - pointshop Hunting_Quest_Shop -1,#HUNT_Q_POINTS,512:1; //Account Based Shop //- pointshop Hunting_Quest_Shop -1,HUNT_Q_POINTS,512:1; //Character Based Shop prt_in,40,115,4 script Legendary Monster Hunter 667,{ function Ac; mes "Your Quest Progress:"; for(.@i=0;.@i<getarraysize(.CataName$);.@i++){ if(getd(Ac() + "COM_" + .@i)){ mes .CataName$[.@i] + ": Complete"; setd Ac() + "POINTS",getd(Ac() + "POINTS") + .CataRP[.@i]; if(.ExpServerRate){ getexp .CataBXP[.@i],.CataJXP[.@i]; }else{ getexp2 .CataBXP[.@i],.CataJXP[.@i]; } if(getd(".IRD_" + .@i)){ for(.@j=0;.@j<getarraysize(getd(".IRD_" + .@i));.@j++){ getitem(getd(".IRD_" + .@i + "[" + .@j + "]"),getd(".CRD_" + .@i + "[" + .@j + "]")); } } setd(Ac() + "CD_" + .@i,gettimetick(2) + (.CataCD[.@i] * 60 * 60)); setd(Ac() + "COM_" + .@i,false); setd(Ac() + "ID_" + .@i,0); setd(Ac() + "C_" + .@i,0); setd(Ac() + "CC_" + .@i,0); continue; } .@CD = getd(Ac() + "CD_" + .@i); if(.@CD > gettimetick(2)){ mes .CataName$[.@i] + ": " + gettimestr("%Y-%m/%d %H:%M:%S",21,.@CD); continue; } if(getd(Ac() + "ID_" + .@i)){ mes .CataName$[.@i] + "(" + getd(Ac() + "CC_" + .@i) + "/" + getd(Ac() + "C_" + .@i) + ") " + strmobinfo(1,getd(Ac() + "ID_" + .@i)); continue; } mes .CataName$[.@i] + ": None"; } .@s1 = select("Open Shop:" + implode(.CataName$,":")) -2; clear; if(.@s1 == -1){ callshop "Hunting_Quest_Shop",1; end; } .@CD = getd(Ac() + "CD_" + .@s1); if(.@CD > gettimetick(2)){ mes "you are under the cooldown effect"; mes "try again after " + gettimestr("%Y-%m/%d %H:%M:%S",21,.@CD); end; } if(getd(Ac() + "ID_" + .@s1)){ mes "Your Quest Progress:"; mes "(" + getd(Ac() + "CC_" + .@s1) + "/" + getd(Ac() + "C_" + .@s1) + ") " + strmobinfo(1,getd(Ac() + "ID_" + .@s1)); if(.AllowDeleteQuest){ mes "would you like to delete the quest?"; if(select("yes:no") == 2) end; mes "by deleting the quest you wont get any reward"; if(.ApplyCoolDownOnDelete) mes "and the cooldown will be applied!"; mes "Are you sure!?"; if(select("yes:no") == 2) end; clear; if(.ApplyCoolDownOnDelete){ setd(Ac() + "CD_" + .@s1,gettimetick(2) + (.CataCD[.@s1] * 60 * 60)); } setd(Ac() + "ID_" + .@s1,0); setd(Ac() + "C_" + .@s1,0); setd(Ac() + "CC_" + .@s1,0); mes "your quest has been deleted!"; end; } end; } if(BaseLevel < .CataMN_L[.@s1] || BaseLevel > .CataMX_L[.@s1]){ mes "you need to be between level " + .CataMN_L[.@s1] + " And " + .CataMX_L[.@s1] + " to get this quest!"; end; } mes "would you like to get a quest?"; if(select("yes:no") == 2) end; copyarray(.@mid,getd(".m_id_" + .@s1),getarraysize(getd(".m_id_" + .@s1))); mes .@s1 + " " + .@mid[0] + " " + .@mid[1]; .@r = rand(getarraysize(.@mid)); copyarray(.@mmn,getd(".m_mn_" + .@s1),getarraysize(getd(".m_mn_" + .@s1))); copyarray(.@mmx,getd(".m_mx_" + .@s1),getarraysize(getd(".m_mx_" + .@s1))); setd(Ac() + "ID_" + .@s1,.@mid[.@r]); setd(Ac() + "C_" + .@s1,rand(getd(".m_mn_" + .@s1 + "[" + .@r + "]"),getd(".m_mx_" + .@s1 + "[" + .@r + "]"))); setd(Ac() + "CC_" + .@s1,0); mes "Please Kill:"; mes "(" + getd(Ac() + "CC_" + .@s1) + "/" + getd(Ac() + "C_" + .@s1) + ") " + strmobinfo(1,getd(Ac() + "ID_" + .@s1)); end; OnNPCKillEvent: for(.@i=0;.@i<getarraysize(.CataName$);.@i++){ if(getd(Ac() + "ID_" + .@i) == killedrid && !getd(Ac() + "COM_" + .@i)){ setd(Ac() + "CC_" + .@i,getd(Ac() + "CC_" + .@i) + 1); dispbottom "Hunting Quest [" + .CataName$[.@i] + "]: (" + getd(Ac() + "CC_" + .@i) + "/" + getd(Ac() + "C_" + .@i) + ") " + strmobinfo( 1,getd(Ac() + "ID_" + .@i)); if(getd(Ac() + "CC_" + .@i) >= getd(Ac() + "C_" + .@i)){ dispbottom "Your " + .CataName$[.@i] + " Hunting Quest is Done."; setd(Ac() + "COM_" + .@i,true); } } } end; OnHuntingCheck: dispbottom "Your Hunting Quest Progress:"; for(.@i=0;.@i<getarraysize(.CataName$);.@i++){ if(getd(Ac() + "COM_" + .@i)){ dispbottom .CataName$[.@i] + ": Complete"; continue; } .@CD = getd(Ac() + "CD_" + .@i); if(.@CD > gettimetick(2)){ dispbottom .CataName$[.@i] + ": " + gettimestr("%Y-%m/%d %H:%M:%S",21,.@CD); continue; } if(getd(Ac() + "ID_" + .@i) == killedrid && !getd(Ac() + "COM_" + .@i)){ dispbottom .CataName$[.@i] + "(" + getd(Ac() + "CC_" + .@i) + "/" + getd(Ac() + "C_" + .@i) + ") " + strmobinfo(1,getd(Ac() + "ID_" + .@i)); continue; } dispbottom .CataName$[.@i] + ": None"; } end; function Ac { if(.AccountBase) return "#" + .variable_name$; return .variable_name$; } function AddCata { .@s = getarraysize(.CataName$); set getarg(1),.@s; .CataName$[.@s] = getarg(0); .CataMN_L[.@s] = getarg(2); .CataMX_L[.@s] = getarg(3); .CataCD[.@s] = getarg(4); .CataBXP[.@s] = getarg(5); .CataJXP[.@s] = getarg(6); .CataRP[.@s] = getarg(7); for(.@i=8;.@i<getargcount();.@i+=2){ .@s2 = getarraysize(getd(".IRD_" + .@s)); setd ".IRD_" + .@s + "[" + .@s2 + "]",getarg(.@i); setd ".CRD_" + .@s + "[" + .@s2 + "]",getarg(.@i+1); } return; } function AddMob { for (.@i = 0; .@i < getargcount(); .@i++) { .@s = getarraysize(getd(".m_id_" + getarg(.@i))); setd ".m_id_" + getarg(.@i) + "[" + .@s + "]",getarg(1); setd ".m_mn_" + getarg(.@i) + "[" + .@s + "]",getarg(2); setd ".m_mx_" + getarg(.@i) + "[" + .@s + "]",getarg(3); if (.@i == 0) .@i = 3; } return; } OnInit: .AccountBase = false;//wither or not the quests are on account or on character .ExpServerRate = true;//get exp according to the server rate? .AllowDeleteQuest = true;//allow player to delete his quest without getting the reward .ApplyCoolDownOnDelete = true;//wither or not apply cooldown on deleting the quest. .variable_name$ = "#HUNT_Q_POINTS"; //keep in mind if you changed this you need to change the points in the shop! bindatcmd("MyQuest",strnpcinfo(3)+"::OnHuntingCheck",0,250); freeloop(1); //You can add as much categories as you want! //recommended not more then 25! //.VAR MUST BE UNIQUE FOR EACH CATEGORY //AddCata(<"name">,<.var>,<mini level>,<max level>,<cooldown in hours>,<base exp reward>,<job exp reward>,<point reward>,<ITEM ID>,<COUNT>{,<ITEM ID>,<COUNT>{,<ITEM ID>,<COUNT>}}) AddCata("Easy",.Easy,10,99,0,500,500,10,673,5,12210,0,676,1); AddCata("Normal",.Normal,30,99,0,2500,2500,30,673,10,12210,0,670,1); AddCata("Hard",.Hard,70,150,0,10000,10000,50,673,20,677,1,670,rand(0,2)); AddCata("Undead Easy",.UndeadOne,10,99,0,500,500,10,673,5,677,0,676,1); AddCata("Undead Normal",.UndeadTwo,30,99,0,2500,2500,20,673,10,677,0,670,1); AddCata("Undead Hard",.UndeadThree,70,99,0,10000,10000,30,673,20,677,1,670,rand(0,2)); AddCata("Level 99",.Trans,99,150,0,4000000,4000000,30,673,30,677,1,670,2); AddCata("Level 110",.Trans110,110,150,1,10000000,10000000,30,673,30,677,1,670,2); AddCata("Level 120",.Trans120,120,250,1,20000000,20000000,30,673,30,677,1,670,2); AddCata("Level 130",.TransNormal,130,250,1,40000000,40000000,30,673,30,677,1,670,2); AddCata("Level 140",.TransNor140,140,250,1,150000000,60000000,30,673,30,677,1,670,2); AddCata("Level 150",.TransMedium,150,250,1,200000000,80000000,30,673,30,677,1,670,2); AddCata("Level 160",.TransMed160,160,250,1,400000000,100000000,30,673,30,677,1,670,2); AddCata("Level 170",.TransMed170,170,250,1,800000000,1500000000,30,673,30,677,1,670,2); AddCata("Level 180",.TransMed180,180,250,1,1800000000,1800000000,30,673,30,677,1,670,2); AddCata("Level 190",.TransMed190,190,250,1,50000000000,50000000000,30,673,30,677,1,670,2); AddCata("MVP",.TransMVP,200,250,0,1000000000000,1000000000000,30,673,50,12210,1,677,5,670,4); AddCata("Indeterminate",.Indeterminate,66,250,0,1000000,1000000,20,673,25,677,5,670,2); //You can add as much mobs as you want! //AddMob(<.var>,<mob id>,<min count>,<max count> {,<extra .var{,<extra .var...}}); AddMob(.Easy,1052,25,75); AddMob(.Easy,1076,25,75); AddMob(.Easy,1015,25,75); AddMob(.Easy,1014,25,75); AddMob(.Easy,1055,25,75); AddMob(.Easy,1019,25,75); AddMob(.Easy,1178,25,75); AddMob(.Easy,1023,25,75); AddMob(.Easy,1153,25,75); AddMob(.Easy,1060,25,75); AddMob(.Easy,1013,25,75); AddMob(.Easy,1127,25,75); AddMob(.Easy,1106,25,75); AddMob(.Easy,1028,25,75); AddMob(.Easy,1026,25,75); AddMob(.Easy,1053,25,75); AddMob(.Easy,1031,25,75); AddMob(.Easy,1024,25,75); AddMob(.Easy,1052,25,75); AddMob(.Easy,1077,25,75); AddMob(.Easy,1033,25,75); AddMob(.Easy,1141,25,75); AddMob(.Easy,1613,25,75); AddMob(.Easy,1139,25,75); AddMob(.Easy,1152,25,75); AddMob(.Easy,1243,25,75); AddMob(.Normal,1146,50,100); AddMob(.Normal,1016,50,100); AddMob(.Normal,1177,25,75); AddMob(.Normal,1044,25,75); AddMob(.Normal,1273,25,75); AddMob(.Normal,1188,25,75); AddMob(.Normal,1170,25,75); AddMob(.Normal,1248,25,75); AddMob(.Normal,1164,25,75); AddMob(.Normal,1417,25,75); AddMob(.Normal,1628,25,75); AddMob(.Normal,1041,25,75); AddMob(.Normal,1261,25,75); AddMob(.Normal,1032,25,75); AddMob(.Normal,1249,25,75); AddMob(.Normal,1215,25,75); AddMob(.Normal,1140,25,75); AddMob(.Normal,1836,25,75); AddMob(.Normal,1036,25,75); AddMob(.Normal,1143,25,75); AddMob(.Normal,1776,25,75); AddMob(.Normal,1616,25,75); AddMob(.Normal,1102,25,75); AddMob(.Normal,1155,25,75); AddMob(.Normal,1517,25,75); AddMob(.Normal,1189,25,75); AddMob(.Normal,1493,25,75); AddMob(.Normal,1213,25,75); AddMob(.Normal,1149,25,75); AddMob(.Normal,1512,25,75); AddMob(.Normal,1369,25,75); AddMob(.Normal,1193,25,75); AddMob(.Normal,1117,25,75); AddMob(.Hard,1206,25,50); AddMob(.Hard,1154,25,50); AddMob(.Hard,1883,25,50); AddMob(.Hard,1321,25,50); AddMob(.Hard,1504,25,50); AddMob(.Hard,1314,25,50); AddMob(.Hard,1317,25,50); AddMob(.Hard,1297,25,50); AddMob(.Hard,1310,25,50); AddMob(.Hard,1365,25,50); AddMob(.Hard,1617,25,50); AddMob(.Hard,1318,25,50); AddMob(.Hard,1717,25,50); AddMob(.Hard,1372,25,50); AddMob(.Hard,1316,25,50); AddMob(.Hard,1366,25,50); AddMob(.Hard,1148,25,50); AddMob(.Hard,1219,25,50); AddMob(.Trans,1098,25,50,.Trans110,.Trans120); AddMob(.Trans,1315,25,50,.Trans110,.Trans120); AddMob(.Trans,1714,25,50,.Trans110,.Trans120); AddMob(.Trans,1319,25,50,.Trans110,.Trans120); AddMob(.Trans,1366,25,50,.Trans110,.Trans120); AddMob(.Trans,1505,25,50,.Trans110,.Trans120); AddMob(.Trans,1148,25,50,.Trans110,.Trans120); AddMob(.Trans,1316,25,50,.Trans110,.Trans120); AddMob(.Trans,1376,25,50,.Trans110,.Trans120); AddMob(.TransNormal,1716,25,50,.TransNor140); AddMob(.TransNormal,1713,25,50,.TransNor140); AddMob(.TransNormal,1769,25,50,.TransNor140); AddMob(.TransNormal,1098,25,50,.TransNor140); AddMob(.TransNormal,1315,25,50,.TransNor140); AddMob(.TransNormal,1714,25,50,.TransNor140); AddMob(.TransNormal,1319,25,50,.TransNor140); AddMob(.TransNormal,1376,25,50,.TransNor140); AddMob(.TransNormal,1866,25,50,.TransNor140); AddMob(.TransNormal,1867,25,50,.TransNor140); AddMob(.TransNormal,2017,25,50,.TransNor140); AddMob(.TransNormal,1206,25,50,.TransNor140); AddMob(.TransNormal,1154,25,50,.TransNor140); AddMob(.TransNormal,1883,25,50,.TransNor140); AddMob(.TransNormal,1321,25,50,.TransNor140); AddMob(.TransNormal,1504,25,50,.TransNor140); AddMob(.TransNormal,1314,25,50,.TransNor140); AddMob(.TransNormal,1317,25,50,.TransNor140); AddMob(.TransNormal,1297,25,50,.TransNor140); AddMob(.TransNormal,1310,25,50,.TransNor140); AddMob(.TransNormal,1365,25,50,.TransNor140); AddMob(.TransNormal,1617,25,50,.TransNor140); AddMob(.TransNormal,1318,25,50,.TransNor140); AddMob(.TransNormal,1717,25,50,.TransNor140); AddMob(.TransNormal,1372,25,50,.TransNor140); AddMob(.TransNormal,1316,25,50,.TransNor140); AddMob(.TransNormal,1366,25,50,.TransNor140); AddMob(.TransNormal,1148,25,50,.TransNor140); AddMob(.TransNormal,1219,25,50,.TransNor140); AddMob(.TransMedium,1716,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1713,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1759,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1786,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1769,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1098,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1315,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1714,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1319,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1376,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1866,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1867,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,2017,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1716,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1713,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1759,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1786,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1769,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1098,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1315,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1714,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1319,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1376,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1866,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1867,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1310,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1365,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1617,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1318,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1717,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1372,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1316,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1366,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1148,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1219,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1268,1,3,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1720,1,3,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1289,1,3,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMVP,1511,1,2); AddMob(.TransMVP,1785,1,5); AddMob(.TransMVP,1389,1,2); AddMob(.TransMVP,1112,1,2); AddMob(.TransMVP,1252,1,2); AddMob(.TransMVP,1251,1,2); AddMob(.TransMVP,1147,1,2); AddMob(.TransMVP,1159,1,2); AddMob(.TransMVP,1038,1,2); AddMob(.TransMVP,1087,1,2); AddMob(.TransMVP,1150,1,2); AddMob(.TransMVP,1086,1,2); AddMob(.TransMVP,1115,1,2); AddMob(.TransMVP,1150,1,2); AddMob(.TransMVP,1159,1,2); AddMob(.TransMVP,1583,1,2); AddMob(.TransMVP,1492,1,2); AddMob(.TransMVP,1190,1,2); AddMob(.TransMVP,1511,1,2); AddMob(.Indeterminate,1033,200,300); AddMob(.Indeterminate,1057,200,300); AddMob(.Indeterminate,1784,200,300); AddMob(.Indeterminate,1178,200,300); AddMob(.Indeterminate,1067,200,300); AddMob(.Indeterminate,1153,200,300); AddMob(.Indeterminate,1023,200,300); AddMob(.Indeterminate,1044,200,300); AddMob(.Indeterminate,1165,200,300); AddMob(.Indeterminate,1164,200,300); AddMob(.Indeterminate,1041,200,300); AddMob(.Indeterminate,1032,200,300); AddMob(.Indeterminate,1249,200,300); AddMob(.Indeterminate,1376,25,50); AddMob(.Indeterminate,1098,25,50); AddMob(.Indeterminate,1366,25,50); AddMob(.UndeadOne,1076,25,75); AddMob(.UndeadOne,1015,25,75); AddMob(.UndeadOne,1064,25,75); AddMob(.UndeadOne,1153,25,75); AddMob(.UndeadOne,1071,25,75); AddMob(.UndeadOne,1152,25,75); AddMob(.UndeadOne,1028,25,75); AddMob(.UndeadOne,1026,25,75); AddMob(.UndeadOne,1169,25,75); AddMob(.UndeadTwo,1016,25,75); AddMob(.UndeadTwo,1188,25,75); AddMob(.UndeadTwo,1041,25,75); AddMob(.UndeadTwo,1032,25,75); AddMob(.UndeadTwo,1036,25,75); AddMob(.UndeadTwo,1616,25,75); AddMob(.UndeadTwo,1192,25,75); AddMob(.UndeadTwo,1512,25,75); AddMob(.UndeadTwo,1117,25,75); AddMob(.UndeadThree,1132,25,75); AddMob(.UndeadThree,1297,25,75); AddMob(.UndeadThree,1098,25,75); AddMob(.UndeadThree,1401,25,75); AddMob(.UndeadThree,1505,25,75); AddMob(.UndeadThree,1219,25,75); end; }
  24. atcommand "<command>"; Hi, atcommand has no parameter for char/account ID. Find: .@command$ = "@summony " + .@mob_id + " " + .@qty; atcommand(.@command$, getcharid(3)); Replace: .@command$ = "@summony " + .@mob_id + " " + .@qty + " " + getcharid(3); atcommand(.@command$);
×
×
  • Create New...