Ich rate dir einen Editor zu nutzen: http://forum.sa-mp.com/showthread.php?t=416138
Damit habe ich es auch gemacht, der funktioniert super.
Beiträge von Jeffry
In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
-
-
Hiermit kannst du es abfragen:
http://wiki.sa-mp.com/wiki/GetPlayerVelocityDamit fragst du ab, ob z negativ ist, mit GetPlayerState fragst du ab, ob der Spieler auch On Foot ist und mit GetPlayerAnimationIndex musst du noch abfragen, ob die "am Fallschirm hängen" Animation ausgeführt wird, dann darf es sich ja nicht ändern.
Wenn alles zutrifft:
http://wiki.sa-mp.com/wiki/SetPlayerVelocity
Zu x, y (hast du ja zuvor abgefragt) und z setzt du zu -0.1 oder so, musst du eben anpassen, wie schnell du es haben willst.Das ganze steht bei OnPlayerUpdate.
-
Das liegt daran, dass du den nächsten Checkpoint auch angeben musst, damit die Richtung passt:
public OnPlayerEnterRaceCheckpoint(playerid)
{
printf("Prüfung: %d", Prufung[playerid]);
if(Prufung[playerid] == 1)
{
new cID = GetPVarInt(playerid, "fCP");
printf("cID: %d /Range: %d", cID, IsPlayerInRangeOfPoint(playerid, 10, fsCP[cID][fx], fsCP[cID][fy], fsCP[cID][fz]));
if(IsPlayerInRangeOfPoint(playerid, 10, fsCP[cID][fx], fsCP[cID][fy], fsCP[cID][fz]))
{
cID++;
if(cID > sizeof(fsCP))
{
printf("Ende");
SetPVarInt(playerid, "fCP", 0);
new string[128];
format(string,128,"{C8C8C8}Du hast den Flugschein erfolgreich {41FF00}bestanden.");
DestroyVehicle(GetPVarInt(playerid,"Flugzeug"));
SetPlayerPos(playerid,415.1635,2535.5076,19.1484);
SetPlayerVirtualWorld(playerid,0);
Prufung[playerid] = 0;
Flugschein[playerid] = 1;
}
else
{
printf("Nächster: %d", cID);
SetPVarInt(playerid, "fCP", cID);
if(cID < sizeof(fsCP)-1) SetPlayerRaceCheckpoint(playerid, 3, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID+1][fx], fsCP[cID+1][fy],fsCP[cID+1][fz], 10);
else SetPlayerRaceCheckpoint(playerid, 4, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], 10);
}
}
return 1;
}
DisablePlayerRaceCheckpoint(playerid);
return 1;
}Das mit dem letzten Checkpoint war wegen dem >=, das musste nur > sein.
-
Funktioniert es, wenn du
for(new i=0;i<GetMaxPlayers();i++)
zu
for(new i=0;i<MAX_PLAYERS;i++)
änderst?Wenn nein, poste die GetRankName Funktion.
-
Kannst du den Befehl der nur halb funktioniert mal posten?
Noch eine Frage zuvor: Hast du eine mehrzeilige Meldung mit ganz vielen Zahlen im Compiler? "Heap Size" und so steht da dabei. -
Hast du es auch in dem if in der Zeile drunter gemacht? Ich denke nicht, sonst wäre da noch ein weiterer print.
Dann sollte es gehen. -
Dann fehlen euch wohl auch noch die Microsoft Visual C++ Installationen. Schaut da mal bei Microsoft nach und installiert die 2013'er Versionen.
-
Debugge es mal so:
public OnPlayerEnterRaceCheckpoint(playerid)
{
printf("Prüfung: %d", Prufung[playerid]);
if(Prufung[playerid] == 1)
{
new cID = GetPVarInt(playerid, "fCP");
printf("cID: %d /Range: %d", cID, IsPlayerInRangeOfPoint(playerid, 5, fsCP[cID][fx], fsCP[cID][fy], fsCP[cID][fz]));
if(IsPlayerInRangeOfPoint(playerid, 5, fsCP[cID][fx], fsCP[cID][fy], fsCP[cID][fz]))
{
cID++;
if(cID >= sizeof(fsCP))
{
printf("Ende");
SetPVarInt(playerid, "fCP", 0);
new string[128];
format(string,128,"{C8C8C8}Du hast den Flugschein erfolgreich {41FF00}bestanden.");
DestroyVehicle(GetPVarInt(playerid,"Flugzeug"));
SetPlayerPos(playerid,415.1635,2535.5076,19.1484);
SetPlayerVirtualWorld(playerid,0);
Prufung[playerid] = 0;
Flugschein[playerid] = 1;
}
else
{
printf("Nächster: %d", cID);
SetPVarInt(playerid, "fCP", cID);
SetPlayerRaceCheckpoint(playerid, 3, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], 10);
}
}
return 1;
}
DisablePlayerRaceCheckpoint(playerid);
return 1;
}Falls Range 0 ist, dann erhöhe mal die 5 beim Umkreis von IsPlayerInRangeOfPoint.
-
Das machst du mit der Schleife, würde so aussehen:
new string[20] = "Test";
new pixels;
for(new i=0; i<strlen(string); i++)
{
switch(string[i])
{
case 'a': pixels += 4;
case 'b': pixels += 4;
//...
}
}
if(pixels < 40) //drei Tabs
else if(pixels < 80) //zwei Tabs
else //ein TabJe nach dem wie viele Tabs du haben willst natürlich, und wie lang der String sein kann, werden das mehr if-Verknüpfungen.
-
Es ist eigentlich nur die ein Include, streamer.inc und das Plugin. Von beidem kannst du dir ja ein Backup vorher machen.
Wenn du Fehler im Code hast kannst du die ja posten.Aber du verwendest wahrscheinlich eine alte Plugin Version und alte Includes, zusammen mit einem alten Code. Dadurch funktioniert es wahrscheinlich nicht richtig.
Ich kann dir auch nur diese Vorschläge geben, da das bei mir so funktioniert.Mach dir eine Kopie von deinem Server Ordner (komplett), dann kannst du nichts kaputt machen. So teste ich immer irgendwelchen Kram aus.
-
Einen Dialog mit "abcdef...", "ABCDEF..." erstellen und dann einen Screenshot machen.
Das Bild mit GIMP oder Paint.NET öffnen und gaaaanz nah hinzoomen. Dann erkennst du die einzelnen Pixel und kannst sie zählen. -
Windows AveXx wird gleich mal ne aktuelle Log posten (er ist gerade drauf)
Dann solltet ihr mal die neusten Updates und .NET Frameworks installieren. Da wird irgendeine Version fehlen. Meistens ist es die 3.5. -
Du kannst die Pixel der Buchstaben zählen und aufaddieren. Für jede 40 Pixel fällt 1 Tabulator weg.
Allerdings sind die Buchstaben-Größen auf Full-HD Auflösung anders als bei den anderen Auflösungen, von daher wird es nie bei allen Spielern passen, das ist aber die beste Methode es zu machen.Über eine Schleife kannst du dann durch die Buchstaben des Strings gehen und aufaddieren.
-
Ist der Log der gleiche geblieben?
Was ist es für ein Server? Windows oder Linux? -
Versuche es mal so, so geht es bei mir:
SetPlayerAttachedObject(playerid, 6, 330, 6, 0.04, 0.0, 0.0, 0.0, 0.0, 0.0); -
Lade dir hier die aktuellste R39-2 Version herunter und nutze die mysql_static.so.
https://github.com/pBlueG/SA-MP-MySQL/releases -
Bei /aduty sollte man Leute mit der Maske sehen können + FriedhofTimer
Das sollte dir auf die Sprünge helfen.Wenn nicht, poste das was du bis dahin hast.
-
error 017: undefined symbol "Streamer_SetVisibleItems"
Also bei mir kompiliert das ohne Probleme.
Lade dir die neusten Includes mal runter: http://forum.sa-mp.com/showthread.php?t=102865 -
Das Limit von 1000 Objekten kannst du nicht erhöhen, das ist in SA-MP so festgelegt, daran lässt sich auch nichts machen.
Ein Streamer macht nichts anderes als die Objekte die nicht in deiner Nähe sind zu löschen, sprich er zeigt dir nur die Objekte an, die du auch siehst, bzw. sehen kannst, zum Beispiel Objekte in LV sind gar nicht geladen, wenn dort niemand ist.Einen anderen Streamer musst du da nicht verwenden, das Streamer Plugin ist der beste Streamer.
Bei dir ist es möglicherweise so, dass du in dem Bereich schon mehr als 1000 Objekte hast und dir deshalb nicht alle angezeigt werden (viele kleine Objekte an einem Ort?).
Deshalb der Vorschlag mal die ganzen Objekte zu entfernen, bis auf die, die nicht angezeigt werden. Werden sie dann angezeigt? Wenn ja, dann liegt es am Limit.
Wenn nein, dann liegt es an etwas anderem. -
Aber das musst du auf jeden Fall so lassen, sollte klar sein.
Da es jetzt ja immer noch so wenig ist, tippe ich mal, dass deine vtankverbrauch's ziemlich klein sind, und wenn du die auch noch durch 100 teilst dauert es ewig.Mach mal das "/100" am Ende der Rechnung weg und teste es dann. Wenn es auch dann nicht geht, poste mal dein Array welches die Wert für vtankverbrauch beinhaltet.