Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: sourceserver.info. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

N3v4R

Anfänger

  • »N3v4R« ist der Autor dieses Themas

Beiträge: 21

Wohnort: Rüsselsheim

Rootserver vorhanden: Ja

  • Nachricht senden

1

Samstag, 12. Oktober 2013, 11:59

Erster Scripting Versuch :D

Hallo,

Nach nun doch einiger Zeit wollte ich mich einmal mit dem scripten von Plugins versuchen. Zurerst ein dickes Lob an Impact für die nette Videotutorialreihe. Hut ab!
Nun wollte ich mich einmal an etwas einfachem versuchen, erster kleiner Versuch etwas zu scripten. Eine simple Join/Leave Chat Message für Vips mit dem ADMFLAG_RESERVATION

Hier einmal das nennen wir es "Müll" was ich bisher habe erstellt. Bitte nicht lachen :D *hust*

Mein Code

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
50
51
52
53
54
#pragma semicolon 1

#include <sourcemod>
#include <colors>

#define VIP ADMFLAG_RESERVATION

new Handle:cvar_VipJoin;
new Handle:cvar_VipLeave;

public Plugin:myinfo = 
{
    name "BlaBla",
    author "BlaBla",
    description "",
    version "1.0",
    url ""
}

public OnPluginStart()
{
    cvar_VipJoin CreateConVar("sm_vip_join""1""BlaBla");
    cvar_VipLeave CreateConVar("sm_vip_leave""1""BlaBla");
}

public OnClientAuthorized(client, const String:auth[])
{
    if(IsClientInGame(client))
    {
        new String:name[MAX_NAME_LENGTH 1];
        
        GetClientName(clientnamesizeof(name));
        
        if(cvar_VipJoin && GetUserFlagBits(client) & VIP)
        {
            PrintToChatAll("{lightgreen}[{green}VIP{lightgreen}] %N, [%s] joined the game, respect him!");
        }
    }
}

public OnClientDisconnect(client)
{
    if(IsClientInGame(client))
    {
        new String:name[MAX_NAME_LENGTH 1];
        
        GetClientName(clientnamesizeof(name));
        
        if(cvar_VipLeave && GetUserFlagBits(client) & VIP)
        {
            PrintToChatAll("{lightgreen}[{green}VIP{lightgreen}] %N [%s] left the game!");
        }
    }
}


Nur wird Ingame (TF2) nichts angezeigt, sowie wollte ich die SteamID vom Client abfragen nur habe ich dazu noch keine Lösung gefunden. Für kleine Tipps wäre ich euch echt dankbar!

MfG,
N3v4R

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Impact« (12. Oktober 2013, 16:56)


Jackmaster

Super Moderator

Beiträge: 660

Rootserver vorhanden: Ja

  • Nachricht senden

2

Samstag, 12. Oktober 2013, 12:18

Bei deinen Chatausgaben fehlen Parameter.
Du willst den Namen über %N, dann musst du auch die Clientid dazugeben
Außerdem kannst du cvars so nicht abfragen.
http://docs.sourcemod.net/api/index.php?fastload=show&id=482&

N3v4R

Anfänger

  • »N3v4R« ist der Autor dieses Themas

Beiträge: 21

Wohnort: Rüsselsheim

Rootserver vorhanden: Ja

  • Nachricht senden

3

Samstag, 12. Oktober 2013, 14:49

Hallo,

Erstmal vielen Dank für deine Antwort. Nur bin ich mit meinem Latein (was ich bis jetzt weiß/kann) hinaus. Könnte man mir dazu ein Beispiel sagen? Bzw. Dein Link geht leider nicht. :whistling:

MfG,
N3v4R

rain

Super Moderator

Beiträge: 1 410

Wohnort: Lutherstadt Wittenberg

Beruf: Anlagenmechaniker

Rootserver vorhanden: Ja

  • Nachricht senden

4

Samstag, 12. Oktober 2013, 16:15

Hallo,

Bzw. Dein Link geht leider nicht. :whistling:

MfG,
N3v4R



Das liegt auch daran das die sourcemod.net seite nicht erreichbar ist! Der Link würde schon gehen ;)





Impact

Super Moderator

Beiträge: 1 276

Rootserver vorhanden: Nein

  • Nachricht senden

5

Samstag, 12. Oktober 2013, 16:50

Vielleicht hilft das.

Spoiler Spoiler


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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#pragma semicolon 1

#include <sourcemod>
#include <colors>

#define VIP ADMFLAG_RESERVATION


// Variablen richtig taggen erleichtert einiges
// g -> Global
// h -> Handle
new Handle:g_hVipJoin;
new Handle:g_hipLeave;

public Plugin:myinfo = 
{
    name "BlaBla",
    author "BlaBla",
    description "",
    version "1.0",
    url ""
}

public OnPluginStart()
{
    // Wir geben den Convars bounds, dadurch können wir später GetConvarBool nutzen
    g_hVipJoin CreateConVar("sm_vip_join""1""BlaBla"_true0.0true1.0);
    g_hipLeave CreateConVar("sm_vip_leave""1""BlaBla"_true0.0true1.0);
}


// Etwas zu früh, OnClientPutInServer ist besser
public OnClientPutInServer(client)
{
    if(IsClientInGame(client))
    {
        // Benötigt kein +1
        //new String:name[MAX_NAME_LENGTH];
        
        // Nicht benötigt da %N
        //GetClientName(client, name, sizeof(name));
        
        // Handles checkt man nicht (in diesem Fall), man nutzt dieses Handle um die Convar zu prüfen
        // Am besten ist in diesem Falle mit GetConvarBool zu testen (true/false), das geht allerdings nur wenn die Convar Bounds hat
        // GetUserFlagbits ist nicht gut, man sollte CheckCommandAcces nutzen
        if(GetConVarBool(g_hVipJoin) && CheckCommandAccess(client""VIP))
        {
            // %N benötigt ein parameter
            PrintToChatAll("{lightgreen}[{green}VIP{lightgreen}] [%N] joined the game, respect him!"client);
        }
    }
}

public OnClientDisconnect(client)
{
    if(IsClientInGame(client))
    {
        // Benötigt kein +1
        //new String:sName[MAX_NAME_LENGTH];
        
        // Nicht benötigt da %N
        //GetClientName(client, sName, sizeof(sName));
        
        // Selbiges wie oben trifft auch hier zu
        if(GetConVarBool(g_hipLeave) && CheckCommandAccess(client""VIP))
        {
            PrintToChatAll("{lightgreen}[{green}VIP{lightgreen}] [%N] left the game!"client);
        }
    }
}



Anstatt statischen Rechten solltest du dir mal das Overridesystem anschauen (siehe CheckCommandAccess), das ist wesentlich flexibler.
Wieso du die Convars so seltsam nutzt verstehe ich nicht, ich hatte da ein ausführliches Video zu gemacht.
Bedenke bitte dass obiges nur eine Korrektur ist, und nicht die bestmögliche Methode darstellt.
Ich habe mir übrigens die Freiheit erlaubt deinen geposteten Code in einen Spoiler zu packen, sowie ihn in PHP-Tags zu packen, dadurch wird er lesbarer.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Impact« (12. Oktober 2013, 16:56)


Ähnliche Themen