Beiträge von Haxler


    SA-MP Dedicated Server
    ----------------------
    v0.3d, (C)2005-2011 SA-MP Team
    sagt doch schon alles. Du brauchst nicht nur die richtigen Includes, sondern auch den richtigen Server. Update mal die samp-server.exe (bzw. auch announce.exe und samp-npc.exe)


    format(FCInfo[idx][Model], 16, val);
    format(FCInfo[idx][Color1], 16, val);
    format(FCInfo[idx][Color2], 16, val);
    format(FCInfo[idx][Fraktion], 26, val);
    format(FCInfo[idx][Carid], 16, val);
    format(FCInfo[idx][Kosten], 16, val);

    fällt dir was auf? Versuchs mal mit strval :D
    FCInfo[idx][Model] = strval(val); //etc.

    Erstell dir einfach ein Script dafür (musst aber darauf achten dass du keine anderen Objekte erstellst):



    #include <a_samp>


    main()
    {
    }
    public OnGameModeInit()
    {
    new first = CreateObject(1337,5.0,12.0,55.0,0.0,0.0,0.0); //Erstes Objekt
    CreateObject(1337,5125.0,412.0,255.0,0.0,0.0,0.0); //Weitere Objekte
    CreateObject(1337,15.0,142.0,525.0,0.0,0.0,0.0);
    new last = CreateObject(1337,52.0,152.0,552.0,0.0,0.0,0.0); //Letzes Objekt
    new Float:x, Float:y, Float:z;
    for(;first<=last;first++)
    {
    GetObjectPos(first, x, y, z);
    printf("%f,%f,%f",x,y,z);
    }
    return 1;
    }
    den Gamemode startest du einfach und schon hast du alle Koordinaten im Server-Log.
    Beachte aber, dass Samp ein Objekt-Limit von 1000 Objekten hat.

    if(!fexist(datei))
    Du lädst nur aus der Datei, wenn diese nicht existiert.



    stock LoadItems(Item)
    {
    new datei[128];
    format(datei, 128, "/Items/%d.txt", Item);
    if(fexist(datei)) //So stimmts
    {
    sItem[Item][Type] = dini_Int(datei, "Type");
    sItem[Item][SpawnX] = dini_Float(datei, "PosX");
    sItem[Item][SpawnY] = dini_Float(datei, "PosY");
    sItem[Item][SpawnZ] = dini_Float(datei, "PosZ");
    sItem[Item][Pickup] = CreatePickup(854, 2, sItem[Item][SpawnX], sItem[Item][SpawnY], sItem[Item][SpawnZ], 0);
    print("Item Geladden");
    }
    return 1;
    }

    Liegt die Ban-Datei im Scriptfiles-Ordner? Falls ja:



    IsInFile(ip[], file[])
    {
    new File:fBan = fopen(file,io_read);
    new buff[16];
    while(fread(fBan, buff))
    {
    if(!strcmp(ip,buff))return fclose(fBan),1;
    }
    return fclose(fBan),0;
    }
    //...
    printf("BAN: %d",IsInFile("009.009.009.009","ban.txt"));

    Gibt 1 zurück, falls die IP gefunden wurde.

    Schau dir mal die RNPC.pwn Datei in npcmodes an.
    z.B.:

    public OnRecordingPlaybackEnd()
    {
    SendCommand("RNPC:002");
    if (repeat) {
    new rec[9];
    if (vehicle) {
    StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER, curplayback);
    format(rec, 9, "RNPC:201");
    } else {
    StartRecordingPlayback(PLAYER_RECORDING_TYPE_ONFOOT, curplayback);
    format(rec, 9, "RNPC:202");
    }
    SendCommand(rec);
    }
    }

    apoolecu: Was soll an seiner Funktion falsch sein? Den Fehler haben wir ihm schon gezeigt, in CreateItems gibt es keinen Fehler. Beim Erstellen wird in einer Schleife überprüft ob die Datei existiert, wenn nicht wird sie erstellt und die Schleife mit return abgebrochen.


    stock LoadItems(Item)
    {
    new Navidatei[16]; //16 Zeichen reichen
    format(Navidatei, 16, "/Items/%i.txt", Item);
    if(!fexist(Navidatei))return 0; //Datei existiert nicht, abbrechen
    //-> Datei existiert, Ladevorgang
    sItem[Item][Type] = dini_Int(Navidatei, "Type");
    sItem[Item][SpawnX] = dini_Float(Navidatei, "PosX");
    sItem[Item][SpawnY] = dini_Float(Navidatei, "PosY");
    sItem[Item][SpawnZ] = dini_Float(Navidatei, "PosZ");
    sItem[Item][Pickup] = CreatePickup(854, 2, sItem[Item][SpawnX], sItem[Item][SpawnY], sItem[Item][SpawnZ], 0);
    return 1;
    }


    stock LoadItems(Item)
    {
    new Navidatei[128];
    format(Navidatei, 128, "/Items/%i.txt", Item);
    if(!fexist(Navidatei))
    {
    dini_Create(Navidatei);
    sItem[Item][Type] = dini_Int(Navidatei, "Type");
    sItem[Item][SpawnX] = dini_Float(Navidatei, "PosX");
    sItem[Item][SpawnY] = dini_Float(Navidatei, "PosY");
    sItem[Item][SpawnZ] = dini_Float(Navidatei, "PosZ");
    sItem[Item][Pickup] = CreatePickup(854, 2, sItem[Item][SpawnX], sItem[Item][SpawnY], sItem[Item][SpawnZ], 0);
    }
    return 1;
    }
    wieso erstellst du die Datei beim Laden, falls sie nicht vorhanden ist?

    forward LoginMenu(playerid);
    public LoginMenu(playerid)
    {
    //Dein Code
    return 1;
    }


    SetTimerEx("LoginMenu", 15500, 0, "d", playerid); //Ausführen, wenn der Timer gestartet werden soll (OnPlayerConnect?)


    Kleiner Tipp: Wenn du bei Beitragverfassen auf den PWN-Button klickst, kannst du deinen Code übersichtlich darstellen.

    Kann auch sein, dass dein Script eine ältere Version verwendet und die neuere die Funktion nichtmehr unterstützt. Am besten schaust du in den Include-Dateien nach der Version (falls diese dort eingetragen ist) und suchst dir das passende Plugin.