[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Welche Fehler bekommst du dann jetzt, ohne die Include?


    whitetiiger:

    Zitat

    Und um wv. Millisekunden reden wir?


    Bei einem einmaligen Durchlauf ist es völlig irrelevant, aber wenn einer auf Performance-Verbesserung in jeder Hinsicht schwört, dann sollte er diese Funktionen meiden, da ein Funktionsaufruf auf jeden Fall mehr Zeit beansprucht, als das Auslesen einer Variable.

  • o\include\dutils.inc(196) : error 025: function heading differs from prototype ->
    pawno\include\dutils.inc(196) : error 021: symbol already defined: "AC_SetPlayerMoneyEx" ->
    include\dutils.inc(200) : error 017: undefined symbol "SetPlayerMoney" ->

    SetPlayerMoney(playerid,howmuch)//Zeile 196 {
    PRIVATE_Last_Money[playerid]=howmuch;
    GivePlayerMoney(playerid,howmuch-GetPlayerMoney(playerid));
    }
    #pragma unused SetPlayerMoney

  • Hätte mal eine kleine Frage zu den returns..


    Ich zwar meistens wann man return 1 macht,
    aber ich verstehe nicht was es bewirkt, kann das jemand vielleicht kurz erklären?
    Auf Deutsch bedeutet es ja zurück, aber keine Ahnung wie das gemeint ist



    Vielleicht könnte mir jemand anhand dieses Codes erklären, wofür die returns hier sind:
    IsPlayerAnAdmin(playerid,alevel)
    {
    if(sInfo[playerid][adminlevel]>=alevel)return 1;
    return 0;
    }

  • Was bringt das eigentlich? Lösche diese Zeilen mal aus der dutils.inc raus und speichere sie.
    Dann kannst du das hier ganz unten in deinen Gamemode einfügen:
    stock SetPlayerMoney(playerid, amount)
    {
    ResetPlayerMoney(playerid);
    return GivePlayerMoney(playerid, amount);
    }


    @Kontrax:
    Ein return beendet die Ausführung des aktuellen Callbacks bzw. der aktuellen Funktion an genau der Stelle, und gibt den Wert in return zurück.
    Beispiel:
    new tage1 = GetMonatTage(1);
    //tage1 ist dann 31
    new tage2 = GetMonatTage(2);
    //tage2 ist dann 28
    new tage3 = GetMonatTage(45234541);
    //tage3 ist dann -1


    stock GetMonatTage(monat)
    {
    if(monat == 1) return 31;
    //Wenn monat == 1 ist, wird das hier nicht mehr ausgeführt.
    if(monat == 2) return 28;
    //etc...

    return -1; //Falls Fehleingabe.
    }
    Natürlich kann man das über einen switch machen, aber so war es anschaulicher.


    Generell: return beendet die momentane Funktion bzw. das Callback und gibt den Wert zurück.
    return 1 wird meistens genommen um eine Funktion zu beenden und als korrekt zu markieren, return 0 um sie als fehlerhaft ausgeführt zu markieren, oder unvollständig.

  • Wenn ich es nicht im script einfüge habe ich nur 1 Error folgenden:
    error 021: symbol already defined: "AC_SetPlayerMoneyEx" Zeile 46831


    stock GivePlayerHealth(playerid, Float:health)
    {//Diese Zeile
    new Float:Current;
    GetPlayerHealth(playerid, Current);
    if((Current)+(health) > 100) return SetPlayerHealth(playerid, 100);
    SetPlayerHealth(playerid, ((Current)+(health)));
    return 1;
    }

  • Bei einem einmaligen Durchlauf ist es völlig irrelevant, aber wenn einer auf Performance-Verbesserung in jeder Hinsicht schwört, dann sollte er diese Funktionen meiden, da ein Funktionsaufruf auf jeden Fall mehr Zeit beansprucht, als das Auslesen einer Variable.


    Sind 100000 Durchgänge gut?


    wenn ja

    PHP
    [23:07:58] MAX_PLAYERS: 118
    [23:07:58] GetPlayerPoolSize()+30: 112


    MAX_PLAYERS ist immernoch bei 30
    Download: http://puu.sh/gqK71/85195ebb55.rar


    Ausserdem müsste ich ja sogar MAX_PLAYERS auf 1000 lassen, wenn ich es mir recht überlege.


    Ich sag mal so 2:0 für GetPlayerPoolSize()


    P.s. unter fairen bedingungen


    PHP
    [23:12:56] MAX_PLAYERS: 2312
    [23:12:56] GetPlayerPoolSize()+30: 136


    MAX_PLAYER ist nun wieder auf 1000

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

  • whitetiiger:
    Les dir den Post nochmal durch. ;)
    http://forum.sa-mp.de/gta-mult…ng-fragen-794#post2041761
    Es geht um diese Schleife:
    for(new i=0; i<=biggestPlayerID; i++)
    Teste es mal damit.


    Dass MAX_PLAYERS nicht unbedingt schneller ist ist mir klar, GetPlayerPoolSize gibt ja bei nur einem Spieler eben 1 zurück. Es müssten mehr Spieler online sein, aber teste es mal mit der biggestPlayerID-Schleife.


    Corvus: In der Zeile steht davon nichts. Sicher, dass du die richtige Zeile hast?
    Wo und wie wird denn AC_SetPlayerMoneyEx definiert?

  • Teste es mal damit.


    Warum soll ich es bitte schön damit Testen?
    Wenn über diesen "biggestPlayerID" mit "++" und "--" darüber ein Fehler kommt, ist es echt nicht mehr Witzig.


    bei P.s. ist übrigend die Funktion sehr schnell 1Mio. Durchläufe


    Außerdem ob man nun new biggestPlayerID = GetPlayerPoolSize(); for(new i=0; i<= biggestPlayerID; i++) macht oder nur for(new i=0; i<= GetPlayerPoolSize(); i++) ist genau gleich.


    Außerdem hab ich ja auch GetPlayerPoolSize()+30 genommen, wodurch die for-schleife nicht nur 1 Spieler hat, sondern 30.
    Warum 30? Es sind nur noch durchschnittlich 30Spieler auf ein Server drauf


    #ScheißNeueRechtschreibung

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

  • Beitrag von Corvus ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.

  • einfach so:TICKET_INFO:weitereinfo - TICKET_INFO:_ticketQuestion

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • @BlackAce:


    TICKET_INFO:_ticketState - TICKET_INFO:_ticketQuestion)
    Danke, aber das gibt mir einen Tag Mismatch Fehler aus.


    Das genaue Enum sieht folgendermaßen aus:

    enum TICKET_INFO{
    _ticketCreatorID,
    _ticketSupporterID,
    _ticketQuestion[70],
    _ticketState
    };


    Mir wird auch das Prinzip dahinter nicht deutlich, wieso diese Subtraktion die Größe von _ticketQuestion resultiert.
    Könntest du mich diesbezüglich aufklären?