Pulse Control+D para no olvidar este enlace. |
|
| Recibir daño en un area si no tienes equipado un objeto | |
| | Autor | Mensaje |
---|
Jastro Aprendiz
Edad : 38 Localización : Islas Canarias ¿Que me Gusta? : Todo y Nada Puntos de Actividad : 6374
Cantidad de envíos : 40 Fecha de inscripción : 11/08/2008
Nº. de Miembro : 11 Respeto por el Foro :
| Tema: Recibir daño en un area si no tienes equipado un objeto Jue 16 Abr 2009, 3:31 pm | |
| En este post hay 2 modelos de script, escoge el que mas te interese. Modelo nº 1 Este script que voy a poner, esta programado por Xiulito. Creamos este script llamado: damage_agua - Código:
-
void main() { object oPC = OBJECT_SELF; effect eEffect = EffectDamage(10, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_NORMAL);//el numero 10 es el daño.
int iVariableAreaPC = GetLocalInt(GetArea(oPC), "AGUA_DAMAGE");
if (!GetIsPC(oPC) || GetIsDM(oPC)) return;//Corta el script si es NPC o DM.
DelayCommand(10.0, ExecuteScript("damage_agua", oPC));
if (iVariableAreaPC) { if (GetTag(GetItemInSlot(INVENTORY_SLOT_HEAD, oPC)) != "cascoagua") { ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC); } } } Este script no va a en ningun lado, se deja creado sin más. y en el on enter del modulo ponemos. - Código:
-
void main() { object oPC = GetEnteringObject();
ExecuteScript("damage_agua", oPC); } ¿COMO FUNCIONA EL SCRIPT?Bien, este script es muy sencillo, una vez pues en el onenter del modulo el script, debemos hacer unos pasos para hacer unos sencillos pasos. Nos dirigimos hacia la area en cuestión que queremos que haya la restricción del objeto, le damos al boton derecho, propiedades del área/avanzado/variables. Una vez allí tienes que añadir la siguiente variable; AGUA_DAMAGE, tiene que ser una variable "int" y de valor el que quieras pero siempre tiene que ser mayor a cero. Si lo has hecho correctamente hará daño 10 cada 10 segundos si no tienes equipado el objeto en cuestion. Modelo nº 2 Este script esta programado por Marina y Retocado por Xiulito. Este script, va a en el Onheartbeat del area en cuestión - Código:
-
void SSP_LatidoSistema(object oPC) {
//if(GetIsDM(oPC)) return;
object oArea = GetArea(oPC);
{
{ if(GetIsAreaAboveGround(oArea) == AREA_ABOVEGROUND && (GetIsAreaNatural(oArea) == AREA_NATURAL || GetIsAreaNatural(oArea) == AREA_ARTIFICIAL) && !GetIsAreaInterior(oArea)) {
effect eDamage = EffectDamage( 1, DAMAGE_TYPE_DIVINE, DAMAGE_POWER_ENERGY ); ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC);
} }
} }
void main() { //Saltar si ya hay una rutina de latido en progreso if (GetLocalInt(GetModule(), "LATIDO_EN_PROGRESO") != TRUE) { SetLocalInt(GetModule(), "LATIDO_EN_PROGRESO", TRUE);//Bloqueo de la rutina
object oPC =GetFirstObjectInArea(OBJECT_SELF); while (GetIsObjectValid(oPC)) { string sCasco = GetTag(GetItemInSlot(INVENTORY_SLOT_HEAD, oPC));
if (sCasco=="escafandra")break;
effect eDamage = EffectDamage( 1, DAMAGE_TYPE_DIVINE, DAMAGE_POWER_ENERGY ); ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC);
oPC = GetNextObjectInArea(OBJECT_SELF); } SetLocalInt(GetModule(), "LATIDO_EN_PROGRESO", FALSE);//Activado del latido } } y ponemos este script en el onHearbeat del MODULO - Código:
-
void main() { //Saltar si ya hay una rutina de latido en progreso if ((GetLocalInt(GetModule(), "LATIDO_EN_PROGRESO") != 1)) { SetLocalInt(GetModule(), "LATIDO_EN_PROGRESO", 1);//Bloqueo de la rutina object oPC = GetFirstPC(); while (GetIsObjectValid(oPC))
.
Última edición por Jastro el Sáb 18 Abr 2009, 2:08 pm, editado 3 veces | |
| | | Marina Patos@
Edad : 41 Puntos de Actividad : 5931
Cantidad de envíos : 24 Fecha de inscripción : 01/04/2009
Nº. de Miembro : 65 Respeto por el Foro :
| Tema: Re: Recibir daño en un area si no tienes equipado un objeto Jue 16 Abr 2009, 3:53 pm | |
| Para que mi script funcine correctamente, en el Onheartbeat del MODULO, debe estar incluida esta parte: - Citación :
- void main()
{ //Saltar si ya hay una rutina de latido en progreso if ((GetLocalInt(GetModule(), "LATIDO_EN_PROGRESO") != 1)) { SetLocalInt(GetModule(), "LATIDO_EN_PROGRESO", 1);//Bloqueo de la rutina object oPC = GetFirstPC(); while (GetIsObjectValid(oPC)) Si ya teneis algo en ese guion, es conveniente añadir esas lineas. | |
| | | Jastro Aprendiz
Edad : 38 Localización : Islas Canarias ¿Que me Gusta? : Todo y Nada Puntos de Actividad : 6374
Cantidad de envíos : 40 Fecha de inscripción : 11/08/2008
Nº. de Miembro : 11 Respeto por el Foro :
| Tema: Re: Recibir daño en un area si no tienes equipado un objeto Jue 16 Abr 2009, 4:17 pm | |
| ¿es del modulo entonces? esas lineas que añades, las cambios por: - Código:
-
void main() { //Saltar si ya hay una rutina de latido en progreso if (GetLocalInt(GetModule(), "LATIDO_EN_PROGRESO") != TRUE) { SetLocalInt(GetModule(), "LATIDO_EN_PROGRESO", TRUE);//Bloqueo de la rutina
object oPC =GetFirstObjectInArea(OBJECT_SELF); while (GetIsObjectValid(oPC)) ¿no?
Última edición por Jastro el Sáb 18 Abr 2009, 2:08 pm, editado 1 vez | |
| | | Marina Patos@
Edad : 41 Puntos de Actividad : 5931
Cantidad de envíos : 24 Fecha de inscripción : 01/04/2009
Nº. de Miembro : 65 Respeto por el Foro :
| Tema: Re: Recibir daño en un area si no tienes equipado un objeto Jue 16 Abr 2009, 4:36 pm | |
| No, esas lineas deben estar INCLUIDAS en el onheartbeat del MODULO, a pesar de que tambien forman parte del script general.
Me explico, el script largo va en el onheartbeat del AREA que queramos que afecte el daño, y las lineas que he puesto despues, deben estar incluidas en el onheartbeat del MODULO. | |
| | | Jastro Aprendiz
Edad : 38 Localización : Islas Canarias ¿Que me Gusta? : Todo y Nada Puntos de Actividad : 6374
Cantidad de envíos : 40 Fecha de inscripción : 11/08/2008
Nº. de Miembro : 11 Respeto por el Foro :
| Tema: Re: Recibir daño en un area si no tienes equipado un objeto Jue 16 Abr 2009, 5:25 pm | |
| entendido entonces, lo voy a añadir en mi post, que la gente va directo a los post y no lo miran | |
| | | Ender Patos@
Edad : 32 Puntos de Actividad : 5672
Cantidad de envíos : 11 Fecha de inscripción : 31/08/2009
Nº. de Miembro : 100 Respeto por el Foro :
| Tema: Re: Recibir daño en un area si no tienes equipado un objeto Lun 31 Ago 2009, 4:22 am | |
| como os complicais. Se mete todo en el hearbeat, ya que quereis que suceda cada x tiempo. comprueba objetos del area, si es pc, comprueba si lleva equipado el casco, si no lo lleva produce daño poneis el entero y su incremento con el tiempo que querais que suceda, y ya esta. | |
| | | Contenido patrocinado
| Tema: Re: Recibir daño en un area si no tienes equipado un objeto | |
| |
| | | | Recibir daño en un area si no tienes equipado un objeto | |
|
Temas similares | |
|
| Permisos de este foro: | No puedes responder a temas en este foro.
| |
| |
| |
|