AdminMod.de
https://www.adminmod.de/

Hmmm was laueft bei diesem timeraufruf falsch?
https://www.adminmod.de/viewtopic.php?t=2741
Seite 1 von 1

Autor:  Fad @ [ 28.04.2002, 18:35 ]
Betreff des Beitrags:  Hmmm was laueft bei diesem timeraufruf falsch?

Also ich will nach 10 sekunden die map zu map1 wechseln...
aber es klappt nicht...
Code:
public Mapwechsel(Timer,Repeat,HLUser,HLParam) 
       {
        new NewMap[MAX_NAME_LENGTH];
        convert_string(HLParam,NewMap,MAX_NAME_LENGTH);
        if(strlen(NewMap) != 0) {
        changelevel(NewMap);
        }
so sieht die function aus

Code:
set_timer("Mapwechsel",10,1,map1);
und so ruf ich sie auf...
warum klappts nicht?

Autor:  Warhead [ 28.04.2002, 18:48 ]
Betreff des Beitrags: 

Was kommt denn für ein Fehler ? Wie ist map1 deklariert ?

Autor:  Sir Drink a lot [ 28.04.2002, 19:25 ]
Betreff des Beitrags: 

Willst Du es als String an die Timerfunktion übergeben ? Dann mache noch in den Timer-Aufruf set_timer("Mapwechsel",10,1,HLParam=map1)

map1 muss dann sowas sein wie "de_dust".

Autor:  daRope [ 28.04.2002, 19:43 ]
Betreff des Beitrags:  Re: Hmmm was laueft bei diesem timeraufruf falsch?

Zitat:
warum klappts nicht?
Vielleicht sollltest Du mal sagen, "was" nicht klappt. "Geht nicht" ist keine Fehlerbeschreibung. Ich gehe natuerlich davon aus, dass Du bereits admin_debug 3 gesetzt hast, um die Timerfunktion im Log zu ueberpruefen.

Autor:  Fad @ [ 29.04.2002, 13:13 ]
Betreff des Beitrags: 

Jo stimmt..
über solche Fehlerbeschreibungen reg ich micht normalerweise selbst auf ;)

Also, ich glaub Sir hat den Fehler gefunden ich probiers gleich mal aus..

Autor:  [WING] Black Knight [ 29.04.2002, 16:11 ]
Betreff des Beitrags: 

Hmmm,
reicht nicht einfach die Angabe map1? Ich meine, dass das automatisch an HLParam weitergegeben wird.
Und braucht man für changelevel nicht noch eine Zeitangabe als 2. Parameter? Oder ist der optional?

Autor:  Warhead [ 29.04.2002, 16:18 ]
Betreff des Beitrags: 

Die HLParam Zuweisung in der Funktion bezieht sich nicht auf den Timeraufruf, sondern auf die lokal bzw. global deklarierte HLParam-Variable.

Autor:  Sir Drink a lot [ 29.04.2002, 16:48 ]
Betreff des Beitrags: 

Schon richtig.

Aber da er ja in seiner Timer-Funktion unbedingt HLParam haben will, muss er bei set_timer auch den HLParam übergeben, oder?

Ich habe es so gemacht und das HLParam in der Funktion mit Timeraufruf local definiert und dann nachher mit set_timer an die Timerfunktion übergeben.
Mit convert_string(HLParam,XXX,200) wieder local in die Timerfunktion an XXX übergeben. :-)

Klingt ein wenig durcheinander, glaube ich. Naja, ich hoffe, ihr versteht ungefähr wie ich es meine.

Man hätte es auch besser ein wenig globaler gestalten können. In dem Plugin, was er versucht, wäre es wahrscheinlich auch sinvoller.

*Oder hat Blacky nicht doch Recht :-)*

Autor:  Warhead [ 29.04.2002, 18:41 ]
Betreff des Beitrags: 

Hmm, ich hab nicht verstanden wie Du das meinst. Ein HLParam ist beim Aufruf von set_timer nicht nötig, genauso wenig wie HLParam global definiert sein muss. Wichtig ist nur das die richtige Parameter übergeben werden, also wenn gefordert wird String, dann String übergeben , bei Integer, Integer übergeben usw.
Selbst bei der Deklaration der Timer-Funktion benötigt man kein HLParam, denn Namen sind Schall und Rauch. Genausogut kann man da auch "QuakeParam" hinschreiben.

Autor:  daRope [ 29.04.2002, 19:25 ]
Betreff des Beitrags: 

Zitat:
Ich habe es so gemacht und das HLParam in der Funktion mit Timeraufruf local definiert und dann nachher mit set_timer an die Timerfunktion übergeben.
Mit convert_string(HLParam,XXX,200) wieder local in die Timerfunktion an XXX übergeben. :-)

Klingt ein wenig durcheinander, glaube ich. Naja, ich hoffe, ihr versteht ungefähr wie ich es meine.
Ein wenig?! :o

Autor:  Sir Drink a lot [ 29.04.2002, 20:26 ]
Betreff des Beitrags: 

Ich denke eben immer zu kompliziert und um 10 Ecken :oops:
Das muss ich mir mal abgewöhnen.

Aber ich will mich jetzt mal blamieren und erkläre es mal so, wie ich mir vorstelle, dass es funktioniert: (*Autsch...es tut mir leid Hr. Deutschlehrer*)

Definitiv ist doch zu diesem Plugin zu sagen, dass man gar keinen Param braucht.
Einfach map1 global definieren und in einer Funktion XYZ wird diese map1 gesetzt und in der Timerfunktion ABC verwendet.

Oder local in der Funktion XYZ map1 definieren und mit set_timer(x,10,1,map1) an die Timerfunktion ABC übergeben.
(Ich hoffe, ihm ist klar, was jetzt mit Integer oder String gemeint ist. In meinen Gedanken arbeite ich jetzt mal mit einem String.)

Die Daten dieser map1 stehen dann eben in dem HLParam der Timer-Funktion. Oder eben QuakeParam. Je nachdem, wie man die Timer-Funktion definiert hat.

Den convert_string braucht man nicht mehr machen.

So ist es doch richtig, oder? :oops: :oops:

Autor:  daRope [ 29.04.2002, 21:29 ]
Betreff des Beitrags: 

Doch, convert_string() ist noetig. Deswegen heisst es ja HLParam, damit man sich daran erinnert, dass das ein HL String ist, und keiner, den man einfach so verwenden kann.

Autor:  Warhead [ 29.04.2002, 21:31 ]
Betreff des Beitrags: 

Sofern map1 global ist, benötigt man in der Tat kein convert_string, sofern Du das gemeint hast. Sicher kann man mit globalen Variablen Programmierschwächen umschiffen, es geht aber auch anders... :D

Autor:  daRope [ 29.04.2002, 21:40 ]
Betreff des Beitrags:  Re: Hmmm was laueft bei diesem timeraufruf falsch?

Zitat:
Code:
set_timer("Mapwechsel",10,1,map1);
warum klappts nicht?
In diesem Falle ist es egal, aber Du solltest nochmal nachschlagen, wie set_timer() funktioniert. Kleiner Hinweis: der dritte Parameter heisst nicht umsonst Repeatcount.

Autor:  Sir Drink a lot [ 29.04.2002, 23:32 ]
Betreff des Beitrags: 

Ok. Ich habe es jetzt wenigstens verstanden :-)

Ich muss unbedingt mal meine Plugins überarbeiten. In allen ist eine 1000% Optimierung möglich :oops:

Seite 1 von 1 Alle Zeiten sind UTC+01:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/