Conveter -
nember - 13.12.2014
Bom dia.
Alguйm por favor poderia converter os cmds abaixo para zcmd e sscanf2? Me ajudem pf.
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
new
cmd[128], idx, tmp[128];
cmd = strtok(cmdtext, idx);
GetPlayerPos(playerid, PlayerGetPos[0], PlayerGetPos[1], PlayerGetPos[2]);
new
Float:iAngulo
;
GetPlayerFacingAngle(playerid, iAngulo);
if(strcmp(cmd, "/veh", true) == 0 || strcmp(cmd, "/criarveiculo", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, 0xFF3300AA, "| ERRO | Uso correto: /CriarVeiculo [Veнculo ID / Nome] [Cor 1] [Cor 2]");
return 1;
}
new veiculo = GetVehicleModelID(tmp);
if(veiculo == -1)
{
veiculo = strval(tmp);
if(veiculo < 400 || veiculo > 611)
{
SendClientMessage(playerid, 0xFF3300AA, "| ERRO | Uso correto: /CriarVeiculo [Veнculo ID / Nome] [Cor 1] [Cor 2]");
return 1;
}
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, 0xFF3300AA, "| ERRO | Uso correto: /CriarVeiculo [Veнculo ID / Nome] [Cor 1] [Cor 2]");
return 1;
}
new color1 = strval(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, 0xFF3300AA, "| ERRO | Uso correto: /CriarVeiculo [Veнculo ID / Nome] [Cor 1] [Cor 2]");
return 1;
}
new color2 = strval(tmp);
if(veiculo < 400 || veiculo > 611)
{
SendClientMessage(playerid, 0xFF3300AA, "| ERRO | Somente veнculos entre 400 б 611!");
return 1;
}
DestroyVehicle(VeiculoID[playerid]);
PutPlayerInVehicle(playerid, Modelo[ playerid ] = CreateVehicle(veiculo, PlayerGetPos[0], PlayerGetPos[1], PlayerGetPos[2], iAngulo, color1, color2, -1), 0);
VeiculoID[playerid] = GetPlayerVehicleID(playerid);
CriouVeiculo[playerid] = true;
format(g_string, sizeof(g_string), "| INFO | %s criado com sucesso! (Somente vocк pode dirigi-lo)", Veiculos[GetVehicleModel(Modelo[ playerid ])-400]);
SendClientMessage(playerid, 0xFFFF33AA, g_string);
format(g_string, sizeof(g_string), "%s [%d]", PlayerName(playerid), playerid);
VLabel3D[playerid] = Create3DTextLabel(g_string, 0x00FF00AA, 0.0, 0.0, 0.0, 40.0, 0, 1);
Attach3DTextLabelToVehicle(VLabel3D[playerid], Modelo[ playerid ], 0.0, -2.5, 0.5);
format(Veiculopp[VeiculoID[playerid]][Nome], 20, PlayerName(playerid));
return 1;
}
if(strcmp(cmd, "/vehtrazer", true) == 0)
{
if(CriouVeiculo[playerid] == true)
{
SendClientMessage(playerid, 0xCCFF33AA, "| INFO | Vocк trouxe seu veнculo atй vocк.");
GetPlayerPos(playerid, PlayerGetPos[0], PlayerGetPos[1], PlayerGetPos[2]);
SetVehiclePos(VeiculoID[playerid], PlayerGetPos[0], PlayerGetPos[1], PlayerGetPos[2]+1);
SetVehicleZAngle(VeiculoID[playerid], iAngulo);
PutPlayerInVehicle(playerid, VeiculoID[playerid], 0);
return 1;
}
else
{
SendClientMessage(playerid, 0xFF6633AA, "| ERRO | Vocк nгo criou um veнculo prуprio para vocк!");
return 1;
}
}
return 0;
}
Re: Conveter -
MultiKill - 13.12.2014
Amigo tenho uma pergunta, vocк sabe usar zcmd? vocк sabe usar sscanf? vocк sabe usar uma variбvel? vocк sabe o que й uma variбvel? vocк sabe usar uma string? vocк sabe o que й uma string? vocк sabe o bбsico do pawn?
Se vocк utiliza zcmd e sscanf deve saber como fazer. Se nгo sabe o bбsico do pawn e nгo busca aprender sу estб perdendo tempo.
Olhe este tutorial.
[Quick-List] SA:MP Tutoriais
Video Aulas PAWN
Re: Conveter -
nember - 13.12.2014
Sim eu sei, mais esse comando tem muitas chaves e eu simplesmente nao entendi ele e eu preciso muito dele cara.
pawn Код:
CMD:ir(playerid, params[])
{
new ID;
if(sscanf(params, "u", ID)) return [...]
if(!IsPlayerConnected(ID) return [....]
return 1;
}
Fiz isso agora, eu sei usar zcmd e sscanf mas nгo entendi esse comando, pode me ajudar?
Re: Conveter -
MultiKill - 13.12.2014
Olhe bem o tutorial, se nгo entendeu vai tentando fazer outros comandos bбsicos, se vocк viu no formato o d ou i й para nъmeros inteiros, o s й para strings, o u й para jogador se vocк colocar um nome ele procura um jogador online com o mesmo nome e pega o id se nгo achar retorna a um id invбlido, e o f й para float ( ex: 30.0 ), entгo tente fazer um comando bбsico de criar um veнculo que vocк vai entender como fazer ou vai atй mesmo fazer um melhor. Nгo vou dar o cуdigo, vou tentar fazer vocк entender.
Re: Conveter -
nember - 13.12.2014
Multi isso eu sei cara mas eu nгo entendi o comando ele tem muitas chaves e coisas q nгo entendo, porfavor.
Re: Conveter -
MultiKill - 13.12.2014
Analise o cуdigo.
pawn Код:
tmp = strtok(cmdtext, idx); // aqui й separado modelo do veнculo ou nome
if(!strlen(tmp)) // й verificado se tem alguma coisa armazenado na string tmp ou sу tem o EOS
// Caso nгo saiba EOS significa: End Of String - fim de string
{
// Caso tiver sу o EOS
SendClientMessage(playerid, 0xFF3300AA, "| ERRO | Uso correto: /CriarVeiculo [Veнculo ID / Nome] [Cor 1] [Cor 2]");
return 1; // retorna a 1 e para a execuзгo do comando
}
new veiculo = GetVehicleModelID(tmp); // Dentro da funзгo GetVehicleModelID deve ocorrer se ele digitou um nome de um veнculo caso digitou um nome retorna a um id, e caso nгo for um nome retorna a -1
// E esse id й armazenado na variбvel veнculo.
if(veiculo == -1)// Caso o valor armazenado na variбvel veiculo for -1
{
// Ele compreende que foi digitado um id em vez de um nome
veiculo = strval(tmp); // Este valor que й numйrico e estб armazenado na string tmp й convertido para um variбvel do tipo inteiro e armazenado na variбvel veiculo.
if(veiculo < 400 || veiculo > 611) // й verificado se o id do modelo nгo й menor que 400 e maior que 611
{
// caso for menor que 400 e maior que 611 й enviado uma mensagem e retornado a 1 e para a execuзгo do comando.
SendClientMessage(playerid, 0xFF3300AA, "| ERRO | Uso correto: /CriarVeiculo [Veнculo ID / Nome] [Cor 1] [Cor 2]");
return 1;
}
}
tmp = strtok(cmdtext, idx); // aqui й separado a cor 1
if(!strlen(tmp)) // й verificado sem a string tmp onde foi armazenado o id da cor estб vazнo sу com o EOS
{
// Caso tiver vazio й enviado uma mensagem e retornado a 1 parando a execuзгo do comando
SendClientMessage(playerid, 0xFF3300AA, "| ERRO | Uso correto: /CriarVeiculo [Veнculo ID / Nome] [Cor 1] [Cor 2]");
return 1;
}
new color1 = strval(tmp); // o valor nъmero que estб armazenado na string tmp й convertido e armazenado para uma variбvel chamada color1.
tmp = strtok(cmdtext, idx); // й separado a cor 2 e armazenado na string tmp
if(!strlen(tmp)) // verifica se a string tmp estб vazia
{
// caso tiver vazia envia uma mensagem e retorna a 1, parando a execuзгo do comando
SendClientMessage(playerid, 0xFF3300AA, "| ERRO | Uso correto: /CriarVeiculo [Veнculo ID / Nome] [Cor 1] [Cor 2]");
return 1;
}
new color2 = strval(tmp); // o valor nъmerico armazenado na string tmp й convertido e armazenado na variбvel color2
if(veiculo < 400 || veiculo > 611) // й verificado se o valor armazenado na variбvel veнculo й menor que 400 e maior que 611
{
// caso for menor que 400 e maior que 611 й enviado uma mensagem e retornado a 1, parando a execuзгo do comando.
SendClientMessage(playerid, 0xFF3300AA, "| ERRO | Somente veнculos entre 400 б 611!");
return 1;
}