Beiträge von Kaliber

    Wo soll der Error den genau ausgegeben werden?


    Du musst es z.B. so machen:


    #if mapNUM > MAX_MAPS
    #error Die MapID darf nicht größer als MAX_MAPS sein. (Standart == 25)
    #endif


    Solche if-Statements musst du nutzen ;)


    mfg. :thumbup:

    Jeder Spieler braucht eine Farbe, wo die Transparenz nicht 00 ist.
    Zudem musst du ShowPlayerMarkers(1); verwenden ;)


    und unter OnPlayerConnect, zum Beispiel SetPlayerColor(playerid, 0xFF4800FF)...dieses FF Am Ende ist entscheidend, da darf kein 00 stehen!


    mfg. :thumbup:

    Dein Befehl wird so nicht funktionieren, da du die Parameter falsch verwenden willst bzw es falsch splittest.


    Hier, mach es einfach so:


    if(!strcmp("/deliver", cmd, true))
    {
    if(!IstSpielerAdmin(playerid, 1)) return SendClientMessage(playerid,COLOR_RED,"Zugriff verweigert! Du benötigst mindestens den Adminrang: {00A500}Supporter ");
    tmp = strtok(cmdtext,idx);
    if(!tmp[0]) return SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Benutze /deliver [ID] [Zeit]");
    new id = strval(tmp);
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_RED,"~> Spieler nicht gefunden.");
    tmp = strtok(cmdtext,idx);
    new zeit = strval(tmp);
    if(zeit < 0 || zeit > 120) return SendClientMessage(playerid,COLOR_WHITE," Zeit nur zwischen 0 und 120 Minuten!");
    //gMessage = strrest(cmdtext,idx); //WAS DAS?!
    sSpieler[id][Jailtime] = zeit; //Hier das was Gesetzt werden soll (Funktioniert nicht!)
    SetPlayerPos(id,-2302.9690,1926.7751,7.0480);
    SetTimerEx("jailtimer", 1000, 1, "i", id); //Den Timer evtl überarbeiten
    SendClientMessage(id,ADMINFS_MESSAGE_COLOR,"Du bist nun im Knast :("); //Testbefehl funktionert
    return 1;
    }


    mfg. :thumbup:

    Das musst du so machen:


    new cmdstring[200];
    format(cmdstring, sizeof(cmdstring), "Befehl \"%s\" existiert so nicht, schau unter /hilfe nach.", cmdtext);
    SendClientMessage(playerid, ROT, cmdstring);


    mfg. :thumbup:

    Kaliber: bitte noch ne x/10 Bewertung.


    Wofür? :huh:


    Ich habe dir eine sachlich, gut formulierte und begründete Bewertung gegeben und dir bewusst nicht nur ein x/10 dahin geklatscht :rolleyes:


    Halte nichts von diesen Bewertungen im Script-Showroom, sry :S


    mfg. :thumbup:

    Also, ich finde dein System von der Idee her nicht schlecht, jedoch, finde ich es teilweise ziemlich merkwürdig und schlecht wie du es umsetzt.


    1. Du hast extra eine Funktion SpielerName(playerid) die dafür sorgt, dass du den Namen eines Spielers auslesen kannst, trotzdem erstellst du in manchen Befehlen neue Variablen und lässt ihn nochmal auslesen?! Nebenbei bemerkt ist die Funktion hier nicht die schönste Lösung.


    2. Du machst teilweise unnötige abfragen, wie zum Beispiel:


    //In einem Command:
    if(IsPlayerConnected(playerid))
    Wenn der Spieler nicht connected wäre...wer gibt dann gerade diesen Befehl ein 8|


    3. Du hast den Sinn von ProxDetector glaube ich nicht so ganz verstanden, zumindest so wie du diese Funktion verwendest, macht es keinen Sinn, da solltest du lieber eine andere verwenden.


    4. GetMaxPlayers() ist eine Funktion, die in der CFG den Wert von maxplayers ausließt.
    Jedoch, so wie du es geschrieben hast, macht sie das in jedem Schleifendurchgang, somit wird die Funktion langsamer, du solltest es so verwenden:


    for(new i,l=GetMaxPlayers(); i!=l; i++)


    5. Da die Variable "Telefoniert" bei dir nur 2 Werte haben kann, nämlich 0 oder 1, solltest du die Variable als Boolean deklarieren, da sie dann weniger Speicher belegt.


    6. Du solltest aus dem Array bei "Telefoniert" mit MAX_PLAYERS ein char-Array machen, dann verbraucht jede Cell nicht 5 Byte Speicherplatz, sondern nur 1 Byte.


    7. Es ist zwar ziemlich egal, trotzdem sieht es irgendwie komisch aus, mach das mit diesem #define Filterscript raus...schließlich ist es eins und dann musst du nicht noch ein main(){ } darein schreiben, das ist unnötig.


    8. Teilweise machst du eine unnötige Verwendung von format, format verwendet man nur, um bestimmte Platzhalter wie %s,%d,%x,%c,%f...usw auszulesen. Wenn du einen normalen Text hast, kannst du diesen direkt mit SendClientMessage ausgeben und musst es nicht erst noch formatieren. (Zeile: 164)


    9. Achso, Variablen, die man nicht verwendet, muss man auch nicht deklarieren...z.B. xname in Zeile 183


    10. Allgemein, kannst du das noch viel kürzer schreiben, ist zwar nicht notwendig, finde ich aber eigentlich immer schöner. Zum Beispiel:


    if(sscanf(params,"us",pID,text))
    {
    return SendClientMessage(playerid,ROT,"/sms [ID] [Text]");
    }


    Kann man auch nur so schreiben:


    if(sscanf(params,"us",pID,text)) return SendClientMessage(playerid,ROT,"/sms [ID] [Text]");


    Ist zwar nicht dramatisch...aber nur so als Tipp ;)


    11. Noch als Tipp...unnötige else - Abfragen, kannst du auch vermeiden, z.B. diese hier:


    if(Telefoniert[pID] == 1)
    {
    return SendClientMessage(playerid,GRAU,"Besetzt...");
    }
    else
    {
    Wenn das if-Statement erfüllt werden würde, würde die Funktion 0 oder 1 zurückgeben. Sprich, der untere Teil würde eh nicht ausgeführt werden, also wäre, das else überflüssig und kann somit weggelassen werden.



    An sich ist es nicht schlecht, aber noch Ausbaufähig :)


    mfg. :thumbup:

    Hier der Verlauf:


    Ich finde das jetzt ernsthaft ärgerlich wir machten mehr oder weniger einen mündlichen Vertrag und er bietet die Zahlungsmöglichkeit "PSC" im Thread an und lehnt es dann ab..


    So ein totaler Schwachsinn :pinch:


    Also 5 Punkte:


    • Ich hatte euch im Ts³ mehrmals gesagt, dass ich nur Banküberweisung gebrauchen kann.
    • Ich habe dir gesagt, dass du dir mehr Zeit nehmen sollst das zu überdenken und was machst du, rennst los und kaufst dir in 2min eine 150€ psc und gibst mir dann die Schuld dafür?!
    • Weiterhin ist zu bemerken, dass diese Chat Logs ziemlich 2 Deutig sind und nicht präzise! (bsp mein okay war auf das klären bezogen.)
    • Dein Kollege kann bestätigen, dass ich gesagt hatte, dass ich keine PSC gebrauchen kann.
    • Das mit dem PSC in dem Thread selbst, war auf kleinere Beträge wie z.B. 10€ bezogen und nicht 150€!


    Zudem, gab es weder einen mündlichen, noch einen schriftlichen Vertrag, ja ihr habt euch nicht einmal das Script angeschaut?!


    Ich will euch nichts böses, also bleibe ich bei dem, was ich euch schon in Skype geschrieben hatte:


    Entweder du wandelst die PSC um in eine Banküberweisung, dann können wir darüber reden oder du verwendest die PSC selber (ich habe ja nicht einmal den Code, somit habe ich euch erst recht nicht "übern Tisch gezogen") und machst eine Banküberweisung.


    mfg. :thumbup:

    Ist jetzt nur aus dem Kopf geschrieben, könnte aber klappen, probiers mal aus:


    new buffer[] = "9999,9999,9999";
    for(new i; i<20; i++) {
    if(array[i] == -1) continue;
    if(array[i] < buffer[0]) buffer[0] = array[i];
    else if(array[i] < buffer[1]) buffer[1] = array[i];
    else if(array[i] < buffer[2]) buffer[2] = array[i];
    }


    buffer[0]; //enthält kleinste Zahl
    buffer[1]; //enthält 2. kleinste Zahl
    buffer[2]; //enthält 3. kleinste Zahl


    mfg. :thumbup:

    Tut mir Leid, würde er nicht.


    Du hast bei switch und case den Fehler gemacht, in Case Variablen zu benutzen,
    das mag der Compiler überhaupt nicht.


    In Case, zumindest in PAWN, muss es einen konstaten Wert geben.
    Hier hilft also nur ein if-Statement


    Solltest dir den richtigen Code anschauen von mir :P


    Habe es übersehen gehabt, da ich die if-Statements weg gemacht hatte, aber kurz darauf verbessert ;)


    Schau dir meinen Post mal an ^^