Beiträge von [DT]midomen

    Hier mal meine Kritik dazu:


    Ich gehe hierbei das Script von oben nach unten durch und welche grauenhafte Include entdecke ich als erstes? Dini.
    Dafür erstmal direkt Punktabzug, sowas heute noch trotz allen Tutorials zu verwenden? Schwachsinn.
    Nutz MySQL, SQLite, die standard "file" Include zum speichern oder sonstige deutlich schnellere Includes (manchmal auch Plugins dabei) als "Dini".


    Als nächstes fällt mir direkt das auf.


    "

    • stock IstSpielerAdmin(playerid, level) //Adminabfrage
    • {
    • if(Spieler[playerid][Admin] >= level) return 1;
    • return 0;
    • }"


    Ich verstehe dies ebenfalls nicht. Man spart doch GARNICHTS die Abfrage ist letztendlich genauso lang nur anders aufgebaut. Jetzt hat jede Admin Abfrage einen Umweg bzw. wird über Umweg abgefragt und es ist NICHTS gewonnen, nein nur an Zeit verloren.


    Beim "Register" stock ist der Array beim string für den Dateipfad viel zu groß. Die 30 Buchstaben plus 33 wegen dem Namen (man kann ja ruhig großzügiger sein) sind für mich 65 (wie gesagt großzügiger) aber nicht nahezu das doppelte.



    Als nächstes fand ich das hier.



    • stock SName(playerid)
    • {
    • new GetName[MAX_PLAYER_NAME];
    • GetPlayerName(playerid,GetName,sizeof(GetName));
    • return GetName;
    • }



    Hier ein Appell an alle es bitte nicht so zu machen und hier direkt ein "Lösungsansatz".


    Globale Variable für Spielernamen PlayerName[MAX_PLAYERS][MAX_PLAYER_NAME];


    Beim connecten nutzt ihr GetPlayerName(playerid,PlayerName[playerid],MAX_PLAYER_NAME);


    Jetzt ist der Name in der Variable gespeichert und ihr könnt auf diese ganz einfach in Form von PlayerName[playerid] zugreifen um den Namen herauszufinden.


    Dann bei den Dialogen.


    Dort musst du nicht bei jeder blöden Abfrage "return 1;" eingeben. Das return 1; hast du bereits ganz am Ende des publics.


    Dann solltest du bei den dialogen mit else if arbeiten denn ich wüsste nicht dass man 2 Dialoge gleichzeitig öffnen kann.


    Dann fand ich deinen Beispielbefehl komisch. Mein spontaner Gedanke ist einfach mal du weißt nicht wie du die Parameter splitten sollst.


    Ansonsten war es erstmal soweit.


    Fazit:


    Für mich sehr überflüssig, hat viele "Fehler" bzw. Dinge die man so nicht umsetzen sollte, basiert auf Dini gab es 1000x, Anfänger hat nichts davon da nichts erklärt wird und wenn ich es mir anschaue erinnert es mich an das typische Video anschauen, pausieren, abschreiben, wieder anschauen etc.


    Punkte: 3/10

    Seit wann muss man sich daran halten? :P Außerdem halte ich es für besser und warum sollte man einem User nicht eine bessere Variante vorschlagen? Zu dem Zeitpunkt des "Close"-Postes wusste er ja nicht, dass mein geiler Vorschlag noch kommt. :rolleyes:

    Es kann aber schnell in Spam ausarten. Vielleicht will der User auch keine "bessere" Variante? Vielleicht ist es ihm einfach scheiß egal und ihm reicht es dass es funktioniert? Andererseits hast du recht in dem Punkt ihm es trotzdem zumindist 1x vorzuzeigen damit er weiß wie es auch anders geht.

    Wer lange Mappt weiß wie es geht. Da brauchst du nix vorher Planen.

    Er mappt aber nicht lange sondern erst seit Montag.

    Nicht zwingend verschiebe eines der flakerden Objekte um 0,001 und fertig ist der lack. Decke oder boden alse in z richtung Wände in x/y Richtung

    Ich habe das bereits ebenfalls bedacht aber bei so einem kleinem Unterschied bezweifle ich flakerfreiheit in der Masse. Man muss da denke ich einfach rumprobieren. Der Unterschied groß genug aber trotzdem mit dem Auge nicht sichtbar.

    Da hat wohl jemand nicht ins Wiki geschaut. Public geben keine Strings zurück, solltest Du sogar beim Compilen eine Fehlermeldung erhalten.

    Hast recht hatte das nicht bedacht, ist mir schon bewusst vorallem jetzt wo du es sagst.
    Übrigens, ja ich schaue nicht jedes mal ins Wiki sondern nutze eher mein bereits angesammeltes wissen. Da kann es schonmal passieren dass auch mir solche Fehler passieren. Wobei es gab darüber eine Diskussion im englischen Forum die ich ganz interessant fand ob es nicht doch möglich wäre.
    Leider finde ich sie nicht mehr kann es also nicht verlinken.

    Ich sehe das ähnlich, wenn ich beispielsweise nicht viel Ahnung von PAWN hätte wäre die Fehlermeldung unlogisch genug für mich, davon abgesehen das es Fehler gibt, die sogar ich nicht kapiere, dafür ist aber der Fehlererklärbär da. :)

    da ich mich auf einen speziell fehlercode bezogen habe ist eure Argumentation einfach unsinnig. Geht auf das genannte Beispiel ein. Ansonsten zieht es einfach nicht.

    Wenn er die Grundlagen nicht kann weiß er nicht wie man was definiert :)

    Antwortest du jetzt weil du antworten willst oder liest du dir das auch mal wirklich durch, schaust dir seinen Code an, den Fehler und vergleichst das?


    • new pId,string[128],tmp[MAX_PLAYER_NAME];
    • if(sscanf(params,"uf",pID,Skin)) return SendClientMessage(playerid,-1,"Verwendung: /setskin [spieleri




    Teil seines Codes.


    Wenn ich Fehlercode mit Zeile habe und "pID" "nicht definiert" ist. Muss ich wissen was definieren heißen soll? NEIN! Wenn ich mein pID mit dem deklartiertem pId vergleichen würde würde ich einen Unterschied merken. Da muss man überhaupt KEIN Verständnis für haben oder Grundlagen können, Ganz simpel

    Es scheitert hier nicht am enlisch. Im fehlen alle Grundlagen zu Pawn bzw dem Programmieren.

    Bei so einem Error Code
    "C:\Users\Emir\Desktop\Neuer Ordner\gamemodes\script.pwn(218) : error 017: undefined symbol "pID"


    Ist es offensichtlich da muss man absolut keine Grundlagen beherrschen und wenn man das vergleichen würde mit der erstellten Variable würde das auch auffallen.


    Bei so einem Error Code "C:\Users\Emir\Desktop\Neuer Ordner\gamemodes\script.pwn(373) : error 029: invalid expression, assumed zero"
    Versteh ich wiederum natürlich dass er nicht durch den Code darauf kommt dass er wahrscheinlich kein/ein ; zu wenig/viel hat.

    Folgendermaßen.
    Es gibt einen Gruppengründer und Mitglieder.
    Der Gründer kann Spieler die keine Gruppe haben per Befehl später inviten. Zum Austritt dann auch noch ein extra Befehl evtl. ein kleines"Rechte" System wo der Leader einstellen kann ob die Mitglieder andere einladen dürfen?
    Es gibt einen Gruppen Chat und über den Namen der Gruppenname.
    Also ein Befehl erstellen (würde ich jetzt mit ocmd in Verbindung mit sscanf machen), Beispielbefehl hast du genannt.
    Parameter überprüfen, überprüfen ob der Gründer in keiner Gruppe ist, wenn ja und alles stimmt die clientmessage senden und über einen Stock die Gruppe erstellen.
    Dann brauchst du natürlich noch einen Lade/Speicher stock.
    Ich bei den Spielersaves den Gruppennamen speichern und bei der Abfrage in welcher Gruppe der Spieler ist einfach die vorhandenen laden und per strcmp mit dem Eintrag im Spielersave vergleichen.
    Ich denke mal das ist eine Orientierung mit der du was anfangen kannst und jetzt musst du das einfach umsetzen.

    Also wenn du Montag erst angefangen hast und das deine erste Map ist hast du meiner Meinung nach Talent. Klar es ist nicht die komplexeste Map aber du stehst laut deiner Aussage ganz am Anfange und da ist noch sehr viel Platz nach oben auf einer guten Basis.
    Was mir aber überhaupt nicht gefällt und eigentlich ein No Go ist, ist das übereinander mappen von Objekten. Fällt mir z.B. bei deiner Decke auf. Das Flackert einfach nur wie will und nervt somit ziemlich.