[Pedido] Alguem converter esse cmd ? (sou novato dms)
#1

Alguem converte esse cmd para strcmp ? sou novato no pawno rs.. desculpem
PHP код:
CMD:challenge(playeridparams[])
{
    new 
rplayerbet;
    if(!
sscanf(params,"ui",rplayer,bet))
    {
        if(
IsPlayerConnected(rplayer) && !IsPlayerNPC(playerid))
        {
        if(
IsPlayerInAnyVehicle(rplayer))
        {
        if(
IsPlayerInAnyVehicle(playerid))
        {
        if(
bet <= 50000 && bet >= 5000)
        {
        if(
GetPlayerMoney(playerid) >= bet)
        {
        if(
GetPVarInt(rplayer,"LRRequest") == -1)
        {
        if(
GetPVarInt(rplayer,"LR") == -1)
        {
        new 
Float:X,Float:Y,Float:Z;
        
GetPlayerPos(playerid,X,Y,Z);
        if(
IsPlayerInRangeOfPoint(rplayer,16,X,Y,Z))
        {
        new 
msg[24];
        
format(msg,24,"Bet: %i $",bet);
        
SendClientMessage(playerid,COLOR_LIGHTBLUE,msg);
        
SetPVarInt(playerid,"bet",bet);
        
SetPVarInt(rplayer,"bet",bet);
        
SetPVarInt(rplayer"LRRequest"playerid);
        
SetPVarInt(playerid"LRRequest"rplayer);
        new 
info[160], pname[MAX_PLAYER_NAME];
        
GetPlayerName(playerid,pname,sizeof(pname));
        
format(info,160,"%s is asking you to start a challenege race\n with a bet of $%i, do you want to do this?",pname,bet);
        
ShowPlayerDialog(rplayer1337DIALOG_STYLE_MSGBOX,"Challenge Race:",info,"Ofcouse","Nope");
        
TogglePlayerControllable(playerid,false);
        } else 
SendClientMessage(playeridCOLOR_BRIGHTRED"You should be near to that player.");
        } else 
SendClientMessage(playeridCOLOR_BRIGHTRED"Player is currently racing.");
        } else 
SendClientMessage(playeridCOLOR_BRIGHTRED"Player is already invited by someone.");
        } else 
SendClientMessage(playeridCOLOR_BRIGHTRED"You don't have that much money..");
        } else 
SendClientMessage(playeridCOLOR_RED"Min Amount: $5,000 Max Amount: $50,000");
        } else 
SendClientMessage(playeridCOLOR_BRIGHTRED"You need a vehicle to challenge someone.");
        } else 
SendClientMessage(playeridCOLOR_BRIGHTRED"The player you want to challenge doesn't have a vehicle.");
        } else 
SendClientMessage(playeridCOLOR_RED"Player is not connected.");
    } else 
SendClientMessage(playeridCOLOR_RED"Usage: /challenge [Player ID] [Bet Amount]");
    return 
true;

Quando tentei deu isso ..
(8701) : error 017: undefined symbol "params"
Reply
#2

params e usado em sscanf vocк deve estar usando stork.
Reply
#3

Quote:
Originally Posted by ZeZin
Посмотреть сообщение
params e usado em sscanf vocк deve estar usando stork.
Nгo necessariamente ser sscanf...
Reply
#4

Nгo converta. Continue usando ZCMD.
Reply
#5

A linguagem й Pawn.
Como falaram, fique com ZCMD, pois alйm de ser melhor й mais rбpido.
Reply
#6

Quote:
Originally Posted by arakuta
Посмотреть сообщение
Nгo converta. Continue usando ZCMD.
Necessito de converter . Pois minha gm й assim
Reply
#7

Quote:
Originally Posted by bnvowna
Посмотреть сообщение
Necessito de converter . Pois minha gm й assim
Seu GM? Pode ser o seu servidor, mas nгo foi vocк quem fez o GameMode.

Tem vбrios conversores que fazem isso, sу procurar.
Reply
#8

Mano usa o zCMD mt melhor
Reply
#9

pawn Код:
#pragma unused params
coloca dentro do comando no comeзo dps da chave aberta tipo: CMD:fff........ { ai coloca em baixo, to explicando pq vc й novato.
Dificil?
Reply
#10

Respeitem o tуpico do usuбrio. Se ele quer usar Strcmp ao invйs de zCMD, o problema й totalmente dele, nгo de vocкs.

-

Parвmetros do STRCMP:
Quote:

(const string1[], const string2[], bool:ignorecase(opcional), length(opcional))

String 1: Primeira string a ser comparada.
String 2: Segunda string a ser comparada.
Ignorecase: Diferenciar letras maiъsculas de minъsculas no comando.
Length: Й o tamanho do comando, partindo de "/".

Conversгo:

Код:
public OnPlayerCommandText(playerid, cmdtext[]) {
    /**
     * IgnoreCase -> true: Faz com que ele ignore letras maiъsculas / minъsculas.
     * Length -> 10: й o tamanho do comando partindo de "/".
     */
    if (!strcmp(cmdtext, "/challenge", true, 10)) {
        new rplayer, bet;
        if (!sscanf(params, "ui", rplayer, bet)) {
            if (IsPlayerConnected(rplayer) && !IsPlayerNPC(playerid)) {
                if (IsPlayerInAnyVehicle(rplayer)) {
                    if (IsPlayerInAnyVehicle(playerid)) {
                        if (bet <= 50000 && bet >= 5000) {
                            if (GetPlayerMoney(playerid) >= bet) {
                                if (GetPVarInt(rplayer, "LRRequest") == -1) {
                                    if (GetPVarInt(rplayer, "LR") == -1) {
                                        new Float: X,
                                        Float: Y,
                                        Float: Z;
                                        GetPlayerPos(playerid, X, Y, Z);
                                        if (IsPlayerInRangeOfPoint(rplayer, 16, X, Y, Z)) {
                                            new msg[24];
                                            format(msg, 24, "Bet: %i $", bet);
                                            SendClientMessage(playerid, COLOR_LIGHTBLUE, msg);
                                            SetPVarInt(playerid, "bet", bet);
                                            SetPVarInt(rplayer, "bet", bet);
                                            SetPVarInt(rplayer, "LRRequest", playerid);
                                            SetPVarInt(playerid, "LRRequest", rplayer);
                                            new info[160], pname[MAX_PLAYER_NAME];
                                            GetPlayerName(playerid, pname, sizeof(pname));
                                            format(info, 160, "%s is asking you to start a challenege race\n with a bet of $%i, do you want to do this?", pname, bet);
                                            ShowPlayerDialog(rplayer, 1337, DIALOG_STYLE_MSGBOX, "Challenge Race:", info, "Ofcouse", "Nope");
                                            TogglePlayerControllable(playerid, false);
                                        } else SendClientMessage(playerid, COLOR_BRIGHTRED, "You should be near to that player.");
                                    } else SendClientMessage(playerid, COLOR_BRIGHTRED, "Player is currently racing.");
                                } else SendClientMessage(playerid, COLOR_BRIGHTRED, "Player is already invited by someone.");
                            } else SendClientMessage(playerid, COLOR_BRIGHTRED, "You don't have that much money..");
                        } else SendClientMessage(playerid, COLOR_RED, "Min Amount: $5,000 Max Amount: $50,000");
                    } else SendClientMessage(playerid, COLOR_BRIGHTRED, "You need a vehicle to challenge someone.");
                } else SendClientMessage(playerid, COLOR_BRIGHTRED, "The player you want to challenge doesn't have a vehicle.");
            } else SendClientMessage(playerid, COLOR_RED, "Player is not connected.");
        } else SendClientMessage(playerid, COLOR_RED, "Usage: /challenge [Player ID] [Bet Amount]");
        return true;
    }
    return 0;
}
Teoria

Quote:

if (!strcmp(cmdtext, "/challenge", true, 10))

A funзгo OnPlayerCommandText te retorna dois valores, que sгo:

playerid: ID do usuбrio que digitou o comando.
cmdtext[]: O comando em si; digitado pelo usuбrio.

Teoricamente, a funзгo do strcmp, pelo o que eu vi olhando a funзгo й:

Comparar se o comando digitado, corresponde ao seu 'comando' definido no segundo parвmetro do strcmp.

Й sу olhar os parвmetros que vocк entenderб (talvez):
Quote:

(const string1[], const string2[], bool:ignorecase(opcional), length(opcional))

Quote:

(Comando, string a ser comparada com Comando, ...)


Pronto. A resoluзгo da pergunta foi fornecida. Agora eu tenho o 'direito' de lhe sugerir algo melhor e mais fбcil de se usar, que й o zCMD. Mas se vocк preferir usar Strcmp, tudo bem, a escolha й sua.


Abraзos!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)