Continue springt in einer Schleife direkt zum nächsten Schleifen Wert.
Beiträge von Jeffry
-
-
Schreibe es mal mit einer Variable:
CreateTables()
{
new query[1024];
// Spielerdaten
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `script_accounts` (");
format(query, sizeof(query), "%s `ID` int(11) NOT NULL PRIMARY KEY,", query);
format(query, sizeof(query), "%s `Name` varchar(64),", query);
format(query, sizeof(query), "%s `Passwort` varchar(128) NOT NULL,", query);
format(query, sizeof(query), "%s `InternetProtocol` varchar(128) NOT NULL,", query);
format(query, sizeof(query), "%s `Eingeloggt` int(2) NOT NULL DEFAULT '0',", query);
format(query, sizeof(query), "%s `Admin` int(2) NOT NULL DEFAULT '0',", query);
format(query, sizeof(query), "%s `Tutorial` int(2) NOT NULL DEFAULT '0',", query);
format(query, sizeof(query), "%s `Level` int(2) NOT NULL DEFAULT '0',", query);
format(query, sizeof(query), "%s `Geld` int(2) NOT NULL DEFAULT '0',", query);
format(query, sizeof(query), "%s `Bank` int(2) NOT NULL DEFAULT '0',", query);
format(query, sizeof(query), "%s `Skin` int(2) NOT NULL DEFAULT '0'", query);
format(query, sizeof(query), "%s) ENGINE=InnoDB DEFAULT CHARSET=latin1;", query);
mysql_tquery(Handle, query);
// Spieler Scheine
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `script_scheine` (");
format(query, sizeof(query), "%s `ID` int(11) NOT NULL PRIMARY KEY,", query);
format(query, sizeof(query), "%s `Name` varchar(64),", query);
format(query, sizeof(query), "%s `Autoschein` int(2) NOT NULL DEFAULT '0',", query);
format(query, sizeof(query), "%s `Motorradschein` int(2) NOT NULL DEFAULT '0',", query);
format(query, sizeof(query), "%s `Flugschein` int(2) NOT NULL DEFAULT '0',", query);
format(query, sizeof(query), "%s `Waffenschein` int(2) NOT NULL DEFAULT '0',", query);
format(query, sizeof(query), "%s `Zollschein` int(2) NOT NULL DEFAULT '0'", query);
format(query, sizeof(query), "%s) ENGINE=InnoDB DEFAULT CHARSET=latin1;", query);
mysql_tquery(Handle, query);
// Allgemeines
return 1;
}Falls es nicht geht, poste was im MySQL Log steht, wenn du die Tabelle erstellen lassen willst.
-
Wenn es ohne geht ist ja auch gut.
Die Position stellst hiermit ein:
Textdraw9[playerid] = CreatePlayerTextDraw(playerid, 164.500000, 195.750000, "usebox");X Koordinate am Bildschirm
Y Koordinate am Bildschirm -
Du kannst die Box so entfernen:
http://wiki.sa-mp.com/wiki/PlayerTextDrawBoxColor zu 0x00000000 setzen. -
So wird es sein, ja.

-
Nö, das geht immer.
@Schlaubi:
Ändere die drei mal zu:
PlayerTextDrawLetterSize(playerid, Textdraw9[playerid], 3.000000, 4.609258);
PlayerTextDrawTextSize(playerid, Textdraw9[playerid], 126.125000, 50.000000);
PlayerTextDrawColor(playerid, Textdraw9[playerid], 0xFFFFFFFF); -
Also wenn ich das richtig deute, dann ist PlayerUpdate(playerid) das einzige was nicht klappt.
Das kann ich dir auch sagen warum. Wie die Funktion schon sagt (Update) musst du UPDATE verwenden, nicht INSERT. Ändere das ab und teste es, den Code hattest du ja oben schon.Falls es nicht klappt, poste wie gesagt mal den Log.
Wie du das machst siehst du hier: Tipps: Scripting-Probleme richtig erklären (Kapitel 1.4)Wo im Code lässt du eigentlich PlayerUpdate(playerid) aufrufen?
-
Dann kannst du es an sich wesentlich einfacher schreiben.
new count, tmp;
for(new j=0; j<sizeof(HouseInfo); j++) if(HouseInfo[j][h_int] == inter && HouseInfo[j][h_type] == type) count++;
printf("count: %d", count);
for(new j=0; j<sizeof(InteriorInfo); j++)
{
printf("%d == %d | %d == %d", InteriorInfo[j][int_ID], inter, InteriorInfo[j][int_type], type);
if(InteriorInfo[j][int_ID] == inter && InteriorInfo[j][int_type] == type)
{
printf("%d == %d", tmp, count);
if(tmp == count)
{
printf("Nutze InteriorInfo %d", j);
HouseInfo[i][h_exitX] = InteriorInfo[j][int_exitX];
HouseInfo[i][h_exitY] = InteriorInfo[j][int_exitY];
HouseInfo[i][h_exitZ] = InteriorInfo[j][int_exitZ];
}
tmp++;
}
}zu:
for(new j=0; j<sizeof(InteriorInfo); j++)
{
printf("%d == %d | %d == %d", InteriorInfo[j][int_ID], inter, InteriorInfo[j][int_type], type);
if(InteriorInfo[j][int_ID] == inter && InteriorInfo[j][int_type] == type)
{
printf("Nutze InteriorInfo %d", j);
HouseInfo[i][h_exitX] = InteriorInfo[j][int_exitX];
HouseInfo[i][h_exitY] = InteriorInfo[j][int_exitY];
HouseInfo[i][h_exitZ] = InteriorInfo[j][int_exitZ];
break;
}
} -
Doch, du kannst es auch manuell machen, wenn du die Koordinaten weißt und es ausfüllen kannst. Ein Beispiel gibt es hier:
http://wiki.sa-mp.com/wiki/TextDrawSetPreviewModel -
new frakid = Spieler[playerid][pFraktion+1],string[250];
zu:
new frakid = Spieler[playerid][pFraktion]+1,string[250];@Schlaubi: Nein, das habe ich nie verwendet, sorry.
-
Aber wo ist dann der Sinn, dass manche Kombinationen doppelt existieren?
{2,271.884979,306.631988,999.148437,1},
{2,1523.509887,-47.821197,1002.130981,1},
Zwei mal 2|1.
-
SetTimerEx("CloseGate", 10000, 0, "i", i);
public CloseGate(id)
{
return MoveObject(torID[id], Tore[id][Zx],Tore[id][Zy], Tore[id][Zz], 2.5);
} -
Doch, aber nur wenn du es in dem Array mit zwei unterschiedlichen Koordinaten eingetragen hast, bzw. mit zwei Zeilen.
Wo wäre sonst der Sinn? Dann hättest du zwei mal das exakt gleiche Haus an der gleichen Stelle.
-
new InteriorInfo[][interEnum] =
{
//Apartments
{12,444.646911,508.239044,1001.419494,1},
{1,244.411987,305.032989,999.148437,1},
{2,271.884979,306.631988,999.148437,1},
{2,1523.509887,-47.821197,1002.130981,1},
{},
//Houses
{8,2807.619873,-1171.899902,1025.570312,2},
{3,2496.049804,-1695.238159,1014.742187,2},
{5,318.564971,1118.209960,1083.882812,2},
{5,2350.339843,-1181.649902,1027.976562,2},
{1,2527.654052,-1679.388305,1015.498596,2},
//Villas
{12,2324.419921,-1145.568359,1050.710083,3},
{5,1267.663208,-781.323242,1091.906250,3}
};Du hast 12 und 3 eingegeben, es gibt aber nur eine Zeile (die vorletzte) die 12 und 3 hat, eine zweite gibt es nicht => Fehler.
Am besten du lässt dir beim Erstellen, wenn keine Zeile gefunden wird, einen Fehler ausgeben. -
Nein.
Unter
new Tore[][Tore_enum] = {
{0,1590.33, -1637.92, 14.83, 0.00, 0.00, 0.00,"Das Tor schließt in 10sec automatisch",1590.35, -1637.92, 8.33, 2.5, 1590.33, -1637.92, 14.83 },//LSPDGTor
{0,1542.87, -1627.64, 15.12, 0.00, 0.00, 90.00,"Das Tor schließt in 10sec automatisch",1542.87, -1627.64, 8.97, 2.5, 0.00, 0.00, 90.00},//LSPDHTor
{0,309.80, -1554.20, 32.11, 0.00, 0.00, -38.10,"Das Tor schließt in 10sec automatisch",309.80, -1554.20, 27.40, 2.5, 0.00, 0.00, -38.10},//FBILTor
{0,363.88, -1470.44, 32.06, 0.00, 0.00, -142.32,"Das Tor schließt in 10sec automatisch",363.88, -1470.44, 26.90, 2.5, 0.00, 0.00, -142.32},//FBIRTor
{0,-2126.41, -80.48, 37.05, 0.00, 0.00, 0.00,"Das Tor schließt in 10sec automatisch",-2115.61, -80.48, 37.05, 2.5, 0.00, 0.00, 0.00},//Fahrschul LKWTor
{0,-2030.71, -221.54, 34.76, 0.00, 0.00, 0.00,"Das Tor schließt in 10sec automatisch",-2030.71, -221.54, 31.38, 2.5, 0.00, 0.00, 0.00}//FS Tor
};
das einfügen:
new torID[sizeof(Tore)]; -
MAX_TORE musst du mit der Anzahl der Tore ersetzen die du hast, oder mit sizeof(Tore), falls du es unter "Tore" deklarierst.
-
Der Zusammenhang deines Codes, zumindest so wie er da steht, ist für mich nicht nachvollziehbar.
Wird denn der Spieler, wenn er sich registriert, in die Datenbank eingetragen? Wenn nein, poste den Code der das eigentlich machen soll.
Falls ja, welcher Teil vom Code funktioniert nicht? Und poste da dann bitte den kompletten Code und nicht nur das Query. Falls es in einem Callback oder einer Funktion steht, poste bitte die ganze Funktion und zeige ebenfalls wie du diese aufrufst.Mit dieses Bruchstücken kann ich leider nichts anfangen. Da kann ich dich nur drauf verweisen mal in den MySQL Log zu schauen, was da steht, wenn du mysql_log auf LOG_ALL stellst.
-
Problem 1:
Das geht nicht, wenn du in deinem Daten-Array keine zweite Datenreihe für dieses Interior mit diesem Typ hast.Zwecks den Pickups: Gut, das kann ein Problem vom Streamer sein, das weiß ich nicht. Wenn es aber eigentlich richtig gelöscht wird ist es ja in Ordnung.
-
Welcher Befehl funktioniert denn nicht? Hast du die Zahl im pragma mal etwas erhöht, geht er dann?
Zwecks dem NPC:
Schreibe es im Befehl mal so, und poste dann was im Log ausgegeben wird:
new Float:x, Float:y, Float:z, i, w;
GetPlayerPos(NPC_ID, x, y, z);
GetPlayerInterior(NPC_ID, i);
GetPlayerVirtualWorld(NPC_ID, w);
SetPlayerPos(playerid, x, y, z);
SetPlayerInterior(playerid, i);
SetPlayerVirtualWorld(playerid, w);
printf("World: %d | Interior: %d", w, i);
NPC_ID natürlich wieder ersetzen. -
new torID[MAX_TORE];
for(new i = 0; i < sizeof(Tore); i++)
{
if(Tore[i][tID] == 0)
{
torID[i] = CreateObject(980, Tore[i][Zx], Tore[i][Zy], Tore[i][Zz], Tore[i][Zrx], Tore[i][Zry], Tore[i][Zrz]);
}
}if (strcmp("/tor", cmdtext, true, 10) == 0)
{
for(new i = 0; i < sizeof(Tore); i++)
{
if(IsPlayerInRangeOfPoint(playerid,10,Tore[i][Zx],Tore[i][Zy],Tore[i][Zz]))
{
MoveObject(torID[i], Tore[i][Ax], Tore[i][Ay], Tore[i][Az],2.5,Tore[i][Arx],Tore[i][Ary],Tore[i][Arz]);
SendClientMessage(playerid,GRÜN,Tore[i][Msg]);
return 1;
}
}
return SendClientMessage(playerid,-1,"Hier ist keine schranke");
}Zwecks dem Schließen:
Da machst du ebenfalls einen Timer, gibst "i" mit (SetTimerEx) und bewegst das Objekt wieder an die Anfangsposition zurück.