.| Autor | Beitrag |
|---|---|
|
000 13.05.2008, 19:28 RikkuZooo |
Hier ist mein Tutorial um in HL1 denn Coop zu aktivieren. Zuerst oeffnen wir die triggers.cpp und suchen nach:
So das war der erste teil fuer denn Coop-Modus. Jetzt oeffnen wir die Datei multiplay_gamerules.cpp und suchen nach:
Dieser Beitrag wurde am 13.05.2008 um 19:32 von RikkuZooo bearbeitet. |
|
Profil || Suche |
|
001 13.05.2008, 20:05 Bluthund |
2 kleine Anmerkungen: 2. Wenn du den Default-Wert für mp_allowmonsters auf 1 setzt, brauchst du ihn nicht in der Config auf 1 setzen (auch nicht zur Sicherheit). Außerdem ist auch hier die globale Einstellung sicher nicht immer von Vorteil. Imho wäre ne Stelle im Code sinnvoll, die die CVar dann auf 1 setzt, wenn auch der Coop-Gamemode geladen wird (zB in der jeweiligen Init-Methode). Die cvar_t's sind ja global womit das auch kein Problem darstellen sollte, dass an passender Stelle zu realisieren. Alles in allem also zusammengefasst: The C language combines all the power of assembly language with all the ease-of-use of assembly language. |
|
Profil || Suche |
|
002 13.05.2008, 20:11 RikkuZooo |
Also ich hatte erst in der option in der game.cpp denn wert auf 1 bei
Dieser Beitrag wurde am 13.05.2008 um 20:14 von RikkuZooo bearbeitet. |
|
Profil || Suche |
|
003 13.05.2008, 20:34 Bluthund |
Wenn mp_allowmonsters auf 0 war nachdem du den Default-Wert geändert hast, muss an irgendeiner Stelle nach der Erstellung der CVar eine Belegung stattgefunden haben. Da müsste man dann nachzuforschen wo das war. Entweder im Code oder in geladenen Configdateien. Nope, da hast du mich falsch verstanden. An der Stelle in CChangeLevel::ChangeLevelNow() sollst du gar nichts ändern. Sondern im jeweiligen Ruleset. In deinem Fall wäre das die CHalfLifeMultiplay::IsDeathmatch(). Da müsstest du entsprechend FALSE zurückgeben um auch mitzuteilen, dass es sich bei diesem Spielmodus nicht um Deathmatch handelt. Denn diese Methode wird ja auch noch an anderen Stellen aufgerufen um festzustellen, um was für eine Art Spielmodus es sich handelt. Entsprechend werden dann auch Schritte ergriffen, um bestimmte Sachen einzustellen oder auszublenden (wie es halt normalerweise beim trigger_changelevel der Fall ist). Und nur weil gängige dm_ bzw ctf_ Maps keine trigger_changelevel enthalten, heißt das nicht, dass es nicht Leute gibt die trotzdem welche einbauen ;) Desweiteren kann man auch Maps für mehrere Zwecke nutzen. Zum Beispiel über eine Server-CVar welche den Spielmodus bestimmt. Nennen wir sie mal sv_gamemode mit den Werten 0 für DM, 1 für CTF und 2 für Coop. Dann wird vorm Gamerules spawnen gekuckt welchen Wert die CVar hat und dann entsprechend gespawned. Oder auch wie bei CS wo das ganze über spezielle Entities reguliert wird. Wie gesagt für deinen speziellen Fall mag das alles unrelevant sein aber in nem Thread der mit [Tutorial] getaggt ist, sollte man schon versuchen so allgemein wie möglich zu bleiben. edit: Wenn du aber in CChangeLevel::ChangeLevelNow() was änderst, sollte es vernünftigerweise nicht so: The C language combines all the power of assembly language with all the ease-of-use of assembly language. Dieser Beitrag wurde am 13.05.2008 um 20:41 von Bluthund bearbeitet. |
|
Profil || Suche |
|
004 13.05.2008, 20:45 RikkuZooo |
Achso meinst du das ja klar ist auch ne möeglichkeit :) danke wollte nur einen code adden damit leute auch einen coop spiele Edit: von daher will ich ja keinen deathmatch haben achso und by the way Dieser Beitrag wurde am 13.05.2008 um 21:33 von RikkuZooo bearbeitet. |
|
Profil || Suche |
|
005 13.05.2008, 21:26 Krifitze ![]() |
Du kannst das ja ins Wiki stellen, so im Forum bringt das noch nicht sehr viel. -- |
|
Profil || Suche |
|
006 13.05.2008, 21:34 RikkuZooo |
wenn du mir sagt wie das geht wollte schon andere tuts von mir in das thewall wiki adden... edit: Dieser Beitrag wurde am 13.05.2008 um 21:36 von RikkuZooo bearbeitet. |
|
Profil || Suche |
|
007 13.05.2008, 22:37 Bluthund |
Wie schon gesagt, für deine Zwecke sicher ok, aber als Tut sollte man das schon ein bisschen allgemeiner ausführen. Also den Teil hab ich jetzt ganz und garnicht verstanden. IsCoOp() ist doch bereits in der abstrakten Basisklasse CGameRules deklariert und sowohl für CHalfLifeRules als auch CHalfLifeMultiplay definiert/implementiert. Wieso willst/musst du die nochmals deklarieren? Und Krifitze meinte das thewall.de Wiki und nicht das WikiBoard The C language combines all the power of assembly language with all the ease-of-use of assembly language. Dieser Beitrag wurde am 13.05.2008 um 22:43 von Bluthund bearbeitet. |
|
Profil || Suche |
|
008 15.06.2008, 02:10 Masterbee |
Hi statt in: zu ändern kann man es gegen dies austauschen: Wenn man normalen sp spielt bemerkt man nichts. Wenn man ein MP Spiel aufmacht muss man nur coop 1 eingeben um denn coop richtig zu benutzen. -- |
|
Profil || Suche |


