PDA

View Full Version : problem with lag? does "destroy" really get rid of the npc?


johny023
09-24-2008, 10:44 PM
i've made a minigame to add into my offline game... and in the minigame you must defend the castle from waves of monsters, after a few waves it starts to lag and after a few more.. it gets to the point where i can't even move, and it eventually gets so bad graal just closes for no reason. in the earlier levels more monsters spawn, it was working just fine with 5-10 spawning at once but after a few waves i can't even spawn 2 without it lagging really bad. so i thought maybe it's just that wave that makes it lag so i pressed F4 skipped to that wave and set everything to be the same way it was before, it worked fine? no lag at all? then i thought.. maybe the "destroy" trigger doesn't get rid of the npc.. maybe it only hides it and stops it from doing anything...

for each wave of monsters i have a npc that uses the putnpc trigger and when the npc dies i used the destroy trigger to get rid of it.
can someone tell me why it lags? and how to fix it?

sorry if i put this in the wrong place not sure where to put it.

Chompy
09-24-2008, 11:17 PM
Are you using destroy(); clientside? If so, try use it serverside.

Some code(s)/snippet(s) would help alot though..

napo_p2p
09-25-2008, 12:22 AM
Are you using destroy(); clientside? If so, try use it serverside.

Some code(s)/snippet(s) would help alot though..

He said he's making an offline game, so there is no serverside :P.

Ideally, destroy should completely remove the NPC. However, from what you have stated it is a possibility that the offline mode is leaving destroyed NPCs in memory. Still, it is also possible there is another piece of code that is causing the slowdown. As Chompy said, providing snippets of the code would help us find an answer.

johny023
09-25-2008, 01:13 AM
i'm not really sure what part of the code is needed though... the npc that places the waves of monsters, the monsters, or your allys?

to me it doesn't seem to be the allys it lags with or without them... so what would you need?

sorry for taking so long to reply was busy and i'll need to go to sleep soon, if i don't reply in 2-3 min just check back tomorrow plz

and is there a way to set it serverside in a offline world? if there is i'll try that.

cbk1994
09-25-2008, 01:24 AM
and is there a way to set it serverside in a offline world? if there is i'll try that.

Yes, add //#SERVERSIDE at the top of the npcs.

Not really. Don't. Please.


We probably need to see the code for how you are placing the monster, and how you are trying to destroy it.

johny023
09-25-2008, 03:00 AM
Yes, add //#SERVERSIDE at the top of the npcs.

Not really. Don't. Please.


We probably need to see the code for how you are placing the monster, and how you are trying to destroy it.

well here's the script i used to get rid of them

if (this.hp<=0 && timeout){
hearts = 0;
setcharani goblin_death,;
sleep 1;
credits += 40;
destroy;
}

and here's the script i'm using to place the npcs


if (timeout) {

this.i = random(0,100);
this.i2 = random(0,100);
this.i3 = random(0,100);
this.i4 = random(0,100);
this.i5 = random(0,100);
this.i6 = random(0,100);
this.i7 = random(0,100);
this.i8 = random(0,100);
this.i9 = random(0,100);
this.i10 = random(0,100);
this.i11 = random(0,100);
this.i12 = random(0,100);

if (this.i<=40 && wolvesleft>=0) putnpc block.gif,gg_wolf.txt,random(20,40),61;
if (this.i2<=40 && wolvesleft>=0) putnpc block.gif,gg_wolf.txt,random(20,40),61;
if (this.i3<=40 && wolvesleft>=0) putnpc block.gif,gg_wolf.txt,random(20,40),61;
if (this.i4<=40 && wolvesleft>=0) putnpc block.gif,gg_wolf.txt,random(20,40),61;

if (this.i5<=40 && snakesleft>=0) putnpc block.gif,gg_snake2.txt,random(20,40),61;
if (this.i6<=40 && snakesleft>=0) putnpc block.gif,gg_snake2.txt,random(20,40),61;
if (this.i7<=40 && snakesleft>=0) putnpcblock.gif,gg_snake2.txt,random(20,40),61;

if (this.i8<=40 && goblinsleft>=0) putnpc block.gif,gg_goblin.txt,random(20,40),61;
if (this.i9<=40 && goblinsleft>=0) putnpc block.gif,gg_goblin.txt,random(20,40),61;
if (this.i10<=40 && goblinsleft>=0) putnpc block.gif,gg_goblin.txt,random(20,40),61;
if (this.i11<=40 && goblinsleft>=0) putnpc block.gif,gg_goblin.txt,random(20,40),61;
if (this.i12<=40 && goblinsleft>=0) putnpc block.gif,gg_goblin.txt,random(20,40),61;
}


it's probably not the best script.. but it's the only way i could find to make a a random amount of npcs to spawn.

and i'll try the serverside thing

edit: i tried changing it to serverside but it didn't help any.

Pelikano
12-13-2008, 08:43 PM
Not sure, but I think the "//#SERVERSIDE" was a joke oO

Actually I'm pretty sure that it was a joke xD


Also I am not sure AT ALL, but I think you should use "this.destroy();"
oO

LoneAngelIbesu
12-13-2008, 08:53 PM
Also I am not sure AT ALL, but I think you should use "this.destroy();"
oONo. destroy(); is GS2. destroy; is GS1.

Pelikano
12-14-2008, 01:26 PM
Oh okay :D

Tigairius
12-14-2008, 04:54 PM
No. destroy(); is GS2. destroy; is GS1.

Well it's obj.destroy(), then if no obj. is specified it just destroys the object in scope.