In your original script, it will cause an error because you're removing the mapflag before even set the .map$ variable. So the .map$ is still empty, that's why the console says it can't find the "" map.
Actually Ryokem script works, but it still need a minor fix, in Ryokem's he clears the array then removing the mapflag, it will cause an error too.
So, to make it work, the script will looked like this:
//Based on Ryokem's script
- script Poring Summoner -1,{
OnInit:
//---- NPC Config -----
set .ItemID, 1000;
set .SpecialPorings, 1;
set .NormalPorings, 1;
setarray .Map$[0], "prontera";
//---------------------
setnpctimer 0;
initnpctimer;
end;
OnTimer5000:
stopnpctimer;
killmonsterall .Map$;
set .loc, rand(getarraysize(.Map$));
setmapflag .Map$[.loc], mf_noskill;
monster .Map$[.loc], 156, 179, "Poring", 1002, .SpecialPorings, "Poring Summoner::OnSpecialKill";
monster .Map$[.loc], 156, 177, "Poring", 1002, .NormalPorings, "Poring Summoner::OnNormalKill";
announce "The Poring Event has begun!", 0;
sleep 1000;
announce "Location: " + .Map$[.loc], 0;
sleep 1000;
announce "Special Poring: " + .SpecialPorings, 0;
sleep 1000;
announce "Normal Poring: " + .NormalPorings, 0;
end;
OnSpecialKill:
set .SpecialPorings, .SpecialPorings - 1;
//mapannounce strcharinfo(0) + " got a " + getitemname(.ItemID) + "!", bc_map, bc_blue;
getitem .ItemID,1;
goto PoringCount;
OnNormalKill:
set .NormalPorings, .NormalPorings - 1;
goto PoringCount;
PoringCount:
if( .SpecialPorings || .NormalPorings )
announce "Special Poring: " + .SpecialPorings + " || Normal Poring: " + .NormalPorings, bc_map, bc_blue;
else {
announce "The Poring Event has ended.", 0;
removemapflag .Map$[.loc], mf_noskill;
deletearray .Map$[0], getarraysize(.Map$);
goto OnInit;
}
end;
}