Advertisement
sauerCHAOS

DuelScript

Mar 4th, 2012
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 14.24 KB | None | 0 0
  1. // >>>DuelScript Revisited<<< by Chaos and srbs
  2. // (C) 2011 David "srbs" Forrest & Chaos, ZLIB license
  3. // somerandombystander (at) gmail (dot) com
  4. // sauerchaos (at) gmail (dot) com
  5. // http://www.opensource.org/licenses/zlib-license.php
  6.  
  7. // >> This script is compatible with Cube 2: Sauerbraten - Justice Edition.
  8.  
  9. // >> Total aliases utilized:       78
  10. // >> Total keys bound by default:  1
  11. // >> Total number of GUIs:     1
  12.  
  13. // Key Bind: (1 in total)
  14. bind L [ showgui duel ]
  15.  
  16. // Defaults: (63 vars in total)
  17. createine = [ if (=s (getalias $arg1) "") [ $arg1 = $arg2 ] ]
  18.  
  19. _ds_go = 0
  20. _ds_list_original =         [ name frags deaths acc kpd flags time ]
  21.  
  22. createine _ds_list      [ name frags deaths acc kpd flags time ]
  23. createine _ds_list_duel     [ duelstats name frags deaths acc kpd flags time ]
  24.  
  25. looplist i $_ds_list_original [
  26.     do [
  27.         createine _ds_color_lbl_@i 7
  28.         createine _ds_color_num_@i 7
  29.         createine _ds_lbl_@i (at "Name: Frags: Deaths: Acc: KpD: Flags: Time:" (indexof $_ds_list @i))
  30.     ]
  31. ]
  32.  
  33. looplist i (concat duelstats $_ds_list_original) [
  34.     do [
  35.         createine _ds_color_lbl_duel_@i 7
  36.         createine _ds_color_num_duel_@i 7
  37.         createine _ds_lbl_duel_@i (at "DuelStats Name: Frags: Deaths: Acc: KpD: Flags: Time:" (indexof (concat duelstats $_ds_list_original) @i))
  38.     ]
  39. ]
  40.        
  41. createine _ds_show_lbl      0
  42. createine _ds_show_num      0
  43. createine _ds_show_lbl_duel     0
  44. createine _ds_show_num_duel 0
  45.  
  46. createine _ds_ifw       "Winning by"
  47. createine _ds_ifl       "Losing by"
  48. createine _ds_ift       "Tied!"
  49.  
  50. createine _ds_color_ifw     0
  51. createine _ds_color_ifl     1
  52. createine _ds_color_ift     4
  53.  
  54. createine _ds_color_num_ifw 1
  55. createine _ds_color_num_ifl 1      
  56.  
  57. createine _ds_delay         3
  58. createine _ds_opts      30
  59.  
  60. // GUI Menu:
  61. newgui duel [
  62.  
  63.     guititle "GameHud"
  64.     guistayopen [
  65.         guibar
  66.         guialign 0 [
  67.             guialign 0 [
  68.                 guialign 0 [
  69.                     guitext "show/hide" 0
  70.                 ]
  71.                 guibar
  72.                 guialign 0 [
  73.                     guilist [
  74.                         guitext "label" 0
  75.                         looplist i $_ds_list [
  76.                             guialign 0 [
  77.                                 guibitfield "" _ds_show_lbl (<< 1 (indexof $_ds_list_original @i))
  78.                             ]
  79.                         ]
  80.                     ]
  81.                     guibar
  82.                     guilist [
  83.                         guitext "value" 0
  84.                         looplist i $_ds_list [
  85.                             guialign 0 [
  86.                                 guibitfield "" _ds_show_num (<< 1 (indexof $_ds_list_original @i)) [
  87.                                     if (&&  (! (& $_ds_show_num (<< 1 (indexof $_ds_list_original @@i))))  (& $_ds_show_lbl (<< 1 (indexof $_ds_list_original @@i)))) [
  88.                                         _ds_show_lbl = (- $_ds_show_lbl (<< 1 (indexof $_ds_list_original @@@i)))
  89.                                     ]
  90.                                 ]
  91.                             ]
  92.                         ]
  93.                     ]
  94.                 ]
  95.             ]
  96.             guibar
  97.             guialign 0 [
  98.                 guialign 0 [
  99.                     guitext "color" 0
  100.                 ]
  101.                 guibar
  102.                 guialign 0 [
  103.                     guilist [
  104.                         guitext "label" 0
  105.                         looplist i $_ds_list [
  106.                             guialign 0 [
  107.                                 guibutton "" [
  108.                                     _ds_color_lbl_@i = (mod (+ $_ds_color_lbl_@i 1) 8)
  109.                                 ]
  110.                             ]
  111.                         ]
  112.                     ]
  113.                     guibar
  114.                     guilist [
  115.                         guitext "value" 0
  116.                         looplist i $_ds_list [
  117.                             guialign 0 [
  118.                                 guibutton "" [
  119.                                     _ds_color_num_@i = (mod (+ $_ds_color_num_@i 1) 8)
  120.                                 ]
  121.                             ]
  122.                         ]
  123.                     ]
  124.                 ]
  125.             ]
  126.             guibar
  127.             guialign 0 [
  128.                 guialign 0 [
  129.                     guitext "label" 0
  130.                 ]
  131.                 guibar
  132.                 guibar
  133.                 looplist i $_ds_list [
  134.                     do [
  135.                         _ds_guieditable _ds_lbl_@i $_ds_color_lbl_@i
  136.                     ]  
  137.                 ]
  138.             ]
  139.             guibar
  140.             guialign 0 [
  141.                 guialign 0 [
  142.                     guitext "value" 0
  143.                 ]
  144.                 guibar
  145.                 guibar
  146.                 looplist i $_ds_list [
  147.                     do [
  148.                         guitext (concatword "^f4[" "^f" $_ds_color_num_@i $i "^f4]") 0
  149.                     ]
  150.                 ]
  151.             ]
  152.             guibar
  153.             guialign 0 [
  154.                 guialign 0 [
  155.                     guitext "location" 0
  156.                 ]
  157.                 guibar
  158.                 guibar
  159.                 //guistrut 1
  160.                 loop i (listlen $_ds_list) [
  161.                     guialign 0 [
  162.                         guibutton "" [
  163.                             _ds_list = (
  164.                                 strreplace $_ds_list (concat (at $_ds_list (- @@i 1)) (at $_ds_list @@i)) (concat (at $_ds_list @@i) (at $_ds_list (- @@i 1)))
  165.                             )
  166.                         ] "arrow_bw.jpg"
  167.                         guibutton "" [
  168.                             _ds_list = (
  169.                                 strreplace $_ds_list (concat (at $_ds_list @@i) (at $_ds_list (+ @@i 1))) (concat (at $_ds_list (+ @@i 1)) (at $_ds_list @@i))
  170.                             )
  171.                         ] "arrow_fw.jpg"
  172.                     ]
  173.                 ]
  174.             ]
  175.         ]
  176.         guibar
  177.  
  178.         guitab "DuelHud"
  179.         guititle "DuelHud"
  180.         guibar
  181.         guialign 0 [
  182.             guialign 0 [
  183.                 guialign 0 [
  184.                     guitext "show/hide" 0
  185.                 ]
  186.                 guibar
  187.                 guialign 0 [
  188.                     guilist [
  189.                         guitext "label" 0
  190.                         looplist i $_ds_list_duel [
  191.                             guialign 0 [
  192.                                 guibitfield "" _ds_show_lbl_duel (<< 1 (indexof (concat duelstats $_ds_list_original) @i))
  193.                             ]
  194.                         ]
  195.                     ]
  196.                     guibar
  197.                     guilist [
  198.                         guitext "value" 0
  199.                         looplist i $_ds_list_duel [
  200.                             guialign 0 [
  201.                                 guibitfield "" _ds_show_num_duel (<< 1 (indexof (concat duelstats $_ds_list_original) @i)) [
  202.                                     if (&&  (! (& $_ds_show_num_duel (<< 1 (indexof (concat duelstats $_ds_list_original) @@i))))  (& $_ds_show_lbl_duel (<< 1 (indexof (concat duelstats $_ds_list_original) @@i)))) [
  203.                                         _ds_show_lbl_duel = (- $_ds_show_lbl_duel (<< 1 (indexof (concat duelstats $_ds_list_original) @@@i)))
  204.                                     ]
  205.                                 ]
  206.                             ]
  207.                         ]
  208.                     ]
  209.                 ]
  210.             ]
  211.             guibar
  212.             guialign 0 [
  213.                 guialign 0 [
  214.                     guitext "color" 0
  215.                 ]
  216.                 guibar
  217.                 guialign 0 [
  218.                     guilist [
  219.                         guitext "label" 0
  220.                         looplist i $_ds_list_duel [
  221.                             guialign 0 [
  222.                                 if (=s $i duelstats) [
  223.                                     guibutton "" [
  224.                                         echo "^f7Change the DuelStats settings in the 'Options' tab."
  225.                                     ] 0
  226.                                 ] [
  227.                                     guibutton "" [
  228.                                         _ds_color_lbl_duel_@i = (mod (+ $_ds_color_lbl_duel_@i 1) 8)
  229.                                     ]
  230.                                 ]
  231.                             ]
  232.                         ]
  233.                     ]
  234.                     guibar
  235.                     guilist [
  236.                         guitext "value" 0
  237.                         looplist i $_ds_list_duel [
  238.                             guialign 0 [
  239.                                 if (=s $i duelstats) [
  240.                                     guibutton "" [
  241.                                         echo "^f7Change the DuelStats settings in the 'Options' tab."
  242.                                     ] 0
  243.                                 ] [
  244.                                     guibutton "" [
  245.                                         _ds_color_num_duel_@i = (mod (+ $_ds_color_num_duel_@i 1) 8)
  246.                                     ]
  247.                                 ]
  248.                             ]
  249.                         ]
  250.                     ]
  251.                 ]
  252.             ]
  253.             guibar
  254.             guialign 0 [
  255.                 guialign 0 [
  256.                     guitext "label" 0
  257.                 ]
  258.                 guibar
  259.                 guibar
  260.                 looplist i $_ds_list_duel [
  261.                     if (=s $i duelstats) [
  262.                         guibutton "^f7DuelStats" [ echo "^f7Change the DuelStats settings in the 'Options' tab." ] 0
  263.                     ] [
  264.                         _ds_guieditable _ds_lbl_duel_@i $_ds_color_lbl_duel_@i
  265.                     ]  
  266.                 ]
  267.             ]
  268.             guibar
  269.             guialign 0 [
  270.                 guialign 0 [
  271.                     guitext "value" 0
  272.                 ]
  273.                 guibar
  274.                 guibar
  275.                 looplist i $_ds_list_duel [
  276.                     do [
  277.                         guitext (concatword "^f4[" "^f" $_ds_color_num_duel_@i $i "^f4]") 0
  278.                     ]
  279.                 ]
  280.             ]
  281.             guibar
  282.             guialign 0 [
  283.                 guialign 0 [
  284.                     guitext "location" 0
  285.                 ]
  286.                 guibar
  287.                 guibar
  288.                 //guistrut 1
  289.                 loop i (listlen $_ds_list_duel) [
  290.                     guialign 0 [
  291.                         guibutton "" [
  292.                             _ds_list_duel = (
  293.                                 strreplace $_ds_list_duel (concat (at $_ds_list_duel (- @@i 1)) (at $_ds_list_duel @@i)) (concat (at $_ds_list_duel @@i) (at $_ds_list_duel (- @@i 1)))
  294.                             )
  295.                         ] "arrow_bw.jpg"
  296.                         guibutton "" [
  297.                             _ds_list_duel = (
  298.                                 strreplace $_ds_list_duel (concat (at $_ds_list_duel @@i) (at $_ds_list_duel (+ @@i 1))) (concat (at $_ds_list_duel (+ @@i 1)) (at $_ds_list_duel @@i))
  299.                             )
  300.                         ] "arrow_fw.jpg"
  301.                     ]
  302.                 ]
  303.             ]
  304.         ]
  305.         guibar
  306.  
  307.         guitab "Options"
  308.         guititle "DuelScript Options"
  309.         guibar
  310.         guitext "^f2DuelStats:" 0
  311.         guialign 0 [
  312.             guibar
  313.             guialign 0 [
  314.                 guialign 0 [
  315.                     guitext "color" 0
  316.                 ]
  317.                 guibar
  318.                 guialign 0 [
  319.                     guialign 0 [
  320.                         looplist i "ifw ifl ift" [
  321.                             guibutton "" [
  322.                                 _ds_color_@i = (+ (mod $_ds_color_@i 7) 1)
  323.                             ]
  324.                         ]
  325.                     ]
  326.                     guibar
  327.                     guialign 0 [
  328.                         looplist i "ifw ifl" [
  329.                             guibutton "" [
  330.                                 _ds_color_num_@i = (+ (mod $_ds_color_num_@i 7) 1)
  331.                             ]
  332.                         ]
  333.                         guistrut 1
  334.                     ]
  335.                 ]                  
  336.             ]
  337.             guibar
  338.             guialign 0 [
  339.                 guialign 0 [
  340.                     guitext "label" 0
  341.                 ]
  342.                 guibar
  343.                 _ds_guieditable_duel _ds_ifw $_ds_color_ifw
  344.                 _ds_guieditable_duel _ds_ifl $_ds_color_ifl
  345.                 _ds_guieditable_duel _ds_ift $_ds_color_ift
  346.    
  347.             ]
  348.             guibar
  349.             guialign 0 [
  350.                 guialign 0 [
  351.                     guitext "value" 0
  352.                 ]
  353.                 guibar
  354.                 guitext (concatword "^f4[^f" $_ds_color_num_ifw "winning^f4]")  0
  355.                 guitext (concatword "^f4[^f" $_ds_color_num_ifl "losing^f4]")   0
  356.                 guistrut 1
  357.             ]
  358.             guibar
  359.         ]
  360.         guibar
  361.         guilist [
  362.             guitext "^f2Continuous Echo: " 0
  363.             guibitfield "Enable" _ds_opts 1
  364.             if (& $_ds_opts 1) [
  365.                 guibar
  366.                 guitext "Interval (seconds): " 0
  367.                 guifield _ds_delay 2
  368.             ]
  369.         ]
  370.         guibar
  371.         guilist [
  372.             guitext "^f2Echo on Keystroke: " 0
  373.             newbinds = (searchbinds "echo (_ds_duelstats)")
  374.             guikeyfield newbinds -8 [
  375.                 looplist i (searchbinds "echo (_ds_duelstats)") [ bind $i "" ]
  376.                 looplist i $newbinds [ bind $i "echo (_ds_duelstats)" ]
  377.             ]
  378.         ]
  379.         guibar
  380.         guilist [
  381.             guitext "^f2Duel Gamehud: " 0
  382.             guibitfield "Enable" _ds_opts 2
  383.         ]
  384.     ]
  385.  
  386. ] "DuelScript"
  387.  
  388. // Miscellaneous Functions: (13 in total)
  389. _ds_name = [
  390.     if $arg1 [
  391.         concatword "^f" $_ds_color_lbl_duel_name (? (& $_ds_show_lbl_duel (<< 1 (indexof (concat duelstats $_ds_list_original) "name"))) (concatword $_ds_lbl_duel_name " ")) "^f" $_ds_color_num_duel_name (getname)
  392.     ] [
  393.         concatword "^f" $_ds_color_lbl_name (? (& $_ds_show_lbl (<< 1 (indexof $_ds_list_original "name"))) (concatword $_ds_lbl_name " ")) "^f" $_ds_color_num_name (getname)
  394.     ]
  395. ]
  396. _ds_frags = [
  397.     if $arg1 [
  398.         concatword "^f" $_ds_color_lbl_duel_frags (? (& $_ds_show_lbl_duel (<< 1 (indexof (concat duelstats $_ds_list_original) "frags"))) (concatword $_ds_lbl_duel_frags " ")) "^f" $_ds_color_num_duel_frags (getfrags)
  399.     ] [
  400.         concatword "^f" $_ds_color_lbl_frags (? (& $_ds_show_lbl (<< 1 (indexof $_ds_list_original "frags"))) (concatword $_ds_lbl_frags " ")) "^f" $_ds_color_num_frags (getfrags)
  401.     ]
  402. ]
  403. _ds_deaths = [
  404.     if $arg1 [
  405.         concatword "^f" $_ds_color_lbl_duel_deaths (? (& $_ds_show_lbl_duel (<< 1 (indexof (concat duelstats $_ds_list_original) "deaths"))) (concatword $_ds_lbl_duel_deaths " ")) "^f" $_ds_color_num_duel_deaths (getdeaths)
  406.     ] [
  407.         concatword "^f" $_ds_color_lbl_deaths (? (& $_ds_show_lbl (<< 1 (indexof $_ds_list_original "deaths"))) (concatword $_ds_lbl_deaths " ")) "^f" $_ds_color_num_deaths (getdeaths)
  408.     ]
  409. ]
  410. _ds_acc = [
  411.     if $arg1 [
  412.         concatword "^f" $_ds_color_lbl_duel_acc (? (& $_ds_show_lbl_duel (<< 1 (indexof (concat duelstats $_ds_list_original) "acc"))) (concatword $_ds_lbl_duel_acc " ")) "^f" $_ds_color_num_duel_acc (getaccuracy)
  413.     ] [
  414.         concatword "^f" $_ds_color_lbl_acc (? (& $_ds_show_lbl (<< 1 (indexof $_ds_list_original "acc"))) (concatword $_ds_lbl_acc " ")) "^f" $_ds_color_num_acc (getaccuracy)
  415.     ]
  416. ]
  417. _ds_kpd = [
  418.     if $arg1 [
  419.         concatword "^f" $_ds_color_lbl_duel_kpd (? (& $_ds_show_lbl_duel (<< 1 (indexof (concat duelstats $_ds_list_original) "kpd"))) (concatword $_ds_lbl_duel_kpd " ")) "^f" $_ds_color_num_duel_kpd (substr (divf (getfrags) (max (getdeaths) 1)) 0 4)
  420.     ] [
  421.         concatword "^f" $_ds_color_lbl_kpd (? (& $_ds_show_lbl (<< 1 (indexof $_ds_list_original "kpd"))) (concatword $_ds_lbl_kpd " ")) "^f" $_ds_color_num_kpd (substr (divf (getfrags) (max (getdeaths) 1)) 0 4)
  422.     ]
  423. ]
  424. _ds_flags = [
  425.     if $arg1 [
  426.         concatword "^f" $_ds_color_lbl_duel_flags (? (& $_ds_show_lbl_duel (<< 1 (indexof (concat duelstats $_ds_list_original) "flags"))) (concatword $_ds_lbl_duel_flags " ")) "^f" $_ds_color_num_duel_flags (getflags)
  427.     ] [
  428.         concatword "^f" $_ds_color_lbl_flags (? (& $_ds_show_lbl (<< 1 (indexof $_ds_list_original "flags"))) (concatword $_ds_lbl_flags " ")) "^f" $_ds_color_num_flags (getflags)
  429.     ]
  430. ]
  431. _ds_time = [
  432.     if $arg1 [
  433.         concatword "^f" $_ds_color_lbl_duel_time (? (& $_ds_show_lbl_duel (<< 1 (indexof (concat duelstats $_ds_list_original) "time"))) (concatword $_ds_lbl_duel_time " ")) "^f" $_ds_color_num_duel_time (_ds_timeleft)
  434.     ] [
  435.         concatword "^f" $_ds_color_lbl_time (? (& $_ds_show_lbl (<< 1 (indexof $_ds_list_original "time"))) (concatword $_ds_lbl_time " ")) "^f" $_ds_color_num_time (_ds_timeleft)
  436.     ]
  437. ]
  438.  
  439. _ds_duelstats = [
  440.     cond (> (getfrags) (getdeaths)) [
  441.         concatword "^f" $_ds_color_ifw (
  442.             ? (& $_ds_show_lbl_duel (<< 1 (indexof (concat duelstats $_ds_list_original) "duelstats"))) (concatword $_ds_ifw " ")) "^f" $_ds_color_num_ifw (- (getfrags) (getdeaths)
  443.         )
  444.     ] (= (getfrags) (getdeaths)) [
  445.         concatword "^f" $_ds_color_ift (
  446.             ? (& $_ds_show_lbl_duel (<< 1 (indexof (concat duelstats $_ds_list_original) "duelstats"))) $_ds_ift
  447.         )
  448.     ] (< (getfrags) (getdeaths)) [
  449.         concatword "^f" $_ds_color_ifl (
  450.             ? (& $_ds_show_lbl_duel (<< 1 (indexof (concat duelstats $_ds_list_original) "duelstats"))) (concatword $_ds_ifl " ")) "^f" $_ds_color_num_ifl (- (getdeaths) (getfrags)
  451.         )
  452.     ]
  453. ]
  454.  
  455. _ds_getstats = [
  456.     _ds_stats = ""
  457.     if (&& $_ds_go (& $_ds_opts 2)) [   // in case _ds_go changes during the loop
  458.         looplist i $_ds_list_duel [
  459.             if (&& (& $_ds_show_num_duel (<< 1 (indexof (concat duelstats $_ds_list_original) $i))) (|| (!=s $i flags) (m_ctf (getmode)))) [
  460.                 _ds_stats = (concat $_ds_stats (_ds_@i 1))
  461.             ]
  462.         ]
  463.     ] [
  464.         looplist i $_ds_list [
  465.             if (&& (& $_ds_show_num (<< 1 (indexof $_ds_list_original $i))) (|| (!=s $i flags) (m_ctf (getmode)))) [
  466.                 _ds_stats = (concat $_ds_stats (_ds_@i))
  467.             ]
  468.         ]
  469.     ]
  470.     result (substr $_ds_stats 1)
  471. ]
  472.  
  473. _ds_addzero = [ ? (> $arg1 9) $arg1 (concatword "0" $arg1) ]
  474.  
  475. _ds_timeleft = [ format "%1:%2" (div (timeremaining) 60) (_ds_addzero (mod (timeremaining) 60)) ]
  476.  
  477. _ds_guieditable = [ guibutton (concatword "^f" $arg2 (getalias $arg1)) [ _ds_guieditable = [ guifield $arg1 -7 [ _ds_guieditable = [@@@_ds_guieditable] ] ] ] 0 ]
  478.  
  479. _ds_guieditable_duel = [ guibutton (concatword "^f" $arg2 (getalias $arg1)) [ _ds_guieditable_duel = [ guifield $arg1 -20 [ _ds_guieditable_duel = [@@@_ds_guieditable_duel] ] ] ] 0 ]
  480.  
  481. // Perpetual Loops: (2 in total)
  482. _ds_echoloop = [ if (&& $_ds_go (& $_ds_opts 1)) [ echo (_ds_duelstats) ; echo ":D:D" ] ; sleep (* $_ds_delay 1000) [ _ds_echoloop ] ]
  483. _ds_echoloop
  484.  
  485. _ds_isduel = [
  486.     if (>= (getmode)) [
  487.         count = 0
  488.         looplist i (listclients) [
  489.             if (! (isspectator $i)) [ count = (+ $count 1) ]
  490.         ]
  491.         _ds_go = (&& (= $count 1) (! (isspectator)))
  492.     ] [ _ds_go = 0 ]
  493.     sleep 5000 [ _ds_isduel ]
  494. ]
  495. _ds_isduel
  496.  
  497. // Gamehud:
  498. gamehud = [ _ds_getstats ]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement