Opferlamm-Clan Board
www.opferlamm-clan.de
Verantwortlich für diese bösen Machenschaften: siehe Impressum

Registrierung Kalender Mitgliederliste Suche Häufig gestellte Fragen Zur Startseite

Opferlamm-Clan Board » Call of Duty 4 » Fix-Dateien, Modding-Fragen, Scripting » Bots laufen und verfolgen lassen (Zombies) » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Bots laufen und verfolgen lassen (Zombies)
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
DarKMaGiiC
5-Minuten-Ei


Dabei seit: 17.07.2011
Beiträge: 12


Bots laufen und verfolgen lassen (Zombies) Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hey Leute

Ich habe ein Problem und zwar erstelle ich gerade einen ZombieMod. Ich erstelle diesen ohne Mod Tools und somit rein in den GSC Datein.
Nun zu meinem Problem:
Ich wollte es so machen das ich die TestClients der devs spawne und die mich dann halt verfolgen bzw. auf mich zu rennen.
Da habe ich mir gedacht da gebe ich doch den bots einen Aimbot so das sie mich ständig angucken.
Das hat auch geklappt nur weiß ich nicht wie ich sie nach vorne laufen lassen kann. Kann mir da wer helfen?
Wäre super wenn ihr noch ne Lösung dafür hättet das sie nicht durch Wände laufen und so. Sollen sich halt so wie normale Zombies verhalten wie wir es von den Zombie Mods so kennen.
Würde mich sehr über eine Lösung freuen!!
DarKMaGiiC ist offline Beiträge von DarKMaGiiC suchen Nehmen Sie DarKMaGiiC in Ihre Freundesliste auf
serthy
Codemeister


images/avatars/avatar-104.jpg


Dabei seit: 29.07.2010
Beiträge: 628


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

lade dir mal den meatbot runter, das is mit waypoints (sonst laufen die bots an die wände und bleiben stehen)
du könntest den meatbot so umfunktionieren, dass die bots keine waffen haben oder nur bashen
wenn du keine bots (testclients) nehmen willst oder die bots auch durch wände bewegen willst, musst du sie an ein script model linken und dann mit moveto bewegen

hier etwas zum basteln, orginal hab ich verloren (wegen virus musste xp neuinstallen..) aber wenn du die syntaxfehler hier korrigierst, geht es

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:

/*============================================================

		BOT ZOMBIE SCRIPT
			v.0.1(beta)

			by Serthy

============================================================*/

init()
{
	level.zombie = [];
	level.zombie["model"][0] = "xmodel/zombie";			precacheModel( level.zombie["model"][0] );
	level.zombie["model"][1] = "xmodel/charple";			precacheModel( level.zombie["model"][1] );

	level.zombie["skill"][0] = 1;
	level.zombie["skill"][1] = 1.5;
	level.zombie["skill"][2] = 3;

	level.zombie["damage"][0] = 15;
	level.zombie["damage"][1] = 20;
	level.zombie["damage"][2] = 30;

	level.zombie["damage_radius"][0] = 30;
	level.zombie["damage_radius"][1] = 50;
	level.zombie["damage_radius"][2] = 90;

	level.zombie["zombie"] = [];

	for( i = 0 ; i < level.zombie["amount"] ; i++ )
	{
		level.zombie["zombie"][i] = "none";
		level.zombie["zombie"][i].in_use = false;
	}
	
	thread zombie_WaitCvar();
}

/* bugged hier, man spawn nur zombies level 1, 2 3 4... schön der reihe nach, muss noch geändert werden */
zombie_WaitCvar()
{
	zombienum = 0;

	for( ; ; )
	{	
		wait 5;

		zombienum = getCvar( "zombie_amount" );

		if( zombienum > 0 )
		{
			for( i = 0 ; i < zombienum ; i++ )
			{
				id = zombie_GetFreeZombie();
				zombie_spawn( id );
			}
		}
	
		setCvar( "zombie_amount" , 0 );
	}
}

zombie_spawn( ID )
{
	spawnpointname = "mp_tdm_spawn";
	spawnpoints = getentarray( spawnpointname , "classname" );
	spawnpoint = zombie_getSpawnpoint( spawnpoints );

	zombie = spawn( "script_model" , spawnpoint.origin );
	zombie.id = id;
	zombie.skill = level.zombie["skill"][id];
	zombie.health = level.zombie["health"] * zombie.skill;
	zombie.targetname = zombie;
	zombie.target = zombie;
	zombie.targetteam = "allies";
	zombie.team = "axis";
	zombie.closestdist = 10000;
	zombie.angles = spawnpoint.angles;
	zombie hide();
	zombie setContents( 0 );

	zombie.trigger = spawn( "trigger_radius" , zombie.origin , level.zombie["damage"].range , level.zombie["damage"].range );
	zombie.trigger enableLinkTo();
	zombie.trigger linkto( zombie );

	zombie setmodel( level.zombie["model"][id] );

	zombie thread zombie_Remove();
	zombie thread zombie_Handle();
	zombie thread zombie_Kill();
	zombie thread zombie_LookingForTarget();
	zombie thread zombie_monitorDamage( zombie.trigger );
	zombie thread zombie_Motion();

	zombie notify( "zombie_spawn" );
}

zombie_GetFreeZombie()
{
	for( i = 0 ; i < level.zombie["amount"] ; i++ )
	{
		if( level.zombie["zombie"][i].in_use )
			continue;
		
		return i;
	}
}

zombie_Handle()
{
	while( isDefined( self ) )
	{
		self waittill( "zombie_spawn" );
		
		self show();
		self setContents( 1 );

		self waittill( "zombie_killed" , attacker );
	
		self thread zombie_GivePoints( attacker );

		self hide();
		self setContents( 0 );

		if( isDefined( self.trigger ) )
		{
			self.trigger unlink();
			self.trigger delete();
		}
		if( isdefined( self )
		{
			level.zombie["zombie"][self.id].in_use = false;
			level.zombie["zombie"][self.id] = "none";
			self notify( "delete_zombie" );
			wait 0.05;
			self delete();
		}
	}		
}

zombie_monitorDamage( trigger )
{
	self endon( "delete_zombie" );

	while( isDefined( self ) && isDefined( trigger ) )
	{
		trigger waittill( "damage" , iDamage , attacker );
		
		if( attacker.pers["team"] != self.targetteam )
			continue;

		if( iDamage < 1 ) 
			iDamage = 1;

		attacker thread maps\mp\gametypes\_damagefeedback::updatedamagefeedback();

		self.health -= iDamage;
		if( self.health <= 0 )
			self notify( "zombie_killed" , attacker );
	}
}

zombie_LookingForTarget()
{
	self endon( "delete_zombie" );

	while( isDefined( self ) )
	{
		wait 1;
		
		self thread zombie_NoHunter();

		targetplayers = [];

		players = getentarray( "player" , "classname" );

		for( i = 0 ; i < players.size ; i++ )
		{
			if( players[i].sessionstate == "spectator" || players[i].sessionstate == "dead" || players[i].pers["team"] == self.team )		
				continue;
			else
			{
				targetplayers[targetplayers.size] = players[i];
			}
		}
		for( i = 0 ; i < targetplayers.size ; i++ )
		{
			enemyeye = targetplayers[i] getEye() + ( 0 , 0 , 15 );
		
			dist = ( distance( self.origin , targetplayers[i].origin ) );
			trace = bullettrace( self.origin + ( 0 , 0 , 50 ) , enemyeye , false , undefined );

			if( dist < self.closestdist && trace["surfacetype"] == "none" )
			{
				self.target = targetplayers[i];
				self.closestdist = dist;
			}
		}
	}
}

zombie_Kill()
{
	self endon( "delete_zombie" );

	while( isDefined( self ) )
	{
		wait 0.05;

		if( self.closestdist <= level.zombie["damage_radius"][self.id] )
		if( isDefined( self.target ) && isAlive( self.target ) )
			self.target [[level.callback_playerdamage]]( undefined , undefined , level.zombie["damage"][self.id] , 1 , "MOD_SUICIDE" , "mp_zombie"  , self.origin , vectornormalize( self.origin , self.target.origin ) , "pelvis" , 0 );
}

zombie_Motion()
{
	self endon( "delete_zombie" );

	while( isDefined( self ) )
	{
		wait 0.05;

		speed = ( self.closestdist / 50 ) * self.skill;

		if( isDefined( self.target )  && self.target != self )
		{
			if( !isPlayer( self.target ) || !isAlive( self.target ) || self.target.pers["team"] != self.targetteam )
				continue;
	
			target_direction = vectorNormalize( ( self.target.origin[0] - self.origin[0] , self.target.origin[0] - self.origin[0] , self.target.origin[0] - self.origin[0] ) ); 
			self rotateTo( vectorToAngles( target_direction ) , 0.5 );

			self moveto( self.target.origin , speed , speed / 3 , 0 );
		}
	}
}

zombie_getSpawnpoint( spawnpoints )
{
	if( !isdefined( spawnpoints ) )
		return undefined;

	spawnpoint = undefined;

	for( i = 0 ; i < spawnpoints.size ; i++ )
	{
		j = randomInt( spawnpoints.size );
		spawnpoint = spawnpoints[i];
		spawnpoints[i] = spawnpoints[j];
		spawnpoints[j] = spawnpoint;
	}
	 
	for( i = 0 ; i < spawnpoints.size ; i++ )
	{
		spawnpoint = spawnpoints[i];
		if( !positionWouldTelefrag( spawnpoint.origin ) )
			break;
	}

	return spawnpoint;
}

zombie_GivePoints( attacker )
{
	attacker iPrintLnBold( "You killed Zombie #" + self.id );
}

zombie_NoHunter()
{
	numonteam = [];

	while( isDefined( self ) )
	{
		wait 1;

		players = getentarray( "player" , "classname" );

		for( i = 0 ; i < players.size ; i++ )
		{
			player = players[i];
			if( isDefined( player.pers["team"] ) && player.pers["team"] != "spectator" )
				numonteam[player.pers["team"]]++;
		}

		if( numonteam[self.targetteam] <= 0 )
		{
			for( i = 0 ; i < level.zombie["zombie"].size ; i++ )
			{
				if( level.zombie["zombie"][i] != "none" )
					level.zombie["zombie"][i] notify( "delete_zombie" );
			}
		}
	}
}

zombie_Remove()
{
	self waittill( "delete_zombie" );

	if( isDefined( self.trigger ) )
	{
		self.trigger unlink();
		self.trigger delete();
	}
	if( isdefined( self )
	{
		level.zombie["zombie"][self.id].in_use = false;
		level.zombie["zombie"][self.id] = "none";
		self notify( "delete_zombie" );
		wait 0.05;
		self delete();
	}
}

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von serthy: 18.07.2011 21:53.

serthy ist offline E-Mail an serthy senden Beiträge von serthy suchen Nehmen Sie serthy in Ihre Freundesliste auf
DarKMaGiiC
5-Minuten-Ei


Dabei seit: 17.07.2011
Beiträge: 12


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Danke für deine Antwort!

1.Also ich habe dein Script bei mir zum laufen gekriegt nur stehen auf der map die modelle rum. Bewegen sich aber nicht.

2.Kannst du mir zufällig sagen wie ich einen vernünftigen clip erzeuge per script? Ich habe zar ne möglichkeit aber bei der ist der clip immer so uneben und wenn ich dagegen laufe oder bzw. draufspringe wackelt es so komisch
DarKMaGiiC ist offline Beiträge von DarKMaGiiC suchen Nehmen Sie DarKMaGiiC in Ihre Freundesliste auf
serthy
Codemeister


images/avatars/avatar-104.jpg


Dabei seit: 29.07.2010
Beiträge: 628


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

collision per script zu spawnen geht nur auf 3 wegen:

1: trigger radius spawnen und setContents(1)
2: selbst ein model erstellen und LOD ganz hoch
3: im radiant ein clip brush erstellen und per script an die stellen bewegen

ohne download geht es nur mit trigger+setcontents, das ist wahrscheinlich dein weg, der 'wackelt'
serthy ist offline E-Mail an serthy senden Beiträge von serthy suchen Nehmen Sie serthy in Ihre Freundesliste auf
DarKMaGiiC
5-Minuten-Ei


Dabei seit: 17.07.2011
Beiträge: 12


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:

Original von serthy
collision per script zu spawnen geht nur auf 3 wegen:

1: trigger radius spawnen und setContents(1)
2: selbst ein model erstellen und LOD ganz hoch
3: im radiant ein clip brush erstellen und per script an die stellen bewegen

ohne download geht es nur mit trigger+setcontents, das ist wahrscheinlich dein weg, der 'wackelt'


ok danke dafür. Aber irgendwie muss es doch gehen das die bots laufen. In den ZombieMods werden ja WayPoints benutz. Das heist ja das die Zombies laufen können. Also muss es ja ein befehl geben das die bots laufen. Abgesehen davon, dass sie gegen Wände laufen, das interessiert mich erstmal nicht ^^
DarKMaGiiC ist offline Beiträge von DarKMaGiiC suchen Nehmen Sie DarKMaGiiC in Ihre Freundesliste auf
serthy
Codemeister


images/avatars/avatar-104.jpg


Dabei seit: 29.07.2010
Beiträge: 628


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

egal in welchen zombiemods, die bots 'laufen' nie!

sie werden an ein scriptmodel verlinkt, das sich von waypoint zu waypoint bewegt

ich werde morgen dir mein script mal verbessern, das neuere hab ich leider im moment nichtmehr, aber ein-zwei änderungen dann sollte der bot dir folgen (ich weiß, dass der fehler ziemlich klein und einfach zu beheben war)
jedoch wenn der bot bei dir ist, tötet er dich und bei jedem neuen spawn auch sofort aber wie gesagt morgen schreib ich einen kleinen neuen (unkomplizierteren)
serthy ist offline E-Mail an serthy senden Beiträge von serthy suchen Nehmen Sie serthy in Ihre Freundesliste auf
DarKMaGiiC
5-Minuten-Ei


Dabei seit: 17.07.2011
Beiträge: 12


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:

Original von serthy
egal in welchen zombiemods, die bots 'laufen' nie!

sie werden an ein scriptmodel verlinkt, das sich von waypoint zu waypoint bewegt

ich werde morgen dir mein script mal verbessern, das neuere hab ich leider im moment nichtmehr, aber ein-zwei änderungen dann sollte der bot dir folgen (ich weiß, dass der fehler ziemlich klein und einfach zu beheben war)
jedoch wenn der bot bei dir ist, tötet er dich und bei jedem neuen spawn auch sofort aber wie gesagt morgen schreib ich einen kleinen neuen (unkomplizierteren)


ok thx
DarKMaGiiC ist offline Beiträge von DarKMaGiiC suchen Nehmen Sie DarKMaGiiC in Ihre Freundesliste auf
DarKMaGiiC
5-Minuten-Ei


Dabei seit: 17.07.2011
Beiträge: 12


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:

Original von DarKMaGiiC

Zitat:

Original von serthy
egal in welchen zombiemods, die bots 'laufen' nie!

sie werden an ein scriptmodel verlinkt, das sich von waypoint zu waypoint bewegt

ich werde morgen dir mein script mal verbessern, das neuere hab ich leider im moment nichtmehr, aber ein-zwei änderungen dann sollte der bot dir folgen (ich weiß, dass der fehler ziemlich klein und einfach zu beheben war)
jedoch wenn der bot bei dir ist, tötet er dich und bei jedem neuen spawn auch sofort aber wie gesagt morgen schreib ich einen kleinen neuen (unkomplizierteren)


ok thx


will ja nicht drängeln aber wird das noch was?
DarKMaGiiC ist offline Beiträge von DarKMaGiiC suchen Nehmen Sie DarKMaGiiC in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Opferlamm-Clan Board » Call of Duty 4 » Fix-Dateien, Modding-Fragen, Scripting » Bots laufen und verfolgen lassen (Zombies)

Impressum ||Datenschutzerklärung

Forensoftware: Wbb - WoltLab GmbH || zum Archiv