Changeset 30 for TriviaEngine
- Timestamp:
- 11/14/06 17:30:53 (6 years ago)
- File:
-
- 1 edited
-
TriviaEngine/TriviaEngine-sqlite.tcl (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
TriviaEngine/TriviaEngine-sqlite.tcl
r29 r30 66 66 set trivia_c(purple) "\0036" 67 67 set trivia_c(bold) "\002" 68 set trivia_c(realblue) "\0032" 68 69 #>>> 69 70 … … 395 396 putquick "PRIVMSG $trivia_channel :Welcome to our newest player, $trivia_c(purple)$nick$trivia_c(off) :)" 396 397 } 397 putquick "PRIVMSG $trivia_channel :Rankings: [trivia_near_five 2$uid]"398 putquick "PRIVMSG $trivia_channel :Rankings: [trivia_near_five3 $uid]" 398 399 399 400 set leader [trivia_leader] … … 467 468 } 468 469 4 { 469 puthelp "PRIVMSG $trivia_channel :$trivia_c( blue)QUAD DAMAGE!"470 puthelp "PRIVMSG $trivia_channel :$trivia_c(realblue)QUAD DAMAGE!" 470 471 return "is on a roll ..." 471 472 } … … 1448 1449 #>>> 1449 1450 1451 # Third function to get the nearest users to your score 1452 proc 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 1563 proc 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 1450 1572 # Get the current leader's UID 1451 1573 proc trivia_leader { } { … … 1748 1870 global trivia_score_time trivia_channel trivia_c trivia_asking_question trivia_warned 1749 1871 1750 putloglev 1 * "score_rot tick"1872 #putloglev 1 * "score_rot tick" 1751 1873 utimer 10 trivia_score_rot_timer 1752 1874 … … 1801 1923 utimer 10 trivia_score_rot_timer 1802 1924 1803 putlog {TriviaEngine ENGAGED(*$ £&($}1925 putlog {TriviaEngine ENGAGED(*$£&($} 1804 1926 1805 1927 if {$trivia_must_rehash == 2} {
Note: See TracChangeset
for help on using the changeset viewer.
