[help] npc_event: player's event queue is full

xlaws27

New member
Messages
225
Points
0
why do i get this warning? how to fix this?

[Warning] npc_event: player's event queue is full, can't add event 'Anti Bot::OnNpcKillEvent' !

Code:
-	script	Anti Bot	-1,{OnNPCKillEvent:    //if(getgmlevel() > 0) end;    set @kill,@kill+1;    if(@kill >= rand(500,501)) goto Check;    end;//OnPCLoginEvent:Check:    //if(getgmlevel() > 0) end;    getmapxy .@map$, .@x, .@y, 0;    if (.@map$=="jawaii") end;    if(checkcart() == 1) set @cart,1;    if(checkfalcon() == 1) set @falcon,1;    if(checkmount() == 1) set @mount,1;    atcommand "@option 2 0 0";    atcommand "@battleignore";    setoption 0x2,1;    sc_start sc_berserk, 1000000000, 1;    mes "[Anti Bot]";    mes "Bot checking time";    mes "Please input the number you see";    next;    switch( rand(1,9) ) {    case 1:        mes "#################^83F52C##^000000################";        mes "###############^83F52C####^000000################";        mes "#################^83F52C##^000000################";        mes "#################^83F52C##^000000################";        mes "#################^83F52C##^000000################";        mes "#################^83F52C##^000000################";        mes "###############^83F52C######^000000##############";        input @num;        if(@num == 1) break;        atcommand "@kick "+strcharinfo(0);        end;    case 2:        mes "#############^83F52C#######^000000###############";        mes "############^83F52C##^000000#####^83F52C##^000000##############";        mes "###################^83F52C##^000000##############";        mes "#############^83F52C#######^000000###############";        mes "############^83F52C##^000000#####################";        mes "############^83F52C##^000000#####################";        mes "############^83F52C#########^000000##############";        input @num;        if(@num == 2) break;        atcommand "@kick "+strcharinfo(0);        end;    case 3:        mes "#############^83F52C#######^000000###############";        mes "############^83F52C##^000000#####^83F52C##^000000##############";        mes "###################^83F52C##^000000##############";        mes "#############^83F52C#######^000000###############";        mes "###################^83F52C##^000000##############";        mes "############^83F52C##^000000#####^83F52C##^000000##############";        mes "#############^83F52C#######^000000###############";        input @num;        if(@num == 3) break;        atcommand "@kick "+strcharinfo(0);        end;    case 4:        mes "############^83F52C##^000000#####################";        mes "############^83F52C##^000000####^83F52C##^000000###############";        mes "############^83F52C##^000000####^83F52C##^000000###############";        mes "############^83F52C##^000000####^83F52C##^000000###############";        mes "############^83F52C#########^000000##############";        mes "##################^83F52C##^000000###############";        mes "##################^83F52C##^000000###############";        input @num;        if(@num == 4) break;        atcommand "@kick "+strcharinfo(0);        end;    case 5:        mes "############^83F52C########^000000###############";        mes "############^83F52C##^000000#####################";        mes "############^83F52C##^000000#####################";        mes "############^83F52C#######^000000################";        mes "##################^83F52C##^000000###############";        mes "############^83F52C##^000000####^83F52C##^000000###############";        mes "#############^83F52C######^000000################";        input @num;        if(@num == 5) break;        atcommand "@kick "+strcharinfo(0);        end;    case 6:        mes "#############^83F52C#######^000000###############";        mes "############^83F52C##^000000#####^83F52C##^000000##############";        mes "############^83F52C##^000000#####################";        mes "############^83F52C########^000000###############";        mes "############^83F52C##^000000#####^83F52C##^000000##############";        mes "############^83F52C##^000000#####^83F52C##^000000##############";        mes "#############^83F52C######^000000################";        input @num;        if(@num == 6) break;        atcommand "@kick "+strcharinfo(0);        end;    case 7:        mes "############^83F52C########^000000###############";        mes "############^83F52C##^000000####^83F52C##^000000###############";        mes "################^83F52C##^000000#################";        mes "###############^83F52C##^000000##################";        mes "###############^83F52C##^000000##################";        mes "###############^83F52C##^000000##################";        mes "###############^83F52C##^000000##################";        input @num;        if(@num == 7) break;        atcommand "@kick "+strcharinfo(0);        end;    case 8:        mes "#############^83F52C#######^000000###############";        mes "############^83F52C##^000000#####^83F52C##^000000##############";        mes "############^83F52C##^000000#####^83F52C##^000000##############";        mes "#############^83F52C#######^000000###############";        mes "############^83F52C##^000000#####^83F52C##^000000##############";        mes "############^83F52C##^000000#####^83F52C##^000000##############";        mes "#############^83F52C#######^000000###############";        input @num;        if(@num == 8) break;        atcommand "@kick "+strcharinfo(0);        end;    case 9:        mes "#############^83F52C#######^000000###############";        mes "############^83F52C##^000000#####^83F52C##^000000##############";        mes "############^83F52C##^000000#####^83F52C##^000000##############";        mes "#############^83F52C########^000000##############";        mes "###################^83F52C##^000000##############";        mes "############^83F52C##^000000#####^83F52C##^000000##############";        mes "#############^83F52C#######^000000###############";        input @num;        if(@num == 9) break;        atcommand "@kick "+strcharinfo(0);        end;    }    next;    mes "[Anti Bot]";    mes "Thank you for your patience, you can now move on.";    atcommand "@option 0 0 0";    atcommand "@battleignore";    setoption 0x2,0;    sc_end sc_berserk;    percentheal 100,100;    set @kill,0;    if(@cart == 1) {        setcart;        set @cart,0;    }    if(@falcon == 1) {        setfalcon;        set @falcon,0;    }    if(@mount == 1) {        setmount;        set @mount,0;    }    close;}
 
Last edited by a moderator:
It happens when you have many On***Event: labels.

Open src/map/map.h

Change this to something higher:

Code:
#define MAX_EVENTQUEUE 2
 
the exact way to reproduce this is ..

- script asdf FAKE_NPC,{ end;OnNPCKillEvent: mes "Hi"; next; mes "bye"; close;}1. @monster poring 1002. cast storm gust skill

then you got the error

since this is anti-bot script, your players might be killing stuffs with skills like storm gust

so when it suddenly the mes pops-up, it will queue up the player's chat towards the npc

compiling to increase MAX_EVENTQUEUE in this case, will make the players take the anti-bot test over and over again LOL

that is exactly the reason why MAX_EVENTQUEUE is set to 2

I remember ultramage did that for this purpose

EDIT: btw, hahaha I just learned from Haru, don't use SC_BERSERK for anti-bot

any 3rd party program like opencore actually allow to use atcommand during SC_BERSERK

making this script easily bypass with @go or @warp enabled

https://github.com/HerculesWS/Hercules/pull/937#issuecomment-165323552

EDIT2: well at least I saw "@option 2 0 0" in this script, they get permanent freeze then

 
Last edited by a moderator:
Back
Top