Hi,
ich habe mal eine frage. Wie mache ich so ein /d chat das auch nur die leute die nachricht kriegen die in der Fraktion sind. PS: dini
Hi,
ich habe mal eine frage. Wie mache ich so ein /d chat das auch nur die leute die nachricht kriegen die in der Fraktion sind. PS: dini
Hast du nen Adminchat ? Wenn ja, das gleiches Prinzip.
Schleife mache, abfragen ob i in der Fraktion XY ist und dann die Message senden.
Ne das ist es ja xD wenn ich ein /d chat habe hatte ich vor auch ein /a chat zu machen usw..
stock SendClientMessageToFrakMembers(frakid,color,message[]) //Oder wie auch immer das heißen soll.
{
for(new i=0;i<MAX_PLAYERS;i++)
{
//Fraktionsabfrage
//Nachricht senden
}
return 1;
}
Hier ein typsicher Adminchat stock
stock SendAdminMessage(color,const string[])
{
for(new i; i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
if(isPlayerAnAdmin(i,1))
{
SendClientMessage(i, color, string);
}
}
}
return 1;
}
Den kannst du dementsprechent ändern.
Und wenn du nen IsPlayerAnAdmin oder so stock hast, kannst du den auch ändern ihn zb. IsPlayerStaatsFraktion etc PP
Naja wenn du das ganze mit ocmd machst ist es recht einfach:
Ich habe das ganze mit Dynamischen Rangsystem gemacht, sodass man die Ränge über ein Control Panel ändern kann.
ocmd:d(playerid,params[])
{
if(SpielerInfo[playerid][pMember] >=1 && SpielerInfo[playerid][pMember] <= 4 || SpielerInfo[playerid][pLeader] >= 1 && SpielerInfo[playerid][pLeader] <= 4 || SpielerInfo[playerid][pMember] == 12 || SpielerInfo[playerid][pLeader] == 12)
{
new text[256];
if(sscanf(params,"s",text))return SendClientMessage(playerid,COLOR_LIGHTBLUE,"INFO: Verwende /d [Text]");
if(SpielerInfo[playerid][pMember] >= 1)
{
new query[128], frak, rang;
frak = SpielerInfo[playerid][pMember];
rang = SpielerInfo[playerid][pRang];
format(query,sizeof(query),"SELECT Rangname FROM rangs WHERE fraktion = '%i' AND rang = '%i'",frak,rang);
mysql_function_query(dbhandle,query,true,"DChatRang","is",playerid,text);
return 1;
}
else if(SpielerInfo[playerid][pLeader] >= 1)
{
new query[128], frak, rang;
frak = SpielerInfo[playerid][pLeader];
rang = 7;
format(query,sizeof(query),"SELECT Rangname FROM rangs WHERE fraktion = '%i' AND rang = '%i'",frak,rang);
mysql_function_query(dbhandle,query,true,"DChatRang","is",playerid,text);
return 1;
}
else
{
SendClientMessage(playerid,COLOR_RED,"Es ist ein Fehler aufgetreten. Bitte wende dich an einen Supporter.");
}
}
else
{
SendClientMessage(playerid,COLOR_RED,"Das können nur Staatsbeamte!");
}
return 1;
}
public DChatRang(playerid,text[256])
{
new Rang[64],Name[64],CText[256];
cache_get_field_content(0,"Rangname",Rang,dbhandle,sizeof(Rang));
GetPlayerName(playerid,Name,sizeof(Name));
format(CText,sizeof(CText),"%s %s: %s",Rang,Name,text);
for(new i=0;0<GetMaxPlayers();i++)
{
if(SpielerInfo[i][pMember] >=1 && SpielerInfo[i][pMember] <= 4 || SpielerInfo[i][pLeader] >= 1 && SpielerInfo[i][pLeader] <= 4 || SpielerInfo[i][pMember] == 12 || SpielerInfo[i][pLeader] == 12)
{
SendClientMessage(i,0xFF7800FF,CText);
}
}
return 1;
}
Ist allerdings mit MySQL
Ich habe 2 errors ocmd:d(playerid,params[])
{
new string[128];
if(sscanf(params,"s",string2))return SendClientMessage(playerid,rot,"INFO: /d [Text]");
format(string,sizeof(string),"* %s: %s",PlayerName(playerid),string2);
SendCopMessage(rot,string);
return 1;
}
C:\Dokumente und Einstellungen\Maurice\Desktop\Maurice RolePlay\gamemodes\CaR.pwn(595) : error 017: undefined symbol "string2"
C:\Dokumente und Einstellungen\Maurice\Desktop\Maurice RolePlay\gamemodes\CaR.pwn(596) : error 017: undefined symbol "string2"
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
2 Errors.
// hier ist auch was falsch stock SendCopMessage(color,const string[])
{
for(new i; i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
if(SetPVarInt,"Cop",i,1) // Das hier
{
SendClientMessage(i, color, string);
}
}
}
return 1;
}
if(sscanf(params,"s",string2))return SendClientMessage(playerid,rot,"INFO: /d [Text]");
Du hast kein new string2
Mach aus string2 bei der sscanf-Abfrage und Formatierung string.
So geht nun nur noch den letzten fehler: stock SendCopMessage(color,const string[])
{
for(new i; i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
if(SetPVarInt,"Cop",i,1)
{
SendClientMessage(i, color, string); //HIER
}
}
}
return 1;
}
C:\Dokumente und Einstellungen\Maurice\Desktop\Maurice RolePlay\gamemodes\CaR.pwn(1065) : error 076: syntax error in the expression, or invalid function call
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
Das Cop?!?
GetPVarInt statt SetPVarInt
Hab so schon hinbekommen.
Nächstes:
Wenn ich im normal chat einfach t schreibe kommt es 2mal einmal
Maurice.: t
Maurice.: t
public OnPlayerText(playerid, text[])
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerInRangeOfPoint(i,30.0,x,y,z))
{
new string[200];
format(string,sizeof(string),"%s sagt: %s",PlayerName(playerid), text);
SendClientMessage(i,0xF0F0F0FF, string);
}
}
return 1;
}
return 1; muss return 0; sein
lass das return 1; stehen mach aber davor (also in den geschweiften klammern) ein return 0 hin
Schreib es so, dann ist es besser:
public OnPlayerText(playerid, text[])
{
new Float:Q[3],string[128],i;
GetPlayerPos(playerid,Q[0],Q[1],Q[2]),format(string,sizeof(string),"%s sagt: %s",PlayerName(playerid), text);
for(; i<MAX_PLAYERS; i++) {
if(!IsPlayerConnected(i) || !IsPlayerInRangeOfPoint(i,30.0,Q[0],Q[1],Q[2])) continue;
SendClientMessage(i,0xF0F0F0FF, string);
}
return 0;
}
mfg.
if(SetPVarInt,"Cop",i,1)
GetPVarInt
Sollte dir selber auffallen
Einfach denn Admin. Chat kopieren
Anstatt /a ein /d machen dann anstatt abzufragen ob der player Admin ist abfragen ob er cop ist.
Mit freundlichen Grüßen