You are not logged in.

Tockra

Beginner

  • "Tockra" started this thread

Posts: 44

wcf.user.option.userOption53: Nein

  • Send private message

1

Thursday, January 19th 2012, 8:31pm

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?

Source code

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

Posts: 1,276

wcf.user.option.userOption53: Nein

  • Send private message

2

Thursday, January 19th 2012, 8:51pm

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 Source code

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

This post has been edited 2 times, last edit by "Impact" (Jan 19th 2012, 9:12pm)


Tockra

Beginner

  • "Tockra" started this thread

Posts: 44

wcf.user.option.userOption53: Nein

  • Send private message

3

Thursday, January 19th 2012, 9:34pm

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

PHP Source code

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

Posts: 1,276

wcf.user.option.userOption53: Nein

  • Send private message

4

Thursday, January 19th 2012, 9:43pm

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

MfG
Impact

Tockra

Beginner

  • "Tockra" started this thread

Posts: 44

wcf.user.option.userOption53: Nein

  • Send private message

5

Thursday, January 19th 2012, 10:34pm

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

Posts: 1,276

wcf.user.option.userOption53: Nein

  • Send private message

6

Thursday, January 19th 2012, 10:36pm

Hier, einfach mal ins Wiki schauen :)

MfG
Impact

Similar threads