Das ist die Lösung für...
Und du meinst das wüsste ich nicht und musst hier jetzt rum spammen?
Ich redifiniere in meinem Code ganz bestimmt nicht MAX_PLAYERS, dafür ist er nicht da also hör jetzt auf zu spammen!
Das ist die Lösung für...
Und du meinst das wüsste ich nicht und musst hier jetzt rum spammen?
Ich redifiniere in meinem Code ganz bestimmt nicht MAX_PLAYERS, dafür ist er nicht da also hör jetzt auf zu spammen!
#undef MAX_PLAYERS
#define MAX_PLAYERS 100
Und das bringt jetzt was?
Das ist ja schön das du weißt wie man ein Makro neu defined, jedoch will das keiner wissen.
dcmd_lock(playerid,params[])
{
#pragma unused params
if(SpielerInfo[playerid][pFraktion] == 1)
{
new Float: X, Float: Y, Float: Z;
for(new i;i<sizeof(Streifenwagen);i++)GetVehiclePos(i, X,Y,Z);
if(IsPlayerInRangeOfPoint(playerid,2.0, X, Y, Z))
{
if(SpielerInfo[playerid][pFraktion] == 1) // Ersetzen mit der Abfrage ob das Fahrzeug abgeschlossen ist.
{
GameTextForPlayer(playerid,"~g~FAHRZEUG AUFGESCHLOSSEN",1000,3);
}
else
{
GameTextForPlayer(playerid,"~r~FAHRZEUG ABGESCHLOSSEN",1000,3);
}
}
}
else
{
SendClientMessage(playerid,FARBE_GRAU3,"Du hast kein Auto");
}
return 1;
}
Du musst in der Schleife auch die VehiclePos abfragen
Dann nutz da bitte MAX_PLAYERS das ist etwas schneller als die Variante
Es gibt Leute die lassen MAX_PLAYERS aber auf 500 und das geht dann sicher nicht schneller als GetMaxPlayers(); bei einem 100Slot Server.
Ich release heute mal ein kleines System welches ich letzte Nacht kurz geschrieben habe. Es ist dazu da, einem Spieler einen Dialog anzuzeigen, zb. Mit allen connected Spielern oder mit allen Admins etc. Man kann dann ganz leicht unter OnPlayerDialogResponse das Listitem benutzen.
Als erstes erstellen wir ein Makro für den Dialog.
#define DIALOG_PLAYERS 1525 //1525 = Eindeutige DialogID.
Dann brauchen wir noch eine Variable in der das Listitem zwischengespeichert wird.
new item[MAX_PLAYERS][MAX_PLAYERS]; //Das 1. MAX_PLAYERS ist dafür da das das Array für jeden Spieler einzeln erstellt wird. Das 2. ist für die einzelnen Listitems da.
Dann der Befehl:
if(strcmp("/players", cmdtext, true) == 0)//Standart-Befehl halt
{
new iItem;//Variable damit das listitem richtig gesetzt wird
new string[MAX_PLAYER_NAME*MAX_PLAYERS];//String
new dName[MAX_PLAYER_NAME];//String für den Namen
for(new i; i<MAX_PLAYERS; i++)//Schleife die alle Spieler durchgeht
{
if(!IsPlayerConnected(i))continue;//Wenn Spieler nicht Connected -> Continue
//if(!IsPlayerAdmin(i))continue; <- Würde alle RCON-Admins anzeigen.
GetPlayerName(i, dName, sizeof dName);//String mit Namen setzen
format(string, sizeof string, "%s\n%s", string, dName);//String für den Dialog erweitern + nächsten Namen reinsetzen
item[playerid][iItem] = i;//Listitem auf Playerid setzen
iItem ++;//Listitem hochsetzen damit es das nächste ist
}
ShowPlayerDialog(playerid, DIALOG_PLAYERS, DIALOG_STYLE_LIST, "Spieler:", string, "Weiter","Abbrechen");//Dialog anzeigen
return 1;
}
Dann noch ganz simpel bei OnPlayerDialogResponse:
if(dialogid == DIALOG_PLAYERS)//Dialogid abfragen
{
if(!response)return 1;//Wenn er auf Abbrechen drückt -> Abbrechen
//Hier kannst du nun item[playerid][listitem] für den gewählten Spieler verwenden.
SendClientMessage(item[playerid][listitem], -1, "Dein Name wurde angeklickt!");
}
Wenn ihr noch Fragen habt, schreibt sie einfach hier im Thema!
Bei Bugs natürlich auch
MfG.
Du bist zu leise.
Für die die meinen sie könnten dich gut hören:
Macht ein anderes LP von Jemand anderen an, stellt es so das ihr es gut hören könnt und dann macht ihr seins ein mit der gleichen Lautstärke.
Er hat doch nur des ! gelöscht ??
Aber wenn man das ! weglässt ist jeder kill ein Teamkill.
Nein da muss ein == ?
if(TeamVonSpieler1 == TeamVonSpieler2)// Wenn TeamVonSpieler1 ist das selbe wie TeamVonSpieler2 dann:
{
//TEAMKILL
}
Bei dir ist es:
if(TeamVonSpieler1 != TeamVonSpieler2)// Wenn TeamVonSpieler1 ist nicht das selbe wie TeamVonSpieler2 dann:
{
//TEAMKILL
}
Das ist das selbe?
Nein ist es nicht, die Abfrage ist anders.
Wir sollen aber glaube ich nicht eine biblische Geschichte direkt nacherzählen sondern eher auf das heutige Leben beziehen..
Muss die Person zeigen das irgendwas auch Heute noch so ist, oder kann es auch so sein, das es heute auch anders ist?
Ich würde nämlich evtl. davon schreiben das Jesus niemals was gepredigt hat, was er nicht selber eingehalten hat wie zB. Gewalt anwenden.
ocmd:tickets(playerid,params[])
{
#pragma unused params
if(!isPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,HELLROT,"AdmCmd: Du besitzt keine Rechte, um diesen Befehl zu benutzen!");
if(GetPVarInt(playerid,"AdminDienst")==0)return SendClientMessage(playerid,HELLROT,"AdmCmd: Du musst in den Dienst gehen, um diesen Befehl zu benutzen!");
new bool:var;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPVarInt(i,"ReportTicket") == 1 && IsPlayerConnected(i))
{
var = true;
new string[128];
format(string,sizeof(string),"[OFFEN] Name: %s | ID: %i",SpielerName(i),i);
SendClientMessage(playerid,LILA,string);
}
}
if(var == false)
{
SCM(playerid,HELLROT,"AdmCmd: Derzeit sind keine Report Tickets offen.");
}
return 1;
}
Beavis:
Ich dachte du wärst so schlau das du weißt das wir wissen müssen wie deine IsOnBlackList funktioniert und ob sie überhaupt funktioniert.
Bei mir gibts nur die Klammern im Befehl
Hast du TeamViewer? Dann mache ich es dir eben schnell.
Immer noch unter OnPlayerCommandText ?
Wie bereits geschrieben:
Zitatnur ganz am Ende vom OnPlayerCommandText das return 0; mit meinem Code ersetzen.
Und @Juan_Corleone:
classid ist nicht die SkinID. Guck mal im Wiki Nach. Deine erste AddPlayerClass im Script hat die classid 0.
Guck mal per Print wie oft LoadPlayer(); ausgeführt wird.
Unter OnPlayerRequestClass mit if(classid == ?) arbeiten.
Beim ersten muss noch sowas rein:
AdminVariable = rank;
Beim zweiten (Aus freier Hand geschrieben + ungetestet):
new string[500];
for(new i; i<GetMaxPlayers(); i++)
{
if(!IsPlayerConnected(i))continue;
format(string, sizeof string, "%s\n%s", SpielerName(i), string);
}
ShowPlayerDialog(playerid, MAXPLAYERS, DIALOG_STYLE_LIST, "{FF0066}A{FFFFFF}dmin {FF0066}C{FFFFFF}ontrol {FF0066}P{FFFFFF}anel", string,"Ausführen","Spielen");
Wenns nicht klappt schick mir TV Daten oderso.
Schon mal versucht beim Login SpawnPlayer(); weg zu nehmen?
Was ist playerid und was ist forplayerid?
Playerid = Der der weg geht
Killerid = Der dem playerid halt ausgestreamt wird.
EliteBread:
Nein, nur ganz am Ende vom OnPlayerCommandText das return 0; mit meinem Code ersetzen.
Wie kann ich einen Timer für playerid killen?
Mit einer Variable:
//oben:
new BankraubTimer[MAX_PLAYERS];
//Benutzung:
BankraubTimer[playerid] = SetTimerEx(...);
Und dann:
KillTimer(BankraubTimer[playerid]);
EliteBread:
Bei OnPlayerCommandText statt dem return 0; am ende dieses hier:
return SendClientMessage(playerid, COLOR_RED, "Diesen Befehl gibt es nicht!");