Hey
Meine 1. Frage: Funktioniert der /f chat so ? Also das nur die fraktion wo der spieler drin ist das lesen kann ?
Meine 2.Frage: Wieso wird der Spieler nach 5 Sekunden nicht entfreezt ?
Hey
Meine 1. Frage: Funktioniert der /f chat so ? Also das nur die fraktion wo der spieler drin ist das lesen kann ?
Meine 2.Frage: Wieso wird der Spieler nach 5 Sekunden nicht entfreezt ?
Zu 1:
ich denke nicht das das funktionieren wird, da die for-schleife die nachricht an alle spieler sendet die in der fraktion 1,2 und 3 sind, du müsstest eine variable definieren, die die fraktion des spielers, der die nachricht sendet, liest und sie statt der fraktionsnummer einfügen
Zu 2:
Wann genau tritt der fehler auf, nur am 1. CP oder was genau passiert oder auch nicht
Also wenn ich in den ersten checkpoint fahre , kommt Müll wird aufgeladen ... , und ich werde gefreezt , jz schon 30 min
Ohne Freezen geht alles , aber ich möchte das das realistischer ist also mit freezen
schreib das "Muelltour" im SetTimer mal klein also "muelltour"
Edit:
ich empfehle dir SetTimerEx zu nehmen, da du damit einen timer nur für einen spieler machen kannst
Beispiel:
SetTimerEx("muelltour",5000,0,"i",playerid);
Danke klappt
Kannst du mir ein bsp geben für Frage1 ? Bin noch nicht so gut in sachen scripten
ich konnte das jetzt ned so rauslesen benutzt du SetPlayerTeam um dem spieler ein team zuzuweisen oder wie?
also mit getplayerteam würde es so gehen:
for(new i = 0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(GetPlayerTeam(i) == GetPlayerTeam(playerid))
{
SendClientMessage(i,die farbe,die nachricht);
}
}
Ich habe einen
stock isPlayerInFraktion(playerid, fraktionsid)
{
if(GetPVarInt(playerid,"Fraktion") == fraktionsid) return 1;
return 0;
}
, heisst ich muss
for(new i = 0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(isPlayerInFraktion(i) == isPlayerInFraktion(playerid,1))
{
SendClientMessage(i,Hellgrau, Blubb);
}
}
so wird aus jedem aus der fraktion blubb geschrieben , und die anderen können es nicht lesen ?
ich finde die methode ehrlich gesagt etwas umständlich, also ich würde es so machen:
if(GetPVarInt(i,"Fraktion") == GetPVarInt(playerid,"Fraktion"))
aber so können ja zivis auch /f benutzen :\
Dann mach noch eine if-Abfrage, ob er in Fraktion >=1 ist, falls Zivilist Fraktion 0 ist.
Wo muss die dann hin ? Habs gerade so
for(new i = 0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(GetPVarInt(i,"Fraktion") == GetPVarInt(playerid,"Fraktion"))
{
SendClientMessage(i,Hellgrau, text);
}
else if(isPlayerInFraktion(playerid >=1))
{
SendClientMessage(playerid,Hellgrau,"Du bist in keiner Fraktion.");
return 0;
}
}
klappt aber immernoch als zivi
Bevor du den Befehl machst /f machst, musst du die if-Abfrage machen. In deinem Quelltext seh ich nirgends, wann ein Spieler /f macht, was passiert.
Ich würde es so machen:
Das hier ganz unten rein:
public SendFamilyMessage(color, string[])
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(SpielerInfo[i][pFraktion] !=0)
{
SendClientMessage(i, color, string);
}
}
}
}
und irgendwo im Script:
ocmd:f(playerid,params[])
{
new string[128], pID;
new fraktion1 = mysql_GetInt("userdata", "Fraktion", "Name", SpielerInfo[pID][pName]);
new fraktion2 = mysql_GetInt("userdata", "Fraktion", "Name", SpielerInfo[playerid][pName]);
if(fraktion1 == fraktion2)
{
if(sscanf(params,"s",string))return SendClientMessage(playerid,farbe_blau,"/f [Text]");
format(string,sizeof(string),"%s %s: %s", FraktionsRang(playerid),SpielerInfo[playerid][pName], string);
SendFamilyMessage(COLOR_FCHAT,string);
}
return 1;
}
Musst bloß mal gucken, ob du mysql benutzt.
Gruß Dario