Auch bei einem Objektstreamer können nur maximal 1000 Objekte gleichzeitig eingestreamt werden. Ich weiß nicht wie nah alle Objekte zusammen stehen. Aber wenn alle Objekte nah beieinander sind, kann es passieren, dass diese nicht alle gestreamt werden können.
Beiträge von Hagi
-
-
Wie sind denn die Zählvariablen deklariert? Wenn du die über einen index, also als Array, gemacht hast, kannst du die via for durchlaufen.
-
-
Hast du den auch aus deinem Login o.Ä rausgenommen? Nicht, dass der sich einloggen soll
-
Da es sich bei der eingabe nicht um atomare Werte handelt müssen die erstmal gesplitet werden. Dafür kannst du Strmid zum ausschneiden und strfind zum auslesen der Character Position nach dem . (0 beim Tag) verwenden. Alternativ geht auch eine split Funktion mit dem Delimiter '.'.
Wenn du dann drei Variablen hast, nämlich tag,monat & jahr, gehts weiter (strval) nicht vergessen.
Mit dem aktuellen Datum:
new d,m,y,alter;
getday(y,m,d);if(m < monat)
{
alter = y-jahr-1;
}
else if(m == monat)
{
if(d < tag)
{
alter = y-jahr-1;
}
else
{
alter = y-jahr;
}
}
else
{
alter = y-jahr;
}Denke so sollte das funktionieren.
-
Welchen Streamer benutzt du denn?
Eventuell existiert da ja nen native à la RotateDynamicObject oder so -
Dann hast du einen schwerwiegenden Fehler in deinem Script, mit dem der Compiler nicht umgehen kann und deshalb abschmiert.
1. Versuch die als letztes getätigten Änderung auf Fehler zu überprüfen.
2. Kommentier Teil für Teil das Script aus, um den Fehler zu finden.
-
-
oder sind zwei
if(rangname<0||rangname>3)
-
DeAMX funktioniert aber nur bedingt. Meist ist der entstehende Quellcode nicht zu gebrauchen, sprich alles ist anders benannt. Wenn man sich da reinfuchst kann man das wieder rekonstruieren, aber das dauert. Aber nen Versuch ist es wert.
-
hm mal überlegen eigentlich sollte sowas funktionieren:
new radiotimer;
radiotimer = SetTimer("autoradio",1000,1);
forward autoradio();
native IsValidVehicle(vehicleid);new radiostream[MAX_VEHICLES][64]; // hier steht der radiostream eines Fahrzeugs drin (muss beim einschalten den Radios gesetzt und beim ausschalten gelöscht werden
public autoradio()
{
for(new i = 0;i<MAX_PLAYERS;i++)
{
if(!IsPlayerConnected(i)) continue;
new vehid = getPlayerNearestVehicle(i);
if(vehid == -1) continue;
new Float:x,Float:y,Float:z;
GetVehiclePos(vehid,x,y,z);
new Float:distance = getDistanceToPoint(i,x,y,z);
if(distance < 20.0)
{
// hier dann den audiostream einspielen, müsste man noch ausarbeiten wie man den speichert falls kein Spieler im Auto sitzt
PlayAudioStreamForPlayer(i,radiostream[vehid],x,y,z,20.0,1);
}
else
{
//Wenn das nächste Auto weiter als 20 Einheiten entfernt ist, wird der Stream beendet, ob einer läuft oder nicht.
StopAudioStreamForPlayer(i);
continue;
}
}
}getDistanceToPoint(playerid,Float:x,Float:y,Float:z)
{
new Float:px,Float:py,Float:pz;
GetPlayerPos(playerid,px,py,pz);
return floatsqroot(floatpower(x-px,2)+floatpower(y-py,2)+floatpower(z-pz,2));
}getVehicleDistanceToPoint(vehicleid,Float:x,Float:y,Float:z)
{
new Float:px,Float:py,Float:pz;
GetVehiclePos(vehicleid,px,py,pz);
return floatsqroot(floatpower(x-px,2)+floatpower(y-py,2)+floatpower(z-pz,2));
}getPlayerNearestVehicle(playerid)
{
new vehid = -1,Float:distance = 999999.9;
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
for(new i = 0;i<MAX_VEHICLES;i++)
{
if(!IsValidVehicle(i)) continue;
if(getVehicleDistanceToPoint(i,x,y,z) < distance)
{
distance = getVehicleDistanceToPoint(i,x,y,z);
vehid = i;
}
}
}Hab ich jetzt alles im Editor geschrieben. Ka ob das so funktioniert. Aber nen versuch ist es wert
Das beendet den Stream zwar nicht, durch die entsprechende Regulierung in PlayAudioStreamForPlayer könnte das aber dennoch funktionieren.
-
Eigentlich bleibt dir da nur nen Timer, der alle Spieler durchgeht und die Entfernung zum nächsten Auto berechnet. Ist diese Entfernung unter einem Limit wird der Strea eingespielt, welcher für das Auto gespeichert ist.
Also einen Timer (vllt nen 1 Sekunden delay) machen.
Problem: Bei schnellen Fahrzeugen kann das eventuell nicht funktionieren, da der Stream ein paar Sekunden zum laden benötigt.
-
Also so schwer ist es jetzt nicht die Sequenz zu ändern oder?
dcmd_showlic(playerid,params[])
{
new pID, name[MAX_PLAYER_NAME], Oname[MAX_PLAYER_NAME], str1[64], str2[64];
if(sscanf(params,"u",pID))return SendClientMessage(playerid,Gelb,"Benutze:/showlic [id]");
GetPlayerName(playerid,name,sizeof(name));
GetPlayerName(pID,Oname,sizeof(Oname));
format(str1,sizeof(str1),"Du zeigst %s deine Lizenzen",Oname);
format(str2,sizeof(str2),"%s zeigt dir seine Lizenzen",name);//3319
SendClientMessage(playerid,Grün,str1);
SendClientMessage(pID,Grün,str2);
ShowLicense(playerid,pID);
return 1;
} -
für strcmp:
if(strcmp(cmdtext,"/adminhelp",true) == 0 || strcmp(cmdtext,"/ah",true) == 0) -
Bitte printe mal deine Fraktion in die Server_log
printf("Fraktion: %d",GetPVarInt(playerid,"Fraktion"));
switch(GetPVarInt(playerid,"Fraktion"))
{
case 0:{}
case 1:
{
SetPlayerPos(playerid,lspdspawn);
SetPlayerColor(playerid,BLUE);
}
case 2:
{
SetPlayerPos(playerid,sekspawn);
GivePlayerWeapon(playerid,24,100);
}
case 3:
{
SetPlayerPos(playerid,srspawn);
SetPlayerColor(playerid,GREEN);
}
} -
Naja das geht schon:
getPlayerIDFromString(idorname[])
{
if(strlen(idorname) == 0) return -1;
new id = -1;
if(isNumeric(idorname))
{
if(!IsPlayerConnected(strval(idorname))) return -1;
id = strval(idorname);
}
else
{
for(new i = 0;i<MAX_PLAYERS;i++)
{
if(!IsPlayerConnected(i)) continue;
new pname[24];
GetPlayerName(i,pname,sizeof(pname));
if(strcmp(pname,idorname,true) == 0)
{
id = i;
break;
}
}
}
return id;
} -
Also strval kann das nicht.
Aber du hast doch schon die playerid?SpielerID = strval(SpielerName(playerid)); -> SpielerID = playerid;
-
Eh nein, da strval aus einem String einen Integer macht (sofern möglich). Also kannst du damit keinen Namen in eine ID verwandeln.
Du kannst aber alle Spieler mit einer for durchlaufen, von jedem den Namen auslesen und mit inputtext vergleichen (strcmp). -
Return user? find ich im Wiki nix zu. Gib mal den Link.
-
5 zeilen vor und nach der mit dem Code auf den der Error referenziert.