rendered paste body<?php
$this->AddHook('produce_coins', 'Produce');
function Produce($bot)
{
// scripted edited by high comunty original by GML
if ($bot->firstrun)
return;
$bot->ReloadConfig();
$data = $bot->ld->GetPlSettings("Coins");
if ((int)$data->Produce != 1)
return;
$bot->SendMsg('Produce Coins initializing...');
$bot->SendMsg('');
$bot->SendMsg('Collecting Coins And Xp');
$bot->SendMsg('');
$bodycheck= false;
$objcounts = 1;
$count = 0;
$buildings = 0;
$freebuildings = 0;
$notready = 0;
$sleeptimer = 0;
$milB = array("Drydocks", "Barracks", "Hangar");
foreach ($bot->fobjects as $obj)
{
if (in_array(strtok($obj['itemName'], ' '), $milB))
{
$buildings ++;
if ($obj["state"] != 9)
$freebuildings ++;
}
}
$bot->SendMsg('You have '.$buildings.' army buildings. Only '.$freebuildings.' are free.');
$taskslimit = round($freebuildings/7);
if ($taskslimit < 2)
$taskslimit = 2;
$bot->SendMsg('Task limit set to '.$taskslimit);
$bot->SendMsg('');
unset($amf);
while ($objcounts < 9999999) {
set_time_limit(0);
if ($bot->gold > 2000000000) return;
$currentIndex = 0;
foreach ($bot->fobjects as $obj) {
set_time_limit(200);
if (in_array(strtok($obj['itemName'], ' '), $milB))
{
$currentIndex++;
if (isset($bot->error_msg)) {
$bot->ReloadConfig();
break;
}
if ($count == 0){ // add header
$amf = new AMFObject("");
$amf->_bodys[0] = new MessageBody();
$amf->_bodys[0]->_value[0] = $bot->GetAmfHeader();
$amf->_bodys[0]->targetURI = 'BaseService.dispatchBatch';
$amf->_bodys[0]->responseURI = '';
$amf->_bodys[0]->_value[2] = 0;
}
if ($obj["state"] == 10)
{
if ($obj["referenceItem"] == "") {
$bodycheck = add_to_amf ($bot,&$amf,$obj,&$count,1,0); // with streak
$bodycheck = add_to_amf ($bot,&$amf,$obj,&$count,0,1);
$objcounts++;
}else{
$bodycheck = add_to_amf ($bot,&$amf,$obj,&$count,0,1); // no streak
}
}
if ($obj["state"] == 8)
{
$bodycheck = add_to_amf ($bot,&$amf,$obj,&$count,0,1); // no streak
}
if (($count > $taskslimit) || ($currentIndex >= $buildings)){ // send # amf per send <-----
if ($bodycheck){ // only send out request if there's a body.
$bot->SendMsg('> Starting '.$count.' tasks.');
$serializer = new AMFSerializer();
$result = $serializer->serialize($amf);
$bot->SendRequest($result);
$bot->SendMsg(' <<< Done '.$count.' tasks. Total '.$objcounts.' streaks.');
$bodycheck = false;
}else{ // otherwise don't send it out.
$bot->SendMsg('+++ Buildings not ready.');
$notready++;
if ($notready > 7) // decrease the task if too many building not ready encounter
{
$notready = 0;
$sleeptimer++;
sleep($sleeptimer);
$bot->SendMsg('-> Sleeping for '.$sleeptimer.' seconds for building to be ready.');
//$bot->SendMsg('-> Tasks limit decreased to '.$taskslimit.' <-');
}
}
unset($amf);
$count = 0;
}
}
}
refresh ($bot);
}
}