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.

    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;
    }
    }

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

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

    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)];

    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.