• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Anti [Anti-Push bot] system - Delay on throwing items from cid.

kito2

www.masteria.net
Joined
Mar 9, 2009
Messages
3,766
Solutions
1
Reaction score
225
Location
Chile, Santiago
I have an idea and it will helps us all, the idea is to add a delay to items throwed from char to floor, so the anti-push bot wont be usefull anymore.

It should have the following configurations:

antiPush = true or false -- enable or disabled
antiPushDelay = 1000 -- 1 second on miliseconds
antiPushItems = {2148, 2152, 3976} -- items that will have the delay, if set 0, then it will be all items
antiPushItemsExceptions = {7636, 7635, 7634} -- items that will ignore the delay, if set 0, then will be no items.

Ideas?
Comments?

PD: I posted it here, because I think it can't be made via scripts.
 
Last edited:
I made a wonderful change, and it is quite simple... Just remove transforming gps with a click, no more anti-push, and if they use, then they will just be able to use some gps, because they need the cap for potions and runes.
 
Yeah, but you can't transform worms, eggs or anything... If your ot uses capacity, then it will influence... 1 cc = 0.1 oz, but 1 cc = 100 platinum = 10.0 oz, but 1 platinum = 100 gold coins... So you have with 1 cc 10,000 gold coins to use on your antipush...

Can you get it?

If you cant transform cc to platinum and platinum to gold coins, then it wont be effective.
 
Hello!

I've made a system that prevents Anti-Pushers (in C++). If you want more info, PM me kito2.

Regards.

@@edit:
I'll release the system in a few time.
 
Last edited:
I can help you giving a proof of concept like:

In function:

PHP:
bool Game::playerMoveThing(uint32_t playerId, const Position& fromPos,
uint16_t spriteId, uint8_t fromStackPos, const Position& toPos, uint8_t count)
There is a:

PHP:
else if(thing->getItem()){
playerMoveItem(playerId, fromPos, spriteId, fromStackPos, toPos, count);
}

It should be something like that:

PHP:
else if(thing->getItem()){
Player* player = getPlayerByID(playerId);
if(!player) return false;
if(player->getPosition() == frompos)
g_scheduler.addEvent(createSchedulerTask(1000, boost::bind(&Game::playerMoveItem, this,playerId, fromPos, spriteId, fromStackPos, toPos, count)));
else
playerMoveItem(playerId, fromPos, spriteId, fromStackPos, toPos, count);
}

There is a value in ms after which the server will execute function,
Code:
[B]createSchedulerTask([COLOR="Red"]1000[/COLOR][/B]

Of course I didn't test it at all, I just wrote it as a proof of concept, so you will have to do the rest, also it has some more trickies, because if someone will send 10 moves in less than second, it will execute all of them each second (so in that case, we should check if event is already there if it is, lets wait for finishing).
 
Back
Top