Noticed an interesting little bug with Ninjadvloot.inc, not sure if anyone else has ever encountered this. So, if someone tries to boot your toon while you are looting it will hit the "yes" option and this is probably due to this part of the looting routine right here:
[CODE lang="ini" title="Loot"] /if (${Select[${IniEntry},Keep,Destroy,Sell]}) {
/if (${Debugloot}||${SpamLootInfo}) /echo NINJADVLOOT: PList: Looting Item# ${k}, ${ITPName}=${IniEntry}
/delay 3s !${AdvLoot.LootInProgress}
/advloot personal ${k} loot
/delay 3s !${AdvLoot.LootInProgress}
/delay ${Math.Calc[${LootLagDelay}+5]}
/if (${Window[ConfirmationDialogBox].Open}) {
----------> /nomodkey /notify ConfirmationDialogBox Yes_Button leftmouseup <-------------
/delay ${Math.Calc[${LootLagDelay}+10] }
}
/if (${Select[${IniEntry},Destroy]}) {
/if (${LootLagDelay}) /delay ${LootLagDelay}
/call HandleItem "${ITPName}" Destroy "${ITStackSize}"
}
}[/CODE]
Specifically the part I am pointing to , it seems that it presses yes on the ConfirmationDialogBox if it is open during looting. This is more than likely for looting no drop items as it will open a confirmation box but as an unfortunate side effect it will also say yes to ANY confirmation box, including the one to kick.
My solution was to put a statement right before the looting statement that hits no right before it loots the item:
[CODE lang="ini" title="New Loot"] /if (${Select[${IniEntry},Keep,Destroy,Sell]}) {
/if (${Window[ConfirmationDialogBox].Open}) {
/nomodkey /notify ConfirmationDialogBox No_Button leftmouseup
}
/if (${Debugloot}||${SpamLootInfo}) /echo NINJADVLOOT: PList: Looting Item# ${k}, ${ITPName}=${IniEntry}
/delay 3s !${AdvLoot.LootInProgress}
/advloot personal ${k} loot
/delay 3s !${AdvLoot.LootInProgress}
/delay ${Math.Calc[${LootLagDelay}+5]}
/if (${Window[ConfirmationDialogBox].Open}) {
/nomodkey /notify ConfirmationDialogBox Yes_Button leftmouseup
/delay ${Math.Calc[${LootLagDelay}+10]}
}
/if (${Select[${IniEntry},Destroy]}) {
/if (${LootLagDelay}) /delay ${LootLagDelay}
/call HandleItem "${ITPName}" Destroy "${ITStackSize}"
}
}[/CODE]
But I still feel like this could be exploited if someone just tried to spam kick you and got the timing just right. Any ideas on how you could possibly fix this to eliminate the problem entirely? Going to be toying with it myself, but open to any ideas.
Edit:
You could probably check the child of the ConfirmationDialogBox CD_TextOutput for the specific text regarding looting and throw an if in there that hits yes or no determinant on that, may try that out.
[CODE lang="ini" title="Loot"] /if (${Select[${IniEntry},Keep,Destroy,Sell]}) {
/if (${Debugloot}||${SpamLootInfo}) /echo NINJADVLOOT: PList: Looting Item# ${k}, ${ITPName}=${IniEntry}
/delay 3s !${AdvLoot.LootInProgress}
/advloot personal ${k} loot
/delay 3s !${AdvLoot.LootInProgress}
/delay ${Math.Calc[${LootLagDelay}+5]}
/if (${Window[ConfirmationDialogBox].Open}) {
----------> /nomodkey /notify ConfirmationDialogBox Yes_Button leftmouseup <-------------
/delay ${Math.Calc[${LootLagDelay}+10] }
}
/if (${Select[${IniEntry},Destroy]}) {
/if (${LootLagDelay}) /delay ${LootLagDelay}
/call HandleItem "${ITPName}" Destroy "${ITStackSize}"
}
}[/CODE]
Specifically the part I am pointing to , it seems that it presses yes on the ConfirmationDialogBox if it is open during looting. This is more than likely for looting no drop items as it will open a confirmation box but as an unfortunate side effect it will also say yes to ANY confirmation box, including the one to kick.
My solution was to put a statement right before the looting statement that hits no right before it loots the item:
[CODE lang="ini" title="New Loot"] /if (${Select[${IniEntry},Keep,Destroy,Sell]}) {
/if (${Window[ConfirmationDialogBox].Open}) {
/nomodkey /notify ConfirmationDialogBox No_Button leftmouseup
}
/if (${Debugloot}||${SpamLootInfo}) /echo NINJADVLOOT: PList: Looting Item# ${k}, ${ITPName}=${IniEntry}
/delay 3s !${AdvLoot.LootInProgress}
/advloot personal ${k} loot
/delay 3s !${AdvLoot.LootInProgress}
/delay ${Math.Calc[${LootLagDelay}+5]}
/if (${Window[ConfirmationDialogBox].Open}) {
/nomodkey /notify ConfirmationDialogBox Yes_Button leftmouseup
/delay ${Math.Calc[${LootLagDelay}+10]}
}
/if (${Select[${IniEntry},Destroy]}) {
/if (${LootLagDelay}) /delay ${LootLagDelay}
/call HandleItem "${ITPName}" Destroy "${ITStackSize}"
}
}[/CODE]
But I still feel like this could be exploited if someone just tried to spam kick you and got the timing just right. Any ideas on how you could possibly fix this to eliminate the problem entirely? Going to be toying with it myself, but open to any ideas.
Edit:
You could probably check the child of the ConfirmationDialogBox CD_TextOutput for the specific text regarding looting and throw an if in there that hits yes or no determinant on that, may try that out.
Last edited:

