Author |
Topic: Is it possible to terminate/kill a thread() |
s6robi |
General Member Since: Jun 12, 2006 Posts: 85 Last: Feb 18, 2021 [view latest posts] |
|
|
Category: CoD2 General Posted: Tuesday, Jan. 26, 2016 08:49 pm |
|
Hello everyone! I am wondering if there is a way to terminate/kill an existing thread()? For example:
Here is my code now:
main()
{
maps\_load::main();
level.allies_accuracy = 10;
level.axis_accuracy = 100;
thread setupplayer();
thread enemy();
thread obj1();
}
setupplayer()
{
level.player takeallweapons();
level.player giveWeapon("mp40");
level.player giveWeapon("luger");
level.player switchToWeapon("mp40");
level.player setViewmodel("xmodel/viewmodel_hands_german" );
}
enemy()
{
guys = getentarray("guy", "targetname");
for(i = 0; i < guys.size; i++)
guys
thread mission_failure();
}
obj1()
{
obj1 = getent("obj1", "targetname");
objective_add(1, "active", &"OASIS_OBJECTIVE_FOLLOW",getent("obj1marker", "targetname").origin);
objective_current(1);
obj1 waittill("trigger");
objective_state(1, "done");
obj1 delete();
thread obj2();
}
obj2()
{
terminate thread(enemy());
obj2 = getent("obj2", "targetname");
objective_add(2, "active", &"OASIS_OBJECTIVE_KILL_SNIPER",getent("obj2", "targetname").origin);
objective_current(2);
obj2 waittill("death");
objective_state(2, "done");
}
mission_failure()
{
self waittill("death");
setCvar("ui_deadquote", "@SCRIPT_MISSION_FAILURE_ALERTED_ENEMY");
maps\_utility::missionFailedWrapper();
}
I want to terminate/kill my "enemy()" thread after i complete the first objective so I can kill the German Soldier without failing the mission.
If anyone knows how this could be done, I would greatly appreciate it!
Thanks! |
|
|
|
|
|
s6robi |
General Member Since: Jun 12, 2006 Posts: 85 Last: Feb 18, 2021 [view latest posts] |
|
|
|
|
Category: CoD2 General Posted: Wednesday, Jan. 27, 2016 02:44 pm |
|
Well im not sure how your map works.
So correct me.
You are walking in the map. If you shoot somebody, mission is over.
If you walk further you have to kill somebody. If you shoot him, you win.
so in obj2() you have to kill that person to win.
So when you are in that part, let know that you in the final part.
Code: obj2()
{
level.ending = 1;
obj2 = getent("obj2", "targetname");
objective_add(2, "active", &"OASIS_OBJECTIVE_KILL_SNIPER",getent("obj2", "targetname").origin);
objective_current(2);
Now don't let the mission fail because you kill the objective
Code: enemy()
{
if(isdefined(level.ending) && level.ending == 1)
return;
guys = getentarray("guy", "targetname");
for(i = 0; i < guys.size; i++)
guys
thread mission_failure();
}
Something like that
|
|
|
|
s6robi |
General Member Since: Jun 12, 2006 Posts: 85 Last: Feb 18, 2021 [view latest posts] |
|
|
Category: CoD2 General Posted: Wednesday, Jan. 27, 2016 04:05 pm |
|
attachment: application(2.5Kb) |
Ahhh roger that, now I'm tracking.
So, I implimented that code into mine and I got an error saying:
"array is not an object" for self waittill("death");
Attached is my .map file, my .gsc and my .str files and my code is below too. I'm out of ideas on how to get this to work :(
#include maps\_utility;
#include maps\_anim;
#using_animtree("generic_human");
main()
{
maps\_load::main();
level.allies_accuracy = 10;
level.axis_accuracy = 100;
thread setupplayer();
thread enemy();
thread obj1();
}
setupplayer()
{
level.player takeallweapons();
level.player giveWeapon("mp40");
level.player giveWeapon("luger");
level.player switchToWeapon("mp40");
level.player setViewmodel("xmodel/viewmodel_hands_german" );
}
enemy()
{
if(isdefined(level.ending) && level.ending == 1)
return;
guys = getentarray("guy", "targetname");
for(i = 0; i < guys.size; i++)
guys
thread mission_failure();
}
obj1()
{
obj1 = getent("obj1", "targetname");
objective_add(1, "active", &"TESTING_OBJECTIVE_1",getent("obj1marker", "targetname").origin);
objective_current(1);
obj1 waittill("trigger");
objective_state(1, "done");
obj1 delete();
thread obj2();
}
obj2()
{
level.ending = 1;
obj2 = getent("obj2", "targetname");
objective_add(2, "active", &"TESTING_OBJECTIVE_2",getent("obj2", "targetname").origin);
objective_current(2);
obj2 waittill("death");
objective_state(2, "done");
}
mission_failure()
{
self waittill("death");
setCvar("ui_deadquote", "@TESTING_MISSION_FAILURE_ALERTED_ENEMY");
maps\_utility::missionFailedWrapper();
}
Ni3ls, I appreciate your help greatly! You think you'd be able to get this working for me?? This is the last piece of my puzzle to make my SP map awesome! Once I get this up code up and running I will be submitting my SP map to you and the rest of the Modsonline Community.
V/r,
Luke. |
|
|
|
|
Category: CoD2 General Posted: Thursday, Jan. 28, 2016 08:33 am |
|
Self (the player?) is not defined here.
Code: mission_failure()
{
self waittill("death");
Code:
for (i = 0; i < guys.size; i++)
guys thread mission_failure();
Why do you have that waittill("death")?
If you shoot the "guys" mission will be over right?
|
|
|
|
s6robi |
General Member Since: Jun 12, 2006 Posts: 85 Last: Feb 18, 2021 [view latest posts] |
|
|
|
|
|
s6robi |
General Member Since: Jun 12, 2006 Posts: 85 Last: Feb 18, 2021 [view latest posts] |
|
|
|
s6robi |
General Member Since: Jun 12, 2006 Posts: 85 Last: Feb 18, 2021 [view latest posts] |
|
|
|