Beiträge von Goldkiller

    Wie du aber siehste,ist im Beispielcode nirgendwo ein Text der in die Richtung "You are not an admin" geht ;).
    Hast wohl noch ein Anderes Script am laufen, wo es wahrscheinlich schon einen /KICK Befehl gibt.

    Zitat

    PVars:
    Script wird nicht länger (Wenn auch nur ein paar Zeilen)
    Schneller


    Ich hoffe,mit dem "Script wird nicht länger" meinst du,die AMX Größe.Sonst wäre das ein schlechtes Argument,denn die Länge des Scriptes / Codes ist relativ.
    Schneller sind die ebenfalls nicht.Die sind definitiv langsamer als Variablen ( enums ).

    Ich wollte sowas auch mal machen, fand die Idee schon seitdem MTA OpenSource wurde gut.
    Bin mal gespannt ob das was wird. Würde zwar nicht primär einen Gamemode schreiben, sondern eher eine Art Bibliothek von guten System. Sei es für Checkpoints,Rennen, Immobilien oder sonst was.

    Dann können wir auch gleich damit aufhören,eigene Funktionen direkt aufzurufen,anstatt über CallLocal/RemoteFunction. Denn so verhindert wir ja das stoppen des Codes. Den Fehler zu beheben wäre aber leichter :P.



    Vielleicht sind die Includes auch nicht im richtigen PAWNO Ordner. Kommt schon mal vor dass man das Server-Paket mehrmals installiert hat. Schau mal nach,dass auch wirklich die Datein auch wirklich im include Ordner liegen, von wo du auch pawno startest ( Oder halt wo pawncc.exe ist ).
    http://goldkiller.kilu.de/SAMP/TS_7622.rar


    Jedoch rate ich dir davon ab so zu programmieren, denn dadurch verlierst du stark an überblick. So wie Goldkiller dir seine Variante gezeigt hat wäre auch nicht zu empfehlen, denn es kann zu Fehler führen, also zum Callback-Ausfall. Natürlich kann der Code hier oben auch zu einem Codeausfall führen ...


    So wie jeder Andere Code ebenfalls "ausfallen" kann.Das Argument ist jetzt nicht so der Hit :p


    Wie auch immer,zu TS.

    Zitat

    (Wahrscheinlich ist auch, dass ich das falsch mache^^)


    Du machst was falsch.Den unteren Teil aus dem Post hab Ich extra getestet.Es gibt auch keinen Grund,wieso es nicht funktionieren sollte.Denn an die Stelle wo du #include <irgendwas> einfügst, wird einfach der Inhalt der Datei hin kopiert.Templer hat es nochmal sehr ausführlich erklärt und es funktioniert ja auch so wie er es gezeigt hat.

    http://wiki.sa-mp.com/wiki/Main_Page


    http://wiki.sa-mp.com/wiki/GetPlayerHealth
    new
    Float:fHealth;
    GetPlayerHealth(playerid,fHealth);
    SetPlayerHealth(playerid, fHealth + 20.0 );


    Nur so nebenbei,
    if(GetPlayerMoney(playerid) >= -50)
    Wieso lässt du Leute bezahlen, die Schulden haben ? Das Frag nur ab ob der Spieler mehr Geld besitzt als -50. Nicht gerade logisch :p.


    if( GetPlayerMoney(playerid) >= 50)
    {
    new
    Float:fHealth;
    GivePlayerMoney(playerid,-50);
    GetPlayerHealth(playerid,fHealth);
    SetPlayerHealth(playerid, fHealth + 20.0 );
    }


    SetPlayerShopName(playerid,"FDPIZA");
    SetPlayerShopName(playerid,"FDBURG");
    SetPlayerShopName(playerid,"FDCHICK");
    SetPlayerShopName(playerid,"AMMUN1");
    SetPlayerShopName(playerid,"AMMUN2");
    SetPlayerShopName(playerid,"AMMUN3");
    SetPlayerShopName(playerid,"AMMUN5");
    Die Händler sind automatisch in den Läden, du brauchst den Code hier nicht.

    Nette Idee wie du es dort machst.Hab es selber noch nie ausprobiert so wie du es machst, mache es aber ähnlich:


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    Vehicle_OnPlayerStateChange(playerid, newstate, oldstate);
    if(Race_OnPlayerStateChange(playerid, newstate, oldstate)) return 1;
    if(VehicleExp_OnPlayerStateChange(playerid, newstate, oldstate)) return 1;
    if(Stunting_OnPlayerStateChange(playerid, newstate, oldstate)) return 1;
    if(Tram_OnPlayerStateChange(playerid, newstate, oldstate)) return 1;
    if(LieferS_OnPlayerStateChange(playerid, newstate, oldstate)) return 1;
    if(Derby_OnPlayerStateChange(playerid, newstate, oldstate)) return 1;
    return 1;
    }
    *_OnPlayerState liegt immer in der jeweiligen Include. Ist ebenfalls sehr übersichtlich, funktioniert auch reibungslos.


    Du musst irgendwas total falsch machen.Hab es ebend ausprobiert:
    public OnGameModeInit()
    {
    SetGameModeText("Blank Script");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    #include <test/test>
    #include <test/shoutout>
    var--;
    return 1;
    }
    Und die Datei ".../includes/Test/Test.inc":
    printf("Hallo aus Test/Test.inc");
    Und die Datei ".../includes/Test/Shoutout.inc":
    printf("Und noch ein Shoutout");
    new var;
    var++;
    var = 20;

    Auch versteh Ich nicht wirklich deine Problembeschreibung.

    Habe es gestern extra noch probier,bevor Ich editiert hatte:
    #include <a_samp>


    #define test1 6
    #define test2 4


    main()
    {
    }


    public OnGameModeInit()
    {
    SetGameModeText("Blank Script");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    #if test1 == test2
    printf("test1 == test2");
    #else
    printf("--------");
    #endif
    return 1;
    }
    Funktioniert ohne Probleme.

    Hätte nicht gedacht,dass man dabei eine Warnung bekommt.Aber gut ;).


    Dann mach es mal so:

    #if defined ServerID SERVERID_REALLIFE
    #else
    #endif


    #if defined <_NAME_> <_WERT_>


    //Edit: Ist quatsch, merk Ich gerade :thumbdown:


    So wird es aber klappen.



    #if ServerID == SERVERID_REALLIFE
    #else
    #endif

    Zitat

    Du kannst aber in der Server Konfiguration die Stream Rate umstellen und dadurch sieht man die Objekte erst wenn man aus dem Auto steigt ^^.


    Die stream_rate hat damit nichts zu tun.Die gibt nur an, alle wieviel Ticks der Server alle wichtigen Daten ( Spieler,Fahrzeuge ( Objekte ? ) ) zum streamen neu berechnen soll.
    Ein Blick auf das SA-MP Wiki hilft:

    Zitat

    stream_distance - The distance on the X,Y plane which server entities will stream in for connected players.
    stream_rate - The number of milliseconds that must elapse before server entities stream distance is retested for each player.


    Wenn überhaupt,dann mal die stream_distance bearbeiten. Die wirkt sich aber trotzdem nicht auf den Streamer von Incognito aus.

    Die Logik ist aber nicht ganz richtig bei dir.
    Angenommen ich spieleso:



    Totenkopfpickup ( 1 ) und ( 2 ) sind immernoch vorhanden :p.
    Solltest bevor du ein neues DynamicPickup ( Totenkopf ) erstellst,dass alte immer zerstören. Du benutzt ja nur 1 Variable, daher ein muss.


    // OnPlayerDeath
    DestroyDynamicPickup(TotenKopf[playerid]);
    TotenKopf[playerid] = CreateDynamicPickup(1254, 23, PlayerInfo[playerid][pTz], PlayerInfo[playerid][pTy], PlayerInfo[playerid][pTz], 0);


    Zitat

    Funktioniert nicht :(
    Komischerweise auf dem Homeserver wo ich alleine bin funktioniert alles
    aber auf dem Root nicht .... O.o


    Dann liegt es vielleicht am Server der auf dem Root läuft.Vielleicht hast du dort andere Scripte laufen ( vllt Filterscripte, Bots ? ) , die sich bei den Pickups einmischen. Kann mir nicht vorstellen,dass es an dem Pickup-Typ liegt.Hab zwar noch nie 23 benutzt, aber Ich benutzt ebenfalls den Streamer nur mit Pickup-Typ 1 oder 2.Da funktioniert alles :|

    Es macht keinen Unterschied ob du sizeof() benutzt oder dann Interiors ( Variable oder als Define ).
    Wenn es aber sein muss, dann zähl mal nach,ob Interiors der Anzahl an Zeilen entspricht von IN. Du hast 22 Einträge, heisst also, Interior müsste auch 22 sein. Ist Interior größer oder kleiner, musst es an die Array-Größe anpassen.

    new Float:IN[Interiors][Int] =
    Was ist denn Int ?
    Als was ist Interiors definiert?


    Zitat

    (170) : error 052: multi-dimensional arrays must be fully initialized


    Du musst beim initialisieren entweder für jeden Eintrag einen Wert angeben oder keinen.
    Kann mir vorstellen,dass es funktioniert wenn du Interiors weg lässt.


    new Float:IN[][Int] =
    Gibst du keine Größe an, so wird automatisch die größe ermittelt.

    floatround(Benzin, floatround_round);
    Da wird wohl ein Fehler sein.floatround return den Wert der gerundet wurde als Integer.


    new
    iBenzin;
    iBenzin = floatround(Benzin, floatround_round);
    TankstellenInfo[tanke][tLiter] -= float(iBenzin);

    Möglich,dass du ein TagMismatch Warning bekommst. Kann ja schlecht wissen,ob tLiter ein Tag hat ( Float: ) oder nicht :p.


    //Edit:
    Falls es nicht klappt,füg mal folgendes noch ein:


    Benzin = VehicleMaxTank(vv) - Gas[vv];
    printf("Benzin %.1f", Benzin);