Hast du auch das Crashdetect Include in dein Script eingebunden?
Beiträge von Woozie
-
-
Hast du es mal ohne Timerfix versucht? Buggt das immer noch so rum? Ansonsten führ doch mal deinen SA-MP Server (unter Windows) als Administrator aus und schau, ob sich was ändert.
-
-
Hi, weiß jemand warum mein Timer nicht so funktioniert wie gewollt? (Screen im Anhang)
public UpdateRoundTime() { new sQuery[32]; if(RoundStarted == true) { RoundSeconds --; if(RoundSeconds == 0) { RoundMints--; if(RoundMints == 0) { RoundSeconds = 59; } if(RoundMints < 0) { RoundSeconds = 59; RoundMints = R_Mints; } } } format(sQuery, sizeof(sQuery), "TIME: ~b~%02d:%02d", RoundMints, RoundSeconds); TextDrawSetString(RoundTime, sQuery); format(sQuery, sizeof(sQuery), "ARENA:~b~ %02d", Area); TextDrawSetString(ArenaTextID, sQuery); return 1;}
Timer in OnGameModeInit SetTimer("UpdateRoundTime", 800, true);
Das Problem ist das manchmal der Timer nicht mehr runtergezählt wird, sondern hochgezählt wird und das Format ändert sich auch. Standart soll es so sein 9:58.
Probiers mal so:
Code
Alles anzeigenpublic UpdateRoundTime() { if (RoundStarted == true) { RoundSeconds --; if(RoundSeconds <= 0) { RoundMints--; if(RoundMints <= 0) {RoundSeconds = 59; RoundMints = R_Mints;} } } new sQuery[32]; format(sQuery, sizeof(sQuery), "TIME: ~b~%02d:%02d", RoundMints, RoundSeconds); TextDrawSetString(RoundTime, sQuery); format(sQuery, sizeof(sQuery), "ARENA:~b~ %02d", Area); TextDrawSetString(ArenaTextID, sQuery); return 1; }
Ich weiss nicht, wie der TextDraw angezeigt wird, ob spielerbasiert oder global für alle. Wenn die Anzeige global für alle Spieler ist, passt es. Ansonsten benutz PlayerTextDraw's.Sonst sind das keine Sekunden sondern 800 Millisekunden!
-
Wenn du die Koordinaten vertauschst, bestimmt. Das Phänomen trat unter 0.3b (bzw. U1-MP) damals auf oder beim Betreten fing die GZone an zu blinken, obwohl sie es nicht sollte. Wie es jetzt ist, musst du ausprobieren. Wenn du die Koords. richtig einsetzt, sollte alles ohne Probleme laufen.
-
Dann würde ich sage, Problem gelöst, oder?
-
Als Ausgangspunkt habe ich folgende Koordinaten genommen:
Also, scheinbar wurde das in SA-MP bereits behoben. Habe erst die oben genannten Koordinaten 1:1 übernommen. Wurde nichts angezeigt. Dann habe ich sie korrekt vertauscht, immer noch nichts gefunden. Habe die Koordinaten etwas verändert und es ging.
CodeGangZoneCreate( 1081.5581,-2725.4567, 2087.0017,-1718.8115); // korrekt GangZoneCreate( 1081.5581,-1718.8115, 2087.0017,-2725.4567); // eigentlich falsch, geht dennoch
habe also 1000 bei minX abgezogen und 1000 bei maxY hinzugefügt. Ergebnis sieht man im Bild.
Fazit: wir beide lagen richtig und falsch
Mein Ergebnis: @ElektroFreak deine Box-Koordinaten bzw. die von YaBroo sind zu gering. Ich fand das Gebiet überhaupt nicht in meinem Radar. -
Ich weiss ja nicht, was du mit 0 Punkt meinst, aber laut Wiki muss erst minX, minY danach maxX, maxY gesetzt werden. -1775 ist kleiner als -1710 laut Mathematik. Und ja, das Problem mit dem vertauschen hatte ich damals bei GTA United (U1-MP bzw. SA-MP 0.3b war das) einmal, daher weiss ich das. Probiers mal aus und berichte, wie sich das auswirkt. Ich teste das jetzt selber nochmal mit einem leerem GameMode. Ergebnis folgt gleich...
-
ja, weil es -1710 ist und nicht 1710 (plus)
Und ja, es spielt eine Rolle, da es sonst zu Fehlern kommt bei der Anzeige der Zone
-
-
Oh, ich seh grade bei den Variablen fehlt noch das Array, sorry, das muss so aussehen:
new RandomPreisW[] ={ {850},{412},{212},{971},{311},{156},{215},{666},{500},{450},{350},{300},{700}, {890},{1020},{1100},{1400},{206},{150},{441},{868},{1500},{540},{850},{850}};new RandomPreisG[] ={ {65},{70},{75},{80},{85},{90},{95},{100},{105},{110},{115},{120},{125}, {130},{135},{140},{145},{150},{155},{160},{165},{170},{175},{50},{55}};Das er das so nicht möchte, liegt einfach daran, daß du mit der zusätzlichen geschweiften Klammer ein Subarray erstellst. Es müßte mit der zusätzlichen Klammer also so aussehen:
Codenew RandomPreisW[][] = { {850},{412},{212},{971},{311},{156},{215},{666},{500},{450},{350},{300},{700}, {890},{1020},{1100},{1400},{206},{150},{441},{868},{1500},{540},{850},{850} }; new RandomPreisG[][] = { {65},{70},{75},{80},{85},{90},{95},{100},{105},{110},{115},{120},{125}, {130},{135},{140},{145},{150},{155},{160},{165},{170},{175},{50},{55} };
Da es hier nur einen 1-Index gibt, muss man also [0] abfragen und danach erst den 2-Index:Codenew randW = random(sizeof(RandomPreisW)); new WaffenPreis = RandomPreisW[0][randW]; new randG = random(sizeof(RandomPreisG)); new GrasPreis = RandomPreisG[0][randG];
Hab es eben auch im PAWNO probiert. Gibt keine Fehlermeldung aus! -
Kannst du hier mal deine user.inc und einen kleinen Ausschnitt deines Scriptes anhängen, damit ich mir das mal lokal anschauen kann? Ich gehe auch davon aus, daß du die Version 0.3.7 R2-1 nutzt.
-
Ah ja, danke für den Hinweis.
@Thema
Kann es sein, daß du irgendwo eine Klammer zu viel/zu wenig hast? Das Problem klingt mir danach, daß diese Funktion nicht mehr erkannt wird. Hast du mal versucht, die oben genannte Funktion höher im Script zu schreiben/setzen? -
Ich stell einfach mal eine dumme Frage: Befindet sich die eingebundene (dies ist das deutsche Wort für Includes) auch in dem richtigen /include Ordner unter deinem PAWNO? Ich selber habe nämlich auch mehrere SA-MP Server Versionen auf meiner HDD mit je eigenem PAWNO. Wenn du z.B. PAWNO einmal für SA-MP 0.3.7 (pawno.exe) geöffnet hast, bewirkt (sofern die Option aktiviert ist, was standard ist) ein Doppelklick auf eine .pwn Datei beim nächsten Mal, daß eben dieses PAWNO geöffnet wird.
Wenn du also (SA-MP) Versionen wechselst, wieso auch immer, muss immer die pawno.exe der gewünschten Version gestartet werden.
PS:
wobei, dann würde er die Include ja nicht finden. Probier es dennoch mal, erst die gewünschte pawno.exe (wo sich deine eingebundene Datei befindet) erst zu öffnen und lade dir dann darüber dein Script rein. -
Der Begriff Function gibt es in PAWN so nicht. Entweder einfach den Namen mit oder ohne stock oder public.
-
Wie sieht denn deine User.inc aus? Hast du dort ein
#if defined ...
#endinput
#endifdrin?
-
Zieh dir den Modloader (ist ein ASI Plugin, dafür brauchst du halt noch den ASI Loader). Unter dem Ordner /modloader einfach deine Mods reinpacken, fertig.
-
Benutze Pawno fürs Hauptscript und Notepad++ für die Includes.
-
Such mal im Spiel nach SetPlayerTime (Wiki: http://wiki.sa-mp.com/wiki/SetPlayerTime).
-
Lass dir mal deinen String im Dialogfenster ausgeben und schau mal, ob er sich nicht mit den Limits beisst. (http://wiki.sa-mp.com/wiki/Limits)