¿Cómo hacéis la típica misión de " Vete y limpia esa zona de enemigos"?
Posteado 25 February 2020 - 12:10 PM
Yo pondría encuentros que diesen un número fijo de criaturas siempre, por ejemplo 10. Y a esas criaturas le pondría una etiqueta especial.
En el ondeath de la criatura, pondría un script personalizado, donde cada vez que muere, suma +1 a una variable. Y cuando haya matado a todos los encuentros (que serían 10 criaturas) con un if (getlocalint (oAsesino, "asesinatos") == 10), que te lance la misión del diario x. Habría que adaptar esto para que oAsesino pues fuese parte del grupo del jugador, o algún convocado... pero bueno eso es poner una aclaración de quien es oAsesino y si es valido pues ale.
Se puede hacer otra opción, que es en el onenter del area, poner un script que te cree las criaturas en x puntos de ruta. Y en en el heathbeart del area cuando vea que no hay criaturas, salte... pero yo creo que es un embrollo.
Editado por Obsidiana, 25 February 2020 - 12:14 PM.
Posteado 27 February 2020 - 09:16 AM
Como dice Obsidiana, hacelo con variables, ahorita me puse a hacer algo así, no lo he probado pero puede ser útil (ahí le cambias las variables y recompensa según tu necesidad, le puse para cuando mate 10 bichos o mas):
En OnDeath de la criatura:
void main()
{
ExecuteScript("nw_c2_default7", OBJECT_SELF);
object oPC = GetLastKiller();
while (GetIsObjectValid(GetMaster(oPC)))
{
oPC=GetMaster(oPC);
}
if (!GetIsPC(oPC)) return;
if (GetLocalInt(oPC, "mision1_activa")!= 1)
return;
int nInt;
nInt = GetLocalInt(oPC, "bichos_asesinados");
nInt += 1;
SetLocalInt(oPC, "bichos_asesinados", nInt);
}
En la conversación del NPC:
Cuando te da la misión (Acciones emprendidas):
-Acepto la misión.
void main()
{
object oPC = GetPCSpeaker();
SetLocalInt(oPC, "mision1_activa", 1);
}
Cuando entregas la misión (El texto aparece cuando):
-He terminado de limpiar la zona.
int StartingConditional()
{
object oPC = GetPCSpeaker();
if (GetLocalInt(oPC, "bichos_asesinados") <= 9) return FALSE;
return TRUE;
}
Cuando terminas la misión (Acciones emprendidas):
-Gracias por la recompensa, adios.
#include "nw_i0_tool"
void main()
{
object oPC = GetPCSpeaker();
SetLocalInt(oPC, "mision1_activa", 0);
SetLocalInt(oPC, "bichos_asesinados", 0);
RewardPartyXP(500, oPC, FALSE);
RewardPartyGP(1000, oPC, FALSE);
}
Colaborando en:
Nombre servidor: ES) Rebelión del Submundo
Tipo de servidor: rol/acción/jvj
Jugadores: 1-25
Niveles: 1-30
Base literaria: Reinos Olvidados
IP (conectar directamente): sombrasdefaerun.no-ip.org
Foro: http://usn-rol.foroes.org/
Posteado 08 March 2020 - 10:48 PM
http://tierrasdenemar.mi-foro.es/ (abierto para test 79.109.30.79:5121 )
Posteado 08 March 2020 - 10:48 PM
http://tierrasdenemar.mi-foro.es/ (abierto para test 79.109.30.79:5121 )