30.05.2012, 21:15
Eaн pessoal, estava sem nada para fazer entгo decidi fazer um tutorial. Estava sem ideias e entгo fiz sobre SII mesmo, jб deve existir outros tutoriais por aн, mas acho que um a mais nгo faz mal ^^.
O sistema tem:
• Comandos para testes, sendo eles:
/profs - Aparece um Dialog com 3 empregos para pegar (Advogado, PM e mecвnico, й sу exemplos)
/skin [ID] - Para trocar Skin
/pedircontas - Para sair do emprego
/minhafrase - Veja a explicaзгo mais abaixo
Sistema de Frases
O sistema de frase foi criado sу pra ensinar como ler e escrever Strings, para nгo ficar sу nos nъmeros.
Ele funciona da seguinte forma:
Ao player desconectar й feito um random de mensagens e aн uma mensagem й setada no arquivo do player como frase.
Por isso existe o comando /minhafrase, para ver a ъltima frase que saiu pro player.
As contas sгo salvas na pasta Contas.
-O sistema de salvar & carregar nнvel de admin nгo foi testado porque nгo quis fazer o comando, tava com preguiзa.
-Caso encontrem algum bug ou erro me falem por favor.
-Se tiver sugestхes serгo bem vindas
-Como fica salvo:
Cуdigo (desculpem-me se estiver ruim de ler D: й que faзo todo code no pawno explicando jб):
O sistema tem:
• Comandos para testes, sendo eles:
/profs - Aparece um Dialog com 3 empregos para pegar (Advogado, PM e mecвnico, й sу exemplos)
/skin [ID] - Para trocar Skin
/pedircontas - Para sair do emprego
/minhafrase - Veja a explicaзгo mais abaixo
Sistema de Frases
O sistema de frase foi criado sу pra ensinar como ler e escrever Strings, para nгo ficar sу nos nъmeros.
Ele funciona da seguinte forma:
Ao player desconectar й feito um random de mensagens e aн uma mensagem й setada no arquivo do player como frase.
Por isso existe o comando /minhafrase, para ver a ъltima frase que saiu pro player.
As contas sгo salvas na pasta Contas.
-O sistema de salvar & carregar nнvel de admin nгo foi testado porque nгo quis fazer o comando, tava com preguiзa.
-Caso encontrem algum bug ou erro me falem por favor.
-Se tiver sugestхes serгo bem vindas
-Como fica salvo:
Код:
Skin=192 Admin=0 Score=1 Profissao=3 Frase=Se um dia te derem uma laranja, consiga mais 2 e faзa malabarismo no semбforo
pawn Код:
/* TUTORIAL FEITO POR ANINHAAH (HUMILDADEFOREVER)
(SALVAMENTO DE DADOS EM SII)
[COM COMANDOS PARA TESTES]
*/
#include <a_samp>
#include <SII>
#include <zcmd>
#define DIALOG_PROFISSOES 1 //define o ID de um Dialog
enum pInfo
{
Adm,
Prof,
Skin
};
new PlayerInfo[MAX_PLAYERS][pInfo];
//As funзхes acima irгo guardar as informaзхes do Player como Admin, Skin, Profissao e Score.
#pragma unused FrasesRandom//tava dando warning que nunca foi usado --'
new FrasesRandom[5][100] =//criacao das frases random
//5 = quantidade de frases e 100 = caracteres suportados
{
"Se um dia te derem uma laranja, consiga mais 2 e faзa malabarismo no semбforo",
"Lutar?Sempre. Perder? Talvez. Desistir?Jamais",
"A chuva cai em pй e corre deitada",
"Essas frases sгo mais idiotas do que as que tem no Bom dia & CIA o.O",
"Todos apresentadores da TV globinho sгo idiotas ou fingem ser."
};
//PROFISSOES
#define DESEMPREGADO 0 //Define o ID de Desempregado como 0
#define ADVOGADO 1 //Define o ID de Advogado como 1
#define PM 2 //Define o ID de PM como 2
#define MECANICO 3 //Define o ID de Mecanico como 3
public OnPlayerConnect(playerid)//[O que acontece quando um player conecta]
{//abre a public
CarregarPlayer(playerid); //Chama a funзгo (no caso Stock) de carregar os dados do player
SetPlayerScore(playerid, 1);//Seta score do player pra 1, caso use sistema de registro poe isso la
return 1;//retorna 1
}//fecha a public
public OnPlayerDisconnect(playerid, reason)//[O que acontece quando um player DESconecta]
{//abre a public
SalvarPlayer(playerid);//Chama a funзгo (no caso Stock) de salvar os dados do player
return 1;//retorna 1
}//fecha a public
public OnPlayerSpawn(playerid)//[Quando o player der spawn]
{//abre a public
SetPlayerSkin(playerid, PlayerInfo[playerid][Skin]);//Seta a Skin do player pro valor que estб na variavel PlayerInfo[playerid][Skin]
return 1;//retorna 1
}//fecha a public
CMD:pedircontas(playerid, params[])//Comando para ficar sem emprego
{//abre funcoes do CMD
PlayerInfo[playerid][Prof] = DESEMPREGADO;//Seta prof dele como DESEMPREGADO, ou seja, ID 0
SendClientMessage(playerid,-1,"Agora vocк estб desempregado");//Envia mensagem pro player dizendo que esta desempregado
return 1;//retorna 1
}//fecha funcoes do CMD
CMD:profs(playerid, params[])//Comando para aparecer o dialog de escolher profissao
{//abre funcoes do CMD
ShowPlayerDialog(playerid, DIALOG_PROFISSOES, DIALOG_STYLE_LIST, "Escolha uma profissao","Advogado\nPM\nMecanico","Pegar","Sair");
/*
playerid = pra quem sera mostrado o dialog
DIALOG_PROFISSOES = ID do Dialog
DIALOG_STYLE_LIST = Estilo do Dialog (no caso й o de lista)
"Escolha uma profissao" = Titulo do Dialog
"Advogado\nPM\nMecanico" = itens da lista
Ficarб assim a lista:
Advogado
PM
Mecanico
E o \n й para pular linha (nesse estilo de Dialog ele farб o texto depois do \n virar proximo item da lista)*/
return 1;//retorna 1
}//fecha funcoes do CMD
CMD:skin(playerid, params[])//Comando de trocar skin
{//abre funcoes do cmd
if(!strval(params)) return SendClientMessage(playerid,-1,"Use: /skin [ID]");//verifica se o player digitou um parametro, caso nao tenha digitado envia a mensagem de como usar o comando
SetPlayerSkin(playerid, strval(params));//seta a skin que o player digitou pra ele
return 1;//retorna 1
}//fecha funcoes do cmd
CMD:minhafrase(playerid, params[])//comando de ver a sua frase
{//abre funcoes do cmd
new string[120], file[70], nome[MAX_PLAYER_NAME];//cria 3 variaveis
//string = vai formatar o texto pra frase, file = vai formatar texto pro arquivo, nome = vai armazenar o nome do player
GetPlayerName(playerid, nome, sizeof nome);//pega o nome
format(file, sizeof file,"Contas/%s.ini", nome);//formata o texto pra usar como o arquivo
if(INI_Exist(file))//verifica se existe o arquivo formatado acima (pasta Contas/%s.ini) [%s й o nome do player])
{//funcoes que acontecerao caso exista o arquivo
INI_Open(file);//abre o arquivo
new frase[100];//cria um variavel onde ira armazenar a frase
INI_ReadString(frase, "Frase");//le a frase do player dentro do arquivo e seta o texto (frase) para a variavel Frase
format(string, sizeof string,"Sua frase й: %s", frase);//formata a mensagem com a frase do player
//Com SII nao da pra fazer: format(string, sizeof string,"Sua frase й: %s", INI_ReadString("Frase"));
SendClientMessage(playerid,-1, string);//Envia a mensagem pro player com a frase dele
INI_Close();//Fecha o arquivo
}//fecha a chave que foi aberta dps do if(INI_Exist..
return 1;//retorna 1
}//fecha funзoes do comando
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])//Quando um Dialog й mostrado
{//abre as funcoes da public
if(dialogid == DIALOG_PROFISSOES)//verifica se o ID do
{//abre as funcoes do dialog DIALOG_PROFISSOES (ID 1)
if(!response) return 1;//vai retornar 1 se o player clicar no segundo botгo ("Sair")
if(listitem == 0)//Primeiro da Lista - Advogado
{//abre funcoes do item 1 da lista
SendClientMessage(playerid, -1, "Agora vocк й advogado.");//Envia mensagem pro player dizendo que ele й advogado
PlayerInfo[playerid][Prof] = ADVOGADO;//Seta Prof como ID 1, ou seja, advogado
}//fecha funcoes do item 1 da lista
else if(listitem == 1)//Segundo da lista - PM
{//abre o item 2
SendClientMessage(playerid,-1,"Agora vocк й PM.");//Envia mensagem pro player dizendo que ele й PM
PlayerInfo[playerid][Prof] = PM;//Seta prof como ID 2, ou seja, PM
}//fecha o item 2
else if(listitem == 2)//Terceiro da lista - MECANICO
{//abre o item 3
SendClientMessage(playerid,-1,"Agora vocк й mecanico.");//Envia mensagem pro player dizendo que ele й mecanico
PlayerInfo[playerid][Prof] = MECANICO;//Seta prof como ID 3, ou seja, mecanico
}//fecha o item 3
return 1;//retorna 1
}//fecha as funcoes do dialog DIALOG_PROFISSOES
return 1;//retorna 1
}//fecha as funcoes da public
stock SalvarPlayer(playerid)//Inicio da Stock de salvar os dados do player
{//abre a stock
new file[70],nome[MAX_PLAYER_NAME];//File = Serб usada para formatar um texto com a pasta de onde й salvo as contas e o nome do player
//nome = onde serб armazenado o nome do player
GetPlayerName(playerid, nome, sizeof(nome));//Pega o nome do player
format(file,sizeof(file),"Contas/%s.ini", nome);//formata o texto falado acima
INI_Open(file);//abre o arquivo e caso nгo exista ele cria
PlayerInfo[playerid][Skin] = GetPlayerSkin(playerid);
INI_WriteInt("Skin", PlayerInfo[playerid][Skin]);//Seta o valor de PlayerDados[playerid][Skin] no arquivo
INI_WriteInt("Admin", PlayerInfo[playerid][Adm]);//Seta o valor de PlayerInfo[playerid][Adm] no arquivo
INI_WriteInt("Score", GetPlayerScore(playerid));//Seta o score "Getado" no arquivo
INI_WriteInt("Profissao", PlayerInfo[playerid][Prof]);//Seta o valor de PlayerInfo[playerid][Prof] no arquivo
new fraser = random(sizeof(FrasesRandom));//faz o random (da frase) e iguala ele а variavel "fraser"
INI_WriteString("Frase", FrasesRandom[fraser]);
//FraseRandom - Chama uma das frase. fraser dentro de FrasesRandom faz chamar o numero random que saiu
//E seta essa frase no arquivo do player
INI_Save();//Salva o arquivo
INI_Close();//fecha o arquivo
return 1;//retorna 1
}//fecha a stock
stock CarregarPlayer(playerid)//inicio da stock de carregar os dados do player
{//abre a stock
new file[70],nome[MAX_PLAYER_NAME];//File = Serб usada para formatar um texto com a pasta de onde й salvo as contas e o nome do player
//nome = onde serб armazenado o nome do player
GetPlayerName(playerid, nome, sizeof(nome));//Pega o nome do player
format(file,sizeof(file),"Contas/%s.ini", nome);//formata o texto falado acima
INI_Open(file);//abre o arquivo
PlayerInfo[playerid][Skin] = INI_ReadInt("Skin");//le o valor que esta na tag Skin dentro do arquivo e iguala a variavel do player
SetPlayerScore(playerid, INI_ReadInt("Score"));//le o valor que esta na tag Score dentro do arquivo e seta como Score do player
PlayerInfo[playerid][Adm] = INI_ReadInt("Admin");//le o valor que esta na tag Admin dentro do arquivo e seta como nivel de adm do player
PlayerInfo[playerid][Prof] = INI_ReadInt("Profissao");//le o valor que esta na tag Profissao dentro do arquivo e seta como profissao do player
INI_Close();//fecha o arquivo
return 1;//retorna 1
}//fecha a stock