| Author | 
            Message | 
        
        
			| 
				
				 Coops 
				
				
					 Joined: Wed Feb 17, 2010 12:07 am Posts: 1545 Location: That small peaceful place called Hell.
				 
				 
			 | 
			
				
				  Duplication Problem  
					
						Im having a problem in which Im trying to get a type of toggle going on, What I want is when an MOPixel is created, the script attached to said MOPixel would check for duplicates of itself on Create and delete it and itself, if not then it stays. Problem is, Instead of finding a duplicate, it finds itself therefore deleting itself. I tried something like this, but what I just described is happening. No errors either. Code: function Create(self)
     for particle in MovableMan.Particles do       if particle.PresetName == self.PresetName then          self.particle = particle          self.particle.ToDelete = true          self.ToDelete = true       else          self.enable = true          break       end    end end Any way I can counter this?  
					
  
			 | 
		
		
			| Thu May 05, 2011 9:35 pm | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 Asklar 
				Data Realms Elite 
				
					 Joined: Fri Jan 07, 2011 8:01 am Posts: 6211 Location: In your office, earning your salary.
				 
				 
			 | 
			
				
				  Re: Duplication Problem  
					
						And if you add in the if something like if the particle is not self, or something like that? 
					
  
			 | 
		
		
			| Thu May 05, 2011 11:35 pm | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 Grif 
				REAL AMERICAN HERO 
				
					 Joined: Sat Jan 27, 2007 10:25 pm Posts: 5655
				 
				 
			 | 
			
				
				  Re: Duplication Problem  
					
						try: if ToMOPixel(self.particle) ~= self 
					
  
			 | 
		
		
			| Fri May 06, 2011 1:08 am | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 Coops 
				
				
					 Joined: Wed Feb 17, 2010 12:07 am Posts: 1545 Location: That small peaceful place called Hell.
				 
				 
			 | 
			
				
				  Re: Duplication Problem  
					
						I get errors with it.
 
 I can try and make it a MOSParticle and use ToMOSParticle() instead.
  EDIT: Or ToMovableObject(). Still errors.
  EDIT EDIT: Well I guess it cant check if its the same particle if it doesn't even have the particle yet. Huuuurrrrrrrrrrrrr
  EDIT EDIT EDIT: Im still having problems with this, its talking about "no such operator defined". 
					
  
			 | 
		
		
			| Fri May 06, 2011 7:10 am | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 Grif 
				REAL AMERICAN HERO 
				
					 Joined: Sat Jan 27, 2007 10:25 pm Posts: 5655
				 
				 
			 | 
			
				
				  Re: Duplication Problem  
					
						then try getting rid of the ToMOPixel 
					
  
			 | 
		
		
			| Fri May 06, 2011 4:40 pm | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 Coops 
				
				
					 Joined: Wed Feb 17, 2010 12:07 am Posts: 1545 Location: That small peaceful place called Hell.
				 
				 
			 | 
			
				
				  Re: Duplication Problem  
					
						Still says the exact same thing. Heres the entire script if it helps. Code: function Create(self)    self.enable = true        for particle in MovableMan.Particles do       if particle ~= self then          self.enable = true       else          self.particle = ToMOPixel(particle)          self.particle.ToDelete = true          self.ToDelete = true          self.enable = false          break       end    end        for actor in MovableMan.Actors do       if SceneMan:ShortestDistance(actor.Pos, self.Pos, true).Magnitude < 60 then          self.parent = actor          break       end    end end
  function Update(self)
     if(MovableMan:IsActor(self.parent)) and self.enable then       self.ToDelete = false       self.ToSettle = false       self.PinStrength = 1000       self.Age = 1       self.Pos = self.parent.Pos + Vector(0,-30)    else       self.ToDelete = true    end end  
					
  
			 | 
		
		
			| Fri May 06, 2011 8:23 pm | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 zoidberg 
				
				
					 Joined: Fri Feb 25, 2011 3:52 pm Posts: 39
				 
				 
			 | 
			
				
				  Re: Duplication Problem  
					
						if you want only one pixel to exist at the same time, then use global boolean if you want few of them, with their own parents - use global boolean table my opinion
  edit: or just a proximity check if (particle.Pos - self.Pos).Magnitude > 5 then blah-blah end 
					
  
			 | 
		
		
			| Sat May 07, 2011 12:43 am | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 Coops 
				
				
					 Joined: Wed Feb 17, 2010 12:07 am Posts: 1545 Location: That small peaceful place called Hell.
				 
				 
			 | 
			
				
				  Re: Duplication Problem  
					
						How would I go on about doing this?
  I probably know what your talking about, just you put it in a different way.
  EDIT: Proximity just checks if any MOPixel would be in range. Im trying to get it to check if its a certain type of pixel. 
					
  
			 | 
		
		
			| Sat May 07, 2011 12:57 am | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 zoidberg 
				
				
					 Joined: Fri Feb 25, 2011 3:52 pm Posts: 39
				 
				 
			 | 
			
				
				  Re: Duplication Problem  
					
						this pixel is fired from the gun, isn't it? and you don't want to do anything with the gun? then use this: Code: function Create(self)     for i = 1, MovableMan:GetMOIDCount() - 1 do         local mo = MovableMan:GetMOFromID(i)         if (mo.Pos - self.Pos).Magnitude < 40 and mo.ClassName == "HDFirearm" and mo.PresetName == "your gun name" and mo.Sharpness == 0 then             self.parent = ToActor(MovableMan:GetMOFromID(mo.RootID))             self.weapon = ToHDFirearm(mo)             self.weapon.Sharpness = 1         else             self.ToDelete = true         end     end end
  function Update(self)     if(MovableMan:IsActor(self.parent)) then         self.ToDelete = false         self.ToSettle = false         self.PinStrength = 1000         self.Age = 1         self.Pos = self.parent.Pos + Vector(0,-30)     else         self.ToDelete = true         self.weapon.Sharpness = 0     end end
  function Destroy(self)     if self.weapon and MovableMan:ValidMO(self.weapon) then         self.weapon.Sharpness = 0     end end
  this script won't let itself to create 2 or more pixels with one parent hadn't tested it, btw edit: where did you get your script? if you've written it by yourself, then i've got bad news for you. at first lines you starting to cycle through all particles on the scene, right? every particle on the scene, exept this scripted pixel ~= this pixel you write: if particle ~= self then     self.enable = true butif particle == self then    *delete 'em all* wth? the script finds your scripted pixel, this scripted pixel == self, and it deletes the pixel what were you expecting from it?  
					
  
			 | 
		
		
			| Sat May 07, 2011 11:32 am | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 Coops 
				
				
					 Joined: Wed Feb 17, 2010 12:07 am Posts: 1545 Location: That small peaceful place called Hell.
				 
				 
			 | 
			
				
				  Re: Duplication Problem  
					
						Well like I said in the OP, that's what I was having trouble with, it finding itself and deleting itself without the duplicate.
  This script you gave me seems to have trouble finding the weapon. I get an error saying that self.weapon is a nil value so that's what I presume. I did put the weapon's name where you told me to and even a print(self.weapon) to make sure that it didn't find it or can't get past that first check properly.
  Fooling around with the gun in this script is perfectly fine, all it does is activate something in relative to another script which would check if this particle exists, then continues on with it's script.
  From what I can tell with your script, it just deletes itself if another of itself exists. I want it to delete itself and that duplicate, sort of like a toggle function.
  Thanks anyhow, I might play around with this script to get it right.
  EDIT: I got it, messing around with the weapon's sharpness did the trick (That's why It didn't get the weapon, I didn't give it a sharpness value.) and got it to constantly check if the sharpness is the same, if not then switch it back which in return would tell both particles to delete itself.
  Thanks guys. 
					
  
			 | 
		
		
			| Sun May 08, 2011 1:15 am | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 zoidberg 
				
				
					 Joined: Fri Feb 25, 2011 3:52 pm Posts: 39
				 
				 
			 | 
			
				
				  Re: Duplication Problem  
					
						yep, i've forgotten the most important thing - define sharpness in ini file. so, it works. good luck. 
					
  
			 | 
		
		
			| Sun May 08, 2011 12:19 pm | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
	
		 |