Ein neues Thema erstellen  Auf das Thema antworten  [ 22 Beiträge ]  Gehe zu Seite 1 2 Nächste
Autor Nachricht
 Betreff des Beitrags: Auf "USER SAY" reagieren...
BeitragVerfasst: 14.04.2002, 00:27 

Registriert: 12.01.2002, 20:24
Beiträge: 227
Wohnort: Giessen, Hessen, Germany
Hallo!

Wie man zweifelsohne schon an meiner Betreffzeile erkennen kann, bin ich in punkto Plugins ein ABSOLUTERBEGINNER
Ich programmiere zwar (beruflich) selbst in Delphi - und C hab' ich auch schonmal verwendet aber... blablabla
:wink:

Ich möchte gerne ein plugin schreiben, das den Text eines users mitbekommt und ihn mit einer festen Zeichenkette vergleicht um ggf. daruf zu reagieren. Dazu ist es ebenfalls notwendig mitzubekommen von wem der SAY-String ist...

Bsp.: -> say '!console' [von user 'PLAYER']

darauf möchte ich mit sowas wie "admin_console PLAYER" reagieren.

Die genauen Fragen: :-?

O Wie bekomme ich eine SAY-Message mit?
O Wie erfahre ich von wem diese Message ist?
o Wo erfahre ich etwas über den grundsätzlichen Aufbau von Plugins?

Vielen Dank!

PS: Ich bin ja selbst ein regelmässiger Hinweiser was die Suchfunktion betrifft, aber mit dem Suchstring "user AND say OR text" hat er mir nicht wirklich was ausgespuckt.

_________________
Denn nur wer was zu sagen hat,
Der hat's, wenn es nicht unabdingbar ist

http://clan-ggg.de.vu/


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 02:29 
AM.de Team
Benutzeravatar

Registriert: 23.11.2001, 00:00
Beiträge: 3842
Wohnort: Vor König Arthus
Ich verstehe zwar nicht viel von der Plugin-Programmierung, aber schau Dir mal sank_sounds an. Das reagiert auch auf Benutzereingaben.

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


Nach oben
   
 Betreff des Beitrags: Ein Schritt weiter...
BeitragVerfasst: 14.04.2002, 02:32 

Registriert: 12.01.2002, 20:24
Beiträge: 227
Wohnort: Giessen, Hessen, Germany
Ich sitz' natürlich nicht still zu hause rum und warte bis mir alles in den Schoß fällt, und daher bin ich zu folgendem Fehler gelangt:
Code:
/*
THIS PLUGIN REACTS ON THE SAY-TEXT "!console" AND ACTIVATES THE CONSOLE
AT THE USER WHO HAS ENTERED THE TEXT

THIS PLUGIN DEPENDS ON THE plugin_console
*/

#include <core>
#include <console>
#include <string>
#include <admin>
#include <adminlib>

#define ACCESS_CONSOLE 1

/*********************************
*    AutoConsole version 0.10    *
*********************************/

new STRING_VERSION[MAX_DATA_LENGTH] = "0.10";

public HandleSay(HLCommand, HLData, HLUserName, UserIndex) {
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];

	convert_string(HLData, Data,MAX_DATA_LENGTH);
	convert_string(HLUserName, User,MAX_NAME_LENGTH);

	if (Data = "!console") {
		plugin_exec(admin_psay, User, "Your console has been activated/npress ^ to to toggle it!")
		plugin_exec(admin_console, User)
		return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE
}

public plugin_init() {
	plugin_registerinfo("ADDON to plugin_console to autoactivate it.", STRING_VERSION);
	plugin_registercmd("say", "HandleSay", ACCESS_ALL);
	plugin_registercmd("say_team", "HandleSay", ACCESS_ALL);
	return PLUGIN_CONTINUE
}
  • Die Fehler

    plugin_autocon.sma(33) Warning [211]: possibly unintended assignment
    plugin_autocon.sma(33) Error [33]: array must be indexed (variable "Data")
    plugin_autocon.sma(42) Warning [202]: number of arguments does not match definition

_________________
Denn nur wer was zu sagen hat,
Der hat's, wenn es nicht unabdingbar ist

http://clan-ggg.de.vu/


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 03:58 
AM.de Team
Benutzeravatar

Registriert: 23.11.2001, 00:00
Beiträge: 3842
Wohnort: Vor König Arthus
Meiner Meinung nach fehlen Dir ein paar Semikola in den Zeilen 30, 31, 32, 34 und 41.
In den Nachfolgezeilen wundert sich dann der Compiler, da es sich um geschweifte Klammern handelt, wovor auf JEDEN Fall ein Semikolon hätte kommen müssen.

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


Nach oben
   
 Betreff des Beitrags: Re: Auf "USER SAY" reagieren...
BeitragVerfasst: 14.04.2002, 11:40 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Aha. Der naechste, der einen Anschiss kassieren will. ;) Na dann wollen wir mal... :)
Zitat:
Ich programmiere zwar (beruflich) selbst in Delphi - und C hab' ich auch schonmal verwendet aber... blablabla
Na, dann hoffe ich mal, dass Du noch eine andere Einnahmequelle hast und nicht von Deinen Programmierkuensten abhaengig bist. Da Du eigentlich mit Delphi arbeitest und wenig mit C zu tun hast, sehe ich Dir ein paar Fehler nach. Aber nicht, dass Du Dir nicht die Muehe machst, deine Problemchen selber zu loesen, sei es durch logisches Denken oder nachschlagen der entsprechenden Infos. Von einem beruflichen Programmierer darf man das ja wohl erwarten, auch wenn Delphi eigentlich weniger mit Programmierung als mit rumklicken zu tun hat. Ausserdem gehe ich davon aus, dass Du Englisch kannst.

So, da Du mir hier aber bisher eher postiv aufgefallen bist, sag ich Dir trotzdem, was Du falsch machst. (Auch wenn es fuer Dich trivial sein sollte. :))
Zitat:
Ich möchte gerne ein plugin schreiben, das den Text eines users mitbekommt und ihn mit einer festen Zeichenkette vergleicht um ggf. daruf zu reagieren.
Ist das gerade in Mode, oder was? :)
Zitat:
O Wie bekomme ich eine SAY-Message mit?
O Wie erfahre ich von wem diese Message ist?
o Wo erfahre ich etwas über den grundsätzlichen Aufbau von Plugins?
Auch fuer Dich gilt: Sourcen lesen. Zum Beispiel plugin_retribution. Aber das hat sich ja inzwischen soweit geklaert.
Zitat:
Ich sitz' natürlich nicht still zu hause rum und warte bis mir alles in den Schoß fällt, und daher bin ich zu folgendem Fehler gelangt:
Das ist loeblich. Kommen wir also zum Eingemachten. Erstens fehlen da tatsaechlich etliche Semicolons. Obwohl Small das zulaesst, ist das eine Unart, die Du vermeiden solltest.

Erster Fehler:
Zitat:
plugin_autocon.sma(33) Warning [211]: possibly unintended assignment
Code:
   
if (Data = "!console") {
Typischer Delphiuser Fehler, daher nicht so schlimm. Das steht ganz klar "possibly unintended assignment". Und was sagt der Code? Der sagt 'if (Data = "ebbes")'. Und was sagt Dir das? Das sagt Dir, dass dort eine Zuweisung steht, die Du aber wahrscheinlich nicht meintest. In anderen Worten "sollte da nicht vielleicht 'if (Data == "ebbes")' stehen?". (Tut mir leid, aber auch bei Dir kann ich mir ein wenig Sarkasmus heute nicht verkneifen). In Small (und C) ist '=' ein Zuweisung und '==' ein Vergleich.

Zweiter Fehler. Der ist weniger verzeihlich.
Zitat:
plugin_autocon.sma(33) Error [33]: array must be indexed (variable "Data")
Code:
   
new Data[MAX_DATA_LENGTH];
   if (Data = "!console") {
Data ist ein ARRAY! Nun erlaubt Small tatsaechlich so ein unsaegliches Konstrukt, wie Deines. Aber nur, wenn beide Arrays dieselbe Laenge haben. Das ist hier nicht der Fall. Also bleiben wir schoen bei der normalen Behandlung von Arrays bzw. Strings und verwenden die entsprechenden Funktionen. Also:
Code:
if ( strcmp(Data, "!console") == 0 )
Dritter Fehler:
Zitat:
plugin_autocon.sma(42) Warning [202]: number of arguments does not match definition
Code:
   plugin_registerinfo("ADDON to plugin_console to autoactivate it.", STRING_VERSION);
   plugin_registercmd("say", "HandleSay", ACCESS_ALL);
Auch hier weiss ich eigentlich nicht, was an der Fehlermeldung so unverstaendlich sind. Kucken wir doch mal in die Includedatei wie plugin_exec() aussieht:
Code:
native plugin_exec( sCommand[], sArguments[] );
Da sehe ich zwei Parameter. Warum benutzt Du dann einmal drei und einmal zwei Parameter?

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 17:05 

Registriert: 12.01.2002, 20:24
Beiträge: 227
Wohnort: Giessen, Hessen, Germany
Ok!

Genial! Muss Dir echt recht geben... :oops:
Aber in meinem Wahn möglichst alle functions die so vermisse schnell noch vor der nächsten LAN-Party umzusetzten hab' ich mich wenig auf den Syntax von SMALL konzentriert... kommt nicht wieder vor :D

Ein grosses Dankeschön an Dich für deine Hilfe - nicht nur wegen des plugins :wink:

_________________
Denn nur wer was zu sagen hat,
Der hat's, wenn es nicht unabdingbar ist

http://clan-ggg.de.vu/


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 17:18 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Und ich dachte schon, Dir haette es die Sprache verschlagen. =B

(Endlich mal einer, der mich versteht 8))

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 17:47 

Registriert: 12.01.2002, 20:24
Beiträge: 227
Wohnort: Giessen, Hessen, Germany
...ist das erst der Anfang meiner Probleme?!?
Ich weiss ich bin dumm, aber wo in '3 Teufels Namen' ist denn da ein Fehler - deswegen konnte ich auch DAS noch nicht testen...
Code:
/*********************************
*    AutoComand version 0.20    *
*********************************/

#include <core>
#include <console>
#include <string>
#include <admin>
#include <adminlib>

#define ACCESS_CONSOLE 0

new STRING_VERSION[MAX_DATA_LENGTH] = "0.20";

/*------------------------------------------------------------*/

public HandleSay(HLCommand,HLData,HLUserName,UserIndex)
{
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Param[MAX_TEXT_LENGTH];


	convert_string(HLData,Data,MAX_DATA_LENGTH);
	convert_string(HLUserName,User,MAX_NAME_LENGTH);

	if ( strcmp(Data, "console!") == 0 )
	{
		snprintf(Param, MAX_TEXT_LENGTH, "%s Your console has been activated/npress ^ to to toggle it!", User);
		plugin_exec("admin_psay", Param);
		plugin_exec("admin_console", User);
		return PLUGIN_HANDLED
	}
	if ( strcmp(Data, "vote_awp") == 0 )
	{
		/* vote function
		   admin_awpcheck   */
		playsound(User, "misc/notavail.wav");
	}
	return PLUGIN_CONTINUE
}

public plugin_init() {
	plugin_registerinfo("ADDON to plugin_console to autoactivate it.", STRING_VERSION);
	plugin_registercmd("say", "HandleSay", ACCESS_ALL);
	plugin_registercmd("say_team", "HandleSay", ACCESS_ALL);
	return PLUGIN_CONTINUE
}
Fehler: plugin_autocon.sma(42) Error [27]: invalid character constant
Code:
                   public HandleSay(HLCommand,HLData,HLUserName,UserIndex)
in dieser Zeile -> {
                   new Data[MAX_DATA_LENGTH];
vielleicht ein drüber oder ein drunter, aber nach einigem hin- und hervergleichen hab' ich nix gefunden...
Übrigens, die plugin_init-function ist so kopiert...

_________________
Denn nur wer was zu sagen hat,
Der hat's, wenn es nicht unabdingbar ist

http://clan-ggg.de.vu/


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 17:48 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Und auch hier bezweifel ich, dass das was wird:
Code:
"Your console has been activated/npress ^ to to toggle it!"
Ich wuerde mal ganz freimuetig behaupten, das muss so lauten:
Code:
"Your console has been activated^npress ^^ to toggle it!"

_________________
There are no stupid questions, only stupid people.


Zuletzt geändert von daRope am 14.04.2002, 17:50, insgesamt 1-mal geändert.

Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 17:49 

Registriert: 12.01.2002, 20:24
Beiträge: 227
Wohnort: Giessen, Hessen, Germany
Da wirst Du wohl Recht haben, aber was ist mit dem Rest ?!?

_________________
Denn nur wer was zu sagen hat,
Der hat's, wenn es nicht unabdingbar ist

http://clan-ggg.de.vu/


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 17:52 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Das ist der Rest.

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 18:01 

Registriert: 12.01.2002, 20:24
Beiträge: 227
Wohnort: Giessen, Hessen, Germany
Zitat:
Das ist der Rest.
Du hast Recht! Nur müsste ich vielleicht mal genau lesen... Ich wollte eben schon wieder nachfragen wie ich ein '^' denn jetzt als Text ausgegeben bekomme und ob das genauso wie in Delphi durch '^^' geht... aber ich hab' dann ja - bevor ich mich ganz blamier - zum Glück nochmal meine Augen etwas nach oben geführt...

Man erlaubt sich euch den Titel 'TheGreat' zu führen :lol:

_________________
Denn nur wer was zu sagen hat,
Der hat's, wenn es nicht unabdingbar ist

http://clan-ggg.de.vu/


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 18:22 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Zum Dank darfst Du jetzt MrSpoocy aus der Misere helfen. :)

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 18:28 

Registriert: 12.01.2002, 20:24
Beiträge: 227
Wohnort: Giessen, Hessen, Germany
Und da ist es auch schon passiert!

Wie Du bereits in dem wichtigen Thread angezweifelt hattest das die ganze Schose läuft - NEIN sie tut es nicht!

Wenn ich über den 'SAY'-Key/Taste console! oder vote_awp eingebe spricht zwar das plugin an, aber es kommt garnicht zu einer 'positiven' Auswertung, d.h. es 'findet' nicht den entsprechenden Text obwohl er genau das ist!!!
Gehe ich in die console unt gebe dort 'say console!' oder 'say vote_awp' so klappt alles genau so wie es soll...

liegt es vielleicht an admin_messagemode ?!?

_________________
Denn nur wer was zu sagen hat,
Der hat's, wenn es nicht unabdingbar ist

http://clan-ggg.de.vu/


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 15.04.2002, 01:53 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
strstripquotes(Data) vergessen ?

_________________
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: 15.04.2002, 20:11 

Registriert: 12.01.2002, 20:24
Beiträge: 227
Wohnort: Giessen, Hessen, Germany
Zitat:
strstripquotes(Data) vergessen ?
Tschuldige die Frage aber was bewirkt das genau?...
Also lesen kann ich selbst - auch English - was ich wissen möchte, ist was diese funkcion genau tut.

Bsp.:
kommen mit dem say-Befehl (als Taste) die Daten als "TEXT" an und
wenn ich's direkt in die Konsole schreibe (say TEXT) als TEXT ?!?

Das würde das ja erklären... ich probiers halt mal...

_________________
Denn nur wer was zu sagen hat,
Der hat's, wenn es nicht unabdingbar ist

http://clan-ggg.de.vu/


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 15.04.2002, 21:14 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
Es ist genau so, wie Du Dir es schon selbst erklärt hast.

_________________
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: 15.04.2002, 21:41 

Registriert: 12.01.2002, 20:24
Beiträge: 227
Wohnort: Giessen, Hessen, Germany
Cool! 8)

:wink:

_________________
Denn nur wer was zu sagen hat,
Der hat's, wenn es nicht unabdingbar ist

http://clan-ggg.de.vu/


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 15.04.2002, 22:24 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Ein
Code:
log(Data);
strstripquotes(Data);
log(Data);
bringt Klarheit. log() ist ne feine Sache, wenn man was ueberpruefen will. Hardcore-Programmierer nehmen natuerlich direkt printf().

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 15.04.2002, 22:44 

Registriert: 12.01.2002, 20:24
Beiträge: 227
Wohnort: Giessen, Hessen, Germany
Zitat:
Ein
Code:
log(Data);
strstripquotes(Data);
log(Data);
bringt Klarheit. log() ist ne feine Sache, wenn man was ueberpruefen will. Hardcore-Programmierer nehmen natuerlich direkt printf().
Ich nehm' log! und nebenbei kurz bemerkt... es läuft!!!

Juchu!!! Bild

_________________
Denn nur wer was zu sagen hat,
Der hat's, wenn es nicht unabdingbar ist

http://clan-ggg.de.vu/


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 22 Beiträge ]  Gehe zu Seite 1 2 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 ]"