Beiträge von AeroxTobi

    naja nicht wirklich erfolg dabei, er durchläuft alles sauber und zeigt mir die im XML hinterlegten positionen richtig an


    So jetzt hab ich herrausgefunden dass er genau da:


    DialogResponse:TuningGarage_Neon(playerID, response, listItem, inputText[]){if (response){new tuningPartIndex;new XMLNode:xml = XML_LoadDocument("vehiclemodels.xml");xml = XML_GetFirstChild(xml, "vehiclemodels");new XMLNode:modelNode = XML_GetFirstChild(xml, "model");while (modelNode){new modelID = XML_GetIntAttribute(modelNode, "id");if (modelID < 400 || modelID > 611){printf("Invalid vehicle model ID: %d", modelID);modelNode = XML_GetNextSibling(modelNode, "model");continue;}new arrayIndex = modelID - 400;// First array element starts with 0, vehicle models are starting with 400 (400 - 400 = 0, 401 - 400 = 1, ...)new tuningPartSlot;new XMLNode:neonNode = XML_GetFirstChild(modelNode, "neon");if (neonNode){new Float:neonPosX = XML_GetFloatAttribute(neonNode, "x");new Float:neonPosY = XML_GetFloatAttribute(neonNode, "y");new Float:neonPosZ = XML_GetFloatAttribute(neonNode, "z");new neonPrice = XML_GetIntAttribute(neonNode, "price");for (new neonModelID = 18647; neonModelID <= 18652; neonModelID++){if (tuningPartSlot >= MAX_TUNINGPARTSPERVEHICLE){break;}g_tuningParts[tuningPartIndex][E_TUNINGPART_MODELID] = neonModelID;g_tuningParts[tuningPartIndex][E_TUNINGPART_PRICE] = neonPrice;g_tuningParts[tuningPartIndex][E_TUNINGPART_TYPE] = TUNINGPART_NEON;// Left sideg_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_X][0] = -neonPosX;g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_Y][0] = neonPosY;g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_Z][0] = neonPosZ;// Right sideg_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_X][1] = neonPosX;g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_Y][1] = neonPosY;g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_Z][1] = neonPosZ;g_vehicleModels[arrayIndex][E_VEHICLEMODEL_TUNINGPARTS][tuningPartSlot] = tuningPartIndex;tuningPartSlot++;tuningPartIndex++;printf("PosX = %f, PosY = %f, PosZ = %f", neonPosX, neonPosY, neonPosZ); //Genau bis hier hin geht er}}}if (listItem == 1)//Green{if (GetPlayerMoney(playerID) < TUNINGGARAGE_PRICE_NEON){GameTextForPlayer(playerID, LanguageString(playerID, StringID:80("You do not have enough money!")), 3000, 3);ShowDialog:TuningGarage_Neon(playerID);}else{printf("Neon Green used...");new vehicleID = GetPlayerVehicleID(playerID);new XMLNode:neonNode = XML_GetFirstChild(modelNode, "neon");if (neonNode){new Float:neonPosX = XML_GetFloatAttribute(neonNode, "x");new Float:neonPosY = XML_GetFloatAttribute(neonNode, "y");new Float:neonPosZ = XML_GetFloatAttribute(neonNode, "z");printf("PosX = %f, PosY = %f, PosZ = %f", neonPosX, neonPosY, neonPosZ);g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][0] = CreateObject(18649,0,0,0,0,0,0);g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][1] = CreateObject(18649,0,0,0,0,0,0);AttachObjectToVehicle(g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][0], GetPlayerVehicleID(playerID), -neonPosX, neonPosY, neonPosZ, 0.000000, 0.000000, 0.000000);AttachObjectToVehicle(g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][1], GetPlayerVehicleID(playerID), neonPosX, neonPosY, neonPosZ, 0.000000, 0.000000, 0.000000);printf("Attaching on Vehicle %d", vehicleID);ShowDialog:TuningGarage_Neon(playerID);}}}else{ShowDialog:TuningGarage_CategoryTypes(playerID, listItem);}


    Wo ich es grün hinterlegt habe, kommt allerdings crasht er vorher und zeigt mir die Position millionen fach an mit der folgenden log:
    [2019-10-16 21:47:49] [debug] Run time error 3: "Stack/heap collision (insufficient stack size)"
    [2019-10-16 21:47:49] [debug] Stack pointer (STK) is 0x9D1504, heap pointer (HEA) is 0x9D1650
    [2019-10-16 21:47:49] [debug] AMX backtrace:
    [2019-10-16 21:47:49] [debug] #0 00013120 in ?? (60, 257) from grgserver.amx
    [2019-10-16 21:47:49] [debug] #1 0003f2f0 in ?? (60) from grgserver.amx
    [2019-10-16 21:47:49] [debug] #2 0003d3f0 in ?? (60, 3) from grgserver.amx
    [2019-10-16 21:47:49] [debug] #3 0003e4ac in public DR_TuningGarage_MainMenu (60, 1, 3, 10291772) from grgserv$
    [2019-10-16 21:47:49] [debug] #4 native CallLocalFunction () from samp03svr
    [2019-10-16 21:47:49] [debug] #5 0002ca50 in public OnDialogResponse (60, 0, 1, 3, 10291752) from grgserver.amx
    [2019-10-16 21:47:51] PosX = -0.924996, PosY = 0.009998, PosZ = -0.674996
    [2019-10-16 21:47:51] PosX = -0.924996, PosY = 0.009998, PosZ = -0.674996
    [2019-10-16 21:47:51] PosX = -0.924996, PosY = 0.009998, PosZ = -0.674996
    [2019-10-16 21:47:51] PosX = -0.924996, PosY = 0.009998, PosZ = -0.674996




    Nach viel Rumprobieren hab ich nun jede Röhren Farbe auf das geändert...


    if (listItem == 1)//Green
    {
    new count;
    new tuningPartIndex;
    new XMLNode:xml = XML_LoadDocument("vehiclemodels.xml");
    xml = XML_GetFirstChild(xml, "vehiclemodels");
    new XMLNode:modelNode = XML_GetFirstChild(xml, "model");
    while (modelNode)
    {
    new XMLNode:neonNode = XML_GetFirstChild(modelNode, "neon");
    if (neonNode)
    {
    new Float:neonPosX = XML_GetFloatAttribute(neonNode, "x");
    new Float:neonPosY = XML_GetFloatAttribute(neonNode, "y");
    new Float:neonPosZ = XML_GetFloatAttribute(neonNode, "z");
    g_tuningParts[tuningPartIndex][E_TUNINGPART_TYPE] = TUNINGPART_NEON;


    // Left side
    g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_X][0] = -neonPosX;
    g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_Y][0] = neonPosY;
    g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_Z][0] = neonPosZ;


    // Right side
    g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_X][1] = neonPosX;
    g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_Y][1] = neonPosY;
    g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_Z][1] = neonPosZ;


    tuningPartIndex++;


    count++;
    modelNode = XML_GetNextSibling(modelNode, "model");
    }
    }


    if (GetPlayerMoney(playerID) < TUNINGGARAGE_PRICE_NEON)
    {
    GameTextForPlayer(playerID, LanguageString(playerID, StringID:80("You do not have enough money!")), 3000, 3);
    ShowDialog:TuningGarage_Neon(playerID);
    }
    else
    {
    printf("Neon Green used...");


    printf("PosX = %f, PosY = %f, PosZ = %f", g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_X][0], g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_Y][0], g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_Z][0]);
    printf("2 Position PosX = %f, PosY = %f, PosZ = %f", g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_X][1], g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_Y][1], g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_Z][1]);
    g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][0] = CreateObject(18649,0,0,0,0,0,0);
    g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][1] = CreateObject(18649,0,0,0,0,0,0);
    AttachObjectToVehicle(g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][0], GetPlayerVehicleID(playerID), g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_X][0], g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_Y][0], g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_Z][0], 0.000000, 0.000000, 0.000000);
    AttachObjectToVehicle(g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][1], GetPlayerVehicleID(playerID), g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_X][1], g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_Y][1], g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_Z][1], 0.000000, 0.000000, 0.000000);


    ShowDialog:TuningGarage_Neon(playerID);
    }
    XML_UnloadDocument(xml);
    }
    else
    {
    ShowDialog:TuningGarage_CategoryTypes(playerID, listItem);
    }


    Da ich der meinung war, dass es da durch kommt das ich die XML schon nach den response auslese... dennoch immer noch das gleiche mit dem Crashen und meinie Printf zeigt er erst garnicht an...


    Nicht mal wenn ich nicht genug geld habe, bringt er mir irgend etwas...

    Hallo alle mit einander,


    Ich hab ein kleines Problem:


    Ich hab in meinem Script ein neuen Dialog hinzugefügt wie sonst auch. Nun ist aber das Problem, dass mein Dialog nicht geöffnet wird. vielleicht könnt ihr den Fehler entdecken.


    ShowDialog:TuningGarage_Neon(playerID)
    {
    new list[1024];
    ConcatString(list, LanguageString(playerID, StringID:251("Neon Color: Green")), "\n");
    ConcatString(list, LanguageString(playerID, StringID:252("Neon Color: Blue")), "\n");
    ConcatString(list, LanguageString(playerID, StringID:253("Neon Color: Yellow")), "\n");
    ConcatString(list, LanguageString(playerID, StringID:254("Neon Color: Violet")), "\n");
    ConcatString(list, LanguageString(playerID, StringID:255("Neon Color: White")), "\n");
    ConcatString(list, LanguageString(playerID, StringID:256("Neon Color: Red")), "\n");
    printf("Dialog loading....");
    CreateDialog(playerID, "TuningGarage_Neon", DIALOG_STYLE_LIST, LanguageString(playerID, StringID:257("Select a Neon")), list, LanguageString(playerID, StringID:37("Next")), LanguageString(playerID, StringID:4("Cancel")));
    printf("Dialog loaded");
    }


    DialogResponse:TuningGarage_Neon(playerID, response, listItem, inputText[])
    {
    if (response)
    {
    new tuningPartIndex;
    new XMLNode:xml = XML_LoadDocument("vehiclemodels.xml");
    xml = XML_GetFirstChild(xml, "vehiclemodels");
    new XMLNode:modelNode = XML_GetFirstChild(xml, "model");
    while (modelNode)
    {
    new modelID = XML_GetIntAttribute(modelNode, "id");
    if (modelID < 400 || modelID > 611)
    {
    printf("Invalid vehicle model ID: %d", modelID);
    modelNode = XML_GetNextSibling(modelNode, "model");
    continue;
    }


    new arrayIndex = modelID - 400;// First array element starts with 0, vehicle models are starting with 400 (400 - 400 = 0, 401 - 400 = 1, ...)


    new tuningPartSlot;
    new XMLNode:neonNode = XML_GetFirstChild(modelNode, "neon");
    if (neonNode)
    {
    new Float:neonPosX = XML_GetFloatAttribute(neonNode, "x");
    new Float:neonPosY = XML_GetFloatAttribute(neonNode, "y");
    new Float:neonPosZ = XML_GetFloatAttribute(neonNode, "z");
    new neonPrice = XML_GetIntAttribute(neonNode, "price");


    for (new neonModelID = 18647; neonModelID <= 18652; neonModelID++)
    {
    if (tuningPartSlot >= MAX_TUNINGPARTSPERVEHICLE)
    {
    printf("Reached limit of %d tuning parts for vehicle %d", MAX_TUNINGPARTSPERVEHICLE, modelID);
    break;
    }


    g_tuningParts[tuningPartIndex][E_TUNINGPART_MODELID] = neonModelID;
    g_tuningParts[tuningPartIndex][E_TUNINGPART_PRICE] = neonPrice;
    g_tuningParts[tuningPartIndex][E_TUNINGPART_TYPE] = TUNINGPART_NEON;


    // Left side
    g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_X][0] = -neonPosX;
    g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_Y][0] = neonPosY;
    g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_Z][0] = neonPosZ;


    // Right side
    g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_X][1] = neonPosX;
    g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_Y][1] = neonPosY;
    g_tuningParts[tuningPartIndex][E_TUNINGPART_OFFSET_Z][1] = neonPosZ;


    g_vehicleModels[arrayIndex][E_VEHICLEMODEL_TUNINGPARTS][tuningPartSlot] = tuningPartIndex;


    tuningPartSlot++;
    tuningPartIndex++;
    }
    }
    }
    if (listItem == 1)//Green
    {
    if (GetPlayerMoney(playerID) < TUNINGGARAGE_PRICE_NEON)
    {
    GameTextForPlayer(playerID, LanguageString(playerID, StringID:80("You do not have enough money!")), 3000, 3);
    ShowDialog:TuningGarage_Neon(playerID);
    }
    else
    {
    new vehicleID = GetPlayerVehicleID(playerID);
    new XMLNode:neonNode = XML_GetFirstChild(modelNode, "neon");
    if (neonNode)
    {
    new Float:neonPosX = XML_GetFloatAttribute(neonNode, "x");
    new Float:neonPosY = XML_GetFloatAttribute(neonNode, "y");
    new Float:neonPosZ = XML_GetFloatAttribute(neonNode, "z");


    g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][0] = CreateObject(18649,0,0,0,0,0,0);
    g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][1] = CreateObject(18649,0,0,0,0,0,0);
    AttachObjectToVehicle(g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][0], GetPlayerVehicleID(playerID), -neonPosX, neonPosY, neonPosZ, 0.000000, 0.000000, 0.000000);
    AttachObjectToVehicle(g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][1], GetPlayerVehicleID(playerID), neonPosX, neonPosY, neonPosZ, 0.000000, 0.000000, 0.000000);


    MySQLFormat("UPDATE `vehiclecomponents` SET `componentId` = %d WHERE `vehicleId` = %d AND `slot` = %d", GetVehicleComponentInSlot(vehicleID, CARMODTYPE_NEON), VehicleProperty:vehicleID[SAVEID], CARMODTYPE_NEON);// Neon changes without beeing in a mod shop
    mysql_pquery(g_mysql, g_sqlQuery);


    ShowDialog:TuningGarage_Neon(playerID);
    }
    }
    }
    else
    {
    ShowDialog:TuningGarage_CategoryTypes(playerID, listItem);
    }
    if (listItem == 2) //Blue
    {
    if (GetPlayerMoney(playerID) < TUNINGGARAGE_PRICE_NEON)
    {
    GameTextForPlayer(playerID, LanguageString(playerID, StringID:80("You do not have enough money!")), 3000, 3);
    ShowDialog:TuningGarage_Neon(playerID);
    }
    else
    {
    new vehicleID = GetPlayerVehicleID(playerID);
    new XMLNode:neonNode = XML_GetFirstChild(modelNode, "neon");
    if (neonNode)
    {
    new Float:neonPosX = XML_GetFloatAttribute(neonNode, "x");
    new Float:neonPosY = XML_GetFloatAttribute(neonNode, "y");
    new Float:neonPosZ = XML_GetFloatAttribute(neonNode, "z");


    g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][0] = CreateObject(18648,0,0,0,0,0,0);
    g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][1] = CreateObject(18648,0,0,0,0,0,0);
    AttachObjectToVehicle(g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][0], GetPlayerVehicleID(playerID), -neonPosX, neonPosY, neonPosZ, 0.000000, 0.000000, 0.000000);
    AttachObjectToVehicle(g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][1], GetPlayerVehicleID(playerID), neonPosX, neonPosY, neonPosZ, 0.000000, 0.000000, 0.000000);


    MySQLFormat("UPDATE `vehiclecomponents` SET `componentId` = %d WHERE `vehicleId` = %d AND `slot` = %d", GetVehicleComponentInSlot(vehicleID, CARMODTYPE_NEON), VehicleProperty:vehicleID[SAVEID], CARMODTYPE_NEON);// Neon changes without beeing in a mod shop
    mysql_pquery(g_mysql, g_sqlQuery);


    ShowDialog:TuningGarage_Neon(playerID);
    }
    }
    }
    if (listItem == 3) //Yellow
    {
    if (GetPlayerMoney(playerID) < TUNINGGARAGE_PRICE_NEON)
    {
    GameTextForPlayer(playerID, LanguageString(playerID, StringID:80("You do not have enough money!")), 3000, 3);
    ShowDialog:TuningGarage_Neon(playerID);
    }
    else
    {
    new vehicleID = GetPlayerVehicleID(playerID);
    new XMLNode:neonNode = XML_GetFirstChild(modelNode, "neon");
    if (neonNode)
    {
    new Float:neonPosX = XML_GetFloatAttribute(neonNode, "x");
    new Float:neonPosY = XML_GetFloatAttribute(neonNode, "y");
    new Float:neonPosZ = XML_GetFloatAttribute(neonNode, "z");



    g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][0] = CreateObject(18650,0,0,0,0,0,0);
    g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][1] = CreateObject(18650,0,0,0,0,0,0);
    AttachObjectToVehicle(g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][0], GetPlayerVehicleID(playerID), -neonPosX, neonPosY, neonPosZ, 0.000000, 0.000000, 0.000000);
    AttachObjectToVehicle(g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][1], GetPlayerVehicleID(playerID), neonPosX, neonPosY, neonPosZ, 0.000000, 0.000000, 0.000000);


    MySQLFormat("UPDATE `vehiclecomponents` SET `componentId` = %d WHERE `vehicleId` = %d AND `slot` = %d", GetVehicleComponentInSlot(vehicleID, CARMODTYPE_NEON), VehicleProperty:vehicleID[SAVEID], CARMODTYPE_NEON);// Neon changes without beeing in a mod shop
    mysql_pquery(g_mysql, g_sqlQuery);


    ShowDialog:TuningGarage_Neon(playerID);
    }
    }
    }
    if (listItem == 4) //Violet
    {
    if (GetPlayerMoney(playerID) < TUNINGGARAGE_PRICE_NEON)
    {
    GameTextForPlayer(playerID, LanguageString(playerID, StringID:80("You do not have enough money!")), 3000, 3);
    ShowDialog:TuningGarage_Neon(playerID);
    }
    else
    {
    new vehicleID = GetPlayerVehicleID(playerID);
    new XMLNode:neonNode = XML_GetFirstChild(modelNode, "neon");
    if (neonNode)
    {
    new Float:neonPosX = XML_GetFloatAttribute(neonNode, "x");
    new Float:neonPosY = XML_GetFloatAttribute(neonNode, "y");
    new Float:neonPosZ = XML_GetFloatAttribute(neonNode, "z");



    g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][0] = CreateObject(18651,0,0,0,0,0,0);
    g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][1] = CreateObject(18651,0,0,0,0,0,0);
    AttachObjectToVehicle(g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][0], GetPlayerVehicleID(playerID), -neonPosX, neonPosY, neonPosZ, 0.000000, 0.000000, 0.000000);
    AttachObjectToVehicle(g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][1], GetPlayerVehicleID(playerID), neonPosX, neonPosY, neonPosZ, 0.000000, 0.000000, 0.000000);


    MySQLFormat("UPDATE `vehiclecomponents` SET `componentId` = %d WHERE `vehicleId` = %d AND `slot` = %d", GetVehicleComponentInSlot(vehicleID, CARMODTYPE_NEON), VehicleProperty:vehicleID[SAVEID], CARMODTYPE_NEON);// Neon changes without beeing in a mod shop
    mysql_pquery(g_mysql, g_sqlQuery);


    ShowDialog:TuningGarage_Neon(playerID);
    }
    }
    }
    if (listItem == 5) //White
    {
    if (GetPlayerMoney(playerID) < TUNINGGARAGE_PRICE_NEON)
    {
    GameTextForPlayer(playerID, LanguageString(playerID, StringID:80("You do not have enough money!")), 3000, 3);
    ShowDialog:TuningGarage_Neon(playerID);
    }
    else
    {
    new vehicleID = GetPlayerVehicleID(playerID);
    new XMLNode:neonNode = XML_GetFirstChild(modelNode, "neon");
    if (neonNode)
    {
    new Float:neonPosX = XML_GetFloatAttribute(neonNode, "x");
    new Float:neonPosY = XML_GetFloatAttribute(neonNode, "y");
    new Float:neonPosZ = XML_GetFloatAttribute(neonNode, "z");



    g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][0] = CreateObject(18652,0,0,0,0,0,0);
    g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][1] = CreateObject(18652,0,0,0,0,0,0);
    AttachObjectToVehicle(g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][0], GetPlayerVehicleID(playerID), -neonPosX, neonPosY, neonPosZ, 0.000000, 0.000000, 0.000000);
    AttachObjectToVehicle(g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][1], GetPlayerVehicleID(playerID), neonPosX, neonPosY, neonPosZ, 0.000000, 0.000000, 0.000000);


    MySQLFormat("UPDATE `vehiclecomponents` SET `componentId` = %d WHERE `vehicleId` = %d AND `slot` = %d", GetVehicleComponentInSlot(vehicleID, CARMODTYPE_NEON), VehicleProperty:vehicleID[SAVEID], CARMODTYPE_NEON);// Neon changes without beeing in a mod shop
    mysql_pquery(g_mysql, g_sqlQuery);


    ShowDialog:TuningGarage_Neon(playerID);
    }
    }
    }
    if (listItem == 6) //Red
    {
    if (GetPlayerMoney(playerID) < TUNINGGARAGE_PRICE_NEON)
    {
    GameTextForPlayer(playerID, LanguageString(playerID, StringID:80("You do not have enough money!")), 3000, 3);
    ShowDialog:TuningGarage_Neon(playerID);
    }
    else
    {
    new vehicleID = GetPlayerVehicleID(playerID);
    new XMLNode:neonNode = XML_GetFirstChild(modelNode, "neon");
    if (neonNode)
    {
    new Float:neonPosX = XML_GetFloatAttribute(neonNode, "x");
    new Float:neonPosY = XML_GetFloatAttribute(neonNode, "y");
    new Float:neonPosZ = XML_GetFloatAttribute(neonNode, "z");



    g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][0] = CreateObject(18647,0,0,0,0,0,0);
    g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][1] = CreateObject(18647,0,0,0,0,0,0);
    AttachObjectToVehicle(g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][0], GetPlayerVehicleID(playerID), -neonPosX, neonPosY, neonPosZ, 0.000000, 0.000000, 0.000000);
    AttachObjectToVehicle(g_tuningParts[tuningPartIndex][E_TUNINGPART_NEON][1], GetPlayerVehicleID(playerID), neonPosX, neonPosY, neonPosZ, 0.000000, 0.000000, 0.000000);


    MySQLFormat("UPDATE `vehiclecomponents` SET `componentId` = %d WHERE `vehicleId` = %d AND `slot` = %d", GetVehicleComponentInSlot(vehicleID, CARMODTYPE_NEON), VehicleProperty:vehicleID[SAVEID], CARMODTYPE_NEON);// Neon changes without beeing in a mod shop
    mysql_pquery(g_mysql, g_sqlQuery);


    ShowDialog:TuningGarage_Neon(playerID);
    }
    }
    }
    }
    else
    {
    SaveVehicle(PVar:playerID[TUNINGGARAGE_VEHICLEID]);


    SetPlayerVirtualWorld(playerID, 0);


    new tuningGarageNumber = PVar:playerID[TUNINGGARAGE_NUMBER];


    SetPlayerSpawn(playerID, SPAWNTYPE_EXITTUNINGGARAGE, g_tuningGarages[tuningGarageNumber][E_TUNINGGARAGE_VEHICLE_POSX], g_tuningGarages[tuningGarageNumber][E_TUNINGGARAGE_VEHICLE_POSY], g_tuningGarages[tuningGarageNumber][E_TUNINGGARAGE_VEHICLE_POSZ], g_tuningGarages[tuningGarageNumber][E_TUNINGGARAGE_VEHICLE_ANGLE]);


    TogglePlayerSpectating(playerID, false);


    PVar:playerID[ALLOWCMDS] = true;
    }
    }


    In meinem Dialog vom Menü klicke ich auf Neon und es kommt einfach garnichts... Weder das Menü Dialog noch das Neon Dialog.
    Da ich für die weiteren nur eine rück leitung zum Menü Dialog erstellt habe kommt dort auch immer das Menü Dialog. Geh ich aber dann wieder auf Neon, ist mein Dialog komplett weg. Der neue wird erst garnicht erstellt.


    Laut Debug kommt er aber soweit. sogar über das CreateDialog.

    Jetzt gibt er mir aber immer wieder nur einen Null Datensatz ab. Er gibt mir egal welchen SQL befehl ich rein mache immer nur Null...


    SELECT * FROM `properties` WHERE `id` ORDER BY `id` ASC hab ich jetzt Probiert, gibt mir trotzdem eine id Null aus...
    Die tabelle properties ist auch mit pickups geknüpft, aber mit ner Verknüpfung kommt genau das selbe raus.

    Schon mal Überprüft ob genug Wasser im Kühler ist? Ggf. mal Entlüften, kann sein dass du Luft im System hast.
    Thermostat wäre kaputt, wenn der Lüfter nicht an geht.
    Wasserpumpen Defekt könnte auch ein großer indiz dafür sein.

    Das Problem ist, dass er ständig hier das einrücken weg macht...


    case 0:// Enter
    {
    printf("Press Button Enter");
    MySQLQuery("SELECT `locked` FROM `properties` LEFT JOIN `pickups` ON `pickups`.`id` = `properties`.`pickupId` WHERE `properties`.`id` = '%d' AND `locked`", PVar:playerID[DIALOGPROPERTYID]);
    mysql_store_result();
    new isLocked = mysql_num_rows();
    printf("MySQL Query Loading... Locking? = %d on PropertyID:%d", isLocked, PVar:playerID[DIALOGPROPERTYID]);
    mysql_free_result();
    printf("MySQL Query Loaded...");
    if (isLocked)
    {
    printf("House is Locked...");
    SendClientMessage(playerID, COLOR_ERROR, LanguageString(playerID, StringID:481("This house is locked!")));
    }
    else
    {
    printf("Teleporting to Property Interior");
    printf("TeleportToProperty %d", PVar:playerID[DIALOGPROPERTYID]);
    TeleportToProperty(playerID, PVar:playerID[DIALOGPROPERTYID]);
    }
    printf("Entring... ");
    }


    Es ist komisch, weil es einfach genau gleich ist, wie bei den Häusern und bei den Häusern funktioniert es komischerweiße...


    Hier mal zum vergleich das von den Häusern:


    case 0:// Enter
    {
    MySQLQuery("SELECT `locked` FROM `properties` WHERE `id` = '%d' AND `locked`", PVar:playerID[DIALOGPROPERTYID]);
    mysql_store_result();
    new isLocked = mysql_num_rows();
    mysql_free_result();
    if (isLocked)
    {
    SendClientMessage(playerID, COLOR_ERROR, LanguageString(playerID, StringID:481("This house is locked!")));
    }
    else
    {
    TeleportToProperty(playerID, PVar:playerID[DIALOGPROPERTYID]);
    }
    }



    Hoffe das Einrücken klappt etz so ^^


    //Edit
    Kann mir denn keiner Helfen :(

    Hey Ho, ich mal wieder


    Folgendes Problem:


    Ich erstelle mir Propertys diese man dann Betreten kann etc.
    Das Problem dabei ist, dass ich wenn ich Shops Erstelle wie Burger Shoot oder Pizzer Hut oder sowas, diese nicht Betreten kann.
    Die Häuser kann ich Betreten komischerweiße, obwohl es im Selben Script aufgebaut ist.


    Hier mal der Code:
    ShowDialog:Shop(playerID)
    {
    FormatNew:title[64](LanguageString(playerID, StringID:17("Shop")), GetMySQLValue("properties", "name", "id", val2str(PVar:playerID[DIALOGPROPERTYID])));
    new options[1024];
    AddLine(options, LanguageString(playerID, StringID:268("Enter")));// Item 0
    AddLine(options, LanguageString(playerID, StringID:328("Sell")));// Item 1
    AddLine(options, LanguageString(playerID, StringID:476("Lock/Unlock")));// Item 2
    CreateDialog(playerID, "Shop", DIALOG_STYLE_LIST, title, options, "OK", LanguageString(playerID, StringID:165("Cancel")));
    }


    DialogResponse:Shop(playerID, response, listItem, inputText[])
    {
    if (response){switch (listItem)
    {
    case 0:// Enter
    {
    printf("Press Button Enter");
    MySQLQuery("SELECT `locked` FROM `properties` LEFT JOIN `pickups` ON `pickups`.`id` = `properties`.`pickupId` WHERE `properties`.`id` = '%d' AND `locked`", PVar:playerID[DIALOGPROPERTYID]);
    mysql_store_result();
    printf("MySQL Query Loading... Locking or not = PropertyID:%d", PVar:playerID[DIALOGPROPERTYID]);
    new isLocked = mysql_num_rows();
    mysql_free_result();
    printf("MySQL Query Loaded...");
    if (isLocked)
    {
    printf("House is Locked...");
    SendClientMessage(playerID, COLOR_ERROR, LanguageString(playerID, StringID:481("This house is locked!")));
    }
    else
    {
    printf("Teleporting to Property Iterior");TeleportToProperty(playerID, PVar:playerID[DIALOGPROPERTYID]);
    }
    printf("Entring... ");
    } //.... Code geht hier weiter aber das ist der Enter...


    Die IDs, etc. sind alle Vorhanden auch alles in der MySQL datenbank stimmt und ich bekomme auch keine MySQL errors...
    Print geht auch bis Entring... er zeigt mir alle printfs an...


    Hier noch TeleportToProperty:
    TeleportToProperty(playerID, propertyID)
    {
    new interiorID = strval(GetMySQLValue("properties", "interiorId", "id", val2str(propertyID)));
    if (interiorID)
    {
    if (TeleportToInterior(playerID, interiorID)){printf("TeleportToProperty???");
    PVar:playerID[CURRENTPROPERTYID] = propertyID;
    SetPlayerVirtualWorld(playerID, propertyID);return true;
    }
    }
    return false;
    }


    Die TeleportToInterior läd er



    //Edit ich hab nun herrausgefunden, wo der Fehler ist und zwar Liest er nicht die PropertyID...
    printf("Press Button Enter");
    MySQLQuery("SELECT `locked` FROM `properties` LEFT JOIN `pickups` ON `pickups`.`id` = `properties`.`pickupId` WHERE `properties`.`id` = '%d' AND `locked`", PVar:playerID[DIALOGPROPERTYID]);
    mysql_store_result();new isLocked = mysql_num_rows();
    printf("MySQL Query Loading... Locking? = %d on PropertyID:%d", isLocked, PVar:playerID[DIALOGPROPERTYID]);
    mysql_free_result();
    printf("MySQL Query Loaded...");
    if (isLocked)
    {
    printf("House is Locked...");
    SendClientMessage(playerID, COLOR_ERROR, LanguageString(playerID, StringID:481("This house is locked!")));
    }
    else
    {
    printf("Teleporting to Property Interior");
    printf("TeleportToProperty %d", PVar:playerID[DIALOGPROPERTYID]);
    TeleportToProperty(playerID, PVar:playerID[DIALOGPROPERTYID]);
    }
    printf("Entring... ");


    Aber wie man sieht, lese ich alles normal aus.


    Das steht dann in der Log:

    Code
    [2016-10-24 18:08:28] Press Button Enter
    [2016-10-24 18:08:28] MySQL Query Loading... Locking? = 0 on PropertyID:0
    [2016-10-24 18:08:28] MySQL Query Loaded...
    [2016-10-24 18:08:28] Teleporting to Property Interior
    [2016-10-24 18:08:28] TeleportToProperty 0
    [2016-10-24 18:08:28] Entring...

    Hey Leute, nach langer zeit Melde ich mich mal wieder.


    Ich habe ein Problem und zwar Crasht andauernd der Server wenn man bei einem Bestimmten Pickup die Z Taste drückt und ich bekomme diese fehlermeldung:


    [2016-10-08 20:23:06] [debug] Run time error 4: "Array index out of bounds"
    [2016-10-08 20:23:06] [debug] Accessing element at negative index -1
    [2016-10-08 20:23:06] [debug] Backtrace (most recent call first):
    [2016-10-08 20:23:06] [debug] #0 0002aef4 in ?? () from *****.amx
    [2016-10-08 20:23:06] [debug] #1 000343b4 in OnPlayerKeyStateChange () from *****.amx
    [2016-10-08 20:23:06] [debug] Aborting...


    Ich hab schon alles überprüft und finde den Fehler nicht...


    Code von OnPlayerKeyStateChange:
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys){if (IsKeyPressed(KEY_JUMP) && GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_CUFFED){ApplyAnimation(playerid, "GYMNASIUM", "gym_jog_falloff", 4.1, 0, 1, 1, 0, 0);// Prevent player from jumping while cuffedreturn true;}if (IsKeyPressed(KEY_ANALOG_DOWN)){new vehicleID = GetPlayerVehicleID(playerid);if (vehicleID){if (VehicleProperty:vehicleID[RADIOSTATIONID] <= 1){VehicleProperty:vehicleID[RADIOSTATIONID] = sizeof(radioStations) - 1;}else{VehicleProperty:vehicleID[RADIOSTATIONID]--;}PlayRadioStation(playerid, VehicleProperty:vehicleID[RADIOSTATIONID]);return true;}}if (IsKeyPressed(KEY_ANALOG_UP)){new vehicleID = GetPlayerVehicleID(playerid);if (vehicleID){if (VehicleProperty:vehicleID[RADIOSTATIONID] >= sizeof(radioStations) - 1){VehicleProperty:vehicleID[RADIOSTATIONID] = 1;}else{VehicleProperty:vehicleID[RADIOSTATIONID]++;}PlayRadioStation(playerid, VehicleProperty:vehicleID[RADIOSTATIONID]);return true;}}if (IsKeyPressed(KEY_ACTION)){if (IsPlayerInAnyVehicle(playerid)){TogglePlayerVehicleEngine(playerid);return true;}}if (IsKeyPressed(KEY_NO)){if (PVar:playerid[OBJEDITOR_CURRENTOBJECTID]){CancelEdit(playerid);new arrayIndex = PVar:playerid[OBJEDITOR_CURRENTOBJECTID] - 1;new modelID = Streamer_GetIntData(STREAMER_TYPE_OBJECT, PVar:playerid[OBJEDITOR_CURRENTOBJECTID], E_STREAMER_MODEL_ID);DestroyDynamicObject(PVar:playerid[OBJEDITOR_CURRENTOBJECTID]);new fileName[STRINGLENGTH_OBJECTFILENAME];new objectID = dynamicObjects[arrayIndex][OBJECT_ID];strcat(fileName, dynamicObjects[arrayIndex][OBJECT_FILENAME]);// Unset all enum variables in the object elementCount(enumField, sizeof(dynamicObjects[])){dynamicObjects[PVar:playerid[OBJEDITOR_CURRENTOBJECTID] - 1][enum_object:enumField] = 0;}SaveObjects(fileName);UpdateObjectsForAllPlayers();SelectObject(playerid);SendClientMessageEx(playerid, COLOR_INFO, StringID:203("The object %d (%s) has been removed"), objectID, objectModels[modelID]);PVar:playerid[OBJEDITOR_CURRENTOBJECTID] = 0;return true;}}if (IsKeyPressed(KEY_WALK)){if (PVar:playerid[OBJEDITOR_CURRENTOBJECTID]){AddObject(playerid, Streamer_GetIntData(STREAMER_TYPE_OBJECT, PVar:playerid[OBJEDITOR_CURRENTOBJECTID], E_STREAMER_MODEL_ID), dynamicObjects[PVar:playerid[OBJEDITOR_CURRENTOBJECTID] - 1][OBJECT_FILENAME], true);return true;}if (permissions[playerid][PERMISSION_MAPPER]){new pickupID = IsPlayerInPickup(playerid);if (pickupID != -1){MySQLQuery("SELECT * FROM `properties` WHERE `pickupId` = '%d'", pickups[pickupID][PICKUP_ID]);mysql_store_result();if (mysql_num_rows()){PVar:playerid[SELECTEDPROPERTYID] = strval(GetMySQLField("id"));SendClientMessageEx(playerid, COLOR_INFO, StringID:142("Property '%s' selected"), GetMySQLField("name"));}else{SendClientMessageEx(playerid, COLOR_INFO, StringID:337("This pickup is not linked to a property!"));}mysql_free_result();return true;}}}if (IsKeyPressed(KEY_YES)){new pickupID = IsPlayerInPickup(playerid);if (pickupID != -1){PickupEvent(playerid, pickupID, PICKUPEVENT_KEYPRESS);return true;}}return false;}


    Es is nur bei einem Bestimmten Pickup...


    Hoffe ihr könnt mir helfen.



    //Edit
    Schon behoben. Lag im Dialog er hatte 2 Parameter aufgerufen obwohl es nur einen gab

    Ja, es wurde von einem neuen Team aufgenommen. Sag ich doch?


    Ok, das wusste ich nicht, dass FiveM OpenSource ist.


    Mich wunder es sowieso, warum die Daten alle nicht gelöscht werden müssen, nach der Aktion, was T2 vollbracht hat.

    Jetzt Überlegt doch alle mal!
    Die ganze Diskussion über "Wird es dieses Projekt Schaffen?" oder "Das wird sowieso eingestampft!" sind alle im Grunde genommen irrelevant.


    Fakt ist einfach, das T2 es nicht Möchte!


    Entweder ein Projekt schaft es, oder ein Projekt schaft es nicht! So einfach ist dass doch... Ich denke sowieso, dass das Team von GTA:MP im Privaten eventuell weiter Codet, bis der Multiplayer Spielbar ist und sich T2 dazu entschließt auf zu geben und nichts mehr zu tun, denn wenn man alles genauer Betrachtet, sind die meisten Projekte nicht durch T2 Gestorben. Nur die Großen erfolgreichen Projekte!


    Ich bin der Meinung, man sollte jetzt einfach mal warten und sehen was Passiert.
    Das Projekt von FiveM wurde ja auch wieder aufgenommen (ich frag mich woher die den Source Code haben?).

    Ne, es ist nicht beim nichts tun. Es ist, nur wenn ich ein Program oder ein Spiel starte.


    Bsp1:
    0% Auslastung von Allem! -> Starte Spiel + Aufnahme Programm ->
    1%-3% CPU, 1% RAM - 100% Datenträger -> 10 Minuten warten ->
    1%-3% CPU, 2%RAM, 4% Datenträger -> Ich Spiele 30 Minuten mit Aufnahme ->
    1% CPU, 2% RAM, 100% Datenträger (von 250FPS sinkt es extremst auf 15FPS runter!) ->
    Spiel und aufnahme Beendet -> 0% CPU, 0% RAM, 100% Datenträger ->
    10 Minuten gewartet -> alles 0% Auslastung! -> Nur Spiel starten, ohne aufnahme ->
    1% CPU, 1% RAM, 100% Datenträger -> 10 Minuten gewartet ->
    1% CPU, 1% RAM, 7% Datenträger -> 30 Minuten gespielt ->
    1% CPU, 1% RAM, 100% Datenträger -> Spiel beendet ->
    0% CPU, 0% RAM, 100% Datenträger -> 10 Minuten Warten ->
    Alles 0% Auslastung!


    Bsp 2:
    0% Auslastung von allem! -> Starte Camtasia Studio ->
    0% CPU, 0% RAM, 100% Datenträger -> 5 Minuten gewartet ->
    Alles 0% -> Aufgenommene video Datei importieren ->
    0% CPU, 0% RAM ,100% Datenträger -> 2 Minuten keine Rückmeldung ->
    alles wieder 0% -> Fertig Bearbeitet -> Rendern -> alles 0% ->
    Camtasia Studio Beendet -> 100% Datenträger Auslastung! -> 2 Minuten rum ->
    Alles 0% Auslastung



    Das geht so den ganzen Tag! Ich werde wahnsinnig!
    Bei Windows 7 war das Problem nicht, seid dem ich Windows 10 drauf habe, ist dieses Problem ständig.
    Es ist auch immer nur das Programm mit 100% auslastung Makiert, das ich starte, oder verwende!
    ;(;(;(?(;(?( :pinch: :pinch: :pinch: :wacko: :?::?::?::?::?::?::?::?::?::?:

    Habs mal eben Laufen lassen.

    Hallo, ich habe ein Problem.


    Meine Festplatte ist seid dem ich Windows 10 Installiert habe auf einer Auslastung von 100% bei irgend welchen Aktivitäten.


    Beispiel: Ich starte ein Programm wie z.B. Google Chrome oder auch Steam etc. und die Datenträger auslastung läuft auf 100% und meine Festplatte ist ewig am Rattern.
    Sobald das Programm/Spiel geladen hat läuft alles wieder schön Flüssig.


    Bei Spielen ist es beispielsweiße so: Ich zogge auf Höchster auflösung ohne Probleme, aber nach 30 Minuten zocken habe ich auf einmal wieder eine Datenträgerauslastung von 100% und ich habe einen Extremen FPS abfall, starte ich das Spiel neu ist wieder alles in Ordnung für 30 Minuten.


    Ich hab angst, dass mir meine Festplatte nun abraucht. Das wäre überhaupt nicht gut, da dann sehr viele Wichtige Daten verloren gehen.


    Mein System:
    2x Nvidia Geforce GTX980
    AMD FX8350 Octa-Core 4,0GHz
    32GB RAM
    2TB Westfield SSD Festplatte
    980Watt Netzteil SuperMicro PWS-981-1S



    ?(?(?(?(?(?(?(?(?(?(

    Ich vermute einfach mal die wären ohnehin nicht sonderlich beeindruckt, wenn ein wütender Mob bestehend aus Nerds vor ihrem Gebäude steht, mit einer Petition herumfuchtelt und schreit "Nieder mit Take Two!".

    Also bei den Satz musste ich jetzt echt mal Lachen :D


    Nun ja ich würde mal sagen, dass das ganze Helfen würde.




    Mann kann natürlich sich vor's Gebäude stellen. Allerdings könnte mann dann wegen Hausfriedensbruch in Polizeigewahrsam genommen werden.


    Zudem sollte nicht vergessen werden, das TakeTwo vollkommen im Rahmen gehandelt hat.

    Wenn man nicht auf dem Grundstück ist, was wollen die dann Anzeigen?
    Ich wohne in Ingolstadt, dass ist 90km von München entfernt. Ich bin auch dem Öfteren in München unterwegs und weis, wo das Gebäude von TakeTwo steht. Solange man nicht auf deren Grundstück geht, können sie nichts Anzeigen.


    Ich denke alleine nur die Pedition wird das nichts bringen.


    Wer sagt den, dass sie im Recht sind? Schon mal die AGB genau gelesen?
    Die Modder haben weder die Daten davon Verändert, noch Decompiliert. Sie haben ledeglich eine Erweiterung erstellt, die das Spiel in keinen Falle verändert. Zudem ist das ganze auch mit dem Sozial Netzwerk verbunden, sprich man MUSS es gekauft haben, um es dann auch Spielen zu können.


    Ist hier jemand mit nem Rechtsstudium, der sich mal mit der AGB und dem Recht auseinander setzten könnte?
    Würde sich bestimmt für die Modder lohnen.

    Code
    if(isPlayerInFrakt(playerid, 3)) {
                //Setzt den Spieler auf die Welt 0
                SetPlayerVirtualWorld(playerid, 0);
                // Setzt den Spieler auf das Interior 8                
                SetPlayerInterior(playerid, 8);
                //setzt den Spieler auf die Position
                SetPlayerPos(playerid,2807.619873,-1171.899902,1025.570312);
                return 1;
    }

    Ja die Koordinaten sind in diesem Interior.
    Im Normalfall müsste das hier Funktionieren
    Hab dir das nochmal mit erklärung gemacht.