Saltar al contenido

Más en DLAN: Nuestras Traducciones | Otras Traducciones | Mods y modding | Revisiones y Guías | Videojuegos | Arte | Literatura | Rol y Rol por foro e IRC | Mapa de la web
Foto

Sumar una variable a un objeto

variables

7 respuestas al tema

#1 Zoraga

Zoraga

    Neonato

  • Miembro
  • PipPip
  • 201 posts

Posteado 02 July 2018 - 01:01 AM

Hola, saludos a toda la gente del taller :wave:

Traigo un problema con un script que intento hacer con la ayuda del editor, aver si alguien me echa una mano con esto porfa, la idea es crearle una variable a un objeto permanente en el inventario del personaje, para acumular información, lo cual he podido hacer en cierta medida, pero, lo que necesito es sumar un valor numerico a una variable del objeto, bueno, la idea exacta es sumar esta variable una vez por personaje, aumentando el valor cada vez que se resetea el servidor y el personaje se conecte con cierta regularidad, de esta manera llevaría un conteo del tiempo aproximado que lleve ese personaje en el servidor y así aplicarlo como condicional en un sistema de autodesbloqueos de nivel que estoy armando, bueno, aquí abajo colocaré el script que me falla, es donde intento sumar una variable una vez por personaje, pero al disparar el scrip me da un error (demasiadas instrucciones), algo estoy haciendo mal.

 

 

Desde una conversación, su función deberia ser:

 

- chequear si el personaje ya disparó el script y si lo hizo no volver a hacerlo (hasta el proximo reset)

- si lo anterior ocurre, chequear el objeto en el inventario para sumarle el valor en la variable en +1

- si lo anterior ocurre, enviarle un mensaje al personaje avisando que ha sumado un punto

 

 

void main()
{
object oPC = GetPCSpeaker();
object oItem = GetFirstItemInInventory(oPC);
while(oItem != OBJECT_INVALID)
if (!GetIsPC(oPC)) return;

int DoOnce = GetLocalInt(oPC, GetTag(OBJECT_SELF));

if (DoOnce==TRUE) return;

 {
  if(GetResRef(oItem)=="objeto_permanente")
  {

SetLocalInt(oItem, GetTag(OBJECT_SELF), TRUE);

int nInt;
nInt = GetLocalInt(oItem, "cant_reset");

nInt += 1;

SetLocalInt(oItem, "cant_reset", nInt);
}
  oItem = GetNextItemInInventory(oPC);
  SendMessageToPC(oPC, "Has sumado un punto de reseteo, estos puntos sirven para conseguir desbloqueos y representan el tiempo que el personaje lleva en el servidor.");

 }
}
 

 


Colaborando en:



Nombre servidor: ES) Rebelión del Submundo
Tipo de servidor: rol/acción/jvj
Jugadores: 1-25
Niveles: 1-30
Base literaria: Reinos Olvidados
IP (conectar directamente): sombrasdefaerun.no-ip.org
Foro: http://usn-rol.foroes.org/



 


#2 MenemDoIt

MenemDoIt

    Antediluvian

  • Miembro
  • PipPipPipPipPip
  • 1162 posts

Posteado 02 July 2018 - 09:17 AM

a ver, mira si asi te funciona :

void main()
{
 object oPC = GetPCSpeaker();
 if(!GetIsPC(oPC))return;
 object oItem = GetFirstItemInInventory(oPC);
 while(oItem != OBJECT_INVALID)
 {
  if(GetResRef(oItem)=="objeto_permanente")
  {
   int DoOnce = GetLocalInt(oPC,"D0Once");
   if(DoOnce)return;
   SetLocalInt(oPC,"D0Once",1);
   SetLocalInt(oItem,"cant_reset",GetLocalInt(oItem,"cant_reset")+1);
   SendMessageToPC(oPC,"Has sumado un punto de reseteo, estos puntos sirven para conseguir desbloqueos y representan el tiempo que el personaje lleva en el servidor.");
  }
  oItem = GetNextItemInInventory(oPC);
 }
}

10016077DS1515734551.gif


#3 Zoraga

Zoraga

    Neonato

  • Miembro
  • PipPip
  • 201 posts

Posteado 03 July 2018 - 12:07 AM

Gracias, lo armaste de forma mas simple y funcionó, muchas veces me has ayudado con el apoyo técnico, se agradece bastante. :thumb:


Colaborando en:



Nombre servidor: ES) Rebelión del Submundo
Tipo de servidor: rol/acción/jvj
Jugadores: 1-25
Niveles: 1-30
Base literaria: Reinos Olvidados
IP (conectar directamente): sombrasdefaerun.no-ip.org
Foro: http://usn-rol.foroes.org/



 


#4 Zoraga

Zoraga

    Neonato

  • Miembro
  • PipPip
  • 201 posts

Posteado 03 July 2018 - 11:30 AM

Disculparme nuevamente, para no crear otro hilo al respecto, ¿es posible añadir en el mensaje, información sobre la cantidad de puntos que lleva en ese momento?.


Colaborando en:



Nombre servidor: ES) Rebelión del Submundo
Tipo de servidor: rol/acción/jvj
Jugadores: 1-25
Niveles: 1-30
Base literaria: Reinos Olvidados
IP (conectar directamente): sombrasdefaerun.no-ip.org
Foro: http://usn-rol.foroes.org/



 


#5 MenemDoIt

MenemDoIt

    Antediluvian

  • Miembro
  • PipPipPipPipPip
  • 1162 posts

Posteado 03 July 2018 - 05:05 PM

por supuesto, usas la funcion IntToString en el SendMessageToPC.


10016077DS1515734551.gif


#6 Zoraga

Zoraga

    Neonato

  • Miembro
  • PipPip
  • 201 posts

Posteado 08 July 2018 - 02:55 AM

Gracias Menem, me resultó satisfactoriamente, no pude meter el mensaje dentro del mensaje original, pero agregándolo después quedó bien de todas formas, al final lo dejé así:

 

void main()
{
 object oPC = GetExitingObject();
 if(!GetIsPC(oPC))return;
 object oItem = GetFirstItemInInventory(oPC);
 while(oItem != OBJECT_INVALID)
 {
  if(GetResRef(oItem)=="objeto_permanente")
  {
   int DoOnce = GetLocalInt(oPC,"D0Once");
   if(DoOnce)return;
   SetLocalInt(oPC,"D0Once",1);
   SetLocalInt(oItem,"cant_reset",GetLocalInt(oItem,"cant_reset")+1);
   int a = GetLocalInt(oItem,"cant_reset");
   SendMessageToPC(oPC,"Has sumado un punto de reinicio, estos puntos sirven para conseguir desbloqueos y representan el tiempo que el personaje lleva activo en el servidor.");
   SendMessageToPC(oPC,"La cantidad de puntos de reinicio que llevas es:");
   SendMessageToPC(oPC,IntToString(a));
  }
  oItem = GetNextItemInInventory(oPC);
 }
}


Editado por Zoraga, 08 July 2018 - 03:53 AM.

Colaborando en:



Nombre servidor: ES) Rebelión del Submundo
Tipo de servidor: rol/acción/jvj
Jugadores: 1-25
Niveles: 1-30
Base literaria: Reinos Olvidados
IP (conectar directamente): sombrasdefaerun.no-ip.org
Foro: http://usn-rol.foroes.org/



 


#7 MenemDoIt

MenemDoIt

    Antediluvian

  • Miembro
  • PipPipPipPipPip
  • 1162 posts

Posteado 08 July 2018 - 10:18 AM

proba asi :

 

SendMessageToPC(oPC,"La cantidad de puntos de reinicio que llevas es:"+IntToString(a));

 

y asi borras el segundo Send.


10016077DS1515734551.gif


#8 Zoraga

Zoraga

    Neonato

  • Miembro
  • PipPip
  • 201 posts

Posteado 09 July 2018 - 12:18 AM

Ahora entiendo por q nome compilaba al intentarlo, me faltaba agregar el signo +. Gracias nuevamente Menem.


Colaborando en:



Nombre servidor: ES) Rebelión del Submundo
Tipo de servidor: rol/acción/jvj
Jugadores: 1-25
Niveles: 1-30
Base literaria: Reinos Olvidados
IP (conectar directamente): sombrasdefaerun.no-ip.org
Foro: http://usn-rol.foroes.org/



 




Responder



  



También marcado con variables

A Bragol. Tus amigos te echan de menos.