[GM] New City

quarta-feira, 18 de abril de 2012

New Virtual City RPG


• Bom pessoal, venho postando o New Virtual City, um GameMode cheio de diversão, simulando a vida real.


• Algumas coisas:


Sistema de casas, veiculos, sistema de propriedades (simples), e profissões, relógio UP (contagem regressiva para upar), sistema de corregedoria e de moderador e muitas outras coisas que você só poderá conferir jogando, obrigado.


Comandos básicos:


/Comandos
/ComandosA
/ComandosM
/ComandosC


Baseado no Vida Bandida v3.0, com textos e alguns BUGS corrigidos e algumas funções implementadas, espero que vocês gostem.


Imagens:






[APP] Josma SA:MP Guide

Introdução.
Ano passado dei inicio à um projeto que acabei abandonando em cerca de 40% por falta de tempo e de ânimo, à algumas semanas me deu vontade de terminar esse projeto e conforme meu aniversário foi ficando mais próximo a vontade aumentou, tendo meu ânimo de volta e agora com um pouco mais de tempo dei sequencia no projeto porem, decidi lança-lo hoje 11/04, um prazo muito curto para fazer 60% do projeto, não pretendia lançar uma segunda versão, lançaria como final mas consequente à falta de tempo não pude colocar no programa tudo o que gostaria e não está tão otimizado quanto eu poderia otimizar principalmente na parte de loops e imagens apesar de ainda assim ser um programa leve.
Diante disso, decidi lançar essa versão como BETA, lançarei uma posteriormente pode demorar um mês ou dois mas será praticamente refeita do zero com o dobro ou mais de recursos e mais otimizado.
Então, desde já, peço opiniões e principalmente sugestões sobre como pode ser a versão final.


Descrição:
Este programa possui uma série de abas, são 10 ao total, cada aba com uma categoria de utilidades sendo elas: "Inicio, tutoriais, callbacks, funções, utilidades, códigos úteis, programas, dicas e sites."
Em cada aba ou pagina há um botão de ajuda instruindo sobre o funcionamento da pagina.


Video:


Fixa técnica:
004 - Variáveis globais
036 - Tutoriais
010 - Paginas
030 - Callbacks
344 - Funções
211 - Veículos
031 - Utilidades
033 - Códigos úteis
019 - Programas
010 - Dicas
014 - Sites
214 - Imagens
011 - Listas
014 - Campos de texto
062 - Botões
036 - Links

Créditos: Josma CMD - Criador do programa
Shickcard - Me ajudou no esquema pra colocar uma imagem de background.
Shelby - Criou a imagem "Progressão Pawn" que eu usava na versão de testes e coloquei na vinheta.
Pedro Miranda - Sugeriu a adesão do "Guide" ao nome do projeto.
Gustavo_Araújo - Me deu boas sugestões. 

[FS] Fala

quarta-feira, 25 de janeiro de 2012

Você digita /falar [texto] e todos que estão no servidor vão ouvir aquela mulher do google tradutor dizendo o texto que você escreveu.


ou você pode usar /conversar [id] [texto] e apenas o jogador que tiver o ID digitado ouvira a 
mulher falando.

Video: 


[GM] Brasil Drift Forever

terça-feira, 24 de janeiro de 2012

rasil Drift Forever

Algumas Informações


Possui sistema de /comandos por TextDraw
Sistema de Tunar
Sistema de Players Online
Sistema de Teleporte por DIALOGO
Sistema de Fazenda para VIPS
Sistema de Registro
Sistema de comandos para Admins Imbutido
Sistema de /infoadmin.


E muito mais coisas.

Divirta-se com o GameMode mais Não retire os Créditos

[GM] CrimCity RPG

CrimCity RPG

Servidor RPG versão 0.3b

Possui 16 Organizações:
-PM
-GOE
-PF
-Exercito
-FAB
-FARC
-AlQaeda
-Governo
-Assassino
-Repórter
-Yakuza
-Máfia
+ 4 Gangs!

Possui 14 Empregos:
- Mendigo
- Detetive
- Ladrão
- Vendedor De Armas
- Vendedor De Drogas
- Taxista
- Hacker
- Mecânico
- Médico
- Advogado
- Entregador De Pizza
- Pescador
- Padre
- Macumbeiro
- Cientista

Sistema de Faculdade

Sistema de Aplicação de Dinheiro

GangZone salváveis e não usa comando para dominar e sim permancencia da gang no território.

Sistema de Itens

Ao morrer, dinheiro/armas/itens que estava com você cai no chão.

Atualização de VIPs automático, você seta a quantidade de dias e atualiza automaticamente o vip do player.

Não é GodFather editado

Isso e muito mais! 


[TUT] Completo usando DFile

Descrição:

Bom, estou aqui para ensinar quem ainda não sabe sobre como utilizar o dfile.
Pra quem não sabe o dfile é um gerenciador de arquivos, muitos chamam de database, cache enfim, a função dele é intermediar entre o HD principal onde estão as informações até o solicitante da informação, em resumo com ele você poderá salvar informações como nível de admin, textos, logs ou qualquer coisa do gênero.

Funções:

Escrita e leitura:
► dfile_WriteInt(Tag, valor);
► dfile_WriteBool(Tag, true/false);
► dfile_WriteFloat(Tag, valor fracionado);
► dfile_WriteString(Tag, Texto);
► dfile_ReadInt(Tag);
► dfile_ReadBool(Tag);
► dfile_ReadFloat(Tag);
► dfile_ReadString(Tag);
► dfile_ReadPerseString(Tag, string);


Criação e remoção:
► dfile_Create(Arquivo[]);
► dfile_Delete(Arquivo[]);
► dfile_CreateDirectory(Pasta[]);
► dfile_DeleteDirectory(Pasta[]);


Verificação e outros:
► dfile_OpenFile(Arquivo);
► dfile_SaveFile();
► dfile_CloseFile();
► dfile_FileExists(Arquivo[]);
► dfile_DirectoryExists(Pasta[]);
► dfile_RenameFile(Arquivo[], NovoNome[]);
► dfile_IsSet(Tag);
► dfile_UnSet(Tag);


Como usar:

Bom, acima vocês viram quais são as funcionalidades do dfile, aprenderemos agora como usa-las com exemplos.

A programação em si segue uma lógica muito básica, assim como no seu dia-a-dia na programação você deve seguir etapas, exemplo.
Você quer setar um valor em um arquivo, antes você deverá verificar se ele existe, caso não exista você deverá cria-lo, nomea-lo, salva-lo e fecha-lo. Então, faremos isso.
Caso você tente escrever algo em um arquivo que não existe logicamente você não conseguirá.

► dfile_FileExists(Arquivo[]);
► dfile_OpenFile(Arquivo);
► dfile_SaveFile();
► dfile_CloseFile();


if(dfile_FileExists("Progressão.ini");

{

dfile_Open("Progressão.ini");

//Funções de escrita

SaveFile();

CloseFile();

}

Explicação:
Bom, com esses passos iremos verificar se o arquivo Progressão.ini existe na scriptfiles usando o id(se) e o dfile_FileExists... caso ele exista, ele após a chave { será aberto usando dfile_Open("Progressão.ini"); Será escrito algo nele(Você deverá usar a função de escrita no lugar da anotação), após isso será salvo o arquivo e será fechado.

Por que no SaveFile e Closefile não precisa do parametro(Arquivo)? Simples, porque a ação SaveFile e CloseFile são direcionadas ao arquivo aberto no momento... Diferente de Dini, o DFile abre apenas o arquivo necessário evitando assim muitas contas desnecessárias por segundo.

► dfile_Create(Arquivo[]);
► dfile_WriteInt(Tag, valor);
► dfile_WriteBool(Tag, true/false);
► dfile_WriteFloat(Tag, valor fracionado);
► dfile_WriteString(Tag, Texto);




if(!dfile_FileExists("Progressão.ini"))//Verifica se NÃO existe por causa do ! Exclamação

{

dfile_Create("Progressão.ini"); //Caso não exista ele criará, pois está entre as chaves

}

dfile_Open("Progressão.ini");

dfile_WriteInt("NumeroInteiro", 12345);     //Numeros inteiros, sem fração

dfile_WriteBool("VerdadeiroOuFalso", true); //Variável booleanea, true ou false = verdadeiro ou falso

dfile_WriteFloat("NumeroFracionado", 1234.56789); //Numeros fracionados como coordenada de mapas, quantia de vida entre outros

dfile_WriteString("TextoQualquer", "Progressão Pawn, envolvendo jogadores revolucionando servidores"); //Qualquer tipo de texto

dfile_SaveFile();

dfile_CloseFile();


Explicação:
Caso o arquivo "Progressão.ini" não exista ele será criado pois está entre as chaves, após ele ser criado, será aberto e então será escrito escrito as informações no arquivo, WriteInt serve pra escrever numeros inteiros sem fração, é aceito numeros de 0 à 9(Claro, podendo ser juntos formando dezenas, centenas e assim por diante).
WriteBool salva valores booleaneos que são true/false verdadeiro/falso positivo/negativo.
WriteFloat salva valores fracionados como a coordenada X, Y, Z do mapa entre outras coisas.
WriteString Salva qualquer tipo de texto, sendo ele junto com números ou não, apenas números ou apenas letras, geralmente usado para salvar senhas/logs entre outras informações.
Após escrever esses dados no arquivo ele será salvo e fechado, é bom lembrar que caso você não salve este texto ao fechar o arquivo já não será mais possível ler os dados no arquivo.

► dfile_ReadInt(Tag);
► dfile_ReadBool(Tag);
► dfile_ReadFloat(Tag);
► dfile_ReadString(Tag);


new varInt, Float:varFloat, bool:varBool, varString[128];

if(dfile_FileExists("Progressão.ini"))//Verifica se existeo arquivo

{

dfile_Open("Progressão.ini");                //Caso exista será aberto

varInt = dfile_WriteInt("NumeroInteiro");     //O numero inteiro nesta tag será escrito na varInt

varBool = dfile_WriteBool("VerdadeiroOuFalso"); //O valor bool que estiver nesta tag será escrito na varBool

varFloat = dfile_WriteFloat("NumeroFracionado"); //O numero frácionado que estiver nesta tag será escrito na varFloat

varString = dfile_WriteString("TextoQualquer"); //O texto que estiver nesta tag será escrito na variável varString

dfile_CloseFile(); //Fechará o arquivo sem salvar pois você apenas fez leituras e não alterou nada

}


Explicação:
O script criará as variáveis varInt, varFloat, varBool e varString cada uma com suas respectivas tags, caso o arquivo exista a varInt terá o valor da tag NumeroInteiro atribuído a ela. a varBool terá o valor da tag VerdadeiroOuFalso atribuído à ela, a varFloat terá o valor da tag NumeroFracionado atribuído à ela e a varString terá o texto na tag TextoQualquer atribuído à ela.
Você pode usar também o dfile_ReadPerseString que compara uma string à tag.

► dfile_Create(Arquivo[]);
► dfile_Delete(Arquivo[]);
► dfile_CreateDirectory(Pasta[]);
► dfile_DeleteDirectory(Pasta[]);


if(dfile_FileExists("Progressão.ini"))

{

dfile_Delete("Progressão.ini"); //Deleta o arquivo se existir

}

if(!dfile_FileExists("Progressão.ini"))

{

dfile_Create("Progressão.ini"); //Cria o arquivo se não existir

}



if(!dfile_DirectoryExists("ForumSamp"))

{

dfile_DCreateirectory("ForumSamp"); //Cria a pasta se não existir

}

if(dfile_DirectoryExists("ForumSamp"))

{

dfile_DeleteDirectory("ForumSamp"); //Deleta a pasta se existir

}


Explicação: Nas anotações.


► dfile_RenameFile(Arquivo[], NovoNome[]);
► dfile_IsSet(Tag);
► dfile_UnSet(Tag);



if(dfile_FileExists("Progressão.ini"))

{

if(dfile_IsSet("Exemplo"); //Verifica se a TAG Exemplo tem algum valor

{

dfile_UnSet("Exemplo"); //Tira o valor da TAG Exemplo se existir

}

return 1;

}




dfile_RenameFile("Progressao.ini", "ProgressaoPawn.ini");

Explicação:
Se o arquivo Progressão.ini existir ele vai verificar se a tag 'Exemplo' tem algum valor setado usando dfile_IsSet e caso tenha um valor setado ele irá retirar este valor usando dfile_UnSet.


[TUT] Criando switch [PP]





O que é um switch?
Switch é um comparador de resultados semelhante ao if e else if porem com uma estrutura diferenciada, em alguns casos chega à ser mais rápido(caso usado corretamente com auxilio de break).

Exemplo de uso:
Vamos tomar por exemplo o comando /admins, em vez criarmos um if seguido de vários else if pra cada nível de admin à aparecer no /admins precisaremos apenas criar um switch(função) seguido de cases, o case servirá como o else if mas de uma maneira mais compacta e otimizada pois só armazenará o numero(enum) à ser verificado, abaixo o exemplo do /admins por if e o /admins por switch.


if (strcmp(cmd, "/admins", true) == 0)

{

for(new i = 0; i <= MAX_PLAYERS; i++) {     if(IsPlayerConnected(i) == 1 && PlayerInfo[i][pAdmin] > 0)  {

    if(PlayerInfo[i][pTrampo] == 1) { GetPlayerName(i, sendername, sizeof(sendername));

if(PlayerInfo[i][pAdmin] == 1)

{

    format(string, 256, "Nome: %s [Moderador] (Trabalhando)", sendername);

SendClientMessage(playerid, COR_ADMINS, string);

}

if(PlayerInfo[i][pAdmin] == 2)

{

format(string, 256, "Nome: %s [Administração Nível 2] (Trabalhando)", sendername);

SendClientMessage(playerid, COR_ADMINS, string);

}

if(PlayerInfo[i][pAdmin] == 3)

{

format(string, 256, "Nome: %s [ Administração Nível 3] (Trabalhando)", sendername);

    SendClientMessage(playerid, COR_ADMINS, string);

}

}

}

return 1;

}


O exemplo acima mostra como seria um /admins usando else if, veja como ficaria este comando usando switch abaixo.

if (strcmp(cmd, "/admins", true) == 0)

{

 for(new i = 0; i <= MAX_PLAYERS; i++)  {      switch(PlayerInfo[i][pAdmin])//Função a ser verificada   {       case 1: { format(string, 256, "Nome: %s [Moderador] (Trabalhando)", sendername); SendClientMessage(playerid, COR_ADMINS, string); } //Se a função verificada for igual a 1       case 2: { format(string, 256, "Nome: %s [Administrador nível 2] (Trabalhando)", sendername); SendClientMessage(playerid, COR_ADMINS, string); } //Se a função verificada for igual a 2       case 3: { format(string, 256, "Nome: %s [Administrador nível 3] (Trabalhando)", sendername); SendClientMessage(playerid, COR_ADMINS, string); } //Se a função verificada for igual a 3       default: { Aqui a função a ser execultada caso nada se iguale aos resultados acima. }      }  }     return 1; }


É lógico que nem todos os comandos /admin serão assim.

Criando o seu switch:
Crie seu switch com a função à ser verificada que quiser, mas siga este formato abaixo:

switch (Função) //Coloque por exemplo um PlayerInfo[player][info] ou qualquer outra coisa

{

 case 1:

 {

  //O que deve ser executado caso seja igual a 1

  return true;

 }

 case 2:

 {

  //O que deve ser executado caso seja igual a 2

  return true;

 }

 case 3:

 {

  //O que deve ser executado caso seja igual a 3 }

  return true;

 }

 default: //Não obrigatório

 {

  //O que deve ser executado caso não seja igual aos exemplos acima

 }

}


Lembrando, não necessariamente o resultado deverá seguir este padrão de 1, 2, 3.... Você tem total liberdade pra pular ou adequar valores.

Você pode também modificar a forma do case, pra procurar por mais de um resultado como no exemplo abaixo:

case 1, 2, 3:

{

 //O que deve ser executado caso seja igual a 1, 2 ou 3

 return true;

}


em um if você teria que usar algo maior como este abaixo

if (Função == 1 || Função == 2 || Função == 3) //Ou como os valores são consecutivos usar operadores relacionais < >

{

 O que deve ser executado caso a função seja igual a 1, 2 ou 3

 return true;

}


Você pode também verificar resultados de um numero à outro, como no exemplo abaixo.

case 1 .. 10:

{

 //O que deve ser executado caso o resultado se enquadre entre 1 e 10

 return true;

}


Em if ficaria assim

if (Função >= 1 && Função <= 3) {  //O que deve ser executado caso a Função se enquadre entre ou igual 1 ou 4  return true; } 


Abaixo um exemplo bem distinto dos cases:

if (strcmp(cmd, "/org", true) == 0)

{

switch (PlayerInfo[playerid][pMembro])

{

 case 1 .. 3:

 {

         SendClientMessage(playerid, Cor, "Você pertence a uma org igual ou entre 1 e 3");

 }

 case 7, 8, 10:

 {

         SendClientMessage(playerid, Cor, "Você pertence a org 7, 8 ou 10");

 }

 case 4:

 {

         SendClientMessage(playerid, Cor, "Você pertence a org 4");

 }

 default:

 {

         SendClientMessage(playerid, Cor, "Você pertence a uma org que não é 1, 2, 3, 4, 7, 8 ou 10");

 }

}

return 1:

}


Qualquer duvidas é só perguntar, como sempre.
Créditos: Josma_CMD
Agradecimento à: Progressão Pawn