{ 1 } ~ Introdução
- O Inicio da programação passa por aqui, criação de comandos, usando parâmetros e variáveis.
{ 2 } ~ Nomes Comuns
- :
- @ Includes
- Includes são uma extensão de funções armazenadas em arquivos dentro da pasta includes.
@ FilterScript
- FilterScript é também uma extensão só que completamente diferente, uma FilterScript pode usar includes com ela, numa FilterScrit normalmente são usadas as mesmas CallBacks do GameMode, algumas com nome diferente. FilterScript pode ser armazenado carros, comandos e etc...
@ CallBacks
- As popularizadas publics.
{ 3 } ~ Explicando CallBacks
- :
- Código:
public OnGameModeInit() /* Esta CallBack inicia o GM, nela são armazenadas timers globais, carros e objetos. */
{
SetGameModeText("Nome do GameMode");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // Explicando a baixo
return 1;
}
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
0 // Numero da Skin
1958.3783 // Coordenada X
1343.1572 // Coordenada Y
15.3746 // Coordenada Z
269.1425 // Rotação
Os 0,0,0,0,0,0 são explicados aqui -> http://wiki.sa-mp.com/wiki/AddPlayerClass
- Código:
public OnGameModeExit() // CallBack que fecha/desliga o GameMode
{
return 1;
}
- Código:
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
- Código:
public OnPlayerConnect(playerid)
{
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
return 1;
}
- Código:
public OnPlayerCommandText(playerid, cmdtext[])
{
return 0;
}
{ 4 } ~ Criando um comando
- :
- Código:
if (strcmp(cmdtext, "/spawn", true) == 0) {
SpawnPlayer(playerid);
SetPlayerVirtualWorld(playerid, 0);
SetPlayerInterior(playerid, 0);
return true;
}
- SpawnPlayer(playerid); Seta o Player para a CallBack OnPlayerSpawn
- SetPlayerVirtulWorld(playerid, 0); Esta função é usada pra definir o "mundo" do player, o "mundo" padrão é o 0, mas pra que queremos mandar o player para outro mundo? O_O, simplesmente com isso pode usar 2 interiores ou 2 locais para a mesma função sem dar conflito.
- SetPlayerInterior(playerid, 0); Seta o interior do player, é obrigatório o uso dele para mandar o player para um interior que seria um local definido pelo SA-MP.
@ Parametros
A base para usar parâmetros na linguagem Pawn sem processadores de comando é a strtok, então, CASO AINDA NÃO TENHA,
No começo da CallBack OnPlayerCommandText
- Código:
new idx, tmp[40];
cmd = strtok(cmdtext, idx);
No final do Gamemode
- Código:
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;
}
Tentem entender este comando \/
- Código:
if (strcmp(cmd, "/tapa", true) == 0) {
if (IsPlayerConnected(playerid)) { // Player tem que ter passado pela CallBack OnPlayerConnect
tmp = strtok(cmdtext, idx); // Definida acima
if (!strlen(tmp)) { // Parametro 1, se nn tiver pelo menos 1 parametro após o comando, ele retorna isto
SendClientMessage(playerid, CINZA, "USE: /tapa [id]");
return true;
}
new iddocmd;
new Float: x, // Coordenada X
Float: y, // Coordenada y
Float: z; // Coordenada z
iddocmd = ReturnUser(tmp); // Id que recebeu o comando
if (IsPlayerConnected(iddocmd)) { // Player que recebeu o cmd tem que ter passado pelo OnPlayerConnect
if (iddocmd != INVALID_PLAYER_ID) { // Verifica se o Id é valido
GetPlayerName(iddocmd, giveplayer, sizeof(giveplayer)); // Pega o nome da pessoa que recebeu
GetPlayerName(playerid, sendername, sizeof(sendername)); // da que usou
new string[128]; // Armazena os dados abaixo
format(string,sizeof(string),"%s deu um tapa em %s .", sendername, giveplayer);// sendername e giveplayer são os nomes pegados acima
SendClientMessageToAll(-1,string); // Manda a msg formatada acima
GetPlayerPos(iddocmd, x, y, z); // Pega a posição de quem usou o cmd
SetPlayerPos(iddocmd, x, y, z + 12); // Seta a posição de quem usou o cmd e almenta o Z que é a altura em + 12
}
}
}
return true;
}
{ 5 } ~ Créditos
- :
- - DouglasRodrigues ~ [pds]Team
Tópico em construção ~ Sujeito a edições.
To com um p#ta de um sono, fui.
To com um p#ta de um sono, fui.