if(!M_IsPlayerInAnyZone(playerid)) hiermit wird erkannt ob ich in einer Zone bin.
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
-
-
Dann poste die Funktion.
-
die Funktion kommt von der Include #include <m_zones>
-
Dann öffne die Include und poste die Funktion.
-
stock M_IsPlayerInAnyZone(playerid)
{
for(new zoneid=0; zoneid<MAX_ZONES; zoneid++)
{
if(M_IsValidZone(zoneid))
{
if(M_IsPlayerInZone(playerid,zoneid))
{
return 1;
}
}
}
return 0;
} -
Was ist an der Abfrage falsch? 0o
if(pInfo[playerid][pFraktion] != 6 pInfo[playerid][pAdmin] < 5)
-
-
Dann füge das hier unten in der Include hinzu:
stock M_GetPlayerZone(playerid)
{
for(new zoneid=0; zoneid<MAX_ZONES; zoneid++)
{
if(M_IsValidZone(zoneid))
{
if(M_IsPlayerInZone(playerid,zoneid))
{
return zoneid;
}
}
}
return -1;
}Und ändere den Befehl zu:
ocmd:cflagge(playerid, params[])
{
new query[500], Float:x, Float:y, Float:z;
if(CZ[playerid][create] != 1) return SendClientMessage(playerid, COLOR_WHITE, "Um eine Gangzone zu erstellen, benutze '/creategangzone'!");
CZ[playerid][zid] = M_GetPlayerZone(playerid);
if(!M_IsPlayerInAnyZone(playerid)) return SendClientMessage(playerid, COLOR_WHITE, "Du bist in keiner Gangzone!");
if(CZ[playerid][zid] < 0) return SendClientMessage(playerid, COLOR_WHITE, "Du bist in keiner CZ!");
GetPlayerPos(playerid, x, y, z);
GZ[CZ[playerid][zid]][flagge_x] = x, GZ[CZ[playerid][zid]][flagge_y] = y, GZ[CZ[playerid][zid]][flagge_z] = z, CZ[playerid][create] = 0;
GZ[CZ[playerid][zid]][pickup] = CreatePickup(1314, 1, x, y, z, 0);
GZ[CZ[playerid][zid]][label] = Create3DTextLabel("Tippe '/angriff', um das Gebiet anzugreifen.\nTippe '/flagge' | Y/Z, um die Flagge zu erobern.", COLOR_WHITE, x, y, z, 20, 0);
format(query, sizeof(query), "INSERT INTO gangfight (owner, maxX, maxY, minX, minY, flaggeX, flaggeY, flaggeZ, erstellt) VALUES ('%s', '%f', '%f', '%f', '%f', '%f', '%f', '%f', '%d')",
GZ[CZ[playerid][zid]][owner], GZ[CZ[playerid][zid]][max_x], GZ[CZ[playerid][zid]][max_y], GZ[CZ[playerid][zid]][min_x], GZ[CZ[playerid][zid]][min_y], GZ[CZ[playerid][zid]][flagge_x], GZ[CZ[playerid][zid]][flagge_y], GZ[CZ[playerid][zid]][flagge_z], CZ[playerid][zid]);
mysql_pquery(handle, query);
return SendClientMessage(playerid, COLOR_WHITE, "Du hast die Zone erfolgreich erstellt.");
}Fabi.StaR:
Syntaktisch nichts. -
Fabi.StaR: Das hängt ganz davon ab, was passieren soll.
Es soll folgendes passieren:
Wenn man nicht in der fraktion 6 ist oder auch nicht ein admin level von 5 oder höher hat soll eine Message ausgegeben werden.
-
if(pInfo[playerid][pFraktion] != 6 && pInfo[playerid][pAdmin] < 5)
"oder auch" = "und" ?
-
-
Danke
-
if(strcmp(strget(cmdtext,0), "/register", true) == 0)
{
if(!dini_Exists(Datei(playerid))) // wenn der Spieler sich regestriert und es noch keine .ini Datei mit seinem Namen gibt
{
dini_Create(Datei(playerid)); // Erstelle eine Neue .ini Datei
dini_IntSet(Datei(playerid),"passwort",udb_hash(strget(cmdtext,1))); // Setze in die .ini Datei(save,"dass passwort", welches er eingegebne hat)
SendClientMessage(playerid, COLOR_GREEN, "***Dein Account wurde erfolgreich registriert***");
SendClientMessage(playerid, COLOR_GREEN, "***Nutze /login [Passwort] um dich einzuloggen***");
}
else
{
if(dini_Exists(Datei(playerid))) // Wenn beim regestrieren die Datei schon besteht
{
SendClientMessage(playerid, COLOR_RED, "Der Account ist bereits registriert");
return 1;
}
}
}Machs mal so (hast am Ende 2 Klammern vergessen)
Eine Frage:
Gibt es eine Funktion, damit man Sirenen auch am Tag an hat?
jetzt habe ich wieder ein crash
-
Okay klappt nun. Hätte noch eine Frage, und zwar wie kann man aus der Datenbank Spalten löschen. Wollte es für diesen Command benutzen.
ocmd:destroyzone(playerid, params[])
{
new zone = M_GetPlayerCurrentZone(playerid);
if(!IsPlayerAdmin(playerid)) return 1;
if(!M_IsPlayerInAnyZone(playerid)) return SendClientMessage(playerid, COLOR_WHITE, "Du bist in keiner Zone!");
GZ[zone][flagge_x] = 0, GZ[zone][flagge_y] = 0, GZ[zone][flagge_z] = 0,
GZ[zone][min_x] = 0, GZ[zone][min_y] = 0, GZ[zone][max_x] = 0, GZ[zone][max_y] = 0;
DisableZone(zone);
DestroyPickup(GZ[zone][pickup]);
Delete3DTextLabel(GZ[zone][label]);
if(GF[zone][started] >= 1) GF[zone][zeit] = GFTime;
GZ[zone][erstellt] = 0;
return SendClientMessage(playerid, COLOR_WHITE, "Du hast die Zone erfolgreich gelöscht.");
} -
Ich nehme an du meinst Zeilen. Die löschst du mit DELETE.
http://www.w3schools.com/php/php_mysql_delete.asp -
Hab das nun so gemacht, aber die Zeile verschwindet nicht.
ocmd:destroyzone(playerid, params[])
{
new zone = M_GetPlayerCurrentZone(playerid), query[100];
if(!IsPlayerAdmin(playerid)) return 1;
if(!M_IsPlayerInAnyZone(playerid)) return SendClientMessage(playerid, COLOR_WHITE, "Du bist in keiner Zone!");
GZ[zone][flagge_x] = 0, GZ[zone][flagge_y] = 0, GZ[zone][flagge_z] = 0,
GZ[zone][min_x] = 0, GZ[zone][min_y] = 0, GZ[zone][max_x] = 0, GZ[zone][max_y] = 0;
DisableZone(zone);
DestroyPickup(GZ[zone][pickup]);
Delete3DTextLabel(GZ[zone][label]);
if(GF[zone][started] >= 1) GF[zone][zeit] = GFTime;
GZ[zone][erstellt] = 0;
format(query, sizeof(query), "DELETE FROM gangfight WHERE id=%s", zone);
mysql_pquery(handle, query);
return SendClientMessage(playerid, COLOR_WHITE, "Du hast die Zone erfolgreich gelöscht.");
} -
Wie erhöhe ich in MySQL / SQL einen wert um bspw. 1?
Ich habe sowas gemacht... aber jetzt trägt er nichts mehr ein...
format(query,128,"UPDATE `USERS` SET `WANTED` += '1' WHERE `Name` = '%s'",query);
-
Grapefruit:
format(query, sizeof(query), "DELETE FROM gangfight WHERE id=%s", zone);
zu:
format(query, sizeof(query), "DELETE FROM gangfight WHERE id=%d", zone);Derek Westbrook:
format(query,128,"UPDATE `USERS` SET WANTED = WANTED + 1 WHERE `Name` = '%s'",query); -
Danke ;D
-
Jeffry: kannst du bitte mein script überfliegen und gucken wo der fehler ist, weil ich ein crash kriege ich will doch nur weiter scripten
-
Wird immer noch nicht gelöscht. bekomme aber diesen Error in der Log.
[22:03:51] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TaigX'' at line 1
-