Neverwinter Nights
Menú
Gamersmafia es ahora un archivo de solo lectura.

Escalar, y despeñarse, pero ojo siempre con buen humor.

Hola gente toy trabajando en este escrip es un escrip de escalada, lo que quiero conseguir es que el mediano y el gnomo bajen directamente a un punto, y el resto de razas lleguen a un despejado que hay en la gruta pero no puedan pasar mas de ahí. He conseguido perfectamente que la gente se despeñe y llegue al despejado pero no entiendo porque el gnomo y el mediano no llegan al otro punto de ruta. Para que lo entendais esto se trata de un agujero que en un momento se estrecha e impide pasar a otros que o sean de tamaño pequeño. Bueno ahí pongo el scrip a ver si algún alma caritativa me encuentra el fallo. void main() { object oEnter = GetEnteringObject(); if (GetIsPC(oEnter)){ if (GetRacialType(oEnter) == RACIAL_TYPE_HALFLING) if (GetRacialType(oEnter) == RACIAL_TYPE_GNOME) { object oHalblingJumpTo = GetWaypointByTag(“pozo_mina_mer”); AssignCommand (oEnter, ActionJumpToObject(oHalblingJumpTo)); } } object oPlayer = GetClickingObject(); int nDexMod = GetAbilityModifier(ABILITY_DEXTERITY, oPlayer); int nRoll = d20(); if ( (nRoll+nDexMod) > 22) { object oWaypoint = GetWaypointByTag(“pozo_despejado_mer”); AssignCommand(oPlayer, ActionJumpToObject(oWaypoint)); } else { ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(25), oPlayer); { object oPC = GetEnteringObject(); FloatingTextStringOnCreature(“Te has resvalado y te has y te has golpeado terriblemente, afortunadamente has caido en un despejado”, oPC); } { object oWaypoint = GetWaypointByTag(“pozo_despejado_mer”); AssignCommand(oPlayer, ActionJumpToObject(oWaypoint)); } } }

Creo que puede ser porque un waypoint no es un objeto, sino una localización… pruena con hacer un ActionJumpToLocation, y haz tb un GetLocation del Waypoint.

Lo que me dices del ActionJumpToLocation no me funciona, sin embargo el que esta mal es el primer punto de ruta no el segundo es curioso que cuando intento de poner el segundo cambio al punto de ruta no me va, no se… Tu diras como lo hago.

Hombre, es que hay que definir bien las cosas antes de nada. Debería ser así, más o menos:

[code:1:72c67c0c68]void main()
{
object oWaypoint = GetWaypointByTag("Waypoint");
location lWaypoint = GetLocation(oWaypoint);
ActionJumpToLocation(lWaypoint);
}[/code:1:72c67c0c68]

Soy tu FAN gracias.

Jo proque no funciona el primero? cachis yo que tenia tanta ilucion…
Pongo el scrip a ver si alguen sabe el fallo.
El problema es que el Halflin no viaja al sitio que tiene que ir sino que va al otro y tambien hace el chequeo de la tiada cuando no tendria que hacerlo… Maldita pogramacion tan caprichosa ella…

void main()
{
object oEnter = GetEnteringObject();
if (GetIsPC(oEnter)){
if (GetRacialType(oEnter) == RACIAL_TYPE_HALFLING)
if (GetRacialType(oEnter) == RACIAL_TYPE_GNOME)
{
object oHalblingJumpTo = GetWaypointByTag(“pozo_mina_mer”);
AssignCommand (oEnter, ActionJumpToObject(oHalblingJumpTo));
}
}
object oPlayer = GetClickingObject();
int nDexMod = GetAbilityModifier(ABILITY_DEXTERITY, oPlayer);
int nRoll = d20();
if ( (nRoll+nDexMod) > 15)
{
object oWaypoint = GetWaypointByTag(“pozo_despejado_mer”);
location lWaypoint = GetLocation(oWaypoint);
ActionJumpToLocation(lWaypoint);
}
else
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(25), oPlayer);
{
object oPC = GetEnteringObject();
FloatingTextStringOnCreature(“Te has resvalado y te has y te has golpeado terriblemente, afortunadamente has caido en un despejado”, oPC);
}
{
object oWaypoint = GetWaypointByTag(“pozo_despejado_mer”);
AssignCommand(oPlayer, ActionJumpToObject(oWaypoint));
}

} }

pues asi a ojo de payo…..

si el haflin te salta, es por que creo qeu…….mmmm comprueba si es haflin y te lleva, luego sigue claro, y hace el resto, si esto no te pasa con el gomo,,pues me equivocao, pero tranki, hay un truco de magia gitana pa esto eleleeeeleleel

pones
if (GetRacialType(oEnter) != RACIAL_TYPE_HALFLING)
if (GetRacialType(oEnter) != RACIAL_TYPE_GNOME)

y pones lo de abajo de pasar tirada y hacerse pupa, otra gitaneria elelelelele

Ale di que si a evr como sale esto si sale bien hago a un zingaro con tu nombre en el mundo.

Por dios… con mi escrip inicial el halflin no va donde tiene que ir, con este que me dices tu ya ni se mueve en fin…

nononono sorry, me explique mal, si es que sin los apuntes y sin el aurora delante…
si tenias puesto

if (GetRacialType(oEnter) == RACIAL_TYPE_HALFLING)
if (GetRacialType(oEnter) == RACIAL_TYPE_GNOME)
{
object oHalblingJumpTo = GetWaypointByTag(“pozo_mina_mer”);
AssignCommand (oEnter, ActionJumpToObject(oHalblingJumpTo));
}
para el hafling y nomo, luego sigue, pero incluyes todo el resto dentro de otro if, con sus llaves, es decir
if (GetRacialType(oEnter) != RACIAL_TYPE_HALFLING)
if (GetRacialType(oEnter) != RACIAL_TYPE_GNOME)
{
pasa la tirada de destreza y todo lo demas
}

con la primera condcion comprueba si es haflin y gnomo, hace el salto, sigue leyendo la script y ahora comprueba que no sea halfin gnomo, y hace el resto, naturalmente el haflin y el nomo nunca haran la tirada de habilidad ni nada de lo que incluyas dentro del segundo condicional, a ver asi…que es mejor te lo pongo.

void main()
{
object oEnter = GetEnteringObject();
if (GetIsPC(oEnter)){
if (GetRacialType(oEnter) == RACIAL_TYPE_HALFLING)
if (GetRacialType(oEnter) == RACIAL_TYPE_GNOME)
{
object oHalblingJumpTo = GetWaypointByTag(“pozo_mina_mer”);
AssignCommand (oEnter, ActionJumpToObject(oHalblingJumpTo));
}
}
object oPlayer = GetClickingObject();
if (GetRacialType(oEnter) != RACIAL_TYPE_HALFLING)
if (GetRacialType(oEnter) != RACIAL_TYPE_GNOME)
{
int nDexMod = GetAbilityModifier(ABILITY_DEXTERITY, oPlayer);
int nRoll = d20();
if ( (nRoll+nDexMod) > 15)
{
object oWaypoint = GetWaypointByTag(“pozo_despejado_mer”);
location lWaypoint = GetLocation(oWaypoint);
ActionJumpToLocation(lWaypoint);
}
else
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(25), oPlayer);
{
object oPC = GetEnteringObject();
FloatingTextStringOnCreature(“Te has resvalado y te has y te has golpeado terriblemente, afortunadamente has caido en un despejado”, oPC);
}
{
object oWaypoint = GetWaypointByTag(“pozo_despejado_mer”);
AssignCommand(oPlayer, ActionJumpToObject(oWaypoint));
}

}
}
}

copia directamente, pero no entiendo muy bien para que es el objeto que hace clikin, con esto el haflin y el gnomo van directamente al p sin pasar por la casilla de salida, pero el resto de tirada y demas, lo pasaran todos las otras razas, pero fijate bien que el haflin y el gnomo nunca cumpliran nada de a partir del GetClickingObject, a ve si esto te sirve.

Si gracias es eso presisamente los diminutos estos no tienen que hacer ninguna tirada por su tamaño y no encuentran dificultad alguna ventaja tenian que tener los medianos y los gnomos.
Muchas garcias.

Me voy a hechar a llorar dios mio peo creo que se porque es porque esta puesto en el comienzo OnEnter en vez de onclic, si no es eso le dan mucho por culo a los medianos.

Pensad siempre que en el scripting, todo se puede hacer muy sencillo, o muy dificil. Si aprendéis a declarar las cosas de un modo sencillo y eficaz, no habrán problemas.

claro, si por eso decia que no se pa que era el cliking, aclarate con el evento que utilizes, si es el onenter o ocliking, yo mejor quitaba todo el el objeto cliking, y dejaba el opc =enteringobjec
a simple vista creo que simplemente borrando la linea que declaras
object opc = clikinobject, como se llama igual, opc, te vale para todos

Igual ya has resuelto el problema pero insisto porque me ha llamado la atención una cosa.

Tú quieres que ni los medianos ni los nomos hagan chaequeos de destrez y para eso pones:
[quote:c35a24f77c]
if (GetRacialType(oEnter) == RACIAL_TYPE_HALFLING)
if (GetRacialType(oEnter) == RACIAL_TYPE_GNOME)
{
object oHalblingJumpTo = GetWaypointByTag(“pozo_mina_mer”);
AssignCommand (oEnter, ActionJumpToObject(oHalblingJumpTo));
}
[/quote:c35a24f77c]

Bueno, yo creo que esto no va porque lo que estás indicando es que primero compruebe que oEnter es un mediano, y sí lo es, que luego compruebe si es un gnomo, y sí lo es, no hacer el chequeo. Evidentemente, oEnter no puede ser a la vez mediano y gnomo, por lo tanto, nunca se llega a ejecutar el código de dentro del if.

En realidad, debes usar el operador lógico “or”, que se escribe ||. Tal que así:
[code:1:c35a24f77c]
if (GetRacialType(oEnter) == RACIAL_TYPE_HALFLING)
|| GetRacialType(oEnter) == RACIAL_TYPE_GNOME)
{
object oHalblingJumpTo = GetWaypointByTag("pozo_mina_mer");
AssignCommand (oEnter, ActionJumpToObject(oHalblingJumpTo));
}
[/code:1:c35a24f77c]

Es que me llama la atención que nadie lo haya reseñado.

Un saludo.

joer es verdad que pardo soy ni me di cuenta que no habia || do o, ni me fije, ……. por cierto si pones || comprueba si es alguna de las condiciones, si es && comprueba si tiene las dos.
que pardo soy

Quieto parao, ahí me asalta la duda. El comando “and” es “&” o “&&” ?

&&

Los más activos en Scripting