Suche im Code nach
new Adminname
und poste die Zeile.
Suche im Code nach
new Adminname
und poste die Zeile.
Du gibst /admins ein, ja? Was passiert dann?
Was passiert, wenn du den /admins Befehl eingibst?
Falls "Unknown Command" kommt: Wie ist "Adminname" definiert?
Habs noch nicht getestet, sollte aber soweit passen!
Sieht gut aus. Ich kenne zwar dein System nicht, aber das sollte so klappen.
Wenn nicht, kannst es ja debuggen, oder nochmals nachfragen, falls ein Debugging dir nicht hilft.
Event[ename] = strval(inputtext);
zu:
format(Event[ename], 35, inputtext);
Die Nachricht beim Start kommt nicht, weil SendClientMessageToAll keine mehrzeiligen Nachrichten unterstützt, und maximal 144 Zeichen (keine 200) ausgeben kann.
Gebe es in einem Dialog aus.
ocmd:admins(playerid,params[])
{
new str[1024],p_name[MAX_PLAYER_NAME];
for(new i = 0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(GetPVarInt(i,"Adminlevel") <= 0) continue;
GetPlayerName(i, p_name, MAX_PLAYER_NAME);
format(str,sizeof(str),"%s%s:: %s\n",str,Adminname[GetPVarInt(i,"Adminlevel")],p_name);
}
if(strlen(str))return ShowPlayerDialog(playerid,dAdmins,DIALOG_STYLE_MSGBOX,"{FFCC00}---> Army Member Online <---",str,"Okay","");
else return ShowPlayerDialog(playerid,dAdmins,DIALOG_STYLE_MSGBOX,"--> Army Member Offline <--","Keiner Da!","Okay","");
}
Du kannst den string des Streams ja in einer Spielervariable speichern, wenn du es startest (die Funktion könnte man auch hooken) und dann über die Variable auch wieder abfragen, ob der Stream gerade in dieser Variable steht.
Wenn der Stream beendet wird, schreibst du einfach LEER in die Variable.
Kannst es ja erst mal selbst ausprobieren ob du es so hinbekommst, und wenn nicht nochmal Bescheid geben bzw den Code posten den du bis dahin hast. Aber ich bin zuversichtlich, dass du es hinbekommst, ist nicht viel Aufwand.
Du musst mit SetTimerEx arbeiten:
SetTimer("bus_driver1",20000,false);
zu:
SetTimerEx("bus_driver1",20000,false, "d", playerid);
Natürlich bei allen diesen Bus-Timern.
Mit den geschwungenen Klammern macht man das eigentlich nicht, wenn du hinter der Abfrage die Nachricht ausgibst.
Und die Nachricht am Ende macht bei dieser Klammersetzung wenig Sinn, da die Nachricht nie erreicht wird.
Das musst du etwas umstellen.
Bei passt muss das Zeugs hin mit dem du die Handschellen anlegst.
Oder du machst es so:
GetPosVorSpieler(playerid, 1.0, x, y, z);
if(!IsPlayerInRangeOfPoint(pID, 1.0, x, y, z)) return SendClientMessage(playerid, rot, "Spieler nicht vor dir.");
//cuff Zeug hier
Nein.
GetPosVorSpieler(playerid, 1.0, x, y, z);
if(IsPlayerInRangeOfPoint(pID, 1.0, x, y, z))
{
//passt
}
Wir fragen erst nach der Position von dem Spieler der den Befehl eingibt und fragen dann ob der andere Spieler im Bereich vor dem Spieler ist, der den Befehl eingegeben hat.
Abfragen ob der Spieler IsPlayerInRangeOfPoint von http://forum.sa-mp.de/gta-mult…eschnipsel-56#post1890617 ist.
Also GetPosVorSpieler von dem der den Befehl eingibt, und dann fragen ob der andere Spieler IsPlayerInRangeOfPoint von den zurückgegebenen Koordinaten ist.
Hast du es schon mal an einem anderen Rechner versucht? Passiert es da auch?
Hat dein Spiel Mods, die so etwas verursachen könnten?
Am Code dürfte es eigentlich nicht liegen, außer du hast irgendwo eine Abfrage drin, ob der Spieler in LS ist.
Nein, neu erstellen brauchst du sie nicht. Du kannst einfach die 4 Labels mit einem Loop durch alle Spieler für jeden Spieler updaten, oder eben nur für den Spieler für den du es willst. Das machst du einfach über die Variable, da das Label ja nur für den einen Spieler sichtbar ist.
Destroy und Create hintereinander macht keinen Sinn, da kannst du Update verwenden.
Das liegt daran, dass du keinen HEX Wert als VARCHAR speichern darfst, der dann über strval zu einem Integer konvertiert wird.
Du musst als INT die Farbe speichern, und auch den Integer Wert der Farbe in die Datenbank speichern.
Das kannst du entweder mit einem Konverter herausfinden, dem Taschenrechner in Windows, oder indem du es hart in den Code schreibst:
printf("%d", 0x008080FF);
Es muss in der Datenbank eine Zahl stehen, kein HEX Wert.
Du kannst zwar auch den HEX Wert speichern, aber dann brauchst du einen Code der dir das konvertiert etc, und das ist nicht wirklich sinnvoll.
stock IsCoordBehindVehicle(veh,Float:x,Float:y,Float:z)
{
new Float:size[3]; GetVehicleModelInfo(GetVehicleModel(veh), VEHICLE_MODEL_INFO_SIZE, size[0],size[1],size[2]);
new Float:vangle; GetVehicleZAngle(veh,vangle);
x = floatadd(x,(-size[0]* floatsin(-vangle,degrees)));
y = floatadd(y,(-size[1]* floatcos(-vangle,degrees)));
if(IsVehicleInRangeOfPoint(veh,3.0,x,y,z)) return 1;
return 0;
}