Beiträge von Goldkiller

    Sollst es ja auch nicht lesen,sondern verstehen.
    Das hast du aber wie es aussieht leider nicht.
    cmd(makeadmin, 4 , cmdtext);
    Wo kommt die 4 her? Die 4 ist für kick,weil kick aus 4 Buchstaben besteht.
    makeadmin hat dagegen 9 Buchstaben bzw ist 9 Buchstaben lang.
    cmd(makeadmin, 9, cmdtext);
    Auch ist bei deiner sscanf Abfrage noch etwas falsch:
    if(sscanf(params, "us",pID,adminlevel))

    Ich denke wir sind uns einige,dass das Adminlevel eine Zahl sein soll und kein Text ( String ).
    if(sscanf(params, "ud",pID,adminlevel))

    Ist auch logisch.
    adminID = strtok(cmdtext, idx);

    Sowas müsstest du auch für adminLVL machen.Sonst wird die Stringlänge nämlich immer gleich 0 sein.


    Mach's lieber mit sscanf.


    //Edit:
    Modulo ( % )gibt dir den Rest eine Teilung mit Ganzen Zahlen.
    zB:
    17 : 5 = 3 ( Eigentlich 3.4 , aber wir wollen keinen Bruch sondern eine Ganze Zahl )
    17 % 5 = 2 // Ist der Rest bei der Ganzzahligen Teilung. Wir können zwar 17 : 5 teilen, aber wenn wir eine Ganze Zahl wollen,bleibt 2 übrig. So bekommen wir diese herraus ) .
    http://de.wikipedia.org/wiki/Division_mit_Rest


    Das ! ist nur eine Negation. Heisst,es dreht den Wert um.
    Aus true wird false, aus false wird true.Aus 0 wird 1, aus allem außer 1 wird 0 .


    Dann hättest aber auch gleich nach dem "!IsPlayerConnected" Check ein return einfügen können ;). Sonst wird die Nachricht trotzdem gesendet ohne das Jemand gekickt wurde ( Gekickt wird keiner , da pID entweder INVALID_PLAYER_ID ist oder eine SpielerID hat die zZt nicht belegt ist ).
    COMMAND:kick(playerid,params[]) {
    new pID;
    if(!IsPlayerAdmin(playerid)) {
    return SendClientMessage(playerid,COLOR_WHITE,"Du bist kein Administrator");
    }
    if(sscanf(params,"u",pID)) { //HIER hat FoxHound einen "return" eingefügt
    return SendClientMessage(playerid,COLOR_WHITE,"Benutze: /kick [Name | ID]");
    }
    if(!IsPlayerConnected(pID)) {
    return SendClientMessage(playerid,COLOR_WHITE,"Spieler konnte nicht gefunden werden");
    }
    Kick(pID);
    SendClientMessage(playerid,COLOR_WHITE,"Spieler wurde vom Server gekickt!");
    return 1;
    }



    //Edit:
    An Maddin,
    Dafür gibts einige Methoden.Die einfachste wäre:
    stock IstGerade( iZahl ) {
    new
    iRest;
    iRest = ( iZahl % 2 ); // Modulo ! Gibt den Rest einer Teilung an
    return !iRest;
    }

    //Edit2
    Geht auch so :
    stock IstGeradeEx( iZahl ) {
    return !( iZahl & 1 ); // Abfragen ob 1 als Bit gesetzt ist.
    }

    Der Befehl wird so oder so nicht funktionieren,selbst wenn du keinen Error mehr angezeigt bekommst ;).


    ocmd:changeplate(playerid,params[])
    {
    new string[13];
    new cmd[256];
    if (sscanf(params, "s", string)) // Für einen String nehmen wir s,nicht d ( Integer / Dezimal )
    {
    return SendClientMessage(playerid,COLOR_RED,">> /CHANGEPLATE [ text ]");
    }
    new keycar = PlayerInfo[playerid][pCarKey];
    //format(string,sizeof(string),"%s",cmd[14]); ? Wozu ?
    SetVehicleNumberPlate(keycar, string);
    SetVehicleToRespawn(keycar);
    new Float: X,Float: Y,Float: Z;
    GetPlayerPos(playerid,X,Y,Z);
    SetVehiclePos(keycar,X,Y,Z);
    PutPlayerInVehicle(playerid,keycar,0);
    format(CarInfo[keycar][cNumberplate],13,string); // Musst die Größe anpassen
    return 1;
    }
    Angucken und davon lernen ;).


    //Edit:
    Ließ lieber nochmal das Tutorial dazu
    http://forum.sa-mp.de/san-andr…-commands-mit-parametern/

    Naja, ä und ae sind ja für den Computer nicht das Gleiche.
    Man kann es bestimmt machen, nur ob es sich wirklich lohnt? Ich hab meine Befehle auch immer mit ae,oe,ue gemacht.Muss man sich halt mit abfinden.


    Bin mir aber gerade nicht sicher,ob du einfach folgendes machen kannst:
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(teast,5,cmdtext);
    if (!strcmp("/täst", cmdtext, true, 5))
    {
    return dcmd_teast(playerid,cmdtext[5]);
    }
    return 0;
    }
    stock dcmd_teast(playerid,params[]) {
    // code
    return 1;
    }

    Ist nicht möglich.Funktionsnamen können keine Umlaute enthalten.Da musst du wohl ue , ae, oe benutzen für ü,ä,ö.
    Das hat aber auch nicht's mit DCMD selber zu tun.
    stock blä(playerid) { ... }
    Das ist ja auch nicht möglich :P

    Du lässt das Fahrzeug doch aber auch respawnen.Du "vertuschst" es doch nur doch nur :/.
    Hast du es eigentlich getestet? Ich meine nämlich,dass man Fahrzeuge nicht an eine Andere Position setzen kann,wenn keiner darin sitzt.


    Und nebenbei:

    new seat[MAX_PLAYERS]=-1;

    ist

    new seat[MAX_PLAYERS];
    seat[0] = -1;


    Damit aber alle mit -1 initialisiert werden,müsstest du folgendes machen:
    new seat[MAX_PLAYERS]= {-1,...};

    Wie soll die Datei denn auch erstellt werden ? Du hast dazu nichts im Code.


    http://forum.sa-mp.com/showthread.php?t=58458
    http://forum.sa-mp.de/san-andr…age=Thread&threadID=12147
    stock CreateHouse(playerid,hint,hpreis,hkaufbar,hworld)
    {
    format(opened,sizeof(opened),"/houses/haus%d.ini",houseid);
    //Datei erst erstellen!
    INI_Create(opened);
    if(INI_Open(opened))
    {
    INI_WriteInt("interior",hint); houses[houseid][interior] = hint;
    INI_WriteFloat("h_x",px); houses[houseid][h_x] = px;
    INI_WriteFloat("h_y",py); houses[houseid][h_y] = py;
    INI_WriteFloat("h_z",pz); houses[houseid][h_z] = pz;
    INI_WriteFloat("vworld",hworld); houses[houseid][vworld] = hworld;
    INI_WriteString("owner","Keiner"); format(houses[houseid][owner],MAX_PLAYER_NAME,"Keiner");
    INI_WriteInt("kaufbar",hkaufbar); houses[houseid][kaufbar] = hkaufbar;
    INI_WriteInt("preis",hpreis); houses[houseid][preis] = hpreis;
    INI_WriteInt("hkasse",0); houses[houseid][hkasse] = 0;
    INI_WriteInt("hschrank",0); houses[houseid][hschrank] = 0;
    INI_WriteInt("hheal",0); houses[houseid][hheal] = 0;
    INI_WriteInt("hbar",0); houses[houseid][hbar] = 0;
    INI_WriteInt("gbase",0); houses[houseid][gbase] = 0;

    INI_Save(); // Nach dem schreiben,speichern!
    INI_Close(); // Ganz wichtig,Datei schließen lassen!

    SuC();
    return 1;
    }
    // ...

    }
    Ganz wichtig ist nach dem bearbeiten mit SII das Speichern und auch Schließen der Datei.Denn wenn du sie nicht schließt, wird es nicht möglich sein,weitere Datein zu öffnen.


    //Edit:
    So könntest du es auch machen:
    stock CreateHouse(playerid,hint,hpreis,hkaufbar,hworld)
    {
    format(opened,sizeof(opened),"/houses/haus%d.ini",houseid);
    //Datei erst erstellen!
    if( INI_Create(opened) ) {
    if(INI_Open(opened))
    {
    INI_WriteInt("interior",hint); houses[houseid][interior] = hint;
    INI_WriteFloat("h_x",px); houses[houseid][h_x] = px;
    INI_WriteFloat("h_y",py); houses[houseid][h_y] = py;
    INI_WriteFloat("h_z",pz); houses[houseid][h_z] = pz;
    INI_WriteFloat("vworld",hworld); houses[houseid][vworld] = hworld;
    INI_WriteString("owner","Keiner"); format(houses[houseid][owner],MAX_PLAYER_NAME,"Keiner");
    INI_WriteInt("kaufbar",hkaufbar); houses[houseid][kaufbar] = hkaufbar;
    INI_WriteInt("preis",hpreis); houses[houseid][preis] = hpreis;
    INI_WriteInt("hkasse",0); houses[houseid][hkasse] = 0;
    INI_WriteInt("hschrank",0); houses[houseid][hschrank] = 0;
    INI_WriteInt("hheal",0); houses[houseid][hheal] = 0;
    INI_WriteInt("hbar",0); houses[houseid][hbar] = 0;
    INI_WriteInt("gbase",0); houses[houseid][gbase] = 0;


    INI_Save(); // Nach dem schreiben,speichern!
    INI_Close(); // Ganz wichtig,Datei schließen lassen!


    SuC();
    return 1;
    }
    }
    // ...


    }

    Oh man,was kann man denn daran nicht verstehen.Erst muss pB definiert werden, danach kannst du es erst verwenden.


    //~~~~~~~~~~~~~~~~~Includes~~~~~~~~~~~~~~~~~//
    #include <a_samp>
    #include <dini>
    #include <utils>
    //~~~~~~~~~~~~~~~~~Defineds~~~~~~~~~~~~~~~~~//
    #define COLOR_BLAU 0x33CCFFAA
    #define COLOR_GRAU 0xB4B5B7FF
    #define Firma 1239.2789,-950.5784,42.6852
    //~~~~~~~~~~~~~~~~~Forwards~~~~~~~~~~~~~~~~~//
    forward AutoNaricht();
    forward Save();
    forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);
    //~~~~~~~~~~~~~~~~~~~new~~~~~~~~~~~~~~~~~~~~//
    new presidentenenter;
    new presidentenexit;
    new oamtenter;
    new oamtexit;
    new endlostimer;
    enum pB
    {
    Typ,
    Inhalt1,
    Inhalt2,
    Inhalt3,
    Inhalt4,
    Inhalt5,
    Inhalt6,
    Inhalt7,
    Inhalt8,
    Inhalt9,
    Ammo1,
    Ammo2,
    Ammo3,
    Ammo4,
    Ammo5,
    Ammo6,
    Ammo7,
    Ammo8,
    Ammo9,
    Geld,
    };
    new Koffer[MAX_PLAYERS][pB];

    Genau das meinte Ich.


    Der Code den du gepostet hast,hat schon 23 Zeilen.In der Fehlerlog von dir sagt er aber, dass in Zeile 19 ein Fehler ist. Da meinst du,steht aber
    new Koffer[MAX_PLAYERS][pB];
    Da stimmt wohl was nicht,oder :P ?


    Sieht so aus als hättest du vergessen vorher die SA:MP Includes einzufügen:
    #include <a_samp>


    enum pB
    {
    Typ,
    Inhalt1,
    Inhalt2,
    Inhalt3,
    Inhalt4,
    Inhalt5,
    Inhalt6,
    Inhalt7,
    Inhalt8,
    Inhalt9,
    Ammo1,
    Ammo2,
    Ammo3,
    Ammo4,
    Ammo5,
    Ammo6,
    Ammo7,
    Ammo8,
    Ammo9,
    Geld,
    };
    new Koffer[MAX_PLAYERS][pB];


    Denn mit dem enum + der Variable ist nichts falsch.

    Die Länge vom String kann dann sowieso nicht über 31 sein, wenn es nur 32 Zellen groß ist.Du musst am Ende jedes Strings einen Null-Terminator haben,somit wäre die letzte Zelle damit belegt.
    Aber generell machst du es so wie du es eigentlich auch gezeigt hast:
    if(strlen(sIrgendeineVariable) > 16 ) { ... }
    Wenn der String länger als 16Zeichen ist, dann ...

    Vielleicht hast du ja SSCANF und ZCMD:
    COMMAND:setvehiclehp(playerid,params[]) {
    new
    Float:fHealth,
    iVehicle;
    if(sscanf(params,"df",iVehicle,fHealth)) {
    return SendClientMessage(playerid,COLOR_RED,"<usage> setvehiclehp [vehicleid] [Float:health]");
    }
    SetVehicleHealth(iVehicle,fHealth);
    SendClientMessage(playerid,COLOR_RED,"Fahrzeug Health gesetzt");
    return 1;
    }

    Hast du den Gamemode mal gründlich getestet?
    Du musst unbedingt bei OnPlayerDeath überprüfen ob es ein Selbstmord war ( killerid == INVALID_PLAYER_ID ) , sonst kommt es zu Fehlern.
    Spieler[ 65536 ][Kopfgeld] += 100; // BOOM

    Hier würde schon das Script stoppen.