¡Vota por nosotros!

Vota diariamente por XatiyaRO para mejorar nuestra reputación y ayudarnos a crecer.

RagnaTOP - Top Ragnarok Online en Español Ragnarok private server
private server TOP RO Hispano

Autor Tema: [Guía NPC] Capitulo IV  (Leído 6385 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Alepcis

  • First Job
  • *
  • Mensajes: 307
  • Todo es un sueño, una falsa realidad.
  • Guild: Agua&Jabón[GL]
  • Pj Principal: Alepcis
[Guía NPC] Capitulo IV
« en: 03 de Diciembre de 2013, 09:27:26 am »
Capitulo IV
Algunas notas más acerca de scripts
Guía tomada y actualizada de éste foro.
Después de saber optimizar los npcs de manera sencilla podremos hacer algunos trucos para ahorrarlos hacer scriptings repetidas veces.

¿Sabes cómo se hace para que esté una Healer y una Agente Warp en todas las ciudades? ¿Crees qué es un npc por ciudad?. En realidad no es así se usa una herramienta muy útil duplicate para optimizar el uso de npcs y como bien dice duplicar el npc por todo el servidor (o alguna ubicación específica).

Tomaremos en cuenta un código hecho por mí.
Código: [Seleccionar]
//====================================================================================
//                        Invocador de monstruos tipo Boss       |
//====================================================================================
//                              Por: Alepcis        |
//====================================================================================
//                                  rAthena                          |
//====================================================================================

- script Config -1,{
OnInit:
setarray $@monster_gldvs[0],1038,1039,1046,1059,1086,1087,1096,1112,1115,1120,1147,1150,1157,1159,1190,1251,1252,1272,1312,1373,1388,1389,1418,1492,1511,1582,1583,1623,1630,1658,1685,1688,1708,1719,1734,1751,1768,1779,1785,1832,1871,1873,1885,2022;
set $@mapa$, "map_battle";
end;
}
- script Invocador -1,{
OnWhisperGlobal:
set .@nombre$,"[^0000FFInvocador Especial^000000]";
mes .@nombre$;
mes "Hola "+strcharinfo(0)+", yo puedo ayudarte a invocar un mob de la lista";
mes "Tendrá un costo en Zeny";
next;
mes .@nombre$;
mes "Escoje el mob que quieres soltar.";
next;
for (set .@i, 0; .@i < getarraysize($@monster_gldvs); set .@i, .@i + 1)
set .@menu$, .@menu$ + getmonsterinfo($@monster_gldvs[.@i],0) + ":";
set .@mob, select(.@menu$)-1;
next;
mes .@nombre$;
mes "¿Seleccionaste "+getmonsterinfo($@monster_gldvs[.@mob],0)+"?";
next;
mes .@nombre$;
mes "¿Estás seguro de que quieres invocar "+getmonsterinfo($@monster_gldvs[.@mob],0)+"?";
next;
if (select("Sí:No") == 2) {
mes .@nombre$;
mes "Regresa cuando quieras invocar una mob";
close;
}else{
if(Zeny>=1000000){
mes .@nombre$;
set .@mob_name$,getmonsterinfo($@monster_gldvs[.@mob],0);
mes "Muy bien. Recuerda vuelve cuando quieras.";
close2;
set Zeny,Zeny-1000000;
monster $@mapa$,25,25,.@mob_name$,$@monster_gldvs[.@mob],1;
close;
}else{
mes .@nombre$;
mes "Vuelve cuando tengas más zeny";
close;
}
}
}
alberta,25,240,6 duplicate(Invocador) Invocador#alb 909
aldebaran,135,118,6 duplicate(Invocador) Invocador#alde 909
amatsu,200,79,4 duplicate(Invocador) Invocador#ama 909
ayothaya,207,169,6 duplicate(Invocador) Invocador#ayo 909
comodo,184,158,6 duplicate(Invocador) Invocador#com 909
einbech,57,36,6 duplicate(Invocador) Invocador#einbe 909
einbroch,57,202,6 duplicate(Invocador) Invocador#einbr 909
geffen,115,72,6 duplicate(Invocador) Invocador#gef 909
gonryun,156,122,6 duplicate(Invocador) Invocador#gon 909
hugel,89,150,6 duplicate(Invocador) Invocador#hug 909
izlude,121,150,6 duplicate(Invocador) Invocador#izl 909
jawaii,250,139,4 duplicate(Invocador) Invocador#jaw 909
lighthalzen,152,100,6 duplicate(Invocador) Invocador#lhz 909
louyang,226,103,4 duplicate(Invocador) Invocador#lou 909
moc_ruins,72,164,4 duplicate(Invocador) Invocador#moc 909
morocc,153,97,6 duplicate(Invocador) Invocador#mor 909
moscovia,220,191,4 duplicate(Invocador) Invocador#mos 909
payon,179,106,4 duplicate(Invocador) Invocador#pay 909
prontera,162,193,4 duplicate(Invocador) Invocador#prt 909
rachel,125,116,6 duplicate(Invocador) Invocador#rac 909
umbala,105,148,3 duplicate(Invocador) Invocador#umb 909
veins,217,121,4 duplicate(Invocador) Invocador#ve 909
xmas,143,136,4 duplicate(Invocador) Invocador#xmas 909
yuno,164,45,4 duplicate(Invocador) Invocador#yuno 909

El Npc nos permite invocar un Boss específico mediante un menú, en mi caso es un mapa que yo mismo hice para poder invocar la mob, tiene un costo de 1m y cualquiera podrá hacer invocación desde cualquiera de las ciudades que están previamente duplicadas con su ubicación especifica. El mapa al cual serán invocados los mobs es map_battle.

prontera,162,193,4   duplicate(Invocador)   Invocador#prt   909
Código: [Seleccionar]
prontera,162,193,4%TAB%duplicate(Invocador)%TAB%Invocador#prt%TAB%909prontera,162,193,4:
Es la ubicación en la que podremos encontrar al duplicado del Npc.
duplicate(Invocador):
Se especifica que será un duplicado del Npc llamado Invocador.
Invocador#prt:
Nos indica que el Npc se llamará Invocador, se le agrega un #prt para eliminar el posible parse duplicate del emulador, además de saber que es el Invocador que está en prontera #prt(prontera abreviado).
999:
Es el sprite que llevará el Npc de esa ubicación, puede ser uno diferente para cada una de las ciudades o lugares.

El npc "principal" deberá llevar la siguiente sintaxis en el encabezado.
-   script   Nombre    -1,{
Código: [Seleccionar]
-%TAB%script%TAB%Nombre%TAB%-1,{
« Última modificación: 09 de Diciembre de 2013, 05:34:40 am por Alepcis »




Desconectado Alepcis

  • First Job
  • *
  • Mensajes: 307
  • Todo es un sueño, una falsa realidad.
  • Guild: Agua&Jabón[GL]
  • Pj Principal: Alepcis
Re:[Guía NPC] Capitulo IV
« Respuesta #1 en: 09 de Diciembre de 2013, 05:35:10 am »
Actualizado y mejorado algunos elementos.