Mostrando postagens com marcador Tutoriais. Mostrar todas as postagens
teste do eddy

[TUT/FS]Carros ( Completo )

Criando Carros ( Completo )

Topo do GM/FS

new CarrosPs[MAX_PLAYERS];

public OnPlayerCommandText

if (strcmp(cmdtext, "/carros", true) == 0)
{
ShowPlayerDialog(playerid,158,DIALOG_STYLE_LIST,"Pegar carros","\nElegy\nNRG-500","Ok","Sair");
return 1;
}

public OnDialogResponse

if(dialogid == 158)
{
if(response)
{
if(listitem == 0)
{
if(CarrosPs[playerid] != INVALID_VEHICLE_ID)
DestroyVehicle(CarrosPs[playerid]);
new Float:X,Float:Y,Float:Z,Float:Angle;
GetPlayerPos(playerid,X,Y,Z);
GetPlayerFacingAngle(playerid,Angle);
GetPlayerVehicleID(playerid);
CarrosPs[playerid] = CreateVehicle(562,X,Y,Z,Angle,-1,-1,600);
PutPlayerInVehicle(playerid, CarrosPs[playerid], 0);
}
}
if(listitem == 1)
{
if(CarrosPs[playerid] != INVALID_VEHICLE_ID)
DestroyVehicle(CarrosPs[playerid]);
new Float:X,Float:Y,Float:Z,Float:Angle;
GetPlayerPos(playerid,X,Y,Z);
GetPlayerFacingAngle(playerid,Angle);
GetPlayerVehicleID(playerid);
CarrosPs[playerid] = CreateVehicle(522,X,Y,Z,Angle,-1,-1,600);
PutPlayerInVehicle(playerid, CarrosPs[playerid], 0);
}
}


public OnPlayerExitVehicle

SetTimerEx("psDestroyVehicle", 20000, 0, "i", vehicleid);

Final do GM/FS

forward psDestroyVehicle(vehicleid);
public psDestroyVehicle(vehicleid)
{
return DestroyVehicle(vehicleid);
}

Assim, quando o player criar um carro, e tentar criar outro, o outro carro ira sumir, e iria ficar com o novo carro..

Se o player sair do carro, e ficar 20 segundos fora, o carro vai desaparecer.. Isto é bom para que se o player sair do Servidor, ai o carro ira sumir.

PS : PawnSamp

Ai você pode mudar a id dos veiculos, adicionar/remover veiculos e enfim..


By: GTA

[TUT] Algumas Funções de String

Introdução
Bem neste Tutorial Ensinarei como usar 'Strfind' usada para pesquisar uma String em outras String Veja um Exemplo:

if(strfind("Nossa String", "Nossa", true) != -1)
{
SendClientMessageToAll(0xFFFFFFFF, "Eu Encontrei a Palavra Nossa...");
}
EXPLICAÇÃO:

if( = Nesta Condicional colocaremos a 'strfind' no qual executará a função de buscar o texto
strfind("Nossa String", "Nossa", true) = Agora ele procura a Palavra 'Nossa' na Frase 'Nossa String' e retorna true) != -1) = Indicando 'Verdadeiro' (true) isto é, se encontrou a Palavra

O Mesmo podemos usar em diversas funções tais como GetPlayerName

public OnPlayerConnect(playerid)
{
new name[MAX_PLAYER_NAME], string[44];
0, 0);">(playerid, name, sizeof(name));
if(strfind(name, "gay", true) != -1)
{
format(string, sizeof(string), " Oi%s no seu Nick tem a palavra gay kkkkkkkkk .",name);
SendClientMessageToAll(0xFFFF00AA, string);
}
return 1;
}
Ou Até mesmo procurar palavrões (palavras de baixo calão) em texto..

[TUT] strcmp
Introdução
Bem neste Tutorial Ensinarei como usar 'strcmp' usada para comparar uma String em outra String,bastante usada para comandos..
Veja um Exemplo:
if(!strcmp("Dracu", "DraKoN", true, 6)
{
SendClientMessageToAll(0xFFFFFFFF, "Você não é o DraKoN");
}
EXPLICAÇÃO:

if( = Nesta Condicional colocaremos a 'strcmp' no qual executará a função de comparar os 2 (dois) textos
strcmp("Dracu", "DraKoN" = Agora ele comparar a Palavra 'DraCu' com a 'DraKoN' e retorna diferente de true Indicando 'Falso' (Falso) isto é, se é diferente de DraKoN
3 = Esse 3 (Três) é usado para colocar o tamanho da segunda String (DraKoN)
também como algumas pessoas conhecem por Strlen que veremos Logo Abaixo

O Mesmo podemos usar em diversas funções tais como cmdtext

public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/me", true, 3))
{
if(!cmdtext[3])return SendClientMessage(playerid, 0xFF0000FF, "USE: /me [acao]");
new str[128];
GetPlayerName(playerid, str, sizeof(str));
format(str, sizeof(str), "* %s %s", str, cmdtext[4]);
SendClientMessageToAll(0xFFFF00AA, str);
return 1;
}
return 0;
}
Ou Até mesmo comparar diversas coisas..

[TUT] Strdel

Introdução:
Nesta parte de vosso tutorial vamos aprender como usar Strdel usado para deletar partes de uma String..

Vejamos que nossa String Seja:

new string[20] = "Esta é Nossa String";
20 É O Tamanho de nossa String que seria o Vosso Texto

strdel(string, 0,7);
EXPLICANDO:

strdel(string = Esta Parte Indica que Deletaremos a 'String' que definimos anteriormente
0, 7) = Esta parte indica onde iremos começar a deletar e onde terminaremos de deletar, observe que ficou da Seguinte Maneira (0-7)

Esta é Nossa String
Istó é, a parte vermelha (0-7) deletamos ficando 'Nossa String'

Aqui Usando um Conjutno de strfind + strdel

new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof name);
new
startpos = strfind(name, "[", true),
endpos = strfind(name, "]", true);
if(startpos != -1 && endpos != -1)
{
strdel(name, startpos, endpos + 1);
if(name[0])
{
SetPlayerName(playerid, name);
new string[128];
format(string, sizeof(string), "| Seu Nick Foi mudado para '%s', devido o conflito de clans ou suspeita de Fake Tag", name);
SendClientMessage(playerid,0x7777FF,string);
}
}

[TUT] Strlen
Introdução:
Pois bem chegando a nossa Última função vou explicar um pouco melhor sobre isto, vejam strlen é usada para Retornar um Tamanho de uma String
Digamos:
'Eu Sou o DraKoN'
Contando o número dessa frase obtivemos 16 Caracteres ( ou to mal de conta -q)
Para usar com strlen podemos usar da seguinte forma:
Em OnPlayerText

if(strlen(text) > 100) return SendClientMessage(playerid, COLOR_GREY, "Seu Texto tem mais que 100 Caracters")
EXPLICANDO:
if Condicional 'SE'
strlen(text) Lê o tamanho do Texto
> 100 Se for maior que 100 Envia Mensagem Indicando

Otimizar o Código sem precisar usar funções de Strings

// Essa forma de função é mais otimizada por não chamar nenhum função,além de poder ser usada como STRFIND,STRCMP, e ainda STRLEN em certas formas

/* EXAMPLE */

if(text[0] == ' ')// Seu Texto não tem Caracteres (strlen)
if(text[0] == 'A')//Seu texto tem "A"
Bom chegamos ao fim de mais um Tutorial,aqui algumas funções de string também usadas

Strcmp: Compare two strings to check if they are the same. Strfind: Search for a string in a string. Strtok: Get the next word/parameter in a string. Strdel: Delete part of a string. Strins: Insert text into a string. Strmid: Extract part of a string into another string. Strpack: Pack a string into a destination. Strval: Convert a string into an integer. Strcat: Concatenate two strings into a destination reference.
Tutorial Criador por DraKoN, Agradecimento a Dark Team PT & Flávio Toribio

TUT] Sistema de Gangs (/gang criar)


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:

pawn Code:
#define MAX_GANGS 32 #define MAX_GANG_PLAYERS 16 #define SEM_GANG 0
Nesta duas Diretivas acima iremos definir o número máximo que o Loop para criar Gang pode chegar (32) e o numero máximo de players em uma gang (16), enquanto a SEM_GANG é a diretiva dos players que serão sem gang (0)

Vamos agora fazer as Arrays para a Gang:
Ainda no Topo:

pawn Code:
new gangInvite[MAX_PLAYERS]; new PlayerInGang[MAX_PLAYERS]; new gangMembers[MAX_GANGS][MAX_GANG_PLAYERS];//Array para Enviar Mensagem posteriormente
Essa Array será usada para definir se o player esta pronto ou não para entrar para Gang, e a Array 'PlayerInGang' é para ver o ID da gang do player...
Claro que isso pode ser substituido por PVARS para ficar mais otimizado,enfim.


Em OnGameModeInit

pawn Code:
if(!dini_Exists(Archivo)) { dini_Create(Archivo); dini_IntSet(Archivo, "GangsCreates", 0); }
[i] Isso daqui cria o Arquivo para fazer o ID da Gang Posteriormente

Agora vamos ao comando em
OnPlayerCommandTex:
GangEntrar:

pawn Code:
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 Code:
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; }

Primeiramente vamo
criar um Loop para definir o ID da Gang
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 Code:
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 Code:
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
Então para Carregar:

pawn Code:
stock ler_nome(gangid) { new arquivo[128]; format(arquivo,sizeof(arquivo),"%i.ini",gangid); format(arquivo,sizeof(arquivo),dini_Get(arquivo,"Nome")); return arquivo; }
então basta fazer

pawn Code:
ler_nome(GetPlayerTeam(playerid));//Lê o nome da gang em arquivo

Agora Vamos Criar o
Chat da Gang:


pawn Code:
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; }

Agora a
Stock que Envia Mensagem para a Gang Internamente:

pawn Code:
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; }

Agora Final GM:


pawn Code:
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:

http://forum.sa-mp.com/showthread.php?t=143646

Eu Fiz o TUTO Usando gTeams para ser compactível com outros assim como do andmeida10

[TUT/INFO] Acessar Fórum/Wiki SA:MP (Oficial)

Já Vou Avisando é um Tuto Noob, é uma Dica...
Bom só vim aqui dar um dica rápida de como acessar a Wiki em Cache do Google Enquanto Esta OFF:

Acesse
www.google.com.br


Pesquise Sua Função:
Ex:
GetTickCount


Faça o que se pede na imagem:




OBS:
A mesma coisa para Fórum, Porém precisa-se saber nome do tópico ou uma palavra chave para acha-lo no
Google
NOTA: Existe uma Wiki Antiga antes da 0.3, Clique Aqui

Lembrem-se: para mais informações:



[TUT] Todos Players (new i;)

Bom muita gente se sente na dúvida de como fazer um comando para todos online Ex:
/darvida

E Acontece a Todos Players

Aqui seria um comando simples, no nosso exemplo será para Setar Vida:

if(!strcmp(cmdtext, "/darvida", true))
{
SetPlayerHealth(playerid,100);
return 1;
}

Observem o Comando Simples Apenas Ocorre com PlayerID

EXPLICAÇÃO DO CODE:

SetPlayerHealth -> Seta vida do Player
playerid -> A Quem Ocorrerá,(no caso o player que digita o CMD)
100 -> Valor da Vida
/darvida -> Comando


Então Iremos Otimizar(BR) o nosso pequeno comando para todos players

Ficando Desta Forma:

if(!strcmp(cmdtext, "/darvida", true))
{
for(new allplayers = 0; allplayers < class="pawncomment" style="color: rgb(0, 119, 0) !important; ">/* O CÓDIGO DO COMANDO IRÁ AQUI*/

SetPlayerHealth(allplayers,100);
}
return 1;
}
Então Notem que Substituímos playerid -> allplayers

Porque Isso?
Pois Ao Code:
Explicando O:
for(new allplayers = 0; allplayers <>:
new allplayers = 0; -> Indica que Começa os IDs Do Zero
allplayers <> -> Indica que allplayer deve ser menor que GetMaxPlayers (Slots Server)
allplayers++ -> Irá Aumentar allplayers do 0 até chegar a GetMaxPlayer (Slots do Server)

Para Adicionar ao Comando nesse citamos apenas:

for(new allplayers = 0; allplayers < GetMaxPlayers(); allplayers++)
{
/* O CÓDIGO DO COMANDO IRÁ AQUI*/
}



EXPLICANDO O COMANDO:

Sendo Assim ao Substituir playerid por allplayers ele irá realizar a checagem de todos IDs assim ocorrendo com Todos Slots do Server...

Posso Otimizar o Code?

Claro que pode, para não ficar jogando foras IDs, isto é aplicar a ação a IDs Off-line você pode Realizar a Checagem com

if(!IsPlayerConnected(allplayers))

Pode Também Tornar CMD apenas para Admin:

IsPlayerAdmin
Entre outras Funções

Nota:
Normamente Usam
new i; eu coloquei new allplayers, para ficar parecido com PlayerID, assim facilitando a vocês...


::::::::::::::::::::
Criado por
DraKoN
::::::::::::::::::::

Copyright
Pawn SA:MP (hsuahsuhas)