Beiträge von Kaliber

    Kaliber: auch wenn ein "stock" davor steht?


    Natürlich, das stock sorgt (egal ob es vor einer Variable oder Funktion steht) nur dafür, dass wenn sie nicht aufgerufen bzw verwendet wird, sie vom Compiler ignoriert wird.


    Somit kann man den Warning Variable/Function is never used umgehen.


    new stock var1; //Kann man so schreiben und nie verwenden, wird einfach ignoriert
    //new var1; hat den selben Effekt! (also auskommentieren)


    Und nur um das mal klar zu machen:


    test(x)
    {
    return x;
    }
    /*
    Das ist auch eine gültige Funktion.
    Nur wenn wir sie nicht aufrufen, bekommen wir einen Warning, dass wir sie nicht benutzen.
    Aus dem Grund schreibt man "stock" davor, damit man da nicht drauf achten muss, ob die Funktion auch wirklich aufgerufen wird.
    */


    //Edit: [ SCRIPTING ] Der Mythos "stock"


    mfg. :thumbup:

    Du hast doch bereits die Funktion erstellt.


    Das ist keine Funktion, mit const deklariert man eben konstante Variablen.


    Und der Fehler den er gemacht hat, war einfach es nach unten einzufügen...obwohl ich ganz deutlich geschrieben habe, es muss ganz nach oben! Denn eine Variable muss ja erstmal deklariert sein, bevor man sie nutzen will (zumindest in Pawn). :rolleyes:

    Woran liegt da der Fehler?


    Glaubst du...du kannst ohne Basics vernünftige Skripts aus dem Nichts zaubern? :huh:


    Lern erstmal die Basics und mach dich dann daran irgendwelche Systeme zu bauen...das kann sich doch keiner anschauen :pinch:


    1. Klammerfehler bei deinem Command


    2. In Pawn muss man Variablen vor der Nutzung deklarieren, deshalb steht in meinen Kommentaren OBEN INS SKRIPT!!!


    3. LES die KOMMENTARE!!! ist das so schwer? Da steht doch alles klar drinnen und MAX_TANKSTELLEN..ist ein Platzhalter für dich!!! da musst du was eintragen...


    ...Bitte lerne Basics, schau dir Tutorials an und versuche dich erstmal an kleinen Sachen und an Grundsystemen...


    mfg. :wacko:

    ...Arrays ;)


    //Oben deklarieren:
    //Erstmal ein konstantes Array mit den Positonen
    stock const Float:tank_pos[][3] = {
    {1944.3746,-1772.5388,13.3906}, {1966.7273,-1772.5297,13.5469}
    };
    //Dann noch eine Variable für das ausrauben:
    //Wenn MAX_TANKstellen <= 255 kann man auch char Arrays verwenden! ;)
    new bool:t_rob[MAX_TANKSTELLEN];


    //Dann im Command /rob
    for(new i; i<sizeof tank_pos; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,3.0,tank_pos[i][0],tank_pos[i][1],tank_pos[i][2])
    {
    //i ist der index, also unsere Tankstelle:
    if(t_rob[i]) return SendClientMessage(playerid,-1,"Diese Tankstelle wurde bereits ausgeraubt!");
    GivePlayerMoney(playerid, random(1000)+50); //Hier bekommt der Spieler random Geld!
    t_rob[i] = true; //Damit man sie vorest nicht mehr ausrauben kann
    SetTimerEx("@t_clear",1000*60*3,0,"i",i); //Nach 3 Minuten kann man die Tankstelle wieder ausrauben
    break; //Da die Tankstelle gefunden wurde
    }
    }


    //Irgendwo im Skript (in keiner Lokalen Ebene!)
    @t_clear(i);@t_clear(i) return t_rob[i] = false; //damit kann man wieder die Tankstelle ausrauben!


    Hoffe halbwegs verständlich erklärt ;)


    mfg. :thumbup:

    emit benutzt ich nicht ich habe nix gefunden..


    Hmm...auch mal die Includes gecheckt? :o


    Ansonsten, musst du einen print-debug machen, der etwas aufwändiger ist...


    Prüfe alle Funktionen und Callbacks, die aufgerufen werden, sobald ein Spieler den Server betritt und was als letztes aufgerufen wurde, bevor der Fehler auftritt, da ist der Fehler :)


    mfg. :thumbup:

    man kan einfach nur keine Befehle mehr eingeben


    Ja, weil eine Zugriffsverletzung stattfindet.


    Code
    Run time error 8: "Heap underflow"


    Nun, leider wird nicht gesagt, wo dies stattfindet...aber das lässt sich relativ leicht eingränzen.


    1. Welchen Commandprozessor nutzt du?


    2. Wo überall nutzt du den Directive #emit?


    //edit:
    3. Achso..oder versuchst du neu-deklarationen von Operatoren zu machen? :huh:


    mfg. :thumbup:

    ich bin schon auf dem Server nur kommt der Fehler nicht sofort ich warte ganze zeit das es passiert ...


    Ja...und nur dann wenn es passiert und das Plugin läuft, kann das Plugin sagen (hoffentlich) was der Fehler ist und dann steht es erst in den Logs ;)


    Sprich, dann musst du das nochmal posten :)


    mfg. :thumbup:

    weil ich nicht weis ob ich so nen langen code hier einfügen kann


    ...natürlich nicht den ganzen, nur den aktuellsten, in deinem Fall, wären das diese Zeilen hier:


    Code
    ----------Loaded log file: "server_log.txt".----------SA-MP Dedicated Server----------------------v0.3z-R4, (C)2005-2014 SA-MP Team[19:19:34] filterscripts = ""  (string)[19:19:34] password = ""  (string)[19:19:34] [19:19:34] Server Plugins[19:19:34] --------------[19:19:34]  Loading plugin: streamer[19:19:34] *** Streamer Plugin v2.6.1 by Incognito loaded ***[19:19:34]   Loaded.[19:19:34]  Loading plugin: sscanf[19:19:34] [19:19:34]  ===============================[19:19:34]       sscanf plugin loaded.     [19:19:34]    (c) 2009 Alex "Y_Less" Cole[19:19:34]    0.3d-R2 500 Players "dnee"[19:19:34]  ===============================[19:19:34]   Loaded.[19:19:34]  Loading plugin: MapAndreas[19:19:34]   Loaded.[19:19:34]  Loading plugin: mysql[19:19:34]   > MySQL plugin R7 successfully loaded.[19:19:34]   Loaded.[19:19:34]  Loading plugin: crashdetect[19:19:34]   CrashDetect v4.15 is OK.[19:19:34]   Loaded.[19:19:34]  Loaded 5 plugins.[19:19:34] [19:19:34] Filterscripts[19:19:34] ---------------[19:19:34]   Loaded 0 filterscripts.[19:19:35] [GLSR][Server]: Die Verbinung zur Mysql Datenbank wurde hergestellt[19:19:35] --------------------------------------[19:19:35] [GLSR] Server: Script wurde geladen!.[19:19:35] [GLSR] Server: by davidks = david.zocker (SKYPE)[19:19:35] --------------------------------------[19:19:35] Number of vehicle models: 84[19:19:35] Incoming connection: 127.0.0.1:1212[19:19:35] Incoming connection: 127.0.0.1:1213[19:19:35] Incoming connection: 127.0.0.1:1214[19:19:35] Incoming connection: 127.0.0.1:1215[19:19:35] [npc:join] [BOT]C4Transport has joined the server (0:127.0.0.1)[19:19:35] [npc:join] [BOT]Bank has joined the server (1:127.0.0.1)[19:19:35] [npc:join] [BOT]StadthalleLS has joined the server (2:127.0.0.1)[19:19:35] [npc:join] [BOT]ZugBot has joined the server (3:127.0.0.1)[19:19:35] Gangzonen: 9/9 -[19:19:35] Blitzer: 0/25 -[19:19:35] Minen: 0/20 -[19:19:35] WeihnachtsObjecte: 0/100 -[19:19:35] Drogen-Pflanzen: 0/50 -[19:19:35] Funkmasten: 3/50 -[19:19:36] Frak-Autos: 16/500 -[19:19:36] Werbe Tafel/n: 22/22 -[19:19:36] Schwarzmärkte: 1/20 -[19:19:36] Erfolgreich geladen (Allgemeine Dinge)[19:19:36] Frak-Verwaltungen: 19/18 -[19:19:36] Häuser: 12/300 -[19:19:36] Haus Besitzer! (Aktivität Überprüft).[19:19:36] Gutscheine: 0/50 -[19:19:36] Bizzes: 19/100 -[19:19:36] Aktivität der Business Besitzer! Überprüft.[19:19:37] Organisationen: 0/10 -[19:19:37] Firmen: 0/25 -[19:19:37] - Business 4 gespeichert -[19:19:37] - Business 7 gespeichert -[19:19:37] - Business 10 gespeichert -[19:19:37] - Business 11 gespeichert -[19:19:37] - Business 12 gespeichert -[19:19:37] - Business 17 gespeichert -[19:19:37] - Business 18 gespeichert -[19:19:37] - Business 19 gespeichert -[19:19:42] Es wurden erfolgreich [ 5128 ] CreateDynamicObject geladen!


    Aber du hast den Server ja noch gar nicht betreten, da ist der Fehler doch noch gar nicht aufgetreten? :huh:

    Und mit #pragma unsed var1; würde ich die meldung für var1 ignorieren lassen, möchte sie jedoch für alle ignorieren und dabei nicht für jede einzelnde diese anweisung schreiben.


    Wenn es auf globaler Ebene ist, dann deklarier die Variablen so:


    new stock var1, var2, var3, var4, var5;


    //Kannst zur übersicht natürlich auch:
    new stock
    var1,
    var2,
    var3,
    var4,
    var5;


    //Ansonsten musst du es so machen:
    new stock var1;
    new stock var2;
    new stock var3;
    new stock var4;
    new stock var5;


    Und mit pragma sollte man nur auf lokaler Ebene arbeiten, sprich dann so:


    new var1;
    new var2;
    new var3;
    new var4;
    new var5;
    #pragma unused var1,var2,var3,var4,var5


    mfg. :thumbup:

    sondern eine Anweisung die direkt alle Warnings dieser Art ignoriert.


    Ja gibt es und das ist der berühmte "stock" ;)


    Wenn du globale Variablen hast:


    new stock x,y,z; //Auch wenn die sie nicht nutzt, kein Warning


    Leider ist dieser nur global anwendbar, ansonsten auf lokaler ebene, musst du mit Pragma arbeiten:


    if(...)
    {
    new x,y,z;
    #pragma unused x,y,z
    }


    mfg. :thumbup:

    Schade eigentlich, dass das nicht bei jeder Waffe aufgerufen wird.


    Man kann sich einen Callback ganz simpel basteln, der das checkt:


    forward WeaponCalled(playerid, weaponid);


    //unter OnPlayerKeyStateChange
    if(newkeys & KEY_FIRE && GetPlayerWeapon(playerid) != 0) WeaponCalled(playerid, GetPlayerWeapon(playerid));


    //Dann weiter unten im Skript
    public WeaponCalled(playerid, weaponid)
    {
    if(weaponid == 16)
    {
    //Hier hat der Spieler eine Granate geworfen
    }
    return 1;
    }


    mfg. :thumbup: