Sie sind nicht angemeldet.

Tockra

Anfänger

  • »Tockra« ist der Autor dieses Themas

Beiträge: 44

Rootserver vorhanden: Nein

  • Nachricht senden

1

Donnerstag, 19. Januar 2012, 20:31

Ausgabe aller Argumente, eines Commands

Hallo Leute,

Ich möchte mit dem folgendem Script, dass in der Konsole und im Chat nicht mehr "Console" als Absender der say Nachrichten steht, die man über die Serverkonsole losschickt, sondern dass dort ein anderer Name steht.
Zu diesem Zwecke habe ich dieses kleine Script geschrieben, allerdings bekomme ich immer nur das erste Wort, also den ersten Parameter des say Commands angezeigt.
Wie kann ich das ändern?

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public Action:nameChanger(client,const String:command[],argc) 
{
if(client == 0) {
new String:text[100];
new String:ftext[100];

for(new i=0;i < argc;i++) {
GetCmdArg(i,text,100);
Format(ftext,100,"%s %s",ftext,text);

}
GetCmdArg(1,text,100);
PrintToChatAll("%s: %s",cName,ftext);
PrintToServer("\n%s: %s",cName,ftext);
return Plugin_Handled;
}

return Plugin_Continue;
}


Gruß T.

Impact

Super Moderator

Beiträge: 1 276

Rootserver vorhanden: Nein

  • Nachricht senden

2

Donnerstag, 19. Januar 2012, 20:51

Ich verstehe deinen Code leider nicht, es würde helfen wenn du einfach mal kommentierst was du da genau machst.
Es würde auch helfen wenn du deinen Code einrückst und mit PHP Tags versiehst.
Ich empfehle dir auch dieses Video mal anzusehen.

Meintest du vielleicht so etwas?

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <sourcemod>
#pragma semicolon 1



public OnPluginStart()
{
    AddCommandListener(Listener"say");
}



public Action:Listener(client, const String:command[], argc)
{
    if(client == 0)
    {
        new String:arg[256];
        GetCmdArgString(argsizeof(arg));
        
        // Nur um sicher zu gehen
        StripQuotes(arg);
        
        PrintToChatAll("Server: %s"arg);
        
        return Plugin_Handled;
    }
    
    return Plugin_Continue;
}


MfG
Impact

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Impact« (19. Januar 2012, 21:12)


Tockra

Anfänger

  • »Tockra« ist der Autor dieses Themas

Beiträge: 44

Rootserver vorhanden: Nein

  • Nachricht senden

3

Donnerstag, 19. Januar 2012, 21:34

Der Code war eingerückt, bevor Burning Board das kapput gemacht hat -,-:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/* Plugin Template generated by Pawn Studio */

#include <sourcemod>
#pragma semicolon 1
#define MAX_CONSOLE_NAME 64

new String:cName[MAX_CONSOLE_NAME];
new Handle:theHandle;
public Plugin:myinfo = 
{
    name "consoleNameChange",
    author "Tockra",
    description "Der Name der Konsole wird verändert.",
    version "1.0",
    url "http://ungaming.de"
}

public OnPluginStart()
{
    theHandle CreateConVar("sm_console_name","Serverinhaber","Der Name, der beim Benutzen, dass say Commands über die Serverkonsole ausgegeben wird.",0);
    AutoExecConfig(true,"plugin.consoleNameChange");
    GetConVarString(theHandle,cName,MAX_CONSOLE_NAME);
    
    AddCommandListener(nameChanger,"say");
    
    
    
}

public Action:nameChanger(client,const String:command[],argc) 
{
    if(client == 0) { // Wenn der Spieler die Konsole ist
        new String:text[100]; // Text buffer
        new String:ftext[100]; // Der Finale Text
        
        for(new i=0;argc;i++) { /* Solange I <argc argc sollte die Anzahl der Argumente ausgeben und das bewirkt, dass der Code innerhalb der Schleife bei jedem einzelnen Wort des Satzes ausgeführt wird. */
            GetCmdArg(i,text,100); // Das Entsprechende Wort (also der aktuelle Parameter) wird rausgeholt
            Format(ftext,100,"%s %s",ftext,text); /* Der Inhalt von ftext (vom vorherigen Schleifendurchgang, wird mit dem aktuellen Argument zusammengeführt und sollte
nach dem Ausführen der Schleife ein Kompletter Satz in ftext stehen*/
        
        }
        GetCmdArg(1,text,100); // Das war anscheinend Müll, mir fällt zumindest nicht mehr ein, was das hier sucht
        PrintToChatAll("%s: %s",cName,ftext);
        PrintToServer("\n%s: %s",cName,ftext);
        return Plugin_Handled;
    }
    
    return Plugin_Continue;
}

Impact

Super Moderator

Beiträge: 1 276

Rootserver vorhanden: Nein

  • Nachricht senden

4

Donnerstag, 19. Januar 2012, 21:43

Okay, dann habe ich das doch richtig verstanden, nutze einfach den Code aus meinem Beispiel :)

MfG
Impact

Tockra

Anfänger

  • »Tockra« ist der Autor dieses Themas

Beiträge: 44

Rootserver vorhanden: Nein

  • Nachricht senden

5

Donnerstag, 19. Januar 2012, 22:34

Ah okay vielen Dank. Das bedeutet GetCmdArgString gibt alle Argumente als String zurück. Gut das ich die Funktion nicht vorher gefunden habe :whistling:



Offtopic:

Auch wenn das nicht zum Thema passt, kannst du mir eine Anleitung geben, wo ich "lernen" kann, wie man GUI's bzw. diese billigen CSS Menü's schreiben kann?

Impact

Super Moderator

Beiträge: 1 276

Rootserver vorhanden: Nein

  • Nachricht senden

6

Donnerstag, 19. Januar 2012, 22:36

Hier, einfach mal ins Wiki schauen :)

MfG
Impact

Ähnliche Themen