Kallagan

09/11/2005 05:32:30

A ver, la cosa esta chunga, necesito dos cosas (como siempre, ni una ni tres, sino dos).


Estoy haciendo una ciudad submarina con sus sirenitas y eso (quedan mazo de cutre, pero había que aprobechar el aspecto de cola de sirena y las dos conchitas de torso).

Asin que necesito saber como puedo hacer para que cada vez que entre un PJ en ese área muera al cabo de X tiempo (por ahogarse) y que el juego le vaya mostrando un mensaje continuo del tiempo que le va quedando de aire.

Y la otra es la solucion a la primera, crear un objeto (un casco por ejemplo) que evite la muerte en ese área (un casco que permita respirar bajo el agua, se entiende)


Si alguien me lo saca le pongo una estatua en la plaza de Sol.

Kallagan

09/11/2005 05:34:02

joe, llevo todo el dia poniendo los mensajes en 2 post ¬¬


Me faltaba una tercera cosa xDD

Si vas bajo el agua el mov9imiento es mas lento, asi que a ver si alguien sabe como ralentizar a todo PJ que entre ahi.

Statico

10/11/2005 18:24:35

todo eso tiene pinta de ir por scripts, y yo sinceramente, no tengo ni idea de scripting, los aplico, pero no los creo xD lo mejorquep uedes hacer es pedirle a un ocnocido que los cree, o reutilizar algunos parecidos si esque los hay :wink:

Mandrake

10/11/2005 20:00:19

Yo tampoco se mucho de scripts lo que si puedo decir es lo que tienen que hacer los scripts apra cada cosa. Por ejemplo: Para cuando entras en esa ciudad el script, tinee que hacer que te vaya apareciendo un letrerito en el log de la derecha en amarillo diciendo algo asi como:
Te quedan 60 segundos de aire
Te quedan 59 segundos de aire
Te quedan 58 segundos de aire

etc...

Para lo del objetos que te permitiera "respirar" pues tendria que llevar un script que anulara este anterior.

Bueno mas o menos, se que no sirve de mucho pero son ideas de como deberia funcionar el script.

Kallagan

24/11/2005 02:00:10

bueno, hurgando en los modulos de la segunda expansión he encontrado un script interesnate, pero creo que usa subprogramas.

Este script sirve para hacer un daño por frío cada segundo a un PJ que entra en un área a menos que esté cerca de un área determinada (cerca de hogeras).



A ver si los que sabeis más me lo podéis traducir para que en lugar de eso haga un tipo de daño que no se pueda evitar tan facilmente como ese, por ejemplo con protecciones mágicas contra frío. Es decir, un daño ineludible.
Y que en lugar de anularse el efecto al acercarse a un área determinada, se anule al llevar equipado un objeto determinado.


[quote:6a41756fe9]
void main()
{
object oPC = GetFirstPC();
int iRandom = Random(1) + 1;

HXDoColdDamage(iRandom);

if(GetIsObjectValid(oPC))
{
if(GetArea(oPC) == OBJECT_SELF)
{
HXSpawnCreatures(oPC, 180.0);
}
oPC = GetNextPC();
}
}
[/quote:6a41756fe9]

Kallagan

24/11/2005 02:21:46

[quote:ddf718a654]
void HXDoColdDamage(int iDamage = 0)
{
object oPC = GetFirstPC();
int iFire = GetLocalInt(oPC, "HX_FIRETYPE");
int iSafeTime = GetLocalInt(oPC, "HX_FIRETYPE_SAFE");
int iTime = 0;
int iTimeOut = 0;
int iCut;
object oTorch = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC);

if(iFire == 1)
{
iTime = 6;
iTimeOut = 1;
if(iSafeTime == 0)
{
SetLocalInt(oPC, "HX_FIRETYPE_SAFE", iTime);
}
}
else if(iFire == 2)
{
iTime = 15;
iTimeOut = 2;
if(iSafeTime == 0)
{
SetLocalInt(oPC, "HX_FIRETYPE_SAFE", iTime);
}
}
else if(iFire == 3)
{
iTime = 30;
iTimeOut = 2;
if(iSafeTime == 0)
{
SetLocalInt(oPC, "HX_FIRETYPE_SAFE", iTime);
}
}

// Do damage to everyone in the area.
while(GetIsObjectValid(oPC))
{
// Don't do damage in a cutscene.
iCut = CutGetActiveCutsceneForObject(oPC);
if(iCut < 1)
{
if(GetArea(oPC) == OBJECT_SELF)
{
if(IsInConversation(oPC))
{
return;
}
iSafeTime = GetLocalInt(oPC, "HX_FIRETYPE_SAFE");
// Do visual if the player is damaged.
if(iSafeTime <= 0 && GetLocalInt(oPC, "HX_PC_STARTED_FIRE") != 1 && GetLocalInt(oPC, "HX_PC_STANDING_NEAR") != 1)
{
if(iDamage > 0)
{
DoDamage(oPC, iDamage);
}
}
else
{
if(GetLocalInt(oPC, "HX_PC_STARTED_FIRE") != 1 && GetLocalInt(oPC, "HX_PC_STANDING_NEAR") != 1)
{
if(iSafeTime == iTime/2)
{
//SendMessageToPC(oPC, "[NOT IN STRING EDITOR] The warmth from the last fire is still with you.");
if(GetLocalInt(oPC, "HX_FIRE_POTION") == 1)
{
SendMessageToPCByStrRef(oPC, 86878);
}
else
{
SendMessageToPCByStrRef(oPC, 85521);
}
}
else if(iSafeTime == iTimeOut)
{

//SendMessageToPC(oPC, "[NOT IN STRING EDITOR] The warmth from the last fire has nearly left you.");
if(GetLocalInt(oPC, "HX_FIRE_POTION") == 1)
{
SendMessageToPCByStrRef(oPC, 86879);
}
else
{
SendMessageToPCByStrRef(oPC, 85522);
}
}
SetLocalInt(oPC, "HX_FIRETYPE_SAFE", iSafeTime - 1);
if(GetLocalInt(oPC, "HX_FIRETYPE_SAFE") <= 0)
{
SetLocalInt(oPC, "HX_FIRETYPE", 0);
}
}
}
}
}
oPC = GetNextPC();
[/quote:ddf718a654]

y aki esta desplegado el subprograma ke usa... ke a su vez usa otros subprogramas, pero creo que para lo ke yo kiero se pueden surpimir estos ultimos.....

a ver si de aki sale algo, ke yo no veo nada claro.


Kallagan, pegando scripts a boleo.

Maya

24/11/2005 02:45:32

perdona lei tarde este pos te hiba arecomendar que cogieras el script de la seguna espansion de daño de frio segun area que tiene sus lugares a salvo preparados y todo, a ese script lo unico que ahs de variar es en vez de daño de frio, daño magico, con descriptores de "te estas ahogando"

por cierto yo tb tengo uan ciuadad submarina con efectos ambientales y demas, una sugenrencia hay un arbol WILOW que enterrado sobre el fondod e desierto y con colores azuels y verde de iluminacion da uan sensacion de fondo marino de algas cojonudo xDDD, y por otro aldo se puede caminar entre esos arboles con lo cual el pJ que cmaina por el fonod puede quedar enterrado....((qe me voy del tema))

err si otra cosa els sitema de al segudna espansion va linkado al anillo del ente has de incorporalro y podras imaginarte que eso te da al libertad de crear un objeto que te deje respirar bajo el agua y anular el escript ....

lo de daño magico te lo comento mas que nada por que el daño por frio con unas botas de resisa frio te los saltas,,, tambien se puede tocar el tiempo de ese daño temporal... un consejo traslada todos lso scripts pdoras hacer algo complejo y inusual si te lo estudias un pelin.. hay un tutorial sobre ese tipo descripts en el BRAIN del vault

Kallagan

24/11/2005 03:48:27

pues eso es lo ke decia yo, se ke esos scripts ke he pegado son los ke busco, pero no se ke cambiar para anular el efecto ese de las hogueras y cambiar el daño de frio por el magico.

Yandrel

24/11/2005 09:16:39

Te flata la funcion DoDamage, alli podras mirar el tipo de frio y cambiarlo.

Para quitar lo del fuego seria revisar las lineas que tengan las variables iSafeTime, iFire y las cadenas HX_FIRETYPE_SAFE, HX_FIRETYPE, HX_PC_STARTED_FIRE.

Espero que eso te ayude un poco.

Kallagan

24/11/2005 22:11:51

me ayuda bastante, gracias