GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Szkript kérések => A témát indította: Jim Toretto - 2014. Június 05. - 19:06:17

Cím: Parancs átírása
Írta: Jim Toretto - 2014. Június 05. - 19:06:17
Sziasztok!
Sokat próbálkoztam, de sajnos nem igen sikerül :(
Azt szeretném megoldani hogy ez a parancs ne CMD:szr legyen hanem:   if(strcmp(cmd, \"/szr\", true) == 0)
Akár hányszor próbálgattam átírni mindig valamibe belekötött :(
Elõre is köszönöm!
Script:
 
CMD:szr(playerid, params[])
{
        new nev[MAX_PLAYER_NAME], szoveg[256], string[256];
        if(PlayerInfo[playerid][munka] == 0) return SendClientMessage(playerid, PIROS, \"Nem használhatod ezt a parancsot!\");
        if(sscanf(params, \"s\", szoveg)) return SendClientMessage(playerid, PIROS, \"Használat: /szr [szöveg]\");
        GetPlayerName(playerid, nev, sizeof(nev));
        if(PlayerInfo[playerid][munka] == SZERELO) format(string, sizeof(string), \"Szerelõ,{28ad00}%s(%s): (({f8faf7}%s))\", nev, Munkarang(playerid), szoveg);
 
        for(new i; i <MAX_PLAYERS; i++)
        {
            if(IsPlayerConnected(i))
            {
                    if(PlayerInfo[playerid][munka] == PlayerInfo[munka])
                        {
                        SendClientMessage(i, 0xffffffAA, string);
                        if(hang[playerid] == true) PlayerPlaySound(playerid, 1190, 0, 0, 0);
                        }
            }
        }
        return 1;
}
Cím: Parancs átírása
Írta: KovaNovik - 2014. Június 06. - 14:49:23
OPCT-nél nincs alapból darabolva paraméter, azért nem mûködik úgy. Ha már van sscanfod, nem lesz nehéz dolgod.
 
new cmd, params[144];
sscanf(cmdtext, \"s[32]S()[32]\", cmd, params);
if(!strcmp(\"/szr\", cmd)) {
if(!strlen(params)) //Nincs beírva paraméter.
//Itt már darabolhatod a PARAMÉTEREKET tovább sscanffal.
return 1;
}

 
Sok szerencsét, további jó scriptelést! :thumbsup:
U.i.: a zcmd sokkal gyorsabb lesz, azt javaslom, hogy használd.
Cím: Parancs átírása
Írta: Flash - 2014. Június 06. - 14:59:28
Gondolom azért akarsz egy alap parancsfeldolgozó-t használni mert a ZCMD-t nem tudtad kitanulni sscanf-al.
Annyi a hiba a scriptben hogy ez helyett:
 
if(sscanf(params, \"s\", szoveg))

 
így:
 
if(sscanf(params, \"s[256]\", szoveg))
Cím: Parancs átírása
Írta: KovaNovik - 2014. Június 06. - 15:09:14
Nem hinném. Az sscanf attól mûködik (32-nek veszi), csak warningot dob.
Cím: Parancs átírása
Írta: Jim Toretto - 2014. Június 05. - 19:06:17
Sziasztok!
Sokat próbálkoztam, de sajnos nem igen sikerül :(
Azt szeretném megoldani hogy ez a parancs ne CMD:szr legyen hanem:   if(strcmp(cmd, \"/szr\", true) == 0)
Akár hányszor próbálgattam átírni mindig valamibe belekötött :(
Elõre is köszönöm!
Script:
 
CMD:szr(playerid, params[])
{
        new nev[MAX_PLAYER_NAME], szoveg[256], string[256];
        if(PlayerInfo[playerid][munka] == 0) return SendClientMessage(playerid, PIROS, \"Nem használhatod ezt a parancsot!\");
        if(sscanf(params, \"s\", szoveg)) return SendClientMessage(playerid, PIROS, \"Használat: /szr [szöveg]\");
        GetPlayerName(playerid, nev, sizeof(nev));
        if(PlayerInfo[playerid][munka] == SZERELO) format(string, sizeof(string), \"Szerelõ,{28ad00}%s(%s): (({f8faf7}%s))\", nev, Munkarang(playerid), szoveg);
 
        for(new i; i <MAX_PLAYERS; i++)
        {
            if(IsPlayerConnected(i))
            {
                    if(PlayerInfo[playerid][munka] == PlayerInfo[munka])
                        {
                        SendClientMessage(i, 0xffffffAA, string);
                        if(hang[playerid] == true) PlayerPlaySound(playerid, 1190, 0, 0, 0);
                        }
            }
        }
        return 1;
}
Cím: Parancs átírása
Írta: KovaNovik - 2014. Június 06. - 14:49:23
OPCT-nél nincs alapból darabolva paraméter, azért nem mûködik úgy. Ha már van sscanfod, nem lesz nehéz dolgod.
 
new cmd, params[144];
sscanf(cmdtext, \"s[32]S()[32]\", cmd, params);
if(!strcmp(\"/szr\", cmd)) {
if(!strlen(params)) //Nincs beírva paraméter.
//Itt már darabolhatod a PARAMÉTEREKET tovább sscanffal.
return 1;
}

 
Sok szerencsét, további jó scriptelést! :thumbsup:
U.i.: a zcmd sokkal gyorsabb lesz, azt javaslom, hogy használd.
Cím: Parancs átírása
Írta: Flash - 2014. Június 06. - 14:59:28
Gondolom azért akarsz egy alap parancsfeldolgozó-t használni mert a ZCMD-t nem tudtad kitanulni sscanf-al.
Annyi a hiba a scriptben hogy ez helyett:
 
if(sscanf(params, \"s\", szoveg))

 
így:
 
if(sscanf(params, \"s[256]\", szoveg))
Cím: Parancs átírása
Írta: KovaNovik - 2014. Június 06. - 15:09:14
Nem hinném. Az sscanf attól mûködik (32-nek veszi), csak warningot dob.