

Racaae
Members-
Posts
269 -
Joined
-
Last visited
-
Days Won
42
Racaae's Achievements
-
I just tried it and it's working fine for me. Please share what you put in the file and how you tested it.
-
The 2023+ clients use new job IDs for the jRO costumes: JOB_RUNE_KNIGHT_2ND = 4332, JOB_MECHANIC_2ND = 4333, JOB_GUILLOTINE_CROSS_2ND = 4334, JOB_WARLOCK_2ND = 4335, JOB_ARCHBISHOP_2ND = 4336, JOB_RANGER_2ND = 4337, JOB_ROYAL_GUARD_2ND = 4338, JOB_GENETIC_2ND = 4339, JOB_SHADOW_CHASER_2ND = 4340, JOB_SORCERER_2ND = 4341, JOB_SURA_2ND = 4342, JOB_MINSTREL_2ND = 4343, JOB_WANDERER_2ND = 4344, You need to add them in the source. Open file \src\common\mmo.hpp. Find JOB_SKY_EMPEROR2 = 4316, then add the following code below it: JOB_RUNE_KNIGHT_2ND = 4332, JOB_MECHANIC_2ND, JOB_GUILLOTINE_CROSS_2ND, JOB_WARLOCK_2ND, JOB_ARCHBISHOP_2ND, JOB_RANGER_2ND, JOB_ROYAL_GUARD_2ND, JOB_GENETIC_2ND, JOB_SHADOW_CHASER_2ND, JOB_SORCERER_2ND, JOB_SURA_2ND, JOB_MINSTREL_2ND, JOB_WANDERER_2ND, Save the file then recompile the server. I've updated the example script for you: // callfunc "F_JobSuit",<Job ID>; //Change to specific sprite // callfunc "F_JobSuit",-1; //Change to 2nd job // callfunc "F_JobSuit",-2; //Change to transcendent 2nd job // callfunc "F_JobSuit",-3; //Change to 3rd job // callfunc "F_JobSuit",-4; //Change to 4th job // callfunc "F_JobSuit",-5; //Change to alternative third class costume // callfunc "F_JobSuit"; //Return to default sprite function script F_JobSuit { .@block_expanded_jobs = false; //Disable changing for expanded job player (true/false) if (getargcount() == 0) { if (PACKETVER >= 20231220) setlook LOOK_BODY2,Class; else if (JobSuit_id > 4331 && JobSuit_id < 4345) setlook LOOK_BODY2,0; else changebase Class; JobSuit_active = false; JobSuit_id = 0; end; } if (getarg(0) > -1) { if (jobname(getarg(0)) == "Unknown Job") { dispbottom "Unknown Job"; end; } callsub S_OK,getarg(0),1; } if (.@block_expanded_jobs && (BaseClass == Job_Novice || BaseClass == Job_Summoner || BaseClass == Job_Gunslinger || BaseClass == Job_Ninja || BaseClass == Job_Taekwon)) end; if (BaseClass == Job_Summoner) { if (Upper) callsub S_OK,Job_Summoner; else callsub S_OK,Job_Spirit_Handler; } else if (BaseClass == Job_Gunslinger) { switch(getarg(0)) { case -1: callsub S_OK,Job_Gunslinger; case -2: case -3: callsub S_OK,Job_Rebellion; case -4: case -5: default: callsub S_OK,Job_Night_Watch; } } else if (BaseClass == Job_Ninja) { switch(getarg(0)) { case -1: callsub S_OK,Job_Ninja; case -2: case -3: callsub S_OK,(Sex ? Job_Kagerou : Job_Oboro); case -4: case -5: default: callsub S_OK,(Sex ? Job_Shinkiro : Job_Shiranui); } } else if (BaseClass == Job_Novice) { switch(getarg(0)) { case -1: callsub S_OK,Job_Novice,1; case -2: case -3: callsub S_OK,Job_Super_Novice; case -4: case -5: default: callsub S_OK,Job_Hyper_Novice; } } else if (BaseJob == Job_Soul_Linker) { switch(getarg(0)) { case -1: case -2: callsub S_OK,Job_Soul_Linker; case -3: callsub S_OK,Job_Soul_Reaper; case -4: case -5: default: callsub S_OK,Job_Soul_Ascetic; } } else if (BaseJob == Job_Star_Gladiator) { switch(getarg(0)) { case -1: callsub S_OK,Job_Taekwon; case -2: callsub S_OK,Job_Star_Gladiator; case -3: callsub S_OK,Job_Star_Emperor; case -4: case -5: default: callsub S_OK,Job_Sky_Emperor; } } switch(getarg(0)) { case -1: callsub S_OK,roclass(eaclass()&EAJ_UPPERMASK); case -2: callsub S_OK,roclass(eaclass()&EAJ_UPPERMASK|EAJL_UPPER); case -3: callsub S_OK,roclass(eaclass()&EAJ_THIRDMASK|EAJL_THIRD); case -4: .@job = roclass(eaclass()&EAJ_THIRDMASK|EAJL_THIRD); callsub S_OK,roclass(eaclass(.@job)|EAJL_FOURTH|EAJL_UPPER); case -5: .@job = roclass(eaclass()&EAJ_THIRDMASK|EAJL_THIRD); if (.@job > 0) callsub S_OK,roclass(eaclass(.@job)|EAJL_FOURTH|EAJL_UPPER)+80; } S_OK: .@c = getarg(0); if (.@c < 1 && getarg(1,0) == 0) end; if (PACKETVER >= 20231220) setlook LOOK_BODY2,.@c; else if (.@c > 4331 && .@c < 4345) setlook LOOK_BODY2,1; else changebase .@c; JobSuit_active = true; JobSuit_id = .@c; end; } - script #JobSuitOnLogin -1,{ OnPCLoginEvent: if (JobSuit_active) F_JobSuit(JobSuit_id); end; }
-
Hello, I don't see the variable being set in your item script. You can use OnPCLoginEvent on a NPC to reapply the appearance. Replace changebase with setlook LOOK_BODY2. Example using a function: Script: | callfunc "F_JobSuit"; UnEquipScript: | callfunc "F_JobSuit",-1; // callfunc "F_JobSuit"; //Change to evolution sprite // callfunc "F_JobSuit",<Job ID>; //Change to specific sprite // callfunc "F_JobSuit",-1; //Return to default sprite function script F_JobSuit { if (getarg(0,0) != -1) { if (jobname(getarg(0,-1)) != "Unknown Job") .@c = getarg(0); else if (BaseJob == Job_Priest) .@c = JOB_ARCH_BISHOP; else if (BaseJob == Job_Wizard) .@c = JOB_WARLOCK; else if (BaseJob == Job_Blacksmith) .@c = JOB_MECHANIC; else if (BaseJob == Job_Hunter) .@c = JOB_RANGER; else if (BaseJob == Job_Assassin) .@c = JOB_GUILLOTINE_CROSS; else if (BaseJob == Job_Crusader) .@c = JOB_ROYAL_GUARD; else if (BaseJob == Job_Monk) .@c = JOB_SURA; else if (BaseJob == Job_Sage) .@c = JOB_SORCERER; else if (BaseJob == Job_Rogue) .@c = JOB_SHADOW_CHASER; else if (BaseJob == Job_Alchemist) .@c = JOB_GENETIC; else if (BaseJob == Job_Bard) .@c = JOB_MINSTREL; else if (BaseJob == Job_Dancer) .@c = JOB_WANDERER; if (PACKETVER >= 20231220) setlook LOOK_BODY2,.@c; else changebase .@c; JobSuit_active = true; JobSuit_id = .@c; end; } if (PACKETVER >= 20231220) setlook LOOK_BODY2,Class; else changebase Class; JobSuit_active = false; JobSuit_id = 0; end; } - script #JobSuitOnLogin -1,{ OnPCLoginEvent: if (JobSuit_active) F_JobSuit(JobSuit_id); end; }
-
Hola. Agrega esto en /db/import/item_db.txt: 22522,100LVUP,Caja de Subida de Nivel 100,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,100,,{ getitem 12263,5; getitem 12264,5; getitem 12265,5; getitem 12766,5; getitem 22523,1; },{},{} 22523,120LVUP,Caja de Subida de Nivel 120,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,120,,{ getitem 12263,5; getitem 12264,5; getitem 12265,5; getitem 12766,5; getitem 22525,1; },{},{} 22525,140LVUP,Caja de Subida de Nivel 140,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,140,,{ getitem 12263,5; getitem 12264,5; getitem 12265,5; getitem 12766,5; getitem 22527,1; },{},{} 22527,160LVUP,Caja de Subida de Nivel 160,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,160,,{ getitem 12263,5; getitem 12264,5; getitem 12265,5; getitem 12766,5; getitem 23276,1; },{},{} 23276,175LVUP,Caja de Subida de Nivel 175,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,175,,{ getitem 12263,5; getitem 12264,5; getitem 12265,5; getitem 12766,5; },{},{} 23937,1LVUP_TW,Caja de Subida de Nivel 1,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12263,5; getitem 12264,5; getitem 12265,5; getitem 12766,5; getitem 23938,1; },{},{} 23938,10LVUP_TW,Caja de Subida de Nivel 10,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,10,,{ getitem 12263,5; getitem 12264,5; getitem 12265,5; getitem 12766,5; getitem 23939,1; },{},{} 23939,20LVUP_TW,Caja de Subida de Nivel 20,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,20,,{ getitem 12263,5; getitem 12264,5; getitem 12265,5; getitem 12766,5; getitem 23940,1; },{},{} 23940,30LVUP_TW,Caja de Subida de Nivel 30,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,30,,{ getitem 12263,5; getitem 12264,5; getitem 12265,5; getitem 12766,5; getitem 23941,1; },{},{} 23941,40LVUP_TW,Caja de Subida de Nivel 40,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,40,,{ getitem 12263,5; getitem 12264,5; getitem 12265,5; getitem 12766,5; getitem 23942,1; },{},{} 23942,50LVUP_TW,Caja de Subida de Nivel 50,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,50,,{ getitem 12263,5; getitem 12264,5; getitem 12265,5; getitem 12766,5; getitem 23944,1; },{},{} 23944,70LVUP_TW,Caja de Subida de Nivel 70,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,70,,{ getitem 12263,5; getitem 12264,5; getitem 12265,5; getitem 12766,5; getitem 23945,1; },{},{} 23945,80LVUP_TW,Caja de Subida de Nivel 80,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,80,,{ getitem 12263,5; getitem 12264,5; getitem 12265,5; getitem 12766,5; getitem 23946,1; },{},{} 23946,90LVUP_TW,Caja de Subida de Nivel 90,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,90,,{ getitem 12263,5; getitem 12264,5; getitem 12265,5; getitem 12766,5; getitem 22522,1; },{},{} Busca los IDs de los ítems que vienen en las cajas y cambia la parte del getitem para que coincida con ellos.
-
Los scripts de Euphy y tr0n usan variables con OnNPCKillEvent y el color del texto es fijo. Para mostrar los números de muertes en color amarillo, necesitarás usar el sistema oficial de misiones (setquest / checkquest / erasequest), donde cada muerte cuenta para los miembros del grupo, pero la probabilidad siempre es del 100%. Para agregar una nueva misión personalizada, abre el archivo: import/quest_db.yml (o import/quest_db.txt si tu rAthena está desactualizado). Ejemplo: - Id: 7148 Title: The training course 'conquer the orc village!' - A real battle 1 Targets: - Mob: ORC_BABY Count: 10 Y el archivo en tu carpeta del cliente: System/OngoingQuestInfoList (o data/questid2display.txt si tu ejecutable del cliente es antiguo). Ejemplo: [7148] = { Title = "¡Conquista el Pueblo de los Orcos!", Description = { "Pueden ser crías, pero se convierten en feroces Guerreros orco. Caza 10 Bebés orco en el Pueblo de los Orcos." }, Summary = "" }, Luego, usa el ID de la misión en el NPC. Ejemplo: prontera,150,150,4 script Cazador Simple 123,{ if(checkquest(7148) == -1) { // Misión no iniciada mes "[Cazador Simple]"; mes "¡Necesito ayuda cazando monstruos!"; mes "¿Puedes cazar 10 Bebés orco para mí?"; next; if(select("Aceptar:Rechazar") == 1) { mes "[Cazador Simple]"; mes "¡Genial! Regresa cuando hayas terminado."; setquest 7148; close; } mes "[Cazador Simple]"; mes "Tal vez la próxima vez entonces."; close; } else if(checkquest(7148,HUNTING) == 2) { // Caza completada mes "[Cazador Simple]"; mes "¡Excelente trabajo! Aquí tienes tu recompensa."; getexp 5000,0; erasequest 7148; close; } else if(checkquest(7148) == 1) { // Misión activa pero no completada mes "[Cazador Simple]"; mes "¡Sigue cazando! Aún no has terminado."; close; } } moc_para01,39,36,5 script Gestor de Misiones#2024 732,{ mes "[^FF7700Gestor de Misiones^000000]"; mes "Hola, por favor selecciona una misión"; while (true) { switch(select((.hunting)?" ~ Misión de Cacería":"", (.collection)?" ~ Misión de Recolección":"")) { case 1: set .@huntmenu$, ""; for(set .@i,0; .@i < .huntingquestcount; set .@i,.@i+1){ if (.@i) set .@huntmenu$,.@huntmenu$ + ":"; if (gettimetick(2) < getd((.@i+1) + "_hunting_delay")) .@c$ = "^808080"; else .@c$ = "^000000"; set .@huntmenu$, .@huntmenu$ + .@c$ + "[Nv " + getd("." +(.@i+1)+"_huntingmin") + "-" + getd("." +(.@i+1)+"_huntingmax") + "] " + getd("." + (.@i+1) + "_huntingname$"); } set @selection,select(.@huntmenu$); clear; if (.quest_repeat == true) { if(gettimetick(2) < getd(@selection + "_hunting_delay")){ mes "[^FF7700Gestor de Misiones^000000]"; mes "¡Lo siento, debes esperar 24 horas antes de repetir esta misión!"; mes "Por favor espera hasta ^0000FF"+Time2Str(getd(@selection + "_hunting_delay"))+"^000000."; close; } } else { if (getd(@selection + "_hunting_repeat") == true){ mes "[^FF7700Gestor de Misiones^000000]"; mes "Ya completaste esta misión."; mes "Por favor elige otra."; close; } } mes "[^FF7700Gestor de Misiones^000000]"; .@size = getarraysize(getd("."+ @selection + "_huntingmob")); if (.@size == 2) mes "Por favor caza y elimina a ^FF0000"+getd("."+@selection+"_huntingmob[1]")+" " + getmonsterinfo(getd("."+@selection+"_huntingmob[0]"),MOB_NAME)+"^000000."; else { mes "Por favor caza y elimina los siguientes monstruos:"; for(set .@j, 0; .@j < .@size; set .@j,.@j+2) mes "- ^FF0000"+getd("."+@selection+"_huntingmob["+(.@j+1)+"]")+" " + getmonsterinfo(getd("."+@selection+"_huntingmob["+.@j+"]"),MOB_NAME)+"^000000"; } next; mes "[^FF7700Gestor de Misiones^000000]"; mes "Recompensas:"; if (getd("." +@selection+"_huntingexp[0]")) mes "^0000FF" + F_InsertComma(getd("." +@selection+"_huntingexp[0]"))+" EXP Base^000000"; if (getd("." +@selection+"_huntingexp[1]")) mes "^0000FF" + F_InsertComma(getd("." +@selection+"_huntingexp[1]"))+" EXP de Clase^000000"; if (getd("." +@selection+"_huntingzeny")) mes "Zeny: ^0000FF"+getd("." +@selection+"_huntingzeny")+"^000000"; if (getd("." +@selection+"_huntingprize[0]")) { for(.@i = 0; .@i < getarraysize(getd("." +@selection+"_huntingprize")); .@i++) mes getd("." +@selection+"_huntingamount") + " " + getitemname((getd("." +@selection+"_huntingprize["+.@i+"]"))); } switch(select("- Aceptar Misión", "- Entregar Misión Completada", "- Cancelar")) { case 1: clear; if (isbegin_quest(getd("." + @selection+"_huntingid"))) goto havetaken; if (BaseLevel >= getd("." +@selection+"_huntingmin") && BaseLevel <= getd("." +@selection+"_huntingmax")){ mes "[^FF7700Gestor de Misiones^000000]"; mes "Misión aceptada."; set h_run, true; set currentquest$, @selection; setquest getd("." + @selection+"_huntingid"); close; } else{ mes "[^FF7700Gestor de Misiones^000000]"; mes "No cumples con el nivel requerido para esta misión."; close; } case 2: clear; switch(checkquest(getd("." +@selection+"_huntingid"),HUNTING)) { case -1: goto nottaken; case 2: mes "[^FF7700Gestor de Misiones^000000]"; mes "¡Bien hecho!"; mes "Aquí están tus recompensas."; if(getd("." +@selection+"_huntingprize[0]")) { for(.@i = 0; .@i < getarraysize(getd("." +@selection+"_huntingprize")); .@i++) getitem(getd("." +@selection+"_huntingprize["+.@i+"]"),getd("." +@selection+"_huntingamount")); } set Zeny, Zeny+getd("." +@selection+"_huntingzeny"); getexp getd("." +@selection+"_huntingexp[0]"),getd("." +@selection+"_huntingexp[1]"); erasequest getd("." +@selection+"_huntingid"); setd(@selection + "_hunting_delay"),gettimetick(2)+.quest_delay; setd(@selection + "_hunting_repeat"),true; set @selection, ""; set h_run, false; end; default: mes "[^FF7700Gestor de Misiones^000000]"; mes "Aún no has derrotado a todos los monstruos."; close; } case 3: end; } case 2: clear; mes "[^FF7700Gestor de Misiones^000000]"; mes "El gremio siempre necesita más recursos."; mes "Por favor, selecciona el área en la que deseas ayudar hoy."; set .@collectmenu$, ""; for( set .@i,0; .@i < .collectionquestcount; set .@i,.@i+1){ if (.@i) set .@collectmenu$,.@collectmenu$ + ":"; if (gettimetick(2) < getd((.@i+1) + "_collection_delay")) .@c$ = "^808080"; else .@c$ = "^000000"; set .@collectmenu$, .@collectmenu$ + .@c$ + "[Nv " + getd("." +(.@i+1)+"_collectionmin") + "-" + getd("." +(.@i+1)+"_collectionmax") + "] " + getd("." + (.@i+1) + "_collectionname$"); } set @selection,select(.@collectmenu$); clear; if(.quest_repeat == true){ if(gettimetick(2) < getd(@selection + "_collection_delay")){ mes "[^FF7700Gestor de Misiones^000000]"; mes "¡Lo siento, debes esperar 24 horas antes de repetir esta misión!"; mes "Por favor espera hasta ^0000FF"+Time2Str(getd(@selection + "_collection_delay"))+"^000000."; close; } } else{ if(getd(@selection + "_collection_repeat") == true){ mes "[^FF7700Gestor de Misiones^000000]"; mes "Ya completaste esta misión."; mes "Por favor elige otra."; close; } } mes "[^FF7700Gestor de Misiones^000000]"; mes "Necesitamos lo siguiente:"; set .@size, getarraysize(getd("."+ @selection + "_collectionitem")); for( set .@j, 0; .@j < .@size; set .@j,.@j+2){ .@a = countitem(getd("."+@selection+"_collectionitem["+.@j+"]")); if (.@a < getd("."+@selection+"_collectionitem["+(.@j+1)+"]")) .@c$ = "^FF0000"; else .@c$ = ""; mes .@c$ + getd("."+@selection+"_collectionitem["+(.@j+1)+"]") + " " + getitemname(getd("."+@selection+"_collectionitem["+.@j+"]")) + ": " + "(" + .@a + "/"+getd("."+@selection+"_collectionitem["+(.@j+1)+"]") + ")^000000"; } next; mes "[^FF7700Gestor de Misiones^000000]"; mes "Recompensa:"; if (getd("." +@selection+"_collectionexp["+0+"]")) mes "^0000FF" + F_InsertComma(getd("." +@selection+"_collectionexp["+0+"]")) + " EXP Base^000000"; if (getd("." +@selection+"_collectionexp["+1+"]")) mes "^0000FF" + F_InsertComma(getd("." +@selection+"_collectionexp["+1+"]")) + " EXP de Clase^000000"; if (getd("." +@selection+"_collectionzeny")) mes "Zeny: ^0000FF"+getd("." +@selection+"_collectionzeny")+"^000000"; if (getd("." +@selection+"_collectionprize[0]")) { for(.@i = 0; .@i < getarraysize(getd("." +@selection+"_collectionprize")); .@i++) mes getd("." +@selection+"_collectionamount") + " " + getitemname((getd("." +@selection+"_collectionprize["+.@i+"]"))); } if (BaseLevel < getd("." +@selection+"_collectionmin") || BaseLevel > getd("." +@selection+"_collectionmax")) { next; mes "[^FF7700Gestor de Misiones^000000]"; mes "No cumples con el nivel requerido para esta misión."; } else { if(select("- Entregar objetos", "- Volver") == 1) { clear; set .@size, getarraysize(getd("."+@selection + "_collectionitem")); for( set .@k,0; .@k < .@size; set .@k,.@k+2) { if(countitem(getd("."+@selection+"_collectionitem["+.@k+"]"))>=getd("."+@selection+"_collectionitem["+(.@k+1)+"]")){ set .@checkitem,.@checkitem+2; } } if(.@checkitem<.@size){ mes "[^FF7700Gestor de Misiones^000000]"; mes "No tienes todos los objetos necesarios."; mes F_Rand("¿Olvidaste el objeto en el almacenamiento?","Tal vez intenta con otra misión.",""); break; } for( set .@delcount,0; .@delcount < .@size; set .@delcount,.@delcount+2){ delitem getd("."+@selection+"_collectionitem["+.@delcount+"]"),getd("."+@selection+"_collectionitem["+(.@delcount+1)+"]"); } mes "[^FF7700Gestor de Misiones^000000]"; mes "¡Bien hecho!"; mes "Aquí están tus recompensas."; if(getd("." +@selection+"_collectionprize[0]")) { for(.@i = 0; .@i < getarraysize(getd("." +@selection+"_collectionprize")); .@i++) getitem(getd("." +@selection+"_collectionprize["+.@i+"]"),getd("." +@selection+"_collectionamount")); } set Zeny,Zeny+getd("." +@selection+"_collectionzeny"); getexp getd("." +@selection+"_collectionexp["+0+"]"),getd("." +@selection+"_collectionexp["+1+"]"); setd(@selection + "_collection_delay"),gettimetick(2)+.quest_delay; setd(@selection + "_collection_repeat"),true; set @selection, ""; close; } else { clear; mes "[^FF7700Gestor de Misiones^000000]"; mes F_Rand("¿No fue de tu agrado?","¿Solo estás mirando?","¡Vamos a encontrar la misión adecuada para ti!"); } } break; case 3: close; } if (rand(3) == 1) mes "¿Qué tal una misión de " + F_Rand("cacería","recolección","aventura","ayuda") + " hoy?"; } OnInit: function AddCollection; function AddHunting; questinfo QTYPE_DAILYQUEST, QMARK_NONE; //Activate/Deactivate quest categories (true/1 - activated, false/0 - deactivated) set .collection, true; set .hunting, true; //Quest Delay (seconds) //24 hours = 86400 seconds set .quest_delay, 120; //Activate/Deactivate repeatable quests (true/1 - activated, false/0 - deactivated) set .quest_repeat, true; //Activate/Deactivate party support (true/1 - activated, false/0 - deactivated) set .party_support, true; //Max range for party support (+- x & y coordinations) set .party_range, 25; //Checks if quests are loaded (prevents out of index) if(.questsloaded==true) end; set .questsloaded, true; //Add Hunting Quests here (You can add as many required mobs as you want) //AddHunting("<Quest Name>",<Quest ID>,<Min Lvl>,<Max Lvl>,<Reward|Item ID>,<Reward|Item Amount>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Monster ID>,<Monster Amount>,...); AddHunting("Prontera Field 01",11340,1,21,"608|609|501|502",1,0,2100,2100,1063,10); AddHunting("Prontera Field 02",11341,1,51,"610",1,0,27300,14700,1063,3,1113,3,1031,3); AddHunting("Descendencia de los orcos",7148,30,99,"610",1,0,27300,14700,1686,10); //Add Collection Quests here (You can add as many required items as you want) //AddCollection("<Quest Name>",<Min Lvl>,<Max Lvl>,<Reward|Item ID>,<Reward|Item Amount>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Item ID>,<Item Amount>,...); AddCollection("Foliage Gathering",1,11,"502",1,0,2100,2100,705,10,707,10,7100,10,706,1); AddCollection("Herb Gathering",1,21,"611|612|613|614",1,0,2100,2100,507,8,508,8,509,8,510,8,511,8,621,3); AddCollection("Flower Gathering",1,31,"607",1,0,2100,2100,704,10,708,10,703,10,709,10); AddCollection("Vegetable Gathering",1,41,"607",1,0,2100,2100,515,10,516,10,535,10); end; function AddCollection{ set .collectionquestcount,.collectionquestcount+1; setd ("." +.collectionquestcount+"_collectionname$", getarg(0)); setd ("." +.collectionquestcount+"_collectionmin", getarg(1)); setd ("." +.collectionquestcount+"_collectionmax", getarg(2)); explode(getd(".@" +.collectionquestcount+"_collectionprize$"), getarg(3) + "", "|"); for(.@i = 0; .@i < getarraysize(getd(".@" +.collectionquestcount+"_collectionprize$")); .@i++) setd ("."+.collectionquestcount+"_collectionprize["+.@i+"]",atoi(getd(".@" +.collectionquestcount+"_collectionprize$["+.@i+"]"))); //setd ("." +.collectionquestcount+"_collectionprize", getarg(3)); setd ("." +.collectionquestcount+"_collectionamount", getarg(4)); setd ("." +.collectionquestcount+"_collectionzeny", getarg(5)); set .@argcount, 6; set .@size, getarraysize(getd("."+ .collectionquestcount + "_collectionexp")); setd ("." +.collectionquestcount+"_collectionexp["+.@size+"]",getarg(.@argcount)); setd ("." +.collectionquestcount+"_collectionexp["+(.@size+1)+"]",getarg(.@argcount+1)); set .@argcount, .@argcount+2; set .@size, getarraysize(getd("."+ .collectionquestcount + "_collectionitem")); while(getarg(.@argcount,-1)!=-1 && getarg(.@argcount+1,-1)!=-1){ setd ("."+.collectionquestcount+"_collectionitem["+.@size+"]",getarg(.@argcount)); setd ("."+.collectionquestcount+"_collectionitem["+(.@size+1)+"]",getarg(.@argcount+1)); set .@argcount,.@argcount+2; set .@size, .@size+2; } return; } function AddHunting{ set .huntingquestcount,.huntingquestcount+1; setd ("." +.huntingquestcount+"_huntingname$", getarg(0)); setd ("." +.huntingquestcount+"_huntingid", getarg(1)); setd ("." +.huntingquestcount+"_huntingmin", getarg(2)); setd ("." +.huntingquestcount+"_huntingmax", getarg(3)); explode(getd(".@" +.huntingquestcount+"_huntingprize$"), getarg(4) + "", "|"); for(.@i = 0; .@i < getarraysize(getd(".@" +.huntingquestcount+"_huntingprize$")); .@i++) setd ("."+.huntingquestcount+"_huntingprize["+.@i+"]",atoi(getd(".@" +.huntingquestcount+"_huntingprize$["+.@i+"]"))); setd ("." +.huntingquestcount+"_huntingamount", getarg(5)); setd ("." +.huntingquestcount+"_huntingzeny", getarg(6)); set .@size, getarraysize(getd("."+ .huntingquestcount + "_huntingexp")); set .@argcount, 7; setd ("." +.huntingquestcount+"_huntingexp["+.@size+"]",getarg(.@argcount)); setd ("." +.huntingquestcount+"_huntingexp["+(.@size+1)+"]",getarg(.@argcount+1)); set .@argcount, .@argcount+2; set .@size, getarraysize(getd("."+ .huntingquestcount + "_huntingmob")); while(getarg(.@argcount,-1)!=-1 && getarg(.@argcount+1,-1)!=-1){ setd ("."+.huntingquestcount+"_huntingmob["+.@size+"]",getarg(.@argcount)); setd ("."+.huntingquestcount+"_huntingmob["+(.@size+1)+"]",getarg(.@argcount+1)); set .@argcount, .@argcount+2; set .@size, .@size+2; } return; } havetaken: clear; mes "[^FF7700Gestor de Misiones^000000]"; mes "Lo siento, ya tienes esta misión activa."; close; nottaken: clear; mes "[^FF7700Gestor de Misiones^000000]"; mes "Parece que aún no has aceptado esta misión."; close; }
-
I modified the file for you. - script atcmd_example -1,{ OnAtcommand: .@itemid = atoi(.@atcmd_parameters$[0]); .@refine = atoi(.@atcmd_parameters$[1]); .@card1 = atoi(.@atcmd_parameters$[2]); .@card2 = atoi(.@atcmd_parameters$[3]); .@card3 = atoi(.@atcmd_parameters$[4]); .@card4 = atoi(.@atcmd_parameters$[5]); if (getitemname(.@itemid) != "null") { if (getiteminfo(.@itemid, 2) != IT_CARD && (!.allowed_items[0] || inarray(.allowed_items, .@itemid) != -1)) { for( .@i = 0; .@i < getarraysize( .rent_time ); .@i++ ) { .@s_count = 0; if (.cost_cash[.@i]) .@s$[.@s_count++] = F_InsertComma(.cost_cash[.@i]) + " CASH"; if (.cost_item_id && .cost_item_amt[.@i]) { .@payment_option = 1; .@s$[.@s_count++] = .cost_item_amt[.@i]+"x " + getitemname( .cost_item_id ); } if (.cost_zeny[.@i]) { .@payment_option = 2; .@s$[.@s_count++] = F_InsertComma(.cost_zeny[.@i]) + "z"; } if (getarraysize(.@s$) == 1) .@s2$ = " ^0000FF[" + .@s$[0] + "]^000000"; .@menu$ += "Rent for " + .rent_time[.@i] + " day" + (.rent_time[.@i]>1?"s":"") + .@s2$ + ":"); } .@i = select(.@menu$) - 1; if (.@s_count > 1) { message strcharinfo(0), "Renting " + getitemname(.@itemid) + ". Choose the Payment option."; if (.cost_cash[.@i]) .@t1$ = "Pay " + F_InsertComma(.cost_cash[.@i]) + " CASH"; if (.cost_item_id && .cost_item_amt[.@i]) .@t2$ = "Pay " + .cost_item_amt[.@i]+"x " + getitemname( .cost_item_id ); if (.cost_zeny[.@i]) .@t3$ = "Pay " + F_InsertComma(.cost_zeny[.@i]) + "z"; if (select("Cancel", .@t1$, .@t2$, .@t3$) == 1) end; .@payment_option = @menu - 2; } switch(.@payment_option) { case 0: if ( #CASHPOINTS < .cost_cash[.@i] ) { dispbottom "You don't have enough CASH."; end; } #CASHPOINTS -= .cost_cash[.@i]; break; case 1: if ( countitem( .cost_item_id ) < .cost_item_amt[.@i] ) { dispbottom getitemname( .cost_item_id ) + " is insufficient."; end; } delitem .cost_item_id, .cost_item_amt[.@i]; break; case 2: if ( Zeny < .cost_zeny[.@i] ) { dispbottom "You don't have enough Zeny."; end; } Zeny -= .cost_zeny[.@i]; break; } rentitem2 .@itemid, .rent_time[.@i] * 86400,1,.@refine,0,.@card1,.@card2,.@card3,.@card4; } else { dispbottom .@atcmd_command$+" - You cant rent "+getitemname(.@itemid); } } else { dispbottom .@atcmd_command$+" - invalid item #"+.@itemid; } end; OnInit: //== SETTINGS ================== setarray .allowed_items,5000; setarray .rent_time,1,7,30; //rent time options in days setarray .cost_cash,100,600,1500; //Cost in Cash for each option - comment (//) to disable setarray .cost_zeny,10000000,15000000,30000000; //Cost in Zeny for each option - comment (//) to disable //.cost_item_id = 7929; //ID of the item used for exchange - comment (//) to disable setarray .cost_item_amt,3,5,10; //Cost (in item) for each time option - comment (//) to disable //=================================== bindatcmd("rentitem", strnpcinfo(3)+"::OnAtcommand"); if (.cost_item_id && .cost_item_amt[0] && getitemname(.cost_item_id) == "null") { errormes "Invalid Item ID for rental cost shop. Skipping."; deletearray .cost_item_amt, getarraysize(.cost_item_amt); } end; } SPA:
-
me falta el mapa de iz_int03 y posiblemente script...
Racaae replied to JASHI11's topic in Spanish Scripting Soporte
18,27 es la coordenada oficial más reciente. Abre el archivo \conf\import\char_conf.txt y añade lo siguiente: // Punto de inicio para nuevos personajes start_point: iz_int03,18,27 Guarda el archivo y reinicia el servidor. -
Npc - Party reclutador de jugadores para subir de nivel
Racaae replied to Josemaaaaa's topic in Spanish Scripting Soporte
Hola. Sí, agrega lo siguiente en la OnInit: bindatcmd "iparty",strnpcinfo(3) + "::OnAtcommand"; Y añade OnAtcommand: en la primera línea del NPC. Full Script: -
me falta el mapa de iz_int03 y posiblemente script...
Racaae replied to JASHI11's topic in Spanish Scripting Soporte
Te teletransportaste al vacío. Aparece todo negro porque no hay nada en esa localización. Solo hay dos salas (el interior de un barco) en el mapa, como puedes ver en tus capturas de pantalla. Corrige el NPC que te envió a esas coordenadas inválidas (x,y). Pero hay una versión antigua de esos mapas, puedes usarla si quieres. old iz_int maps.zip -
He eliminado los comandos mesitemlink e itemlink que no son compatibles con rAthena 2018. Por favor, intenta ahora. Si aún no funciona: ¿Aparece algún error o mensaje en la consola del map-server al cargar los scripts? ¿O al utilizar el comando? Si te funcionó, ¡dale un voto positivo al post, por favor! - script CouponNPC#main -1,{ S_Start: //Set code type (0 = normal | 1 = MD5-Hash) .code_type = 0; //Set code length .code_length = 12; //Set Min. GM Level to add new coupons .code_gmlvl = 99; setarray .coupon_code$[0],"A","B","C","D","E","F","G","H","I","J","K","L", "M","N","O","P","Q","R","S","T","U","V","W","X", "Y","Z","0","1","2","3","4","5","6","7","8","9"; if (getgmlevel() >= .code_gmlvl) { mes "[^FF7700Cupón Jack^000000]"; mes "Bienvenido GM " + strcharinfo(0) + "."; next; switch(select("Agregar cupón", "Mostrar cupones", "Menú normal", "Cancelar")) { case 1: do { mes "[^FF7700Cupón Jack^000000]"; mes "Ingrese el ID del objeto:"; input @coupon_item; if (getitemname(@coupon_item) == "null") { clear; mes "[^FF7700Cupón Jack^000000]"; mes "ID del objeto " + @coupon_item + " no encontrado."; if (select("Intentar de nuevo", "Cancelar") == 2) close; } else break; } while (true); do { clear; mes "[^FF7700Cupón Jack^000000]"; mes getitemname(@coupon_item) + "?"; mes "Ingrese la cantidad del objeto:"; input @coupon_amount; if (@coupon_amount < 1 || @coupon_amount > 10000) { clear; mes "[^FF7700Cupón Jack^000000]"; mes @coupon_amount + " no es una cantidad válida."; if (select("Intentar de nuevo", "Cancelar") == 2) close; } else break; } while (true); do { clear; mes "[^FF7700Cupón Jack^000000]"; mes @coupon_amount + "x " + getitemname(@coupon_item); mes "¿Cuántos cupones desea crear con estas mismas recompensas?"; next; if (select("Uno", "Ingresar cantidad") == 2) { input .@coupons; if (.@coupons < 1 || .@coupons > 50) { clear; mes "[^FF7700Cupón Jack^000000]"; mes .@coupons + " no es una cantidad válida."; if (select("Intentar de nuevo", "Cancelar") == 2) close; } else break; } else break; } while (true); if (.@coupons < 2) .@coupons = 1; do { switch(select("Generar código aleatorio", "Ingresar código manual", "Cancelar")) { case 1: .@random = true; break; case 2: clear; mes "[^FF7700Cupón Jack^000000]"; mes "Ingrese el cupón:"; mes "Longitud máxima: " + .code_length + " caracter(es)"; input .@input_name$; if(getstrlen(.@input_name$) < 0 || getstrlen(.@input_name$) > .code_length) { clear; mes "[^FF7700Cupón Jack^000000]"; mes "Inválido."; mes "El cupón debe tener al menos 1 caracter y un máximo de " + .code_length + " caracter(es)"; } else { for(.@i = 0; .@i < .@coupons; .@i++) .@new_coupon$[.@i] = .@input_name$; } break; case 3: close; } } while (.@new_coupon$[0] == "" && !.@random); if (.@random || .@coupons > 1) { .@length = .code_length; if (.@new_coupon$[0] != "") { .@endchar = getstrlen(.@new_coupon$[0]); .@length = maximum(.code_length,(.@endchar+4)); } for(.@i = 0; .@i < .@coupons; .@i++) { for(.@j = .@endchar; .@j < .@length; .@j++) { .@random_char = rand(getarraysize(.coupon_code$)); .@new_coupon$[.@i] += .coupon_code$[.@random_char]; } if (.code_type == 1) .@new_coupon$[.@i] = md5(.@new_coupon$[.@i]); } } clear; mes "[^FF7700Cupón Jack^000000]"; mes @coupon_amount + "x " + getitemname(@coupon_item); for(.@i = 0; .@i < .@coupons; .@i++) mes "Cupón" + (.@coupons>1?" "+(.@i+1):"") + ": ^EE8800" + .@new_coupon$[.@i] + "^000000"; if(select("^0000FFConfirmar " + F_InsertPlural(.@coupons,"cupón") + "^000000", "Cancelar") == 2) close; for(.@i = 0; .@i < .@coupons; .@i++) query_sql "INSERT INTO `coupons` (`code`, `item_id`, `item_amount`) VALUES ('" + escape_sql(.@new_coupon$[.@i]) + "', "+@coupon_item+", "+@coupon_amount+")"; clear; mes "[^FF7700Cupón Jack^000000]"; mes F_InsertPlural(.@coupons,"cupón") + " agregado."; for(.@i = 0; .@i < .@coupons; .@i++) mes "Cupón" + (.@coupons>1?" "+(.@i+1):"") + ": ^EE8800" + .@new_coupon$[.@i] + "^000000"; close; case 2: mes "[^FF7700Cupón Jack^000000]"; query_sql "SELECT `code`, `item_id`, `item_amount` FROM `coupons`", .@available_code$, .@available_item, .@available_amount; .@total_codes = getarraysize(.@available_code$); if (!.@total_codes) mes "No hay códigos disponibles."; dispbottom "==============================="; dispbottom "Código | Objeto | Cantidad"; for(.@i = 0; .@i < .@total_codes; .@i++) { mes "--------------------------------"; mes "Objeto: " + getitemname(.@available_item[.@i]); mes "Cantidad: " + .@available_amount[.@i]; mes "Código: " + .@available_code$[.@i]; dispbottom .@available_code$[.@i] + " | " + getitemname(.@available_item[.@i]) + " | x" + .@available_amount[.@i]; } dispbottom "==============================="; close; case 3: break; case 4: mes "[^FF7700Cupón Jack^000000]"; mes "¡Que tenga un buen día!"; close; } } mes "[^FF7700Cupón Jack^000000]"; mes "Bienvenido al sistema de códigos de cupones. ¿En qué puedo ayudarte?"; mes " ", "También puedes usar el comando", "^0000FF@claim <código del cupón>^000000 desde cualquier parte del mundo."; next; switch(Select("Canjear cupón", "Cancelar")) { case 1: mes "[^FF7700Cupón Jack^000000]"; mes "Por favor, introduce tu código de cupón:"; input .@my_code$; clear; callsub S_Submit,.@my_code$; close; case 2: mes "[^FF7700Cupón Jack^000000]"; mes "¡Que tenga un buen día!"; close; } S_Submit: .@my_code$ = getarg(0); query_sql "SELECT `code`, `item_id`, `item_amount` FROM `coupons`", .@available_code$, .@available_item, .@available_amount; for (@i = 0; @i < getarraysize(.@available_code$); @i++) { if (strtoupper(.@my_code$) == strtoupper(.@available_code$[@i])) { if (checkweight(.@available_item[@i],.@available_amount[@i]) == 0) { if (getarg(1,0)) { message strcharinfo(0), "No tienes suficiente espacio en el inventario para reclamar este cupón."; end; } mes "[^FF7700Cupón Jack^000000]"; mes "No tienes suficiente espacio en el inventario para reclamar este cupón."; close; } query_sql "DELETE FROM `coupons` WHERE `code`='" + escape_sql(.@my_code$) + "'"; getitem .@available_item[@i],.@available_amount[@i]; if (getarg(1,0)) { message strcharinfo(0), "¡Cupón canjeado! Has recibido " + getitemname(.@available_item[@i]) + " - " + .@available_amount[@i] + " unidad(es).^000000"; end; } mes "[^FF7700Cupón Jack^000000]"; mes "Has recibido ^0000FF" + getitemname(.@available_item[@i]) + " - " + .@available_amount[@i] + " unidad(es).^000000"; close; } } if (getarg(1,0)) { message strcharinfo(0), "El cupón " + .@my_code$ + " no existe o ya fue canjeado."; end; } mes "[^FF7700Cupón Jack^000000]"; mes "Este código de cupón no existe o ya fue canjeado."; close; OnInit: query_sql "CREATE TABLE IF NOT EXISTS `coupons` (`code` TINYTEXT NOT NULL, `item_id` INT NOT NULL, `item_amount` INT NOT NULL, INDEX `code` (`code`(32)) ) ENGINE=MyISAM"; if (strnpcinfo(2) == "main") bindatcmd "claim",strnpcinfo(3)+"::OnAtcommand"; end; OnAtcommand: if (.@atcmd_parameters$[0] != "") callsub S_Submit,implode(.@atcmd_parameters$, " "),1; callsub S_Start; end; } //Uncomment to enable clickable NPC //prontera,146,173,5 duplicate(CouponNPC#main) Cupón Jack 807
-
Clean NPC database without customs per April 2022
Racaae replied to kyleflow33's question in General Support
Hi. You can search by date on github to download files from any date you need. Click the "commits" tab near the top, find the commit with the date you want and click the "<>" button on the right (or click the commit and then find the "Browse files" button, it's the same thing). Example: https://github.com/rathena/rathena/commits/master?since=2022-04-01&until=2022-04-30 -
pack bienvenida + anunciador global + opcion dex - int - str
Racaae replied to JASHI11's topic in Spanish Scripting Soporte
OK. No existía el comando meitemlink en 2018. Adaptado para ti: iz_int,24,34,3 script Pack Bienvenida 4_F_EDEN_OFFICER,6,6,{ .@server_name$ = "Apocalypse RO"; //Item ID, Item amount setarray .@items_INT, 5126,1, // Morpheus's Hood 2518,1, // Morpheus's Shawl 2648,1, // Morpheus's Ring 2649,1, // Morpheus's Bracelet 100054,1, // Shadow Transcendental Time Crate 11567,200, // [Event] Novice Potion 12324,30, // Novice Butterfly Wing 12325,30, // Novice Magnifier 12323,50, // Novice Fly Wing 11572,30, // [Event] Blue Potion 12264,2; // [Event] Bubble Gum //Item ID, Item amount setarray .@items_DEX, 5544,1, // Time Keeper Hat 15007,1, // Time Keeper Robe 2145,1, // Time Keeper Shield 2455,1, // Time Keeper Shoes 2559,1, // Time Keeper Manteau 19218,1, // Time Keeper Glasses 28511,1, // Time Keeper Ring 11567,200, // [Event] Novice Potion 12324,30, // Novice Butterfly Wing 12325,30, // Novice Magnifier 12323,50, // Novice Fly Wing 11572,10, // [Event] Blue Potion 12263,2; // [Event] Battle Manual //Item ID, Item amount setarray .@items_STR, 5127,1, // Morrigane's Helm 2519,1, // Morrigane's Manteau 2650,1, // Morrigane's Belt 2651,1, // Morrigane's Pendant 11567,300, // [Event] Novice Potion 12324,30, // Novice Butterfly Wing 12325,30, // Novice Magnifier 12323,50, // Novice Fly Wing 11572,10, // [Event] Blue Potion 7776,2; // Gym Pass cutin "laime_evenor01",2; mes "[Pack Bienvenida]"; mes "Hola ^FF0000" + strcharinfo(0) + "^000000."; mes "¡Bienvenido a ^00B2EE" + .@server_name$ + "^000000!"; next; switch(select("^000088Reclamar Pack Bienvenida^000000", "Cancelar")) { case 1: if (#freebies) { mes "[Pack Bienvenida]"; mes "Ya tienes tu pack de inicio."; close3; } switch(select("Paquete INT", "Paquete DEX", "Paquete STR", "Cancelar")) { case 1: copyarray .@list[0],.@items_int,getarraysize(.@items_int); break; case 2: copyarray .@list[0],.@items_dex,getarraysize(.@items_dex); break; case 3: copyarray .@list[0],.@items_str,getarraysize(.@items_str); break; case 4: close3; } mes "[Pack Bienvenida]"; mes "¿Está seguro? Contenido del ^43572FPack^000000:"; for (.@x = 0; .@x < getarraysize(.@list); .@x += 2) mes (.@list[.@x+1]>1?.@list[.@x+1] + "x ":"") + getitemname(.@list[.@x]); mes "^FF0000Solo puedes recibir el pack una vez.^000000"; next; if (select("Sí", "No") == 2) close3; if (#freebies) { mes "[Pack Bienvenida]"; mes "Ya tienes tu pack de inicio."; close3; } #freebies++; announce "Démosle la bienvenida a " + strcharinfo(0) + " acaba de iniciar en el servidor " + .@server_name$ + "!",0; mes "[Pack Bienvenida]"; mes "¡Aquí están tus ^43572FPack^000000!"; mes "Espero que te diviertas en ^00B2EE" + .@server_name$ + "^000000!"; for (.@x = 0; .@x < getarraysize(.@list); .@x += 2) getitem .@list[.@x], .@list[.@x+1]; close3; case 2: close3; } OnInit: questinfo QTYPE_CLICKME, QMARK_YELLOW, "!#freebies"; end; OnTouch: if (!#freebies) npctalk "Hola " + strcharinfo(0) + ". Ven a reclamar el Pack bienvenida!", "", bc_self; end; } iz_int01,24,34,3 duplicate(Pack Bienvenida) Pack Bienvenida#1 4_F_EDEN_OFFICER,6,6 iz_int02,24,34,3 duplicate(Pack Bienvenida) Pack Bienvenida#2 4_F_EDEN_OFFICER,6,6 iz_int03,24,34,3 duplicate(Pack Bienvenida) Pack Bienvenida#3 4_F_EDEN_OFFICER,6,6 iz_int04,24,34,3 duplicate(Pack Bienvenida) Pack Bienvenida#4 4_F_EDEN_OFFICER,6,6 new_1-1,57,117,3 duplicate(Pack Bienvenida) Pack Bienvenida#5 4_F_EDEN_OFFICER,6,6 new_2-1,57,117,3 duplicate(Pack Bienvenida) Pack Bienvenida#6 4_F_EDEN_OFFICER,6,6 new_3-1,57,117,3 duplicate(Pack Bienvenida) Pack Bienvenida#7 4_F_EDEN_OFFICER,6,6 new_4-1,57,117,3 duplicate(Pack Bienvenida) Pack Bienvenida#8 4_F_EDEN_OFFICER,6,6 lasa_fild01,51,306,3 duplicate(Pack Bienvenida) Pack Bienvenida#9 4_F_EDEN_OFFICER,6,6 -
pack bienvenida + anunciador global + opcion dex - int - str
Racaae replied to JASHI11's topic in Spanish Scripting Soporte
El script me funciona bien. ¿Cuál es tu versión de rAthena? ¿Aparece algún error o mensaje en la consola del map-server al cargar los scripts? ¿Aparece algún error o mensaje en la consola del map-server al hacer clic en el NPC? -
pack bienvenida + anunciador global + opcion dex - int - str
Racaae replied to JASHI11's topic in Spanish Scripting Soporte
iz_int,24,34,3 script Pack Bienvenida 4_F_EDEN_OFFICER,6,6,{ .@server_name$ = "Apocalypse RO"; //Item ID, Item amount setarray .@items_INT, 5126,1, // Morpheus's Hood 2518,1, // Morpheus's Shawl 2648,1, // Morpheus's Ring 2649,1, // Morpheus's Bracelet 100054,1, // Shadow Transcendental Time Crate 11567,200, // [Event] Novice Potion 12324,30, // Novice Butterfly Wing 12325,30, // Novice Magnifier 12323,50, // Novice Fly Wing 11572,30, // [Event] Blue Potion 12264,2; //[Event] Bubble Gum //Item ID, Item amount setarray .@items_DEX, 5544,1, // Time Keeper Hat 15007,1, // Time Keeper Robe 2145,1, // Time Keeper Shield 2455,1, // Time Keeper Shoes 2559,1, // Time Keeper Manteau 19218,1, // Time Guardian Glasses 28511,1, // Time Guardian Ring 11567,200, // [Event] Novice Potion 12324,30, // Novice Butterfly Wing 12325,30, // Novice Magnifier 12323,50, // Novice Fly Wing 11572,10, // [Event] Blue Potion 12263,2; //[Event] Battle Manual //Item ID, Item amount setarray .@items_STR, 5127,1, // Morrigane's Helm 2519,1, // Morrigane's Manteau 2650,1, // Morrigane's Belt 2651,1, // Morrigane's Pendant 11567,300, // [Event] Novice Potion 12324,30, // Novice Butterfly Wing 12325,30, // Novice Magnifier 12323,50, // Novice Fly Wing 11572,10, // [Event] Blue Potion 7776,2; //Gym Pass cutin "laime_evenor01",2; mes "[Pack Bienvenida]"; mes "Hola ^FF0000" + strcharinfo(0) + "^000000."; mes "¡Bienvenido a ^00B2EE" + .@server_name$ + "^000000!"; next; switch(select("^000088Reclamar Pack Bienvenida^000000", "Cancelar")) { case 1: if (#freebies) { mes "[Pack Bienvenida]"; mes "Ya tienes tu pack de inicio."; close3; } switch(select("Paquete INT", "Paquete DEX", "Paquete STR", "Cancelar")) { case 1: copyarray .@list[0],.@items_int,getarraysize(.@items_int); break; case 2: copyarray .@list[0],.@items_dex,getarraysize(.@items_dex); break; case 3: copyarray .@list[0],.@items_str,getarraysize(.@items_str); break; case 4: close3; } mes "[Pack Bienvenida]"; mes "¿Está seguro? Contenido del ^43572FPack^000000:"; for (.@x = 0; .@x < getarraysize(.@list); .@x += 2) mes (.@list[.@x+1]>1?.@list[.@x+1] + "x ":"") + mesitemlink(.@list[.@x]); mes "^FF0000Solo puedes recibir el pack una vez.^000000"; next; if (select("Sí", "No") == 2) close3; if (#freebies) { mes "[Pack Bienvenida]"; mes "Ya tienes tu pack de inicio."; close3; } #freebies++; announce "Démosle la bienvenida a " + strcharinfo(0) + " acaba de iniciar en el servidor " + .@server_name$ + "!",0; mes "[Pack Bienvenida]"; mes "¡Aquí están tus ^43572FPack^000000!"; mes "Espero que te diviertas en ^00B2EE" + .@server_name$ + "^000000!"; for (.@x = 0; .@x < getarraysize(.@list); .@x += 2) getitem .@list[.@x], .@list[.@x+1]; close2; cutin "",255; cloakonnpcself; end; case 2: close3; } OnInit: questinfo QTYPE_CLICKME, QMARK_YELLOW, "!#freebies"; end; OnTouch: if (!#freebies) npctalk "Hola " + strcharinfo(0) + ". Ven a reclamar el Pack bienvenida!", "", bc_self; end; } iz_int01,24,34,3 duplicate(Pack Bienvenida) Pack Bienvenida#1 4_F_EDEN_OFFICER,6,6 iz_int02,24,34,3 duplicate(Pack Bienvenida) Pack Bienvenida#2 4_F_EDEN_OFFICER,6,6 iz_int03,24,34,3 duplicate(Pack Bienvenida) Pack Bienvenida#3 4_F_EDEN_OFFICER,6,6 iz_int04,24,34,3 duplicate(Pack Bienvenida) Pack Bienvenida#4 4_F_EDEN_OFFICER,6,6 new_1-1,57,117,3 duplicate(Pack Bienvenida) Pack Bienvenida#5 4_F_EDEN_OFFICER,6,6 new_2-1,57,117,3 duplicate(Pack Bienvenida) Pack Bienvenida#6 4_F_EDEN_OFFICER,6,6 new_3-1,57,117,3 duplicate(Pack Bienvenida) Pack Bienvenida#7 4_F_EDEN_OFFICER,6,6 new_4-1,57,117,3 duplicate(Pack Bienvenida) Pack Bienvenida#8 4_F_EDEN_OFFICER,6,6 lasa_fild01,51,306,3 duplicate(Pack Bienvenida) Pack Bienvenida#9 4_F_EDEN_OFFICER,6,6 -
You can delete or comment out the following line so the NPC doesn't exist. The @claim command will still work. SPA: Puedes eliminar o comentar la siguiente línea para que no exista el NPC. El comando @claim seguirá funcionando. Find: prontera,146,173,5 duplicate(CouponNPC#main) Cupón Jack 807 Replace: //prontera,146,173,5 duplicate(CouponNPC#main) Cupón Jack 807