wie mache ich eine /f chat oder für admin /a
geht das mit for oder
kann mir jemand einen script geben
MFG Piet
/f chat
- SylpheedW
- 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
-
-
Verschiedene Callbacks (Admin / Fraktionsabfragen),
for-Schleifen beim CMD -
for(new pID; pID<MAX_PLAYERS; pID++)
{
if(IsPlayerConnected(playerid) && FRAKTION[pID] == FRAKTION[playerid])
{
SendClientMessage(...);
}
}Ergänzen musst du eigentlich nurnoch FRAKTION..
pID steht in der For-Schleife für jede SpielerID, die wir durchgehen, die Playerid ist die ID der Person, die den Text losschickt.Musst es in einen CMD einbauen, oder du baust ne externe Funktion
stock SendFamilyMessage(playerid,text[])
{
for(new pID; pID<MAX_PLAYERS; pID++)
{
if(IsPlayerConnected(playerid) && FRAKTION[pID] == FRAKTION[playerid])
{
SendClientMessage(pID,FARBE,text);
}
}
} -
aber wie mache ich das ich habe ja PVar und dann mit for ??
und ich benutze dafür ocmd -
Musst das noch für dich individuell einstellen:
ocmd:f(playerid,params[])
{
new text[128];
if(sscanf(params,"s",text))return SendClientMessage(playerid,Rot,"/f [Text]");
format(text,sizeof(text),"Member %s: %s",SpielerName(playerid),text);
for(new i=0; i<GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerInFrakt(i,GetPVarInt(playerid,"Fraktion")))
{
SendClientMessage(i,Hellblau,text);
}
}
}
return 1;
}und für admin:
ocmd:a(playerid,params[])
{
new text[128];
if(sscanf(params,"s",text))return SendClientMessage(playerid,Rot,"/f [Text]");
format(text,sizeof(text),"Member %s: %s",SpielerName(playerid),text);
for(new i=0; i<GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
if("AdminAbfrage"(i,GetPVarInt(playerid,"Beruf")))
{
SendClientMessage(i,Hellblau,text);
}
}
}
return 1;
}brauchst dafür dini und ocmd
-
aber wie soll ich das if(IsPlayerInFrakt(i,GetPVarInt(playerid,"Fraktion"))) definieren
die pvar stimmt aber ich bekomme den error
C:\Dokumente und Einstellungen\Server\Desktop\samp03csvr_R5_win32\gamemodes\cut.pwn(128) : error 017: undefined symbol "IsPlayerInFrakt"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase1 Error.
-
Wie hast du denn IsPlayerInFrakt definiert?
So, IsPlayerInFrakt oder so, isPlayerInFrakt?
-
wei meinst du das
in meinem script habe ich das nirgendwo
ich mache ja selfmade -
Hey hier einmal der ocmd Befeh für den F Chatl :
ocmd:f(playerid,params[])
{
new text[128];
if(sscanf(params,"s",text))return SendClientMessage(playerid,COLOR_TOMATO,"/f [text]");
format(text,sizeof(text),"%s: %s",SpielerName(playerid),text);
for(new i=0; i<GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
if(isPlayerInFrakt(i,GetPVarInt(playerid,"Fraktion")))
{
SendClientMessage(i,COLOR_F,text);
}
}
}
return 1;
}Befehl für A Chat :
ocmd:a(playerid,params[])
{
new text[128];
if(!isPlayerAnAdmin(playerid,1))return 1;
if(sscanf(params,"s",text))return SendClientMessage(playerid,COLOR_TOMATO,"/a [Text]");
format(text,sizeof(text),"<<Admin %s: %s>>",SpielerName(playerid),text);
for(new i=0;i<GetMaxPlayers();i++)
{
if(IsPlayerConnected(i))
{
if(isPlayerAnAdmin(i,1))
{
SendClientMessage(i,COLOR_TOMATO,text);
}
}
}
return 1;
}Speichern :
stock SpielerSpeichern(playerid)
{
if(GetPVarInt(playerid,"loggedin")==1)
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));
}
return 1;
}Laden :
stock LoadAccount(playerid)
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));
SetPVarInt(playerid,"Fraktion",dini_Int(Spielerdatei,"Fraktion"));
SetPVarInt(playerid,"loggedin",1);
return 1;
}Dazu musst du das auch noch ganz unten ins Script machen
stock isPlayerInFrakt(playerid,fraktid)
{
if(GetPVarInt(playerid,"Fraktion")==fraktid)return 1;
return 0;
}stock isPlayerAnAdmin(playerid,rang)
{
if(GetPVarInt(playerid,"Adminlevel")>=rang)return 1;
return 0;
}/edit IsPlayerAnAdmin hinzugefügt etc.
-
wie überprüfst du denn, ob das ein admin b.z.w. ein FraktionsMember ist?
-
ein login register system habe ich ja auch mit dini schon
aber ich frage die frak mit
GetPVarInt(playerid, "Fraktion")
//und rang
GetPVarInt(playerid, "Frak-Rang")
habe bis jetzt
aber ja es geht jetzt wegen dem
stock von is Player in frak
da ich den nicht hatte
DankePS:dein Login ist wie mein
ist doch auch das von MrMonat oder?// edit
habe versucht es mit szock zu nutzen um später den rang anzuzeigen bekomme aber 1 error
hier der script
ocmd:f(playerid,params[])
{
new text[128];
if(GetPVarInt(playerid, "Frak-Rang") >1)return SendClientMessage(playerid,BLAU,"/f: Du bist in keiner Fraktion");
if(sscanf(params,"u",text))return SendClientMessage(playerid,BLAU,"/f [Text]");
Frak(playerid, text);//zeile 124
return 1;
}stock Frak(playerid, text)
{
new pname[MAX_PLAYER_NAME];
new tring[128];
GetPlayerName(playerid,pname,sizeof(pname));
format(tring,sizeof(tring),"Member %s: %s", pname, text);
for(new i=0; i<GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
if(isPlayerInFrakt(i,GetPVarInt(playerid,"Fraktion")))
{
SendClientMessage(i,BLAU,tring);
}
}
}
return 1;
}
und dieser error
C:\Dokumente und Einstellungen\Server\Desktop\samp03csvr_R5_win32\gamemodes\cut.pwn(124) : error 035: argument type mismatch (argument 2)
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase1 Error.
woran kann das liegen
argument 2 ist ja text aber was ist daran falsch -
stock isPlayerInFrakt(playerid,fraktid)
{
if(GetPVarInt(playerid,"Fraktion")==fraktid)return 1;
return 0;
}einfach bei deinen stocks einfügen müsste klappen
-
es geht aber alle aus der fraktion bekommen nur eine lehre zeile
statt dem text
wisst ihr warum -
breadfish.de
Hat das Thema geschlossen.