Hey, wie kann ich bspw. in den /d chat eine Nachricht per Script senden?
Frakchat Servermessage
- Moonraker136
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Du machst eine schleife durch alle spieler und dann abfragen ob sie eingeloggt/connectet ist und dann abfragen in welcher Fraktion er ist
-
Hallo Moonraker136,
Ich habe dir mal einen Fraktionschat gescriptet, du solltest dazu das Include "ocmd" haben und das Plugin "sscanf".
Bitte passe den Code noch an dein Script an.
ocmd:f(playerid,params[])
{
if(isPlayerInFrakt(playerid, 0))return SendClientMessage(playerid, COLOR_RED, "Du bist in keiner Fraktion.");
new string[300];
if(sscanf(params, "s[300]", string))return SendClientMessage(playerid, COLOR_RED, "Nutzung: /f [TEXT]");
new frakID = sInfo[playerid][fraktion];
format(string,sizeof(string), "** %s: %s", getPlayerName(playerid), string);
for(new i=0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))continue;
if(!isPlayerInFrakt(i, frakID))continue;
SendClientMessage(i, COLOR_BLUE, string);
}
return 1;
}Ich hoffe ich konnte helfen
MFG German_ScripterHD
-
ocmd:f(playerid,params[])
{
if(!isPlayerInFrakt(playerid, 0))return SendClientMessage(playerid, COLOR_RED, "Du bist in keiner Fraktion.");
new string[300];
if(sscanf(params, "s[300]", string))return SendClientMessage(playerid, COLOR_RED, "Nutzung: /f [TEXT]");
new frakID = sInfo[playerid][fraktion];
format(string,sizeof(string), "** %s: %s", getPlayerName(playerid), string);
for(new i=0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))continue;
if(!isPlayerInFrakt(i, frakID))continue;
SendClientMessage(i, COLOR_BLUE, string);
}
return 1;
}Wenn dann musst du bei deinem ersten IF abfragen, ob die playerid nicht in der Fraktion ist. Je nachdem, was die Funktion "isPlayerInFrakt" zurückgibt. Ich hoffe mal, sie gibt 1 (true) zurück wenn er in der Fraktion ist und 0 (false) wenn nicht.
-
Nein, er hat es schon richtig gemacht. Sonst würde es ja nur für Fraktion 0 gehen, so wie du das machst.
Allerdings ist es schlecht, eine Texteingabe mit 300 Zeichen zu machen, wenn SendClientMessage nur maximal 145 Zeichen anzeigen kann.Daher so:
ocmd:f(playerid,params[])
{
if(isPlayerInFrakt(playerid, 0)) return SendClientMessage(playerid, COLOR_RED, "Du bist in keiner Fraktion.");
new string[145];
if(sscanf(params, "s[145]", string)) return SendClientMessage(playerid, COLOR_RED, "Nutzung: /f [TEXT]");
format(string,sizeof(string), "** %s: %s", getPlayerName(playerid), string);
for(new i = 0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(!isPlayerInFrakt(i, sInfo[playerid][fraktion])) continue;
SendClientMessage(i, COLOR_BLUE, string);
}
return 1;
} -
Hast auch wieder recht, vorausgesetzt Fraktions-ID 0 bedeutet, man ist in keiner
-
breadfish.de
Hat das Thema geschlossen.