Ein neues Thema erstellen  Auf das Thema antworten  [ 57 Beiträge ]  Gehe zu Seite Vorherige 1 2 3
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: 21.06.2002, 18:17 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Nein. Das ist eine Anregung, den Code ordentlich zu formatieren, damit man Fehler besser erkennt. Und die Warnung, dass vielleicht einer passiert sein koennte.

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 21.06.2002, 18:18 

Registriert: 31.12.2001, 01:00
Beiträge: 514
Wohnort: Lüneburg
ja da versucht er immer deine festplatte zu formatieren :lol:

aber da steht ja nur warning also is das nich so schlimm :lol:

_________________
Geht nich, gibs nich: Suchen, FAQ
www.cola-clan.de - Whiskey@cola-clan.de


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 21.06.2002, 21:56 

Registriert: 08.01.2002, 19:41
Beiträge: 74
Wohnort: Minos Korva (11 Lichtjahre vom McAlister C5 Nebel)
??? ich hab keine warnings beim compilieren ???


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 21.06.2002, 23:51 

Registriert: 12.06.2002, 16:13
Beiträge: 62
Smudo, diese Warnings müssen nicht notwendigerweise von deinem Code ausgehend sein.

Es wird ja nur die Formatierung bemängelt, und die kann durchaus Ergebnis eines unglücklichen Copy & Paste - Vorgangs sein.

No need to worry about :wink:


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 22.06.2002, 01:49 

Registriert: 04.04.2002, 18:49
Beiträge: 148
naja solange das nichts ist wo ich angst bekommen muss :lol:
is ja egal


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 22.06.2002, 09:39 

Registriert: 08.01.2002, 19:41
Beiträge: 74
Wohnort: Minos Korva (11 Lichtjahre vom McAlister C5 Nebel)
OK, ich weiss, Warnings sind nicht unbedingt schlimm aber ich versuche trotzdem eigentlich immer diese Meldung zu vermeiden, was mir mir bisher auch immer gelungen ist. Deshalb wundert es micht etwas, dass er diese Warnings hat.
Aber das Plugin läuft jetzt seit einer Woche ohne das mir ein Fehler aufgefallen ist. Aehhhh, doch, einmal hatte jemand einen Frag weniger als das Plugin angezeigt hat. Also wird der Spieler irgendwann einen Punkt abgezogen bekommen haben. Die Frage ist nur wann? Wann bekommt man einen Punkt abgezogen ausser beim TK?


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 22.06.2002, 10:53 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
Diese Code"verzerrung" entsteht nur beim Posten.

Zu der internen Anzeige der Kills in CS kann ich nur sagen, dass es mir manchmal so vorkommt, als vergisst CS einfach zu zählen.
Das passiert dann, wenn gerade viel auf dem Server los ist . Da kann man nix machen.
Aber das ist jetzt auch nur eine Theorie von mir.

_________________
Fehleranalyse: Poste den Inhalt Deiner liblist.gam, (listen)server.cfg, adminmod.cfg, users.ini, vault.ini, plugin.ini von adminmod und plugins.ini von metamod. Benutze auch die Such-Funktion


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 22.06.2002, 11:08 

Registriert: 12.06.2002, 16:13
Beiträge: 62
Da ich mit CStrike mit Beta 4 aufgehört habe, kann ich das nicht direkt bestätigen.

Aber bei TFC ist es definitiv so, daß seit Ewigkeiten dort die Punkteübersicht buggy ist. Auf dem Server scheint sie korrekt zu sein, nur wird die Information nicht korrekt an die Clients geschickt und/oder von diesen falsch interpretiert.

So bekommt z.B. das blaue Team, wenn das rote gerade mehrere Flags ergattert hat, die Punkte zugeschrieben.

Daß die Information auf dem Server jedoch korrekt ist, schließe ich daraus, daß sich die Punkteanzeige nach ein paar Minuten öfters mal wieder korrigiert.

Ich schaue mir deinen Code trotzdem nochmal an, vielleicht hat sich ja doch noch irgendwo ein Käfer versteckt.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 22.06.2002, 12:28 

Registriert: 12.06.2002, 16:13
Beiträge: 62
So, noch mal komplett durchgelesen. Käfer hab ich eigentlich nicht gefunden.

Was mir aufgefallen ist (Zeilenangaben wg. Copy&Paste nur ungefähr):

<57-80>
Kann Data[0] noch andere Werte annehmen als '0'..'2'?
Wenn nicht, die if's entfernen und durch Zuweisungen der Form variable = Data[0] - '0'; ersetzen.

<120>
Doppelaufruf von playerinfo ist mir unverständlich. Wieso wird das einmal mit MAX_DATA_LENGTH und einmal mit MAX_NAME_LENGTH aufgerufen?
Prüfen, ob man den ersten playerinfo-Aufruf nicht weglassen kann.

<141>
Verschachtelung der 2 if's durch && auflösen

<150>
iTeamV == iTeamA unnötig, if durch else ersetzen

<159-236>
In diversen if's werden mehrfach Variablen auf gleichen Wert geprüft:
Code:
 if (HSCount[ iIDA ]>highScore && ...
 ...
 else if(HSCount[ iIDA ]>highScore && ...
Ebenso werden für teilgleiche Fälle teilgleiche Aktionen durchgeführt.
-> Verschachtelte if-Struktur könnte hier Mehrfachprüfungen & doppelte Anweisungen einsparen.

<280>
Unnötig kompliziertes if. Ersetzen durch
Code:
if(strcmp("Round_Start", Data) == 0 && FBSwitch == 1)
{
    fbStatus = 1;
}
<300>
Hm, da sinds mal wieder meine mangelnden Small-spezifischen Kenntnisse... Kann man an so einer Stelle nicht array = { 0, ... } schreiben, statt das in einer Schleife zu nullen? Oder geht das nur einmalig bei der Initialisierung?


Wenn du einen Punkt als Stilfrage empfindest, einfach ignorieren...


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 22.06.2002, 18:50 

Registriert: 08.01.2002, 19:41
Beiträge: 74
Wohnort: Minos Korva (11 Lichtjahre vom McAlister C5 Nebel)
Also...
Zitat:
<57-80>
Kann Data[0] noch andere Werte annehmen als '0'..'2'?
Wenn nicht, die if's entfernen und durch Zuweisungen der Form variable = Data[0] - '0'; ersetzen.
hmmm, ich glaube das geht nicht da Data[0] ein string enthält und die Variable ein Integer ist. Oder sehe ich das falsch?

Zitat:
<120>
Doppelaufruf von playerinfo ist mir unverständlich. Wieso wird das einmal mit MAX_DATA_LENGTH und einmal mit MAX_NAME_LENGTH aufgerufen?
Prüfen, ob man den ersten playerinfo-Aufruf nicht weglassen kann.
Also es muesste eigentlich gerade der erste stehen bleiben. Was mit dem 2ten Aufruf geprueft werden soll weiss ich auch nicht. Habs aus dem Originalcode übernommen (den ich eigentlich nur mal gerade ein wenig ändern wollte) und mir gedacht ich lass es erstmal so.

Zitat:
<141>
Verschachtelung der 2 if's durch && auflösen
Könnte man machen aber es funzt so genaus so gut und ist übersichtlicher, da die && Verknüpfung recht lang werden würde. Ausserdem ebenfalls aus dem Original übernommen :)

Zitat:
<150>
iTeamV == iTeamA unnötig, if durch else ersetzen
Jo, hab ich mal gemacht.

Zitat:
<159-236>
In diversen if's werden mehrfach Variablen auf gleichen Wert geprüft:
Ja, aber immer in Verbindung mit anderen && Verknüpfungen. Hat lange genug gedauert bis die Logik so funktioniertie. Jetzt wo sie fertig ist könnte man sie aber bestimmt noch verbessern. Werde ich mir noch mal ansehen. Das kommt dabei heraus wenn mann einfach so ohne Konzept drauf los programmiert :)

Zitat:
<300>
Hm, da sinds mal wieder meine mangelnden Small-spezifischen Kenntnisse... Kann man an so einer Stelle nicht array = { 0, ... } schreiben, statt das in einer Schleife zu nullen? Oder geht das nur einmalig bei der Initialisierung?
Keine Ahnung!

Auf jeden Fall läuft es dank deiner Hilfe schon mal super und wenn mir nicht noch ein ganz krasser Fehler auffällt werde ich es wohl so lassen.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 22.06.2002, 20:03 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Zitat:
<300>
Hm, da sinds mal wieder meine mangelnden Small-spezifischen Kenntnisse... Kann man an so einer Stelle nicht array = { 0, ... } schreiben, statt das in einer Schleife zu nullen? Oder geht das nur einmalig bei der Initialisierung?
Ich meine, dass das nur bei der Initialisierung geht. Weiss ich jetzt nicht genau, aber ich denke das ist so. Muesste man mal testen.

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 22.06.2002, 21:19 

Registriert: 12.06.2002, 16:13
Beiträge: 62
Zitat:
Zitat:
<57-80>
Kann Data[0] noch andere Werte annehmen als '0'..'2'?
Wenn nicht, die if's entfernen und durch Zuweisungen der Form variable = Data[0] - '0'; ersetzen.
hmmm, ich glaube das geht nicht da Data[0] ein string enthält und die Variable ein Integer ist. Oder sehe ich das falsch?
Also wenn Data ein String ist, dann ist Data[0] ein Integer, genauso wie '0', 'a', '?' und '^n' auch Integer sind. Wenn es keine Integer wären, könntest du das ja gar nicht mit == vergleichen.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 23.06.2002, 00:01 

Registriert: 08.01.2002, 19:41
Beiträge: 74
Wohnort: Minos Korva (11 Lichtjahre vom McAlister C5 Nebel)
Ich vergleiche ja auch nicht die Variable mit dem String.
Data[0] enthält einen String (mit einem Zeichen), den ich mit dem String '0' ... '2' vergleiche.
Anhand des Ergebnisses wird ein Integer in eine Variable (z.B. FBSwitch) geschrieben oder auch nicht.

Wenn das nicht richtig ist, verbesser mich. Ich habs halt nie gelernt sondern schau mir das halt mehr oder weniger ab.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 23.06.2002, 10:38 

Registriert: 12.06.2002, 16:13
Beiträge: 62
Ich bin ja auch ein Small-Neuling, ich profitiere wenn dann nur von der Ähnlichkeit zu C.

Ein String ist eine Zeichenkette. Das heißt, es ist ein Array aus Zeichen.

Beispiel:
Code:
"Hallo" == { 'H', 'a', 'l', 'l', 'o', '^0' } == { 72, 97, 108, 108, 111, 0 }
Ein einzelnes Zeichen (z.B. 'A' {nicht "A"}) ist kein String mehr, sondern eine Zahl. In der ASCII-Tabelle ist jedes Zeichen einer Zahl zugeordnet.

Wenn bei dir Data nun nur "0", "1" oder "2" sein kann, erhälst du mit Data[0] den Wert des ersten Zeichens, also '0' bzw. 48. '1' ist 49 und '2' ist 50 usw.

D.h. man könnte da praktisch:
Code:
variable = Data[0] - '0';
rechnen.
Code:
Ist Data[0] == '0', dann ist Data[0] - '0' == 0.
Ist Data[0] == '1', dann ist Data[0] - '0' == 1.
usw.
Ich hoffe das trifft so auf Small zu. :roll:


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 23.06.2002, 11:47 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Trifft auf Small zu.

Nochwas, wenn Data wirklich nur "0", "1" oder "2" enhaelt, dann ist
new Data[MAX_DATA_LENGTH];
enorme Platzverschwendung.
new Data[2];
wuerde reichen.
Wer fuer die Zukunft baut ist mit
new Data[MAX_NUMBER_LENGTH];
immernoch besser bedient als mit MAX_DATA_LENGTH (Faktor 10).

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 23.06.2002, 15:16 

Registriert: 08.01.2002, 19:41
Beiträge: 74
Wohnort: Minos Korva (11 Lichtjahre vom McAlister C5 Nebel)
Ich habs vorher probiert mit "variable = Data[0];". Das war der Fehler. Habs jetzt mal deinen Vorschlag ausprobiert: variable = Data[0] - '0'; und siehe da, es funzt und ist damit um einiges kürzer geworden :).
Code:
public vaultdata()
{
	new Data[2];
	get_vaultdata("admin_mk_fb",Data,MAX_DATA_LENGTH);
	FBSwitch = Data[0] - '0';
	get_vaultdata("admin_mk_kit",Data,MAX_DATA_LENGTH);
	KITSwitch = Data[0] - '0';
	get_vaultdata("admin_mk_hs",Data,MAX_DATA_LENGTH);
	HSSwitch = Data[0] - '0';
	return PLUGIN_HANDLED;
}
Also Data[0] ist das erst Zeichen aus Data. Soweit so gut, bis dahin wars klar. Aber was macht " - '0' " mit diesem zeichen damit da dann tatsächlich die Zahl rauskommt?

@daRope
In diesem Fall konnte die Variable nur den Wert 0,1,2 bekommen. Aber ich wollte die Funktion auch für andere Plugins (mit mehreren Zeichen) nutzen, was allerings nicht funktioniert wie wir hier festgestellt haben. Also könnte man das in diesem Fall ändern in "new Data[2];" wie du es gesagt hast. Das macht sicherlich Sinn.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 23.06.2002, 19:20 

Registriert: 12.06.2002, 16:13
Beiträge: 62
Zitat:
Also Data[0] ist das erst Zeichen aus Data. Soweit so gut, bis dahin wars klar. Aber was macht " - '0' " mit diesem zeichen damit da dann tatsächlich die Zahl rauskommt?
Data[0] ist das erste Zeichen aus Data.
Ein Zeichen ist eine Zahl. (siehe http://www.asciitable.com )

Weil ein Zeichen eine Zahl ist, kannst du damit rechnen. '1' ist '0' + 1, '2' ist '0' + 2. 0 ist '0' - '0'. Du kommst daher bei '2' - '0' auf 2.

Aber eigentlich hab ich das alles obendran ja schon geschrieben.
:wink:


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 57 Beiträge ]  Gehe zu Seite Vorherige 1 2 3


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de
Original Design von "[ Half-Life Admin Mod © Alfred Reynolds 2000-2003 ] - [ site design by Jägermeister ]"