ZFX
ZFX Neu
Home
Community
Neueste Posts
Chat
FAQ
IOTW
Tutorials
Bücher
zfxCON
ZFXCE
Mathlib
ASSIMP
NES
Wir über uns
Impressum
Regeln
Suchen
Mitgliederliste
Membername:
Passwort:
Besucher:
4462665
Jetzt (Chat):
10 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-

FAQ - Frequently Asked Questions - Bücher von Stefan Zerbst


Warum Funktionieren die Game-Bots im Kapitel 16 vom Kompendium nicht?

Die kurze Antwort auf diese Frage ist: "Bei der Erstellung der CD sind falsche Dateien in den Ordner von Kapitel 16 gekommen."

Die im Verzeichnis für Kapitel 16 vorliegenden Sourcen scheinen teilweise aus älteren Versionen der Engine zu stammen. Die Scriptsprache ZBL/0 an sich funktioniert, die aktuellste Version ist aber in einem anderen Verzeichnis auf der CD.

  1. die Version der ZBL/0 Virtual Machine (Library und Headerdateien), die im Projekt von Kapitel 16 benutzt wird, ist eine veraltete Version - die "richtige" Version ist im ZBL/0 SDK im Verzeichnisbaum unterhalb des Ordners Zb0 im Kapitel 16 Ordner enthalten.
  2. Das Botprogramm ist nicht identisch zu dem Programm, das im Kapitel 16 entwickelt wird - die ZBL/0 Programmbeispiele befinden sich ebenfalls unterhalb des Ordners Zb0 im Verzeichnis "Bot Programme". Der Quellcode zum im Buch entwickelten Bot ist in der Datei Programm_8.zbl.
  3. Der zblc Compiler für Botprogramme ist eine veraltete Version - die "richtige" Version ist auch hier im ZBL/0 SDK unterhalb des Zb0 Ordners zu finden.


Updates zum Kapitel 16 sind von der Errata-Seite des Kompendiums downloadbar.

Bugfix (Bots erschiessen sich selber)
Zitat:
in Datei CGameBot.h

Zeile 66 aendern zu
Code:
void    zb_doFire(void) {FireBullet(true);} // bugfix (bots shooting themselves)


in Datei CGameBot.cpp

Warnungen Beseitigen:

Zeile 268 aendern zu
Code:
SetSpeed(-1.8f);


Zeile 295 aendern zu
Code:
SetSpeed(1.8f);


Zielerkennung des Bots verbessern:

Zeile 403 aendern zu
Code:
int iReturn=0,jReturn=1,kReturn=0;


Zeilen 421 & 422 aendern zu
Code:
kReturn = zb_checkTargetAlive();
return (iReturn && jReturn && kReturn);


in Datei CGameCharacter.h

Zeile 71 aendern zu
Code:
HRESULT FireBullet(bool bIsBot=false)  { if (!IsFrozen()) return SendMsg_FireBullet(bIsBot); return ZFX_OK; }  // bugfix (bots shooting themselves)


Zeile 127 aendern zu
Code:
HRESULT SendMsg_FireBullet(bool); // bugfix (bots shooting themselves)


in Datei CGameCharacter.cpp

Zeile 231 aendern zu
Code:
HRESULT CGameCharacter::SendMsg_FireBullet(bool bIsBot) { // bugfix (bots shooting themselves)


Zeile 251 aendern zu
Code:
Bullet.bIsBot    = bIsBot; // bugfix (bots shooting themselves)