The Achievements Script - v1.0 stable
#31
When installed using the first method your file structure will look like this:

/config/tools.cfg
/config/achievements.cfg

and your autoexec will look something like this:

exec config\tools.cfg
exec config\achievements.cfg

If using the second method the file structure will look like this:

/config/tools.cfg
/scripts/achievements.cfg

...and the autoexec.cfg will look something like this:

exec config\tools.cfg
execdir scripts

The first method *can* be shortened to this in the autoexec.cfg by using the "run" command that flowtron mentioned:

run tools
run achievements

...the second method can be shortened to:

run tools
execdir scripts

HTH! :)
Thanks given by:
#32
I'm surprised you couldn't include nade multi-kills. All you'd have to do would be to start a timer from when a gib is registered, and count the amount of "you gibbed _____" messages displayed in that time.

The timer could be just below the time it takes to throw two nades in a row.
Thanks given by:
#33
The problem is that the messages for multi-nade kills show up instantaneously and it is impossible for cubescript's "conline" to catch them both. This was a problem in the MPL script as well.

There is currently no way of catching multi-nade gibs with cubescript until the devs give us a real counter ident for them.
Thanks given by:
#34
I'd love to see a way to handle simultaneous conline entries.
Thanks given by:
#35
Big F1 to that one V-Man, maybe a set of native aliases that are created/updated when multiple things are being written to the console simultaneously. One for accessing the various simultaneous lines, and another for returning the current number of conline "histories" for loops and such:

Example simultaneous console text:

Quote:bot5 fragged bot2
bot10 splattered bot4
you were fragged by bot3

Mega-pseudo-code:

loop x (numconline) [
  echo Conline history (concatword (+ $x 1) :) (conhistory (+ $x 1))
]

...would ideally output:

Quote:Conline history 1: you were fragged by bot3
Conline history 2: bot10 splattered bot4
Conline history 3: bot5 fragged bot2

"numconline" in this case being an ident that returns the number of conline "histories", and conhistory being the ident that returns the lines based on it's 1st argument. A feature like this would allow us to catch multiple console events with conline and fix the shortcomings of many scripts finally! :D
Thanks given by:
#36
Sound
A loud sound should play to give the player satisfaction.

A thought I had after a finishing a very challenging, challenge.
Thanks given by:
#37
Thats a good idea SplatZ, if anyone wants to provide me with a license friendly .ogg of a new satisfying sound people could hear when getting an achievement, I'd be happy to add that idea into the next version (otherwise I'll use a default sound, the whole thing will be optional of course). Which challenge was it, out of curiosity? :)
Thanks given by:
#38
It was the shotgun splatter streak
took soooo looong.
thats what she said

A thought i had was the yahoo yodel, but i guess that it wouldn't be liscence-friendly
Thanks given by:
#39
the flag score one might be a good default one to use. (though it could be annoying if you are actually playing in a flag mode)
Thanks given by:
#40
I think nice shot would be a good one also. Or maybe tick11.ogg from misc sounds.
Thanks given by:
#41
http://www.soundsnap.com/search/audio/win/score
this site has some pretty good ones. I'm pretty sure they are all free, too.
Thanks given by:
#42
I like this one: http://www.soundsnap.com/node/5287
Thanks given by:
#43
Trumpet noises? That would be alright
Or a TADA!

Nice script Bukz :)
I already like it, and I've only played half an hour. With a touchpad.
NOTE: It's really hard with touchpad!

I can see this becoming a good excuse to practice stuff that I wouldn't usually remember to practice

Thanks!
Thanks given by:
#44
@Lantry & SplatZ, that site does have some nice sounds yes, but it appears that none of them are free, and I'm not sure about the licensing either. :/

http://www.freesound.org is always a good place to look. An experienced sound mixer could probably throw something very nice together in a short amount of time, any volunteers?

*cough* GD *cough* :P
Thanks given by:
#45
http://www.freesound.org/samplesViewSingle.php?id=62176

What else needs to be done to that sound? It's not as if we need it voicecommed. Just gotta attribute. I heard this used on some science prof's YouTube videos.

edit: oh, I'll convert it (ogg/mono etc.)
edit: oh I gotta register
Thanks given by:
#46
GeneralDisarray is on the job for making the sounds for the next version. <333
Thanks given by:
#47
give it the 'acheivement unlocked' noise you get on the xbox 360...then again it would have licences and copyright all over it.
Thanks given by:
#48
Anything GD comes up with will likely blow those Microsoft nubs outta the water. :P
Thanks given by:
#49
In anticipation of the upcoming next release of the script, I've written a little "mini-tool" script for the achievements script that will allow you to save your current state, and load it again at a later date. It saves *almost* everything, everything really important anyway. :p

If "/save_achievement_state" is executed, before uninstalling the old/installing the new version of the script, your progress should be saved and you can load it by executing "/load_achievement_state" AFTER having installed the updated version. Using this script + method will hopefully allow people to save all the progress they have done so far with the script hassle-free! :D

Do note that this only works if saved.cfg is not deleted and it's temporary aliases that store the information are not modified/deleted.

// Mini save/load state script for "The Achievements Script" by DES|Bukz
// Saves almost all of your progress and allows you to load it again at a later date,
// however, it does depend on saved.cfg NOT being deleted or any of it's temporary
// aliases being modified/deleted afterwards! Simply creates a copy of the script's
// core aliases and updates them later on.
alias save_achievement_state [
  tmp_ach_level = $cur_achievement_level; tmp_pwn_bukz = $gave_pwned_bukz; tmp_ach_counter = $achievements_counter
  tmp_aass_stat = $assault_achievement_stat; tmp_asub_stat = $sub_achievement_stat; tmp_asni_stat = $sniper_achievement_stat
  tmp_acar_stat = $carbine_achievement_stat; tmp_asho_stat = $shotgun_achievement_stat; tmp_ausp_stat = $usp_achievement_stat; tmp_akil_stat = $kills_achievement_stat
  loop sasloop_1 5 [loop sasloop_2 3 [alias (format "tmp_gave_%1_%2" (at $achievement_acts $sasloop_1) (+ $sasloop_2 1)) (getalias (format "gave_%1_%2" (at $achievement_acts $sasloop_1) (+ $sasloop_2 1)))]]
  loop sasloop_3 (listlen $other_achievements_list) [loop sasloop_4 3 [alias (format "tmp_gave_%1_%2" (at $other_achievements_list $sasloop_3) (+ $sasloop_4 1)) (getalias (format "gave_%1_%2" (at $other_achievements_list $sasloop_3) (+ $sasloop_4 1)))]]
  echo saved your achievements progress, install the update and use /load_achievement_state to load your progress.
]
alias load_achievement_state [
  tmp_aalist = []
  cur_achievement_level = $tmp_ach_level; gave_pwned_bukz = $tmp_pwn_bukz; achievements_counter = $tmp_ach_counter
  assault_achievement_stat = $tmp_aass_stat; sub_achievement_stat = $tmp_asub_stat; sniper_achievement_stat = $tmp_asni_stat
  carbine_achievement_stat = $tmp_acar_stat; shotgun_achievement_stat = $tmp_asho_stat; usp_achievement_stat = $tmp_ausp_stat; kills_achievement_stat = $tmp_akil_stat
  loop lasloop_1 5 [loop lasloop_2 3 [alias (format "gave_%1_%2" (at $achievement_acts $lasloop_1) (+ $lasloop_2 1)) (getalias (format "tmp_gave_%1_%2" (at $achievement_acts $lasloop_1) (+ $lasloop_2 1)))]]
  loop lasloop_3 (listlen $other_achievements_list) [loop lasloop_4 3 [alias (format "gave_%1_%2" (at $other_achievements_list $lasloop_3) (+ $lasloop_4 1)) (getalias (format "tmp_gave_%1_%2" (at $other_achievements_list $lasloop_3) (+ $lasloop_4 1)))]]
  set_achievement_levels
  sleep 100 [add2list tmp_aalist "tmp_ach_level tmp_pwn_bukz tmp_ach_counter tmp_aass_stat tmp_asub_stat tmp_asni_stat tmp_acar_stat tmp_asho_stat tmp_ausp_stat tmp_akil_stat"; loop csaaloop_1 5 [loop csaaloop_2 3 [add2list tmp_aalist (format "tmp_gave_%1_%2" (at $achievement_acts $csaaloop_1) (+ $csaaloop_2 1))]]; loop csaaloop_3 (listlen $other_achievements_list) [loop csaaloop_4 3 [add2list tmp_aalist (format "tmp_gave_%1_%2" (at $other_achievements_list $csaaloop_3) (+ $csaaloop_4 1))]]; loop csaaloop_5 (listlen $achievement_aliases_5) [add2list tmp_aalist (format "tmp_%1" (at $achievement_aliases_5 $csaaloop_5))]; addlistonquit (concat $tmp_aalist tmp_aalist)]
  echo loaded your achievements progress
]
docsection [Save/Load Achievements];
docident [save_achievement_state] [Saves your current achievements progress to be loaded at a later date];
docremark [Depends on "saved.cfg" not being deleted or its temporary aliases being modified/deleted.];
docident [load_achievement_state] [Loads the last achievements state that "/save_achievement_state" saved.];
docremark [If never executed before, a "/save_achievement_state" is required before attempting to use this command!];
addlistonquit [load_achievement_state save_achievement_state]

The update is nearly ready and is mostly just awaiting some final touches/completed sounds. Thats right, plural. :D

mod edit: user warned for double posting
mod edit: y no warning tho D:
mod edit: you asked for it
Thanks given by:
#50
ty so much! now i can change my saved.cfg to delete scripts completely without losing my achievement progress :D
does it continue the track of how many enemies you have killed for the duration of the script still?
Thanks given by:
#51
You still have to be careful with saved.cfg, as you could delete the backup script or the backups, etcetc.
Thanks given by:
#52
Oh, wait I didn't follow the 1st rule of the internet (and youtube),
read the full post.
Thanks given by:
#53
The good thing is, many scripts are so called self contained and clear themselves on exit, so that they don't go into saved.cfg. tools.cfg is an example.
Thanks given by:
#54
Could you explain that in lay-man's terms gibstick? It sounds interesting but makes no sense to me.
Thanks given by:
#55
it means (correct me if i explain this wrong) that the script is only stored in the computer's RAM while the game is playing, while some scripts get stored in saved.cfg. if you open up your saved.cfg and take a look at it, you will probably see a big list of variables (alias) with occasional code interspersed throughout. for example, the sauerzoom script is stored in saved.cfg, you can find it by using the find tool in whatever text editor you use.

A question i have: what is the difference between self contained scripts and scripts that aren't self contained (whatever you call them)? what is the difference between the two that causes one to be stored in saved.cfg?
Thanks given by:
#56
then the script is in two places on your hard drive.
The point in deleting aliases is to go easy on your RAM. When the game first loads, reading every-single-gosh-darn-script twice (once in saved.cfg and then again in the script cfg file) is going to make your client more prone to errors like the alias forgetting bug (haven't had a problem with that lately, actually).
It also helps keep saved.cfg relatively "clean" when you have to go trudging through it for debugging.
Which leads me to this point: Don't code a self-cleaning script (deleting its aliases on quit) until you can operate it flawlessly and have no need for debugging at all.
Blah blah blah when I was your age; scripting uphill both ways, etc.
Thanks given by:
#57
When I was your age we didn't have checkalias, and an uninitialized alias would crash Mac clients. AHUASHUASHUAS.
Thanks given by:
#58
When I was your age, DAMMIT, I ONLY GOTS ME DE V-MAN AND DE BUKZ AND DE GIBSTICK TO DOOZ ALL TEH SCRIPTIN FO ME.
Thanks given by:
#59
wouldnt it be cool if you got a kill streak then it would pop up on ur screen in medium sized letters what you got eg. 2 kills in a row = double kill 3 kills in a row = multikill 4 kills in a row= Ultrakill ????
wouldnt it be cool if you got a kill streak then it would pop up on ur screen in medium sized letters what you got eg. 2 kills in a row = double kill 3 kills in a row = multikill 4 kills in a row= Ultrakill ????
Thanks given by:
#60
DOUBLE POST KILL
Thanks given by: