Beiträge von Jeffry

    @Jack_Bauer:
    Da bekommt man doch nur die Koordinaten wieder zurück, die man zuvor in SetPlayerCameraLookAt bzw. InterpolateCameraLookAt eingegeben hat, was macht das für einen praktikablen Sinn? Warum sollte man etwas abfragen, was man zuvor selbst gesetzt hat?
    Wenn man die Kamera selbst bewegt dann funktioniert die Funktion nicht, man bekommt immer nur die Koordinaten zurück, die man irgendwann mal mit SetPlayerCameraLookAt bzw. InterpolateCameraLookAt gesetzt hat.


    Macht man dann aber SetCameraBehindPlayer dann bekommt man trotzdem die Koordinaten, die man zuvor mit einer der beiden Funktionen gesetzt hat, zurück, und das sind dann falsche Koordinaten.

    frecke:
    #define MAX_FRAGEN 15
    #define MAX_EST 2


    enum EST_FRAGEN_ENUM{
    frage[256],
    richtige_antwort[256],
    user_antwort[256],
    bool:richtig
    }


    new EST_Fragen[MAX_EST][MAX_FRAGEN][EST_FRAGEN_ENUM] =
    {
    {
    {"***Frage1***", "richtigeAntwort15", "--", false},
    {"***Frage2***", "richtigeAntwort15", "--", false},
    {"***Frage3***", "richtigeAntwort15", "--", false},
    {"***Frage4***", "richtigeAntwort15", "--", false},
    {"***Frage5***", "richtigeAntwort15", "--", false},
    {"***Frage6***", "richtigeAntwort15", "--", false},
    {"***Frage7***", "richtigeAntwort15", "--", false},
    {"***Frage8***", "richtigeAntwort15", "--", false},
    {"***Frage9***", "richtigeAntwort15", "--", false},
    {"***Frage10***", "richtigeAntwort15", "--", false},
    {"***Frage11***", "richtigeAntwort15", "--", false},
    {"***Frage12***", "richtigeAntwort15", "--", false},
    {"***Frage13***", "richtigeAntwort15", "--", false},
    {"***Frage14***", "richtigeAntwort15", "--", false},
    {"***Frage15***", "richtigeAntwort15", "--", false}
    },
    {
    {"***Frage1***", "richtigeAntwort15", "--", false},
    {"***Frage2***", "richtigeAntwort15", "--", false},
    {"***Frage3***", "richtigeAntwort15", "--", false},
    {"***Frage4***", "richtigeAntwort15", "--", false},
    {"***Frage5***", "richtigeAntwort15", "--", false},
    {"***Frage6***", "richtigeAntwort15", "--", false},
    {"***Frage7***", "richtigeAntwort15", "--", false},
    {"***Frage8***", "richtigeAntwort15", "--", false},
    {"***Frage9***", "richtigeAntwort15", "--", false},
    {"***Frage10***", "richtigeAntwort15", "--", false},
    {"***Frage11***", "richtigeAntwort15", "--", false},
    {"***Frage12***", "richtigeAntwort15", "--", false},
    {"***Frage13***", "richtigeAntwort15", "--", false},
    {"***Frage14***", "richtigeAntwort15", "--", false},
    {"***Frage15***", "richtigeAntwort15", "--", false}
    }
    };

    Der sieht dann so aus:
    ocmd:einlösen(playerid, params[])
    {
    if(!IsPlayerConnected(playerid)) return Nachricht(playerid, Rot,"Sie sind nicht eingeloggt");
    if(SpielerInformation[playerid][AdminLevel] <= 4) return Nachricht(playerid, Rot,"Sie sind nicht befugt");
    if(!params[0]) return Nachricht(playerid, Rot,"Verwende: /einlösen [Code]");
    new PremiumCode[40];
    format(PremiumCode, sizeof(PremiumCode),"/PremiumCodes/%s.txt", params);
    if(fexist(PremiumCode))
    {
    //Code existiert
    }
    else
    {
    //Code existiert nicht
    }
    return 1;
    }

    Wie kann man das machen, dass aufdem Bus eine eigene Schrift steht


    SA-MP technisch wirst du es, wie die Vorposter schon sagten, so schön nicht hinbekommen, aber generell bekommt man Text auf Fahrzeuge mit:
    http://wiki.sa-mp.com/wiki/SetObjectMaterialText_DE -> Editor: http://forum.sa-mp.com/showthread.php?t=336820
    http://wiki.sa-mp.com/wiki/AttachObjectToVehicle -> Editor: http://forum.sa-mp.com/showthread.php?t=282883



    Beispiel:
    http://forum.sa-mp.com/showthread.php?t=420912

    Ändere den Teil von OnGameModeInit zu:
    //Im OnGameModeInit zum laden
    for(new i = 1; i < MAX_VEHICLES; i++)//FAHRZEUGE
    {
    new string[32];
    format(string, sizeof(string), "/Vehicles/%d.car", i);
    if(dini_Int(string, "cID") > 0)
    {
    LadeFahrzeug(i);
    CarInfo[i][cID] = CreateVehicle(CarInfo[i][cModel], CarInfo[i][cX], CarInfo[i][cY], CarInfo[i][cZ], CarInfo[i][cR],0, 0, -1);

    new vehicleid = CarInfo[i][cID];

    if(CarInfo[i][tuning_1] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_1]);


    } else if(CarInfo[i][tuning_2] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_2]);


    } else if(CarInfo[i][tuning_3] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_3]);


    } else if(CarInfo[i][tuning_4] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_4]);


    } else if(CarInfo[i][tuning_5] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_5]);


    } else if(CarInfo[i][tuning_6] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_6]);


    } else if(CarInfo[i][tuning_7] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_7]);


    } else if(CarInfo[i][tuning_8] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_8]);


    } else if(CarInfo[i][tuning_9] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_9]);


    } else if(CarInfo[i][tuning_10] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_10]);


    } else if(CarInfo[i][tuning_11] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_11]);


    } else if(CarInfo[i][tuning_12] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_12]);


    } else if(CarInfo[i][tuning_13] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_13]);


    }
    if(CarInfo[i][paintjob] > 0){
    ChangeVehiclePaintjob(vehicleid, CarInfo[i][paintjob]);
    }
    ChangeVehicleColor(vehicleid, CarInfo[i][color_1], CarInfo[i][color_1]);
    }
    }

    Ja, genau das. Diese Meldung darf nicht vorhanden sein, wenn die pawn.cfg im pawno Ordner nicht existiert.
    Lösche diese, starte die pawno.exe neu und kompiliere den Code dann nochmal. Falls die Meldung nicht weg geht, erhöhe den Wert beim pragma dynamic.

    Naja, dieser Fehler hier ist nicht wirklich zu erklären, es gibt auch keine sinnvollen Lösungen dazu:

    Zitat

    [16:57:50] [debug] Run time error 5: "Invalid memory access"


    Das einzigste was du noch machen kannst, ist in dem Callback in dem das kommt, also OnPlayerConnect, zwischen jede Zeile einen Print zu setzen und zu schauen, wann genau es wirklich abstürzt. Das kannst du ja im Bereich von Zeile 750 der M_Bot.inc machen, da laut crashdetect dort der Fehler ist, soweit ich das gesehen habe ist das aber nur eine "new" Zeile, sprich eine Speicherdeklaration, was darauf hinweisen kann, dass in diese Richtung etwas nicht stimmt. Aber versuch das mit den Prints mal.

    Ok, dann schreibe es so und poste dann was im Server Log steht wenn du ein Fahrzeug tunst und es dann speicherst.

    Spoiler anzeigen
    public OnVehicleMod(playerid, vehicleid, componentid)
    {
    printf("vehicleid: %d / componentid: %d", vehicleid, componentid);
    new idx = GetIdx(vehicleid);
    if(idx == -1) return 1;

    printf("idx: %d -> %d", idx, CarInfo[idx][tuning_0]);
    if(CarInfo[idx][tuning_0] < 999){
    CarInfo[idx][tuning_0] = componentid;
    printf("0");
    } else if(CarInfo[idx][tuning_1] < 999){
    CarInfo[idx][tuning_1] = componentid;
    printf("1");
    } else if(CarInfo[idx][tuning_2] < 999){
    CarInfo[idx][tuning_2] = componentid;
    printf("2");
    } else if(CarInfo[idx][tuning_3] < 999){
    CarInfo[idx][tuning_3] = componentid;
    printf("3");
    } else if(CarInfo[idx][tuning_4] < 999){
    CarInfo[idx][tuning_4] = componentid;
    printf("4");
    } else if(CarInfo[idx][tuning_5] < 999){
    CarInfo[idx][tuning_5] = componentid;
    printf("5");
    } else if(CarInfo[idx][tuning_6] < 999){
    CarInfo[idx][tuning_6] = componentid;
    printf("6");
    } else if(CarInfo[idx][tuning_7] < 999){
    CarInfo[idx][tuning_7] = componentid;
    printf("7");
    } else if(CarInfo[idx][tuning_8] < 999){
    CarInfo[idx][tuning_8] = componentid;
    printf("8");
    } else if(CarInfo[idx][tuning_9] < 999){
    CarInfo[idx][tuning_9] = componentid;
    printf("9");
    } else if(CarInfo[idx][tuning_10] < 999){
    CarInfo[idx][tuning_10] = componentid;
    printf("10");
    } else if(CarInfo[idx][tuning_11] < 999){
    CarInfo[idx][tuning_1] = componentid;
    printf("11");
    } else if(CarInfo[idx][tuning_12] < 999){
    CarInfo[idx][tuning_12] = componentid;
    printf("12");
    } else if(CarInfo[idx][tuning_13] < 999){
    CarInfo[idx][tuning_13] = componentid;
    printf("13");
    }

    Spoiler anzeigen

    if(GetPlayerInterior(playerid) == 0)
    {
    BanEx(playerid, "Tuning Hack"); // Anti-tuning hacks script
    //(Tested and it works even on servers wich allow you to mod your vehicle using commands, menus, dialogs, etc..
    }
    return 1;
    }

    Spoiler anzeigen
    public SpeicherFahrzeug(carid)
    {
    if(carid <= 0)
    {
    return 1;
    }
    CarInfo[carid][cModel] = GetVehicleModel(CarInfo[carid][cID]);
    printf("Model: %d / carid: %d", CarInfo[carid][cModel], carid);
    if(CarInfo[carid][cModel] == 0) return 1;
    new str[25];
    format(str, sizeof(str), "/Vehicles/%d.car", carid);
    dini_Create(str);

    dini_IntSet(str,"cID",CarInfo[carid][cID]);
    dini_FloatSet(str,"cX", CarInfo[carid][cX]);
    dini_FloatSet(str,"cY", CarInfo[carid][cY]);
    dini_FloatSet(str,"cZ", CarInfo[carid][cZ]);
    dini_FloatSet(str,"cR", CarInfo[carid][cR]);
    dini_IntSet(str,"cModel",CarInfo[carid][cModel]);
    //tuning
    dini_IntSet(str, "tuning_0", CarInfo[carid][tuning_0]);
    dini_IntSet(str, "tuning_1", CarInfo[carid][tuning_1]);
    dini_IntSet(str, "tuning_2", CarInfo[carid][tuning_2]);
    dini_IntSet(str, "tuning_3", CarInfo[carid][tuning_3]);
    dini_IntSet(str, "tuning_4", CarInfo[carid][tuning_4]);
    dini_IntSet(str, "tuning_5", CarInfo[carid][tuning_5]);
    dini_IntSet(str, "tuning_6", CarInfo[carid][tuning_6]);
    dini_IntSet(str, "tuning_7", CarInfo[carid][tuning_7]);
    dini_IntSet(str, "tuning_8", CarInfo[carid][tuning_8]);
    dini_IntSet(str, "tuning_9", CarInfo[carid][tuning_9]);
    dini_IntSet(str, "tuning_10", CarInfo[carid][tuning_10]);
    dini_IntSet(str, "tuning_11", CarInfo[carid][tuning_11]);
    dini_IntSet(str, "tuning_12", CarInfo[carid][tuning_12]);
    dini_IntSet(str, "tuning_13", CarInfo[carid][tuning_13]);
    dini_IntSet(str, "color_1", CarInfo[carid][color_1]);
    dini_IntSet(str, "color_2", CarInfo[carid][color_2]);
    dini_IntSet(str, "paintjob", CarInfo[carid][paintjob]);

    return 1;
    }

    Hast du irgendwelche Änderungen in der Zeit gemacht, während alles ging bis es plötzlich nicht mehr ging?
    Ansonsten lade dir das Server Paket nochmal herunter und kompiliere mit der pawno.exe daraus nochmal deinen Code, und starte den Server dann vom neuen Paket aus, vielleicht hilft das.


    Irgendwas passt auf jeden Fall nicht beim Zugriff auf den Speicher.

    format(string,sizeof(string),"[Name: %s] [Level: %i] [Adminlevel: %i] [Fraktion: %s]",SpielerName(playerid,GetPlayerScore(playerid),GetPVarInt(playerid,"Adminlevel"),fraktname);
    zu:
    format(string,sizeof(string),"[Name: %s] [Level: %i] [Adminlevel: %i] [Fraktion: %s]",SpielerName(playerid),GetPlayerScore(playerid),GetPVarInt(playerid,"Adminlevel"),fraktname);


    public OnPlayerDisconnect(playerid, reason)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    SpielerSpeichern(playerid);
    return 1;
    }
    }
    zu:
    public OnPlayerDisconnect(playerid, reason)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    SpielerSpeichern(playerid);
    }
    return 1;
    }


    if(strcmp,(cmdtext,"/stats",true)==0)
    zu:
    if(strcmp(cmdtext,"/stats",true)==0)

    Was willst du denn überhaupt damit machen?


    Es ist jeweils ein Beispiel dabei, wie es anzuwenden ist. Am besten du probierst es einfach im Code mal aus und schaust dir an was passiert. Das ist meiner Meinung nach die beste Methode herauszufinden was eine Funktion macht.