Ein neues Thema erstellen  Auf das Thema antworten  [ 222 Beiträge ]  Gehe zu Seite Vorherige 1 2 3 4 5 612 Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: 04.09.2002, 23:09 

Registriert: 19.04.2002, 01:35
Beiträge: 73
Also erstmal Jippi :) rr klappt jetzt, aber....
Also das mit TK und selfkill und eine Runde aussetzen stimmt nich! Wenn ich der führende mit einem Kill bin und Kill dann ein Teammate macht er zwar lost the Lead, aber nachher stimmt das ganze nich. Hab mich mal selbstgekillt und mal ausgesetzt und ich hatte nachher 5 Kills und der führende 7 und trotzdem machte er zu mir Taken Lead ;) Also da stimmt noch was nich.

_________________
Greetz!

visit us@DrSF-Clan.NgZ-SeRveR.de
Bild
IP: 62.4.67.150:27030


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 05.09.2002, 02:21 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
ok.lol.....

Sehr guter Beta-Tester :-)

Selbstmorde habe ich auch noch nicht bedacht....Wow..an was man alles denken muss...ich bringe mich so selten selber um.

Da muss ich mir dann mal was ausdenken...

_________________
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: 05.09.2002, 11:41 

Registriert: 19.04.2002, 01:35
Beiträge: 73
Ich interessiere mich ja viel für das Plugin also muss ich ja alles durchtesten :D
Bin froh wenn das Plugin fertig ist ganz ohne Bugs ;) Aber Respect! Ich hab zwar von allem Ahnung aber mit Plugins scripten.... Naja will das auch noch lernen.

Wünsch dir noch viel Spass beim Scripten :)

Freue mich schon auf die nächste Version :lol:

_________________
Greetz!

visit us@DrSF-Clan.NgZ-SeRveR.de
Bild
IP: 62.4.67.150:27030


Nach oben
   
 Betreff des Beitrags: Jou!!!!
BeitragVerfasst: 05.09.2002, 21:43 
AM.de Team

Registriert: 08.07.2002, 21:11
Beiträge: 2192
AMX 3 Error tritt nur noch vereinzelt auf mit der neuen AMX Bibliothek ! THX for Tip!

Ob der dortige AdminMod Beta noch Verbesserung bringen wuerde?

Uebrigens: Wir laufen auf einem Dual PIII 1000 mit 1 GB RAM mit schaetzungsweise 8 Multigameinstanzen. CPU Last sollte nie ueber 50% liegen.

LAN maessig kann ich derzeit nicht auf meinem WinDedi testen, weil keine LAN anliegt :-(

Wie gesagt, dieses Plugin kommt dermassen gut an, dass wir es unbedingt haben wollen, und ich es auch laufen lasse. Derzeit steigt es mit der neuen AMX Bibliothek nach 29 Minuten mit AMX 3 Error aus ..... (InetServer) und bei einem mp_timelimit von 30 koennen wir gut damit leben ;-)

sers

[-=THH=-]Stillsetzhut


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 05.09.2002, 22:37 

Registriert: 17.12.2001, 01:00
Beiträge: 697
Die Probleme mit dem Error 3 können beseitigt werden, indem man bei allen playerinfo-Funktionen sämtliche Parameter dieser Funktion angibt (index, name, namelength, userid, wonid, team, dead). Auch die Ersetzer "_" müssen mit Variablen besetzt sein.
Ich habe mir mal den Source von V5.3 (sma V5.2) angeschaut, es gibt darin einige playerinfo-Funktionen, die nicht vollständig mit den nötigen Variablen ausgestattet wurden. Daher ist es auch kein Wunder, dass es zu diesen Fehlermeldungen kommt.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 06.09.2002, 00:18 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
ui.. Danke Dir Warhead!

Ich weiss erst seit ca. 2 Wochen, dass man die "_" überhaupt setzen darf bzw. das es sie überhaupt gibt.

Dann werde ich mal wieder Variablen dafür definieren.

Aber Du hast doch sicherlich noch einige Ideen, was man alles optimieren kann, oder?

Ist ein switch case eigentlich besser als ein if else?

Mein großes Programmierproblem ist, dass ich sehr viele If-Abhängige Sachen drin habe, was den Code wahrscheinlich sehr sehr unübersichtlich macht.

Ist die Vorgehensweise, den Spielername in Text[MTL] zu kopieren, und mit strcat an den Text den "Event-Text" dranzuhängen und dann an die Funktion soundall zu übergeben, in Ordnung?

Ich denke, man kann sowieso einige playerinfos einsparen. Auch den strsep und strsplit der "Injure"-Data kann man besser hinkriegen, oder?

Ich würde so gerne mal Dein Impressive Plugin sehen :-)!

z.B. finde ich einfach keine bessere Lösung, alle Waffen mit ihrer max body-damage und der gerade stattgefundenen Damage zu vergleichen. Gibt es da eine bessere Möglichkeit? So ist es ein riesiger If-Satz...

_________________
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: 06.09.2002, 15:05 

Registriert: 17.12.2001, 01:00
Beiträge: 697
Also ich habe mir den Sourcecode nur flüchtig angeschaut, insbesondere die playerinfo-Aufrufe, da das Error 3 Problem besteht. Ich habe also nicht den Quellcode verinnerlicht.
Sicherlich sind switch/case-Statements quellcodetechnisch übersichtlicher und damit leicht durchschaubar. Sie sind also langen if/else-Statements vorzuziehen.

Der Code von Impressive V5.3 kann sicherlich noch an den Stellen optimiert werden, an denen augenscheinlich immer dasselbe getan wird, aber dies mit langen if/else- und switch/case-Statements programmiert wurde. Dazu kann man in der Funktion admin_impressive Arrays benutzen, die dann mit Schleifen durchlaufen werden.

Z.B. case 0:

Man deklariert:
Code:
new CommandNameArray[]={"displaykill", "displayscore", ...};
new VaultDataArray[]={"IMP_DISPLAY_KILL", "IMP_DISPLAY_SCORE", ...};
new TextArray[]={"Die Anzeige der Kills und Headshots wurde auf %s gesetzt.", "Die TeamScore- und Bester-Spieler-Anzeige wurde auf %s gesetzt.", ...};
Dann steht im case 0-Zweig nur noch folgendes:
Code:
for(i=0; i<MaxVomCommandNameArray;i++)
{
  if(!strcasecmp(Commandname,CommandNameArray[i]))
  {
      set_vaultdata(VaultDataArray[i],CommandParam);
      if(i==2) // bei killtime Sonderbehandlung, sollten weitere Fälle auftreten -> switch/case Statement
      {
           iCommandParam = strtonum(CommandParam);
           killtime = iCommandParam;
       }
      snprintf(Text,MAX_TEXT_LENGTH,TextArray[i],CommandParam);
      break;
   }
}
Damit entfallen die elseif-Konstrukte. Dasselbe kann auch für case 1 bist case 14 angewendet werden, auch hier sind ständig dieselben Funktionen:
Code:
new ImpSoundArray[ALL_SOUNDS][MAX_TEXT_LENGTH];

switch(iNumber)
{
  case 0:
  {
     // siehe oben
  }

  default:
  {
     set_vaultdata(VaulDataArray[Offset+iNumber],Commandname);
     snprintf(Text,MAX_TEXT_LENGTH,TextArray[Offset+iNumber],Commandname);
     strcpy(ImpSoundArray[iNumber-1],Commandname,MAX_TEXT_LENGTH);
  }
}

Für default: kann auch stehen case 1: case 2: bis case 14: falls noch andere Fälle reinkommen, die extra behandelt werden sollen.

Bei den Weapon-Funktionen könnte man ähnlich verfahren. Wenn man die ganze Sache schnell machen will, also auf die strcasecmp verzichten will, sollte man Bytevergleiche nutzen. Dazu muss man jedoch die Waffennamen analysieren, einfacher zu programmieren ist natürlich die strcasecmp-Variante. Ich stelle mir eine schnelle Identifizierung etwa so vor:
Code:
switch(Weapon[0])
{
   case 's':
   {
      switch(Weapon[4])
     {
        case '2':
        {
          // sg552
         }
        case 't':
        {
          // scout
         }
         case '0':
         {
           // sg550
         }
      }
   }
   ....
}

Diese Methode ist sicherlich kein Allheilrezept und vor allem nicht schnell überschaubar, aber auf jeden Fall sehr schnell in der Erkennung. Es ist auch fraglich ob diese Methode in allen Fällen anwendbar ist, aber soweit ich das überschaut habe, ist sie in diesem Fall eine Möglichkeit, die man beachten sollte...

Die Auflösung der elseif-Statements in switch/case kann dann auch in den folgenden Funktionen wie imp_UTSounds, imp_killstreak und im_resetscore erfolgen.

Disclaimer: Es handelt sich bei dem geschriebenen um meine persönliche Meinung. Niemand ist verpflichtet, diese Techniken anzuwenden. Sie dienen lediglich als Anregung. Der Code wurde nicht auf Funktionsfähigkeit überprüft.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 06.09.2002, 17:39 
AM.de Team
Benutzeravatar

Registriert: 23.11.2001, 00:00
Beiträge: 3842
Wohnort: Vor König Arthus
Den Disclaimer würde ich mir kopieren. ;)

Aber ich glaube schon, dass Du in die richtige Richtung weist. Momentan versucht er ja nicht den Code übersichtlicher sondern effizienter zu machen.
Was mich besonders interessieren würde, ist ob die AMX 3 Fehler tatsächlich verschwinden. Mit seinem Plugin sollte das bei einem vollen Server ja schnell zu sehen sein. Auf die Rückmeldung bin ich gespannt.

_________________
Der schwarze Ritter triumphiert immer...
WING-Clan


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 06.09.2002, 17:47 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
der Bitweise Vergleich der Waffen ist mir auch in den Sinn gekommen :-)

Und wieder mal bin ich erstaunt, dass auch ein Switch Case mit Stings funktionieren könnte. Da bin ich mal gespannt.

Aber Ergebnisse gibt es erst später :-).

_________________
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: 06.09.2002, 18:38 

Registriert: 17.12.2001, 01:00
Beiträge: 697
Keine Strings, sondern Bytewerte der Buchstaben bzw. Zahlen. Deshalb auch die einfachen Anführungszeichen (Hochkommas) '...'.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 06.09.2002, 18:47 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
:oops: ..argh...

<---*ganz doll rot wert..peinlich* :-)

_________________
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: 06.09.2002, 19:09 

Registriert: 17.12.2001, 01:00
Beiträge: 697
Macht nix, wir sind alle nur Menschen.

In einem anderen Thread hatte ich mal die Optimierung von Code mittels Arrays demonstriert:

forum/viewtopic.php?t=2593

Wenn man den Originalcode mit 3(?) Seiten elseif und den optimierten Code anschaut, sieht man den Vorteil von aufgelösten elsif-Statements.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 06.09.2002, 21:39 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
stimmt. an den Thread kann ich mich noch erinnern und habe ihn bei mir sogar mal angewandt. Für den internen Gebrauch. Nur um es zu testen.

Ich weiss nicht, wie ich es erklären soll, aber ich habe manchmal auch noch wirklich Verständniss-Probleme mit Arrays. Ich weiss, ich hatte mal einen Thread eröffnet, der das Thema behandelt hat.

Und ich dachte auch, dass ich es soweit verstanden habe. Aber manchmal....

Nun gut. Ich werde mal sehen, was ich so hinbekomme. :-)

_________________
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: 08.09.2002, 12:52 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
so. es tut sich langsam wieder was.

Das Plugin ist noch nicht so optimiert, wie Warhead vorgeschlagen hat.

Habe aber die Idee von Mr.Clone aufgegriffen (ganz am Anfang dieses Threads). Und zwar wird bei der Eingabe von 'play' bzw. 'stop' eine setinfo Zeile beim User generiert.

Diese setinfo-Zeile wird mit get_userinfo im Plugin selbst ausgelesen, bevor ein sound an die Person abgespielt werden soll.

Klar ist dieser Aufwand etwas rechenintensiver, als es nur mit einem Array zu händeln. Aber meiner Meinung nach, wäre diese Methode ein neuer Meilenstein in der Entwicklung von Plugins. Man kann dann alle Sound-Plugins mit dieser Abfrage ausstatten. Für die get_userinfo Abfrage habe ich schon eine eigene sound.inc geschrieben. Die Funktion ist soundallow(Spielername[]). Und man erhält eine 0 oder 1 zurück. Je nachdem was der Spieler in der setinfo drin stehen hat.

Ich entwickle jetzt noch ein Standalone Plugin, welches nur für das Setzen der setinfo beim Client zuständig ist. Dieses Standalone Plugin reagiert dann auf '.play' bzw. '.playsounds' oder auf '.stop' bzw ".stopsounds". Der Key für die setinfo ist zur Zeit "am_sound" und der Value, der gesetzt wird ist '0' oder '1'.

Oder sollte man lieber '/play' nehmen....anstatt des Punktes

Ich hoffe, ich habe meine Idee einigermaßen gut beschrieben. Was sagt ihr dazu?

_________________
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: 08.09.2002, 16:45 

Registriert: 06.01.2002, 01:00
Beiträge: 415
Wohnort: nicht weit weg von Köln
Ich halte die Idee für sehr gut. Allerdings wäre es wohl besser deiner Include Datei einen anderen Namen als sound.inc zugeben, da es eine solche ja schonmal in Verbindung mit dem plugin_sank_sounds gab und es so nur zu Verwechslungen kommt.

Bio

_________________
It's not a bug, it's a feature !


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 09.09.2002, 19:00 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
@Warhead:

Mein Hirn ist anscheinend zu klein oder besser gesagt nicht Leistungsfähig genug für die von Dir oben beschriebene Array Behandlung.

Beispiel: CommandNameArray
Wenn ich diesen normalen Array mit der Schleife durchlaufen lasse, fängt er anm diesen Zeichenweise zu vergleichen. Und zwar nur das displaykill.
Faszinierender Weise fängt er an, es mit Teilstrings des displaykill zu vergleichen.

Sprich: CommandNameArray[0] => displaykill
CommandNameArray[1] => isplaykill
usw.

Wenn ich das ganze Beispiel mit 2-Dimensionalen Arrays mache, klappt es wunderbar.

CommandNameArray[MAX_BEFEHLE][]={{"displaykill"},{displayscore"} usw.}

dann bekomme ich bei CommandNameArray[1] auch 'displayscore' usw.

Wo liegt jetzt der Fehler bzw. Gedankenfehler. Oder ist es alles halb so wild und kann es wunderbar mit 2-Dimensionalen Arrays machen. Die amx wird dann aber was größer :-)
Da es mir sehr gut gefällt, würde ich dann alle Textmeldungen und Sounds und auch die STATUS-Verwaltung des Plugins in einem 2 Dimensionalen Array machen...

Hast DU einen Rat?

_________________
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: 09.09.2002, 20:53 

Registriert: 17.12.2001, 01:00
Beiträge: 697
Ja, hab ja geschrieben, ich habe die ganze Sache nicht auf Funktion überprüft. Es müssen natürlich 2-dimensionale Arrays sein. Sorry, Flüchtigkeitsfehler meinerseits.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 09.09.2002, 21:32 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
ok. thanks....

Klappt auch wunderbar.

Aber das mit der Teilstring-Ausgabe finde ich faszinierend. :-)

Seltsame Sache, oder. Aber es steht im Handbuch. Hab es nachgelesen. Ist wohl normal.

_________________
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: 09.09.2002, 23:54 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
So. Ich schmeisse jetzt mal die Version 5.4 auf den Markt :lol:

Sorry Redfield. Selbstmorde werden noch nicht erkannt.
Aber das kommt noch!!!

Änderung:

- der Spieler muss nur ein einziges mal 'play' bzw. 'stop' eingeben. Damit wird eine setinfo-Zeile bei ihm generiert, die immer abgefragt wird, ob er sounds hören und die Anzeigen sehen möchte, oder nicht.
(das wäre doch auch für Dich Redfield ok, oder? Dann braucht man das Plugin nicht immer zu ändern!)

- Alle playerinfo Befehle sind jetzt mit Variablen versehen....hoffe der AMX Error 3 hört auf. Aber zur Sicherheit nochmal die neueste AMX Library downloaden. Der Link ist hier im Thread!!

- Eine Meldung wird beim Eintreten in das Spiel an den Spieler abgegeben, dass er die sounds erlaubt oder nicht und was er zu tun hat, um sie zu erlauben bzw. nicht zu erlauben. Das wollte ich zuerst in einer Art Consgreet machen, aber get_userinfo scheint bei plugin_connect nicht zu funktionieren.

- einige Optimierungen bzgl. der Plugin-Verwaltung....Dank an Warhead

- es wird gecheckt, ob mp_logdetail gesetzt ist und auch auf 3 steht sowie, ob allow_client_exec auf 1 steht. Ansonsten kommt eine Meldung.
Ich wollte es auch für die vault.ini Einträge machen, was aber nicht ganz geklappt hat, da es ja viele sind und der Server auch was anderes zu tun hat, als mein Plugin zu verarbeiten :lol:

geplante Änderungen:

- die Selbstmorde erkennen
- Die Waffenabfrage und Damage-Werte optimieren
- vielleicht eine Teamattack-Bestrafung
- vielleicht eine Statistik

ui..ich hoffe, ich habe es jetzt nicht alles verschlimmbessert. Falls was mit dieser neuen Version nicht in Ordnung ist, aber mit der alten geklappt hat, bitte melden. Meldet euch einfach, wenn euch was auffällt, was nicht ok ist. Aber mit der Überschneidung der Sounds und der Textausgaben bin ich zur Zeit noch machtlos! Also diese Wünsche bitte zurückstecken...

Gruß,

SD

---- ANHANG GELÖSCHT ----

_________________
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


Zuletzt geändert von Sir Drink a lot am 11.09.2002, 02:23, insgesamt 1-mal geändert.

Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 10.09.2002, 01:29 

Registriert: 19.04.2002, 01:35
Beiträge: 73
Wunderbar;) Ich teste dann mal! ber was soll die setinfo Zeile nutzen wenn der Spieler die cfg schreibgeschützt hat? :)

_________________
Greetz!

visit us@DrSF-Clan.NgZ-SeRveR.de
Bild
IP: 62.4.67.150:27030


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


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 ]"