Beiträge von Kaliber

    Du hast eine { vergessen, schreibe es so:


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate==PLAYER_STATE_DRIVER)
    {
    if(GetPVarInt(playerid,"Carlienzs")==0)
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,COLOR_RED,"Du hast kein Führerschein.");
    }
    else if(GetPVarInt(playerid,"Carlienzs")==1)
    {
    SendClientMessage(playerid,COLOR_RED,"/motor um den Motor zustarten!");
    }
    }
    return 1;
    }


    mfg. :thumbup:

    Naja, sehr simpel und paar kleine Verbesserungen hätte ich:


    1. Lösche mal alle überflüssigen Callbacks und oben nimm das mit dem #if defined Filterscript raus, das ist sinnlos, denn es ist ein Filterscript also scripte es auch einfach so ^^


    2. Bei deinen #defines fängt man bei 0 an ;)


    3. Die 5 news da hättest du in eine Zeile packen können :)


    4. Nimm mal das OnGameModeInit, OnGameModeExit und OnPlayerRequest raus (das braucht man nur für ein Gamemode nicht für ein FS !)


    5. Deine Commands anpassen z.B. so:
    if (strcmp("/cvote", cmdtext, true, 10) == 0)
    in
    if (strcmp("/cvote", cmdtext, true, 6) == 0)


    Sind nur ein paar Tipps, nicht böse gemeint :)


    mfg. :thumbup:

    Das musst du auch so schreiben ^^


    ocmd:freeze(playerid,params[])
    {
    new pID,string[128],string2[128];
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,ROT,"Benutzung: /freeze [ID]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Der angegebene Spieler ist nicht connected!");
    if(GetPVarInt(playerid,"AdminLevel")==0) return SendClientMessage(playerid,ROT,"Du bist kein Admin !");
    TogglePlayerControllable(pID,0);
    format(string,sizeof(string),"Du hast den Spieler %s gefreezed.",SpielerName(pID));
    format(string2,sizeof(string2),"Du wurdest vom Spieler %s gefreezed!",SpielerName(playerid));
    SendClientMessage(playerid,GRÜN,string);
    SendClientMessage(pID,ROT2,string2);
    return 1;
    }


    mfg. :thumbup:

    1. Hab nicht drauf geachtet.
    2. Wieso ist es überflüssig?
    3. Es ist ja ein String. Ich dachte string darf nur 64, 128 .... bis 1024 gehen. So hats mir mal jemand gesagt :)


    Lg Sonderzeichen


    2. Weil er sich dann wundert warum er Errors bekommt :rolleyes:


    3. Nein, ein String kann von 0 bis unendlich gehen ^^


    Meistens verwendet man aber diese Reihe:
    2,4,8,16,32,64,128,256/255,1024,2048,4096 //höher braucht man es eig nicht


    mfg. :thumbup:

    Du musst das so schreiben, und bitte verschiebe nicht die if-Abfragen und die Zeilen wo die Variablen deklariert werden, sonst funktioniert das nicht ! :pinch:


    if(strcmp(cmd, "/buyfuel", true) == 0)
    {
    if(PlayerInfo[playerid][pJob] != 22) return SendClientMessage(playerid,WHITE,"Du bist kein Trucker");
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 453) return SendClientMessage(playerid, COLOR_GRAD1, "Du kannst nur mit einem Roadtrain Benzin kaufen!");
    if(!IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid))) return SendClientMessage(playerid,WHITE,"Dieser Truck hat keinen Anhänger !");
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GOLD, "Benutzung: /buyfuel [Anzahl]");
    new Anzahl = strval(tmp), sum = (PlayerInfo[playerid][pTrucker] + Anzahl);
    if(GetPlayerMoney(playerid) < (Anzahl*100)) return SendClientMessage(playerid,WHITE,"Du besitzt zu wenig Geld für so viel Benzin !");
    if(sum >= 2500) return SendClientMessage(playerid,WHITE,"Du hast schon 2500 Liter Benzin!");
    PlayerInfo[playerid][pTrucker] += Anzahl;
    new stringtrucker[128];
    format(stringtrucker,sizeof(stringtrucker),"Du hast %d Liter Benzin gekauft! Du kannst dir nun eine Tankstelle aussuchen die Benzin benötigt!",Anzahl);
    SendClientMessage(playerid,WHITE,stringtrucker);
    GivePlayerMoney(playerid, -(Anzahl*100));
    return 1;
    }


    mfg. :thumbup:

    Kaliber
    Es hätte auch so funktioniert wenn er das S bei der sscanf abfrage entfernt hätte, oder?


    Nein, da er playerid verwendet hatte bei SetPVarInt und nicht pID ;)



    2 Sachen dazu:
    1. Dein C&P da drinnen ist überflüssig :rolleyes:
    2.
    playername[128] //128 ?! dieser Array ist viel zu groß, 24 reicht vollkommen
    Also schreibe für die Variable der Namen playername[24] und pidname[24] ;)


    mfg. :thumbup:

    COMMAND:givecarlienzs(playerid,params[])
    {
    new pID;
    if(Spieler[playerid][Member] != 8) return SendClientMessage(playerid,COLOR_RED,"Du bist kein Fahrlehrer !");
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,COLOR_RED,"Benutzung: /givelicense [ID]");
    if(GetPlayerMoney(pID) < 8000) return SendClientMessage(playerid,COLOR_RED,"Dieser Spieler besitzt keine 8.000$ !");
    SetPVarInt(pID,"Carlienzs",1);
    GivePlayerMoney(pID, -8000);
    return 1;
    }


    Das musst du so machen ;)


    mfg. :thumbup:

    Das wusste ich ja aber ich definier es so das man das nur mit nem Truck machen kann jedoch weiss ich zz die Roadtrainid nicht da das wiki Down/Blocked ist?


    Die musst du doch gar nicht wissen 8|


    Einfach oben in deinem Command einfügen:


    if(!IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid))) return SendClientMessage(playerid,rot,"Dieser Truck hat keinen Anhänger !");


    mfg. :thumbup:

    jop hilft alles nix..
    und auf linux startet er deswegen such ich jetzt ein anderen streamer


    Du hast das noch nicht so ganz verstanden, die Fehlermeldung kommt nicht wegen dem Streamer, sondern wegen deiner .dll Datei die da neben deiner server.exe liegt, lösche die bitte mal und zeige mir die Fehlermeldung die da kommt ;)


    Zusammenfassung: Bitte lösche alle .dll und .so Dateien, außer sie liegen in dem Ordner plugins ;)


    Und zeige mir die Fehlermeldung...


    mfg. :thumbup:

    Kaliber ich kaoiers immernoch nicht aber egal Danke


    Ist doch ganz simpel, schau mal her:


    new Anzahl; //new deklariert eine neue Variable (Anzahl hat den Wert 0)


    so jetzt wenn wir es so machen würden:
    Anzahl = 1;//Wäre Anzahl 1
    aber wir machen das:
    Anzahl = strval(tmp);//tmp = eine Variable in der der Text steht, was der User eingegeben hat (/buyfuel [ANZAHL]) diese Anzahl steht in tmp und strval holt diese Zahl aus der Variable


    Nochmal auf deinen Code bezogen:


    if(strcmp(cmd, "/buyfuel", true) == 0)
    {
    if(PlayerInfo[playerid][pJob] != 22) return SendClientMessage(playerid,WHITE,"Du bist kein Bootsmann");
    if(PlayerInfo[playerid][pTrucker] >= 2500) return SendClientMessage(playerid,WHITE,"Du hast schon 2500 Waren");
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 453) return SendClientMessage(playerid, COLOR_GRAD1, "Du kannst nur mit einem Roadtrain Benzin kaufen!");
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GOLD, "Benutzung: /buyfuel [Anzahl]");
    new Anzahl = strval(tmp);
    if(GetPlayerMoney(playerid) < (Anzahl*500)) return SendClientMessage(playerid,WHITE,"Du besitzt zu wenig Geld für so viele Waren !");//Wenn er zu wenig Geld hat
    PlayerInfo[playerid][pTrucker] += Anzahl;
    new str[128];
    format(str, 128,"Du hast %d Waren gekauft und besitzt schon %d Waren !",Anzahl,PlayerInfo[playerid][pTrucker]);
    SendClientMessage(playerid,WHITE,str);
    GivePlayerMoney(playerid, -(Anzahl*500));//das hast du vergessen, er soll ja schließlich geld verlieren
    return 1;
    }


    mfg. :thumbup:

    So sollte das aussehen:


    if(strcmp(cmd, "/buyfuel", true) == 0)
    {
    if(PlayerInfo[playerid][pJob] != 22) return SendClientMessage(playerid,WHITE,"Du bist kein Bootsmann");
    if(PlayerInfo[playerid][pTrucker] >= 2500) return SendClientMessage(playerid,WHITE,"Du hast schon 2500 Waren");
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 453) return SendClientMessage(playerid, COLOR_GRAD1, "Du kannst nur mit einem Roadtrain Benzin kaufen!");
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GOLD, "Benutzung: /buyfuel [Anzahl]");
    new Anzahl = strval(tmp);
    PlayerInfo[playerid][pTrucker] += Anzahl;
    return 1;
    }


    mfg. :thumbup: