Komischer Fehler,

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
  • Hallo Community
    Ich habe ein kleines problem hier, unzwar wenn ich ein Befehl eingebe, geht der zwar, aber da kommen immer diese Fehlermeldungen,
    Also zum beispiel:


    /base aufschließen
    dann wird die base auch aufgeschlossen ABER!
    Ingame wird das angezeigt, "Du darfst dieses Befehl nicht benutzen"
    oder "Du hast nicht den benötigten Rank dafür"
    könnte mir villt jemand helfen?...


    if(strcmp(cmd,"/base",true) == 0) {
    new SpielerName[MAX_PLAYER_NAME],tmp[256];
    GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp)) {
    SendClientMessage(playerid,COLOR_GREY,"FEHLER: /base [aufschließen/abschließen]");
    return 1;
    }
    if(strcmp(tmp,"aufschließen",true) == 0)
    {
    if(SpielerInFraktion(playerid,13)){//Yakuza Eingang
    if(SpielerInfo[playerid][pRank] >= 2){
    if(YAKUZAEINGANGAUF == 0){
    if(IsPlayerInRangeOfPoint(playerid, 2,-2624.6577,1412.7295,7.0938)){
    format(string, sizeof string,"%s hat die Eingangstür aufgeschlossen.",SpielerName);
    SendClientMessage(playerid,COLOR_SPECIALBLUE,string);
    YAKUZAEINGANGAUF = 1;
    YAKUZAEINGANGZU = 0;
    }else SendClientMessage(playerid,COLOR_GREY,"Du bist nicht an dem Eingang, deiner Fraktionsbasis");
    }else SendClientMessage(playerid,COLOR_GREY,"Deine Base ist bereits aufgeschlossen.");
    }else SendClientMessage(playerid,COLOR_GREY,"Du hast nicht den benötigten Rank dafür.");
    }else SendClientMessage(playerid,COLOR_GREY,"Du darfst dieses Befehl nicht benutzen.");
    if(SpielerInFraktion(playerid,14)){//LCN Eingang
    if(SpielerInfo[playerid][pRank] >= 2){
    if(LCNEINGANGAUF == 0){
    if(IsPlayerInRangeOfPoint(playerid,2,1492.6390,748.6784,11.0234)){
    format(string,sizeof string,"%s hat die Eingangstür aufgeschlossen.",SpielerName);
    SendClientMessage(playerid,COLOR_SPECIALBLUE,string);
    LCNEINGANGAUF = 1;
    LCNEINGANGZU = 0;
    }else SendClientMessage(playerid,COLOR_GREY,"Du bist nicht an dem Eingang, deiner Fraktionsbasis");
    }else SendClientMessage(playerid,COLOR_GREY,"Deine Base ist bereits aufgeschlossen.");
    }else SendClientMessage(playerid,COLOR_GREY,"Du hast nicht den benötigten Rank dafür.");
    }else SendClientMessage(playerid,COLOR_GREY,"Du darfst dieses Befehl nicht benutzen.");
    }
    else if(strcmp(tmp,"abschließen",true) == 0)
    {
    if(SpielerInFraktion(playerid,13)){//YAKUZA EINGANG
    if(SpielerInfo[playerid][pRank] >= 2){
    if(YAKUZAEINGANGZU == 0){
    if(IsPlayerInRangeOfPoint(playerid, 2, -2624.6577,1412.7295,7.0938)) {
    format(string, sizeof string,"%s hat die Eingangstür abgeschlossen.", SpielerName);
    SendClientMessage(playerid,COLOR_SPECIALBLUE,string);
    YAKUZAEINGANGZU = 1;
    YAKUZAEINGANGAUF = 0;
    }else SendClientMessage(playerid,COLOR_GREY,"Du bist nicht an dem Eingang, deiner Fraktionsbasis!");
    }else SendClientMessage(playerid,COLOR_GREY,"Deine Base ist bereits abgeschlossen.");
    }else SendClientMessage(playerid,COLOR_GREY,"Du hast nicht den benötigten Rank dafür.");
    }else SendClientMessage(playerid,COLOR_GREY,"Du darfst dieses Befehl nicht benutzen.");
    if(SpielerInFraktion(playerid,14)){ //LCN Eingang
    if(SpielerInfo[playerid][pRank] >= 2){
    if(LCNEINGANGZU == 0){
    if(IsPlayerInRangeOfPoint(playerid,2, 1492.6390,748.6784,11.0234)){
    format(string,sizeof string,"%s hat die Eingangstür abgeschlossen.", SpielerName);
    SendClientMessage(playerid, COLOR_SPECIALBLUE, string);
    LCNEINGANGZU = 1;
    LCNEINGANGAUF = 0;
    }else SendClientMessage(playerid,COLOR_GREY,"Du bist nicht an dem Eingang, deiner Fraktionsbasis!");
    }else SendClientMessage(playerid,COLOR_GREY,"Deine Base ist bereits abgeschlossen.");
    }else SendClientMessage(playerid,COLOR_GREY,"Du hast nicht den benötigten Rank dafür.");
    }else SendClientMessage(playerid,COLOR_GREY,"Du darfst dieses Befehl nicht benutzen.");







  • Meine Güte. wer programmiert den so. Da erkennt man ja gar nichts mehr.


    Ich hab dir das mal ausgebessert. Wenn ich das richtig verstanden habe, was der Code machen sollte, dann waren da paar Dinge an der falschen Stelle, was bei dem Durcheinander auch kein Wunder ist.


    Code:

    Spoiler anzeigen
    if(strcmp(cmd,"/base",true) == 0)
    {
    new SpielerName[MAX_PLAYER_NAME],tmp[256];
    GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid,COLOR_GREY,"FEHLER: /base [aufschließen/abschließen]");
    return 1;
    }
    if(strcmp(tmp,"aufschließen",true) == 0)
    {
    if(SpielerInFraktion(playerid,13))
    {
    //Yakuza Eingang
    if(SpielerInfo[playerid][pRank] >= 2)
    {
    if(YAKUZAEINGANGAUF == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid, 2,-2624.6577,1412.7295,7.0938))
    {
    format(string, sizeof string,"%s hat die Eingangstür aufgeschlossen.",SpielerName);
    SendClientMessage(playerid,COLOR_SPECIALBLUE,string);
    YAKUZAEINGANGAUF = 1;
    YAKUZAEINGANGZU = 0;
    }
    else SendClientMessage(playerid,COLOR_GREY,"Du bist nicht an dem Eingang, deiner Fraktionsbasis");
    }
    else SendClientMessage(playerid,COLOR_GREY,"Deine Base ist bereits aufgeschlossen.");
    }
    else SendClientMessage(playerid,COLOR_GREY,"Du hast nicht den benötigten Rank dafür.");
    }
    else if(SpielerInFraktion(playerid,14))
    {
    //LCN Eingang
    if(SpielerInfo[playerid][pRank] >= 2)
    {
    if(LCNEINGANGAUF == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid,2,1492.6390,748.6784,11.0234))
    {
    format(string,sizeof string,"%s hat die Eingangstür aufgeschlossen.",SpielerName);
    SendClientMessage(playerid,COLOR_SPECIALBLUE,string);
    LCNEINGANGAUF = 1;
    LCNEINGANGZU = 0;
    }
    else SendClientMessage(playerid,COLOR_GREY,"Du bist nicht an dem Eingang, deiner Fraktionsbasis");
    }
    else SendClientMessage(playerid,COLOR_GREY,"Deine Base ist bereits aufgeschlossen.");
    }
    else SendClientMessage(playerid,COLOR_GREY,"Du hast nicht den benötigten Rank dafür.");
    }
    else SendClientMessage(playerid,COLOR_GREY,"Du darfst dieses Befehl nicht benutzen.");
    }
    else if(strcmp(tmp,"abschließen",true) == 0)
    {
    if(SpielerInFraktion(playerid,13))
    {
    //YAKUZA EINGANG
    if(SpielerInfo[playerid][pRank] >= 2)
    {
    if(YAKUZAEINGANGZU == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid, 2, -2624.6577,1412.7295,7.0938))
    {
    format(string, sizeof string,"%s hat die Eingangstür abgeschlossen.", SpielerName);
    SendClientMessage(playerid,COLOR_SPECIALBLUE,string);
    YAKUZAEINGANGZU = 1;
    YAKUZAEINGANGAUF = 0;
    }
    else SendClientMessage(playerid,COLOR_GREY,"Du bist nicht an dem Eingang, deiner Fraktionsbasis!");
    }
    else SendClientMessage(playerid,COLOR_GREY,"Deine Base ist bereits abgeschlossen.");
    }
    else SendClientMessage(playerid,COLOR_GREY,"Du hast nicht den benötigten Rank dafür.");
    }
    else if(SpielerInFraktion(playerid,14))
    {
    //LCN Eingang
    if(SpielerInfo[playerid][pRank] >= 2)
    {
    if(LCNEINGANGZU == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid,2, 1492.6390,748.6784,11.0234))
    {
    format(string,sizeof string,"%s hat die Eingangstür abgeschlossen.", SpielerName);
    SendClientMessage(playerid, COLOR_SPECIALBLUE, string);
    LCNEINGANGZU = 1;
    LCNEINGANGAUF = 0;
    }
    else SendClientMessage(playerid,COLOR_GREY,"Du bist nicht an dem Eingang, deiner Fraktionsbasis!");
    }
    else SendClientMessage(playerid,COLOR_GREY,"Deine Base ist bereits abgeschlossen.");
    }
    else SendClientMessage(playerid,COLOR_GREY,"Du hast nicht den benötigten Rank dafür.");
    }
    else SendClientMessage(playerid,COLOR_GREY,"Du darfst dieses Befehl nicht benutzen.");
    }
    return 1;
    }



    Zwecks ocmd: Es ist völliger Schwachsinn zu sagen, dass man damit übersichtlicher scripten kann. Der Code würde mit ocmd, bis auf die erste Zeile, fast IDENTISCH aussehen!! :pinch:



  • Ich mags auch nicht so zu scripten Jeffry aber mir wurde gesagt wenn man es so scriptet das es ressourcerschonend ist ;o

  • Ich mags auch nicht so zu scripten Jeffry aber mir wurde gesagt wenn man es so scriptet das es ressourcerschonend ist ;o


    Absoluter Müll. Dem Compiler und Server ist es völlig wurscht wie viele Zeilenumbrüche du im Code hast. Du kannst auch 10 zwischen jede Zeile machen, das macht keinen Unterschied.
    Der, der dir das erzählt hat, hat dir entweder einen Streich gespielt, oder hat wirklich keine Ahnung. ;)


  • Absoluter Müll. Dem Compiler und Server ist es völlig wurscht wie viele Zeilenumbrüche du im Code hast. Du kannst auch 10 zwischen jede Zeile machen, das macht keinen Unterschied.
    Der, der dir das erzählt hat, hat dir entweder einen Streich gespielt, oder hat wirklich keine Ahnung. ;)

    Ich glaube worauf er hinaus ist, ist ocmd. Da ich dich ja auch mal wegen sscanf gefragt hatte und du glaube ein schlechtes Bild über sscanf hast.

  • Ich glaube worauf er hinaus ist, ist ocmd. Da ich dich ja auch mal wegen sscanf gefragt hatte und du glaube ein schlechtes Bild über sscanf hast.


    Meines Wissens nach ist OCMD Ressourcenschonender, eigentlich alle (seriösen) Command Prozessoren sind schonender (wobei wir hier von Bruch-Millisekunden reden).


    Ja, stimmt. Ich habe ein schlechtes Bild von sscanf und das zurecht. Das hier aufzuführen würde aber zu lange dauern. Es muss jeder für sich selbst entscheiden es zu benutzen oder nicht. Ich rate davon ab.
    Aber kommen wir nicht vom Thema ab.


    Was er schlichtweg meinte, war, dass dieses gequetschte Zeugs schonender sei, und das stimmt nicht. Und schon zweimal nicht schonender für den, der den Code liest.


    Sigi: Du sagst du magst es nicht. Du bist doch der Herr des Scripts, mach es doch so wie du es magst, und nicht so wie es dir einer sagt, der zudem keine Ahnung hat. ;)




  • Hei, wenn ich davor "else" mache also vor dem if kommen dann errors...