Versuche es mit dieser All In One Package:
http://www.chip.de/downloads/A…ne-Runtimes_37449838.html
Beiträge von Jeffry
-
-
Wie sieht dein Code aus? Poste bitte alles was zu dem Skin System dazu gehört.
PS: Lasse bitte diese Vollzitate, die machen keinen Sinn.
-
Poste bitte deinen Server Log.
-
Der Code ist ja fast schon so legendär wie die Include um einen Dialog erneut anzuzeigen
Der Spoiler hätte andersrum gehört, ein solcher Code kann wohl kaum eine ernsthafte Empfehlung für jemanden sein.------
An sich reicht es, wenn man nur abfragt, ob der Kontostand unter dem jeweiligen Wert liegt, mehr braucht es nicht:
C
Alles anzeigennew kontostand = GetPVarInt(i, "Kontostand"); if(kontostand < 500000000) { Reichensteuer = 0; SendClientMessage(i, Weis, "Keine Reichensteuer"); } else if(kontostand < 1000000000) { Reichensteuer = 100000; SendClientMessage(i, Weis, "Reichensteuer(Klasse 1): .....$"); } else if(kontostand < 1500000000) { Reichensteuer = 250000; SendClientMessage(i, Weis, "Reichensteuer(Klasse 2): .....$"); } else { Reichensteuer = 500000; SendClientMessage(i, Weis, "Reichensteuer(Klasse 3): .....$"); }
Es ist aber unbedingt zu bedenken, dass SA-MP ein 32-bit System ist, sprich bei ~2,1 Milliarden ist Schluss (2^32-1).
@ÉSMaticx du solltest dir daher vielleicht überlegen, ob du nicht mit einer oder zwei Nullen weniger in deinem Code arbeitest, sprich anstatt 100000 eben nur 1000, etc. Sonst kann es sein, dass schnell jemand dieses Limit überschreitet. Wenn das passiert, dann hat der Spieler einen negativen Kontostand. -
Dann versuche mal, die Werte bei TextDrawTextSize etwas zu erhöhen, ob sich das Textdraw dann wieder ändert.
Ansonsten mache alles nochmal rückgängig, und ändere dann nur nochmal die TextDrawTextSize. -
Nein, als Beginn musst du die X Koordinate von TextDrawCreate nehmen, und dann auch plus den Teil des Bildschirms rechnen, wie du es bei Y geteilt hast.
-
Siehst du denn die SendClientMessage wenn du drauf drückst? Wenn nicht, dann passt die TextDrawTextSize nicht.
-
Du musst die Größe das anklickbaren Bereiches mit TextDrawTextSize anpassen. https://wiki.sa-mp.com/wiki/TextDrawTextSize Der X Wert ist die Position PLUS die Größe des nach rechts anklickbaren Bereiches. Der Y Wert ist die geschätzte Höhe.
Angenommen du erstellst dein Textdraw bei X = 120 und Y = 90. Dann machst du den Text "Hallo Welt" da rein. Sagen wir, der Text ist so groß, dass er in etwa über ein Zehntel deines Bildschirmes geht (musst du abschätzen, oder mit einem Lineal abmessen), dann heißt das 640 durch 10, das wäre 64. Somit ist TextDrawTextSize-X = 120 + 64 = 184.
Nun misst, bzw. schätzt, du die Höhe des Textdraws, sagen wir mal du bekommst den Text in etwa 20 mal untereinander hin, bis dein Bildschirm von oben nach unten voll damit wäre. Heißt also: 480 durch 20, das gibt 24. Somit wäre TextDrawTextSize-Y = 24. -
Debug-Meldungen sind nur Info-Nachrichten, da brauchst du dir keine Sorgen zu machen. Du müsstest lediglich den Debug Modus ausschalten, im Code, wenn du die nicht mehr haben willst.
-
AddStaticVehicleEx ist nicht vom Streamer, daher CreateDynamicVehicle.
-
Das Schlagen geht zum Teil auf Maps die außerhalb der eigentlichen Map sind auch nicht, stimmt. Da kann man leider nichts machen, außer man prüft die Animationen und Positionen der Spieler bei OnPlayerUpdate ab, aber ob das wirklich klappt (Lag etc) wage ich zu bezweifeln.
-
Das müsstest du dann entsprechend Abfragen, mit einer if-Abfrage mit Oder-Teil (||).
Gegebenenfalls im enum noch eine zweite Fraktion hinzufügen (Fraktion1, Fraktion2) und dann darüber abfragen. -
Das betrifft nur die Pickups.
EDIT:
Und der Faustschlag, außerhalb der eigentlichen Map, auf selbstgemappten Objekten. -
Schreibe den filterscript in die server.cfg in die Zeile "filterscripts". Dann lädt er automatisch, wenn du den Server startest.
-
-
Zur Info: Der Range innerhalb dem Pickups angezeigt werden ist +/- 4095 auf jeder Koordinatenachse (X, Y, Z).
-
Dann liegt der Fehler wahrscheinlich woanders im Code.
Du kannst das herausfinden, indem du ein Callback nach dem anderen ausklammerst (Kommentare /* */), so lange, bis der Compiler nicht mehr abstürzt.
So kannst du dich dann an die Zeile hinarbeiten (auch wieder mit ausklammern, innerhalb des Callbacks), bis du die entsprechende Zeile gefunden hast, die das verursacht. Das ist zumindest der Weg, mit dem ich an solche Probleme ran gehe. -
Einen offiziellen gibt es zumindest nicht nicht, da:
ZitatSA-MP uses a modified version of Pawn 3.2.3664 [1] with Windows-only executables,and the developers said that they lost the source code for it which means it can'tbe ported to other platforms (e.g. Linux) and newly discovered bugs can't be fixed.
-
Bei mir kompiliert das ohne Probleme.
Hast du mal versucht, das enum direkt unter den Includes zu erstellen, anstatt so weit unten im Code?Klappt es in einem leeren Gamemode/Filterscript?
-
Dann versuche es bitte erneut mit mehreren, und poste dann was im Log steht, wenn du es so schreibst:
C
Alles anzeigenforward OnPlayerDrugsLoad(); public OnPlayerDrugsLoad() { new num_fields, num_rows, count = 0; cache_get_data(num_rows, num_fields, handle); if(!num_rows)return 1; for(new i=0; i < num_rows; i++) { DrugInfo[i][d_Besitzer] = cache_get_field_content_int(i, "besitzer", handle); DrugInfo[i][d_Zustand] = cache_get_field_content_int(i, "zustand", handle); DrugInfo[i][d_Wasser] = cache_get_field_content_int(i, "wasser", handle); DrugInfo[i][d_Prozent] = cache_get_field_content_int(i, "prozent", handle); DrugInfo[i][d_PosX] = cache_get_field_content_float(i, "x", handle); DrugInfo[i][d_PosY] = cache_get_field_content_float(i, "y", handle); DrugInfo[i][d_PosZ] = cache_get_field_content_float(i, "z", handle); DrugInfo[i][d_Objekt] = CreateObject(826, DrugInfo[i][d_PosX], DrugInfo[i][d_PosY], DrugInfo[i][d_PosZ], 0.0, 0.0, 0.0); printf("Erstelle Objekt für %d: ID: %d", i, DrugInfo[i][d_Objekt]); count ++; } printf("[INFO] %i/%i Drogenpflanze geladen.", count, sizeof(DrugInfo)); return 1; }