Avatar billede doomstone-dk- Nybegynder
05. marts 2006 - 10:09 Der er 1 løsning

Hjælp til bot kode

Jeg har en bot som er interaktiv med spillet Anarchy Onlinen.
Det er en actions bot Skal sige hvorlang tid der er tilbage af en auction, og så siger den hvem der har vundet tilsidst.

Code her er en function som bliver udført hver 5 sek.

----------------------------
lang.php <- er included
----------------------------
$_lng[fsek][0] = "<font color=\"#007aff\">Auction for %1, will start in 1 min.\n/tell %2 bid [AMOUNT] to bid.</font>";
$_lng[fsek][1] = "<font color=\"#007aff\">Auction for %1 has started</font>";
$_lng[fsek][2] = "<font color=\"#007aff\">WARNING: 4 min remaning of auction for %1</font>";
$_lng[fsek][3] = "<font color=\"#007aff\">WARNING: 3 min remaning of auction for %1</font>";
$_lng[fsek][4] = "<font color=\"#007aff\">WARNING: 2 min remaning of auction for %1</font>";
$_lng[fsek][5] = "<font color=\"#007aff\">WARNING: 1 min remaning of auction for %1</font>";
$_lng[fsek][6] = "<font color=\"#007aff\">WARNING: 30 sek remaning of auction for %1</font>";
$_lng[fsek][7] = "<font color=\"#007aff\"><font color=\"#007aff\">WARNING: 10 sek remaning of auction for %1</font>";
$_lng[fsek][8] = "<font color=\"#007aff\">The auction for %1 has ended, %2 was the winner, with a bid on %3</font>";
$_lng[fsek][9] = "<font color=\"#007aff\">The auction for %1 has ended by buy out, %2 was the out buyer <font color=\"#ff0000\">(BO was: %3)</font>.</font>";
$_lng[fsek][10] = "<font color=\"#007aff\">The auction for %1 has ended without a buyer.</font>";
-------------------------------

-------------------------------
The 5sek function
-------------------------------
global $_lng,$botname,$aoc,$running,$logon,$_a;

    // AUTOJOIN INVITES GO HERE AND ALL THE CHANEL TELLs
    if($_a['start']=="1"&&time()>=$_a['time']){
        //unset($running); echo "Unsetting\n"; sleep(10);
        $running = array();
        $doruns = "0";
        $sql = "SELECT *
                FROM `auctions`
                WHERE active = '1'
                AND rk = '". $logon[dimension] ."'
                ORDER BY time
                LIMIT 0,1";
                $foresp = mysql_query($sql) or die (mysql_error());
                $yes = mysql_num_rows($foresp);
                IF ($yes){
                    while($data = mysql_fetch_array($foresp)){
                        $running[state] = "0";
                        $running[id] = $data[id];
                        $tmp = explode("|", $data[item]);
                        $running[lowql] = $tmp[0];
                        $running[higql] = $tmp[1];
                        $running[ql] = $data[ql];
                        $running[iname] = $data[iname];
                        $running[total] = $data[total];
                        $running[itemref] = $running[total]." x ".make_item($running[lowql], $running[higql], $running[ql], $running[iname]);
                        $running[user] = $data[user];
                        $running[active] = "0"; // SO USERS CAN NOT BID WHILE NO AUCTION RUNNING
                        $running[bid] = $data[minbid];
                        $running[bo] = $data[bo];
                        $running[isbo] = 0; // IF THIS IS 1 HAS THE ITEM BEEN BUY OUT

                        // SETS IT TO NOT RUNNIGN
                        $_a['start'] = "0";
                    }
                }
    }

    if($running[state] == "0"){
        col_log("AUCTION","START","auction for ".$running[iname]." has anounced");
        $aoc->send_privgroup($botname, str_replace("%1", $running[itemref], $_lng[fsek][0]));
        $running[next] = time()+60;
        $running[state] = "1";
        $running[active] = "1";
    }


    if($running[state] == "1" && time() >= $running[next]){
        $aoc->send_privgroup($botname, str_replace("%1", $running[itemref], $_lng[fsek][1]));
        $running[next] = time()+60;
        $running[state] = "2";
    }

    if($running[state] == "2" && time() >= $running[next]){
        $aoc->send_privgroup($botname, str_replace("%1", $running[itemref], $_lng[fsek][2]));
        $running[next] = time()+60;
        $running[state] = "3";
    }

    if($running[state] == "3" && time() >= $running[next]){
        $aoc->send_privgroup($botname, str_replace("%1", $running[itemref], $_lng[fsek][3]));
        $running[next] = time()+60;
        $running[state] = "4";
    }

    if($running[state] == "4" && time() >= $running[next]){
        $aoc->send_privgroup($botname, str_replace("%1", $running[itemref], $_lng[fsek][4]));
        $running[next] = time()+60;
        $running[state] = "5";
    }

    if($running[state] == "5" && time() >= $running[next]){
        $aoc->send_privgroup($botname, str_replace("%1", $running[itemref], $_lng[fsek][5]));
        $running[next] = time()+30;
        $running[state] = "6";
    }

    if($running[state] == "6" && time() >= $running[next]){
        $aoc->send_privgroup($botname, str_replace("%1", $running[itemref], $_lng[fsek][6]));
        $running[next] = time()+20;
        $running[state] = "7";
    }

    if($running[state] == "7" && time() >= $running[next]){
        $aoc->send_privgroup($botname, str_replace("%1", $running[itemref], $_lng[fsek][7]));
        $running[next] = time()+10;
        $running[state] = "8";
    }

    if($running[state] == "8" && time() >= $running[next]){
        echo $running[state]." == \"8\" && ".time()." >= ".$running[next]."\n";
        $sql = "SELECT *
                FROM `bids`
                WHERE rk = '". $logon[dimension] ."'
                AND aid = '".$running[id]."'
                ORDER BY time DESC
                LIMIT 0,1";
                $foresp = mysql_query($sql) or die (mysql_error());
                $yes = mysql_num_rows($foresp);
                IF ($yes){
                    while($data = mysql_fetch_array($foresp)){
                       
                        if($running[isbo] == 0){
                            // IF TIME OUT
                            $tmp = str_replace("%1", $running[itemref], $_lng[fsek][8]);
                            $tmp = str_replace("%2", $data[user], $tmp);
                            $tmp = str_replace("%3", $data[bid], $tmp);
                            $aoc->send_privgroup($botname, $tmp);
                            $aoc -> send_tell($running[user], $tmp);
                            $aoc -> send_tell($data[user], $tmp);
                        }else{
                            // IF BOY OUT
                            $tmp = str_replace("%1", $running[itemref], $_lng[fsek][9]);
                            $tmp = str_replace("%2", $data[user], $tmp);
                            $tmp = str_replace("%3", $data[bid], $tmp);
                            $aoc->send_privgroup($botname, $tmp);
                            $aoc -> send_tell($running[user], $tmp);
                            $aoc -> send_tell($data[user], $tmp);
                        }
                        //FOR THE DATABASE
                        unset($dbupdate);
                        $dbupdate[sold] = $data[bid];
                        $dbupdate[soldto] = $data[user];
                    }
                }else{
                        $aoc->send_privgroup($botname, str_replace("%1", $running[itemref], $_lng[fsek][10]));
                        $aoc -> send_tell($running[user], str_replace("%1", $running[itemref], $_lng[fsek][10]));
                }
        // SETTING THE ITEM TO INACTIVE
        $dbupdate[active] = 0;
        db_update("auctions","id",$running[id],$dbupdate,0);
        unset($dbupdate);
        unset($running); echo "Unsetting\n"; sleep(10);
       
        $_a['start'] = "1";
        $_a['time'] = time()+30;
        $running[state] = "-1";
    }

echo "Stats ->\n";
print_r($_a);
print_r($running);
----------------------------------------

Jeg har flere fejl, nogle gange bliver den ved med at loope state 8, andre gange bliver den ved med at loope 0->1->0->1->0->1 det er lidt underligt og jeg kan bare ikke se hvad der er galt...
Avatar billede doomstone-dk- Nybegynder
23. juli 2006 - 23:10 #1
lukker.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester