Changeset 30 for TriviaEngine


Ignore:
Timestamp:
11/14/06 17:30:53 (6 years ago)
Author:
james
Message:

new near five thingy

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TriviaEngine/TriviaEngine-sqlite.tcl

    r29 r30  
    6666set trivia_c(purple) "\0036" 
    6767set trivia_c(bold) "\002" 
     68set trivia_c(realblue) "\0032" 
    6869#>>> 
    6970 
     
    395396          putquick "PRIVMSG $trivia_channel :Welcome to our newest player,  $trivia_c(purple)$nick$trivia_c(off) :)" 
    396397        }        
    397         putquick "PRIVMSG $trivia_channel :Rankings: [trivia_near_five2 $uid]" 
     398        putquick "PRIVMSG $trivia_channel :Rankings: [trivia_near_five3 $uid]" 
    398399 
    399400        set leader [trivia_leader] 
     
    467468                } 
    468469                4 { 
    469                         puthelp "PRIVMSG $trivia_channel :$trivia_c(blue)QUAD DAMAGE!" 
     470                        puthelp "PRIVMSG $trivia_channel :$trivia_c(realblue)QUAD DAMAGE!" 
    470471                        return "is on a roll ..." 
    471472                } 
     
    14481449#>>> 
    14491450 
     1451# Third function to get the nearest users to your score 
     1452proc trivia_near_five3 { uid } { 
     1453        global trivia_db_handle trivia_c 
     1454 
     1455        set sql "DROP TABLE IF EXISTS _score" 
     1456        putlog $sql 
     1457        trivia_db_handle eval $sql 
     1458 
     1459        set sql "CREATE TEMPORARY TABLE _score (user_id int, user_score int, last_score int)" 
     1460        putlog $sql 
     1461        trivia_db_handle eval $sql 
     1462 
     1463        set sql "INSERT INTO _score SELECT user_id, COUNT(dt), MAX(dt) AS user_score FROM scores GROUP BY scores.user_id" 
     1464        putlog $sql 
     1465        trivia_db_handle eval $sql 
     1466 
     1467        set outputlist [list] 
     1468 
     1469 
     1470        # get our score 
     1471        set sql "SELECT user_score, last_score FROM _score WHERE user_id = $uid" 
     1472        set our_score "" 
     1473        set our_last "" 
     1474        trivia_db_handle eval $sql { 
     1475                set our_score $user_score 
     1476                set our_last $last_score 
     1477        } 
     1478 
     1479        if {$our_score == ""} { 
     1480                return "" 
     1481        } 
     1482 
     1483        if {$last_score == ""} { 
     1484                return "" 
     1485        } 
     1486 
     1487        #find our position 
     1488        #don't need to use last_score here because we must've just scored - making use the most recent point for this score 
     1489        set sql "SELECT COUNT(*)+1 AS position FROM _score WHERE user_score > $our_score ORDER BY user_score DESC, last_score DESC" 
     1490        putlog $sql 
     1491        set position [trivia_db_handle onecolumn $sql] 
     1492 
     1493        putlog "our position is $position" 
     1494 
     1495 
     1496        if {$position == 1} { 
     1497                putlog "oh we're first" 
     1498                #set output "$trivia_c(purple) $trivia_c(bold)" 
     1499                #append output "1st: [trivia_get_username $uid] ($our_score)  $trivia_c(off)$trivia_c(bold)" 
     1500                lappend outputlist [list $uid $our_score] 
     1501        } else { 
     1502                #find some users higher than us 
     1503                set sql "SELECT * FROM _score WHERE user_score > $user_score ORDER BY user_score DESC, last_score DESC LIMIT 4" 
     1504                putlog $sql 
     1505 
     1506                set prelist [list] 
     1507 
     1508                trivia_db_handle eval $sql { 
     1509                        lappend outputlist [list $user_id $user_score] 
     1510                } 
     1511 
     1512                # finally, us 
     1513                lappend outputlist [list $uid $our_score] 
     1514        } 
     1515 
     1516        putlog "so far, output list is $outputlist" 
     1517 
     1518        # find two people below us 
     1519        set sql "SELECT * FROM _score WHERE (user_score < $our_score) OR ((user_score = $our_score) AND (last_score < $our_last)) ORDER BY user_score DESC, last_score DESC LIMIT 5" 
     1520        putlog $sql 
     1521        set postlist [list] 
     1522        trivia_db_handle eval $sql { 
     1523                lappend postlist [list $user_id $user_score] 
     1524        } 
     1525 
     1526        putlog "postlist is $postlist" 
     1527 
     1528        set pre_size 3 
     1529        set post_size 2 
     1530 
     1531        if {$position == 1} { 
     1532                set pre_size 1 
     1533                set post_size 4 
     1534        } 
     1535 
     1536        if {$position == 2} { 
     1537                set pre_size 2 
     1538                set post_size 3 
     1539        } 
     1540 
     1541        if {[llength $postlist] == 0} { 
     1542                set pre_size 5 
     1543        } 
     1544 
     1545        if {$pre_size < [llength $outputlist]} { 
     1546                set outputlist [lrange $outputlist end-$pre_size end] 
     1547        } 
     1548 
     1549        set post_size [expr 5 - [llength $outputlist]] 
     1550 
     1551        if {$post_size > [llength $postlist]} { 
     1552                set postlist [lrange $postlist 0 $post_size] 
     1553        } 
     1554 
     1555        putlog "---" 
     1556        putlog "pre: $outputlist" 
     1557        putlog "post: $postlist" 
     1558 
     1559 
     1560 
     1561} 
     1562 
     1563proc trivia_get_username { uid } { 
     1564        global trivia_db_handle 
     1565 
     1566        set sql "SELECT user_name FROM users WHERE user_id = $uid" 
     1567        putlog $sql 
     1568        return [trivia_db_handle onecolumn $sql] 
     1569} 
     1570 
     1571 
    14501572# Get the current leader's UID 
    14511573proc trivia_leader { } { 
     
    17481870        global trivia_score_time trivia_channel trivia_c trivia_asking_question trivia_warned 
    17491871 
    1750         putloglev 1 * "score_rot tick" 
     1872        #putloglev 1 * "score_rot tick" 
    17511873        utimer 10 trivia_score_rot_timer 
    17521874 
     
    18011923utimer 10 trivia_score_rot_timer 
    18021924 
    1803 putlog {TriviaEngine ENGAGED(*$£&($} 
     1925putlog {TriviaEngine ENGAGED(*$£&($} 
    18041926 
    18051927if {$trivia_must_rehash == 2} { 
Note: See TracChangeset for help on using the changeset viewer.