20.02.2012, 15:29
Bom, nгo tinha nada pra fazer, aн resolvi criar um tutorial, sу que nгo tinha nenhuma ideia maneira pra fazer, entгo fiz isso mesmo, pode ser ъtil pra algumas pessoas, nгo sei...
Й meu primeiro tutorial, podem criticar , dar sugestхes, etc.
Acho que ficou bem explicadinho e tals!
Tem o comando /equiparsimples, que й no metodo /equiparsimples [ID] e tem o /equipardialog que й em dialog.
Ele й melhor pra RP, pois tem funзгo pra ver se o player ta em certo local, verifica se й de certa org, se tem certo cargo,etc.
Totalmente testado e funcionando perfeitamente.
Tб ai:
E no pastebin: http://pastebin.com/6cHmxqL0
Й meu primeiro tutorial, podem criticar , dar sugestхes, etc.
Acho que ficou bem explicadinho e tals!
Tem o comando /equiparsimples, que й no metodo /equiparsimples [ID] e tem o /equipardialog que й em dialog.
Ele й melhor pra RP, pois tem funзгo pra ver se o player ta em certo local, verifica se й de certa org, se tem certo cargo,etc.
Totalmente testado e funcionando perfeitamente.
Tб ai:
pawn Код:
#include <a_samp>
/*----------------------------------Filter Script + Tutorial - Sistema de equipar simples para RP -------------------
[--------------------------------------Criado por Aninhaah (humildadeforever) ---------------------]
*/
#define DIALOG_EQUIPAR 1
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[156], idx, tmp[156];
cmd = strtok(cmdtext, idx);
if (strcmp(cmd, "/equiparsimples", true) == 0)/* Vai verificar quando o player digitar /equiparsimples
para executar a funзгo do cmd*/
{
new equipamento[50];/* Essa linha e a de baixo vai ser para poder usar o comando da seguinte forma: /equipar 1,
/equipar 2, /equipar 3,etc*/
equipamento = strtok(cmdtext, idx);//vai tipo que dar um espaзo no cmd, para ser colocado o numero
if(!strval(equipamento)) return SendClientMessage(playerid,-1,"Use /equiparsimples [ID]");
//A linha acima manda uma mensagem pro jogador caso ele nгo use /equipar e um numero.
if(PlayerInfo[playerid][Org] != 1) return SendClientMessage(playerid,-1,"Vocк nгo pode usar esse comando.");
/*A linha acima й para verificar se o player й de uma certa org para usar o comando, se nгo for vai aparecer a mensagem
Ali o != quer dizer "Diferente de 1", ou seja se o player for de qualquer org que nгo seja a 1, vai aparecer a mensagem
Existe varios metodos de setar e verificar a org do player, varia de GM pra GM, varios GMs RP se usa da seguinte forma:
PlayerInfo[playerid][pMember] ou [pMembro] para verificar se й membro, e PlayerInfo[playerid][pLeader] ou [pLider] para verificar se й lider
*/
if(!IsPlayerInRangeOfPoint(playerid,3.0, 1234.4321,5678.8765,1012.2110)) return SendClientMessage(playerid,-1,"Voce nгo esta no local para equipar");
//A linha acima manda uma mensagem pro jogador caso ele nгo esteja no local ou perto do local onde deve ser digitado o comando
if(strcmp(equipamento, "1", true) == 0)
{
ResetPlayerWeapons(playerid); //Primeiro retira todas armas que ele tem, para dar as outras
SendClientMessage(playerid,-1,"Vocк recebeu o equipamento numero 1");//Manda mensagem pro player dizendo que ele recebeu o equipamento 1
GivePlayerWeapon(playerid,24,100);//Dб uma desert eagle pro jogador com 100 muniзхes
GivePlayerWeapon(playerid,25,100);//Dб uma Shotgun pro jogador com 100 muniзхes.
// ID das armas em > https://sampwiki.blast.hk/wiki/Weapons
//IMPORTANTE! NAO PODE DAR 2 OU MAIS ARMAS DO MESMO SLOT, POIS ELA SERA SUBSTITUIDA E FICARA APENAS 1
}
else if(strcmp(equipamento, "2", true) == 0)
{
if(PlayerInfo[playerid][Cargo] < 2) return SendClientMessage(playerid,-1,"Vocк nгo tem cargo para pegar esse equipamento.");
/* A linha acima manda uma mensagem pro jogador caso o cargo dele for menor que 2
> maior. < menor. <= menor ou igual. >= maior ou igual. == igual. o -1 nos SendClientMessage й onde fica a cor, que no caso o -1 й o branco
*/
ResetPlayerWeapons(playerid); //Primeiro retira todas armas que ele tem, para dar as outras
SendClientMessage(playerid,-1,"Vocк recebeu o equipamento numero 2");//Manda mensagem pro player dizendo que ele recebeu o equipamento 2
GivePlayerWeapon(playerid,24,100);//Dб uma desert eagle pro jogador com 100 muniзхes
GivePlayerWeapon(playerid,25,100);//Dб uma Shotgun pro jogador com 100 muniзхes.
GivePlayerWeapon(playerid,29,100);//Dб uma MP5 pro jogador com 100 muniзхes
//IMPORTANTE! NAO PODE DAR 2 OU MAIS ARMAS DO MESMO SLOT, POIS ELA SERA SUBSTITUIDA E FICARA APENAS 1
}
else if(strcmp(equipamento, "3", true) == 0)
{
if(PlayerInfo[playerid][Cargo] < 3) return SendClientMessage(playerid,-1,"Vocк nгo tem cargo para pegar esse equipamento.");
// A linha acima manda uma mensagem pro jogador caso o cargo dele for menor que 3
ResetPlayerWeapons(playerid); //Primeiro retira todas armas que ele tem, para dar as outras
SendClientMessage(playerid,-1,"Vocк recebeu o equipamento numero 3");//Manda mensagem pro player dizendo que ele recebeu o equipamento 3
GivePlayerWeapon(playerid,24,100);//Dб uma desert eagle pro jogador com 100 muniзхes
GivePlayerWeapon(playerid,25,100);//Dб uma Shotgun pro jogador com 100 muniзхes.
GivePlayerWeapon(playerid,29,100);//Dб uma MP5 pro jogador com 100 muniзхes
GivePlayerWeapon(playerid,33,100);//Dб um Country Rifle pro jogador com 100 muniзхes.
GivePlayerWeapon(playerid,36,100);//Dб uma HS Rocket pro jogador com 100 muniзхes
//IMPORTANTE! NAO PODE DAR 2 OU MAIS ARMAS DO MESMO SLOT, POIS ELA SERA SUBSTITUIDA E FICARA APENAS 1
}
else { SendClientMessage(playerid,-1,"Os IDs й de 1 a 3"); }
// A linha acima й pra enviar uma mensagem caso o jogador digite um id que nao seja, 1,2 ou 3
return 1;
}
if(strcmp(cmd, "/equipardialog", true) == 0)/* Vai verificar quando o player digitar /equipardialog
para executar a funзгo do cmd*/
{
if(PlayerInfo[playerid][Org] != 2) return SendClientMessage(playerid,-1,"Vocк nгo pode usar esse comando.");
/*A linha acima й para verificar se o player й de uma certa org para usar o comando, se nгo for vai aparecer a mensagem
Ali o != quer dizer "Diferente de 2", ou seja se o player for de qualquer org que nгo seja a 2, vai aparecer a mensagem
*/
if(!IsPlayerInRangeOfPoint(playerid,3.0, 1234.4321,5678.8765,1012.2110)) return SendClientMessage(playerid,-1,"Voce nгo esta no local para equipar");
//A linha acima manda uma mensagem pro jogador caso ele nгo esteja no local ou perto do local onde deve ser digitado o comando
ShowPlayerDialog(playerid,DIALOG_EQUIPAR,DIALOG_STYLE_LIST,"Equipando","Equipamento 1\nEquipamento 2\nEquipamento 3","Equipar","Cancelar");
/* ---------------------------- Explicando o ShowPlayerDialog ---------------
playerid - pra quem vai ser mostrado o dialog
DIALOG_EQUIPAR - ID do Dialog que foi definido no topo do GM
DIALOG_STYLE_LIST - Estilo do Dialog (existe o LIST, INPUT, PASSWORD E MSGBOX)
"Equipando" - Vai ser tipo que um "titulo" do Dialog.
"Equipamento 1\nEquipamento 2\nEquipamento 3 - Serгo as opзхes da lista no dialog
"Equipar" - Botгo para equipar
"Cancelar" - Vai fechar o dialog e nгo receberб nenhum equipamento*/
return 1;
}
return 0;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_EQUIPAR)
{// vai verificar o id do diaog
if(!response) return SendClientMessage(playerid,-1,"Vocк nгo quer mais se equipar.");
//a linha acima manda uma mensagem pro player se ele cancelar (apertar o segundo botao)
if(listitem == 0)//Primeira opзгo da lista ("Equipamento 1")
{//chave que abre o que vai acontecer ao clicar na primeira opзгo
ResetPlayerWeapons(playerid); //Primeiro retira todas armas que ele tem para dar as outras
SendClientMessage(playerid,-1,"Vocк recebeu o equipamento numero 1");//Manda mensagem pro player dizendo que ele recebeu o equipamento 1
GivePlayerWeapon(playerid,24,100);//Dб uma desert eagle pro jogador com 100 muniзхes
GivePlayerWeapon(playerid,25,100);//Dб uma Shotgun pro jogador com 100 muniзхes.
// ID das armas em > https://sampwiki.blast.hk/wiki/Weapons
}//chave que fecha as funзхes da primeira opзao
else if(listitem == 1)// Segunda opзгo da lista ("Equipamento 2")
{//chave que abre o que vai acontecer ao clicar na segunda opзгo
if(PlayerInfo[playerid][Cargo] < 2) return SendClientMessage(playerid,-1,"Vocк nгo tem cargo para pegar esse equipamento.");
// A linha acima manda uma mensagem pro jogador caso o cargo dele for menor que 2
ResetPlayerWeapons(playerid); //Primeiro retira todas armas que ele tem para dar as outras
SendClientMessage(playerid,-1,"Vocк recebeu o equipamento numero 2");//Manda mensagem pro player dizendo que ele recebeu o equipamento 2
GivePlayerWeapon(playerid,24,100);//Dб uma desert eagle pro jogador com 100 muniзхes
GivePlayerWeapon(playerid,25,100);//Dб uma Shotgun pro jogador com 100 muniзхes.
GivePlayerWeapon(playerid,29,100);//Dб uma MP5 pro jogador com 100 muniзхes
//IMPORTANTE! NAO PODE DAR 2 ARMAS DO MESMO SLOT, POIS ELA SERA SUBSTITUIDA E FICARA APENAS 1
}//chave que fecha as funзхes da segunda opзao
else if(listitem == 2)//terceira opзгo da lista ("Equipamento 3")
{//chave que abre o que vai acontecer ao clicar na terceira opзгo
if(PlayerInfo[playerid][Cargo] < 3) return SendClientMessage(playerid,-1,"Vocк nгo tem cargo para pegar esse equipamento.");
// A linha acima manda uma mensagem pro jogador caso o cargo dele for menor que 3
ResetPlayerWeapons(playerid); //Primeiro retira todas armas que ele tem para dar as outras
SendClientMessage(playerid,-1,"Vocк recebeu o equipamento numero 3");//Manda mensagem pro player dizendo que ele recebeu o equipamento 3
GivePlayerWeapon(playerid,24,100);//Dб uma desert eagle pro jogador com 100 muniзхes
GivePlayerWeapon(playerid,25,100);//Dб uma Shotgun pro jogador com 100 muniзхes.
GivePlayerWeapon(playerid,29,100);//Dб uma MP5 pro jogador com 100 muniзхes
GivePlayerWeapon(playerid,33,100);//Dб um Country Rifle pro jogador com 100 muniзхes.
GivePlayerWeapon(playerid,36,100);//Dб uma HS Rocket pro jogador com 100 muniзхes
//IMPORTANTE! NAO PODE DAR 2 ARMAS DO MESMO SLOT, POIS ELA SERA SUBSTITUIDA E FICARA APENAS 1
}//chave que fecha as funзхes da terceira opзгo
return 1;
}//termina o dialog de equipar
return 1;
}
stock strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}