Page 1 of 2

scoreboard messages

Posted: Wed May 14, 2003 1:35 pm
by solar
How do I edit my script so when an objective is cleared it indicates as much with a message on the screen and changes the text on the right of the scoreboard??

setcvar

Posted: Wed May 14, 2003 2:00 pm
by tltrude
You just change them in your script. Below is an example that keeps score, if the two variables are updated.

Code: Select all

setcvar "g_obj_alliedtext3" ("Allies points: "+ level.allies_points)  // when player hits tab
	setcvar "g_obj_axistext3" ("Axis points: "+ level.axis_points)  // when player hits tab  

Posted: Wed May 14, 2003 5:50 pm
by solar
Yeah, that flew right over me and it doesn't address the pop-up message when the objective is cleared. I read this thread which is the only one I could find on the subject, tried it, but it didn't work.

viewtopic.php?t=2575&highlight=messages

Right now, I just have a basic scoreboard script and it looks like this:
main:

// set scoreboard messages
setcvar "g_obj_alliedtext1" "Blow the fuel farm"
setcvar "g_obj_alliedtext2" "Steal the plans"
setcvar "g_obj_alliedtext3" "Blow the test stand"
setcvar "g_obj_axistext1" "Protect the fuel farm"
setcvar "g_obj_axistext2" "Secure the plans"
setcvar "g_obj_axistext3" "Defend the test stand"
I have three objectives, two are exploders and one is a document. Can someone write the script for me please?

Posted: Wed May 14, 2003 6:02 pm
by nuggets
ahhh it's for DM

main:
setcvar "g_obj_alliedtext1" "Blow the fuel farm"
setcvar "g_obj_alliedtext2" "Steal the plans"
setcvar "g_obj_alliedtext3" "Blow the test stand"
setcvar "g_obj_axistext1" "Protect the fuel farm"
setcvar "g_obj_axistext2" "Secure the plans"
setcvar "g_obj_axistext3" "Defend the test stand"
end

//then on the triggers have setthread and the correct thread

fuel_farm:
if ( parm.other.dmteam == axis )
{
setcvar "g_obj_alliedtext1" "Blow the fuel farm"
setcvar "g_obj_axistext1" "Protecting the fuel farm [x]"
}
else
if ( parm.other.dmteam == allies )
{
if (( level.switch3owner == -1 ) || ( level.switch3owner == 0 )) //-1 meaning axis
{
setcvar "g_obj_alliedtext1" "The fuel farm has been blown [x]"
setcvar "g_obj_axistext1" "Depends if the fuel farm can be resecured"
}
}
end

//that kinda thing

Posted: Wed May 14, 2003 6:07 pm
by nuggets
or

fuel_farm:
if ( parm.other.dmteam == allies )
{
setcvar "g_obj_alliedtext1" "[x] Fuel farm destroyed [x]"
setcvar "g_obj_axistext1" "! Fuel farm destroyed !"
}

script

Posted: Thu May 15, 2003 6:53 am
by tltrude
post your whole script solar.

Posted: Thu May 15, 2003 2:03 pm
by solar
Here you go Tom. BTW, the hangar door script is your handiwork- thx as usual- you rock!
script:

main:
// set scoreboard messages
setcvar "g_obj_alliedtext1" "Blow the fuel farm"
setcvar "g_obj_alliedtext2" "Steal the plans"
setcvar "g_obj_alliedtext3" "Blow the test stand"
setcvar "g_obj_axistext1" "Protect the fuel farm"
setcvar "g_obj_axistext2" "Secure the plans"
setcvar "g_obj_axistext3" "Defend the test stand"
setcvar "g_scoreboardpic" "none

level waittill prespawn

//hangar door timing
$hangardoor1 time 4 // travel time in seconds
$hangardoor2 time 4
$hangardoor3 time 4
$hangardoor4 time 4
thread hanger_doors
//stop timing


//***Precache Dm Stuff
exec global/DMprecache.scr
level.script=maps/obj/cust_obj_test.scr
exec global/ambient.scr m1l3a
thread global/exploder.scr::main

level waittill spawn

//obj setup
level.defusing_team = "axis" // Axis like the bombs unplanted
level.planting_team = "allies" // Allies will try to plant the bombs
level.targets_to_destroy = 3 // Number of targets in this map
level.bomb_damage = 200 // Default damage of the bomb
level.bomb_explosion_radius = 2048 // Default radius of bomb blast

// Set the parameters for round based match
level.dmrespawning = 0 // 1 or 0 (0=no respawn)
level.dmroundlimit = 5 // round time limit in minutes
level.clockside = axis // set to axis, allies, kills, or draw

// level waittill roundstart // Comment out this line using '//' before it to be able to set the bomb when alone on the map ( just for testing )

$panel_bomb thread global/obj_dm.scr::bomb_thinker // "panel_bomb" is the targetname set on the bomb in MOHRadiant
$stand_bomb thread global/obj_dm.scr::bomb_thinker
thread desk_document_check
thread allies_win_bomb // Start the win check thread for allies
thread axis_win_timer // Start the win check thread for axis
end

// Allied victory test

allies_win_bomb:
while(level.targets_destroyed < level.targets_to_destroy) // While undestroyed objectives left
waitframe // chill out
teamwin allies // No objectives left allies win
end

// Axis victory test

axis_win_timer:
level waittill axiswin // At the end Axis win
end // end axis victory test


//------------------------------
// Document thread
//------------------------------

desk_document_check:

$documents_trigger waittill trigger // waits until triggered
local.player = parm.other
if (local.player.dmteam == axis)
{
goto desk_document_check
}
if (local.player.dmteam == allies)
{
$documents playsound snd_papers
wait .2
$documents hide // Make the document disappear
level.targets_destroyed ++ // adds 1 to the number of targets destroyed
}

end


//------------------------------
// Hanger doors thread
//------------------------------

hanger_doors:
$hangardoor_trigger waittill trigger
$hangardoor_trigger remove
$hangardoor_switch anim turn
$hangardoor_switch playsound alarm_switch
$hangardoor1 loopsound lighthouse_run
$hangardoor4 loopsound lighthouse_run

$hangardoor2 moveWest 336
$hangardoor2 move
$hangardoor3 moveEast 336
$hangardoor3 move

wait 4

$hangardoor2 moveWest 336
$hangardoor2 move
$hangardoor3 moveEast 336
$hangardoor3 move
$hangardoor1 moveWEst 336
$hangardoor1 move
$hangardoor4 moveEast 336
$hangardoor4 waitmove

$hangardoor1 loopsound lighthouse_run wait
$hangardoor4 loopsound lighthouse_run wait

end

Posted: Thu May 15, 2003 3:20 pm
by mohaa_rox
looking good. :wink: 8)

Posted: Thu May 15, 2003 7:21 pm
by nuggets
right i'll give u the general idea...

//------------------------------
// Document thread
//------------------------------

desk_document_check:

$documents_trigger waittill trigger // waits until triggered
local.player = parm.other
if (local.player.dmteam == allies)
{
$documents playsound snd_papers
wait .2
$documents hide // Make the document disappear
setcvar "g_obj_alliedtext2" "Plans Stolen!!! [x]"
setcvar "g_obj_axistext2" "You've lost the plans"
level.targets_destroyed ++ // adds 1 to the number of targets destroyed
}

/*don't use goto if the axis try to steel the plans, if they can't get hem it'll keep looping and hog up memory
*/
end

Posted: Thu May 15, 2003 8:12 pm
by solar
That works great nuggets, thx, Now, how about the two bomb obj's? I can't see how to apply the same idea for the exploders.

Also, anyone got an idea how to flash a message on screen when these objectives are met? I want it to do the same thing it does in "The Hunt" when it says, "Allies have breached the perimeter"- but instead say "Fuel Farm has been destroyed" and "Test Stand has been destroyed"

Posted: Fri May 16, 2003 12:40 am
by nuggets
put in the code

iprintlnbold_noloc "your message here"

(that's I P R I N Y L N B O L D ) not i print in bold as i previously though when starting scripting

you could create a trigger that matches the exploder triggers in size and give them setthread aswell,

then use pretty much the same code as b4

Posted: Fri May 16, 2003 1:16 am
by nihilo
you mean I P R I N T L N B O L D, right? :)

Posted: Fri May 16, 2003 6:18 am
by mohaa_rox
iprintlnbold

bomb control threads

Posted: Fri May 16, 2003 10:00 am
by tltrude
I think you need a goto nugget, or the trigger will be disabled by axis players. You could put in another "if" for axis that just prints a message and resets the trigger. The "waittill" stops the thread from looping.

---------------------------------------------------------------

For your bombs, you can set up threads that will set off exploders, animations, and print messages. Here are a couple for a map I made that should give you the idea.

Code: Select all

level waittill prespawn:

	thread bomb1_exploded $bomb1
	thread bomb2_exploded $bomb2
end

// --------------------------------------------
// "Bomb 1 Exploded"
// --------------------------------------------

bomb1_exploded local.bomb1:

while (local.bomb1.exploded != 1)  // (!) means "is not"

		wait .1
iprintlnbold_noloc "Axis have destroyed the Sherman tank!"
$exploder1smashed show  // homemade extra exploder stuff
$exploder1fire anim start  // exploder is set off in the map, not here

end

// --------------------------------------------
// "Bomb 2 Exploded"
// --------------------------------------------

bomb2_exploded local.bomb2:

	while (local.bomb2.exploded != 1)

		wait .1	
	thread global/exploder.scr::explode 1  // explodes #set 1
	$well_speaker playsound explode_water2
	iprintlnbold_noloc "Axis have renewed their water supply!!"

end
In the second thread the bomb sets off an exploder for a script_object well cover. The first thread just check to see if the tank has exploded. You may be wondering where "local.bomb2.exploded" gets changed form 0 to 1. Well, it's in the obj_dm.scr script (the bomb thinker does it).

Because these threads wait for a bomb to explode, You can put your "setcvar" lines in them to change the scoreboard when a bomb goes off.

Hope that helps!

Posted: Fri May 16, 2003 3:31 pm
by solar
Well, of course what I tried didn't work. I suk so bad at scripting :x Here's what I did. areas in yellow is what I added:

script
main:
// set scoreboard messages
setcvar "g_obj_alliedtext1" "[ ]Blow up the fuel farm"
setcvar "g_obj_alliedtext2" "[ ]Steal the plans"
setcvar "g_obj_alliedtext3" "[ ]Blow up the test stand"
setcvar "g_obj_axistext1" "Protect the fuel farm"
setcvar "g_obj_axistext2" "Secure the plans"
setcvar "g_obj_axistext3" "Defend the test stand"
setcvar "g_scoreboardpic" "none

level waittill prespawn

//***Precache Dm Stuff
exec global/DMprecache.scr
level.script=maps/obj/cust_obj_test.scr
exec global/ambient.scr m1l3a
thread global/exploder.scr::main

//------------------EDITED LINES--------------------
thread panelbomb_exploded $panel_bomb
thread standbomb_exploded $stand_bomb
end
//------------------CLOSE EDITED LINES---------------

level waittill spawn

//obj setup
level.defusing_team = "axis" // Axis like the bombs unplanted
level.planting_team = "allies" // Allies will try to plant the bombs
level.targets_to_destroy = 3 // Number of targets in this map
level.bomb_damage = 200 // Default damage of the bomb
level.bomb_explosion_radius = 2048 // Default radius of bomb blast

// Set the parameters for round based match
level.dmrespawning = 0 // 1 or 0 (0=no respawn)
level.dmroundlimit = 5 // round time limit in minutes
level.clockside = axis // set to axis, allies, kills, or draw

// level waittill roundstart // Comment out this line using '//' before it to be able to set the bomb when alone on the map ( just for testing )


$panel_bomb thread global/obj_dm.scr::bomb_thinker // "panel_bomb" is the targetname set on the bomb in MOHRadiant
$stand_bomb thread global/obj_dm.scr::bomb_thinker
thread desk_document_check
thread allies_win_bomb // Start the win check thread for allies
thread axis_win_timer // Start the win check thread for axis
end

//----------------------EDITED LINES-------------------
//panelbomb exploded
panelbomb_exploded local.panel_bomb:
while (local.panel_bomb.exploded != 1)
wait .1
iprintlnbold_noloc "Allies have destroyed the Fuel Farm!"
setcvar "g_obj_alliedtext1" "[X]Blow up the Fuel Farm"
setcvar "g_obj_axistext1" "Fuel Farm is destroyed"
end

//standbomb exploded
standbomb_exploded local.stand_bomb:
while (local.stand_bomb.exploded != 1)
wait .1
iprintlnbold_noloc "Allies have destroyed the Test Stand!"
setcvar "g_obj_alliedtext3" "[X]Blow up the Test Stand"
setcvar "g_obj_axistext3" "Test Stand is destroyed"
end
//----------------------CLOSE EDITED LINES--------------

// Allied victory test

allies_win_bomb:
while(level.targets_destroyed < level.targets_to_destroy) // While undestroyed objectives left
waitframe // chill out
teamwin allies // No objectives left allies win
end

// Axis victory test

axis_win_timer:
level waittill axiswin // At the end Axis win
end // end axis victory test


//------------------------------
// Document thread
//------------------------------

desk_document_check:

$documents_trigger waittill trigger // waits until triggered
local.player = parm.other
if (local.player.dmteam == allies)
{
$documents playsound snd_papers
wait .2
$documents hide // Make the document disappear
setcvar "g_obj_alliedtext2" "[x]Steal the Plans"
setcvar "g_obj_axistext2" "You've lost the plans"
level.targets_destroyed ++ // adds 1 to the number of targets destroyed
}

end
So, where did I go wrong?? Is there anything I have to do with the .map file itself?? I wouldn't think so. I would think this can be done with just scripting but who knows?