Neverwinter Nights, modding - scripts - manuales, todo sobre el NWN
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.


Pulse Control+D para no olvidar este enlace.
 
Pagina principalÍndicePortalÚltimas imágenesBuscarRegistrarseConectarsePagina principal

 

 "Limpieza de Area inteligente"

Ir abajo 
AutorMensaje
Xiulito
Administrador/a
Administrador/a
Xiulito


Masculino
Edad : 44
Localización : Vivo aqui
Puntos de Actividad : 6817

Cantidad de envíos : 101
Fecha de inscripción : 22/03/2008

Nº. de Miembro : 1
Respeto por el Foro :
"Limpieza de Area inteligente" Left_bar_bleue100 / 100100 / 100"Limpieza de Area inteligente" Right_bar_bleue


"Limpieza de Area inteligente" Empty
MensajeTema: "Limpieza de Area inteligente"   "Limpieza de Area inteligente" I_icon_minitimeMiér 28 Ene 2009, 9:25 pm

Dos scripts que limpiaran nuestras áreas de objetos, efectos, bolsas de cadáveres y bichos, ¿que hace a este sistema inteligente?, pues facil, tiene un retardo de X tiempo para hacer la limpieza, esto es por si cuando el PJ sale del área y se acuerda de que dejó el objeto equivocado pues si se da prisa puede volver antes de que se destruya, otra cosa que tiene es que solo destruye las criaturas hostiles por lo que puedes ponerlo en un área de una ciudad por si se cuelan orcos y no tener miedo a que este script aniquile todos tus guardias, una cosa que tenemos que tener en cuenta es que para la destrucción de bolsas de cadáveres el sistema que he utilizado es el de destruir primero el inventario de todo objeto en el área y ya de por si desaparece la bolsa automáticamente, esto significa que si colocas cofres en un área donde pongas este script pues se limpiara también por lo tanto tendrás que colocar la etiqueta del cofre en cuestión en el apartado señalado para que no se vea afectado.

El primer script no hace falta que lo coloques en ninguna parte, es suficiente con tenerlo creado.
Nombre: rrc_limpiar
Código:
int SiPC()
{
object oPC = GetFirstObjectInArea();
while(GetIsObjectValid(oPC))
    {
    if(GetIsPC(oPC))
        {
        return TRUE;
        break;
        }
    oPC = GetNextObjectInArea();
    }
return FALSE;
}
void main()
{
float fD = 0.1;
if (SiPC()==TRUE)return;
//============================================================================\\
//----------------------- # Limpia los Bichos # ------------------------------\\
//============================================================================\\
object oBicho = GetFirstObjectInArea();
while (GetIsObjectValid(oBicho) == TRUE)
    {
    if(GetObjectType(oBicho)==OBJECT_TYPE_CREATURE)
        {
        int iHostil = GetStandardFactionReputation(STANDARD_FACTION_HOSTILE, oBicho);
        if (iHostil)
            {
            DelayCommand(fD, DestroyObject(oBicho));
            fD=fD+0.1;
            }
        }
    oBicho = GetNextObjectInArea();
    }
//============================================================================\\
//---------------------- # Limpia los Encuentros # ---------------------------\\
//============================================================================\\
object oEncuentro = GetFirstObjectInArea();
while (GetIsObjectValid(oEncuentro) == TRUE)
    {
    if(GetObjectType(oEncuentro)==OBJECT_TYPE_ENCOUNTER)
        {
        SetEncounterActive(TRUE, oEncuentro);
        }
    oEncuentro = GetNextObjectInArea();
    }
//============================================================================\\
//------------------------ # Limpia los Objetos # ----------------------------\\
//============================================================================\\
object oItem = GetFirstObjectInArea();
while (GetIsObjectValid(oItem) == TRUE)
    {
    if(GetObjectType(oItem)==OBJECT_TYPE_ITEM)
        {
        DelayCommand(fD, DestroyObject(oItem));
        fD=fD+0.1;
        }
    oItem = GetNextObjectInArea();
    }
//============================================================================\\
//------------------------ # Limpia los Efectos # ----------------------------\\
//============================================================================\\
object oEfecto = GetFirstObjectInArea();
while (GetIsObjectValid(oEfecto) == TRUE)
    {
    if(GetObjectType(oEfecto)==OBJECT_TYPE_AREA_OF_EFFECT)
        {
        DelayCommand(fD, DestroyObject(oEfecto));
        fD=fD+0.1;
        }
    oEfecto = GetNextObjectInArea();
    }
//============================================================================\\
//--------------------- # Limpia Bolsa de Cadaveres # ------------------------\\
//============================================================================\\
object oBolsita = GetFirstObjectInArea();
while (GetIsObjectValid(oBolsita) == TRUE)
    {
    if(GetIsPC(oBolsita) || GetIsDM(oBolsita))break;
//    Utilizar para objetos que no queremos que sean eliminados, como cofres y demas.
//    if(GetTag(oBolsita)=="No_se_elimina")
//      break;
    object oDesecho = GetFirstItemInInventory(oBolsita);
    while(GetIsObjectValid(oDesecho) == TRUE)
        {
        DelayCommand(fD, DestroyObject(oDesecho));
        fD=fD+0.1;
        oDesecho = GetNextItemInInventory(oBolsita);
        }
    oBolsita = GetNextObjectInArea();
    }
}

Este otro tendrás que colocarlo en el OnExit de todas las áreas que quieres que se limpien.
Nombre: rrc_exit_limpia
Código:
int SiPC()
{
object oPC = GetFirstObjectInArea();
while(GetIsObjectValid(oPC))
    {
    if(GetIsPC(oPC))
        {
        return TRUE;
        break;
        }
    oPC = GetNextObjectInArea();
    }
return FALSE;
}
void main()
{
object oPC = GetExitingObject();
if (SiPC()==TRUE)return;
DelayCommand(30.0, ExecuteScript("rrc_limpiar", OBJECT_SELF));
}
Volver arriba Ir abajo
http://nwnforo.com
 
"Limpieza de Area inteligente"
Volver arriba 
Página 1 de 1.
 Temas similares
-
» Scripts para el baul "Esposas y Rastreo"
» "Cerrar puertas con llave durante la noche"

Permisos de este foro:No puedes responder a temas en este foro.
Neverwinter Nights, modding - scripts - manuales, todo sobre el NWN :: NWToolSet (Aurora) :: Scripting NWN :: Baul de Scripts-
Cambiar a: