Hallo,
muss man ein für einen Spieler erstelltes 3d textlabel bei onplayerdisconnect löschen??
Beiträge von IceWave
-
-
aber funktionieren würde es trotzdem oder? außer ich hab durch einen Bug mehr als 1 Fahrzeug.
Weil es ist ja eigentlich schon auf 1 begrenzt durch die if Abfrage.Danke schonmal
-
Kann man auch if(p_veh[playerid]==1) schreiben oder ?
-
hi, ich habe mal eine Frage zu Variablen.
Kann ich z.b bei einem Fahrzeugverleih wenn ich das Car dann nach 10 Min löschen will,
das Fahrzeug beim erstellen einfach in einer Variable speichern?
Z.b. new verleih = AddStatic.....
Oder muss man dass spezifisch für den Spieler machen? Weil so kann man ja nur 1 Fahrzeug darin speichern oder ? -
hi, kurze Frage, kann ich wenn ich ShowPlayerMarkers auf 0 setze
trotzdem z.b. noch bei /aduty einen Marker setzen ? -
Sie werden halt dann wenn ich wieder in das Auto einsteige was ich kaufen möchte angezeigt.
Oder eben wenn man in ein anderes Auto einsteigt gelöscht.Oder ich mache es so, die Textdraws die sich nicht verändern create ich bei OnGameModeInit und die 2 die sich verändern,
also Fahrzeugname und Preis wenn man ins Auto einsteigt und wenn man es gekauft hat oder nicht werden sie gelöscht.Ist das sinnvollste oder ?
-
Ich habe beim Autohaus Textdraws gemacht, die für den Player erstellt werden. Ist es wahrscheinlich sinnvoll diese dann beim Kaufabschluss wieder zu löschen oder?
-
Ich bins leider nochmal, habe das jetzt mit den Case probiert:
GetPlayerRangName(playerid)
{
new rName[32]="Co Leader des SFPD";
switch(sInfo[playerid][fraktion])
{
case 1:
{
switch(sInfo[playerid][frang])
{
case 1: rName="Azubi des LSPD";
case 2: rName="Polizist I";
case 3: rName="Polizist II";
case 4: rName="Polizist III";
case 5: rName="Co Leader des LSPD";
case 6: rName="Leader des LSPD";
}
}
case 2:
{
switch(sInfo[playerid][frang])
{
case 1: rName="Azubi des SFPD";
case 2: rName="Polizist I";
case 3: rName="Polizist II";
case 4: rName="Polizist III";
case 5: rName="Co Leader des SFPD";
case 6: rName="Leader des SFPD";
}
}
}
return 1;
}ocmd:f(playerid,params[])
{
new name[MAX_PLAYER_NAME], text[128];
if(isPlayerInFrakt(playerid,0))return SendClientMessage(playerid,ROT,"Du bist in keiner Fraktion!");
if(sscanf(params,"s[128]",text))return SendClientMessage(playerid,ROT,"Befehl: /f 'Nachricht'");
new fID = sInfo[playerid][fraktion];
GetPlayerName(playerid,name,sizeof(name));
format(text,sizeof(text),"**((%s %s: %s ))**",GetPlayerRangName(playerid),name,text);
for(new i=0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))continue;
if(!isPlayerInFrakt(i,fID))continue;
SendClientMessage(i,HELLBLAU,text);
}
return 1;
}Habe aber jetzt einen komischen Fehler.
Wenn ich mir z.b einen Rang gebe mit /giverang meineID 3Dann steht wenn ich als nächsten Befehl /f test schreibe in der Zeile: **((meineID 3 Kontrax: test))**
Ich hoffe ihr könnt mir weiterhelfen, verstehe dass gerade gar nicht:D
-
Ok habs verstanden Danke!
-
Wenn du nichts dahinter schreibst (so wie du es hattest), dann wird automatisch die nächste Zeile genommen.
Es ist also immer besser es direkt dahinter zu schreiben, oder die geschweiften Klammern zu verwenden.
Also ist die if Abfrage dann eigentlich wirkungslos wenn nichts dahinter steht oder?und wenn man return 0 dahinter schreibt? Oder muss return 1 hin?
Und ist es besser mit case zu arbeiten?
Noch was kleines, in den Tutorials habe ich immer gesehen dass Funktionen ohne stock erstellt werden? Für was braucht man diese dann überhaupt?Danke schonmal!
-
Ok, Danke aber hätte es mit dieser Abfrage trotzdem funktioniert?
if(sInfo[playerid][frang] > 0)
Oder muss man wenn man es so macht immer reinschreiben was dann passieren soll?
Also so:
if(sInfo[playerid][frang] > 0)
{
Rang größer 0
}
else
{
Rang kleiner gleich 0
}und nochwas dazu, kann ich statt der Nachricht nach dem return auch einfach return 0; schreiben? Das sagt ja dass die Funktion abgebrochen wird oder?
-
hat das einen Grund, warum du im stock oben den rName = Co Leader des SFPD gesetzt hast?
-
ocmd:f(playerid,params[])
{
new name[MAX_PLAYER_NAME], text[128];
if(isPlayerInFrakt(playerid,0))return SendClientMessage(playerid,ROT,"Du bist in keiner Fraktion!");
if(sscanf(params,"s[128]",text))return SendClientMessage(playerid,ROT,"Befehl: /f 'Nachricht'");
new fID = sInfo[playerid][fraktion];
GetPlayerName(playerid,name,sizeof(name));
if(isPlayerInFrakt(playerid,1))
if(sInfo[playerid][frang] > 0)
{
format(text,sizeof(text),"**((%s %s: %s ))**",LSPDRangName[sInfo[playerid][frang]-1],name,text);
}
else if(isPlayerInFrakt(playerid,2))
{
format(text,sizeof(text),"**((%s %s: %s ))**",MedicRangName[sInfo[playerid][frang]-1],name,text);
}
for(new i=0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))continue;
if(!isPlayerInFrakt(i,fID))continue;
SendClientMessage(i,BLAU,text);
}
return 1;
}So, Problem ist jetzt wenn ich in Fraktion 1 mit /f hallo schreibe steht das richtig da: **((Rangname Kontrax: Hallo))**
Bei Fraktion 2 siehts so aus im Chat: Hallo -
isPlayerInFrakt(playerid,f_id)
{
if(sInfo[playerid][fraktion]==f_id)return 1;
return 0;
} -
Jetzt gehts, Fehler war ich arbeite mit 6 Rängen und hatte oben erst 2 Rangnamen hinzugefügt
Hab aber trotzdem die Abfrage noch eingefügt.else if(isPlayerInFrakt(playerid,2)) habe ich hier was falsch gemacht?
Die Rangnamen werden jetzt nur in Fraktion 1 angezeigt, bei Fraktion 2 wird nur der eingegebene Text geschrieben.
Genauso wenn ich mir Rang 0 gebe wird auch nur der eingegebene Text geschrieben, ohne Rangname -
Hi, bekomme den Fehler dass der Befehl nicht existiert
ocmd:f(playerid,params[])
{
new name[MAX_PLAYER_NAME], text[128];
if(isPlayerInFrakt(playerid,0))return SendClientMessage(playerid,ROT,"Du bist in keiner Fraktion!");
if(sscanf(params,"s[128]",text))return SendClientMessage(playerid,ROT,"Befehl: /f 'Nachricht'");
new fID = sInfo[playerid][fraktion];
GetPlayerName(playerid,name,sizeof(name));
if(isPlayerInFrakt(playerid,1))
{
format(text,sizeof(text),"**((%s %s: %s ))**",LSPDRangName[sInfo[playerid][frang]-1],name,text);
}
else if(isPlayerInFrakt(playerid,2))
{
format(text,sizeof(text),"**((%s %s: %s ))**",MedicRangName[sInfo[playerid][frang]-1],name,text);
}
for(new i=0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))continue;
if(!isPlayerInFrakt(i,fID))continue;
SendClientMessage(i,BLAU,text);
}
return 1;
}
Liegt dass dran dass ich die Schleife an der falschen Stelle habe? -
-
-
-
Funktioniert schon, so:
if(sInfo[playerid][adminlevel] == 1)
{
Rangnameadmin = "Supporter";
}
else if(sInfo[playerid][adminlevel] == 2)
{
Rangnameadmin = "Moderator";
}
else if(sInfo[playerid][adminlevel] == 3)
{
Rangnameadmin = "Super Moderator";
}
else if(sInfo[playerid][adminlevel] == 4)
{
Rangnameadmin = "Administrator";
}
else if(sInfo[playerid][adminlevel] == 5)
{
Rangnameadmin = "Projektleiter";
}Aber ich hab mal gehört dass es besser ist case zu verwenden, darum immer noch die Frage, ob jemand weiss was falsch ist daran