资源说明:Chat generator for tremulous (primary for volt's HUD)
#+TITLE: Using of voltron #+AUTHOR: Olexandr Sydorchuk #+EMAIL: olexandr_syd [at] users.sourceforge.net #+STARTUP: showall * Overview Voltron is generator of chatmenu for different HUDs of several games (primary for tremulous and [[http://tremulous.net/forum/index.php?topic=8699.0][Volt HUD]] [fn:1]). Also allow you add own binds into config file, create message list and auto split file if need. ** Basic Usage: You need to have tcl to use voltron. Created configure file you must pass to voltron: #+begin_example %tclsh voltron.tcl yourconfig #+end_example You can use sample configure file [[http://github.com/osv/voltron/blob/master/volt.config.tcl.sample][volt.config.tcl.sample]] as your base configure file. Other example file you can find [[http://github.com/osv/config_files/tree/master/.tremulous/base/scr/][here]]. * Creating chat menu Configure file is [[http://www.tcl.tk][tcl]] source file. But don't worry, you don't need to learn this language for creating your menus. Below is example of simple menu: #+begin_src tcl -n -r set snd_menuoff sound/misc/menu3 set snd_menuon sound/misc/menu1.wav set 1. { {} {play $snd_menuon} (ref:all1) {Evolve "Evolve to:"} {} (ref:evolve) (ref:ali1) {Buy "Buy:"} {} (ref:hum1) {} {} (ref:spec1) } set 1.1. { "" {play $snd_menuoff} "Dretch" {class level0} "Construction Kit" {sell weapons;sell upgrades;buy ackit; buy ckit;itemact ackit;itemact ckit} } set 1.2. { "" {play $snd_menuoff} Basilisk {class level1} Rifle {sell weapons;sell weapons;buy rifle;itemact rifle} } #+end_src If you save this sample and run voltron to produce menu: #+begin_example %tclsh voltron.tcl yourconfig ==> Generate menu: Hud file: chatmenu_alien.cfg Hud file: chatmenu_human.cfg Hud file: chatmenu_spec.cfg ==> Generate exec scripts: EXEC script for all: chatmenu_install.cfg EXEC script team a: chatmenu_alien_install.cfg EXEC script team b: chatmenu_human_install.cfg EXEC script team s: chatmenu_spect_install.cfg % #+end_example After you must copy (if you not set [[vars][variables]] in your configure file before) created files in =ui/hud/common= for example. *If you don't use volt HUD* then you must include all =chatmenu_*.cfg= in your .menu file, and do exec command for one of *install.cfg files. It create next menus for different teams: | menu | team A (aliens) | team B (humans) | Spectator | | / | < | < | < | |--------+-----------------+---------------------+-----------| | root | Sub Menus: | Sub Menus: | | | | 1. Evolve | 1. Buy | | |--------+-----------------+---------------------+-----------| | menu 1 | Evolve to: | Buy: | | | | 1. Dretch | 1. Construction Kit | | | | 2. Basilisk | 2. rifle | | Full syntax of menu is: #+begin_example -r set X. { (ref:root) {MenuTextForAll MenuHeaderForAll} CommandForAll (ref:cmd4all) {MenuAlienText MenuHeaderForAlien} AlienCommands (ref:cmd4ali) {MenuHumText MenuHeaderForHuman} HumCommands (ref:cmd4hum) {MenuSpecText MenuHeaderForSpec} SpectatorCommands (ref:cmd4spec) } set X.Y. { MenuTextForAll CommandForAll MenuAlienText AlienCommands MenuHumText HumCommands MenuSpecText SpectatorCommands } #+end_example Here is list of 4 pairs: [[(cmd4all)][all]], [[(cmd4ali)][team a]] (aliens), [[(cmd4hum)][team b]] (humans), [[(cmd4spec)][spectator]]. First element of pair is name of menu item, second - command for it. If its a [[(root)]] menu item than first element is pair of name of menu item and header name of child submenu. Values of pair =all= is joined to other pairs. You can take different menu action for different teams, but you need to load that config files in some way. Voltron generate 4 install files: - =chatmenu_install.cfg= - it contain merged action for all teams. You can load him if you have no conflict commands. For example you have no several "say" command for different teams (i.e. you setup only =CommandForAll=). - =chatmenu_alien_install.cfg= - aliens specified commands, you may need load him when you _join_ to team; - =chatmenu_human_install.cfg= - humans specified commands, you may need load him when you _join_ to team; - =chatmenu_spect_install.cfg= - spectate specified commands, you may need load him when you _join_ to team; Example of usage =chatmenu_*_install.cfg= files is below: #+begin_src tcl set snd_menuoff sound/misc/menu3 set snd_menuon sound/misc/menu1.wav # menu example set 0. {{Join "Join:"} {play $snd_menuon} } set 0.1. {"Joint alien" {team aliens;exec ui/hud/common/chatmenu_alien_install.cfg;play $snd_menuoff}} set 0.2. {"Joint human" {team humans;exec ui/hud/common/chatmenu_human_install.cfg;play $snd_menuoff}} set 0.3. {"Joint spectate" {team spectate;exec ui/hud/common/chatmenu_spect_install.cfg;play $snd_menuoff}} # bind example, select spectate team bind F9 "team spectate; exec ui/hud/common/chatmenu_spect_install.cfg" #+end_src ** Customising You can use several variables and commands for configuring. *** =bind_keys= Keys for menu, default is {1 2 3 4 5 6 7 8 9 0 - =}. # <> *** =chatmenu_teama= Chat menu output file name for team A. Default is =chatmenu_alien.cfg=. *** =chatmenu_teamb= Chat menu output file name for team B. Default is =chatmenu_human.cfg=. *** =chatmenu_spect= Chat menu output file name for spectator. Default is =chatmenu_spec.cfg=. *** =chatmenu_install= Main chat menu install script that contain all merged binds for all teams. Default is =chatmenu_install.cfg=. *** =binds_teama_install= Script file for binds of team A (aliens). Default is =chatmenu_alien_install.cfg=. *** =binds_teamb_install= Script file for binds of team B (humans). Default is =chatmenu_human_install.cfg=) *** =binds_spect_install= Script file for binds of spectator. Default is =chatmenu_spect_install.cfg=) *** Template for menu You may set menu template different for all teams: - =menu_alien_tmpl=; - =menu_human_tmpl=; - =menu_spectator_tmpl=. Default is: #+begin_src tcl set menu_spectator_tmpl " rect 6 210 400 190 visible 1 decoration forecolor 45 45 45 1 textscale 0.25 autowrapped textstyle ITEM_TEXTSTYLE_SHADOWED" #+end_src *** Customize menu item You can specify prefix and suffix of menu item of chat menu for each team. This variables will be substituted with template of menu for each menu item. By default used prefixes and suffixes for vertical look: #+begin_src tcl set tmpl_a_prefix {} set tmpl_b_prefix {} set tmpl_s_prefix {} set tmpl_a_suffix {\n} set tmpl_b_suffix {\n} set tmpl_s_suffix {\n} # will create next menu look: # 1. \m/ # 2. Yakh # 3. Dekaruchaa! #+end_src To set horizontal look you need remove \n from default suffix: #+begin_src tcl # \[ because "[" and "]" are command substitute parents in tcl set tmpl_a_prefix " \[" set tmpl_b_prefix " \[" set tmpl_s_prefix " \[" set tmpl_a_suffix "\]" set tmpl_b_suffix "\]" set tmpl_s_suffix "\]" # will create next menu look: # [1. \m/] [2. Yakh] [3. Dekaruchaa!] #+end_src *** =backspace_cmd= additional command for BACKSPACE key (primary command is set root menu). Default =play sound/misc/menu4.wav= *** =fileSplitSize= Max file size before split. Quake have limits for cfg file size in 16k. To prevent fail load file will be split and used =exec= command. *** unbind Quake like unbind command. This command have lower prioritet vs bind command. *** unbindTeams Team specified unbind command. Format of command: #+begin_example unbindTeams key team_list #+end_example Where =team_list= is list of: - =ali=, =alien=, =a=, =1= -- alien team (team a) - =hum=, =human=, =b=, =2= -- human team (team b) - =spec=, =spectator=, =3= -- spectator team Example: #+begin_example unbindTeams v {hum ali} #+end_example #< > *** bind =bind= add additional key bind at end of install script, it similar to quake bind. *** bindTeams =bindTeams= is quake bind command, but team specified bind. Like menu you can load different =*_install.cfg= config file for different teams, and all binds with this command will be only for one of team. Format of command: #+begin_example bindTeams key { commandForAll commandForTeamA commandForTeamB commandForTeamSpec } #+end_example Example: bind INSERT key to spawn as *(Adv)graner* if you in [[(btalien)][alien]] team or spawn as *human* *builder* and take ckit if you are [[(bthuman)][human]]: #+begin_src tcl -r set snd_menuoff "sound/misc/menu3" bindTeams INS { {echo ^1Spawn as builder;play $snd_menuoff} {class builderupg;class builder} (ref:btalien) {class ackit; class ckit;sell weapons;sell upgrades;buy ackit; buy ckit;itemact ackit;itemact ckit} (ref:bthuman) {echo ^1You are spectate} } #+end_src *** seta Quake like =seta= command. *** setaTeams Quake like =seta= command but team specified =seta=. Format of command #+begin_example setaTeams var command team_list #+end_example Where =team_list= is list of: - =ali=, =alien=, =a=, =1= -- alien team (team a) - =hum=, =human=, =b=, =2= -- human team (team b) - =spec=, =spectator=, =3= -- spectator team Example: #+begin_src tcl # Wall Walk Auto Pitching setaTeams cg_wwFollow 0 {alien} #+end_src *** =postInstall= Text of install script that be at and. Default is volt's binds like sound control etc. You can easy add some stuff: #+begin_src tcl set postInstall "$postInstall // some addition stuf unbind v exec foobaar.cfg" #+end_src *** messages-from-file Create messages list that allow you cyclic run some command (default is "say" command). Format of command: =messages-from-file variable_name file_source file_dest execpath {prefix {}} {sufix {}} {command {"say"}}= - =variable_name= is quake var that you can use by =vstr variable_name= (good to bind some key to it); - =file_source= - source file of lines, file also will be searched in directory where configure file is located; - =file_dest= - generated configfile location; - =execpath= - quakebased path to file; - =prefix=, =sufix= - text that be concatenate before and after each line of text file; - =command= - action to each line of text file (default =say=); For example you wish to say different "hello". You have file =hello.txt=: #+begin_src tcl # comment is line that start with # Hi Hello Hola #+end_src In your config you can add: #+begin_src tcl messages-from-file Hello \ "hello.txt"\ "~/.tremulous/base/ui/hud/common/msg/hello.cfg" \ ui/hud/common/msg/alienjoin.cfg \ \o/( ) say # bind it to menu 9.9 set 9. {{Messages "Messages:"} {play sound/misc/menu1.wav} } set 9.9. { {} {} "Hello" "vstr Hello" } #+end_src * Footnotes [fn:1] It configured by default for creating =chatmenu_install.cfg= which is a part of volts's chatmenu, who is initial creator of this chat menu i don't know, but you can inform me :).
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。