Bizrob System Fehler beim ausführen

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo,
    wie die Überschrift schon verrärt, habe ich ein Problem beim Bizsystem.
    Undzwar habe ich folgenden Fehler.
    Ich erkläre das euch mal^^
    Also in Los Santos gibt es mehrere Tankstellen die man ausrauben kann per /bizrob -> das heißt mehr Coordinaten
    Zurzeit mache ich dies so:
    Kurz und knappes Beispiel:
    if(IsPlayerInRangeOfPoint(playerid,3.0,1944.3746,-1772.5388,13.3906) || IsPlayerInRangeOfPoint(playerid,3.0,1966.7273,-1772.5297,13.5469))
    Aber es nimmt nur 1 auf das heißt raubt einer die Gangwar Tanke aus, kann man die andere Tankstelle nicht ausrauben für 30min.
    Ich möchte es aber so haben, wenn man nur die Gangwar Tank ausraubt, dann kann ein anderer eine andere Tankstelle ausrauben, aber das geht nicht weil
    er es falsch ließt d.h wenn man 1 Tankstelle ausraubt sind alle betroffen und man muss 30min bei jeder Tanke warten bis man sie wieder ausrauben kann.
    Könnt ihr mir Tipps geben? wie er nur 1 Tankstelle abließt und die anderen inruhe lässt?

  • ...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:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Meinst du das so?


    Ich hab dir das doch schon alles vorgeschrieben...les dir doch mal in Ruhe die Kommentare durch!


    und nein so nicht, schau doch in meine Zeile 3..da ist es doch schon deklariert :|

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • So hab das hinbekommen, aber leider Errors 26 :o
    Woran liegt da der Fehler?
    if(strcmp(cmd, "/bizrob", true) == 0)
    {
    if(PlayerInfo[playerid][pMember] == 13 || PlayerInfo[playerid][pLeader] == 13)
    {
    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
    }
    }


    Dies hab ich einfach ganz unten im Script reingehauen:
    stock const Float:tank_pos[][3] = {
    {1944.3746,-1772.5388,13.3906}, {1966.7273,-1772.5297,13.5469}
    };
    @t_clear(i);@t_clear(i) return t_rob[i] = false; //damit kann man wieder die Tankstelle ausrauben!


    Errors:
    C:\Users\Matze\Desktop\WOS Script 2.0\pawno\include\M_Bot.inc(152) : error 017: undefined symbol "IsAnAdmin"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(80) : error 017: undefined symbol "MAX_TANKSTELLEN"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(80) : error 009: invalid array size (negative, zero or out of bounds)
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(2627) : error 017: undefined symbol "ExtortionSBiz"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(2979) : error 017: undefined symbol "IsATransportGMBH"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(3026) : error 017: undefined symbol "IsPlayerInFrac"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(3039) : error 017: undefined symbol "IsPlayerInFrac"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(3049) : error 017: undefined symbol "IsPlayerInFrac"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(3057) : error 017: undefined symbol "IsAFahrschulVeh"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(3070) : error 017: undefined symbol "IsPlayerInFrac"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(3080) : error 017: undefined symbol "IsPlayerInFrac"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(3757) : error 017: undefined symbol "OnPlayerCarLogin"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(4386) : error 017: undefined symbol "RemoveBlitzer"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(4401) : error 017: undefined symbol "OnPlayerCarUpdate"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(4582) : error 017: undefined symbol "IsPlayerInFrac"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(4595) : error 017: undefined symbol "RemoveRoadblock"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(4637) : error 017: undefined symbol "SetPlayerToKnast"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(5122) : error 017: undefined symbol "DropPlayerWeapons"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(5156) : error 004: function "ClearBlack" is not implemented
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(5556) : error 017: undefined symbol "PreloadAnimLib"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(5557) : error 017: undefined symbol "PreloadAnimLib"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(5558) : error 017: undefined symbol "PreloadAnimLib"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(5559) : error 017: undefined symbol "PreloadAnimLib"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(5560) : error 017: undefined symbol "PreloadAnimLib"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(5561) : error 017: undefined symbol "PreloadAnimLib"
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(5562) : error 017: undefined symbol "PreloadAnimLib"


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    26 Errors.

  • 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:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • So hab den Befehl nun fertig, aber irgwie kriege ich 26 Errors.
    Kann mir jmd helfen?


    if(strcmp(cmd, "/bizrob", true) == 0)
    {
    if(PlayerInfo[playerid][pMember] == 13 || PlayerInfo[playerid][pLeader] == 13)
    {
    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])
    {
    if(Bizrob)
    {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Die Tankstelle wurde gerade erst überfallen.");
    return 1;
    }
    SetTimerEx("Bizrob_UnFreeze",180000,0,"i",playerid); // Nach 3 minuten Biz überfallen
    SendClientMessage(playerid, COLOR_YELLOW, "Du hast einen Raubüberfall auf die Tankstelle begonnen!.");
    SendClientMessage(playerid, COLOR_YELLOW, "ACHTUNG! Du musst dich in der nähe der Tankstelle aufhalten!");
    Bizrob = 1;
    SetTimer("Bizrobtimer",1800000,0); // Nach 30 Minuten erst wieder ausrauben
    return 1;
    }
    else
    {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Du bist nicht, bei einer Tankstelle!");
    return 1;
    }
    }
    }


    Ganz unten im Script eingefügt.
    stock const Float:tank_pos[][3] = {
    {1944.3746,-1772.5388,13.3906}, {1966.7273,-1772.5297,13.5469}
    };

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen

  • if(strcmp(cmd, "/bizrob", true) == 0)
    {
    if(PlayerInfo[playerid][pMember] == 13 || PlayerInfo[playerid][pLeader] == 13)
    {
    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])
    {
    if(Bizrob)
    {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Die Tankstelle wurde gerade erst überfallen.");
    return 1;
    }
    SetTimerEx("Bizrob_UnFreeze",180000,0,"i",playerid); // Nach 3 minuten Biz überfallen
    SendClientMessage(playerid, COLOR_YELLOW, "Du hast einen Raubüberfall auf die Tankstelle begonnen!.");
    SendClientMessage(playerid, COLOR_YELLOW, "ACHTUNG! Du musst dich in der nähe der Tankstelle aufhalten!");
    Bizrob = 1;
    SetTimer("Bizrobtimer",1800000,0); // Nach 30 Minuten erst wieder ausrauben
    return 1;
    }
    else
    {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Du bist nicht, bei einer Tankstelle!");
    return 1;
    }
    }
    }
    }

    Versuchs mal so.

  • Du hast doch bereits die Funktion erstellt.
    stock const Float:tank_pos[][3] = {
    {1944.3746,-1772.5388,13.3906}, {1966.7273,-1772.5297,13.5469}
    };


    Falls das nicht klappt, dann deklariere die Funktion mal so oben im Script:
    new Float:tank_pos[][3] =
    {
    {1944.3746,-1772.5388,13.3906}, {1966.7273,-1772.5297,13.5469}
    };

  • Okay, aber ich kriege nun 1 Error:
    C:\Users\Matze\Desktop\WOS Script 2.0\gamemodes\Dark.pwn(21528) : error 001: expected token: ")", but found "{"


    In dieser Zeile:
    if(IsPlayerInRangeOfPoint(playerid,3.0,tank_pos[i][0],tank_pos[i][1],tank_pos[i][2])
    {


    So sieht der fertige Command aus:
    if(strcmp(cmd, "/bizrob", true) == 0)
    {
    if(PlayerInfo[playerid][pMember] == 13 || PlayerInfo[playerid][pLeader] == 13)
    {
    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])
    {
    if(Bizrob)
    {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Die Tankstelle wurde gerade erst überfallen.");
    return 1;
    }
    SetTimerEx("Bizrob_UnFreeze",180000,0,"i",playerid); // Nach 3 minuten Biz überfallen
    SendClientMessage(playerid, COLOR_YELLOW, "Du hast einen Raubüberfall auf die Tankstelle begonnen!.");
    SendClientMessage(playerid, COLOR_YELLOW, "ACHTUNG! Du musst dich in der nähe der Tankstelle aufhalten!");
    Bizrob = 1;
    SetTimer("Bizrobtimer",1800000,0); // Nach 30 Minuten erst wieder ausrauben
    return 1;
    }
    else
    {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Du bist nicht, bei einer Tankstelle!");
    return 1;
    }
    }
    }
    }


    Was ist daran falsch?

  • if(IsPlayerInRangeOfPoint(playerid,3.0,tank_pos[i][0],tank_pos[i][1],tank_pos[i][2]))
    So ist es richtig. Da hat eine Klammer gefehlt :)

  • 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:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • 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:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Okay danke habe keine Errors aber wenn ich nun alle Tankstellen bizze einfüge bekomme ich Warnings in dieser Zeile:
    if(IsPlayerInRangeOfPoint(playerid,3.0,tank_pos[i][0],tank_pos[i][1],tank_pos[i][2],tank_pos[i][3],tank_pos[i][4],tank_pos[i][5],tank_pos[i][6],tank_pos[i][7],tank_pos[i][8],tank_pos[i][9],tank_pos[i][10],tank_pos[i][11],tank_pos[i][12],tank_pos[i][13]))


    new Float:tank_pos[][14] =
    {
    {1944.3746,-1772.5388,13.3906}, {1966.7273,-1772.5297,13.5469},
    {1929.0924,-1776.2524,13.5469}, {661.1070,-573.4550,16.3359},
    {1004.5420,-930.6719,42.3281}, {2117.5325,896.9323,11.1797},
    {638.6944,1683.6752,7.1875}, {-1320.3260,2698.3523,50.2663},
    {-1465.6660,1873.0636,32.6328}, {-1675.9081,432.0032,7.1797},
    {-78.8046,-1169.7622,2.1464}, {59.9602,1223.6699,18.8650},
    {-1566.9137,-2730.0513,48.7435}

    };

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen