25.06.2012, 22:13
Eu montei um gamemode faz anos luz, explicando as funзхes nativas..
http://pastebin.com/ug6XyG48
Source:
** Usei PHP para destacar o cуdigo.
http://pastebin.com/ug6XyG48
Source:
PHP код:
/*
Pequeno tutorial de como criar um GameMode TDM
facilmente, otimizado e com funзхes nativas.
Explicaзгo por min(Garfield/SuYaNw).
ATENЗГO,
- Nгo edite o gamemode, apenas leia com atenзгo
e tente fazer o seu prуprio, e caso tenha dъvidas,
antes de chegar criando tуpico, vб na Wiki.sa-mp,com.
Cordialmente,
G.SuYaNw Dбcio.
*/
#include a_samp
// Bom, caso queira colocar mais "Times", coloque "TEAM_NOME_TIME".
#define TEAM_HUMANS (10)
#define TEAM_ZOMBIES (15)
public OnGameModeInit()
{
// AddPlayerClassEx(teamid, skin, Float:x, Float:y, Float:z, Float:Angle, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo)
AddPlayerClassEx(TEAM_HUMANS, 100, 2096.2456,1285.5159,78.1742, 0.0, 0,0,0,0,0,0); // Time Humanos - CLASSE 0
AddPlayerClassEx(TEAM_ZOMBIES, 128, 2096.2456,1285.5159,78.1742, 0.0, 0,0,0,0,0,0); // Time Zombies - CLASSE 1
// Utilizamos AddPlayerClasseEx para quando o membro da mesma equipe
// Atirar no outro membro da mesma equipe (TeamKill), nгo perde vida
// Assim Evitando "Team Kill".
return true;
}
public OnPlayerRequestClass(playerid, classid)
{
switch(classid)
{
case 0:
{
// Utilizamos tambйm o "CLASSEID", o Classid й a sequкncia das classes
// que foram criadas, como no caso acima, a classe "Humanso" foi criada
// Antesq ue a classe Zombies, entгo a classe 'Humanos' й 0.
// e a classe zombie й 1.
SetPlayerTeam(playerid, TEAM_HUMANS);
// Agora, na funзгo "SetPlayerTeam" para indicar qual team o jogador
// pertence, normalmente utilizamos para fazer o Anti- Team Kill.
// Agora iremos mandar uma mensagem na tela do player dizendo qual
// й o "Time" dele:
GameTextForPlayer(playerid, "Humanos", 2500, 3);
// Este texto irб desaparecer em 2 segundos e meio ( 25000 ).
}
case 1:
{
// --
SetPlayerTeam(playerid, TEAM_ZOMBIES);
GameTextForPlayer(playerid, "Zombies", 2500, 3);
// --
}
}
// Agora iremos mostrar aonde estarб o personagem para o player escolher:
// A funзгo abaixo, seta o mundo virtual do player, ele й quase infinto,
// imagine um mundo virtual, sendo um universo pararelo, o cara estб connectado
// ao servidor, mais nгo estб no mesmo "Universo" que os outros players xD.
// Por padrгo, o mundo virtual dos players й "0".
SetPlayerVirtualWorld(playerid, 0);
// Agora iremos indicar aonde fica a posiзгo do personagem, ou seja, aonde
// ele fica parao player escolher.
SetPlayerPos(playerid, 2096.2456,1285.5159,78.1742);
// Bom, na funзгo abaixo, iremos indicar aonde fica a posiзгo da cвmera do Player.
SetPlayerCameraPos(playerid,2097.145,1288.484,80.396);
// Agora iremos indicar a distвncia da camera com o personagem.
SetPlayerCameraLookAt(playerid,2096.245,1285.515,78.174);
// E por ъltimo, o Angulo.
SetPlayerFacingAngle(playerid, 0.0);
return true;
}
public OnPlayerConnect(playerid)
{
new // A funзгo "new" cria uma variбvel para alocar valores e/ou string's(textos).
string[128], // criamos a array que amarzenarб temporariamente uma mensagem.
Nome[24] // e esta array amarzenarб o nome do player. Nota-se que sempre a ъltima array/variбvel nгo tem vнrgula.
;
// Agora, com a funзгo "GetPlayerName", Pegamos o nome do player e
// 'Colocamos' na array "Nome".
GetPlayerName(playerid, Nome, 24);
// Com a funзгo "format", formatamos a mensagem para colocar o nome do player nela.
format(string, sizeof(string),"%s conectou ao servidor", Nome);
// Mandamos a mensagem formatada para todos do servidor.
SendClientMessageToAll(-1, string);
/*
Quando precisamos utilizar algum nome ou valor em uma string,
necessitamos formata-las, caso vocк tentar sem formatar, darб
erro ou bug, mais caso nгo precise introduzir valores/arrays adicionais,
basta vocк utilizar a funзгo sem criar uma array ou nome.
Vamos a um Exemplo:
Vamos dar "Bem Vindo" somente para o player que entrou.
*/
SendClientMessage(playerid, -1, "Seja bem vindo ao servidor");
/*
Nota-se que no exemplo acima, nгo precisa criar "string" ou "Nome",
porque vocк nгo irб usar.
*/
return true;
}
public OnPlayerSpawn(playerid)
{
// Vamos dar uma arma para o player, no caso a arma id "34" e com "1000" Balas.
GivePlayerWeapon(playerid, 34, 1000);
return true;
}