Data Realms Fan Forums http://45.55.195.193/ |
|
Duplication Problem http://45.55.195.193/viewtopic.php?f=73&t=23594 |
Page 1 of 1 |
Author: | Coops [ Thu May 05, 2011 9:35 pm ] |
Post subject: | 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? |
Author: | Asklar [ Thu May 05, 2011 11:35 pm ] |
Post subject: | Re: Duplication Problem |
And if you add in the if something like if the particle is not self, or something like that? |
Author: | Grif [ Fri May 06, 2011 1:08 am ] |
Post subject: | Re: Duplication Problem |
try: if ToMOPixel(self.particle) ~= self |
Author: | Coops [ Fri May 06, 2011 7:10 am ] |
Post subject: | Re: Duplication Problem |
I get errors with it. 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". |
Author: | Grif [ Fri May 06, 2011 4:40 pm ] |
Post subject: | Re: Duplication Problem |
then try getting rid of the ToMOPixel |
Author: | Coops [ Fri May 06, 2011 8:23 pm ] |
Post subject: | 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 |
Author: | zoidberg [ Sat May 07, 2011 12:43 am ] |
Post subject: | 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 |
Author: | Coops [ Sat May 07, 2011 12:57 am ] |
Post subject: | 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. |
Author: | zoidberg [ Sat May 07, 2011 11:32 am ] |
Post subject: | 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 but if 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? |
Author: | Coops [ Sun May 08, 2011 1:15 am ] |
Post subject: | 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. |
Author: | zoidberg [ Sun May 08, 2011 12:19 pm ] |
Post subject: | Re: Duplication Problem |
yep, i've forgotten the most important thing - define sharpness in ini file. so, it works. good luck. |
Page 1 of 1 | All times are UTC [ DST ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |