I guess the only way is to use either a db table with
1. player_id_to_reward (charId)
2. rewarded (boolean)
and then just check if rewarded=0 in enterworld then
addItem(String process, int itemId, long count, L2Object reference, boolean sendMessage)
activeChar.addItem("reward", reward_itemId, 1, null, 0);
rewarded=1;
whatd u think? any other most optimized way?