dödel
Capo
|
|
Registrierung: |
16.04.2007, 22:15 |
Lieblings-GTA: |
GTA: Vice City |
Wohnort: |
The Triangle |
Beiträge: |
3191
|
|
Erstmal klein am Rande:
false = 0 true = 1
Nicht damit Fragen aufkommen, weil man bei returns immer sowas hinschreibt.
Und auch nochmal zu erwähnen, was man nun wirklich wissen müsste:
// Text Werden wie kleine Notizen genommen und sind nur in .pwn (werden also nich compiled) genauso wie:
/* Text Text Text */
Und nun zum Wesentlichen:
Es gibt 2 Varianten: entweder mit /mute und /unmute oder mit per Array nur mit /mute.
(diese werden aber erst unten drankommen)
Aber erstmal alles von Anfang an:
Code: 1 2 3 4 5 6
| #define COLOR_RED 0xAA3333AA #define COLOR_WHITE 0xFFFFFFAA #define COLOR_ORANGE 0xFF8C00AA [color=#33FF00]//Farben nur wenn nicht vohanden einbauen[/color]
new muted[MAX_PLAYERS];
|
Kommt, wie die meisten wissen müssten/sollten, über Main.
Jetz wird (falls noch nicht vorhanden) erstmal das public OnPlayerText erstellt, was denn ungefär so aussehen sollte:
Code: 1 2 3 4 5
| public OnPlayerText(playerid, text[]) {
return 1; }
|
Und dann baut man die if Verzweigung ein. Also wenn muted = 1 .
Code: 1 2 3 4 5 6 7 8 9 10 11
| public OnPlayerText(playerid, text[]) {
if(muted[playerid] == 1) { SendClientMessage(playerid, COLOR_RED, "Du wurdest stummmgeschaltet und keiner kann dich hören"); return 0; }
return 1; }
|
"Du wurdest stummmgeschaltet und keiner kann dich hören" Ist der Text der bei dem Spieler angezeigt werden soll, der gemuted sprechen will.
return 1; Bedeutet, das das public angenommen/ausgeführt wird.
return 0; Bedeutet, das das public geblockt, also kein text vom spieler ausgegeben wird.
Und damit hätten wir schonmal die Abfrage ob man gemuted ist und die Definitionen (new, #define) vollständig.
//-----------------------------------------------------------------
Nun kommt das auszuführende Kommando:
Wenn nicht vorhanden sollte man entweder oben #include <Dini> zu stehen haben oder wenn man Dini nicht hat nur diesen code (am besten einfach ganz unten):
Code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| strtok(const string[], &index) { new length = strlen(string); new offset = index; new result[MAX_STRING]; while ((index < length) && (string[index] <= ' ')) { result[index - offset] = string[index]; index++; } while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1))) { result[index - offset] = string[index]; index++; } result[index - offset] = EOS; return result; }
|
Aber nun weiter im Thema...
Die folgenden codes kommen in:
public OnPlayerCommandText(playerid, cmdtext[])
wo unter anderem auch das stehen sollte:
new cmd[256]; new tmp[256]; new idx;
//und ganz wichtig hierfür
new muteid; new mutestring[256]; new mutename[256];
cmd = strtok(cmdtext, idx);
Obenstehende Variante #1:
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
| if(strcmp(cmd, "/mute", true) == 0) { tmp = strtok(cmdtext, idx); muteid = strval(tmp); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE, "Benutzung: /mute [Spieler-ID]"); return 1; }
if(IsPlayerAdmin(playerid)) { if(IsPlayerConnected(muteid)) { muted[muteid] = 1; GetPlayerName(muteid, mutename, sizeof(mutename)); format(mutestring, sizeof(mutestring), "%s wurde stummgeschaltet",mutename); SendClientMessageToAll(COLOR_ORANGE, mutestring); } else { format(mutestring, sizeof(mutestring), "%d ist kein aktiver Spieler",muteid); SendClientMessageToAll(COLOR_RED, mutestring); } } else SendClientMessage(playerid, COLOR_RED, "Du bist nicht als Admin eingeloggt"); return 1; }
|
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
| if(strcmp(cmd, "/unmute", true) == 0) { tmp = strtok(cmdtext, idx); muteid = strval(tmp); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE, "Benutzung: /mute [Spieler-ID]"); return 1; }
if(IsPlayerAdmin(playerid)) { if(IsPlayerConnected(muteid)) { muted[muteid] = 0; GetPlayerName(muteid, mutename, sizeof(mutename));
//Da man bei SendClientMessage keine Variablen normal verwenden kann, //kommt ein string zur Benutzung. (new mutestring[256];) den man per format definiert.
format(mutestring, sizeof(mutestring), "%s ist nicht mehr stummgeschaltet",mutename); SendClientMessageToAll(COLOR_ORANGE, mutestring); } else { format(mutestring, sizeof(mutestring), "%d ist kein aktiver Spieler",muteid); SendClientMessageToAll(COLOR_RED, mutestring); } } else SendClientMessage(playerid, COLOR_RED, "Du bist nicht als Admin eingeloggt"); return 1; }
|
"%s ist nicht mehr stummgeschaltet", mutename);
%s = Text %d = Zahl
mutename = Text/Zahl wovon
Obenstehende Variante #2:
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
| if(strcmp(cmd, "/mute", true) == 0) { tmp = strtok(cmdtext, idx); muteid = strval(tmp); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE, "Benutzung: /mute [Spieler-ID]"); return 1; }
if(IsPlayerAdmin(playerid)) { if(IsPlayerConnected(muteid)) { if(muted[muteid] == 0) { muted[muteid] = 1; GetPlayerName(muteid, mutename, sizeof(mutename)); format(mutestring, sizeof(mutestring), "%s wurde stummgeschaltet",mutename); SendClientMessageToAll(COLOR_ORANGE, mutestring); } else { muted[muteid] = 0; GetPlayerName(muteid, mutename, sizeof(mutename)); format(mutestring, sizeof(mutestring), "%s ist nicht mehr stummgeschaltet",mutename); SendClientMessageToAll(COLOR_ORANGE, mutestring); } } else { format(mutestring, sizeof(mutestring), "%d ist kein aktiver Spieler",muteid); SendClientMessageToAll(COLOR_RED, mutestring); } } else SendClientMessage(playerid, COLOR_RED, "Du bist nicht als Admin eingeloggt"); return 1; }
|
>Ich hoffe das, dies einigen geholfen hat und nicht zu unübersichtlich war 
[17.10.2007 23:20]Edit: hab noch einige kleine änderungen vorgenommen.
Außerdem wäre noch praktisch, wenn neue bei neuen Spielern mute ausgeschaltet wird. (das machst ja nicht von alleine bei id´s)
Also einfach mal in OnPlayerConnect:
Dieser Beitrag wurde insgesamt 2 mal editiert. Das letzte Mal 13.11.2007, 13:40 von dödel.
|
|