Szerző Téma: strcmp hiba  (Megtekintve 1635 alkalommal)

strcmp hiba
« Dátum: 2016. január 29. - 16:22:25 »
0 Show voters
Sziasztok! RP szerveremben írtam egy leader parancsot, amiben vannak paraméterek (felvesz,kirug,rang>rangid)
De lenne egy hiba, néha mikor például beírom a felvesz és egy ID-t akkor a kirúgás paramétert futtatja le.
A rang paraméter meg nem is megy.
 

CMD:leader(playerid,params[])
{
if(IsPlayerConnected(playerid))
{
    if(PlayerInfo[playerid][Frakcioleader] == 1)
    {
        new parameter[32],id;
        new string[128];
        if(sscanf(params, \"s[32]u\",parameter,id)) return SendClientMessage(playerid,WHITE,\"(( Használat: /leader [Paraméter] [JátékosID] ))\");
        if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid,ORANGE,\"(( Nincs ilyen játékos! ))\");
        {
            GetPlayerName(playerid,nev,sizeof(nev));
            GetPlayerName(id,neve,sizeof(neve));
      if(strcmp(parameter, \"felvesz\",true) == 0)
      {
          if(PlayerInfo[id][Frakcio] == 0 && PlayerInfo[id][Frakcioleader] == 0)
          {
              PlayerInfo[id][Frakcio] = PlayerInfo[playerid][Frakcio];
             
              format(string,sizeof(string),\"(( Felvetted %s-t a munkahelyedre! ))\",neve);
              SendClientMessage(playerid,GREEN,string);
              format(string,sizeof(string),\"(( %s felvett egy munkahelyre! ))\",neve);
              SendClientMessage(id,GREEN,string);
          }
      }
      if(strcmp(parameter, \"kirug\",true) == 0)
      {
         if(PlayerInfo[id][Frakcio] != 0)
          {
              if(PlayerInfo[id][Frakcio] == PlayerInfo[playerid][Frakcio])
              {
                  PlayerInfo[id][Frakcio] = 0;
                  PlayerInfo[id][Frakcioleader] = 0;
                  PlayerInfo[id][Rang] = 0;
                 
                  format(string,sizeof(string),\"(( Kirúgtad %s-t a munkahelyéről! ))\",neve);
                 SendClientMessage(playerid,GREEN,string);
                 format(string,sizeof(string),\"(( %s kirúgott a munkahelyedről!! ))\",neve);
                 SendClientMessage(playerid,WHITE,string);
              }
          }
      }
      if(strcmp(parameter, \"rang\",true) == 0)
      {
                if(PlayerInfo[id][Frakcio] != 0)
          {
              if(PlayerInfo[id][Frakcio] == PlayerInfo[playerid][Frakcio])
              {
                  new rang;
                            if(sscanf(params, \"i\",rang)) return SendClientMessage(playerid,WHITE,\"(( Használat: /leader [Paraméter] [JátékosID] [Rendfokozat(rang paraméter esetében)] ))\");
                            {
                                if(PlayerInfo[id][Rang] > rang)
                                {
                                    PlayerInfo[id][Rang] = rang;
                     SendClientMessage(id,CYAN,\"(( Főnököd előléptetett! ))\");
                                }
                                else if(PlayerInfo[id][Rang] < rang)
                                {
                                    PlayerInfo[id][Rang] = rang;
                                    SendClientMessage(id,CYAN,\"(( Főnököd lefokozott! ))\");
                                }
                            }
              }
          }
      }
        }
    }
    else SendClientMessage(playerid,WHITE,\"Ismeretlen parancs!\");
}
return 1;
}
« Utoljára szerkesztve: 2016. január 29. - 16:47:01 írta Zippanto »

Nem elérhető BVZS

  • 487
    • Profil megtekintése
strcmp hiba
« Válasz #1 Dátum: 2016. január 29. - 16:28:17 »
0 Show voters
Beszurnad a parancsot? (code tag!!)

strcmp hiba
« Válasz #2 Dátum: 2016. január 29. - 16:47:10 »
0 Show voters
Bocsi kimaradt.

Nem elérhető whadez

  • 719
  • DEFEATER
    • Profil megtekintése
strcmp hiba
« Válasz #3 Dátum: 2016. január 29. - 17:17:40 »
0 Show voters
if(strcmp(parameter, \"felvesz\",true) == 0) Írd át ->> if(!strcmp(parameter, \"felvesz\",true) == 0)

 
És innentől kezdve jó lesz.
Szint úgy az összes strcmp elé írd oda a felkiáltó jelet.
strcmp = Nem egyezik meg
!strcmp = Megegyezik
Ergo -> Ha nem egyezik meg paraméter értéke \'felvesz\'-el, akkor tovább lép, és azért futtatja le a kirúgást például.
 
#define egyezik(%1) (!strcmp(%1, true))

 
Ha ezt a definíciót használod, akkor úgy is tudod a parancsaidat kiépíteni hogy
if(egyezik(parameter, \"felvesz\")) { return true; }

 
És nem kell az strcmp-vel, meg a case sentivitytivel szenvedni (utána írni a true-t / false-t).
Remélem segítettem.

strcmp hiba
« Válasz #4 Dátum: 2016. január 29. - 20:14:40 »
0 Show voters
Még 1 kis probléma! Ha beírom h /leader rang 1 10 (/leader [paraméter] [id] [rang])
Akkor nem történik semmi.
 
if(egyezik(parameter,\"rang\"))
      {
                if(PlayerInfo[id][Frakcio] != 0)
          {
              if(PlayerInfo[id][Frakcio] == PlayerInfo[playerid][Frakcio])
              {
                  new rang;
                            if(sscanf(params, \"i\",rang)) return SendClientMessage(playerid,WHITE,\"(( Használat: /leader [Paraméter] [JátékosID] [Rendfokozat(rang paraméter esetében)] ))\");
                            {
                                PlayerInfo[id][Rang] = rang;
                                SendClientMessage(id,CYAN,\"(( Főnököd új rangot adott! ))\");
                                SendClientMessage(playerid,CYAN,\"(( Új rangot adtál az illetőnek! ))\");
                            }
              }
          }
      }

Nem elérhető whadez

  • 719
  • DEFEATER
    • Profil megtekintése
strcmp hiba
« Válasz #5 Dátum: 2016. január 29. - 20:57:01 »
0 Show voters
Így próbáld meg, legfrissebb sscanf2-vel, és jó lesz!  :innocent:
 

CMD:frakcio(playerid, params[])
{
new kibe[64];
if(sscanf(params, \"s[64]{}\",kibe))
      return SCM(playerid, HEX_LRED, \"Használat: /frakció [rangnév | setskin | fizetések | setfizu | setrank | dutypos]\");
if(egyezik(kibe, \"setrank\"))
{
   if(!pInfo[playerid][pLeader])
      return SCM(playerid, HEX_LRED, \"Csak a frakció vezető használhatja ezt a parancsot!\");
   new targetid,rang;
   if(sscanf(params, \"{s[64]}ud\", targetid,rang))
      return SFM(playerid, HEX_LRED, \"Használat: /frakció setrank [Karakter ID / Karakter Név] [1 - %d]\", FrakcioInfo[pInfo[playerid][pMember]][MaxRang]);   
   }

 

Dupla hozzászólás automatikusan összefûzve. ( 2016. január 29. - 21:01:41 )

Viszont ha nem megy, akkor egyszeri alkalomkor tudok segíteni a script javításán, ha dobsz egy fb linket.
« Utoljára szerkesztve: 2016. január 29. - 21:01:42 írta WHADEZ »

strcmp hiba
« Válasz #6 Dátum: 2016. január 29. - 21:36:02 »
0 Show voters
Münködik!!! Ezer hála :D


Köszi szépen!  :angel: :thumbsup: :thumbsup:

Nem elérhető anGeL

  • Adminisztrátor
  • 2158
    • Profil megtekintése
strcmp hiba
« Válasz #7 Dátum: 2016. február 02. - 06:41:11 »
0 Show voters
Keresre nyitva

strcmp hiba
« Válasz #8 Dátum: 2016. február 02. - 06:44:00 »
0 Show voters
Akadt még egy kis hiba :S. Ugye eddig csak rangon belül volt sscanf függvény de most alosztályt is írtam hozzá de semmi se történik ha beírom helyesen az adatokat :(.
 
CMD:leader(playerid,params[])
{
if(IsPlayerConnected(playerid))
{
    if(PlayerInfo[playerid][Frakcioleader] == 1 || PlayerInfo[playerid][Frakcioleader] == 2 || PlayerInfo[playerid][Frakcioleader] == 3)
    {
        new parameter[64];
        new id;
        new string[128];
        if(sscanf(params, \"s[64]{}\",parameter)) return SendClientMessage(playerid,WHITE,\"(( Használat: /leader [id/név] [paraméter] ))\");
        if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid,ORANGE,\"(( Nincs ilyen játékos! ))\");
        {
            GetPlayerName(playerid,nev,sizeof(nev));
            GetPlayerName(id,neve,sizeof(neve));
           
      if(egyezik(parameter,\"felvesz\"))
      {
                if(PlayerInfo[id][Frakcio] == 0 && PlayerInfo[id][Frakcioleader] == 0)
          {
                    if(sscanf(params, \"{s[64]}u\",id)) return SendClientMessage(playerid,WHITE,\"(( Használat: /leader felvesz [id/név] ))\");
                   {
                 PlayerInfo[id][Frakcio] = PlayerInfo[playerid][Frakcio];
                PlayerInfo[id][Alosztaly] = 0;
                 PlayerInfo[id][Rang] = 1;
                 format(string,sizeof(string),\"(( Felvetted %s-t a munkahelyedre! ))\",neve);
                 SendClientMessage(playerid,GREEN,string);
                 format(string,sizeof(string),\"(( %s felvett egy munkahelyre! ))\",nev);
                 SendClientMessage(id,GREEN,string);
            }
          }
          else SendClientMessage(playerid,ORANGE,\"(( A játékosnak már van munkája! ))\");
      }
      if(egyezik(parameter,\"kirug\"))
      {
            if(PlayerInfo[id][Frakcio] != 0)
             {
                 if(PlayerInfo[id][Frakcio] == PlayerInfo[playerid][Frakcio])
                 {
                     if(sscanf(params, \"{s[64]}u\",id)) return SendClientMessage(playerid,WHITE,\"(( Használat: /leader kirug [id/név] ))\");
                   {
                        PlayerInfo[id][Frakcio] = 0;
                        PlayerInfo[id][Frakcioleader] = 0;
                        PlayerInfo[id][Rang] = 0;
                        format(string,sizeof(string),\"(( Kirúgtad %s-t a munkahelyéről! ))\",neve);
                       SendClientMessage(playerid,GREEN,string);
                       format(string,sizeof(string),\"(( %s kirúgott a munkahelyedről!! ))\",nev);
                       SendClientMessage(playerid,WHITE,string);
                  }
                 }
             }
      }
      if(egyezik(parameter,\"rang\"))
      {
                if(PlayerInfo[id][Frakcio] != 0)
             {
                 if(PlayerInfo[id][Frakcio] == PlayerInfo[playerid][Frakcio])
                 {
                        new rang;
                   if(sscanf(params, \"{s[64]}ud\",id,rang)) return SendClientMessage(playerid,WHITE,\"(( Használat: /leader rang [id/név] [rang] ))\");
                  {
                      PlayerInfo[id][Rang] = rang;
                           SendClientMessage(playerid,CYAN,\"(( Új rangot adtál az illetőnek! ))\");
                         format(string,sizeof(string),\"(( Főnököd új rangot adott! (%s) ))\",FKRangi(id));
                            SendClientMessage(id,CYAN,string);
                  }
                 }
             }
      }
      if(egyezik(parameter,\"alosztaly\"))
      {
                if(PlayerInfo[id][Frakcio] != 0)
             {
                 if(PlayerInfo[id][Frakcio] == PlayerInfo[playerid][Frakcio])
                 {
                     new alosztaly;
                   if(sscanf(params, \"{s[64]}ud\",id,alosztaly)) return SendClientMessage(playerid,WHITE,\"(( Használat: /leader alosztaly [id/név] [alosztály] ))\");
                   {
                         PlayerInfo[id][Alosztaly] = alosztaly;
                         format(string,sizeof(string),\"(( %s-t bevetted a(z) %s-ba/be! ))\");
                         SendClientMessage(playerid,CYAN,string);
                        format(string,sizeof(string),\"(( Főnököd bevett a(z) %s-ba/be! ))\",AlosztalyNevI(id));
                         SendClientMessage(id,CYAN,string);
                  }
                 }
                 else SendClientMessage(playerid,ORANGE,\"(( A játékos nem ebben a frakcióban van! ))\");
             }
              else SendClientMessage(playerid,ORANGE,\"(( A játékos nincs frakcióban! ))\");
      }
        }
    }
    else SendClientMessage(playerid,WHITE,\"Ismeretlen parancs!\");
}
return 1;
}
« Utoljára szerkesztve: 2016. február 05. - 21:09:33 írta Zippanto »

strcmp hiba
« Válasz #9 Dátum: 2016. február 14. - 15:23:16 »
0 Show voters


Téma megoldva!
 


 

SimplePortal 2.3.7 © 2008-2024, SimplePortal