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

Der "Ich habe ein Scripting-Problem"-Thread
https://www.adminmod.de/viewtopic.php?t=4561
Seite 1 von 5

Autor:  Rinde [ 25.12.2002, 02:04 ]
Betreff des Beitrags:  Der "Ich habe ein Scripting-Problem"-Thread

okay, ich habe heute den server meines clans gecrasht, zusammen mit allem anderen was auf der maschine noch lief. :oops:
das letzte logfile ist ca 250MB gross, und sieht ab zeile 50 so aus:
Code:
L 12/25/2002 - 00:12:11: [ADMIN] ERROR: Request for player info index 21 exceeds max player limit 20
L 12/25/2002 - 00:12:11: [ADMIN] ERROR: Request for player info index 22 exceeds max player limit 20
L 12/25/2002 - 00:12:11: [ADMIN] ERROR: Request for player info index 23 exceeds max player limit 20
L 12/25/2002 - 00:12:11: [ADMIN] ERROR: Request for player info index 24 exceeds max player limit 20
L 12/25/2002 - 00:12:11: [ADMIN] ERROR: Request for player info index 25 exceeds max player limit 20
L 12/25/2002 - 00:12:11: [ADMIN] ERROR: Request for player info index 26 exceeds max player limit 20
L 12/25/2002 - 00:12:11: [ADMIN] ERROR: Request for player info index 27 exceeds max player limit 20
L 12/25/2002 - 00:12:11: [ADMIN] ERROR: Request for player info index 28 exceeds max player limit 20
L 12/25/2002 - 00:12:11: [ADMIN] ERROR: Request for player info index 29 exceeds max player limit 20
L 12/25/2002 - 00:12:11: [ADMIN] ERROR: Request for player info index 30 exceeds max player limit 20
L 12/25/2002 - 00:12:11: [ADMIN] ERROR: Request for player info index 31 exceeds max player limit 20
...
L 12/25/2002 - 00:15:22: [ADMIN] ERROR: Request for player info index 408071 exceeds max player limit 20
...
to be continued
das command, das unmittelbar vorher aufgerufen wurde, benutzt einmal die playerinfo funktion
Code:
    for(i=1;i<=g_Maxplayers;i++) {
        if(playerinfo(i,Name,MAX_NAME_LENGTH) == 1 && g_SessionID[i] != 0) {
            ...
        }
    }
g_Maxplayers wird hier der wert zugewiesen
Code:
public plugin_init() {
    ...
    g_Maxplayers = maxplayercount();
    return PLUGIN_CONTINUE;
}
wieso zum teufel ist der inhalt von g_Maxplayers auf einmal riesengross? und wieso trat der fehler nicht beim testen auf meinem pc auf?

Autor:  Sir Drink a lot [ 25.12.2002, 09:14 ]
Betreff des Beitrags: 

und sonst machst Du nichts mehr mit g_Maxplayers?

Wieso dann eigentlich global? Poste mal das ganze Script.

Autor:  Rinde [ 25.12.2002, 15:14 ]
Betreff des Beitrags: 

doch, ich benutze das g_Maxplayers 4 mal, in insgesamt in 3 funktionen, und jedesmal im selben zusammenhang, also for-schleife 1 bis maxplayers.
der grund, weshalb ich es global gemacht habe, war eigentlich, dass ich mir dachte, es wäre ziemlich unnötig, jesesmal beim funktionsaufruf den maxplayercount() neu abzufragen, wo er sowieso unveränderlich ist.
den code hab ich gar nicht mehr, ich hab sie jetzt wieder lokal gemacht, wie das normalerweise ist. jetzt gehts auch.
aber vielleicht könnt ihr mir bei meinem nächsten problem helfen
Code:
        convert_string(HLUserName,UserName,MAX_NAME_LENGTH);
        log(UserName);
        strcpy(g_StoreNick[0],UserName,MAX_NAME_LENGTH);
        log(g_StoreNick[0]);
die logs dieten zum fehler finden. heraus kam, dass UserName zwar den korrekten namen enthält, dieser aber scheinbar nicht in g_StoreNicks[0] kopiert wird, der bleibt immer leer. ich habs mit strcat, strcpy, snprintf versucht. er weigert sich einfach, den namen da reinzuschreiben.

Autor:  Sir Drink a lot [ 25.12.2002, 17:30 ]
Betreff des Beitrags: 

kann man nicht playercount() nehmen? Spart glaube ich ein paar Runden in der Schleife.

Ok. neues Prob:

wie groß ist g_StoreNick?
Ist es ein 2 Dimensionaler Array?

Autor:  Rinde [ 25.12.2002, 19:37 ]
Betreff des Beitrags: 

2. prob auch gelöst. ich ahb 2 stunden nur irgendwelche komischen sachen probiert, die variablen vorher und anchher abgefragt, ohne erfolg. dann nahb ichs wider wie am anfang gemacht und es ging :o
irgendwie ist das strange
und playercount kann ich nicht nehmen. denn wenn nur ein spieler auf dem server ist, kann es immernoch sein, dass dieser den userindex 20 hat. die werden ja beim connect vergeben. und wenn da nur 20 frei war...

Autor:  [WING] Black Knight [ 26.12.2002, 12:39 ]
Betreff des Beitrags: 

Ich würde außerdem nach Aufruf der playerinfo() immer nachschauen, ob es sich überhaupt um einen validen Spieler handelt.

Autor:  Rinde [ 26.12.2002, 18:41 ]
Betreff des Beitrags: 

das tu ich sowieso. aber der error kommt trotzdem, wenn der playerindex ungültig ist

Autor:  Biohazard1 [ 28.12.2002, 17:50 ]
Betreff des Beitrags: 

Um welches Plugin handelt es sich denn, oder ist es ein Plugin an dem du gerade selber bastelst und es uns somit noch nicht zeigen kannst ?

Bio

Autor:  Rinde [ 30.12.2002, 18:11 ]
Betreff des Beitrags: 

mmh, es ist jetzt soweit fertig, aber weder getestet noch sonstwas
immerhin ist es mein erstes plugin, dass die menu() funktion benutzt

plugin_rm_rindy_player
Features: Adminmenu, das alle spieler auflistet. Auswahl eines spielers öffnet ein untermenü, in dem der spieler gekickt, gebannt oser verwarnt werden kann, jeweils mit grundangabe, wobei 9 vorgefertigte gründe durchschaltbar sind. eigene gründe kann man (bisher) nur mit den command admin_ban admin_kick und admin_warn umsetzen, also ohne GUI. der besondere clou ist, dass sich das plugin die letzten spieler, die den server verlassen, merkt (name, sessioid, wonid, adminstatus, verwarnungsstatus). wieviele, ist einstellbar, standardmässig sind es 8. diese erscheinen ebenfalls im playermenu, wenn sie vor weniger als einer minute gegangen sind (gespeichert werden sie dennoch länger), allerdings in grauer farbe, kicken und verwarnen ist nicht möglich, nur bannen. kommt ein gekickter spieler unter anderem namen zurück, erhalten die admins eine warnung. ebenfalls erhalten sie eine mitteilung, wenn jemand gekickt, gebannt oder verwarnt wurde. admins werden im playermenü mit einem gelben @ gekennzeichnet, verwarnte spieler mit einem roten # und gekickte spieler mit einem roten *!*. ausserdem werden bans in eine seperate datei geloggt, die addons/adminmod/banreasons.log. dabei wird versucht, den originalen namen des admins herauszufinden, falls er gefaket ist. hierzu wird eine datei, die addons/adminmod/config/nicks.txt geparst, in der admins im format "wonid admin-passwort name" eingetragen sind. es werden übereinstimmungen von wonid und dem setinfo-feld, dass das passwort enthält, gesucht. wenn nur ein eintrag mit der gesuchten wonid vorhanden ist, ist das passwort nicht notwendig. wenn der name nciht zweifelsfrei nachgewiesen werden kann, wird er mit einem fragezeichen in der banreasons.log versehen. die nicks.txt dient im übrigen auch dazu, festzustellen, ob ein spieler admin ist, so dass er nicht authentifiziert werden muss (klappt eh nicht nach mapchange). mehr an features fällt mir grad nciht ein. noch ein hinweis: aufgrund des oben beschriebenen fehlers mit g_Maxplayers habe ich die zuweisung von maxplayercount() so gestaltet, dass es nie grösser als 21 wird. 21 deshalb, weil mein clan nen 20 slot server hat, und so kommt es nciht wieder zum absturz, und trotzdem lässt sich feststellen, wenn der fehler wieder auftritt. d.h. auf servern mit mehr als 21 slots funktioniert es nciht richtig. ausserdem benutzt es die cs-farbcodes in den menüs, weshalb ich verwendung mit anderen mods auch nicht empfehle
DL: http://www.fetter-gehts-nicht.de/plugin ... player.zip

Autor:  Rinde [ 30.12.2002, 18:15 ]
Betreff des Beitrags: 

:roll:

Autor:  Biohazard1 [ 30.12.2002, 18:40 ]
Betreff des Beitrags: 

Kannst du mir einen Link posten mit dem ich mir das Plugin herunterladen kann - ich habe keine Lust auf 'Loose Indentation'. Falls du keine Möglichkeit hast es irgendwo zu hosten und es auch zu groß als Anhang für dieses Forum ist kannst du es mir auch gerne an meine eMail Adresse ( Biohazard@ekclan.de ) schicken.

Danke schonmal...

Bio

Autor:  DarkEyes1 [ 30.12.2002, 18:40 ]
Betreff des Beitrags: 

wär nicht nen dl besser? :wink:

Autor:  Sir Drink a lot [ 30.12.2002, 19:27 ]
Betreff des Beitrags: 

jo. dl wäre besser gewesen

Autor:  Rinde [ 30.12.2002, 20:21 ]
Betreff des Beitrags: 

www.fetter-gehts-nicht.de/plugin_rm_rindy_player.zip

Autor:  Sir Drink a lot [ 30.12.2002, 21:47 ]
Betreff des Beitrags: 

Danke Dir!!!!!!


Übrigens:
nettes Bild von den 2 Sumos :-)

Das sieht unfair aus :lol:

Autor:  Rinde [ 03.01.2003, 14:20 ]
Betreff des Beitrags: 

update. läuft jetzt auf unserem server, und bisher fehlerfrei

www.fetter-gehts-nicht.de/plugin_rm_rindy_player.zip

Autor:  sentinel [ 03.01.2003, 18:23 ]
Betreff des Beitrags: 

sorry aber mit welcem befehl öffne ich das menu :oops:

Autor:  Rinde [ 03.01.2003, 20:08 ]
Betreff des Beitrags: 

admin_playermenu

weiterhin:
admin_warn <target> [<reason>]
admin_kick <target> [<reason>]
admin_warn <target> <dauer> [<reason>]

Autor:  sentinel [ 03.01.2003, 20:44 ]
Betreff des Beitrags: 

ok danke :D

Autor:  Rinde [ 07.01.2003, 19:30 ]
Betreff des Beitrags: 

rindy hat mal wieder problem ^^

hier gibt es 3 warnings (gut, warnings sin egal), aber ich will sie trotzdem weghaben
Code:
plugin_rm_rindy_mapvote.sma(144) Warning [212]: possibly unintended bitwise operation
plugin_rm_rindy_mapvote.sma(204) Warning [212]: possibly unintended bitwise operation
plugin_rm_rindy_mapvote.sma(242) Warning [212]: possibly unintended bitwise operation

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