Te pongo un ejemplo.
Yo tengo un hench para mi modulo llamada Nanda el tag tiene ke ser nw_hen_XXX osea que yo tengo nw_hen_nan y el resref tiene ke ser nw_hen_xxx_yy donde yo uso nw_hen_nan_01 yy indica el nivel y tendras que currarte 20 por henchman.
Bien hasta aqui ya tendras los 20 niveles del pnj.
Ahora en la conversacion con el como henchman tendras que ponerle la frase de quiero que subas de nivel, blablabla y ya cuando le de a la ultima frase la que de lugar a que suba de nivel deberas de usar en el action taken el script “nw_ch_action_17” viene por defecto realizado por bioware y funciona a las mil maravillas
Buf ke fallo casi se me olvida, la frase quiero que subas de nivel tiene que tener de el texto aparece cuando “nw_ch_check_38” el cual chekea si el hench tiene la experiencia necesaria.
(root)
blablablalba
blalbalbla
blablalblaa
Hola hench ¿puedes subir de nivel? (en el condicional tendra nw_ch_check_38)
—bueno señor puedo intentarlo
——-Vale hazlo (el script de hacer action nw_ch_action_17)
Bueno espero que lo entiendas, nu se si me explique bien, pero esto no falla,
Gracias, lo he entendido . Éso ya más o menos lo sabía, lo que me refiero es que esas funciones ya predefinidas lo que hacen es destruir al antiguo y reemplazarlo por uno nuevo, es decir, en el juego vemos desaparecer el henchman y reaparecer al nuevo. Por otra parte uno se ve en la obligación de decirle al henchmen que suba de nivel y al final estas cosas no hacen que parezca realista. Supongo que al fin y al cabo ésa será la única forma de hacerlo ya que los npc no tienen ni ganan experiencia. He pensado que quedaría mejor si en el heartbeat del módulo hago que se chequee continuamente la diferencia de nivel del henchman con el pc y cuando sea conveniente éste se reemplace por el nuevo. Lo malo es que aún seguiríamos viéndolo desaparecer y en una batalla ésto puede ser desastroso para el pj. Quizá, lo mejor sea hacerlo en las transiciones de área. Cada vez que se entre en un área se chequean los niveles y si es preciso subimos el nivel del hechman, de este modo ya no se notaría la diferencia y la subida de nivel sería de forma automática. ¿Qué opinas?
Entiendo tu idea, mas o menos yo pienso lo mismo, pero el problema es que (por ejemplo yo tengo varias cosas en el onhear) se recargaria mucho el micro si le metes cosas en el onhear,en los cambios de area, mmmm interesante no lo habia pensado, eso si ten en cuenta que cuando el hench suba de nivel desaparece y aparece no tendra master, es decir el pj ha de hablar otra vez con el.
Enga ya me diras en este hilo como te sale el tema si lo intentas o si necesitas sugerencias ideas o algo que seria interesante colaborar en esto, ma molao lo ke se te ha ocurrido del cambiode areas
Vamos a ver, este script lo acabo de probar en un trigger, supongo que si lo metemos en el “on enter” del área deberá funcionar también. No lo pruebo porque tengo que irme ya así que a lo que vamos. En primer lugar creamos todos los henchan de niveles 1 a los que sean y con una referencia que va a ser “tagxxx” todo en minúscula. Las xx son el nivel del henchman. Cuando entro en el trigger ocurre lo siguiente:
#include “nw_i0_henchman”
#include “nw_i0_plot”
void main()
{
object oPC = GetEnteringObject();
if (GetIsPC(GetEnteringObject()))
{
object oHench = GetHenchman(GetEnteringObject());
//comprobamos los niveles del pj y del henchman.
int iLevelpc = GetHitDice(oPC);
int iLevelhench = GetHitDice(oHench);
//si el pc tiene mas nivel que el otro seguimos adelante.
if (iLevelpc - iLevelhench > 0)
{
//iLevel es el nivel al que queremos subir al henchman.
//Yo he decidido hacerlo del mismo nivel que el pc.
int iLevel = (iLevelpc - iLevelhench) + iLevelhench;
//nos fabricamos la referencia del nuevo henchman que
//vamos a crear. este tag va a tener la forma
//”tag+nivel al que lo vamos a subir” que como dije
//sera el mismo que el del pc
string sTaghench = GetTag(oHench);
sTaghench = GetStringLowerCase(sTaghench);
sTaghench = sTaghench + IntToString(iLevel);
//creamos el nuevo, lo asociamos al pj, le mantenemos
//todas las caracteristicas y por ultimo eliminamos el viejo.
object oNewHench = CreateObject(OBJECT_TYPE_CREATURE, sTaghench, GetLocation(oHench));
object oMaster = GetMaster(oHench);
RemoveHenchman(oMaster, oHench);
CopyLocals(oHench, oNewHench);
AssignCommand(oNewHench,SetAssociateListenPatterns());
AddHenchman(oMaster,oNewHench);
DestroyObject(oHench);
}}
}
Y sale el nuevo colega. De momento funciona en el trigger, ya lo probaré bien probao más tarde. Si lo pruebas tú antes dime qué tal te ha ido.
Weno, nos vemos que se me hace tarde.
[code:1:4acba139c0]
#include "nw_i0_henchman"
#include "nw_i0_plot"
void main()
{
object oPC = GetEnteringObject();
if (GetIsPC(oPC))
{
// Definimos y comprobamos los niveles del Hench y el Pj.
object oHench = GetHenchman(oPC);
int iLevelpc = GetHitDice(oPC);
int iLevelhench = GetHitDice(oHench);
// Evaluamos la diferencia para igualarla.
if (iLevelpc - iLevelhench > 0)
{
// Puntualizacion Gonar, este int lo veo inutil, puesto que dara siempre el mismo valor que iLevelpc ejemplo : (10 -9) +9 siempre dara 10.
int iLevel = (iLevelpc - iLevelhench) + iLevelhench;
// nos fabricamos la referencia del nuevo henchman que vamos a crear.
// Este tag va a tener la forma "tag+nivel al que lo vamos a subir" que como dije sera el mismo que el del pc.
string sTaghench = GetTag(oHench);
sTaghench = GetStringLowerCase(sTaghench);
sTaghench = sTaghench + IntToString(iLevel);
// Creamos el nuevo, lo asociamos al pj, le mantenemos todas las caracteristicas y por ultimo eliminamos el viejo.
object oNewHench = CreateObject(OBJECT_TYPE_CREATURE, sTaghench, GetLocation(oHench));
object oMaster = GetMaster(oHench);
RemoveHenchman(oMaster, oHench);
CopyLocals(oHench, oNewHench);
AssignCommand(oNewHench,SetAssociateListenPatterns());
AddHenchman(oMaster,oNewHench);
DestroyObject(oHench);
}
}
}
[/code:1:4acba139c0]
Otia me paresse la caña la idea, si funciona en un trigger, en un area funciona igualmente, es mas el jugador por el tema de carga pantalla y demas, no deberia de notar el que aparece uno y desaparece otro
Por ultimo te puntualize un detalle, echale una ojeada, pues ahi un integer cuya expresion dara siempre el valor de uno de sus componentes.
Ostia, es verdad . Qué me gusta complicarme la vida . De todas formas sería conveniente dejar un int del tipo:
int iLevel = iLevelpc
para el caso en que queramos subir al henchman a un nivel diferente del pj, así iríamos matizando, por ejemplo:
int iLevel = iLevelpc + 2
No os pareceria mas logico subir de nivel al Ayudante, siempre cuando va a dormir o se despierta.
Lo digo, por que seria mas realista, se va a dormir, y cuando se despierta chequea si puede pasar de nivel y si puede habla contigo y dice que sube de nivel.
Es más sencillo, pero el problema es que se vería desaparecer al viejo y aparecer al antiguo y éso es lo que no me gusta. Lo ideal sería que el jugador no notara esos cambios. Por otro lado tampoco queda realista que el henchman te diga que ha subido de nivel, no sé si me explico. El que haya jugado a rol de verdad lo entenderá. Una cosa es lo que se hable “fuera de la partida” y otra cosa es lo que se diga dentro. Vamos, que no quedaría bien que un pnj le diga a un pj “Guau, qué fuerte eres, debes de ser por lo menos de nivel 10”, y el pj le responde “Es que tengo un 20 en fuerza”. Yo inmediatamente le quitaría experiencia a ese jugador por interpretar mal. Por éso todas estas cosas referentes al cambio de niveles prefiero que pasen lo más desapercibidas posibles.
No sé si me he explicao
Bien, pues a ver que te parece esta idea, cuando juegas con la HR 2.0, el jugador al ir a dormir, se vuleve todo oscuro, y no ve nada, cuando se pone a descansar, que ocurra el proceso de subir de nivel, y ya esta, el usuario no se entera, y el acompañante, hace la accion de subir de nivel.
… es relativo, yo estoy jugando el modulo de Ilmater y usa las hcr, cuando le das a dormir, se vuelve to oscuro y aparecen las zzz encima del pj mientras ronca, pero se distingue perfectamente que sucede en la escena.
A mi personalmente me gusta mas el metodo de cambio de area, en mi opinion quedara mas realista, pues el jugador lo notara menos.
Eso ya son gustos Gonar, creo que en tu caso, es mas fácil que el usuario no lo note, pero, como juego de rol, creo que nadie podria subir de nivel hasta que no descanse, y no puede descansar si no tiene un sitio donde hacerlo, pero eso ya son gustos personales del juego.
Te pongo un ejemplo.
Yo tengo un hench para mi modulo llamada Nanda el tag tiene ke ser nw_hen_XXX osea que yo tengo nw_hen_nan y el resref tiene ke ser nw_hen_xxx_yy donde yo uso nw_hen_nan_01 yy indica el nivel y tendras que currarte 20 por henchman.
Yo tengo 20 nandas de nivel 1 a 20
nw_hen_nan nw_hen_nan_01
nw_hen_nan nw_hen_nan_02
nw_hen_nan nw_hen_nan_03
nw_hen_nan nw_hen_nan_04
nw_hen_nan nw_hen_nan_05
…..
nw_hen_nan nw_hen_nan_20
Bien hasta aqui ya tendras los 20 niveles del pnj.
Ahora en la conversacion con el como henchman tendras que ponerle la frase de quiero que subas de nivel, blablabla y ya cuando le de a la ultima frase la que de lugar a que suba de nivel deberas de usar en el action taken el script “nw_ch_action_17” viene por defecto realizado por bioware y funciona a las mil maravillas
Buf ke fallo casi se me olvida, la frase quiero que subas de nivel tiene que tener de el texto aparece cuando “nw_ch_check_38” el cual chekea si el hench tiene la experiencia necesaria.
(root)
blablablalba
blalbalbla
blablalblaa
Hola hench ¿puedes subir de nivel? (en el condicional tendra nw_ch_check_38)
—bueno señor puedo intentarlo
——-Vale hazlo (el script de hacer action nw_ch_action_17)
Bueno espero que lo entiendas, nu se si me explique bien, pero esto no falla,
Gracias, lo he entendido
. Éso ya más o menos lo sabía, lo que me refiero es que esas funciones ya predefinidas lo que hacen es destruir al antiguo y reemplazarlo por uno nuevo, es decir, en el juego vemos desaparecer el henchman y reaparecer al nuevo. Por otra parte uno se ve en la obligación de decirle al henchmen que suba de nivel y al final estas cosas no hacen que parezca realista. Supongo que al fin y al cabo ésa será la única forma de hacerlo ya que los npc no tienen ni ganan experiencia. He pensado que quedaría mejor si en el heartbeat del módulo hago que se chequee continuamente la diferencia de nivel del henchman con el pc y cuando sea conveniente éste se reemplace por el nuevo. Lo malo es que aún seguiríamos viéndolo desaparecer y en una batalla ésto puede ser desastroso para el pj. Quizá, lo mejor sea hacerlo en las transiciones de área. Cada vez que se entre en un área se chequean los niveles y si es preciso subimos el nivel del hechman, de este modo ya no se notaría la diferencia y la subida de nivel sería de forma automática. ¿Qué opinas?
Entiendo tu idea, mas o menos yo pienso lo mismo, pero el problema es que (por ejemplo yo tengo varias cosas en el onhear) se recargaria mucho el micro si le metes cosas en el onhear,en los cambios de area, mmmm interesante no lo habia pensado, eso si ten en cuenta que cuando el hench suba de nivel desaparece y aparece no tendra master, es decir el pj ha de hablar otra vez con el.
Enga ya me diras en este hilo como te sale el tema si lo intentas o si necesitas sugerencias ideas o algo que seria interesante colaborar en esto, ma molao lo ke se te ha ocurrido del cambiode areas
Vamos a ver, este script lo acabo de probar en un trigger, supongo que si lo metemos en el “on enter” del área deberá funcionar también. No lo pruebo porque tengo que irme ya
así que a lo que vamos. En primer lugar creamos todos los henchan de niveles 1 a los que sean y con una referencia que va a ser “tagxxx” todo en minúscula. Las xx son el nivel del henchman. Cuando entro en el trigger ocurre lo siguiente:
#include “nw_i0_henchman”
#include “nw_i0_plot”
void main()
{
object oPC = GetEnteringObject();
if (GetIsPC(GetEnteringObject()))
{
object oHench = GetHenchman(GetEnteringObject());
//comprobamos los niveles del pj y del henchman.
int iLevelpc = GetHitDice(oPC);
int iLevelhench = GetHitDice(oHench);
//si el pc tiene mas nivel que el otro seguimos adelante.
if (iLevelpc - iLevelhench > 0)
{
//iLevel es el nivel al que queremos subir al henchman.
//Yo he decidido hacerlo del mismo nivel que el pc.
int iLevel = (iLevelpc - iLevelhench) + iLevelhench;
//nos fabricamos la referencia del nuevo henchman que
//vamos a crear. este tag va a tener la forma
//”tag+nivel al que lo vamos a subir” que como dije
//sera el mismo que el del pc
string sTaghench = GetTag(oHench);
sTaghench = GetStringLowerCase(sTaghench);
sTaghench = sTaghench + IntToString(iLevel);
//creamos el nuevo, lo asociamos al pj, le mantenemos
//todas las caracteristicas y por ultimo eliminamos el viejo.
object oNewHench = CreateObject(OBJECT_TYPE_CREATURE, sTaghench, GetLocation(oHench));
object oMaster = GetMaster(oHench);
RemoveHenchman(oMaster, oHench);
CopyLocals(oHench, oNewHench);
AssignCommand(oNewHench,SetAssociateListenPatterns());
AddHenchman(oMaster,oNewHench);
DestroyObject(oHench);
}}
}
Y sale el nuevo colega. De momento funciona en el trigger, ya lo probaré bien probao más tarde. Si lo pruebas tú antes dime qué tal te ha ido.
Weno, nos vemos que se me hace tarde.
[code:1:4acba139c0]
#include "nw_i0_henchman"
#include "nw_i0_plot"
void main()
{
object oPC = GetEnteringObject();
if (GetIsPC(oPC))
{
// Definimos y comprobamos los niveles del Hench y el Pj.
object oHench = GetHenchman(oPC);
int iLevelpc = GetHitDice(oPC);
int iLevelhench = GetHitDice(oHench);
// Evaluamos la diferencia para igualarla.
if (iLevelpc - iLevelhench > 0)
{
// Puntualizacion Gonar, este int lo veo inutil, puesto que dara siempre el mismo valor que iLevelpc ejemplo : (10 -9) +9 siempre dara 10.
int iLevel = (iLevelpc - iLevelhench) + iLevelhench;
// nos fabricamos la referencia del nuevo henchman que vamos a crear.
// Este tag va a tener la forma "tag+nivel al que lo vamos a subir" que como dije sera el mismo que el del pc.
string sTaghench = GetTag(oHench);
sTaghench = GetStringLowerCase(sTaghench);
sTaghench = sTaghench + IntToString(iLevel);
// Creamos el nuevo, lo asociamos al pj, le mantenemos todas las caracteristicas y por ultimo eliminamos el viejo.
object oNewHench = CreateObject(OBJECT_TYPE_CREATURE, sTaghench, GetLocation(oHench));
object oMaster = GetMaster(oHench);
RemoveHenchman(oMaster, oHench);
CopyLocals(oHench, oNewHench);
AssignCommand(oNewHench,SetAssociateListenPatterns());
AddHenchman(oMaster,oNewHench);
DestroyObject(oHench);
}
}
}
[/code:1:4acba139c0]
Otia me paresse la caña la idea, si funciona en un trigger, en un area funciona igualmente, es mas el jugador por el tema de carga pantalla y demas, no deberia de notar el que aparece uno y desaparece otro
Por ultimo te puntualize un detalle, echale una ojeada, pues ahi un integer cuya expresion dara siempre el valor de uno de sus componentes.
Ostia, es verdad
. Qué me gusta complicarme la vida
. De todas formas sería conveniente dejar un int del tipo:
int iLevel = iLevelpc
para el caso en que queramos subir al henchman a un nivel diferente del pj, así iríamos matizando, por ejemplo:
int iLevel = iLevelpc + 2
No os pareceria mas logico subir de nivel al Ayudante, siempre cuando va a dormir o se despierta.
Lo digo, por que seria mas realista, se va a dormir, y cuando se despierta chequea si puede pasar de nivel y si puede habla contigo y dice que sube de nivel.
Es mas sencillo no ?
Es más sencillo, pero el problema es que se vería desaparecer al viejo y aparecer al antiguo y éso es lo que no me gusta. Lo ideal sería que el jugador no notara esos cambios. Por otro lado tampoco queda realista que el henchman te diga que ha subido de nivel, no sé si me explico. El que haya jugado a rol de verdad lo entenderá. Una cosa es lo que se hable “fuera de la partida” y otra cosa es lo que se diga dentro. Vamos, que no quedaría bien que un pnj le diga a un pj “Guau, qué fuerte eres, debes de ser por lo menos de nivel 10”, y el pj le responde “Es que tengo un 20 en fuerza”. Yo inmediatamente le quitaría experiencia a ese jugador por interpretar mal. Por éso todas estas cosas referentes al cambio de niveles prefiero que pasen lo más desapercibidas posibles.
No sé si me he explicao
Bien, pues a ver que te parece esta idea, cuando juegas con la HR 2.0, el jugador al ir a dormir, se vuleve todo oscuro, y no ve nada, cuando se pone a descansar, que ocurra el proceso de subir de nivel, y ya esta, el usuario no se entera, y el acompañante, hace la accion de subir de nivel.
Ésa idea me gusta más. Parece más realista, pero tengo un problema, ¿qué son las hardcore rules y como se ponen? Es que estoy pegaillo en éso
.
Bueno eso de que no se ve …
… es relativo, yo estoy jugando el modulo de Ilmater y usa las hcr, cuando le das a dormir, se vuelve to oscuro y aparecen las zzz encima del pj mientras ronca, pero se distingue perfectamente que sucede en la escena.
A mi personalmente me gusta mas el metodo de cambio de area, en mi opinion quedara mas realista, pues el jugador lo notara menos.
Eso ya son gustos Gonar, creo que en tu caso, es mas fácil que el usuario no lo note, pero, como juego de rol, creo que nadie podria subir de nivel hasta que no descanse, y no puede descansar si no tiene un sitio donde hacerlo, pero eso ya son gustos personales del juego.