.| Autor | Beitrag |
|---|---|
|
000 23.08.2001, 21:01 DBug |
Ahoi ! Also ich hab mal mir ne Timer Klasse gemacht (gutes tut übrigens *gg*). Da ich die für einen Singleplayer mod brauche sollen natürlich nur manche Level "auf Zeit" gespielt werden. Deshalb habe ich mir überlegt, das in ein Entity reinzupacken. Gibt es vielleicht irgentwie sowas wie ein Level_info-Entity oder so, das in jedem level drin ist, und dem ich dann nur eine membervar hinzufügen muss ?? Oder muss ich da ein komplett neues entity machen ? -- |
|
Profil || Suche |
|
001 23.08.2001, 21:18 Archangel |
hmm.. nimm den worldspawn (CWorld), dann kannst du (mit entsprechendem fgd-eintrag) das zeitlimit unter map properties einstellen -- |
|
Profil || Suche |
|
002 23.08.2001, 22:49 apfelkorn |
schaumal bei CWorld::KeyValues. Da wird unter anderem abgefragt, welche Sky-Textur benutzt werden soll etc. Das kann man dann im WC - oh, sorry - in WC unter Map / Properities einstellen, vorausgesetzt, du hast es auch in deiner .fgd drin. -- |
|
Profil || Suche |
|
003 24.08.2001, 16:21 DBug |
@Archangel: Yo, genau das hab ich gesucht, thx :) ! @apfelkorn: hää ? Trotzdem thx ;) ! -- |
|
Profil || Suche |
|
004 26.08.2001, 15:57 DBug |
Hmm, hatte jetzt mal wieder Zeit und hab da n bisschen dranrumgefummelt. Also in der fgd is der Eintrag drin und er funzt in WC. Jetzt hab ich in der Keyvalues (ahh, das meintest du also, apfelkorn ;)) nen extra 'else if'-Block, der den Eintrag behandelt:
Jetzt das Prob: Da wo der Kommentar ist muss noch code hin, der die var 'timelimit' zum Client sendet. Ich nehme an, das geht irgentwie mit diesem MESSAGE_BEGIN Krams, aber wie ?? -- |
|
Profil || Suche |
|
005 26.08.2001, 16:28 TheTinySteini |
Guck z.B. mal in das Infrarot-NVG-Tutorial von Prefect, da hat er ziemlich gut erklärt, wie das mit den Messages funktioniert (wenn halt auch in nem anderen Zusammenhang). --TheTinySteini |
|
Profil || Suche |
|
006 26.08.2001, 22:00 DBug |
K, thx, das hab ich nun gemacht. VC++ macht auch keine Fehler, aber eine misteriöse Warnung: "unsichere Operation: kein Wert vom Typ 'bool' erweitert auf Typ 'const int' kann mit der angegebenen Konstante übereinstimmen" Das passiert bei folgendem code
(Da wo MapHasTimelimit = 120 (nur zum DBuggen) steht muss natürlich dann später der Kommentar hin) Allerdings funzt das net. In der client.dll is aber ne funktion zum annehmen der message, und DECLARE_MESSAGE und HOOK_MESSAGE gibs auch... Irgentjemand ne idee ? BTW: Is READ_BYTE und WRITE_BYTE für bool richtig ?? --Dieser Beitrag wurde am 26.08.2001 um 22:01 von DBug bearbeitet. |
|
Profil || Suche |
|
007 26.08.2001, 22:20 Retro |
P.S.: Wo gibt es das Tutorial? :D --shielding people from their own stupidity is an evolutionary step backwards anyway. /* God is dead!............Nietzsche */ |
|
Profil || Suche |
|
008 26.08.2001, 23:40 Mazze |
Ich bin mir nicht sicher, ob das stimmt. Mach da lieber noch Klammern hin: oder einfach: BattleTech-MOD: Dieser Beitrag wurde am 26.08.2001 um 23:41 von Mazze bearbeitet. |
|
Profil || Suche |
|
009 27.08.2001, 20:58 DBug |
Hmm, leider funzt es immer noch net. Das mit den Klammern bringt nix, und wenn ich das mit <= schreibe, dann kommt folgende Fehlermeldung: warning C4804: '<=' : unsichere Verwendung des Typs 'bool' in einer Operation Aber ich hab die var doch ausdrücklich als int deklariert... -- |
|
Profil || Suche |
|
010 27.08.2001, 22:24 Killing Me Softly |
1. if(MapHasTimelimit >= 0) müsste ohne Warnung funktionieren. Schau mal nach, ob du u.U. ein '!' übersehen hast. Der Horizont vieler Menschen ist ein Kreis mit Radius Null - und das nennen sie ihren Standpunkt. |
|
Profil || Suche |
|
011 28.08.2001, 15:46 DBug |
Hmm, das ganze wird ja ein Singleplayermod, wird da die client.dll auch erst nach CWorld::KeyValue geladen ?? edit: Denn bis jetzt is HL nicht abgekackt... --Dieser Beitrag wurde am 28.08.2001 um 15:47 von DBug bearbeitet. |
|
Profil || Suche |
|
012 28.08.2001, 18:19 Killing Me Softly |
Das HL noch nicht gecrasht ist liegt imho daran, das du noch keine Map geladen hast, in der bei 'worldspawn' 'TimeLimit' gesetzt war. Sag bescheid, falls ich mich irren sollte. Der Horizont vieler Menschen ist ein Kreis mit Radius Null - und das nennen sie ihren Standpunkt. |
|
Profil || Suche |
|
013 28.08.2001, 19:27 DBug |
lol, genau das is mir 1 Minute nach dem Posten auch eingefallen :) ! Also, du hast recht ! Übrigens funzt das mit den Klammern jetzt auch, ich muss das "!" also außerhalb der inneren Klammer machen... Naja, dann muss ich das mit der globalen var wohl mal probieren, schade dass es nicht einfacher geht :) ! -- |
|
Profil || Suche |
|
014 28.08.2001, 20:07 DBug |
Also, ich habs jetzt grad mal geändert: In der Keyvalue wird nur noch die globale variable iTimeLimit mit 120 (bzw. später mit dem aus Worldspawn gelesenen Wert) "gefüllt". Der ganze Unterscheidungskrams findet in der player.cpp --> UpdateClientData
Die zweite message gehört zum Timer-Tut... Jetzt das Prob: Wenn ich eine map starte, kommt: "Tried to create a message with a bogus message type (0)"... Was hat das zu bedeuten ?? EDIT: ROFL !! Ich kann ja die message auch einsparen, da ich ja sowieso schon unterscheiden kann, ob die MapTimelimit hat oder nicht. Wenn keine gmsgTimer message in der client ankommt, muss das timelimit deaktiviert sein...Naja, wenigstens hab ich n bisschen was über messages gelernt :)) Könnte mir vielleicht trotzdem jemand sagen was der Fehler zu bedeuten hat ? --Dieser Beitrag wurde am 28.08.2001 um 20:11 von DBug bearbeitet. |
|
Profil || Suche |
|
015 28.08.2001, 20:30 Killing Me Softly |
Das heisst einfach nur, das du vergessen hast, die Message zu registrieren. In der player.cpp muss in der Funktion void LinkUserMessages( void ) sowas stehen wie: gmsgTimerActivated = REG_USER_MSG("TimerActivated",1); Zu meiner Schande muss ich gestehen, dass ich nicht genau weiss, wie lange der Name sein darf ( 'TimerActivated in 'REG_USER_MSG()' ), ich weiss nur, das er nicht beliebig lang sein darf. Ich hab mir irgenwann einmal angewöhnt, nicht mehr als 10 Zeichen zu benutzen. Falls du also die oberen beiden Zeilen in deinem Code hast, dann würde ich mal einen kürzeren Namen für 'TimerActivated' nehmen (bzw. wie du schon gesagt hast, die Message ganz wegfallen lassen, da sie eigentlich nicht notwendig ist). --Der Horizont vieler Menschen ist ein Kreis mit Radius Null - und das nennen sie ihren Standpunkt. |
|
Profil || Suche |
|
016 28.08.2001, 21:11 Archangel |
maximum is iirc 12 zeichen, wenns länger is gibs nen |
|
Profil || Suche |
|
017 29.08.2001, 16:26 DBug |
Yo, das wars. Ich hatte die msg zwar registriert, aber war wohl zu lang. Allerdings habe ich ja die message sowieso ganz gestrichen, d.h. ich mache alles über die eine message, die schon beim Timer tut "dabei" war... -- |
|
Profil || Suche |
|
018 29.08.2001, 16:55 DBug |
So, kaum ist ein Prob gelöst kommt das nächste: Erstmal den code:
So. Das problem ist, das die ganze Zeit "You took too long" angezeigt wird, also der "else" block in der draw-funktion ausgeführt wird. Durch Con_Printf hab ich rausgefunden, das diese Funktion richtig arbeitet, da m_iRoundTime den Wert -100 hat. Allerdings darf das nicht sein, da ich iTimeLimit (serverseitig) zu DBug zwecken mit 90 initialisiert habe. Also hab ich über die "alert" Zeile rausgekriegt, das iTimelimit auch wirklich nicht -100 ist, und in der hl.dll der auch alles richtig abläuft. ==>> Also denke ich mir muss der Fehler vielleicht bei den messages liegen, dass die diesen Wert nicht korrekt übermitteln. Aber was muss ich ändern ??? (Hinweis: Die messages sind registriert, und sie funzten vorher auch...) thx :) ! --Dieser Beitrag wurde am 29.08.2001 um 16:57 von DBug bearbeitet. |
|
Profil || Suche |

