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