function Do_Check_Lonlyanimals() { $amf = CreateRequestAMF('', 'LonelyCowService.createLonelyAnimal'); $amf->_bodys[0]->_value[1][0]['params'][0] = array(); $amf->_bodys[0]->_value[2] = 0; $amf2 = RequestAMFIntern($amf); $res = CheckAMF2Response($amf2); if ($res == 'OK') { @($vAnimal = $amf2->_bodys[0]->_value['data'][1]); if (strlen($vAnimal) > 0) { AddLog("lonlyanimal found: " . $vAnimal); AddLog2("lonlyanimal found: " . $vAnimal); } else { AddLog2("no lonlyanimal found"); } } else { AddLog2("lonlyanimal error: " . $res); } return $res; }
function fvSellAll() { $actRecipes = unserialize($this->settings['cbBushels']); if (!empty($actRecipes)) { foreach ($actRecipes as $reccode => $iRecipe) { $tmp = $this->fvGetUnits($reccode); $ingred = unserialize($tmp['units_ingredients']); foreach (@$ingred as $key => $i) { $this->actBushel[$key] = $key; } } } //Trade Goods if ($this->settings['asgoods'] == 1) { AddLog2('Auto Trading Market Goods'); $this->_fvTradeGoods(); } //Start New Recipes AddLog2('Auto Starting New Recipes'); foreach (@$this->recipe as $item) { $tables = $item['craftLevel']; unset($item['craftLevel']); if (count($item) - 1 >= $tables) { break; } $ingred = $this->fvGetGoods(); $actBushel = unserialize($this->settings['cbBushels']); $goods = unserialize($this->settings['goodState']); for ($x = 0; $x < $tables; $x++) { foreach ($ingred as $ing) { if (isset($actBushel[$ing['units_code']])) { $bushels = unserialize($ing['units_ingredients']); $buildgood = false; $bused = array(); foreach ($bushels as $key => $bushel) { $bushcnt = $this->fvFMBCounts($key); $bushcount = @$bushcnt[0]['fmbushels_itemCount'] == '' ? 0 : @$bushcnt[0]['fmbushels_itemCount']; //echo $bushcnt[0]['fmbushels_itemCount'] . ' ' . $bushel . "\n"; $buildgood = intval($bushcount >= intval($bushel)) ? true : false; if ($buildgood === false) { break; } $bused[$bushcnt[0]['fmbushels_id']] = $bushel; } if ($buildgood === true) { if ($x >= $tables) { break; } $x++; $amf = CreateRequestAMF('', 'CraftingService.onBeginRecipe'); $amf->_bodys[0]->_value[1][0]['params'][0] = $ing['units_code']; $amf2 = $this->_fvAMFSend($amf); if ($amf2 === false) { continue; } $resp = $amf2->_bodys[0]->_value['data'][0]['errorType']; $err = $amf2->_bodys[0]->_value['data'][0]['errorData']; if ($resp == 0) { $uitem = $this->fvGetUnits($rec['id']); AddLog2("Began recipe: " . $ing['units_realname'] . " result: OK"); sleep(2); } else { AddLog2($resp . ' : ' . $err); continue; } //echo 'Will build ' . $ing['units_realname'] . "\n"; foreach ($bused as $key => $bu) { $fvSQL = "UPDATE fmbushels SET fmbushels_itemCount = fmbushels_itemCount-{$bu} "; $fvSQL .= "WHERE fmbushels_id = {$key}"; $this->_fvManagerDBW->queryExec($fvSQL); } } } } } } //Use Market Bushels if (@$this->settings['asbushels'] == 1) { AddLog2('Auto Using Market Bushels'); $this->_fvTradeBushels(); } //Buy Market Bushels if (@$this->settings['abbushels'] == 1) { AddLog2('Auto Buying Market Bushels'); AddLog2('Bushels Stored: ' . $this->myBushels); $this->_fvBuyBushels(); } //Buy Goods AddLog2('Auto Buying Market Goods'); if (@$this->settings['abgoods'] == 1) { AddLog2('Purchased Goods: ' . $this->cBagsConsumed); $this->_fvBuyGoods(); } //Complete Crafts AddLog2('Auto Clearing Finished Crafts'); foreach (@$this->recipe as $key => $item) { //echo nl2br(print_r($item,true)); foreach ($item as $rec) { if (time() >= $rec['finish_ts'] && isset($rec['finish_ts'])) { $amf = CreateRequestAMF('', 'CraftingService.onClaimFinishedRecipes'); $amf->_bodys[0]->_value[1][0]['params'][0] = $rec['id']; $amf2 = $this->_fvAMFSend($amf); if ($amf2 === false) { continue; } $resp = $amf2->_bodys[0]->_value['data'][0]['errorType']; $err = $amf2->_bodys[0]->_value['data'][0]['errorData']; if ($resp == 0) { $uitem = $this->fvGetUnits($rec['id']); AddLog2("Finished " . $uitem['units_realname'] . " result: OK"); unset($this->recipe[$key]); } else { AddLog2($resp . ' : ' . $err); continue; } } } } //Auto Rush Recipes AddLog2('Auto Rushing Recipes'); foreach (@$this->recipe as $key => $item) { foreach ($item as $rec) { if ($rec['finish_ts'] == '') { continue; } $uitem = $this->fvGetUnits($rec['id']); $rtime = intval(($rec['finish_ts'] - time()) / 60); if ($rtime < 0) { continue; } $amf = CreateRequestAMF('', 'CraftingService.onRushRecipe'); $amf->_bodys[0]->_value[1][0]['params'][0] = trim($rec['id']); $amf->_bodys[0]->_value[1][0]['params'][1] = $rec['start_ts']; $amf->_bodys[0]->_value[1][0]['params'][2] = true; $amf2 = $this->_fvAMFSend($amf); if ($amf2 === false) { continue; } $resp = $amf2->_bodys[0]->_value['data'][0]['errorType']; $err = $amf2->_bodys[0]->_value['data'][0]['errorData']; if ($resp == 0) { AddLog2("Finished recipe " . $uitem['units_realname'] . " result: OK"); } else { AddLog2($resp . ' : ' . $err); continue; } } } return; }
function DoInit($inittype = '') { $T = time(true); $res = 0; Hook('before_load_farm'); $_SESSION['sequence'] = 0; // Create Init request $amf = CreateRequestAMF('', 'UserService.initUser'); $amf->_bodys[0]->_value[1][0]['params'][0] = ""; $amf->_bodys[0]->_value[1][0]['params'][1] = -1; $amf->_bodys[0]->_value[1][0]['params'][2] = true; $serializer = new AMFSerializer(); $result = $serializer->serialize($amf); // serialize the data $answer = Request('', $result); $amf2 = new AMFObject($answer); $deserializer2 = new AMFDeserializer($amf2->rawData); // deserialize the data $deserializer2->deserialize($amf2); // run the deserializer $res = CheckAMF2Response($amf2); if ($res == 'OK') { // get flashSessionKey //$_SESSION['sequence'] = 1; //file_put_contents('all.txt', print_r($amf2,true)); if (isset($amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['session_key'])) { $_SESSION['flashSessionKey'] = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['session_key']; } $_SESSION['servertime'] = $amf2->_bodys[0]->_value['data'][0]['serverTime']; // save to file $flashSessionKey, $xp, $energy $xp = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['xp']; $energy = $amf2->_bodys[0]->_value['data'][0]['data']['energy']; $hlXP = Units_GetFarming('higherLevelXp'); $hlBegin = Units_GetFarming('higherLevelBegin'); $hlStep = Units_GetFarming('higherLevelStep'); // get extra info $level = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['level']; if (isset($hlXP) && $xp >= $hlXP) { $level = @$hlBegin + floor(($xp - @$hlXP) / @$hlStep); } $gold = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['gold']; $cash = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['cash']; $sizeX = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['world']['sizeX']; $sizeY = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['world']['sizeY']; $firstname = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['attr']['name']; $locale = $amf2->_bodys[0]->_value['data'][0]['data']['locale']; $tileset = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['world']['tileSet']; $wither = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['witherOn']; // save to file $level, $coins, $cash, $sizex, $sizey $uSQL = 'INSERT OR REPLACE INTO datastore(userid, storetype, content) values("' . $_SESSION['userId'] . '", "playerinfo", "' . implode(';', array($level, $gold, $cash, $sizeX, $sizeY, $firstname, $locale, $tileset, $wither, $xp, $energy, $_SESSION['flashRevision'])) . '");'; // save world to file save_botarray($amf2->_bodys[0]->_value, F('world.txt')); //file_put_contents('world.txt', print_r($amf2->_bodys[0]->_value,true)); // get objects on farm $objects = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['world']['objectsArray']; //file_put_contents('world.txt', print_r($objects, true)); // FarmFIX/object split $newobjects = serialize($objects); $cleanedobjects = str_replace("'", "''", $newobjects); $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t\t'objects', '" . $cleanedobjects . "');"; // save collection counters to a file $nAQ = @$amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['neighborActionQueue']['m_actionQueue']; $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'nactionqueue', '" . serialize($nAQ) . "');"; $nAL = @$amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['neighborActionLimits']['m_neighborActionLimits'][date('ymd', $_SESSION['servertime'])]; $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'nactionlimit', '" . serialize($nAL) . "');"; $c_count = @$amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['collectionCounters']; $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'ccount', '" . serialize($c_count) . "');"; $c_bushel = @$amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['buffs']['BBushel']['crop']; $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'cbushel', '" . serialize($c_bushel) . "');"; $c_busheltime = @$amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['buffs']['BBushel']['time']; $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'cbusheltime', '" . serialize($c_busheltime) . "');"; $craftstate = @$amf2->_bodys[0]->_value['data'][0]['data']['craftingState']; $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'craftstate', '" . serialize($craftstate) . "');"; // save lonelyanimals to a file $animallinks = @$amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['lonelyAnimals']; $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'ralinks', '" . serialize($animallinks) . "');"; // save license information $licenses = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['licenseManager']['licenses']; $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'licenses', '" . serialize($licenses) . "');"; $storagedata = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['storageData']; $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'storagedata', '" . serialize($storagedata) . "');"; $incraftbox = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['storageData']['-7']; $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'craftbox', '" . serialize($incraftbox) . "');"; // save giftbox info for plugins $ingiftbox = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['storageData']['-1']; $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'giftbox', '" . serialize($ingiftbox) . "');"; foreach ($ingiftbox as $key => $item) { $ingiftbox[$key] = isset($item[0]) ? $item[0] : 0; } $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'ingiftbox', '" . serialize($ingiftbox) . "');"; // save consumable info for plugins $inconbox = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['storageData']['-6']; $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'consumebox', '" . serialize($inconbox) . "');"; foreach ($inconbox as $key => $item) { $uInfo = Units_GetUnitByCode($key); if (@$uInfo['className'] == 'CSeedPackage') { $inseedbox[$key] = isset($item[0]) ? $item[0] : 0; unset($inconbox[$key]); continue; } $inconbox[$key] = isset($item[0]) ? $item[0] : 0; } $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'inconbox', '" . serialize($inconbox) . "');"; $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'inseedbox', '" . serialize($inseedbox) . "');"; // save storage info for plugins $instorage = @$amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['storageData']['-2']; $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'storagebox', '" . serialize($instorage) . "');"; foreach ($instorage as $key => $item) { $instorage[$key] = $item[0]; } $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'instorage', '" . serialize($instorage) . "');"; // save neighbors list $neighbors = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['neighbors']; $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'neighbors', '" . serialize($neighbors) . "');"; $bsStats = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['breedingState']; $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'bsstats', '" . serialize($bsStats) . "');"; $pneighbors = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['pendingNeighbors']; $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'pneighbors', '" . serialize($pneighbors) . "');"; // save crop mastery list $cropmastery = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['masteryCounters']; $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'cropmastery', '" . serialize($cropmastery) . "');"; $cropmasterycnt = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['mastery']; $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'cropmasterycnt', '" . serialize($cropmasterycnt) . "');"; if (isset($amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['featureCredits']['farm'])) { $featurecred = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['featureCredits']['farm']; } else { $featurecred = $amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['featureCredits']; } $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'featurecred', '" . serialize($featurecred) . "');"; // save ribbon data $achievements = @$amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['achCounters']; $earned_ribbons = @$amf2->_bodys[0]->_value['data'][0]['data']['userInfo']['player']['achievements']; $ribbon_merge = array(); foreach ($achievements as $name => $data) { $ribbon_merge[$name]['count'] = $data; } if (@count($earned_ribbons) > 0) { foreach ($earned_ribbons as $name => $data) { $ribbon_merge[$name]['earned'] = $data; } } $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'ach_count', '" . serialize($ribbon_merge) . "');"; $_SESSION['vDataStoreDB']->exec($uSQL); unset($uSQL, $amf2); // save_botarray ($array, $filename); } if ($inittype == 'full') { $amf = CreateRequestAMF('', 'UserService.postInit'); $serializer = new AMFSerializer(); $result = $serializer->serialize($amf); // serialize the data $answer = Request('', $result); $amf2 = new AMFObject($answer); $deserializer2 = new AMFDeserializer($amf2->rawData); // deserialize the data $deserializer2->deserialize($amf2); // run the deserializer $res2 = CheckAMF2Response($amf2); if ($res2 == 'OK') { file_put_contents('world2.txt', print_r($amf2->_bodys[0]->_value, true)); $availBushels = @$amf2->_bodys[0]->_value['data'][0]['data']['marketView']['marketStalls']; $availGoods = @$amf2->_bodys[0]->_value['data'][0]['data']['marketView']['craftedGoods']; $bsInfo = @$amf2->_bodys[0]->_value['data'][0]['data']['breedingState']; $uSQL = "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'availbushels', '" . serialize($availBushels) . "');"; $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'availgoods', '" . serialize($availGoods) . "');"; $uSQL .= "INSERT OR REPLACE INTO datastore(userid, storetype, content) values('" . $_SESSION['userId'] . "',\n\t\t\t\t'bsinfo', '" . serialize($bsInfo) . "');"; $_SESSION['vDataStoreDB']->exec($uSQL); unset($uSQL, $amf2); } Hook('after_load_farm'); $res = $res == 'OK' && $res2 == 'OK' ? 'OK' : 'Init: ' . $res . ' - PostInit: ' . $res2; } $T2 = time(); $T2 -= $T; if ($res == 'OK') { AddLog2("Initialization Took: " . $T2 . " Seconds"); } else { AddLog2("Initialization Failed: " . $res); } return $res; }
function GB_PlaceM3($ObjD, $GB_amount, $loc) { global $GB_tempid; global $GB_Setting; AddLog2('GiftBox Place item(s) start.. '); // Get all settings correct $res = 0; $px_time = time(); if (array_key_exists('_type', $ObjD)) { $state = "static"; if ($ObjD['_type'] == "Decoration") { $state = "static"; } if ($ObjD['_type'] == "RotateableDecoration") { $state = "horizontal"; } if ($ObjD['_type'] == "animal") { $state = "bare"; } } else { $state = "static"; } $type = $ObjD['_type']; if ($ObjD['_type'] == "animal") { $type = "Animal"; } while ($GB_amount > 0) { $EmptyXY = $GLOBALS['GBC']->TEmptyXY3($loc, "ONE"); if ($EmptyXY == "fail") { AddLog2("Error: No more locations left for " . $loc); return "fail"; } $amf = CreateRequestAMF('place', 'WorldService.performAction'); $amf->_bodys[0]->_value[1][0]['params'][1]['deleted'] = false; $amf->_bodys[0]->_value[1][0]['params'][1]['direction'] = 1; if (array_key_exists('growTime', $ObjD)) { $amf->_bodys[0]->_value[1][0]['params'][1]['plantTime'] = $px_time . "123"; } $amf->_bodys[0]->_value[1][0]['params'][1]['tempId'] = -1; $amf->_bodys[0]->_value[1][0]['params'][1]['className'] = $type; $amf->_bodys[0]->_value[1][0]['params'][1]['position']['x'] = $EmptyXY['x']; $amf->_bodys[0]->_value[1][0]['params'][1]['position']['y'] = $EmptyXY['y']; $amf->_bodys[0]->_value[1][0]['params'][1]['position']['z'] = 0; $amf->_bodys[0]->_value[1][0]['params'][1]['itemName'] = $ObjD['_name']; $amf->_bodys[0]->_value[1][0]['params'][1]['state'] = $state; $amf->_bodys[0]->_value[1][0]['params'][1]['id'] = $GB_tempid; $amf->_bodys[0]->_value[1][0]['params'][2][0]['isStorageWithdrawal'] = -1; $amf->_bodys[0]->_value[1][0]['params'][2][0]['isGift'] = true; $GB_tempid++; $GB_amount--; $res = RequestAMF2($amf); if ($res == 'OK') { AddLog2("Giftbox placed: " . $ObjD['realname'] . " Result: {$res} [" . $GB_amount . " to go]. "); if ($GB_Setting['DoDebug']) { AddLog2("GiftBox place item(s) X: " . $EmptyXY['x'] . " Y:" . $EmptyXY['y']); } } else { AddLog2("GiftBox place ERROR X: " . $EmptyXY['x'] . " Y:" . $EmptyXY['y']); } } // end while $serializer = new AMFSerializer(); $result = $serializer->serialize($amf); // serialize the data $answer = Request('', $result); $amf2 = new AMFObject($answer); $deserializer2 = new AMFDeserializer($amf2->rawData); // deserialize the data $deserializer2->deserialize($amf2); // run the deserializer if (!isset($amf2->_bodys[0]->_value['data'][0])) { AddLog2("UP GB Error: BAD AMF - To many itmes on the farm?"); $res = "To many items on the farm?"; } if (isset($amf2->_bodys[0]->_value['data'][0]['errorType']) && $amf2->_bodys[0]->_value['data'][0]['errorType'] == 0) { $res = 'OK'; } if ($res == 'OK') { if ($GB_Setting['DoDebug']) { AddLog2("GiftBox place item(s) done"); } } else { AddLog2("GiftBox: Error Placing Item(s)"); } return $res; }
function fvFlyPlane() { if ($this->gold <= 0) { AddLog2('fvFarmer: Not Enough FV$ to Fly BiPlane'); return; } $biplane = GetObjects('Airplane'); if (count($biplane) == 0) { AddLog2("fvFarmer: No BiPlane Found"); return; } $plot_list = GetObjects('Plot'); //get plots $cntplots = 0; foreach ($plot_list as $plot) { if ($plot['state'] == 'planted') { $cntplots++; } } unset($plot_list); if ($cntplots > 0) { unset($cntplots); $biplane = $biplane[0]; AddLog2('fvFarmer: Flying BiPlane'); $amf = CreateRequestAMF('instantGrow', 'WorldService.performAction'); $amf->_bodys[0]->_value[1][0]['params'][1]['deleted'] = false; $amf->_bodys[0]->_value[1][0]['params'][1]['tempId'] = 'NaN'; $amf->_bodys[0]->_value[1][0]['params'][1]['className'] = $biplane['className']; $amf->_bodys[0]->_value[1][0]['params'][1]['state'] = $biplane['state']; $amf->_bodys[0]->_value[1][0]['params'][1]['itemName'] = $biplane['itemName']; $amf->_bodys[0]->_value[1][0]['params'][1]['direction'] = 0; $amf->_bodys[0]->_value[1][0]['params'][1]['id'] = $biplane['id']; $amf->_bodys[0]->_value[1][0]['params'][1]['position'] = $biplane['position']; $amf->_bodys[0]->_value[1][0]['params'][2] = array(); $amf2 = $this->_fvAMFSend($amf); if ($amf2->_bodys[0]->_value['data'][0]['success'] == 1) { $cost = $amf2->_bodys[0]->_value['data'][0]['cost']; AddLog2('fvFarmer: BiPlane Flew - Cost: ' . $cost . ' FV$'); } unset($cntplots); DoInit(); $this->_fvUpdateSeedDB(); } }
function Grifter_Turbo($name, $x) { Addlog2('buying ' . $name . ' : ' . $x . ' times'); $amf = CreateRequestAMF('', 'UserService.buyItemputGiftbox'); $amf->_bodys[0]->_value[1][0]['params'][0] = $name; $amf->_bodys[0]->_value[1][0]['params'][1] = $x; $amf->_bodys[0]->_value[1][0]['params'][2] = array(); $amf->_bodys[0]->_value[1][0]['params'][3] = true; $res = RequestAMF($amf); if ($res == 'OK') { Addlog2(" result - {$res} "); return true; } else { Addlog2("ERROR - {$res}"); return false; } }
private function _fvDoGreenhouse() { $bsInfo = unserialize(fBGetDataStore('bsinfo')); $greenhouses = GetObjectsByName('greenhousebuildable_finished'); if (empty($greenhouses)) { return; } $trayscnt = $bsInfo[0]['upgradeUnlockedTrays']; $totaltrays = $trayscnt[$greenhouses[0]['expansionLevel']]; $bsStats = unserialize(fBGetDataStore('bsstats')); $fthybrids = unserialize($this->fvGetSettings('fthybrids')); $genealogy = $bsInfo[0]['genealogy']; foreach ($genealogy as $gene) { foreach ($gene['ingredient'] as $key => $ingred) { $gene['ingredient'][$key]['quantity'] = $ingred['quantity'] * 50; } $recipes[$gene['itemCode']] = $gene['ingredient']; } $alltrays = $bsStats['breedingFeatures']['farm']['greenhousebuildable_finished']['trays']; //Harvest Trays foreach ($alltrays as $key => $tray) { if (count($tray['helpingFriendIds']) >= 3 || $_SESSION['servertime'] >= $tray['startTime'] + $bsInfo[0]['breedingDuration']) { $amf = CreateRequestAMF('', 'BreedingService.finishBreedingProject'); $amf->_bodys[0]->_value[1][0]['params'][0] = 'greenhousebuildable_finished'; $amf->_bodys[0]->_value[1][0]['params'][1] = $key; $res = RequestAMF($amf); AddLog2('fvTools: Collecting Seeds From Tray ' . ($key + 1) . ': ' . $res); if ($res = 'OK') { unset($alltrays[$key]); } } } //Start New Trays if (empty($fthybrids)) { return; } $traycnt = 0; for ($x = count($alltrays); $x < $totaltrays; $x++) { $traycode = $fthybrids['tray_' . $x]; $seedname = Units_GetRealnameByCode($traycode); $amf = CreateRequestAMF('', 'BreedingService.beginNewBreedingProject'); $amf->_bodys[0]->_value[1][0]['params'][0] = 'greenhousebuildable_finished'; $amf->_bodys[0]->_value[1][0]['params'][1] = $traycnt; $amf->_bodys[0]->_value[1][0]['params'][2] = $recipes[$traycode]; $res = RequestAMF($amf); AddLog2('fvTools: Starting ' . $seedname . ' in Tray ' . ($traycnt + 1) . ': ' . $res); $traycnt++; } }
private function _fnGetFriends($returned, $friendtype) { $fr_laston = $returned['data']['user']['lastWorldAction']; $fr_fbid = $returned['data']['user']['id']; $fr_sizeX = ($returned['data']['world']['sizeX'] - 2) / 4; $fr_sizeY = ($returned['data']['world']['sizeY'] - 2) / 4; if (is_array($this->actionlimits)) { foreach ($this->actionlimits as $nkey => $ndata) { if ($ndata['targetId'] == $fr_fbid) { $myactions = $ndata; break; } } } $fr_objects = $returned['data']['world']['objectsArray']; $fr_objectscnt = count($fr_objects); if ($friendtype == 'neighbor') { $fn_SQL = "INSERT OR REPLACE INTO neighbors(neighbors_fbid, neighbors_name, neighbors_worldn, neighbors_lastseen,\n\t\t\t\t\t\t\t\tneighbors_level, neighbors_xp, neighbors_coin, neighbors_cash, neighbors_sizeX,\n\t\t\t\t\t\t\t\tneighbors_sizeY, neighbors_fuel, neighbors_friends, neighbors_objects, neighbors_plots, neighbors_timestamp) "; $fn_SQL .= "VALUES('{$fr_fbid}', '', '', '{$fr_laston}', '', '', '', '',\n\t\t\t\t\t\t\t\t'{$fr_sizeX}', '{$fr_sizeY}', '', '', '{$fr_objectscnt}', '', '" . time() . "')"; $q = $this->_fnNeighborsDBM->query($fn_SQL); } else { $fn_SQL = "UPDATE neighborsn\n\t\t\t\t\t\tSET neighborsn_timestamp='" . time() . "', \n\t\t\t\t\t\t\tneighborsn_lastseen='" . $fr_laston . "' WHERE neighborsn_fbid='" . $fr_fbid . "'"; $q = $this->_fnNeighborsDBM->query($fn_SQL); } AddLog2($fr_fbid . ' - Updated'); $fvSQL = "INSERT OR REPLACE INTO settings(settings_name,settings_value) values('ntracktime','" . time() . "')"; $this->_fnNeighborsDBM->queryExec($fvSQL); //Count My Actions $farmActs = 0; $feedActs = 0; $halloweenActs = 0; $animalFeedActs = 0; $pigslopActs = 0; $Val2011BuildActs = 0; $greenHouseBuildActs = 0; if (!empty($myactions)) { $farmActs = @$myactions['farm']; $feedActs = @$myactions['feed']; $halloweenActs = @$myactions['harvesthalloweencandy']; $animalFeedActs = @$myactions['animalFeed']; $pigslopActs = @$myactions['pigslop']; $Val2011BuildActs = @$myactions['Valentines2011Harvest']; $greenHouseBuildActs = @$myactions['greenhousebuildable_finished']; } if ($farmActs < 5 || $feedActs < 1 || $halloweenActs < 1 || $pigslopActs < 1 || $animalFeedActs < 1 || $Val2011BuildActs < 1 || $greenHouseBuildActs < 1) { foreach (@$fr_objects as $wObjects) { switch ($wObjects['className']) { case 'Plot': if ($farmActs < 5) { switch ($wObjects['state']) { case 'withered': if (@$this->settings['ucrops'] == 1) { $work[] = array('objectArray' => $wObjects, 'fbid' => $fr_fbid, 'action' => 'unwither'); $farmActs++; } break; case 'fallow': if (@$this->settings['pplots'] == 1) { $work[] = array('objectArray' => $wObjects, 'fbid' => $fr_fbid, 'action' => 'plow'); $farmActs++; } break; default: if (@$this->settings['fplots'] == 1 && $wObjects['isJumbo'] === false) { $work[] = array('objectArray' => $wObjects, 'fbid' => $fr_fbid, 'action' => 'fert'); $farmActs++; } } } break; case 'Animal': if ($farmActs < 5) { if ($wObjects['state'] == 'ripe') { $uinfo = Units_GetUnitByName($wObjects['itemName']); if (@$uinfo['action'] != 'transform' && @$this->settings['hanimals'] == 1) { $work[] = array('objectArray' => $wObjects, 'fbid' => $fr_fbid, 'action' => 'harvest'); $farmActs++; } } } break; case 'Tree': if ($farmActs < 5) { if ($wObjects['state'] == 'ripe' && @$this->settings['htrees'] == 1) { $work[] = array('objectArray' => $wObjects, 'fbid' => $fr_fbid, 'action' => 'harvest'); $farmActs++; } } break; case 'ChickenCoopBuilding': if ($feedActs < 1) { if ($wObjects['state'] == 'ripe' && @$this->settings['fchickens'] == 1) { $work[] = array('objectArray' => $wObjects, 'fbid' => $fr_fbid, 'action' => 'feedchickens'); $feedActs++; } } break; case 'HalloweenHauntedHouseBuilding': if ($halloweenActs < 1) { if ($wObjects['isFullyBuilt'] === true && @$this->settings['hcandy'] == 1) { $work[] = array('objectArray' => $wObjects, 'fbid' => $fr_fbid, 'action' => 'harvesthalloweencandy'); $halloweenActs++; } } break; case 'FeedTroughBuilding': if ($animalFeedActs < 1) { if ($wObjects['isFullyBuilt'] === true && @$this->settings['ftrough'] == 1) { $work[] = array('objectArray' => $wObjects, 'fbid' => $fr_fbid, 'action' => 'depositAnimalFeed'); $animalFeedActs++; } } break; case 'PigpenBuilding': if ($pigslopActs < 1) { if ($wObjects['isFullyBuilt'] === true && @$this->settings['fpigpen'] == 1) { $work[] = array('objectArray' => $wObjects, 'fbid' => $fr_fbid, 'action' => 'getVisitPigSlopW2W'); $pigslopActs++; } } case 'FeatureBuilding': if ($Val2011BuildActs < 1 && $wObjects['itemName'] == 'valentines2011_finished') { if (@$this->settings['hval2011'] == 1) { $work[] = array('objectArray' => $wObjects, 'fbid' => $fr_fbid, 'action' => 'neighborHarvestFeatureBuilding'); $Val2011BuildActs++; } } if ($greenHouseBuildActs < 1 && $wObjects['itemName'] == 'greenhousebuildable_finished') { if (@$this->settings['hgreenhouse'] == 1) { $work[] = array('objectArray' => $wObjects, 'fbid' => $fr_fbid, 'action' => 'neighborHarvestFeatureBuilding'); $greenHouseBuildActs++; } } } if ($farmActs == 5 && $feedActs == 1 && $halloweenActs == 1 && $animalFeedActs == 1 && $pigslopActs == 1 && $Val2011BuildActs == 1 && $greenHouseBuildActs == 1) { break; } } //Now Submit Work $amf = ''; $tmpArray = array(); $amfcount = 0; if (!empty($work)) { foreach ($work as $wk) { if ($wk['action'] != 'depositAnimalFeed' && $wk['action'] != 'getVisitPigSlopW2W') { $amf = CreateMultAMFRequest($amf, $amfcount, 'neighborAct', 'WorldService.performAction'); $amf->_bodys[0]->_value[1][$amfcount]['params'][1] = $wk['objectArray']; $amf->_bodys[0]->_value[1][$amfcount]['params'][2][0]['actionType'] = $wk['action']; $amf->_bodys[0]->_value[1][$amfcount]['params'][2][0]['hostId'] = $wk['fbid']; } else { $amf = CreateMultAMFRequest($amf, $amfcount, '', 'NeighborActionService.' . $wk['action']); $amf->_bodys[0]->_value[1][$amfcount]['params'][0] = $wk['fbid']; } $tmpArray[$amfcount]['id'] = $wk['fbid']; $tmpArray[$amfcount]['action'] = $wk['action']; $tmpArray[$amfcount]['item'] = $wk['objectArray']['itemName']; if ($amfcount < $this->botspeed - 1) { $amfcount++; continue; } $amf2 = $this->_fnAMFSend($amf); $amf = ''; $amfcount = 0; if ($amf2 === false) { continue; } foreach ($amf2->_bodys[0]->_value['data'] as $key => $returned) { $resp = $returned['errorType']; $err = $returned['errorData']; $harvestItem = @$returned['data']['harvestItem']; $rewardLink = @$returned['data']['rewardLink']; if ($resp == 0) { AddLog2('[' . $key . '] Action: ' . $tmpArray[$key]['action'] . ' ' . $tmpArray[$key]['item'] . ' - Experience: ' . $returned['data']['xpYield'] . ' - Coins: ' . $returned['data']['goldYield'] . ' - Result: ' . $this->zErrCGen[$resp]); if ($harvestItem != '' || $rewardLink != '') { AddLog2("Reward: {$harvestItem}"); AddRewardLog($harvestItem, $rewardLink); } } } } } if ($amf != '') { $amf2 = $this->_fnAMFSend($amf); if ($amf2 !== false) { foreach ($amf2->_bodys[0]->_value['data'] as $key => $returned) { $resp = $returned['errorType']; $err = $returned['errorData']; if ($resp == 0) { AddLog2('[' . $key . '] Action: ' . $tmpArray[$key]['action'] . ' ' . $tmpArray[$key]['item'] . ' - Experience: ' . $returned['data']['xpYield'] . ' - Coins: ' . $returned['data']['goldYield'] . ' - Result: ' . $this->zErrCGen[$resp]); } } } } } if ($this->settings['domissions'] == 1) { //Get A Random Mission $amf = CreateRequestAMF('', 'MissionService.getRandomMission'); $amf->_bodys[0]->_value[1][0]['params'][0] = $fr_fbid; $amf2 = $this->_fnAMFSend($amf); if ($amf2 !== false) { foreach ($amf2->_bodys[0]->_value['data'] as $key => $returned) { $resp = $returned['errorType']; $err = $returned['errorData']; if ($resp == 0 && isset($returned['data']['type'])) { $amf = CreateRequestAMF('', 'MissionService.completeMission'); $amf->_bodys[0]->_value[1][0]['params'][0] = $fr_fbid; $amf->_bodys[0]->_value[1][0]['params'][1] = $returned['data']['type']; $amf2 = $this->_fnAMFSend($amf); $mission = $returned['data']['type']; foreach ($amf2->_bodys[0]->_value['data'] as $key => $returned) { if ($resp == 0) { AddLog2('Do Mission: ' . ucfirst($mission) . ' - Result: ' . $this->zErrCGen[$resp]); } } } } } } AddLog2('-------------------------------------'); }
function SM_doPlace($itemName, $unit, $x, $y) { global $TB_settings; AddLog2("Placing " . $unit['realname']); $amf = CreateRequestAMF('place', 'WorldService.performAction'); $amf->_bodys[0]->_value[1][0]['params'][1]['className'] = $unit['className']; $amf->_bodys[0]->_value[1][0]['params'][1]['itemName'] = $itemName; $amf->_bodys[0]->_value[1][0]['params'][1]['direction'] = 0; $amf->_bodys[0]->_value[1][0]['params'][1]['position']['x'] = $x; $amf->_bodys[0]->_value[1][0]['params'][1]['position']['y'] = $y; $amf->_bodys[0]->_value[1][0]['params'][1]['position']['z'] = 0; $amf->_bodys[0]->_value[1][0]['params'][1]['deleted'] = false; $amf->_bodys[0]->_value[1][0]['params'][1]['state'] = 'static'; $amf->_bodys[0]->_value[1][0]['params'][1]['tempId'] = -1; $amf->_bodys[0]->_value[1][0]['params'][2][0]['isStorageWithdrawal'] = -1; $amf->_bodys[0]->_value[1][0]['params'][2][0]['isGift'] = false; $amf->_bodys[0]->_value[1][0]['params'][2][0]['isInventoryWithdrawal'] = true; $res = RequestAMF($amf); if ($res == 'OK') { AddLog2('-> ' . $res); return true; } else { AddLog2("ERROR - {$res}"); return false; } }