Beiträge von Jeffry

    Ja,
    Du kannst es auch so schreiben:
    LinkVehicleToInterior(CreateVehicle(...), 1);
    Dann sparst du dir die Variable.


    Oder über ein Array und einen Loop:
    new alleAutos[10], i;
    alleAutos[i] = CreateVehicle(...); i++;
    alleAutos[i] = CreateVehicle(...); i++;
    alleAutos[i] = CreateVehicle(...); i++;
    //...
    for(new v=0; v<sizeof(alleAutos); v++) LinkVehicleToInterior(alleAutos[v], 1);


    Aber ja, jedes Fahrzeug, welches du dort haben willst, muss in Interior 1 verlinkt werden.

    Wie gesagt, normalerweise löschen sich Ordner nicht von selbst. Mit FileZilla sollte es da ebenfalls keine Probleme geben, das nutze ich schon seit Jahren und kann dir versichern, dass das einwandfrei funktioniert, zumindest in dem Bereich.
    Wird denn der Ordner erst gelöscht, wenn du den Server startest, oder ist der sofort wieder weg, nachdem du ihn erstellt hast, aber den Server noch gar nicht gestartet hast?


    Wie bereits erwähnt, kannst du auch mal beim Support deines Hosters nachfragen, ob das Problem bekannt ist, vielleicht fehlen dir ja auch nur ein paar Rechte.

    @Slider: Wenn das Plugin nicht richtig geladen wird, dann steht da nur "Failed.", das steht dann auch genau so im Server Log.


    Chax: Hast du dein Glück schon mal mit dem crashdetect Plugin versucht, was wird da geprintet? Und wenn das nichts hilft, mit dem nativechecker Plugin?
    Ich hoffe, du hast das Plugin auch im plugins Ordner.

    new query[256];
    if(listitem == 0) format(query,sizeof(query),"UPDATE user SET geschlecht='maennlich' WHERE name = '%s'",SpielerName(playerid));
    else format(query,sizeof(query),"UPDATE user SET geschlecht='weiblich' WHERE name = '%s'",SpielerName(playerid));
    mysql_function_query(dbhandle,query,false,"","");

    Also, als erstes mal:
    if(sDatei[playerid][pLeader] == 3 || 4 || 5 || 6 || 7 || 8 || 9 || 14)
    Das geht so nicht.


    Mach das so:
    if((sDatei[playerid][pLeader] >= 3 && sDatei[playerid][pLeader] <= 9) || sDatei[playerid][pLeader] == 14)



    Zu dem Problem, dass der Befehl nicht existiert, da tippe ich darauf, dass du ein Array sprengst. (Spieler nicht online? / sscanf spinnt mal wieder?)
    Um das herauszufinden, debugge bitte deinen Code und poste dir Ergebnisse, samt debuggtem Code: [ SCRIPTING ] Debugnachrichten

    Da mehr Speicher reserviert wird, verbraucht es hinsichtlich der Größe des Skripts mehr Arbeitsspeicher.
    Aber ich kann dich beruhigen, das merkst du bei heutigen Maschinen nicht mehr, denn ob dein Server 100 MB RAM oder 500 MB RAM verbraucht ist relativ egal, da die meisten Server 8, 16, oder mehr GB haben. Wenn du bei einem Host einen Gameserver gemietet hast, dann vielleicht eher, aber auch da sollte das kein Problem sein, da ein Verbrauch von 300-500 MB eigentlich völlig ok ist, mehr zu schaffen ist schon relativ schwer.

    strcat ist von dem Ressourcenverbrauch her besser als format.


    ABER:
    Da du hier nur 3 Zusammenfügungen hast, macht das für dich keinen Unterschied. Den merkst du erst, wenn du 1000 oder 10000 oder noch mehr Zusammenfügungen auf einmal machst. Bei deinen 3'en macht das ein paar Mikrosekunden aus, das ist praktisch nicht messbar. Es ist also relativ egal welches der beiden du hier verwendest.

    Naja da er es immer wieder Formatiert wird letztes ende nur diese Zeile ausgeführt (In mysql_query)


    Nein, schau dir doch mal seinen Code an, der ist so aufgebaut:
    new string[128];
    format(string, sizeof(string), "Hallo");
    format(string, sizeof(string), "%s Welt!", string);
    print(string);
    //print gibt aus: "Hallo Welt!"


    Du kannst zwar auch strcat verwenden, aber das würde hier nichts ändern.

    Nexos:
    Du brauchst keine Schleife.
    Deine Schleife würde nur für alle Cops die bereits im Server sind das MapIcon nochmal setzen.


    public OnPlayerConnect(playerid)
    {
    //Wichtig: Nach dem Login!!
    if(IsPlayerCop(playerid))
    {
    SetPlayerMapIcon(playerid, 30, 0.0, 0.0, 0.0, 30, 0, MAPICON_LOCAL);
    }
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    if(IsPlayerCop(playerid))
    {
    RemovePlayerMapIcon(playerid, 30);
    }
    return 1;
    }


    stock IsPlayerCop(spielerid)
    {
    //Abfrage ob Spieler ein Cop ist
    return 1;
    }

    Passiert das nachdem du einen Server Neustart via GMX gemacht hast?
    Grundsätzlich liegt es daran, dass sich die IDs der Textdraws überschneiden, das kann entweder daran liegen, dass das Limit erreicht ist, oder daran, dass bestimmte Textdraws nicht richtig (zum Beispiel doppelt) gelöscht werden, oder die Variable beim Löschen nicht zurückgesetzt wird, und das Textdraw dann nochmals zu einem späteren Zeitpunkt gelöscht wird, von einem anderen FS/GM aus.


    Du solltest alles was du im Server hast, bezüglich Textdraws, genau überprüfen und entsprechend absichern. Gegebenenfalls auch Debugs einfügen.
    Die IDs von Textdraws siehst du so:


    printf("ID von meinTextdraw: %d", _:meinTextdraw);

    printf("checking frak = %d", frakid);
    zu:
    printf("checking frak = %d", frakid);
    printf("Frak Bank: %0.2f / %0.2f / %0.2f" ,FrakInfo[frakid][BankX],FrakInfo[frakid][BankY],FrakInfo[frakid][BankZ]);
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x,y,z);
    printf("Pos: %0.2f / %0.2f / %0.2f" ,x,y,z);


    Dann siehst du die Positionen und kannst es selbst prüfen.

    if(newbie[playerid]) return DestroyVehicle(newbie[playerid]),newbie[playerid]=0;
    zu:
    if(newbie[playerid])
    {
    DestroyVehicle(newbie[playerid]);
    newbie[playerid]=0;
    return 1;
    }


    oder:
    if(newbie[playerid]) return DestroyVehicle(newbie[playerid]),newbie[playerid]=0,1;


    Wie es dir lieber ist. Ich bevorzuge die erste Variante, weil man nicht alles in eine Zeile schreiben sollte.

    Bist du auch an der richtigen Position und in der richtigen Fraktion?
    Debug dir den Code mal, was wird geprintet?


    if(newkeys & KEY_SECONDARY_ATTACK)
    {
    print("Key erkannt");
    for(new frakid=1;frakid<MAX_FRAKTION;frakid++)
    {
    printf("checking frak = %d", frakid);
    if(IsPlayerInRangeOfPoint(playerid,2.0,FrakInfo[frakid][BankX],FrakInfo[frakid][BankY],FrakInfo[frakid][BankZ]))
    {
    printf("In range @ %d -> case %d", frakid, PlayerDaten[playerid][pFraktion]);
    switch(PlayerDaten[playerid][pFraktion])
    {
    case 1:
    {
    ShowPlayerDialog(playerid, DIALOG_LSPDBANK,DIALOG_STYLE_LIST,"LSPD Kasse","Geld Einzahlen\nGeld Abheben\nKontostand","Okay","Abbrechen");
    }
    case 2:
    {


    }
    case 3:
    {
    ShowPlayerDialog(playerid, DIALOG_GSFBANK,DIALOG_STYLE_LIST,"Fraktionsbank der Grove Street","Geld Einzahlen\nGeld Abheben\nMats Importieren\nMats Exportieren\nKokain Importieren\nKokain Exportieren\nHeroin Importieren\nHeroin Exportieren\nHaschisch Imporiteren\nHaschisch Exportieren\nKontostand","Okay","Abbrechen");
    }
    case 4:
    {
    ShowPlayerDialog(playerid, DIALOG_YAKUZABANK,DIALOG_STYLE_LIST,"Yakuza Bank","Geld Einzahlen\nGeld Abheben\nMats Importieren\nMats Exportieren\nKokain Importieren\nKokain Exportieren\nLSD Importieren\nLSD Exportieren\nHaschisch Imporiteren\nHaschisch Exportieren\nKontostand","Okay","Abbrechen");
    }
    }
    }
    }
    }

    Trotzdem bringt dir die Addressierung von 0 auf an nichts wenn du den Index über die FahrzeugID festlegst, dann ist der Index 0 auch vollständig 0.


    Natürlich, aber das macht er ja gar nicht. ;)
    Ist ja auch egal, passt ja jetzt. Zurück zum eigentlichen Problem:



    Chax: Wie hast du DIALOG_AUTOKAUFEN definiert? Falls es größer als 32767 ist, mach es kleiner.


    Und ebenfalls:
    format(string,sizeof(string),"Name: %s\nPreis: %i$\nSteuerklasse: %i\nPremium: %s",CarName[GetVehicleModel(GetPlayerVehicleID(playerid))-400],AutoHausAutoInfo[i][ahaPreis],AutoHausAutoInfo[i][ahaKlasse],"Nein");

    zu:
    format(string,sizeof(string),"Name: %s\nPreis: %i$\nSteuerklasse: %i\nPremium: %s",CarName[GetVehicleModel(vehicleid)-400],AutoHausAutoInfo[i][ahaPreis],AutoHausAutoInfo[i][ahaKlasse],"Nein");

    Es geht ja nicht unbedingt um die ID des Fahrzeugs, sondern um den INDEX des Arrays ...


    @BlackAce: Doch? :huh:



    Chax:
    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    for(new i=1;i<MAX_AUTOHAUSAUTOS;i++)
    {
    if(vehicleid == AutoHausAuto[i])
    {
    SendClientMessage(playerid,WEIß,"Test");
    new string[200];
    format(string,sizeof(string),"Name: %s\nPreis: %i$\nSteuerklasse: %i\nPremium: %s",CarName[GetVehicleModel(GetPlayerVehicleID(playerid))-400],AutoHausAutoInfo[i][ahaPreis],AutoHausAutoInfo[i][ahaKlasse],"Nein");
    ShowPlayerDialog(playerid,DIALOG_AUTOKAUFEN,DIALOG_STYLE_MSGBOX,"Auto kaufen",string,"Kaufen","Abbrechen");
    return 1;
    }
    }
    SendClientMessage(playerid,WEIß,"Falsch!");
    return 1;
    }


    Wie sieht es jetzt aus?