Criando um GameMode [GM] -
Miqueias Barros - 08.11.2011
Olб manolos do fуrum, neste tutorial irei ensinar passo-a-passo a como criar um gamemode do zero, aqui irei ensinar a fazer um GM com algumas funзхes mais usadas e irei explica-las totalmente, entгo vamos lб...
Algumas pessoas tem dъvida se
Pawno й a mesma coisa que
Pawn, entгo eu digo, nada a vкr...
O
Pawno й um programa editor de C++ que й usado para criar gamemodes, filterscript e includes..
O
Pawn й uma linguagem de script de cуdigo aberto dentro do
Pawno, que tem por abreviaзгo o formato do arquivo chamado
.pwn, o mesmo sу й reconhecido ao ser compilado apertando F5.
Entгo vamos ao restante..
No topo:
Esta include ela й a principal funзгo que faz com que seu GM funcione, motivo: dentro da include
a_samp.inc bem dizer tem tooodas as funзхes, exemplo: SetTimer, SetPlayerHealth, SetPlayerArmour, etc...
Depois vamos adicionar o:
Esta funзгo deve ser adicionada no GM ou seu GM nгo compila, entгo dentro desta
main() vocк pode adicionar uma
Pra que serve essa
print?
Entгo ela serve para mandar uma mensagem no log do seu servidor, que vocк pode adicionar em qualquer funзгo do gamemode, exemplo:
pawn Код:
main()
{
print("Servidor execultado com sucesso");
print("-------------------------");
print("Forum.SA-MP.com - Acesse!");
}
Ele enviarб as seguintes mensagens para seu
server-log.txt,
Servidor execultado com sucesso
-------------------------
Forum.SA-MP.com - Acesse!
Logo apуs vocк adiciona uma das principais funзхes de um gm
pawn Код:
public OnGameModeInit()
{
return 1;
}
Nesta funзгo vocк adiciona as funзхes que vai fazer funcionar no seu gm, exemplo: quero adicionar skins e veнculos, vocк usarб
pawn Код:
public OnGameModeInit()
{
AddPlayerClass(skinid, Float:X, Float:Y, Float:Z, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo);
AddStaticVehicle(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:angle, color1, color2);
return 1;
}
Que para aumentar o nъmero de skins e veнculos basta apenas vocк ir duplicando...
Logo apуs viemos fazer o:
pawn Код:
public OnPlayerRequestClass(playerid, classid)
{
return 1;
}
Aqui serб a visualizaзгo dos skins que terб no servidor, que para exibir as skins vocк usarб
SetPlayerPos
SetPlayerInterior
SetPlayerCameraPos
SetPlayerCameraLookAt
Essa sгo apenas algumas das funзхes mais usadas na
public OnPlayerRequestClass(playerid, classid) com seus links da
wiki com suas explicaзхes...
Voltando ao public anterior que fizermos e com suas funзхes ele ficaria deste modo:
pawn Код:
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, Float:x, Float:y, Float:z);
SetPlayerInterior(playerid, interiorid);
SetPlayerCameraPos(playerid, Float:x, Float:y, Float:z);
SetPlayerCameraLookAt(playerid, Float:x, Float:y, Float:z);
return 1;
}
Agora passando para o prуximo passo й o:
pawn Код:
public OnPlayerConnect(playerid)
{
return 1;
}
Nesta calbak й usada para quando o player se conecta ao servidor ou para carregar alguns sistemas ou funзхes, exemplo: sistema de login, entre outros que nгo me vem na cabeзa '-'
Aqui vai um exemplo de um cуdigo na
public OnPlayerConnect(playerid) que vai identificar quando o player se conecta ao servidor:
pawn Код:
public OnPlayerConnect(playerid)
{
new str[78], pnome[MAX_PLAYER_NAME];
GetPlayerName(playerid, pnome, sizeof(pnome));
format(str, sizeof(str), "%s (ID:%d) conectou-se ao servidor.", pnome, playerid);
SendClientMessageToAll(-1, str);
return 1;
}
Entгo aqui vai o nome das funзхes com seus links de explicaзхes na SA-MP Wiki
GetPlayerName
format
SendClientMessageToAll - OBS: Na wiki eles tгo dando a SendClientMessageToAll em uma sу linha como se fosse SendClientMessage, mais aqui neste tutorial avanзei um pouco fazendo com format '-', nгo й difнcil de entender
Prуximo passo serб o:
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
return 1;
}
Na
public OnPlayerDisconnect й quase a mesma coisa que o
public OnPlayerConnect sу que na
public OnPlayerDisconnect jб fala nй, quando o player desconecta do servidor.. й usado a mesma funзгo da que estб na
public OnPlayerConnect(playerid) nгo tem nada de difнcil
Prуximo passo й o:
pawn Код:
public OnPlayerSpawn(playerid)
{
return 1;
}
Esta calbak й a funзгo que o player nasce, que para fazer o player nascer й usado
SetPlayerPos e
SetPlayerInterior exemplo:
pawn Код:
public OnPlayerSpawn(playerid)
{
SetPlayerInterior(playerid, interiorid);
SetPlayerPos(playerid, Float:x, Float:y, Float:z);
return 1;
}
Lembrando que para pegar os interiores vocк deve entrar dentro do interior que deseja depois digitar /interior, vocк pode fazer com que o player dк spawn dentro de interior ou nгo...
Prуximo passo iremos mecher com:
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
return 0;
}
Hoje em dia, muitos scripters profissional ou atй mesmo iniciantes ou intermediбrios usam o
strcmp enquantos alguns usam
ZCMD, para dar inicio a criaзгo de um comando simples usaremos o seguinte:
pawn Код:
if(strcmp(cmdtext, "/seucomando", true) == 0)
{
//Funзгo
return 1;
}
Este й um comando para vocк ter uma noзгo de como se faz o comando, que o mesmo tambйm pode ser desta forma:
pawn Код:
if(strcmp("/seucomando", cmdtext, true, 10) == 0)
{
//Funзгo
return 1;
}
Vai dar na mesma coisa, sу que pelo que vimos fica maior nй? Dai vocк se pergunta o que aquele
10 faz ali? Entгo ela й uma string para o comando que nгo pode ser definida em nome, somente em nъmero.. O comando junto com a
public OnPlayerCommandText ficarб:
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/seucomando", true) == 0)
{
//Funзгo
return 1;
}
return 0;
}
Simples nй? Para finalizar o:
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
return 1;
}
Este й para vocк por dialogs com id direcionado em comandos, sistema de logins e etc... Para saber mais informaзхes sobre a OnDialogReponse acesse:
https://sampwiki.blast.hk/wiki/OnDialogResponse
Lб tem tudo sobre o OnDialogResponse..
Entгo й isso aк pessoal, espero que tenham gostado, lembrando que fiz este tutorial para quem й "INICIANTE" depois nгo fale besteira =}
Qualquer dъvida, pode postar ai!
Hб... Se eu esqueci de alguma coisa sу falar ok?
Obrigado a todos, grande abraзo!
Re: Criando um GameMode [GM] -
Vai_Besta - 08.11.2011
Bom mais o melhor metodo й o new.pwn
Re: Criando um GameMode [GM] -
Miqueias Barros - 08.11.2011
Quote:
Originally Posted by Vai_Besta
Bom mais o melhor metodo й o new.pwn
|
Sim, mais como eu disse
"...neste tutorial irei ensinar passo-a-passo a como criar um gamemode do zero...", nem usar base nenhuma nem do
new.pwn com as funзхes jб prontinhas e o manolo ir fazer, o carinha tem que vкr cada funзгo para poder tambйm decorar nй
Re: Criando um GameMode [GM] -
steki. - 08.11.2011
Eu nгo sei o que й tгo bom de aprender no new.pwn sendo que as pessoas que dizem isso ainda editam GF.
Re: Criando um GameMode [GM] -
Miqueias Barros - 08.11.2011
Quote:
Originally Posted by Stewie`
Eu nгo sei o que й tгo bom de aprender no new.pwn sendo que as pessoas que dizem isso ainda editam GF.
|
Poisй nй...
Sу fiz minha parte
Re: Criando um GameMode [GM] -
[O.z]Caroline - 08.11.2011
kkkkkkkkkkk
o mais engraзado й as pessoas que editam GF/Thug e querem ter moral...
Bom Tutorial!
Re: Criando um GameMode [GM] -
PlueX - 08.11.2011
\o/ Bom tutorial lek
Re: Criando um GameMode [GM] -
Miqueias Barros - 08.11.2011
Quote:
Originally Posted by [O.z]Caroline
Bom Tutorial!
|
Obrigado.
Quote:
Originally Posted by PlueX
\o/ Bom tutorial lek 
|
Valeu!!
Re: Criando um GameMode [GM] -
Josma_cmd - 08.11.2011
Quote:
#include a_samp
Esta include ela й a principal funзгo que faz com que seu GM funcione
|
Errado, a diretiva #include a_samp inclui a livraria a_samp ao seu cуdigo.
Quote:
main()
{
}
Esta funзгo deve ser adicionada no GM ou seu GM nгo compila
|
Errado, o main й como o cabeзalho do cуdigo, sem ele o cуdigo compila porem, й apresentado uma mensagem de erro na tela do console.
Quote:
print("Mensagem");
Pra que serve essa print?
Entгo ela serve para mandar uma mensagem no log do seu servidor
|
Errado, o print й uma funзгo de E/S = entrada e saнda de dados, ele serve pra imprimir uma mensagem а tela do console.
Quote:
Hoje em dia, muitos scripters profissional ou atй mesmo iniciantes ou intermediбrios usam o strcmp enquantos alguns usam ZCMD
|
strcmp nгo й um processador de comandos.
Quote:
Vai dar na mesma coisa, sу que pelo que vimos fica maior nй? Dai vocк se pergunta o que aquele 10 faz ali? Entгo ela й uma string para o comando que nгo pode ser definida em nome, somente em nъmero...
|
Errado, o 10 ali й o nъmero de cells que possui a string que vocк utiliza como comando claro, tambйm com o caracter NULL.
Quote:
Entгo й isso aк pessoal, espero que tenham gostado, lembrando que fiz este tutorial para quem й "INICIANTE" depois nгo fale besteira =}
Qualquer dъvida, pode postar ai!
Hб... Se eu esqueci de alguma coisa sу falar ok?
|
Como vocк disse, este tutorial й pra novatos, o que os novatos vгo pensar lendo tutoriais com cуdigos feitos de maneira errada onde nem mesmo o autor do tutorial sabe a real funзгo dos cуdigos utilizados?
Й por tutoriais como este que os novatos tem dificuldade em aprender e em um ato de desespero acabam baixando GF e colocando online servidores bugados o que consequentemente faz com que os players percam o interesse em samp todos os dias.
Eu nгo gostei por estar mal feito, por vocк querer explicar coisas de que nem vocк sabe.
Re: Criando um GameMode [GM] -
ReDKiiL - 08.11.2011
Код:
public OnPlayerConnect(playerid)
{
new str[78], pnome[MAX_PLAYERS];
GetPlayerName(playerid, pnome, sizeof(pnome));
format(str, sizeof(str), "%s (ID:%d) conectou-se ao servidor.", pnome, playerid);
SendClientMessageToAll(-1, str);
return 1;
}
LOL?
@topic
FicouBom Para Os NOvatos que Quiserem Comeзar do 0
nao ja comeзarem editando