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?
Bizrob System Fehler beim ausführen
- xSoldier
- Geschlossen
- Erledigt
-
-
Hast du dir Variablen zu den jeweiligen bizzes gemacht bzw. jedem Biz eine ID gegeben?
Kannst ein Enum erstellen - bizInfo[bizID][robAble] - z.B. -
...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.
-
Meinst du das so?
new Bizrobb[] =
{
1944.3746,-1772.5388,13.3906,
1966.7273,-1772.5297,13.5469
};//EDIT den rest hab ich nicht verstanden sry
-
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
-
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?Lern erstmal die Basics und mach dich dann daran irgendwelche Systeme zu bauen...das kann sich doch keiner anschauen
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.
-
Du kannst es auch nicht einfach Kopieren..
Kaliber hat dir nur nen Beispiel gegeben und kein Fertiges Script.
Ich geb dir nen Tipp anstatt zu Kopieren, les dir das Wiki durch und lern es. -
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}
}; -
In deinem Befehl ist weiterhin ein Klammerfehler.
Schau's dir genau an, ich habs nach 5 Sekunden gesehen./e
Sind sogar 2 Klammerfehler. -
-
Kannst du mir bitte weiterhelfen? ich finde den Klammerfehler nicht..
-
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. -
Okay danke TheTutoFreak:
Funktioniert, aber ich kriege Errors das tank_pos nicht definiert ist.
Wie mache ich das einfach
#define tank_pos ? -
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).
-
-
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.
-
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}
};