Eigentlich kann man beim umschreiben von simplen befehlen ohne Parameter keine Fehler machen.
Beiträge von Akino Kiritani
-
-
Deine Funktion haben auch merkwürdige Funktionen für ihre Namen -.-'
if(GetPlayerMoney(playerid) < GetPlayerDollars(playerid))
{
SetPlayerCash(playerid,GetPlayerMoney(playerid));
}
Außerdem würde ich an deiner Stelle im hintergrund noch das orginale Geld mitlaufen lassen, verhindert Bugs
-
new ID[5];
for(new FraktionID = 0; FraktionID < MAX_FRACS; FraktionID++)
{
//Nun speichern wir die Daten in der Datenbank.
valstr(ID,FraktionID);//Wandelt die Zahl in einen string um genau wie format
mysql_SetInt("Fraktionskassse", "Mats", Frak[FraktionID][Mats], "Name",ID);
mysql_SetInt("Fraktionskassse", "Kasse", Frak[FraktionID][Kasse], "Name",ID);
}
So -
Mit irgendwelchen Sachen meine ich z.B. Zahlen wie die ZonenID oder halt bestimmte Meldungen, damit du nachvollziehen kannst was der Code macht
-
Dann nutzt du nicht den richtigen Code...
Ich hab ihn vorhin oben schon verbessert -
du musst zuerst deine Variable FraktionID in einen String umwandeln oder deine Funktion umschreiben

-
Könnten wir jetzt den Offtopic lassen und uns wieder ums Thema kümmern?
B2T:
Funktionierts jetzt?
Oder nicht? -
Debug einzubauen ist eigentlich ganz ei nfach du lässt dir einfach per SendClientMessage oder print/printf irgendwelche sachen ausgeben
Ich zeigs dirs mal
if(strcmp(cmd,"/gw",true) == 0)
{
//GangWar System
if(PlayerInfo[playerid][pLeader] == 13||PlayerInfo[playerid][pLeader] == 14)//Hier wird abefragt welche Fraktion einen Gangfight starten darf
{
SendClientMessage(playerid,COLOR_BLUE,"Spieler in der Fraktion 13 oder 14");
if(IsPlayerInGebiet(playerid) > -1)//Ob der Spieler in einem Gebiet ist.
{
new zone = IsPlayerInGebiet(playerid);//Die Gebietsid wird in der Variable zone gespeichert.
if(Gebiete[zone][gOn] == 1) return SendClientMessage(playerid,COLOR_BLUE,"Das Gebiet wird schon Umkämpft!");//Hier wird abgefragt ob das Gebiet schon bekämpft wird
if(Gebiete[zone][gOwner] == PlayerInfo[playerid][pLeader]) return SendClientMessage(playerid,COLOR_BLUE," Deine Fraktion ist im Besitzt dieses Gebietes");//Hier wird abgefragt ob die Fraktion schon im besitzt dieser Funktion ist
Gebiete[zone][gAngreifer] = PlayerInfo[playerid][pLeader];//Hier wird der gAngreifer gesetzt.
Gebiete[zone][gOn] = 1;//Das der Gangfight für dieses Gebiet läuft
SetTimerEx("GangFight",3600000,0,"i",zone); //Dies startet einen Timer der eine Stunde läuft , damit beenden wir den Gangifght. Die Zoneid wird mit übergeben
SendClientMessage(playerid,COLOR_BLUE,"Timer gestartet");
for(new i; i<MAX_PLAYERS; i++)//Damit jeder Spieler abgefragt wird
{
if(PlayerInfo[i][pLeader] == Gebiete[zone][gOwner] ||PlayerInfo[i][pMember] == Gebiete[zone][gOwner])//Ob spieler oder Leader in dieser Fraktion ist
{
SendClientMessage(playerid,COLOR_RED,"Eines ihrer Gebiete wird angegriffen.");//Sendet eine Mitteilung
}
if(PlayerInfo[i][pLeader] == Gebiete[zone][gAngreifer] ||PlayerInfo[i][pMember] == Gebiete[zone][gAngreifer])//siehe oben
{
SendClientMessage(playerid,COLOR_RED,"Dein Leader hat ein Gangwar gestartet!");
}
}
}
}
return 1;
}
so in etwa
-
Weil wenn du dir das mal anguckst dem von 8D. sehr ähnlich ist, deshalb schließt er das draus
-
Mhm eine Idee wäre noch ein Debug rein zubauen, ich hoffe du weißt wie das geht

Oder du bist einfach nicht der Leader der Fraktion 13 oder 14

Kann ja um diese Zeit ma passieren
-
Ist mir nicht bekannt,warum sollte ein Gangzonensytem nur mit M_Zones funktionieren?
Ich hab auch einsgeschrieben und das funktioniert, nur ist meins Wesentlich Komplexer aufgebaut
-
Ne Idee wäre ein Timer oder zur not OnPlayerUpdate
Ich würde nen Timer nehmen den es schon gibt und nicht einen neuen erstellen
-
Müsste dann bei dir so aussehen
if(GetPlayerMoney(playerid) < GetPlayerDollars(playerid))
{
ResetPlayerCash(playerid);
GivePlayerCash(playerid,GetPlayerMoney(playerid));
}
für die Variablenfreaks
new money = GetPlayerMoney(playerid);
if(money < GetPlayerDollars(playerid))
{
ResetPlayerCash(playerid);
GivePlayerCash(playerid,money);
}//Edit FEhler

-
Zeig mir mal deine Variable in der du dein Geld speicherst dann zeig ich dir das
Oh mir fällt auf das ich da was vergessen hab

if(GetPlayerMoney(playerid) < (Geld[playerid])) Geld[playerid] = GetPlayerMoney(playerid);
-
Ich hatte mal das Problem, dass er mir keine Mitteilung gesendet hat nämlich weil ich einen "." (Punkt) am Ende von SendClientMessage gesetzt da returnte er einfach ich weiß zwar nicht wieso, aber nachdem ich den Punkte weggenommen hab gings vielleicht hilft dir das
if(PlayerInfo[i][pLeader] == Gebiete[zone][gOwner] ||PlayerInfo[i][pMember] == Gebiete[zone][gOwner])//Ob spieler oder Leader in dieser Fraktion ist
{
SendClientMessage(playerid,COLOR_RED,"Eines ihrer Gebiete wird angegriffen");//Sendet eine Mitteilung
} -
Wie findest du denn raus in welcher Fraktion der Spieler sich befindet?
Mit Fraktion oder Member?Son paar Infos zum Script wären nicht schlecht.
Ich würds so machen
new FraktionsID = PStats[playerid][Fraktion]; Musst du halt auf dein Script anpassen
GF(Wenn du das nutzt weiß ich ja nicht

new FraktionsID = PlayerInfo[playerid][Member];
Im GF ist das glaub ich so eingestellt, dass wenn man Leader auch Member der Fraktion ist -
Es ist vielleicht für Anfänger ganz nütlzlich, nur ist das mit dem Herzpickup unglücklich gewählt, denn wenn man das Pickup aufnimmt ohne weitere Funktionen dafür einzurichten bekommt man trozdem volle Leben, du kannst es z.B. mit dem Rüstungs Pickup verbinden, so dass man Rüstung und volle Leben bekommt.
-
Ich glaub du hast mich da etwas falsch verstanden ich wollte diese Funktion sehen
IsPlayerInGebiet(playerid)
Denn ich denke da stekct der Fehler -
die Farben sind ja so aufgebaut
0xFFFFFFFF
und am ende ist halt die Tarnsparenz musst du halt umstellen ich nehm immer 96 -
mhm irgendwie ergiebt das hier keinen sinn
new zone = IsPlayerInGebiet(playerid);//Die Gebietsid wird in der Variable zone gespeichert.
Zeig uns mal den Code von der Funktion, denn rein theoretisch nach dem Funktionsnamen würde ich sagen das die funktion nur 0 oder 1 returnt.
D.h. der falsche Array wird aufgerufen damit auch die gleiche ZoneBTW: Wird in Gebiete[zone][Owner] eine Zahl oder ein String gespeichert?