Jump to content

mizanyan

Members
  • Posts

    9
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

mizanyan's Achievements

Drops

Drops (2/15)

  • One Month Later
  • Week One Done
  • Dedicated
  • First Post
  • Reacting Well

Recent Badges

0

Reputation

  1. Hello, I made it work with your sample, thank you very much. But there's still a problem that I can't solve. As is, the player can enter the instances anytime without limit, how can I set a cooldown so the player must wait to enter again? Based on the instance quest that the normal npcs give, like quest 16400 for Edda Biolab for example. Here is the npc I made: prontera,151,190,6 script Sample Instance 101,{ // Define the instance names in a dynamic array setarray .@instance_ids$[1], "Edda Bio", "Old Glast Heim", "Endless Tower"; // Show the list of instances to the player and get the selected index .@selected_index = select("Edda Bio", "Old Glast Heim", "Endless Tower"); .@instance$ = .@instance_ids$[.@selected_index]; // Get the corresponding instance name from the array if (instance_id(IM_PARTY)) { // Check if the party is already part of an instance if (instance_live_info(ILI_NAME, instance_id(IM_PARTY)) == .@instance$) { mes "[Sample Instance]"; mes "Your party is already part of the "+.@instance$+" instance."; close; } else { mes "[Sample Instance]"; mes "Your party is already part of an instance."; close; } } mes "[Sample Instance]"; mes "Would you like to try the "+.@instance$+" instance?"; next; switch(select("Create Instance.:Cancel.")) { case 1: // Check if a valid instance name is chosen if (.@instance$ != "") { .@create = instance_create(.@instance$); if (.@create < 0) { mes "[Sample Instance]"; switch (.@create) { case -1: mes "ERROR: Invalid type."; break; case -2: mes "ERROR: Party not found."; break; case -3: mes "ERROR: Instance already exists."; break; case -4: mes "ERROR: No free instances."; break; } mes " "; mes "Instance creation ^FF0000failed^000000."; emotion ET_HUK; close; } mes "[Sample Instance]"; mes "Instance created."; mes " "; mes "Now entering the instance..."; next; .@enter = instance_enter(.@instance$); if (.@enter != 0) { mes "[Sample Instance]"; switch (.@enter) { case 1: mes "ERROR: Party not found."; break; case 2: mes "ERROR: Party does not have an instance."; break; case 3: mes "ERROR: Unknown error."; break; } mes " "; mes "Instance entry ^FF0000failed^000000."; emotion ET_HUK; close; } close; } else { mes "[Sample Instance]"; mes "ERROR: Invalid instance selection."; emotion ET_HMM; close; } break; case 2: mes "[Sample Instance]"; mes "Okay. Maybe next time!"; close; } close; }
  2. Hello rAthena. I was searching for a NPC that can start any instance in the game without the need to go through all the required quest, just click and go! More or less like the warper npc but for instances only. Of course with the cooldown to enter the instance again and all. I lack the knowledge to make one from scratch, I just need a base to work on. If anyone could help me it would be lovely, thanks in advance.
  3. I've tried your method but it doesn't spawn anything and it says in chat that already exist a npc in the map so I assume the goldpc button calls a invisible npc. Maybe it needs to modify in the source for it to work? This is the patch I applied btw: https://github.com/rathena/rathena/pull/7410 I wanted it to call the shop window directly without the need of the npc at all.
  4. Hello @Poring King. The npc already spawn besides me if I click on Goldpc button on the top of the screen. I want to know if theres a way to make the shop window open up directly instead of having to spawn a npc and click on him. I've posted 2 videos, first one is how it is right now and second one is what I want to be. prontera,156,181,5 script Hourly Point Manager::GOLDPCCAFE 10380,{ cutin("ep18_merchant.png", 2); callshop("hourly_shop", 1); npcshopattach("hourly_shop"); end; OnBuyItem: mes("[Hourly Point Manager]"); if (!checkweight2(@bought_nameid, @bought_quantity)) { mes("Sorry, you can't carry all these items!"); close3; } for (.@i = 0; .@i < getarraysize(@bought_nameid); .@i++){ .@itemIndex = inarray(.Shop, @bought_nameid[.@i]); .@costs += (.Shop[.@itemIndex + 1] * @bought_quantity[.@i]); } if (.@costs > Goldpc_Points) { mes("You don't have enough Hourly Points."); close3; } Goldpc_Points -= .@costs; for(.@i = 0; .@i < getarraysize(@bought_nameid); .@i++) { getitem(@bought_nameid[.@i], @bought_quantity[.@i]); dispbottom("Purchased " + @bought_quantity[.@i] + " x " + getitemname(@bought_nameid[.@i]) + "."); } mes("Purchased successfully!"); mes("You have ^0000ff" + Goldpc_Points + "^000000 points remaining."); close3; OnInit: setarray(.Shop[0], 13534, 1, 13810, 1, 14532, 1, 14606, 1, 12211, 1, 7776, 25); npcshopitem("hourly_shop", 13534, 1, 13810, 1, 14532, 1, 14606, 1, 12211, 1, 7776, 25); } 2023-07-18 15-29-23.mp4 2023-07-18 15-36-34.mp4
  5. Hello. It's there a way to make the GoldPC button open the shop directly instead of spawning a npc besides the player?
  6. Thank you @Winterfox. Worked like a charm.
  7. I was looking into Charleston Crisis equipment and I noted that the echant NPC was outdated, the npc enchants Garment and Armor but not the Legs (22103) and the Shield (28941). I tried to include these two pieces in the npc but with no success. Can anyone help me? verus04,165,217,4 script MARS_01#pa0829 4_SCR_MT_ROBOTS,{ disable_items; if (checkweight(1201,1) == 0 || (MaxWeight - Weight) < 10000) { mes "^ff0000You have carried too many items, please reduce it and come back later.^000000"; close; } switch( isbegin_quest(12368) ) { case 0: mes "Blurred LCD screen may be frightened or happy and intense shaking, perhaps due to lack of power and can not complete the presentation."; next; if (select( "Just ignore it.", "Press every button." ) == 1) { mes "It may be a pre-scrap robot that is common everywhere and doesn't require much attention."; close; } mes "[?????]"; mes "Hello! I'm MARS_01, an exploration robot. Currently, I have entered hibernation mode to save power. The related functions are set as follows."; next; if (select( "Interrupt the machine", "Supply of fuel" ) == 1) { mes "The robot re-enters hibernation mode after a faint sound."; close; } mes "[MARS_01]"; mes "We are super power robot, as long as the old oil 1 will let me and the companion PLUTO has more than 90% of the power."; next; mes "[MARS_01]"; mes "If you find Old Fuel, please insert the fuel into the mouth of the bottom of the screen, so you can lift the hibernation mode."; setquest 12368; // Operate the old robot close; case 1: if (countitem(6962) < 1) { mes "[MARS_01]"; mes "If you find 1 " + getitemname(6962) + ", please insert the fuel into the mouth of the bottom of the screen, so you can lift the hibernation mode."; close; } mes "Maybe we ran out of power when we went looking for fuel. should we put in the fuel?"; next; if (select( "Quit.", "Put in the fuel" ) == 1) { mes "The old robot may be running out of power and not responding at all."; close; } mes "When the fuel is put in, the sound screen opens."; npctalk "Whoa, whoa?! It moves!!!", "Grandpa picking up scrap iron"; next; mes "[MARS_01]"; mes "Start the inspection system and confirm the damage of each part."; next; mes "[MARS_01]"; mes "Power meter 10%, dashboard normal, body skeleton 13%, perform mining operations well."; next; mes "[MARS_01]"; mes "Pluto_09 began to inject energy for mining auxiliary robot."; npctalk "Energy response confirmed. It's working.", "PLUTO_09#pa0829"; next; mes "[MARS_01]"; mes "Thank you for getting me started, I will reset the person who started me to be a manager."; next; select("Enter a name."); mes "[MARS_01]"; mes "" + strcharinfo(0) + ","; mes "Hello! The fuel has been fully charged."; delitem 6962,1;// OldTank completequest 12368; close; case 2: break; } mes "[MARS_01]"; mes "" + strcharinfo(0) + ","; mes "Hello! Can I help you?"; next; switch( select( "Note", "Enhanced " + getitemname(20773), "Enhanced " + getitemname(15128) ) ) { // Excelion_Wing, Excelion_Suit case 1: mes "^0000ffSoon the instructions again.^000000"; next; mes "[MARS_01]"; mes "While waiting for the new owner, we continue to update to the latest version."; next; mes "[MARS_01]"; mes "If you bring aak Seri Wong propulsion wing, aak Seri Wong jacket equipment and strengthen the design, I will strengthen the equipment according to the design."; next; mes "[MARS_01]"; mes "According to the standard design drawings of the operation, the equipment will not be damaged during the process, but the number of maximum upgrade will change depending on the type of equipment."; next; mes "[MARS_01]"; mes "Welcome back again~"; close; case 2: .@part = EQI_GARMENT; break; case 3: .@part = EQI_ARMOR; break; } // <item ID required>, <item enchant ID>, <max number of this enchant on armor>, <max number of this enchant on garment>, <enchant on first slot only> setarray .@list[0], 6965, 4970, 1,0,3, // Reactor_P_FIRE_ Reactor_P_FIRE 6966, 4971, 1,0,3, // Reactor_P_WATER_ Reactor_P_WATER 6967, 4972, 1,0,3, // Reactor_P_GROUND_ Reactor_P_GROUND 6968, 4973, 1,0,3, // Reactor_P_WIND_ Reactor_P_WIND 6969, 4974, 0,3,0, // Reactor_T_FIRE_ Reactor_T_FIRE 6970, 4975, 0,3,0, // Reactor_T_WATER_ Reactor_T_WATER 6971, 4976, 0,3,0, // Reactor_T_GROUND_ Reactor_T_GROUND 6972, 4977, 0,3,0, // Reactor_T_WIND_ Reactor_T_WIND 6973, 4978, 3,3,0, // Reactor_Cure_101_ Reactor_Cure_101 6974, 4979, 3,3,0, // Reactor_Cure_102_ Reactor_Cure_102 6975, 4980, 3,3,0, // Reactor_Cure_201_ Reactor_Cure_201 6976, 4981, 3,3,0, // Reactor_Cure_202_ Reactor_Cure_202 6977, 4982, 1,0,0, // Reactor_A_STR_ Reactor_A_STR 6978, 4983, 1,0,0, // Reactor_A_INT_ Reactor_A_INT 6979, 4984, 3,3,0, // Reactor_A_DEF_ Reactor_A_DEF 6980, 4985, 1,1,0, // Reactor_A_AVOI_ Reactor_A_AVOI 6981, 4986, 3,3,0, // Reactor_A_ATK_ Reactor_A_ATK 6982, 4987, 3,3,0, // Reactor_A_MATK_ Reactor_A_MATK 6983, 4988, 3,3,0, // Reactor_A_MHP_ Reactor_A_MHP 6984, 4989, 3,3,0, // Reactor_A_MSP_ Reactor_A_MSP 6985, 4990, 1,0,0, // Reactor_A_FROZ_ Reactor_A_FROZ 6986, 4991, 1,1,0; // Reactor_A_ASPD_ Reactor_A_ASPD .@size = getarraysize(.@list); for ( .@i = 0; .@i < .@size; .@i += 5 ) { if (countitem(.@list[.@i]) < 1) .@menu$ += sprintf( "^aaaaaa%s (Missing)^000000:", getitemname(.@list[.@i]) ); else .@menu$ += sprintf( "%s:", getitemname(.@list[.@i]) ); } mes "[MARS_01]"; mes "" + strcharinfo(0) + ","; mes "Choose the enchant you want to use!"; next; .@s = select("Quit.:" + .@menu$) - 2; if (.@s < 0) { mes "[MARS_01]"; mes "So far."; close; } .@s *= 5; .@item_req = .@list[.@s]; .@item_enchant_id = .@list[.@s+1]; .@first_slot_only = .@list[.@s+4]; .@equip_id = getequipid(.@part); .@equip_refine = getequiprefinerycnt(.@part); setarray .@card[0], getequipcardid(.@part,0), getequipcardid(.@part,1), getequipcardid(.@part,2), getequipcardid(.@part,3); if (countitem(.@item_req) < 1) { mes "[MARS_01]"; mes "So far."; close; } if (.@part == EQI_ARMOR) .@max_num_enchant = .@list[.@s+2]; else if (.@part == EQI_GARMENT) .@max_num_enchant = .@list[.@s+3]; else { mes "[MARS_01]"; mes "Please contact the administrator."; close; } // anti-hack if (callfunc("F_IsEquipIDHack", .@part, .@equip_id) || callfunc("F_IsEquipCardHack", .@part, .@card[0], .@card[1], .@card[2], .@card[3]) || callfunc("F_IsEquipRefineHack", .@part, .@equip_refine)) { mes "[MARS_01]"; mes "Did you remove your gear?"; close; } if (.@card[0] > 0 && .@item_enchant_id == .@card[0]) { .@slot_sum++; } if (.@card[1] > 0 && .@item_enchant_id == .@card[1]) { .@slot_sum++; } if (.@card[2] > 0 && .@item_enchant_id == .@card[2]) { .@slot_sum++; } if (.@card[3] > 0 && .@item_enchant_id == .@card[3]) { .@slot_sum++; } if (.@max_num_enchant < 1) { mes "[MARS_01]"; mes "The design you choose is incompatible with the equipment."; close; } if (.@first_slot_only > 0 && .@card[3] != 0) { mes "[MARS_01]"; mes "This design is only for the first time to strengthen the use, but the equipment has other performance, please use other design to strengthen it!"; close; } if (.@slot_sum >= .@max_num_enchant) { mes "[MARS_01]"; mes "The maximum number of enchants is " + .@max_num_enchant + ". The item has reached the upper limit."; close; } if (.@card[1] != 0) { mes "[MARS_01]"; mes "The number of equipment has reached the limit."; close; } // anti-hack if (callfunc("F_IsEquipIDHack", .@part, .@equip_id) || callfunc("F_IsEquipCardHack", .@part, .@card[0], .@card[1], .@card[2], .@card[3]) || callfunc("F_IsEquipRefineHack", .@part, .@equip_refine)) { mes "[MARS_01]"; mes "Please pay special attention if the equipment will be removed."; close; } switch( .@equip_id ) { case 20773: // Excelion_Wing case 15128: // Excelion_Suit break; default: mes "[MARS_01]"; mes "The product does not have a serial number, does not meet the specifications of the product can not be strengthened."; close; } mes "[MARS_01]^0000ff"; mes "Choose " + getequipname(.@part) + " + " + getitemname(.@item_req) + ","; mes "^000000------------------"; mes "Your selected design can be upgraded to the equipment limit ^0000ff" + .@max_num_enchant + " the same design, ^000000so far, enhanced ^0000ff" + .@slot_sum + " times^000000, do you want to continue?"; next; if (select( "I'll think about it...", "Go on." ) == 1) { mes "[MARS_01]"; mes "Come back next time you need me~"; close; } // anti-hack if (callfunc("F_IsEquipIDHack", .@part, .@equip_id) || callfunc("F_IsEquipCardHack", .@part, .@card[0], .@card[1], .@card[2], .@card[3]) || callfunc("F_IsEquipRefineHack", .@part, .@equip_refine)) close; if (.@card[3] == 0) { .@enchant_count = 1; .@card[3] = .@item_enchant_id; } else if (.@card[2] == 0) { .@enchant_count = 2; .@card[2] = .@item_enchant_id; } else if (.@card[1] == 0) { .@enchant_count = 3; .@card[1] = .@item_enchant_id; } else { mes "[MARS_01]"; mes "The equipment has reached the upper limit of strengthening Hello!"; close; } specialeffect2 EF_REPAIRWEAPON; mes "[MARS_01]"; if (.@enchant_count < 5) mes "The first equipment has been upgraded ^990000" + .@enchant_count + " times^000000."; else mes "For additional performance equipment^990000 ^000000 upgrade."; // never displayed delitem .@item_req, 1; delequip .@part; getitem2 .@equip_id,1,1,.@equip_refine,0,.@card[0],.@card[1],.@card[2],.@card[3]; close; }
  8. You solved my problem, thank you.
  9. Hello. I have a Healer NPC that checks if player are vip to give better buffs, I wanted to make the npc auto heals when player gets close while checking if the player is also vip account. I tried but without success, I'm a beginner so if anyone could help me I'll be grateful. //===== Cronus Script =================================================== //= Buffer VIP e não VIP //===== Criado para: ==================================================== //= Projeto AerieRO. //===== Por: ============================================================ //= Slicer //===== Versão Atual: =================================================== //= 0.4 //===== Descrição: ====================================================== //= Da buffs nos jogadores, diferenciando os grupos entre vips e comuns. //===== Changelog: ====================================================== //= 0.1 - Script criado //= 0.2 - Adicionado checagem de level. //= 0.3 - Atualizado para checagem de grupos. //= 0.4 - Adicionado efeito. //= 0.4.1 - Criado diversas duplicatas nas principais cidades. //======================================================================= - script Healer -1,{ if((getgroupid() < 1)) goto normal_player; if((getgroupid() >= 2)) goto vip_player_ouro; if((getgroupid() >= 1)) goto vip_player_prata; normal_player: if(#Healer_CD > gettimetick(2)) { mes "Você só pode curar uma vez a cada 5 segundos."; end; } specialeffect2 EF_HEAL2; specialeffect2 EF_BLESSING; percentheal 100,100; // CURA HP & SP 100% atcommand "@identifyall"; atcommand "@repairall"; sc_start SC_BLESSING,300000,5; // Blessing +5 sc_start SC_INCREASEAGI,300000,5; // Increase Agi +5 set #Healer_CD,gettimetick(2) + 5; end; vip_player_prata: if(#Healer_CD > gettimetick(2)) { mes "Você só pode curar uma vez a cada 5 segundos."; end; } specialeffect2 EF_HEAL2; specialeffect2 EF_BLESSING; percentheal 100,100; // CURA HP & SP 100% atcommand "@identifyall"; atcommand "@repairall"; sc_start SC_STRFOOD,1800000,5;// FOR + 5 sc_start SC_AGIFOOD,1800000,5;// AGI + 5 sc_start SC_VITFOOD,1800000,5;// VIT + 5 sc_start SC_INTFOOD,1800000,5;// INT + 5 sc_start SC_DEXFOOD,1800000,5;// DEX + 5 sc_start SC_LUKFOOD,1800000,5;// SOR + 5 sc_start SC_ASSUMPTIO,1800000,5; // Increase Assupition +5 sc_start SC_MATKPOTION,1800000,16;// MATK + 16 sc_start SC_ATKPOTION,1800000,16;// ATK + 16 sc_start SC_INCREASEAGI,1800000,5; // Increase Agi +5 sc_start SC_BLESSING,1800000,5; // Blessing +5 sc_start SC_ANGELUS,1800000,5; // Angelus +5 sc_start SC_MAGNIFICAT,1800000,5; // Magnificat +5 sc_start SC_GLORIA,1800000,5; // Gloria sc_start SC_IMPOSITIO,1800000,5; // Imposition sc_start SC_ENDURE,1800000,5; // Endure set #Healer_CD,gettimetick(2) + 5; end; vip_player_ouro: if(#Healer_CD > gettimetick(2)) { mes "Você só pode curar uma vez a cada 5 segundos."; end; } specialeffect2 EF_HEAL2; specialeffect2 EF_BLESSING; percentheal 100,100; // CURA HP & SP 100% atcommand "@identifyall"; atcommand "@repairall"; sc_start SC_STRFOOD,1800000,5;// FOR + 5 sc_start SC_AGIFOOD,1800000,5;// AGI + 5 sc_start SC_VITFOOD,1800000,5;// VIT + 5 sc_start SC_INTFOOD,1800000,5;// INT + 5 sc_start SC_DEXFOOD,1800000,5;// DEX + 5 sc_start SC_LUKFOOD,1800000,5;// SOR + 5 sc_start SC_ASSUMPTIO,1800000,5; // Increase Assupition +5 sc_start SC_MATKPOTION,1800000,16;// MATK + 16 sc_start SC_ATKPOTION,1800000,16;// ATK + 16 sc_start SC_INCREASEAGI,1800000,5; // Increase Agi +5 sc_start SC_BLESSING,1800000,5; // Blessing +5 sc_start SC_ANGELUS,1800000,5; // Angelus +5 sc_start SC_MAGNIFICAT,1800000,5; // Magnificat +5 sc_start SC_GLORIA,1800000,5; // Gloria sc_start SC_IMPOSITIO,1800000,5; // Imposition sc_start SC_ENDURE,1800000,5; // Endure set #Healer_CD,gettimetick(2) + 5; end; } // Duplicates //============================================================ alberta,25,240,6 duplicate(Healer) Curandeira#alb 936 aldebaran,135,118,6 duplicate(Healer) Curandeira#alde 936 amatsu,200,79,4 duplicate(Healer) Curandeira#ama 936 ayothaya,207,169,6 duplicate(Healer) Curandeira#ayo 936 comodo,184,158,6 duplicate(Healer) Curandeira#com 936 einbech,57,36,6 duplicate(Healer) Curandeira#einbe 936 einbroch,57,202,6 duplicate(Healer) Curandeira#einbr 936 geffen,115,72,6 duplicate(Healer) Curandeira#gef 936 gonryun,156,122,6 duplicate(Healer) Curandeira#gon 936 hugel,89,150,6 duplicate(Healer) Curandeira#hug 936 izlude,121,150,6 duplicate(Healer) Curandeira#izl 936 //Pre-RE: (125,118) jawaii,250,139,4 duplicate(Healer) Curandeira#jaw 936 lighthalzen,149,100,6 duplicate(Healer) Curandeira#lhz 936 louyang,226,103,4 duplicate(Healer) Curandeira#lou 936 manuk,272,144,6 duplicate(Healer) Curandeira#man 936 mid_camp,203,289,6 duplicate(Healer) Curandeira#mid 936 moc_ruins,72,164,4 duplicate(Healer) Curandeira#moc 936 morocc,153,97,6 duplicate(Healer) Curandeira#mor 936 moscovia,220,191,4 duplicate(Healer) Curandeira#mos 936 niflheim,212,182,5 duplicate(Healer) Curandeira#nif 936 payon,179,106,4 duplicate(Healer) Curandeira#pay 936 prontera,158,192,5 duplicate(Healer) Curandeira#prt 936 rachel,125,116,6 duplicate(Healer) Curandeira#rac 936 splendide,201,153,4 duplicate(Healer) Curandeira#spl 936 thor_camp,249,74,4 duplicate(Healer) Curandeira#thor 936 umbala,105,148,3 duplicate(Healer) Curandeira#umb 936 veins,217,121,4 duplicate(Healer) Curandeira#ve 936 xmas,143,136,4 duplicate(Healer) Curandeira#xmas 936 yuno,164,45,4 duplicate(Healer) Curandeira#yuno 936 // Duplicates (Renewal) //============================================================ brasilis,194,221,6 duplicate(Healer) Curandeira#bra 936 dewata,195,187,4 duplicate(Healer) Curandeira#dew 936 dicastes01,201,194,4 duplicate(Healer) Curandeira#dic 936 ecl_in01,45,60,4 duplicate(Healer) Curandeira#ecl 936 malangdo,132,114,6 duplicate(Healer) Curandeira#mal 936 malaya,227,204,6 duplicate(Healer) Curandeira#ma 936 mora,55,152,4 duplicate(Healer) Curandeira#mora 569
×
×
  • Create New...