17.07.2010, 16:22
(
Последний раз редактировалось ipsBruno; 07.08.2010 в 00:46.
)
Antes vou dizer que o Tutorial esta muito bem explicado, sу precisa prestar atenзгo nos comentбrios dentro do Cуdigo, se tiver algum erro comunique-me por PM, caso contrario esta me incentivando cada vez mais de parar de fazer tutos!
Bom vou postar aqui um tutorial inйdito de como criar um sistema de Gang Criбveis..
Primeiramente Vamos definir algumas coisinhas para posteriormente fazermos as Gangs, Lembrando que usarei SetPlayerTeam portando teremos o AntiTeamKill Feito jб
Topo GM:Bom vou postar aqui um tutorial inйdito de como criar um sistema de Gang Criбveis..
Primeiramente Vamos definir algumas coisinhas para posteriormente fazermos as Gangs, Lembrando que usarei SetPlayerTeam portando teremos o AntiTeamKill Feito jб
pawn Код:
#define MAX_GANGS 32
#define MAX_GANG_PLAYERS 16
#define SEM_GANG 0
Vamos agora fazer as Arrays para a Gang:
Ainda no Topo:
pawn Код:
new gangInvite[MAX_PLAYERS];
new PlayerInGang[MAX_PLAYERS];
new gangMembers[MAX_GANGS][MAX_GANG_PLAYERS];//Array para Enviar Mensagem posteriormente
Claro que isso pode ser substituido por PVARS para ficar mais otimizado,enfim.
Em OnGameModeInit
pawn Код:
if(!dini_Exists(Archivo))
{
dini_Create(Archivo);
dini_IntSet(Archivo, "GangsCreates", 0);
}
Agora vamos ao comando em OnPlayerCommandTex:
GangEntrar:
pawn Код:
new cmd[128], idx;
cmd = comandos(cmdtext, idx);
if(strcmp(cmd, "/gangentrar", true) == 0)
{
if(PlayerInGang[playerid]==0 && gangInvite[playerid] != 0) //Se o Convite for Diferente de '0' que seria a gang padrao e ele estiver fora da gang
{
SetPlayerTeam(playerid,gangInvite[playerid]); // coloca na gang como definido anteriormente
SendClientMessage(playerid, 0xFFFFFFFF, "vocк foi entrou na gang");
PlayerInGang[playerid] = GetPlayerTeam(playerid);
gangInvite[playerid] = 0;//Reseta o Convite
}
return 1;
}
Enfim Vamos ao Convite:
pawn Код:
if(strcmp(cmd, "/gangconvite", true) == 0)
{
new tmp[128];
tmp = comandos(cmdtext, idx);
if(strlen(tmp) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "Uso do Comando: /gangconvite[ID]");
SendClientMessage(playerid, 0xFFFFFFFF, "vocк foi convidado a entrar em uma gang");
gangInvite[strval(tmp)] == PlayerInGang[playerid];//Habilita Convite para o ID da Gang
return 1;
}
Esse serб o comando de criar a gang, claro que ele nunca salvarб o nome da Gang apenas o ID dela porйm vocк pode fazer um jogo de 'salvamento' e salvar o ID da Gang em um arquivo com Nome dela, Veja Abaixo..
pawn Код:
if(strcmp(cmd, "/gangcriar", true) == 0)
{
new tmp[128];
tmp = comandos(cmdtext, idx);
if(PlayerInGang[playerid]>0)//Se o player estive em uma gang
{
return SendClientMessage(playerid, 0xFF8040FF, " Jб estбs em uma gang");;
}
new i;//define id da gang
i= dini_Int("Gang.ini", "GangsCreates")+1;//define id da gang
new string[128];
format(string, sizeof(string),"Vocк criou a gang: '%s' (%d)", tmp, i);//Irб Enviar MSG que a gang foi criada com ID
SendClientMessage(playerid, 0xFF8040FF, string);//Envia MSG
PlayerInGang[playerid]=i;//Irб Colocar o Player na Gang
SetPlayerTeam(playerid,PlayerInGang[playerid]);//Seta o Player a Uma Gang a Ativa Anti TK
return 1;
}
pawn Код:
new file[64];
format(file, sizeof(file), "%d.ini", GetPlayerTeam(playerid));// Salva Arquivo com ID_DA_GANG.ini
dini_Create(file);
dini_Set(file,"Nome",tmp);//Salvara Nome da Gang
pawn Код:
stock ler_nome(gangid)
{
new arquivo[128];
format(arquivo,sizeof(arquivo),"%i.ini",gangid);
format(arquivo,sizeof(arquivo),dini_Get(arquivo,"Nome"));
return arquivo;
}
pawn Код:
ler_nome(GetPlayerTeam(playerid));//Lк o nome da gang em arquivo
pawn Код:
public OnPlayerText(playerid, text[])
{
if(text[0] == '!') {//Se Tiver '!'
new string[128]; GetPlayerName(playerid,string,sizeof(string));//Geta Nome
format(string,sizeof(string),"Gang Chat: %s: %s",string,text[1]);//Formato da Mensagem
SendMessageToGang(playerid,0xFFFFFFFF,string);//Envia Mensagem
}
return 0;
}
pawn Код:
stock SendMessageToGang(playerid,color,const msg[])
{
for (new i=0; i<MAX_GANG_PLAYERS; i++)//Pega os Membros da Gang
{
if (IsPlayerConnected(i) && PlayerInGang[playerid] > 0)//se tiver conectado e for de um gang
{
SendClientMessage(gangMembers[GetPlayerTeam(playerid)][i],color,msg);//Envia MSG para os mesmos da gang
}
}
return 1;
}
pawn Код:
comandos(const string[], &index)//essa й a strtok modificada para nгo dar complicados com outras
{
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;
}
Pois bem este й o Fim, espero que tenham gostado,
Crйditos a DraKoN
Se quiserem saber como faz as Gang Zones Dominaives basta acessar aqui:
https://sampforum.blast.hk/showthread.php?tid=143646
Eu Fiz o TUTO Usando gTeams para ser compactнvel com outros assim como do andmeida10
>>>P.S: virei emo