Jump to content
Sign in to follow this  
Lolsav

A SQF doubt

Recommended Posts

Well this might sound weird to ask, but the thing i dont really know the answer, and i have tryed to get into this new scripting language.

Question: Does the SQF script ends by itself after the code is run? The reason i ask this its because in SQS we used to put a

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE"> exit at the end of the script to make sure it would end.

Now on my own experiments, if i try to run the same script over and over again it seems to "lag" in the memory. I have no facts to prove it, just the impression the computer starts to act a bit slower.

Silly example:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">_aguy = leader grp1;

waitUntil { _aguy == leader grp1;

};

while { hint "hello"; true} do {

_random = random 3;

_location = logic1;

_aguy setpos [(getpos _location select 0)+_random, (getpos _location select 1)-_random];

sleep 1;

};

if not (alive _aguy) exitWith { [] execVM "samescrip.sqf"; };

Share this post


Link to post
Share on other sites

Your Sig is too big ^^

But i don't no the answer to your question wow_o.gif

Share this post


Link to post
Share on other sites

The script you have written will never end except when it passes the 14000 cycles limit or what was it?....

Maybe your problem is to be found there?

AFAIK all sqf's terminate at the end of the file, and you only need to use exitwith to break out of the script before the end of it.

Example of how the script should run:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">_aguy = leader grp1;

_run=true;

while { hint "hello"; _run} do

{

  _random = random 3;

  _location = logic1;

  _aguy setpos [(getpos _location select 0)+_random, (getpos _location select 1)-_random];

  if not (alive _aguy) then { _run=false; [] execVM "samescrip.sqf"; };

  sleep 1;

};

2nd example:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">_aguy = leader grp1;

while {alive _aguy} do

{

while {alive _aguy} do

{

hint "hello";

  _random = random 3;

  _location = logic1;

  _aguy setpos [(getpos _location select 0)+_random, (getpos _location select 1)-_random];

  sleep 1;

};

};

// This will only be ran if the unit is dead

[] execVM "samescrip.sqf";

Share this post


Link to post
Share on other sites

The script is not important, what i want to know is if the script ever exits. Bloody "whiles" i say.

Plus the new synthax is really picky...ugh has been a pain to find what you can and can´t do...

I want my "goto" control. Its really sad to have to re-run the whole script just to do a parameter, forcing the script to force all the "if"´s since the start.

P.S. A breakTo to scopename doesnt work sad_o.gif (i saw the kegetys suggestion in some other post)

Share this post


Link to post
Share on other sites
The script is not important, what i want to know is if the script ever exits. Bloody "whiles" i say.

Plus the new synthax is really picky...ugh has been a pain to find what you can and can´t do...

I want my "goto" control. Its really sad to have to re-run the whole script just to do a parameter, forcing the script to force all the "if"´s since the start.

Yes the scripts exit at the end.

Use Case instead of IF if you want to base scripting choices on different pre-set outcomes from 1 variable.

The GOTO in sqs is worse than the if's etc... in sqs GOTO... the game needs to read the script from harddrive from line 0 until the # line where you want to "goto", which is actually the same as starting the script from the top again in SQF, except that SQF is in memory and doesn't reread it everytime smile_o.gif

Maybe this does what you want:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

while {(({alive _x} count units grp1)>0)} do

{

  _aguy = leader grp1;

  while {alive _aguy} do

  {

     hint "hello";

     _random = random 3;

     _location = logic1;

     _aguy setpos [(getpos _location select 0)+_random, (getpos _location select 1)-_random];

     sleep 1;

  };

  sleep 1;

};

the game will keep looping the section under: while {alive _aguy}  until this leader guy is dead... when he is dead, it will go back to the start of the 1st while loop under: while {(({alive _x} count units _grp)>0)}

and it will search the new leader of the group, read it into _aguy again and then keep looping the while {alive _aguy} part again.

The while loop will break if noone in the mentioned group is left alive, and the script will terminate because it is at the end...

What you mean with "the new syntax is picky" i have no idea...

Share this post


Link to post
Share on other sites

Do you know how to flush the memory from it? Because having it on memory all the time its not always a good thing. On a experiment i have been doing for a map, using the good old idea of Toadlife for a tracker from operation "lojack", the beep plays countless times and it stays in memory for quite long. It takes forever to end. This presents a problem:

1. I want to know the direction the player is facing the fastest way possible ---> wich leads to multiple updates of playsounds who are loaded into memory and did not had time to play.

2. I have no control on how to flush the non-used playsounds after a variable turns the "play" to false, and it takes even minutes to stop the sound, wich is rather annoying.

3. Ugh...

Share this post


Link to post
Share on other sites
Do you know how to flush the memory from it? Because having it on memory all the time its not always a good thing. On a experiment i have been doing for a map, using the good old idea of Toadlife for a tracker from operation "lojack", the beep plays countless times and it stays in memory for quite long. It takes forever to end. This presents a problem:

1. I want to know the direction the player is facing the fastest way possible ---> wich leads to multiple updates of playsounds who are loaded into memory and did not had time to play.

2. I have no control on how to flush the non-used playsounds after a variable turns the "play" to false, and it takes even minutes to stop the sound, wich is rather annoying.

3. Ugh...

Loading these scripts in memory is only a few bytes (size of the script afaik)...

When sounds are played they are taken out of memory again when they are not needed anymore or when there is too less memory free I think? But I dont know sure...

I dont know the script, maybe you can post some parts of it?

How to stop playing sounds, no idea, but you can put the volume off maybe temporary of that specific sound?

btw, the cool thing about the sqfs... is that especially when you need to run them multiple times (for a lot of units or groups etc)... you can simply do the :

myscript=compile preprocessfile "scripts\myscript.sqf";

and later on when you need the script: [] spawn myscript or [] call myfunction etc. etc. (and give variables with it just like with exec/execVM: [_this] spawn myscript; etc

this way its only read once from harddrive, read once into memory and then pointed to everytime you need it

Share this post


Link to post
Share on other sites
Quote[/b] ]1. I want to know the direction the player is facing the fastest way possible ---> wich leads to multiple updates of playsounds who are loaded into memory and did not had time to play.

2. I have no control on how to flush the non-used playsounds after a variable turns the "play" to false, and it takes even minutes to stop the sound, wich is rather annoying.

It looks like your creating a queue of un-played sounds? If you have a sound that lasts for two seconds, but play it from a script that loops every one second. Then you’re going to be adding multiple sounds to the queue. So even after your script has finished it will continue to play the sounds until the queue is empty.

The only solution is to make sure you give a long enough delay before playing the next sound.

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">_Code=Complie "PlaySound (_This Select 0); Sleep 2;";

WaitUntil

       {

       _Script=["MySound"] Spwan _Code;

       WaitUntil

               {

               _random = random 3;

               _location = logic1;

               _aguy setpos [(getpos _location select 0)+_random, (getpos _location select 1)-_random];

               Sleep 1;

               ScriptDone _Script

               };

       !(Alive _aguy)

       };

The above example will play the sound every two seconds but update the location every one second. It will only end when the unit assigned to _aguy is killed and the last sound has been played.

Assuming thats the sort of thing you want to do? Then you just need to adjust the two sleep commands according to the length of the sound and your original script delay.

Share this post


Link to post
Share on other sites
<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">_Code=Compile "PlaySound (_This Select 0); Sleep 2;";

I was wondering why you would compile a string into code while you can directly put it in code:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">_Code={PlaySound (_This Select 0); Sleep 2;};

Also saves a few double quotes when you need to put other strings inside smile_o.gif

Share this post


Link to post
Share on other sites
Quote[/b] ]I was wondering why you would compile a string into code while you can directly put it in code:

...and of course you can put multiple such functions in a single library file ...

lib.sqf

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

func1 = { hint "in func 1";};

func2 = { hint "in func 2";};

use "call compile preprocess file "lib.sqf"" in your init script then call either func1 or func2 directly in other code.

Share this post


Link to post
Share on other sites

On my specific problem i now i have script that does... nothing:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

_trackee = wire;

_tracker = leader grp1;

_dis = _tracker distance _trackee;

_Code = {(_This Select 0);

Sleep 0.2;

};

waituntil {

(trackeron);

};

if (_dis < 250) then {

_tracker = leader grp1;

_dis = _tracker distance _trackee;

_Script= ["beep8"] Spawn _Code;

{ waituntil { _tracker say _Script;

};

};

sleep beepfreq;

ScriptDone _Script;

if (trackeroff) exitWith { };

};

Oh, and i have tryed several times, with and without Spawn, tryed "Call", with "" and with { }....

P.S. : Sickboy this is what i meant by picky wink_o.gif

Share this post


Link to post
Share on other sites

I think you're making it more complicated than it needs to be....

tracker.sqf

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

for [,,true;] do

{

if ((trackeron) and ((leader grp1 distance wire) < 250)) then {

call beep8; //not sure what beep8 is - an external function ?

};

Sleep beepfreq;

}

Just execVM tracker.sqf from your init code. This allows the tracker to be turned on or off multiple times. Apologies in the syntax is incorrect in places - wrting this from memory.

Share this post


Link to post
Share on other sites

I can get it to work, but i want it to work without overload the memory, because thats my main problem for now. Will your way prevent that to happen? I will try and come back with results, but sincerely, by looking at code and seeing it has no control at all it will overload memory if a player leaves the tracker on all the time.

P.S. beep8 its a sound to use with

_tracker say "beep8";

P.S.2 : the distance has to be updated all the time because it will change frequency, hence beep1, 2, 3 = pitch of the same sound file, wich has 0.2 seconds of lenght. The thing is: I cant control the load time of the file...

Share this post


Link to post
Share on other sites

The overhead from this function is a few hundred bytes to load the script. It then consumes some tiny fraction of CPU as it executes at beepfreq whilst the mission is running. I really wouldn't worry about it unless your are running hundreds of tracked units.

Share this post


Link to post
Share on other sites

Like i suspected:

_tracker = leader grp1;

for [{true},{true},{true}] do

{

if ((trackeron) and ((leader grp1 distance wire) < 250)) then {

_tracker say "beep8";

};

Result = keeps in memory the sounds it had no time to play... sad_o.gif

Share this post


Link to post
Share on other sites

If I understand what you mean by memory load then, then this should work:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">_tracker = leader grp1;

WaitUntil

       {

       if ((trackeron) and ((leader grp1 distance wire) < 250)) then

               {

               _tracker say "beep8";

               };

       Sleep 0.6;

       !(Alive _tracker)        

       };

Quote[/b] ]the distance has to be updated all the time because it will change frequency, hence beep1, 2, 3 = pitch of the same sound file, wich has 0.2 seconds of lenght. The thing is: I cant control the load time of the file...

That requires more code than the above example.

But if your sound lasts for 0.2 seconds then any delay greater than that should be ok. Experiment with different values for:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">Sleep 0.6;

Share this post


Link to post
Share on other sites
That requires more code than the above example.

True, but that part is working fine and it should be independent from this specific problem.

it returns the "beepfreq" to use in:

sleep beepfreq;

Share this post


Link to post
Share on other sites
Quote[/b] ]Result = keeps in memory the sounds it had no time to play...

But you missed out the sleep command (not sure if this was a typo ).

I'm not sure what you meant by 'keeping in memory' ? It would be useful if you could say what problems you are seeing.

Note that UNN's proposal and mine are functionally similar in this regard. UNN's version contains a check to see if the tracker is still alive and terminates the loop if not. Depending upon whether define the tracker as being the very first leader of the group or the current leader of the group, you may prefer this behaviour.

Share this post


Link to post
Share on other sites

Indeed you are not being very clear on what exactly (and entirely) you're trying to do and what your current problems are. If you just lay it all out for us it might make it easier to provide a solution.

Share this post


Link to post
Share on other sites

Ok providing all the info:

from tracker.sqf:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

if not (local player) exitwith {};

_trackee = wire;

_tracker = leader grp1;

_run = true;

[] execVM "Scripts\beeper.sqf";

waitUntil {

_tracker == leader grp1;

_run;

};

if (trackeroff) exitWith { };

waituntil

{

if (trackeroff) exitWith { };

_dir = getdir (vehicle _tracker);

_degree = ((getpos _trackee select 0) - (getpos _tracker select 0)) atan2 ((getpos _trackee select 1) - (getpos _tracker select 1));

if (_degree < 0) then { _degree = _degree + 360};

_difference = _degree - _dir;

if (_difference > 180) then { _difference = _difference - 360};

if (_difference < -180) then { _difference = _difference + 360};

_adjusteddiff = (abs _difference);

beepfreq = ((_adjusteddiff / 50) + 0.1);

publicvariable "beepfreq";

sleep 0.001;

//_tracker sidechat format["beepfreq: %1", beepfreq];

};

from beeper.sqf:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

if not (local player) exitwith {};

/*_trackee = wire;

_tracker = leader grp1;

_dis = _tracker distance _trackee;

*/

_tracker = leader grp1;

_loop = compile preprocessfile "Scripts\loop.sqf";

/*

_Code = {(_This Select 0);

Sleep 0.2;

};

waituntil {

(trackeron);

};

*/

_tracker = leader grp1;

for [{true},{true},{true}] do

{

if ((trackeron) and ((leader grp1 distance wire) < 250)) then {

_tracker say "beep8";

};

if ((trackeron) and ((leader grp1 distance wire) < 500)) then {

_tracker say "beep7";

};

if ((trackeron) and ((leader grp1 distance wire) < 750)) then {

_tracker say "beep6";

};

if ((trackeron) and ((leader grp1 distance wire) < 1250)) then {

_tracker say "beep5";

};

if ((trackeron) and ((leader grp1 distance wire) < 2000)) then {

_tracker say "beep4";

};

if ((trackeron) and ((leader grp1 distance wire) < 3000)) then {

_tracker say "beep3";

};

if ((trackeron) and ((leader grp1 distance wire) < 4000)) then {

_tracker say "beep2";

};

if ((trackeron) and ((leader grp1 distance wire) > 4000)) then {

_tracker say "beep";

};

sleep 0.15;

Sleep beepfreq;

if (trackeroff) exitwith {

_tracker say "disbeep";

};

if (local player) exitWith {

call _loop;

};

}

/*

if (_dis < 250) then {

_tracker = leader grp1;

_dis = _tracker distance _trackee;

_Script= ["beep8"] Spawn _Code;

{ waituntil { _tracker say _Script;

};

};

sleep beepfreq;

ScriptDone _Script;

if (trackeroff) exitWith { };

};

if (_dis < 500) then {

_tracker = leader grp1;

_dis = _tracker distance _trackee;

_Script= ["beep7"] Spawn _Code;

{ waituntil { _tracker say _Script;

};

};

sleep beepfreq;

ScriptDone _Script;

if (trackeroff) exitWith { };

};

if (_dis < 750) then {

_tracker = leader grp1;

_dis = _tracker distance _trackee;

_Script= ["beep6"] Spawn _Code;

{ waituntil { _tracker say _Script;

};

};

sleep beepfreq;

ScriptDone _Script;

if (trackeroff) exitWith { };

};

if (_dis < 1250) then {

_tracker = leader grp1;

_dis = _tracker distance _trackee;

_Script= ["beep5"] Spawn _Code;

{ waituntil { _tracker say _Script;

};

};

sleep beepfreq;

ScriptDone _Script;

if (trackeroff) exitWith { };

};

if (_dis < 2000) then {

_tracker = leader grp1;

_dis = _tracker distance _trackee;

_Script= ["beep4"] Spawn _Code;

{ waituntil { _tracker say _Script;

};

};

sleep beepfreq;

ScriptDone _Script;

if (trackeroff) exitWith { };

};

if (_dis < 3000) then {

_tracker = leader grp1;

_dis = _tracker distance _trackee;

_Script= ["beep3"] Spawn _Code;

{ waituntil { _tracker say _Script;

};

};

sleep beepfreq;

ScriptDone _Script;

if (trackeroff) exitWith { };

};

if (_dis < 4000) then {

_tracker = leader grp1;

_dis = _tracker distance _trackee;

_Script= ["beep2"] Spawn _Code;

{ waituntil { _tracker say _Script;

};

};

sleep beepfreq;

ScriptDone _Script;

if (trackeroff) exitWith { };

};

if (_dis > 4000) then {

_tracker = leader grp1;

_dis = _tracker distance _trackee;

_Script= ["beep"] Spawn _Code;

{ waituntil { _tracker say _Script;

};

};

sleep beepfreq;

ScriptDone _Script;

if (trackeroff) exitWith { };

};

if (local player) exitWith {

call _loop;

};

_tracker sidechat "I never should arrive here";

*/

from loop.sqf :

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

if not (local player) exitWith { };

[] execVM "Scripts\beeper.sqf";

My sound config:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

class CfgSounds

{

sounds[] =

{

beep, beep2, beep3, beep4, beep5, beep6, beep7, beep8, beep9, disbeep

};

class beep

{

                               sound[] = {"beep.wav", db-10, 0.4};

                               titles[] = {};

};

class beep2

{

                               sound[] = {"beep.wav", db-10, 0.6};

                               titles[] = {};

};

class beep3

{

                               sound[] = {"beep.wav", db-10, 0.7};

                               titles[] = {};

};

class beep4

{

                               sound[] = {"beep.wav", db-10, 0.9};

                               titles[] = {};

};

class beep5

{

                               sound[] = {"beep.wav", db-10, 1.0};

                               titles[] = {};

};

class beep6

{

                               sound[] = {"beep.wav", db-10, 1.2};

                               titles[] = {};

};

class beep7

{

                               sound[] = {"beep.wav", db-10, 1.4};

                               titles[] = {};

};

class beep8

{

                               sound[] = {"beep.wav", db-10, 1.6};

                               titles[] = {};

};

class beep9

{

                               sound[] = {"beep.wav", db-10, 0.1};

                               titles[] = {};

};

class disbeep

{

                               sound[] = {"disbeep.ogg", db-10, 1};

                               titles[] = {};

};

};

Please bear with me, im not the best scripter or programmer. I just like to make things work.

The current issue is: The not played "beeps" flood the memory sad_o.gif

P.S. I did tryed several controls as Switch, while, etc.. tryed them and managed them to work. The issue is really the flood into the memory of the non played beeps.

Share this post


Link to post
Share on other sites

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE"> if (local player) exitWith {

call _loop;

That looks like a problem to me. You are continually spawning multiple copies of the script I suspect. Just go back to the bare code that I posted. Replace the 'say' with a sidechat or hint and you should see a report every beepfreq. A "for [,,true]" loop will never terminate. You only need to spawn it once using execVM and then it will run for the entire life of your script. All the processing you want to do can be done inside the loop.

Share this post


Link to post
Share on other sites

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">if ((trackeron) and ((leader grp1 distance wire) < 250)) then {

_tracker say "beep8";

};

if ((trackeron) and ((leader grp1 distance wire) < 500)) then {

_tracker say "beep7";

};

if ((trackeron) and ((leader grp1 distance wire) < 750)) then {

_tracker say "beep6";

};

if ((trackeron) and ((leader grp1 distance wire) < 1250)) then {

_tracker say "beep5";

};

if ((trackeron) and ((leader grp1 distance wire) < 2000)) then {

_tracker say "beep4";

};

if ((trackeron) and ((leader grp1 distance wire) < 3000)) then {

_tracker say "beep3";

};

if ((trackeron) and ((leader grp1 distance wire) < 4000)) then {

_tracker say "beep2";

};

if ((trackeron) and ((leader grp1 distance wire) > 4000)) then {

_tracker say "beep";

};

Here's your problem. Just because the distance is < 250 doesn't mean it's not less than 500 (in fact it always will be). You have to make the condition check if the distance is also greater than or equal to the previous number.

Eg:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

if ((trackeron) and ((leader grp1 distance wire) < 250)) then {

_tracker say "beep8";

};

if ((trackeron) and ((leader grp1 distance wire) < 500) and ((leader grp1 distance wire) >= 250)) then {

_tracker say "beep7";

etc...

Or, this might work (replacing all of the above code I quoted from your script), and could save you some space:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">_list = [250,500,750,1250,2000,3000,4000];

_n = 9;

waitUntil {_n = _n - 1; _distance = ((leader grp1 distance wire); ((_distance < (_list select (8 - _n)) || (_n <= 2))};

if(_distance > _list select 6)then{_n = ""};

_tracker say format ["beep%1",_n];

That would go between:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">for [{true},{true},{true}] do{ ... sleep 0.15;

Share this post


Link to post
Share on other sites

will try, thx for the help there.

Edit: tested and aproved. That was it.. with all the fuss on my end about the new code synthax i never expected to be a "logic" problem..  banghead.gif

Thanks to evryone who tryed to assist me here.

This works like a charm yay.gif

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

if not (local player) exitwith {};

_trackee = wire;

_tracker = leader grp1;

for [{true},{true},{true}] do

{

_list = [250,500,750,1250,2000,3000,4000];

_n = 9;

waitUntil {

_n = _n - 1;

_distance = ( _tracker distance _trackee);

_distance < ( _list select (8 - _n)) || (_n <= 2);

};

if ( _distance > _list select 6) then {_n = ""};

_tracker say format ["beep%1",_n];

Sleep beepfreq;

waituntil { trackeron };

}

PS: KyleSarnik your sig is too big also, the only thing we see is the fluffy bunny wink_o.gif

Share this post


Link to post
Share on other sites
will try, thx for the help there.

Edit: tested and aproved. That was it.. with all the fuss on my end about the new code synthax i never expected to be a "logic" problem..  banghead.gif

Thanks to evryone who tryed to assist me here.

This works like a charm yay.gif

Amazing! I was gambling with that bit of code and wasn't quite sure it would work right. It's a great numbers trick I must say, go math.  yay.gif  It certainly saves space and probably has better performence. Ah, this is truely what I love most about scripting, being creative with the code.

Quote[/b] ]PS: KyleSarnik your sig is too big also, the only thing we see is the fluffy bunny wink_o.gif

I know, I hate that stupid fluffy bunny.  sad_o.gif  One day I shall avenge my sig!  wow_o.gif

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×