| |
| Teamkampf im MorgenGrauen |
| ========================= |
| |
| Zum Teamkampf im MG gehoeren zwei Objekte: Das Lebewesen, das im Team ist, |
| sowie das Teamobjekt. Ersteres erbt seine Funktionalitaet aus |
| |
| /std/living/team.c |
| |
| das Teamobjekt ist ein clone von |
| |
| /obj/team.c |
| |
| Allerdings sollte man immer das #define fuer diesen Pfad nutzen, welches |
| in /sys/living/team.h definiert ist: TEAM_OBJECT |
| |
| Darueberhinaus gibt es in diesem Verzeichnis noch den Teammaster. |
| |
| |
| Alle relevanten Funktionen und Properties sind im Teammitglied abrufbar und |
| liefern Informationen ueber den Teamkampf. |
| |
| |
| UEBERSICHT ueber die Properties und Funktionen des Teamkampfs |
| ============================================================= |
| |
| Properties des Teammitglieds: |
| ---------------------------- |
| P_TEAM - Teamobjekt |
| P_TEAM_NEWMEMBER - Spieler moechte ins Team hiervon aufgenommen werden. |
| P_TEAM_ATTACK_CMD - Angriffsbefehl des Spielers, nicht setzbar. |
| P_TEAM_AUTOFOLLOW - Folgewunsch des Spielers, nicht setzbar. |
| P_TEAM_WANTED_ROW - Gewuenschte Reihe des Spielers. |
| P_TEAM_WIMPY_ROW - Fluchtreihe des Spielers. |
| P_TEAM_LEADER - Spieler ist Anfuehrer dieses Teams. |
| P_TEAM_ASSOC_MEMBERS - Alle zugeordneten NPCs bzw. der Spieler dem dieser |
| NPC zugeordnet ist. |
| P_TEAM_COLORS - Grenzwerte fuer farbige Anzeige. |
| |
| Funktionen des Teammitglieds: |
| ---------------------------- |
| TeamPrefix() - "[Team Teamname] " falls Teammitglied, "" sonst. |
| IsTeamLeader() - Test ob Spieler Anfuehrer eines Teams ist. |
| IsTeamMove() - Test ob Angriffsbewegung gerade ausgefuehrt wird. |
| TeamMembers() - Teammitglieder. |
| PresentPosition() - Aktuelle Reihennummer des Spielers. |
| PresentTeamPositions() - Reihennummern aller anwesenden Teammitglieder. |
| PresentTeamRows() - Reihen aller anwesenden Teammitglieder. |
| PresentEnemyRows() - Reihen aller anwesenden Feindteams zusammen. |
| SelectNearEnemy() - Waehlt direkt angreifbaren Feind aus. |
| SelectFarEnemy() - Waehlt Feind aus hinteren Reihen aus. |
| InsertEnemyTeam() - Macht alle Mitglieder von Team des Feindes zu |
| Feinden aller Mitglieder des eigenen Teams. |
| AssocMember() - Assoziiert einen HilfsNPC mit einem Spieler. |
| DeAssocMember() - Hebt Assoziation zwischen NPC und Spieler auf. |
| TeamFlee() - Spieler wird veranlasst in Fluchtreihe zu wechseln. |
| |
| Funktionen des Teamobjekts: |
| -------------------------- |
| SwapRows() - Spieler tauschen die Reihen |
| |
| |
| BEISPIEL: |
| Man moechte von einem Spieler, welcher sich in einem Team befindet, alle |
| Teammitglieder sowie deren Anzahl ermitteln, die VOR diesem Spieler stehen. |
| |
| Im abfragenden Objekt muss man zunaechst die Headerdatei des Teamkampfs |
| includen: |
| |
| #include "/sys/living/team.h" |
| |
| |
| void fun( object pl ) |
| { |
| int act_row,all; |
| mixed *rows; |
| object team,*team_members; |
| |
| team=pl->QueryProp(P_TEAM); // liefert das Teamobjekt |
| |
| act_row=pl->PresentPosition(); // aktuelle Position ermitteln |
| |
| team_members=({}); |
| |
| if ( objectp(team) && (act_row > 1) ) |
| { |
| rows=team->PresentRows(ENV(pl)); // die Reihen werden als mixed-array |
| // uebergeben |
| |
| foreach ( int i : act_row ) |
| team_members+=rows[i]; // die Reihen werden komplett ins |
| // neue Array uebertragen |
| } |
| |
| all=sizeof(team_members); // Anzahl der Teammitglieder, die |
| // vor dem Spieler stehen |
| } |
| |
| |
| SIEHE AUCH: |
| Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD, |
| P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER, |
| P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW |
| Bewegung: IsTeamMove, TeamFlee |
| Mitglieder: IsTeamLeader, TeamMembers |
| Kampf: AssocMember, DeAssocMember, InsertEnemyTeam |
| SelectNearEnemy, SelectFarEnemy |
| Positionen: PresentPosition, PresentRows, PresentEnemyRows, |
| PresentTeamPosition, SwapRows |
| Sonstiges: TeamPrefix, teamkampf_intern |
| |
| ---------------------------------------------------------------------------- |
| Last modified: 16-08-2010, Gabylon |