Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ramunda

#196
General (Antiguo) / Enemigos que cruzan paredes...
Julio 26, 2015, 12:45:25 AM
@Adngel, macho de verdad, tu de donde has salido?, eres un ser de otro planeta que viene a enseñarnos o algo asi?, estoy flipando, pero en colores, eres una enciclopedia andante!!, pero cuantos años llevas en esto?, te lo sabes como la santa biblia!!!, estoy anomalado, que envidia me das!!!!!, y encima aprendo mas con 7 lineas tuyas que en una mañana de tutoriales....La super detallada explicación es de lo mas, lo único que puedo decir a mi favor(que ya es mucho), es que la mitad la entendia porque este script no lo copie sin mas , lo fui fabricando a base de palos...pero como tu bien dices, cajas negras....Lo genial es que ahora lo entiendo aun mas....pero...(simpre hay un pero), lo del rb:(rigidbody lo tengo en el fantasma), veo el concepto que me quieres decir que lo llame y lo use en el lugar de decirle al fantasma que venga de sopetón hacia mi y asi se salte lo que tenga delante.Eso lo he entendido pero del dicho al echo....hay programación y en eso fallo.Lo del  void start...si lo reconozco esta de adorno supongo que pense que me serviria aqui algun dia...y asi es ya le has encontrado utilidad, pero repito,soy tonto y no se aplicar lo que me has explicado.Pero me arriesgare....seria poner esto aqui?
using UnityEngine;
using System.Collections;
public class skellyattack13 : MonoBehaviour {
   public GameObject player;
   public GameObject skelly6;
   public float distance;
   public PlayerInfo character;
   
   // Use this for initialization
     public Vector3 teleportPoint;
         public Rigidbody rb;
         void Start() {
         rb = GetComponent<Rigidbody>();
    }
    void FixedUpdate() {
        rb.MovePosition(transform.position + transform.forward * Time.deltaTime);
    }
}  
   }
   
   // Update is called once per frame
   void Update () {
      
   player = GameObject.FindWithTag("jugador");
   skelly6 = gameObject;
   distance = Vector3.Distance(player.transform.position,skelly6.transform.position);
      
      if (distance <= 4) {
      skelly6.GetComponent<Animation>().CrossFadeQueued("Walk", 0.3f, QueueMode.PlayNow);
      skelly6.GetComponent<Animation>().CrossFade("Attack");
      character.ApplyDamage(1);
      character.playerInCombat(1);
      }
      else if (distance < 50 && distance > 4.0f) {
      ///GetComponent<FollowPath>().enabled = false;
      skelly6.GetComponent<Animation>().CrossFadeQueued("Attack", 0.3f, QueueMode.PlayNow);
      skelly6.GetComponent<Animation>().CrossFade("Walk");
      skelly6.transform.LookAt(player.transform.position);
         transform.position = Vector3.MoveTowards(transform.position, player.transform.position, 0.30f);
         //character.playerInCombat(1);
         
      }   
      else
      {
      skelly6.GetComponent<Animation>().CrossFadeQueued("Walk", 0.3f, QueueMode.PlayNow);
      skelly6.GetComponent<Animation>().CrossFade("Idle");
      ///GetComponent<FollowPath>().enabled = true;
      character.playerInCombat(1);
      }
   }
   
   
}
pero entonces esto? sobra???....hay madre....necesito verlo para encajarlo :(....algun dia llevame con tu nave a tu mundo que seguro que alli me metes un chip....y lo aprendo todo.Esto:
distance = Vector3.Distance(player.transform.position,skelly6.transform.position);

Por cierto @Howling Wolf, gracias a ti tambien por la respuesta cuando me ponga las pilas me mirare el tema de Navmesh, aver si me entero ya de una vez :(. 
#197
General (Antiguo) / Enemigos que cruzan paredes...
Julio 25, 2015, 05:53:52 PM
Compañeros antes que nada gracias por las respuestas.Empezare por @Adngel , este es el script que los muevo:
using UnityEngine;
using System.Collections;
public class skellyattack13 : MonoBehaviour {
   public GameObject player;
   public GameObject skelly6;
   public float distance;
   public PlayerInfo character;
   
   // Use this for initialization
   void Start () {
   }
   
   // Update is called once per frame
   void Update () {
      
   player = GameObject.FindWithTag("jugador");
   skelly6 = gameObject;
   distance = Vector3.Distance(player.transform.position,skelly6.transform.position);
      
      if (distance <= 4) {
      skelly6.GetComponent<Animation>().CrossFadeQueued("Walk", 0.3f, QueueMode.PlayNow);
      skelly6.GetComponent<Animation>().CrossFade("Attack");
      character.ApplyDamage(1);
      character.playerInCombat(1);
      }
      else if (distance < 50 && distance > 4.0f) {
      ///GetComponent<FollowPath>().enabled = false;
      skelly6.GetComponent<Animation>().CrossFadeQueued("Attack", 0.3f, QueueMode.PlayNow);
      skelly6.GetComponent<Animation>().CrossFade("Walk");
      skelly6.transform.LookAt(player.transform.position);
         transform.position = Vector3.MoveTowards(transform.position, player.transform.position, 0.30f);
         //character.playerInCombat(1);
         
      }   
      else
      {
      skelly6.GetComponent<Animation>().CrossFadeQueued("Walk", 0.3f, QueueMode.PlayNow);
      skelly6.GetComponent<Animation>().CrossFade("Idle");
      ///GetComponent<FollowPath>().enabled = true;
      character.playerInCombat(1);
      }
   }
   
   
}
@DanielVZ , no no funcionan con nav mesh.@Howling Wolf , efectivamente estoy con tigo , todos los enemigos tienen un rigid body puesto pero siguen cruzando los muros.Alguna idea? 
Adngel, me suena a misa lo que he visto en los links que me has mandado...alguna forma de no cargarme todo el curro echo ? en el script que he puesto ? es facil la alteración? sino me muero tengo 35 esqueletos como ese....arf  
#198
General (Antiguo) / Enemigos que cruzan paredes...
Julio 24, 2015, 10:41:24 PM
Hola muy buenas , tengo una duda y no encuentro la solución , tengo una serie de enemigos, varios en general todos tienen sphere collither para que las balas los maten , no estan en trigguer, tienen rigidbody, y todo ok . Pero por ejemplo edificios con un mesh collither , lo cruzan cuando vienen a mi a atacarme o ***guirme etc.alguna solución para que no crucen los mesh?, mi personaje no los cruza ellos si.... Gracias  
#199
PlayerTransform.Posicion = EndPosition;Aqui en posicion le tengo que dar las coordenadas?, porque me da error de:error CS1061: Type `UnityEngine.Transform' does not contain a definition for `Posicion' and no extension method `Posicion' of type `UnityEngine.Transform' could be found (are you missing a using directive or an assembly reference?)Por cierto gracias por contestarYay  ya lo encontre :), el Posicion, estaba mal no es Posicion, es position en minusculas y en pitinglish  using UnityEngine;
using System.Collections;

public class teleportspawnpoint2 : MonoBehaviour {

public string SceneName = "gruta";//Nombre de la Escena que vamos a Cargar.
public Vector3 EndPosition = Vector3.zero; // Posicion donde el jugador se deberia hubicar en la escena.   

//Comprobamos la collision
void OnTriggerEnter(Collider col)
{
   if(col.tag == "jugador")
   {
      LoadScene(col.transform);
   }
}

//Seteamos la posicion del Jugador, le indicamos que no se destruya y luego cargamos la escena.
private void LoadScene(Transform PlayerTransform)
{
PlayerTransform.position = EndPosition;
   DontDestroyOnLoad(PlayerTransform);
   Application.LoadLevel(SceneName);
}
}este el que sube:
using UnityEngine;
using System.Collections;

public class teleportspawnpoint : MonoBehaviour {

public string SceneName = "laisla";//Nombre de la Escena que vamos a Cargar.
public Vector3 EndPosition = Vector3.zero; // Posicion donde el jugador se deberia hubicar en la escena.   

//Comprobamos la collision
void OnTriggerEnter(Collider col)
{
   if(col.tag == "jugador")
   {
      LoadScene(col.transform);
   }
}

//Seteamos la posicion del Jugador, le indicamos que no se destruya y luego cargamos la escena.
private void LoadScene(Transform PlayerTransform)
{
PlayerTransform.position = EndPosition;
   DontDestroyOnLoad(PlayerTransform);
   Application.LoadLevel(SceneName);
}
}
pero hacen caso omiso de las coordenadas que le digo.A ver yo me he perdido algo, el
DontDestroyOnLoad
Sirve para que se lleve TODO de una escena a otra no?, si no es asi por favor que alguien me diga que hace, porque lo único que consigo asi es que se lleve la pistola en la mano, pero ni los scrores, ni las balas ni el disparo ni sistema de vida todo eso se queda atrás.Por favor que alguien me lo explique como me llevo TODO al otro nivel?GraciasEstoy por crear un plano alli a lo lejos y crear la escena alli ...creo que sera mas facil...a falta de entendimiento buenas son tortas     
#200
Muchas gracias francoe1 , si asi lo are usare c#, Mañana lo pruebo i te cuento!!, una cosilla pongo lo mismo en el otro cubo el se vuelta? osea el mismo script en los 2? Gracias!!! 
#201
Hola buenas tardes, se me escapa algo y no se que es he mirado foros y tutos y sigue sin funcionar.Sere breve i explicito.Una trampilla con tag "trapdoor",con un collider que te lleva a un nuevo level con script:
#pragma strict
 var player : GameObject;
 function OnTriggerEnter() {
  Application.LoadLevel ("gruta");
 }
function Awake () {
DontDestroyOnLoad (transform.gameObject);
}
en el otro nivel un simple cubo con un collider y este script:
using UnityEngine;
using System.Collections;

public class teleportspawnpoint : MonoBehaviour {
public GameObject player;//que el jugador sea el que se mueva.


void OnTriggerEnter(Collider other)
{

   if(other.gameObject.tag == "jugador")

   {
      DontDestroyOnLoad(other.gameObject);//que se lleve el objeto al otro level.
      Application.LoadLevel("laisla");//carga nivel 1(laisla).
   }
}
void OnLevelWasLoaded(int thisLevel)
{
   player.transform.position = GameObject.FindWithTag("trapdoor").transform.position;//le digo que al cargar el lvl busque este objeto y vaya hacia el.
   
}
}
Y no hay manera de que me aparezca el la trampilla se va al comienzo de donde empieza el nivel 1. Alguna idea de que esta mal?Gracias de antemano. 
#202
General (Antiguo) / borrar los playerpref?¿
Julio 23, 2015, 12:15:46 PM
Gracias, Quel, si lo busque pero no ponia las palabras correctas y me salia de todo menos lo que buscaba.El link que me has proporcionado, deja claro la instrucción que hay que usar:PlayerPrefs.DeleteAll()Pero no especifica de en ninguna parte como o donde hay que ponerla.GraciasVale , esta en el registro de windows bajo el nombre de la compañía puesta en el proyecto, veo los 3 checkpoints...he de suponer ue me los cargo /borro y se soluciona el problema.Voy a probar y os cuento....:)He borrado los 3 checkpoints que tenia el registro, pero sigue sin ir al cubo que le digo. 
#203
General (Antiguo) / borrar los playerpref?¿
Julio 23, 2015, 09:56:18 AM
La cosa es que cree una estatua que al pasar sobre ella se me crea como un "Checkpoint", al entrar de nuevo en la partida, bien esto me esta costando sudores porque ponga done ponga el jugador, en el nivel que sea simpre recuerda esas coordenadas.Y por mucho que intente pasar de nivel simpre me recuerda las coordenadas y aparece en ese sitio.Los que puse en la estatua es esto  
#pragma strict
private var theCollider : String;

function OnTriggerEnter (other : Collider)
{
theCollider = other.tag;
if (theCollider == "jugador")
{
PlayerPrefs.SetFloat("Checkpointx", gameObject.transform.position.x);
PlayerPrefs.SetFloat("Checkpointy", gameObject.transform.position.y);
PlayerPrefs.SetFloat("Checkpointz", gameObject.transform.position.z);
}
}
y esto en el jugador:
pragma strict
function Start () {
gameObject.transform.position.x = PlayerPrefs.GetFloat("Checkpointx");
gameObject.transform.position.y = PlayerPrefs.GetFloat("Checkpointy");
gameObject.transform.position.z = PlayerPrefs.GetFloat("Checkpointz");
}
y bien por mucho que desactivo estos scripts hasta borrar la estatua el Unity lo recuerda y claro cuando subo al nivel 1 me lleva al ultimo lugar donde estaba dicha estatua....como demonios le borro la memoria al Unity?.Me tiene pillado los player pref....si cargara el unity sin los scripts ?, se limpiaria?Ideas por favor...:( 
#204
General (Antiguo) / Necesito una idea...
Julio 22, 2015, 11:39:58 PM
Valeee solucionado!!! , mas problemas, estoy en el nivel 2, quiero volver al nivel 1 pero a la posición que baje lo cual cree esto: Un cubo en el lugar de bajada al level 2 llamado y tagueado SpawnPint.En la entrada de el level 2 otro cubo con un collider y este script:
using UnityEngine;
using System.Collections;

public class teleportspawnpoint : MonoBehaviour {


void OnTriggerEnter(Collider other)
/// al colisionar con en cubo...
{
   if(other.gameObject.tag == "jugador")
///...mi jugador y no un bicho....
   {
      Application.LoadLevel("laisla");
//// NIVEL1
   }
}
void OnLevelWasLoaded(int thisLevel)
/// cuando el nivel se cargue.....
{
   transform.position = GameObject.FindWithTag("SpawnPoint").transform.position;
/// deberia llevarme al cubo con este tag no?
}
}
los nombres de el level estan bien pero para no liar digo levl1 y lv2 para que nos entendamos.Bien cuando me meto en el cubo de la entrada de el nivel 2 me trasporta si, al nivel 1 pero no al cubo con tag SpawnPoint...me lleva al inicio donde empezo..que ago mal?Gracias de antemano!!!creo que estoy viendo el mal de todos mis problemas....cree una estatua que al pasar sobre ella te guardaba la posicion de el jugador al entrar de nuevo en la partida....esto esta en la estatua:
#pragma strict
private var theCollider : String;

function OnTriggerEnter (other : Collider)
{
theCollider = other.tag;
if (theCollider == "jugador")
{
PlayerPrefs.SetFloat("Checkpointx", gameObject.transform.position.x);
PlayerPrefs.SetFloat("Checkpointy", gameObject.transform.position.y);
PlayerPrefs.SetFloat("Checkpointz", gameObject.transform.position.z);
}
}
y esto en el jugador:
pragma strict
function Start () {
gameObject.transform.position.x = PlayerPrefs.GetFloat("Checkpointx");
gameObject.transform.position.y = PlayerPrefs.GetFloat("Checkpointy");
gameObject.transform.position.z = PlayerPrefs.GetFloat("Checkpointz");
}
y bien por mucho que desactivo estos scripts hasta borrar la estatua el Unity lo recuerda y claro cuando subo al nivel 1 me lleva al ultimo lugar donde estaba dicha estatua....como demonios le borro la memoria al Unity?.Me tiene pillado los player pref....si cargara el unity sin los scripts ?, se limpiaria?Ideas por favor...:(   
#205
General (Antiguo) / Necesito una idea...
Julio 22, 2015, 07:28:37 PM
Muchas gracias francoe1, genial como siempre :), y gracias también  Adngel y Wolf, tanto la solución de francoe1 como de Adngel me han servido, y sobretodo he aprendido que para mi es lo mejor. Gracias chicos!!!!P.D @franco1 no uso el DontDestroyOnLoad decidi cojer todo lo que usaria en el proximo o proximos niveles hacerlo gameobject y simplemente lo arrastro al Hirachy segun necesito.Asi tengo todo a mano por eso lo de el poder cambiar las variables porque el player se lleva las variables de el primer nivel...El codigo que me has puesto es una pasada pero donde han ido a parar todos los dinos? solo quedo1? 
public GameObject[] ObjectSoundAguadino; 
public GameObject sonidoisladino;
    public GameObject sonidoaguadino2;
    public GameObject sonidoaguadino1;
    public GameObject sonidoaguadino3;
    public GameObject sonidoaguadino4;
    public GameObject sonidoaguadino5;
    public GameObject sonidoaguadino6;
    public GameObject sonidoaguadino7; estos no los veo? o se han simplificado en la lina anterior?, de todas formas mil gracias!!!   
#206
General (Antiguo) / Necesito una idea...
Julio 22, 2015, 05:37:11 PM
@francoe1 , sigo perdido ...esto que me pones detecta el cambio de escena?, o que hace en realidad? en que afecta a las coordenadas de respawn?...me perdiiiii
#207
General (Antiguo) / Necesito una idea...
Julio 22, 2015, 05:30:54 PM
 
  • @francoe amigo mio me alegro e saber de tiiiiiiiiii @Howling Wolf tambien me alegro de saber de ti compi!!!
 Las ideas de los 3 incluio a Adgel son muy buenas , pero Francoe la nueva escena se lleva todo igual del player lo cual el respawn no se como modificarselo dentro de la nueva escena en el codigo que he puesto arriba entiendo lo que quieres decir pero no imagino como hacerlo....@Howling la idea fantastica pero recuerda que soy lerdo hahha necesito un empujoncito.....si alguno de los 3 me especifica como debo meterlo en el codigo anterior lo vere lo aprendere y seguire aprendiendo  Gracias de antemanooo!!!  
@Adngel, voy aprobar lo de la svariables, el resto de trastos de el script los he solucionado facil los he echo gameobjects y los aplico al nuevo nivel solo de momento me pica esto de el respawn.....que seguro que me saldran mas cosas pero poco a poco xd
#208
General (Antiguo) / Necesito una idea...
Julio 22, 2015, 03:43:13 PM
@Adngel mi heroe a vuelto !!! , bien bien interesante!!, pero para un lerdo como yo... Me lo puedes poner mas marticadito?, algun pedazo de codigo? asi aprendo a velocidad rayo  las animaciones van a tope gracias a ti.Si lo que ago es llevarme el player de el nivel anterior e aqui el problema que en el otro nivel mola pero aquí.....se sale de ruta :).Porvafor maestro ilustrame de nuevo!!! A la espera.Graciasss 
#209
General (Antiguo) / Otro error más de novato....
Julio 22, 2015, 03:19:49 PM
Hola Rouless, si efectivamente con el guetcomponent podrias llamar a otro script o linea de acción, pero...simpre hay un pero haha, son de el mismo palo?, me explico esto que has posteado es c# bien el otro script tambien es c#? Si es Javascript se complica la cosa ya que no se pueden ver el uno al otro...bueno al lio. El comando que necesitas es:GetComponent<   el script o linea que sea.....>().enabled = false; o si es activarlo:GetComponent<   el script o linea que sea.....>().enabled = true; si es de Java la unica manera de que se vean es poniendo el otro script en standard assets es como una pasarela publica para Unity.Y lo que comentas de los permisos:Si le pones Static public o al reves nose como era Prueba y nos cuentas hermano , saludos!!    
#210
General (Antiguo) / Necesito una idea...
Julio 22, 2015, 02:21:15 PM
Vereis necesito una idea de como proceder....
using UnityEngine;
using System.Collections;

public class PlayerInfo : MonoBehaviour {
public GameObject Bocaarma;
public GameObject healthBottle;
public GameObject player;
public AudioClip deathClip;
public AudioClip deathClip2;
public AudioSource sonido;
public AudioSource sonido2;
public GameObject sonidoisladino;
public GameObject sonidoaguadino2;
public GameObject sonidoaguadino1;
public GameObject sonidoaguadino3;
public GameObject sonidoaguadino4;
public GameObject sonidoaguadino5;
public GameObject sonidoaguadino6;
public GameObject sonidoaguadino7;
public Animation muerto2;

public float length;
//public AnimationClip Die;

int health = 100;
int damageCount = 0;
int currentHealth;
bool playerFighting;
public GUIText healthbar;
float timer = 0.0f;
float healthTimer = 0.0f;
bool healthShouldRespawn = false;

public bool muerto = false;
public GameObject tuUI;

void Start () {
   currentHealth = health;
   tuUI.SetActive(false);
   }

void Update () {
   Cursor.visible = false;
   print("player in combat? " + playerFighting);
   if(!playerFighting){
      print("player is not fighting");
      if(currentHealth != 100){
         timer += Time.deltaTime;
         print ("timer: " + timer);
         if(timer > 90.0f){
            currentHealth += 10;
            timer = 0.0f;
         }
      }
   }
   else
   {
      if(currentHealth <= 0 && !muerto ){
         muerto = true;
         sonido.PlayOneShot(deathClip2);
         muerto2.Play("muerto");
         //GetComponent<AudioSource>().enabled = false;
         //GetComponent<AudioSource>().PlayOneShot(deathClip2);//length =5f;
         GetComponent<FPSInputController>().enabled = false;
         GetComponent<CharacterController>().enabled = false;
         Bocaarma.SetActive(false);
         sonidoisladino.SetActive(false);
         sonidoaguadino2.SetActive(false);
         sonidoaguadino3.SetActive(false);
         sonidoaguadino4.SetActive(false);
         sonidoaguadino5.SetActive(false);
         sonidoaguadino6.SetActive(false);
         sonidoaguadino7.SetActive(false);
         sonidoaguadino1.SetActive(false);
         
      

         
         //Destroy(gameObject);


   
      }
   }
   healthbar.text = "Vida " + currentHealth + " / 100";
   
   if(healthShouldRespawn)
   {
      healthTimer += Time.deltaTime;
      
      if(healthTimer > 5.0f)
      {
         healthBottle.gameObject.SetActive(true);
         healthTimer = 0.0f;
      }
   }
   
   if(muerto){
      //var anim = GetComponent<Animation>();
      //anim.AddClip(Die,"attackbo");
      //anim.play("attackbo");
      //GetComponent<AudioSource>().PlayOneShot(deathClip2);length =5f;
      Cursor.visible = false;
      tuUI.SetActive(true);
      if(Input.GetKeyDown(KeyCode.Space)){
         Respawn();
      }
   }
   
}

public void ApplyDamage(int damage){
   damageCount = damageCount + damage;
   if(damageCount == 100){
      if(currentHealth < 0){
         currentHealth = 0;
      }
      currentHealth = currentHealth - 30;
      sonido2.PlayOneShot(deathClip);
      //GetComponent<AudioSource>().PlayOneShot(deathClip);
      //GetComponent<AudioSource>().PlayOneShot(deathClip);//length =3f;
      healthbar.text = "Health " + currentHealth + " / 100";
      damageCount = 0;
   }
   
   print(currentHealth);
}

public void playerInCombat(int combat){
   if(combat == 1){
      playerFighting = true;
   }
   else
   {
      playerFighting = false;
   }
}

public void Respawn(){
   tuUI.SetActive(false);
   muerto = false;
   transform.position = new Vector3(Random.Range(400.0f, 700.0f), 0, Random.Range(300.0f, 800.0f));
   GetComponent<FPSInputController>().enabled = true;
   GetComponent<CharacterController>().enabled = true;
   sonidoisladino.SetActive(true);
   sonidoaguadino2.SetActive(true);
   sonidoaguadino3.SetActive(true);
   sonidoaguadino4.SetActive(true);
   sonidoaguadino5.SetActive(true);
   sonidoaguadino6.SetActive(true);
   sonidoaguadino7.SetActive(true);
   sonidoaguadino1.SetActive(true);
   ///GetComponent<AudioSource>().enabled = true;
   //GetComponent<disparosyrecargos2>().enabled = true;
   ////GetComponent<MouseLook>().enabled = true;
   Bocaarma.SetActive(true);
   currentHealth = 100;
}

void OnTriggerEnter(Collider item){
   if(item.gameObject.tag == "PlayerHealthBottle")
   {
      if(currentHealth < 100)
      {
         currentHealth = currentHealth + 50;
         item.gameObject.SetActive(false);
         healthShouldRespawn = true;
      }
   }
}
}
Explicoeste script es bastante fundamental en mi desarrollo de el juego ya que esta vinculado a varias cosas....Bien , el scrip va de fabula ese no es el problema, la cosa es que en la linea 139 hasta la 142...public void Respawn(){ 
        tuUI.SetActive(false);
        muerto = false;
        transform.position = new Vector3(Random.Range(400.0f, 700.0f), 0, Random.Range(300.0f, 800.0f));es donde cuando mi personaje muere respawnea aleatoriamente en las coordenadas puestas. Ok , todo bien esto esta bien en el nivel 1El problema empieza en el nivel 2....que es una gruta....y claro si respawnea en estas aleatorias corrdenadas evidentemente se va al traste por el espacio.-... La solución que pense es copiarlo ponerle por ej:playerinfo2 y correjir las coordenadas mas cortas etc....pero al cambiarle el nombre tambien fallan otros muchos scrips vinculados a playerinfo incluidos vida, daño etc.... Alguna idea?Como dejar intacto el pastel y modificar eso? sin renombrar? Gracias de antemano.