示例#1
0
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;
}
示例#2
0
 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;
 }
示例#3
0
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;
}
示例#4
0
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;
}
示例#5
0
 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();
     }
 }
示例#6
0
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;
    }
}
示例#7
0
 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('-------------------------------------');
 }
示例#9
0
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;
    }
}