Jump to content

  •  

PcPocket

Member Since 23 Jan 2013
Offline Last Active Jul 06 2016 07:38 PM
-----

Posts I've Made

In Topic: Anti WPE - Packet Obfuscation

16 March 2015 - 01:57 AM

dat frog looks suspicious 


In Topic: Bug Tracker find by Tag

11 March 2015 - 08:46 PM

Oh, never noticed that, thanks :D

Anyway, is there a way to filter from all categories at the same time?
If not, it would be nice, but nothing mandatory, just have to open a few tabs haha

Thanks!


In Topic: Auto Restart of Server

11 March 2015 - 01:08 PM

Yes, Shell Script + Crontab


In Topic: [Queue] 2 new commands

10 March 2015 - 11:44 AM

Yeah.. the system I'm working is a BG system too.

I use queueremove on everybody on the queue when it is full enough to start the match.
And queueopt to call a function that will remove the player from the queue ( on the 3 options, move from map, die or logout ).

After I player 2 modules, the queue gets to -1. I will do some tests to figure out whats the reason. If I don't find out, I will patch in the source to never get it below 0 haha.

 

By the way, queue check command:

 

bool script_hqueue_check(int idx, int var) {	if( idx < 0 || idx >= script->hqs || script->hq[idx].size == -1 ) {		ShowWarning("script_hqueue_add: unknown queue id %dn",idx);		return false;	} else {		int i;		for (i = 0; i < script->hq[idx].size; i++) {			if (script->hq[idx].item[i] == var) {				return true;			}		}		return false;	}}BUILDIN(queuecheck) {		int idx = script_getnum(st, 2);	int var = script_getnum(st, 3);	script_pushint(st,script->queue_check(idx,var)?1:0);		return true;}

They may want to invert the 'true' and 'false' returns, as all queue commands return 0 upon success ( why? I don't know )
And of course, the rest.
 

		BUILDIN_DEF(queuecheck,"ii"),
	script->queue_check = script_hqueue_check;

script.h
 

	bool (*queue_check) (int idx, int var);

@Edit

I found out the piece of code causing it.

function	Players2BG	{	.@queue01 = queueiterator(getarg(0));	for (.@elem = qiget(.@queue01); qicheck(.@queue01); .@elem = qiget(.@queue01)) {		announce "Adding player"+.@elem+" from queue"+getarg(0)+" to BG Team "+getarg(1),8;		player2bg(getarg(1),.@elem,$@BG_Status);		queueremove(getarg(0),.@elem); // Removes from the queue	}	return;} 

Then, the second time I go to the battleground ( the first one works fine ):
Posted Image(
( the announce is in portuguese in the picture )
getarg(0) = Queue ID
getarg(1) = BG Team ID

I'm almost sure that I'm missing a qiclear in the end of the function, will test it now, must solve it.
But.. I still think that the number of elements in the queue shouldn't be able to be lower than 0.


@edit2
Yeah.. qiclear didn't solve the problem.
I tested something new, I put 'queueremove($bgTeamQueue01,-1);' in the top of npc script, so everytime I click on it, it attempts to remove a non-existant value from the queue.

Result: After I played one match, every queueremove, lowered the queuecount by 1. So if I click 10 times, npc show that queue has -10 members..
This just works after I play once ( so Players2BG gets called ).

Trying to figure out why.

@edit3
Yeah, there is a bug in queueremove command, trying to fix, post here soon.

@edit4
Aparently, queueremove isn't actually removing a value from the queue, but changing it value to -1?


In Topic: [Queue] 2 new commands

10 March 2015 - 02:23 AM

Sorry for the wrong area haha anyway, how does this work? Somebody from developer team visit this area?

Well, another thing..
I just finished my system, and I noticed that my queuesize is return -1 after some actions. I use queueremove when player die/change map/logout, maybe this is causing the queue counting to be reduced twice.

I don't know, I just know that a queue can't ever have a size smaller than 0.