-
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;
}
-
Beszurnad a parancsot? (code tag!!)
-
Bocsi kimaradt.
-
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.
-
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! ))\");
}
}
}
}
-
Í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.
-
Münködik!!! Ezer hála :D
Köszi szépen! :angel: :thumbsup: :thumbsup:
-
Keresre nyitva
-
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;
}
-
Téma megoldva!