09.09.2011, 04:06
Bom, como tenho visto muito tanto aqui no Fуrum, fora tambйm, pessoas com um certo problema para criar comandos cujo destinatario nгo seja o playerid no caso, a pessoa digitou o comando.Com isso decidi vir aqui tentar passar a vocкs novatos(as), um pouco sobre strcmp - Usado para comparar strings, mais nesse caso para fazer comandos. strtok - Usado para procurar strings, mais nesse caso para complementar uma string nova para o comando. strval - Usado para converter uma string para Integer, nesse caso usado para definir seu Outro Player...
Comando:
Creio que todos saibam que para comeзar um comando a primeira parte seria
pois como vemos a maioria dos novatos tendem a usar GM's base, ou GM's jб prontos, entгo vou tentar ao mбximo usar a lingua de seu GM.
em quase todos GM's creio eu, vocк tem o seu inicio de public OnPlayerCommandText como
todos sabem fazer um comando para pegar dinheiro, certo simples
Jб vi pessoas dizendo que assim /\ ele poderia enviar dinheiro a outra pessoa se adicionasse "SendClientMessage(playerid, -1, "USE: /medadinheiro [player]");"
pois й nгo enviaria dinheiro algum no mбximo vocк ficaria a pensar que bugo '-'
entгo aqui comeзamos a usar outros IDS para fazer comandos assim digamos mais complexos para um novato.
esse й um exemplo que diria SupraBбsico. E dai sai de acordo com a sua criatividade, eu jб enfeitaria bastante
da mesma forma da qual o comando pode ser assim /\ nгo nescessariamente precisa ser todo identado. logo poderia ser assim
mais nгo aconselho, alйm de ser feio da minha opniгo, confundiria um novato de kaboArabo.
e dentre isso, podem surgir novos comandos, depende da sua criatividade.
outro exemplo:
Nesse comando eu te jogaria dentro de um carro criado na mesma hora e no mesmo local onde estavas, sem possibilidades de sair. Como Co-piloto *trollface*
Й isso pessoal, espero ter ajudado.
Crйditos:
Fonte inicial de meus estudos: Wiki;Samp, que nos propхe todas funзхes com uns tutoriais em inglкs meio tenso de ler - Site do WikiSamp
e feito por mim: Willian_Luigi
deixem seus coments. "Antes de meter simples criticas dizendo que copiei de algum lugar, procure bem no ****** para ver se copiei mesmo"
Comando:
Creio que todos saibam que para comeзar um comando a primeira parte seria
pawn Код:
if(strcmp("/comando", cmdtext, true) == 0)
em quase todos GM's creio eu, vocк tem o seu inicio de public OnPlayerCommandText como
pawn Код:
new string[256]; // Arrays da string para usar ao longo de todos comandos dentro desse public
new sendername[MAX_PLAYER_NAME]; //definiзгo para o Player Enviador. logo abaixo estarei explicando melhor..
new cmd[256], tmp[256], idx;
cmd = strtok(cmdtext,idx); // e creio que todos usem isso para definir que 'if(strcmp("/comando",cmdtext,true)==0) tambйm poderб ser usado como 'if(strcmp(cmd,"/comando",true) == 0)
pawn Код:
if(strcmp(cmd,"/medadinheiro", true) == 0)
{
GivePlayerMoney(playerid, 5000); // playerid = vocк, 5000 й a quantia de dinheiro, nгo nescessariamente tem de a ser 5000. Vocк define a quantia
SendClientMessage(playerid, -1, "Vocк pegou dinheiro."); // Mensagem enviada ao player que digitou o comando, (-1) й a cor = Branca й porque estou a fazer esse tuto em um new.
return 1;
}
pois й nгo enviaria dinheiro algum no mбximo vocк ficaria a pensar que bugo '-'
entгo aqui comeзamos a usar outros IDS para fazer comandos assim digamos mais complexos para um novato.
pawn Код:
if(strcmp(cmd,"/medadinheiro", true) == 0)
{
tmp = strtok(cmdtext,idx); // aqui comeзamos a usar o tal do tmp, para definir outros ID's fora o seu.
new outro = strval(tmp); // aqui й onde transformamos 'outro' em ID.
GivePlayerMoney(outro, 5000); // aqui й a base para dar o dinheiro, mais ao invйs de se usar como "playerid", usamos o outro player que definimos como "outro"
return 1;
}
pawn Код:
if(strcmp(cmd,"/medadinheiro", true) ==0)
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp))//o Comando exato apartir de quando definimos outro player й, /medadinheiro OUTROID por tanto isso й a mensagem que mostra quando digitasse apenas /medadinheiro
{
SendClientMessage(playerid, -1,"Use corretamente: /medadinheiro [player][quantia]");
return 1;
}
new outro = strval(tmp); // aqui como expliquei em cima, serб o novo ID, porenquanto desconhecido. /medadinheiro ID
if(!IsPlayerConnected(outro)) // aqui sera a Mensagem enviada a vocк, caso o ID digitado nгo esteja Online.
{
SendClientMessage(playerid, -1,"Player Desconhecido");
return 1;
}
new dinheiro = strval(tmp); // aqui agora eu defini o tanto de dinheiro que podes dar a outro player.
if(dinheiro < 0 || dinheiro > 999999) // na linguagem seria se for menos que 0 ou mais que 999999 envias a msg abaixo
{
SendClientMessage(playerid, -1,"Tas a abusar do poder de dinheiro. QUANTIA NEGADA.");
return 1;
}
new euenviei[MAX_PLAYER_NAME]; // isso nгo precisa ser nescessariamente 'euenviei' nгo farб minima diferenзa й apenas um new para definir NOMES
GetPlayerName(playerid, euenviei,sizeof(euenviei)); // aqui й quando convertes o teu ID para teu Nome. 'playerid' - 'euenviei'
new recebendo[MAX_PLAYER_NAME];
GetPlayerName(outro, recebendo,sizeof(recebendo)); // aqui jб й diferent, quando convertes o 'outro' player para nome.
GivePlayerMoney(outro,dinheiro); // aqui estб a funзгo cabeзa do Comando, 'outro' й o ID digitado, 'dinheiro' й a quantia.
format(string,sizeof(string),"Vocк deu %d de dinheiro para %s", dinheiro, recebendo); // esse й um format bбsico cujo afirmarб o Tanto de dinheiro e o nome de quem recebeu (%d) (%s)
SendClientMessage(playerid, -1, string); // aqui ele enviarб o format, atй o player que usou o tal comando.
new willMSG[60]; // como expliquei acima nгo precisa ser um (new willMSG) pode ser outro a sua escolha. Como vejo de muitas pessoas que definem tudo como ou "String", ou "Sendername" apenas porque acham que й o certo.
format(willMSG,sizeof(willMSG),"Vocк recebeu %d, de %s", dinheiro, euenviei); // aqui jб seria outro format, informando ao 'outro' player, o tanto de dinheiro recebido, e o enviador do dinheiro.
SendClientMessage(outro, -1,willMSG); //Aqui enviaremos uma Mensagem ao 'outro' Player, com o format acima.
return 1;
}
pawn Код:
if(strcmp(cmd,"/medadinheiro", true) ==0)
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp)) return SendClientMessage(playerid, -1,"Use corretamente: /medadinheiro [player][quantia]");
new outro = strval(tmp);
if(!IsPlayerConnected(outro)) return SendClientMessage(playerid, -1,"Player Desconhecido");
new dinheiro = strval(tmp);
if(dinheiro < 0 || dinheiro > 999999) return SendClientMessage(playerid, -1,"Tas a abusar do poder de dinheiro. QUANTIA NEGADA.");
new euenviei[MAX_PLAYER_NAME];
GetPlayerName(playerid, euenviei,sizeof(euenviei));
new recebendo[MAX_PLAYER_NAME];
GetPlayerName(outro, recebendo,sizeof(recebendo));
GivePlayerMoney(outro,dinheiro);
format(string,sizeof(string),"Vocк deu %d de dinheiro para %s", dinheiro, recebendo);
SendClientMessage(playerid, -1, string);
new willMSG[60];
format(willMSG,sizeof(willMSG),"Vocк recebeu %d, de %s", dinheiro, euenviei);
SendClientMessage(outro, -1,willMSG);
return 1;
}
e dentre isso, podem surgir novos comandos, depende da sua criatividade.
outro exemplo:
pawn Код:
if(strcmp(cmd,"/sacanear",true) == 0)
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, -1,"Use corretamente: /sacanear [playerid]");
return 1;
}
new outro = strval(tmp);
if(!IsPlayerConnected(outro))
{
SendClientMessage(playerid,-1,"Player Desconhecido.");
return 1;
}
new Float:X,Float:Y,Float:Z,Float:Angle; // aqui estarei definindo X Y Z Angle Como coordenadas para descubrilas abaixo com GetPlayerPos e FacingAngle
GetPlayerPos(outro,X,Y,Z);// aqui estarei pegando as Coordenadas X Y Z do 'outro'Player para usar mais abaixo.
GetPlayerFacingAngle(outro,Angle); // aqui estarei pegando o Angulo do 'outro'Player
new carro = CreateVehicle(560,X,Y,Z,Angle,0xFF0080AA,-1,600000); // aqui estarei criando um novo carro (560) Sultan, nas coordenadas do 'outro'Player.
PutPlayerInVehicle(outro,carro,1); // aqui estarei jogando o 'outro'Player dentro de um carro criado como acento de passageiro.
TogglePlayerControllable(outro, 0);
return 1;
}
Й isso pessoal, espero ter ajudado.
Crйditos:
Fonte inicial de meus estudos: Wiki;Samp, que nos propхe todas funзхes com uns tutoriais em inglкs meio tenso de ler - Site do WikiSamp
e feito por mim: Willian_Luigi
deixem seus coments. "Antes de meter simples criticas dizendo que copiei de algum lugar, procure bem no ****** para ver se copiei mesmo"