[Vídeo] Feliz Ano Novo!

by Anônimo Postado segunda-feira, 29 de dezembro de 2008 às 17:53 2 comentários

Eu fiz esse vídeo no meu momento de tédio em comemoração ao ano novo, espero que gostem:

Cartazes Maliciosos Episódio 2

by Anônimo Postado sexta-feira, 19 de dezembro de 2008 às 12:20 1 comentários

Outro cartaz malicioso nas ruas da nova Liberty City em GTA IV:

Galinha gigante reduzida no GTA IV

by Anônimo Postado quinta-feira, 18 de dezembro de 2008 às 16:01 0 comentários

Perto do boliche da primeira ilha existe um local que está a famosa Galinha Gigante do GTA San Andreas em tamanho reduzido:

Galinha Gigante do GTA San Andreas:Perceba que apenas o tamanho e o que está escrito em cada uma estão diferentes.

Cartaz malicioso

by Anônimo Postado às 15:55 0 comentários

Um cartaz malicioso nas ruas da nova Liberty City em GTA IV:

[VIDEO] GTA IV em uma 8800GT

by Anônimo Postado às 15:35 1 comentários

E ai pessoal.

Instalei o GTA IV ontem e hoje fiz um vídeo mostrando como roda o GTA IV na seguinte configuração:

Configuração:

Video Mode: 1280x1024(75 Hz)
Texture Quality: High
Render Quality: Highest
Tudo no máximo

Meu PC:

GeForce 8800GT 512mb DDR3
Intel Core 2 Quad Q6600 2.4ghz
4gb DDR2
Asus P5W

FPS:

Dentro da cidade: 15~19
Na praia: 20~32

Usando patch de correção e commandline.txt

commandline.txt:
http://www.4shared.com/file/76615248/8d3b1d91/commandline.html

Patch 1.0.1.0:
http://files.rockstarwatch.net/patches/GTAIV_PC_Patch_1.0.1.0.exe


Aniversário do Blog - 1 ano de Cr0Nos Blog

by Anônimo Postado terça-feira, 9 de dezembro de 2008 às 11:06 0 comentários

Hoje dia 9 de dezembro é o aniversário do Cr0Nos Blog!
Agradeço a todo que visitaram/visitam o blog e que em apenas 1 ano de vida já tenha crescido tanto.
Obrigado a todos.

[TUTORIAL] Baixando pelo 4shared

by Anônimo Postado quarta-feira, 3 de dezembro de 2008 às 06:17 0 comentários

Estou vendo que muitos estão me perguntando como baixar pelo 4shared. Aqui vai um tutorial:

Primeiro clique no botão DOWNLOAD que você encontra no post:Você vai parar no site do 4shared. Terá um botão escrito "Download Now", clique nele:
Você terá que esperar dez segundos para poder fazer o download:Depois disso clique em "Click here to download this file":
Ai é só aceitar o download e esperar terminar:Feito por: Cr0Nos

Versão para PC de GTA IV terá capacidade de até 32 jogadores no multiplayer.

by Anônimo Postado terça-feira, 2 de dezembro de 2008 às 19:21 0 comentários

Segundo o site da IGN, o modo multiplayer de GTA IV versão PC terá capacidade de até 32 jogadores, sendo que nos consoles só tinha capacidade de até 16 jogadores.
Com exceção do modo Cops & Crooks que terá capacidade só para 16 jogadores.

Seu pc vai rodar GTA IV?

by Anônimo Postado às 19:14 0 comentários

Muitas pessoas vem perguntando se seu pc vai rodar GTA IV legal, mas para quem não sabe existe esse excelente site que verifica se seu pc roda os jogos que estão na lista. Vejam:


É muito simples fazer o teste, apenas escolha um jogo da lista(GTA IV incluso), clique no botão "Can You RUN It?" e espere o teste terminar para ver os resultados.

AVISO: Se pedir para instalar algo, instale! É necessario para poder realizar o teste.

Estava olhando uns videos feito pelo video editor, exclusivo do GTA IV para PC que foi lançado ontem(02/12/2008), e percebi que o logotipo do boliche do GTA IV é semelhante a um pênis. Vejam a screenshot:Olhe o que está atras do cara do lado esquero da imagem. Mais um easter eggs descoberto pessoal e ainda tem mais por vir!

[VIDEO] Cr0Nos Apanhando

by Anônimo Postado sexta-feira, 14 de novembro de 2008 às 16:48 1 comentários


Feito por: Algum desocupado.

Guerrilha Rock

by Anônimo Postado sábado, 1 de novembro de 2008 às 17:12 0 comentários

Guerrilha Rock, novo parceiro do Cr0Nos Blog. Lá você encontra downloads de CDs, jogos e muito mais. Acesse:

http://guerriliarock.blogspot.com/

Site 100% seguro e aprovado.

[ARTIGO] Guia para começar em PAWN para SA-MP

by Anônimo Postado segunda-feira, 20 de outubro de 2008 às 20:16 4 comentários

Nesse artigo venho dar dicas para vocês de como começar na linguagem pawn para desenvolvimento de gamemodes(modos de jogo) e filterscripts(arquivos feitos em PAWN para adicionar certos comandos, coisas etc. ao servidor).

OBS: Pawn NÃO É uma linguagem para SA:MP.

Primeiramente, programar para sa-mp não se aprende da noite pro dia, não é batendo palmas e dando três pulinho que você vai aprender!

PESQUISE! Você está com uma dúvida e não consegue resolver sua dúvida com pesquisa? PERGUNTE! Mas não peça coisas absurdas, idiotas e impossiveis, alias, somos programadores e não mágicos e nem empregados de vocês! Não se esqueça que os programadores não ganham nada para te ajudar, por isso não reclame se ele não quiser te ajudar, pois enche o saco resolver a dúvida dos outros, por causa que é sempre gente te perguntando coisas idiotas e absurdas que torra o saco, assim fazendo o programador te xingar depois que você falar: "Ajuda eu tio?".
Perguntar coisas como: "Como faz sistema de casa?". PÔ! Quer um cafézinho também?!
Claro, nao é pesquisando no google "Como faz um sistema de casa em pawn para SA:MP - San Andreas Multiplayer ou GTA Online, por favor google ache algum maldito resultado!!!" que você vai achar o que você quer. Por isso estude a linguagem pawn e use um negócio que existe pelo menos em maior parte dos seres humanos chamado C-É-R-E-B-R-O em vez de pedir coisas idiotas!
Matemática ajuda muito, não gosta de matemática? Diga tchau pawn e as linguagens de programação existentes!
Você tem imaginação? Oi pawn!
Você não gosta de ler tutoriais, ler apostilas e pesquisar por que tem preguiça? Diga tchau pawn e as linguagens de programação existentes de novo!
Estude gamemodes, filterscripts, o que for, mas leia, releia, releia de novo até entender tudo o que você quer entender.
O segredo é ter força de vontade e querer aprender e não ficar querendo tudo na mão beijada.
Ser iniciante não é desculpa para pedir coisas idiotas!

Alguns sites bons para aprender pawn:

Fórum oficial do SA-MP: http://forum.sa-mp.com

Caso não consiga entrar no forum, entre no site www.youhide.com e cole o link do forum lá para poder acessa-lo.

Leia os tutoriais básicos do blog: http://cronosbr.blogspot.com/2008/10/tutoriais-bsicos-de-pawn.html

Leia os tutoriais do blog: http://cronosbr.blogspot.com/search/label/Tutoriais%20de%20PAWN

Tire suas duvidas na comunidade: http://www.orkut.com.br/Main#Community.aspx?cmm=38308205 (mas sem pedir coisas idiotas e absurdas)

Ótimo site para aprender as coisas: www.google.com.br

Só isso pessoal, até mais!

Feito por: Cr0Nos

Tutoriais Básicos de PAWN

by Anônimo Postado às 20:14 0 comentários

Reuni todos os tutoriais básicos do blog para poder começar na linguagem pawn para SA:MP.

OBS: Pawn NÃO É uma linguagem SÓ para SA:MP.

Leia na ordem:

Criando servidor básico:
http://cronosbr.blogspot.com/2008/01/tutorial-criando-servidor-bsico.html

Guia para começar em pawn:
http://cronosbr.blogspot.com/2008/10/artigo-guia-para-comear-em-pawn-para-sa.html

Tutorial explicando o que é comentario e quando usa-lo:
http://cronosbr.blogspot.com/2008/09/tutorial-comentrios.html

Tutorial que explica o que é o comparador if e como usa-lo:
http://cronosbr.blogspot.com/2008/09/tutorial-o-comparador-if.html

Tutorial que explica o que são operadores relacionais e quando usa-los:
http://cronosbr.blogspot.com/2008/09/tutorial-operadores-realcionais.html

Artigo sobre o poder das arrays:
http://cronosbr.blogspot.com/2008/09/artigo-o-poder-das-arrays.html

Tutorial ensinando técnicas booleanas:
http://cronosbr.blogspot.com/2008/10/tutorial-tcnicas-booleanas.html

Super tutorial explicando muitas coisas uteis de pawn:
http://cronosbr.blogspot.com/2008/05/tutorial-programao-pawn.html

Tutorial que ensina a pegar coordenadas no jogo:
http://cronosbr.blogspot.com/2008/07/tutorial-pegando-coordenadas.html

[TUTORIAL] Técnicas booleanas

by Anônimo Postado às 19:35 1 comentários

Primeiramente leia sobre "Booleano" na página da Wikipédia para poder acompanhar esse tutorial:

http://pt.wikipedia.org/wiki/Booleano

Nesse tutorial ensinarei a usar uma técnica booleana, que é usado arrays.
Como viram na página da Wikipédia: "booleano é um tipo de dado primitivo que possui dois valores, que podem ser considerados como 1 ou 0, verdadeiro ou falso."
Vou dar um exemplo de como usar isso:

new UsouComando[MAX_PLAYERS]; //array para utilizar a técnica booleana

Agora vamos usar essa array utilizando o comparador If para verificar se o valor é verdadeiro ou falso:

if(UsouComando[playerid] ==/*igual*/ 1/*verdadeiro*/) // se a array UsouComando for igual a 1(verdadeiro/true)...
{
...
}
else if(UsouComando[playerid] ==/*igual*/ 0/*falso*/) // mais se a array UsouComando for igual a 0(falso/false)...
{
...
}

É isso pessoal, se o valor da array UsouComando for igual a 1(verdadeiro/true) vai executar tal função(função de sua escolha), mais se a array UsouComando for a 0(falso/false) vai executar tal comando e assim por diante.

Essa técnica é muito boa por que, no meu tempo de programador, eu tive que usar muito essa técnica e me ajudou MUITO! É só você ser esperto e saber quando usar e ter imaginação para poder fazer disso um processo divertido e produtivo.

Só isso pessoal, até o próximo tutorial.

Feito por: Cr0Nos

[GM] Las Venturas BRASIL

by Anônimo Postado às 16:16 10 comentários

Bom este GameMode(GM) foi utilizado por um bom tempo no Server: Servidor BRASIL, então como fecharam o Servidor, Resolveram liberar o Gm para download.

Oque Ele tem de Bom?

R: Bom ele tem sistema de GangZonas(GZ's) Compraveis, Varios comandos para Stunts, comandos para race, 4FUn, Hora Real etc...

Ele Se passa em Las Venturas, e posso dizer que é um dos Melhores GM's Brasileiros apesar de Muitos não gostarem de Las Venturas Por achar Muito Repetitivo e tal...

Mais esse eu garanto que vale a pena BAixar, tudo que você pensa encontrar em um Server bom você encontrara nele.

Ele foi Desenvolvido Originalmente por:

Kaike
Devil
BnO
[Rockstar]Rell
[AP]BcO
IluSion


Link Para Download do Las Venturas BRASIL:

LINK CORRIGIDO!

GTA Brasil Team

by Anônimo Postado domingo, 5 de outubro de 2008 às 11:10 0 comentários

Nosso novo parceiro. Visite GTA BR Team e saiba tudo sobre GTA e suas curiosidades!

http://gtabrteam.blogspot.com/

Acesse!

Comunidade Cr0Nos Blog

by Anônimo Postado quinta-feira, 2 de outubro de 2008 às 17:50 1 comentários

Participe da nossa comunidade do orkut do blog:
http://www.orkut.com.br/Main#Community.aspx?cmm=50008538
Obrigado.

[VÍDEO] A vida de um cheater

by Anônimo Postado às 08:10 5 comentários


Upado por: chamillionaireTheone

[TUTORIAL] Farmácia

by Anônimo Postado quarta-feira, 1 de outubro de 2008 às 16:51 2 comentários

Anteriormente eu fiz um tutorial de doenças e agora vou criar um tutorial de farmacia.

Para poder acompanhar esse tutorial direitinho leia o de criação de doenças antes. Clique aqui para ve-lo.

Primeiro você precisa do include para criar Checkpoints muito mais facilmente.

*Tio Cr0Nos porque vamos usar um Cheackpoint?
Resposta: Para ficar mais real, vamos fazer um local onde você possa executar o comando de comprar o remédio. Na vida real não é só você imaginar o remédio em qualquer lugar e ele vai aparecer, não é mesmo?

Vamos criar uma array no topo do gamemode para representar o Checkpoint:

new CP_FARMACIA;

Agora no OnGameModeInit vamos fazer com que a variavel represente o Checkpoint:

CP_FARMACIA = CPS_AddCheckpoint(X,Y,Z,TAMANHO,DISTANCIA);

X: Coordenada X
Y: Coordenada Y
Z: Coordenada Z
TAMANHO: Tamanho do Checkpoint (Aconselhavel 2.0)
DISTANCIA Distancia para o Checkpoint aparecer

Agora vamos fazer com que quando alguem entre no Checkpoint apareça uma mensagem na tela. No OnPlayerEnterCheckpoint use o comparador If para ver se o player está no checkpoint da farmacia para aparecer a mensagem:

if(CPS_IsPlayerInCheckpoint(playerid,CP_FARMACIA))
{
GameTextForPlayer(playerid,"~n~~n~~r~FARMACIA~n~~w~/comprarremedio",TEMPO,ESTILO);
}

TEMPO: Tempo que a mensagem vai ficar na tela(Aconselhavel 10000 milesimos de segundos(10 segundos)).
ESTILO: Estilo do GameText (estilos de 1 à 6).

Agora vamos criar o comando de comprar remédio. No OnPlayerCommandText:

if(strcmp(cmd, "/comprarremedio", true) == 0)
{
if(IsPlayerInCheckpoint(playerid) == CP_FARMACIA) //se você estiver no checkpoint certo o comando será executado
{
if(GetPlayerMoney(playerid) >= 50) // se o dinheiro do player for maior ou igual a 50 ele poderá comprar o remédio
if(Gripe[playerid] > 0) // se a gripe for maior que zero ele poderá comprar o remédio
{
GivePlayerMoney(playerid, -50); //diminue $50 do player
Gripe[playerid] = 0; //seta a array da gripe para 0
SetPlayerHealth(playerid, 100.0); //seta a vida do player para 100%
}
else if(GetPlayerMoney(playerid) < 50) //mais se o dinheiro do player for menor que $50 o comando não é executado e um aviso aparecerá no chat
{
SendClientMessage(playerid, COR, "Você não tem $50 para comprar o remédio!"); //mensagem que aparecerá no chat
}
else if(Gripe[playerid] <= 0) //mais se a array Gripe for menor ou igual a 0 o comando não será executado e um aviso aparecerá no chat
{
SendClientMessage(playerid, COR, "Você não está gripado!"); //mensagem que aparecerá no chat
}
}
else if(CPS_GetPlayerCheckpoint(playerid) != CP_FARMACIA) //mais se o player estiver ou não em um Checkpoint que não seja da farmacia o comando não é executado e um aviso aparecerá no chat
{
SendClientMessage(playerid, COR, "Você não está no Checkpoint da farmacia!"); //mensagem que aparecerá no chat
}
return 1;
}

E está pronto nossa farmacia. Até logo pessoal.

Feito por: Cr0Nos

[TUTORIAL] Comentários

by Anônimo Postado segunda-feira, 29 de setembro de 2008 às 16:03 1 comentários

Você já precisou comentar algo em seu script para se lembrar de alguma coisa ou deixar explicações para as pessoas que irão mexer em seu script? Para isso servem os comentários nas linguagens de programação, todos os comentários são ingnorados pelo compilador, assim, não dando erro em seu script.

Para criar comentários é bem simples e existem dois jeitos para cria-los:

Comentários de uma linha só: Use duas barras ( // ) e tudo que estiver depois das duas barras,na mesma linha, ficaram da cor verde e serão transformados em comentários.

Comentários de várias linhas: Use uma barra e um asteristico ( /* ) e no final do comentário use um asteristico e uma barra ( */ ).

DICA: Você quer que o compilador ingnore um script/linha de código de seu gamemode/filterscript mas quer deixá-lo no lugar que está? Use o mesmo esquema para fazer comentários que o script/linha de código serão ingnorados pelo compilador sem precisar apagá-lo!

Feito por: Cr0Nos

No comparador If você usa os operadores relacionais(igual,diferente,maior,menor etc). Ai vai a lista de alguns operadores relacionais(os mais usados):

Igual: ==
Menor: <
Maior: >
Menor ou igual: <=
Maior ou igual: >=
Diferente de: !=

Operadores lógicos:

Ou = ||

And = &&

O operador lógico "ou" serve para que se uma ou mais condições (no nosso caso, essas condições estão no comparador if) forem verdadeiras, sejam executadas, caso alguma seja falsa mas a outra é verdadeira, é executado do mesmo jeito, caso todas sejam falsas nada é executado. Exemplo de uso do Ou ( || ):

if(Profissao[playerid] ==/*igual*/ POLICIAL ||/*ou*/ Profissao[playerid] ==/*igual*/SWAT)
{
...
}

E o operador lógico And ( && ) serve para que quando você impõe duas condições execute o código se duas ou mais condições forem verdadeiras, caso sejam falsas, nada é executado.

Espero que vocês tenham aprendido mais sobre pawn com esse tutorial. Até mais!

Feito por: Cr0Nos

[TUTORIAL] O comparador If

by Anônimo Postado sábado, 27 de setembro de 2008 às 14:24 0 comentários

Nesse tutorial vou ensinar a vocês sobre o comparador If, bastante util para seus scripts que use comparações.
If em português significa "Se" e serve para comparar dados.

Sintaxe:

if(PRIMEIRO_DADO + OPERADOR_RELACIONAL + SEGUNDO_DADO)
{ //chave para abrir código
// funções que você queira que sejam executadas ao processar a comparação concedida serão colocadas aqui
} //fecha código

Por exemplo:

new Mercadorias[MAX_PLAYERS] = 0; //criamos a array na qual vamos comparar com outro dado e setamos o valor dela para 0

if(Mercadorias[playerid] == 1) //se a array Mercadorias for igual a 1, que e falso, aparecera uma mensagem no console do servidor
{ //abre o codigo
Print("\nA array Mercadorias nao e igual a 1!\n"); //mensagem que aparece no console do servidor
} //fecha o codigo

Agora veremos o else if(significa "mais se"), ele impõe uma segunda comparação caso a primeira comparação dada seja falsa.

new Mercadorias[MAX_PLAYERS] = 0; //criamos a array na qual vamos comparar com outro dado e setamos o valor dela para 0

if(Mercadorias[playerid] == 1) //se a array Mercadorias for igual a 1, que e falso, aparecera uma mensagem no console do servidor
{ //abre o codigo
Print("\nA array Mercadorias nao e igual a 1!\n"); //mensagem que aparece no console do servidor
} //fecha o codigo
else if(Mercadorias[playerid] == 0) //mais se a array Mercadorias for igual a 0,que e verdadeiro, aparecera uma mensagem no console do servidor
{ //abre o cddigo
Print("\nA array Mercadorias e igual a 0!\n"); //mensagem que aparece no console do servidor
} //fecha o código

Só você ter imaginação e esperteza para saber quando você precisará usar If e Else If em seus scripts.

OBS: "\n" serve para pular linha no console do servidor, só funciona com a função "Print".

Feito por: Cr0Nos

GTA Terror - Documentário Mistérios & Curiosidades #01

by Anônimo Postado quarta-feira, 24 de setembro de 2008 às 16:00 5 comentários

Voando com um JetPack, procurando easter eggs, vi janelas de um prédio perto da Zombotech com uma imagem parecida com uma pessoa apontando um revolver pra alguém. Mas pode ser apenas impressão minha! ^^

Estava por ai zuando no GTA San Andreas, até que vi na ZIP em construção de San Fierro...

... marcas de pés brancas com manchas vermelhas nas madeiras da construção.

... Não pode ser tinta porque o prédio não tem nenhum lugar com cor vermelha, então só pode ser sangue! E tem isso em todas as madeiras da construção, mas o que deve ter acontecido lá? Briga? Assassinatos? Não se sabe...

[APP] Menu Creator v0.2

by Anônimo Postado sexta-feira, 12 de setembro de 2008 às 20:25 5 comentários

Você tem dificuldade para fazer menu? Se confunde quando digita aquele monte de código para criar um menu? Seus problemas acabaram! O Menu Creator v0.2 veio nos salvar! Ele é fácil e rápido para fazer o menu, você digita tudo o que você quer que ele faça e ele gera o código em pawn. É em inglês.

Créditos não encontrados.

GTA IV : Secrets + Glitches + Easter Eggs

by Cobain Postado sábado, 6 de setembro de 2008 às 04:24 0 comentários

[GM] Airplane Bot

by Anônimo Postado segunda-feira, 1 de setembro de 2008 às 13:55 0 comentários

Avião robô que simula um acidente. Sistema desenvolvido por mim(Cr0Nos) com o código-fonte disponibilizado para livre estudo.

Veja o vídeo de teste:



Quer aprender mais e discutir sobre Pawn? Então essa comunidade do orkut é a correta para você!
Vários colaboradores para responder suas dúvidas e vários gamemodes e filterscripts para você!

Acesse:

http://www.orkut.com.br/Community.aspx?cmm=38308205


E participe! ;-)

[TUTORIAL] Criando sistema de level simples

by Anônimo Postado sexta-feira, 15 de agosto de 2008 às 06:44 6 comentários

Nesse tutorial vou ensinar à vocês como fazer um sistema simples de level, excelente para RPG.

Primeiro crie uma array pro level no topo do seu gamemode:

new Level[MAX_PLAYERS];

Agora crie um forward para ganhar level:

forward GanharLevel(playerid);

Agora no final do seu gamemode coloque as funções que sua forward vai fazer:

public GanharLevel(playerid)
{
if(Level[playerid] < 100) //caso o level do player for menor que 100 ele ganha 1 level

{
Level[playerid]++;
}
if(Level[playerid] == 100) //se o level do player chegar a 100 ele para de ganhar level
{
SendClientMessage(playerid, COR, "Você chegou ao level máximo(100)!");
}// chave para fexar o if
return 1;
}//chave para fexar o public

Agora no OnGameModeInit vamos fazer com que a cada 20 minutos o player ganhe 1 level:

SetTimer("GanharLevel",1200000, true); //a cada 20 minutos o gamemode vai chamar a função GanharLevel, assim fazendo o player ganhar um level a cada 20 minutos

Prontinho! O seu sistema de level simples está pronto.

Feito por: Cr0Nos

[TUTORIAL] Criando portão automatico para uma gang especifica

by Anônimo Postado domingo, 10 de agosto de 2008 às 18:55 0 comentários

Para baixar o tutorial de como criar portões automaticos para uma gang especifica clique em download:



Feito por: Cr0Nos

E ai pessoal beleza? Nesse tutorial vou explicar como fazer um gang war bem simples, ou seja, não vai ter gang zones, nem sistema de salvar score e dinheiro, nem minigames, nem nada de muit avançado, só para todos terem uma base.

1.:: Criando gangs ::.

No topo do seu gamemode você precisa definir a gang e o id dela:

#define GROVE 1 // o id da gang GROVE vai ser 1
#define BALLAS 2

Ainda no topo do gamemode você precisa criar uma array para armazenar a gang no seu gamemode:

new Gang[MAX_PLAYERS];

No OnGameModeInit você precisa colocar todos os AddPlayerClass, vamos por como exemplo a skin da grove em primeiro:

AddPlayerClass(107,2478.2656,-1633.4364,13.4048,183.2906,24,120,25,150,28,999); //grove

Agora no OnPlayerRequestClass você precisa fazer com que a skin da grove seja da grove:

if(classid == 0) // como a primeira skin é da grove vamos colocar o numero zero aqui que significa que se você escolher a primeira skin você irá ser da gang da grove
{
Gang[playerid] = GROVE; //seta a gang, por isso criamos aquela array você pode usar o numero dela também que é 1
GameTextForPlayer(playerid,"grove",6000,6); // aparece o nome da gang quando você estiver na skin da grove
}
else if(classid == 1) //segunda skin dos AddPlayerClass
{
Gang[playerid] = BALLAS; //seta a gang ballas
GameTextForPlayer(playerid,"ballas",6000,6); nome da gang na tela
}
return 1;
}

Agora no OnPlayerRequestSpawn você precisa fazer com que cada gang tenha uma cor própria:

if(Gang[playerid] == GROVE)// se o time for grove a cor será verde
{
SetPlayerColor(playerid, 0x33AA33AA);//seta a cor verde em hexadecimal
}
else if(Gang[playerid] == BALLAS)//se o time for ballas a cor será roxo
{
SetPlayerColor(playerid, 0x9900FFAA);//seta a cor roxo em hexadecimal
}

Pronto já está criada suas gangs!

2.:: Criando comando de mostrar status(kills,mortes,teamkills) do player::.

No topo do seu gamemode crie uma array para armazenar os assassinatos que o player fez:

new Kills[MAX_PLAYERS];

Agora para mortes:

new Mortes[MAX_PLAYERS];

Agora para Team Kills:

new TK[MAX_PLAYERS];

Agora vamos fazer o comando. No OnPlayerCommandText crie o comando que vai mostrar os status do player:

if (strcmp("/status", cmdtext, true, 10) == 0) // quando alguem digitar /status vai aparecer todos os status no chat
{
new stringkills[256]; //string para armazenar a mensagem de kills
new stringmortes[256]; //string para armazenar a mensagem de mortes
new stringtk[256]; //string para armazenar a mensagem de team kills
SendClientMessage(playerid,COR_VERDE,"Seus status:");
format(stringkills,sizeof(stringkills),"Kills: %d", Kills[playerid]); //no %d vai aparecer o numero de kills que você fez
SendClientMessage(playerid,0xFF9933AA, stringkills); // faz com que mostre no chat a mensagem que foi armazenada na string
format(stringmortes,sizeof(stringmortes),"Mortes: %d", Mortes[playerid]); // o mesmo que a mensagem anterior
SendClientMessage(playerid, 0xFF9933AA, stringmortes);// o mesmo que a mensagem anterior
format(stringtk,sizeof(stringtk),"Team Kills: %d", TK[playerid]);// o mesmo que a mensagem anterior
SendClientMessage(playerid, 0xFF9933AA, stringtk);// o mesmo que a mensagem anterior
return 1;
}

*OBS: Para aumentar o numero de kills, mortes e Team Kills, leia o 3º passo que estará explicando.

3.:: Criando sistema de Anti Team Kill::.

Como em todo gang war sempre tem o palhaço que mata alguem da própria gang. Agora veremos como fazer um sistema de Anti Team Kill que quando o jogador matar alguem da própria gang ele vai ser teleportado para prisão e ficará lá até ser morto por causa de tanta porrada que vai levar dos outros presos.

Agora no OnPlayerDeath precisamos criar o sistema:

Mortes[playerid]++; //se o player morrer os status de mortes dele aumenta +1
if(killerid == INVALID_PLAYER_ID) {
SendDeathMessage(INVALID_PLAYER_ID,playerid,reason); // aparece quem matou, com o que e quem morreu
}
else if(Gang[playerid] == Gang[playerid]) // verifica se quem morreu é da mesma gang, se for ele será preso
{
SendClientMessage(killerid, 0xFF0000AA, "Não mate pessoas da mesma time que você! Você vai ficar preso até morrer"); // mesagem que vai ser enviada para o assassino
SetPlayerPos(killerid, 263.7945,77.4532,1001.0391); //isso teleportará o assassino até uma cela fexada na prisão
SetPlayerScore(killerid,GetPlayerScore(killerid) -1); // o score dele diminue -1
GivePlayerMoney(killerid, -500); // ele perde -500 de dinheiro
TK[killerid]++; //os status de team kill do assassino aumenta +1
Mortes[playerid]++;//aumenta os status de mortes do player que morreu em +1
}
else if(Gang[playerid] != Gang[playerid]) // caso o player tenha matado outro player que NÃO seja da mesma gang que ele, ele ganhará +1 de score e $500
{
SetPlayerScore(killerid,GetPlayerScore(killerid) +1); // aumenta o score do assassino em +1
GivePlayerMoney(killerid, 500);//aumenta o dinheiro do assassimo em $500
Kills[killerid]++;// aumenta os status de assassinatos do assassino em +1
Mortes[playerid]++;//aumenta os status de mortes do player que morreu em +1
}

E está pronto nosso gang war simples! Espero que tenha ajudado muita gente.

LEMBRANDO: Esse tutorial explica como fazer um gang war simples, é apenas para dar uma base de como fazer um melhor ainda que esse!

Feito por: Cr0Nos

E ai pessoal blz? Nesse artigo espero explicar a todos vocês como entrar na onda da programação pawn e de outras linguagens do jeito certo!

Bom, quando eu comecei, eu comecei do jeito errado e por isso estou aqui para que não aconteça o mesmo com vocês.

Aposto q muitos quando tentaram entrar na onda da programação pawn pensaram em fazer gamemode com isso, gamemode com aquilo, criar um gamemode de RPG que seja melhor do Brasil... Mas não sabe nem o que é uma array e já quer criar um SUPER MEGA IPER LIPER EXTRAORDINARIO RPG!
Isso é muito legal sonhar assim mas muito dificil de tornar realidade.

Por isso vou dar umas dicas de como começar de um jeito certo na programação:

- Estude matemática. Ela pode ajudar MUITO na programação!

- Estude logíca de programação, quando eu comecei a ler uma apostila que meu professor do curso me passou isso já abriu minha mente para criar grupos de códigos de programação em pawn que eu nem sabia que sabia fazer, ou seja, minha imaginação funcionou ao maximo!

- Faça gamemodes simples que leve poucas horas ou minutos, não adianta fazer um super rpg no papel e não conseguir fazer no pawn.

- Tente entender para que aquele código que você viu em algum gamemode serve, se você apenas copiar e colar não vai ajudar em nada em seu aprendizado.

- Tente fazer as coisas você mesmo, pedir pros outros comandos de fazer tal coisa ou de setar uma profissão de rpg não te ensina nada, só te deixa mais preguiçoso.

- Você não vai aprender a programar da noite pro dia!

- Antes de criar um comando crie algoritmos(isso se aprende em lógica de programação) para o que vai acontecer quando alguem digitar tal comando.

- Raciocine bastante e eu sei que sempre que tiver um erro que você não consegui resolver e fica quebrando a cabeça por horas você vai se irritar e talvez até desistir, mas é assim mesmo vc tem que prestar atenção em todas linhas de códigos e em cada detalhe.

- No começo você vai boiar e não entender quase nada, mas depois você vai se indentificar com a linguagem.

Isso foi o basico.

OBS: eu programo a +/- 8 meses

Feito por: Cr0Nos

[FS] Andre's Admin [Aadmin]

by Cobain Postado sexta-feira, 8 de agosto de 2008 às 06:08 7 comentários

Bom,dessa vez venho postar um dos melhores AdminScripts,em português,créditos da tradução a [KaE]Coscos.



Para ver os comandos digite /adminhelp,
e se quiser setar seu level sem ir na scriptfiles se logue na RCON e digite /setlevel ID LEVEL

OBS:O level máximo é 4.

GTA IV confirmado para PC

by Anônimo Postado quarta-feira, 6 de agosto de 2008 às 19:53 0 comentários

A Rockstar Games confirmou hoje(06/08/2008) que esse ano, praticamente dia 18 de novembro desse ano(EUA), será lançada GTA IV versão para computador. Isso é de agradar muito os fãs de GTA e a mim também! :D

Então vão preparando as configurações de seus PCs e espere até GTA IV sair nas lojas o Brasil.

[TUTORIAL] Doenças

by Anônimo Postado terça-feira, 5 de agosto de 2008 às 07:54 0 comentários

E ai pessoa, blz? Nesse tutorial vou ensinar vocês a fazerem um sistema de doença simples e excelente para RPGs.

Primeiro defina as cores das mensagens:

#define COLOR_RED 0xFF0000AA
#define COR_VERDECLARO 0x9ACD32AA

Agora crie uma array e um forward no topo do seu gamemode com o nome da sua doença, no nosso exemplo a doença vai ser a gripe:

new Gripe[MAX_PLAYERS];
forward PegarGripe(playerid);

Agora crie um public no final do seu gamemode com o nome do forward que você criou:

public PegarGripe(playerid)
{
Gripe[playerid]++; //adiciona um valor na variavel da doença
SendClientMessage(playeri,COLOR_RED,"Você pegou gripe! Vá até uma famacia comprar remédio."); //mensagem que vai aparecer quando você pegar a doença
if(Gripe[playerid] == 100) //caso o valor da variavel da doença chegue a 100 você vai morrer
{
SetPlayerHealth(playerid,0.0);
SendClientMessage(playerid,COLOR_RED,"A gripe te matou! Quem mandou não comprar remédio...");
//mensagem que vai aparecer quando você morrer por causa da doença
}
}

Agora no OnPlayerDeath coloque:

if(Gripe[playerid] == 100) //quando você morrer com o valor da variavel da doença com o valor 100 o valor da variavel será resetado
{
Gripe[playerid] = 0; //seta o valor da variavel da doença para zero
SendClientMessage(playerid,COR_VERDECLARO,"No hospital os médicos curaram sua gripe! Pode ficar tranquilo, por enquanto..."); //mensagem que vai aparecer quando o valor da variavel da doença for resetado
}

Agora no OnGameModeInit coloque:

SetTimer("PegarGripe", 1200000, true);//com isso os players pegaram a doença à cada 20 minutos +/-

E aqui é o fim do tutorial. Em breve vou fazer um tutorial de fazer farmácia para que possa curar a doença.

Feito por: Cr0Nos

GTA 4 - Bloopers, Glitches & Silly Stuff 2

by Cobain Postado sábado, 2 de agosto de 2008 às 04:41 0 comentários



Um dos melhores vídeos do GTA IV!
Bem legal e engraçado :D

[FS] Sistema de Tuning

by Cobain Postado quinta-feira, 31 de julho de 2008 às 10:09 1 comentários

Olá a todos!
Bom,hoje venho trazer pra vocês um sistema de tuning,

Como Funciona?
use /tuning em um carro e serão adicionadas rodas novas e uma paintjob randomica,se quiser trocar a P.J só use /tuning denovo.


Créditos não encontrados.

Ufos no GTA IV

by Anônimo Postado quarta-feira, 30 de julho de 2008 às 16:36 0 comentários


Mais uma vez a Rockstar Games quis dar uma de louca e colocou essas "luzes" zombando dos avistamento de luzes que se movimentavam no céu etc.

[TUTORIAL] Pegando coordenadas X, Y e Z

by Anônimo Postado segunda-feira, 28 de julho de 2008 às 09:25 2 comentários

Em qualquer servidor vá no lugar desejado e digite no chat:

/save COMENTARIO QUE VOCÊ DESEJA

Depois disso vá na pasta do seu GTA San Andreas:

C:\Arquivos de programas\Rockstar Games\GTA San Andreas

Procure o arquivo chamado savedpositions.txt e abra ele.

Caso você tenha digitado o comando /save a pé vai estar assim:

AddPlayerClass(idskin, Float:x, Float:y, Float:z, Float:Angulo, arma1, arma1_municao, arma2, arma2_municao, arma3, arma3_municao); // comentario

Exemplo:

AddPlayerClass(0,2062.7371,-2628.7871,13.5514,89.9784,0,0,0,0); //skin do cj

Coordenada X: 2062.7371
Coordenada Y: -2628.7871
Coordenada Z: 13.5514

Caso você tenha digitado dentro de um carro vai estar assim:

AddStaticVehicle(idveiculo, Float:X, Float:Y, Float:Z, Float:Angulo, cor1, cor2); // comentario

Exemplo:

AddStaticVehicle(522,430.9840,-1167.0511,2261.7830,0.0069,6,25); // moto

Coordenada X: 430.9840
Coordenada Y: -1167.0511
Coordenada Z: 2261.7830


Pronto! Você pegou suas coordenadas.

Feito por: Cr0Nos

[TUTORIAL] Spawn Randomico

by Anônimo Postado às 09:12 1 comentários

Primeiro precisa criar uma multi array com as coordenadas:

//no topo do seu gamemode

new Float:SpawnRandomico[2][3] = {
{coordenada X,coordenada Y,coordenada Z},
{coordenada X,coordenada Y,coordenada Z}
};

//Esse [2] por causa q temos duas coordenadas
//Esse [3] por causa q temos o eixo X, Y e Z

//no OnPlayerSpawn

new rand = random(sizeof(SpawnRandomico));
SetPlayerPos(playerid, SpawnRandomico[rand][0], SpawnRandomico[rand][1], SpawnRandomico[rand][2]);

*OBS: Você precisa ter todos os AddPlayersClass no OnGameModeInit para poder spawnar.
Caso não saiba como por ou o que é AddPlayerClass leia esse tutorial: Adicionando Skins

Feito por: Cr0Nos

Estatua da liberdade parece com Hillary Clinton

by Anônimo Postado segunda-feira, 21 de julho de 2008 às 15:31 1 comentários

Reparem que o rosto da estatua da liberdade é parecido com o rosto de Hillary Clinton, repare também nas bochechas e veja como são parecidas. Mais um easter eggs da Rockstar Games tirando sarro de Hillary Clinton em plena época de eleição nos EUA.

Brasileiros no GTA IV

by Anônimo Postado às 14:33 1 comentários


Vídeo mostrando pedestres do GTA IV falando o português claro e xingando também.

Grand Theft Awesome IV

by Anônimo Postado às 14:20 0 comentários


Sátira do GTA IV em inglês mas com as expressões do Niko da pra entender um pouco.

Tirinha do Cr0Nos

by Cobain Postado às 08:59 3 comentários



Não preciso nem comentar né?!

._.

Bom,um vídeo com um "boliche" que virou mania no X-Treme!



Feito por: ® © Zóio - The Green Eye © ®

Engine do GTA IV

by Anônimo Postado domingo, 20 de julho de 2008 às 17:30 0 comentários


GTA IV usa tecnologia Endorphin. Quer ter essa mesma tecnologia no seu pc? Acesse o link e baixe o engine Endorphin COMPLETO:
Esse link de download foi encontrado na própria internet. Cr0Nos Blog não se responsabiliza pelo link e por nada que aconteça ao seu computador!

Bug louco nos KaE

by Anônimo Postado às 17:26 4 comentários

Vídeo mostrando um bug louco que deu no server do KaE. Quem vê acha que é coisa do demo! O.o
Feito por: ® © Zóio - The Green Eye © ®

[MOD] GTA BioHazard Alert 0.5

by Anônimo Postado às 17:05 3 comentários

BioHazard Alert Beta 0.5 with Fix Patch;


CONTEUDO DO MOD:

Zombies que vagam pela cidade.
Cidade Fantasma
Outros Sobreviventes
Um contador de Zombies mortos
Novos efeitos mais realistas
Leon Kennedy no lugar do car opicional
Camera dO RE4

DOWNLOAD
http://www.moddb.com/mods/9169/gta-biohazard-alert/downloads/10005/biohazard-alert-beta-05-with-fix-patch

O MOD PESSA 50 MB
Mais se você tem uma net fraca e não pode baixar o mod, você pode fazer o download apenas dos Zombies..

Link:
http://www.moddb.com/mods/9169/gta-biohazard-alert/downloads/10006/fix-patch-for-beta-05

ALEM DE DAR MAIS REALISMO AOS ZUMBIES DIMUNUE OS BUGS.

DOWNLOAD: http://www.moddb.com/mods/9169/gta-biohazard-alert/downloads/10006/fix-patch-for-beta-05

ATENÇÃO: PARA O MOD FUNCIONAR É PRECISO INSTALAR OS ARQUIVOS LEON.TXD E LEON.DFF DENTRO DO ARQUIVO GTA3.IMG QUE SE ENCONTRA NA PASTA DO SEU GTA SAN ANDREAS. PARA INSTALAR USE O IMG TOOL.

Visite também a comunidade do GTA Biohazard alert.
Visite também o blog do GTA Biogazard alert.

Modificação feita por: Pulga Maggots, Coin-god e toda a equipe que desenvolveu a modificação.

by Anônimo Postado segunda-feira, 14 de julho de 2008 às 08:07 20 comentários

[GM] BRASIL ~ Stunt+dm+race+4fun

by Anônimo Postado domingo, 13 de julho de 2008 às 16:11 9 comentários

BRASIL ~ Stunt+dm+race+4fun

Gamemode de stunt+dm+race+4fun desenvolvido por mim e com ajuda de Kaike e Devil.

Comandos:

Para ajuda inicial digite: /ajuda
Para deixar seu veículo God Mode digite: /godc
Para se matar digite: /kill
Para ver todos os teleportes digite: /teleportes
Para entrar de passageiro no Hydra e Shamal tecle G no meio do avião e para sair tecle F
Para ver os comandos de hotcaffe digite /hotcaffe

Teleportes

Teleportes de Stunt:

Para ir até o Stunt Em Las Venturas digite: /lvstunt
Para ir até o Aero Stunt de LS digite: /aerostunt
Para ir ao Stunt digite: /stunt
Para ir ao Drop digite: /drop
Para ir ao Drop Explosivo digite: /dropexplosivo
Para ir ao Reino Perdido digite: /atlants
Para ir até a Montanha Russa digite: /montanharussa

Teleportes de DM:

Para ir até a Crazy Arena digite: /crazyarena
Para ir até a Arena x1 digite: /arenax1
Para ir até a Ship War digite: /shipwar
Para ir até a Arena Sangrenta digite: /arenasangrenta
Para ir até a Remote DM digite: /remotedm
Para ir até a Sniper DM digite: /sniperdm
Para ir até a Guerra de Rustler digite: /rustlerw

Teleportes de Race

Para ir ao Circuito Flat OUT digite: /flat
Para ir até a Race digite : /race
Para ir ao Drift digite: /drift
Para ir ao circuito 1 digite: /circuito1
Para ir ao circuito 2 digite: /circuito2
Para ir ao circuito 3 digite: /circuito3
Para ir ao circuito 4 digite: /circuito4

Teleportes de 4fun:

Para ir a cidade perdida de Atlants digite: /atlants
Para ir ao Estacionamento digite: /estacionamento
Para ir até Liberty City digite: /lc
Para ir a derby digite: /derby

Atrações principais:
Stunts no Aeroporto de LS: /aerostuntls
Super rampa: /drop
Super rampa com explosivos: /dropexplosivo
Estacionamento onde tem vários carros de vários tipos: /estacionamento
Uma montanharussa: /montanharussa

O gamemode tem 4141 objetos.
Feito por: Cr0nos, [__]Kaike e [SSR]Devil

Tino's TDM v0.1 Beta

by Douglas Oliveira Postado quarta-feira, 9 de julho de 2008 às 16:58 1 comentários

Tino's Team DeathMatch v0.1 Beta

Gamemode de guerra de gangs em los santos, muito simples e em versão inicial, por isso, deverá haver alguns bugs.

Comandos:
/ajuda
/regras
/creditos ou /creditosgm
/kill
/flip
/duelo
/objetivo
/admins
/agua(apenas para administradores)
/nomansland(ilha na costa de san fierro)
/lchat(by [MPA]toribio_IDG)
/flip


8 Gangs:
Grove Street
Bad Girls
Ballas
Cops
Bikers
Crazy Boys
Los Aztecas
Los Vagos

Gamemode não muito sofisticado, mas ideal pra quem gosta de uma boa guerra de gangs.

Feito por: [BpM]Tinorks

Admins logados na rcon podem ver pms(private messages)
Por favor, não retire os créditos.

[APP] Novo Pawno - Traduzido e com visual avançado

by Anônimo Postado sexta-feira, 4 de julho de 2008 às 06:06 0 comentários

Descrição

O pessoal pediu, então eu postei!
Um pawno diferente: traduzido para o português, e com icones e imagens diferentes.
Nada demais, vejam algumas imagens...

Imagens

Menu:

Barra de Ferramentas (desativada):

Barra de Ferramentas (ativada):


Como instalar

Descompacte o arquivo que veio com o download.
Coloque o arquivo "pawno.exe" dentro da pasta "\seu server\pawno\".
Substitua o já existente, se quizer fazer backup do original, é por sua conta própria...

Feito por: Flavio Toribio

[APP] SA-MP Script King

by Anônimo Postado às 05:57 1 comentários

Programa que reune todas as ID's dos carros, sons, animações, cores etc.
Facilitará muito quando você precisar saber o ID de algum veículo que você quer colocar em seu gamemode!
Screen do programa ----> http://www.jatochnietdan.info/DDd.JPG

Feito por: JaTochNietDan

Tradução das Pixações

by Anônimo Postado sábado, 28 de junho de 2008 às 12:08 0 comentários

Todas as pixações do BULLY traduzidas logo a baixo:

Nobody likes =Ninguém gosta mais dos Ricos, Pirralhos estragados.
rich,spoiled
brats!!

My daddy is =Meu Papai é Rico, Mas Chupa!!
rich
but i suck

you're right =Tens Razão Retardados, Todo ódio você faz!
dorks
everyone ne does
Hate you!

Teachers, =Professores, animais esculhanbados.
Pet scum

Preppies =Preppies seus perdedores.
are Losers

I love it When =Eu adoro quando Todos nós se aconchegamos!!
We all huddle
Together!!

Grease =Graxa de Banha!!
Balis!!

Trust Fund =Funda responsabilidade, Perdedores!
losers!

Jocks =Jocks Idiotas.
Morons

I only rich people =Só pessoas ricas como meus pais estão no julgamento capitalista
cuz my parents are
judgemental
Capitalist scum!

Rich =Ricos esculhanbados!!
Scum!!

Tell Your =Informe o seu Terapista miúdo!
Therapist
Righkid!

We'ew coming For =Estamos próximos de você, você mesmo panaca!
you
You Dork
Crum!

Take a =Pega a Banheira Gorduroso.
Bath
Greasy!!

Get a Life! =Recebam a Vida! Chupam Nerds!
Nerds Suck!

Dork =Retardados Perdedores
Losers!

Cry, Dorks =Choram, retardados Choram
Cry

Money Does =Dinheiro não vai comprar a Classe!
Not Buy Class!

Athletes like =Atletas se acham comunal de sapatos.
Communal
Shomers

Its not rebelliou =A sua não Rebeliou, use um Casaco e um super cabelo.
to Wear a Leathef
Jacket and have
Dumbe Hair

I like Cars and =Eu gosto de carros e motos, mas não me envolvo com pessoas.
Bikes cuz i Can't
deal with
People!

Greasebag =Graxa Saco

Greasers =Chupam Greasers
Suck!!

Nerd =Nerds Retardados
scum!

Over-Educated, =Sobre-Educação, Chupam Otarios!!
dorks Suck!!

Take that crap =Tomara que cortem o seu Cabelo, você gorduroso Esculhambado!
out of your
hair you
Greasy scum!

Money's =Dinheiro dos Rapazes retardados!
boy Dorks!

Nice hair =Bonito Cabelo, Graxa sacos!
Greasebags!

I Play sports =Pratica esportes, mas não sabe ler!
cuz i can't
Read!

Why you =Porque vocês "graxa sacos" Grudam por 50 centavos????
Greaseballs
stuck in
The 50's????

Kesports cuz =Mas Praticam esporte.

Ave No Brain! =Ave sem cérebro!

Feito por: ††Licker††B.O.W ●Β.δ.ω - ŠqυăĐ●®™

SUPER REFORMA

by Anônimo Postado às 08:41 0 comentários

E ai pessoal blz?

Estou aqui avisando que o blog passará por uma super reforma! Vamos mudar o visual, conteúdo, alguns sistemas novos e muito mais!

Algumas informações:

-Mudaremos o visual;
-Colocaremos alguns sistemas úteis para deixar seu acesso ao blog mais fácil;
-Agora o blog vai começar a ser sobre GTA e Bully;
-O blog será atualizado quase diariamente.

E muito mais!

Aguardem :D

[SAMP]Versao 0.2.2 RC3 Lançado

by Sawyer Postado quarta-feira, 18 de junho de 2008 às 15:38 2 comentários

SA-MP 0.2.2 RC3 Lançado!!!!!

Download:

http://www.4shared.com/file/51849789/6ffcc8ab/sa-mp-022-R3-testing1_8.html

Oque Muda:

Fixes currently imported in to the 0.2.2 R3 release. 0.2.2 R3 is compatible with all 0.2.2 servers.

0.2.2 R3 is currently in testing and release is expected soon.

- Removed all SAC code. This fixes a security vulnerability mentioned earlier.
- Fixed problem with clipboard text not copying externally.
- Fixed time/fog/lighting flickering when the passing of time is disabled.
- Fixed some vehicle audio problems (silent cars/planes/boats/helis).
- Fixed texture lag/streaming popups when many models were loaded.
- Vehicle model limits increased to 127 (although not recommended to exceed 70 for backward capability).
- Fixed some car mod shop crashes.
- Alternate siren for police vehicles is now synced.
- TextDraw code is completely rewritten. It now works in interiors and will disable with the HUD.
- Crashes caused by DestroyVehicle are fixed.
- Some extra smoothing/lag compensation code is added to the client. This is currently still in testing and will perform better with other R3 clients.

Testing1_7:
- Improved the onfoot sync so there wasn't as much sliding
- Removed hardcoded fps limit of 40
- Fixed players going through walls and below the ground

Testing1_8:
- Imported some of the 0.2.5 vehicle surfing code
- Added command /fpslimit to adjust the frame rate limiter. Valid /fpslimit values are 20-100.
- Removed the procedural plants/rocks again as they can desync the game.
- Fixed (hopefully) problem where there were sometimes vehicles without drivers (testing needed).
- Changed the ordering of the TextDraws. TextDraws are drawn in creation order 0-MAX_TEXT_DRAWS. Previously they were drawn in Show order.

The current testing version of 0.2.2 R3 is Testing 1

Fixes currently imported in to the 0.2.2 R3 release. 0.2.2 R3 is compatible with all 0.2.2 servers.
ANTES DE DIZEREM ISTO EH VIRUS TA A FONTE
http://forum.sa-mp.com/index.php?topic=62526.0


Traduzido:

Correções atualmente importados para a libertação 0.2.2 R3. 0.2.2 R3 é compatível com todos os servidores 0.2.2.

0.2.2 R3 está atualmente em fase de teste e a liberação é esperada em breve.

-- Removidos todos os códigos do SAC. Isso corrige uma vulnerabilidade de segurança que mencionei anteriormente.
-- Corrigido problema com o colar que nao estava funcionando.
--Consertado tempo / neblina / iluminação tremulação quando o passar do tempo está desativado.
-- Corrigidos alguns problemas de áudio veículo (sirena de carros / aviões / barcos / helis).
-- consertado a textura lag / streaming popups quando muitos modelos foram carregados.
-- O limite de modelos de veiculos foi alterado para 127 (embora não seja recomendado a ultrapassar 70 capacidade para trás).
-- Consertados alguns travamentos no mod shop .
-- A sirene para veículos da polícia está agora sincronizados.
-- TextDraw código é totalmente reescrito. Ela trabalha agora em interiores e irá desativar com o HUD.
-- Crashes causada por DestroyVehicle estao consertados.
-- Alguns extra nivelamento / lag compensação código é acrescentado para o cliente. Esta é atualmente ainda em fase de teste e terá desempenho melhor R3 com outros clientes.

Testing1_7:
-- Maior onfoot a sincronia não foi assim há tanto deslizamento
-- Removido codificados limite de 40 fps
-- Fixed jogadores a atravessar paredes e abaixo do solo

Testing1_8:
-- Importados alguns dos veículos 0.2.5 surf código
-- Adicionado comando / fpslimit para ajustar a taxa de frame limitador. Válida / fpslimit valores são 20-100.
-- Removido o processuais plantas / rochas novamente como eles podem desync o jogo.
-- Fixo (espero), onde havia problema vezes veículos sem condutor (ensaios necessários).
-- Mudada a possibilidade de ordenar a TextDraws. TextDraws são desenhadas na criação ordem 0-MAX_TEXT_DRAWS. Anteriormente eles foram tiradas no Show ordem.

A actual versão de teste 0.2.2 R3 for Testing 1

Tutorial Sobre "LAG"

by Sawyer Postado às 14:37 1 comentários



Ai um grande tutorial em vídeo.
Feito por [KaE]Cartman
Espero que ajude muita gente!
Falows!



Assistam, espero que gostem!

Ainda terá 2ª Parte com muito mais stunts!

Valeu!

madruga dim dim

by Lucas_adm Postado segunda-feira, 16 de junho de 2008 às 13:49 0 comentários


pra voce que eh fa do seu madruga ai um mod que voce ira adorar (exclusivamente para gta san andreas )CLIKE AKI para baixar ou CLIKE AKI em baixo

helicoptero da globo

by Lucas_adm Postado terça-feira, 3 de junho de 2008 às 10:33 0 comentários


bom galera mais um mod feito pela minha equipe gtaracers bom ta ai se quiser testar CLIKE AKI
ele vem com fotos DO casseta e planeta vem com fotos DO galvao bueno bom tah ai esse eh mais um lasamento da minha equipe:em parceria com O cronos blog

drift airport

by Lucas_adm Postado sexta-feira, 23 de maio de 2008 às 20:16 0 comentários


A terceira versão de um mod ja conhecido por muitos amantes de Drift do gta Por ser de fácil instalação e ser bem leve o mod não trás consigo um grande desafio e não chega a ser uma das melhores pistas de Drift mas é bem divertExistem locais na pista onde se pode alcançar mais de 250 km/h e algumas curvas exigem bastante dos condutores.
ido। O mod ainda trás a Garagem de Doherty com o seu interior completo e suas rampas de manutenção o que ainda lhe dá algo para explora Clique aqui e veja a versão antiga do Drift Airport e tambem uma pista para Drift no Aeroporto de Las Venturas CLIKE AKI para baixar (duvidas ou segestoes add no msn cronos_bomba@hotmail।com) divirta-se!!!!

>iniciativa dharma

by Lucas_adm Postado às 11:51 2 comentários



Para quem é fã da série Lost e gosta de todo o mistério e suspense envolto na ilha e na Iniciativa Dharma este mod troca as texturas da Zombotech pelos Logotipo e imagens da misteriosa Organização। (bs)CLIKE na imagen para baixar ou qualquer duvida add cronos_bomba@hotmail।com divirta-se !!!! ou qualquer duvida add no msn cronos_bomba@hotmail.com

Tutorial de Programação Iniciante/Intermediário

Índice:
  • Iniciando
  • Strings e Variáveis
  • Strtok
  • Multi-Array Strings
  • Stock Functions
  • User Databases (dudb)
  • Y_Objects
  • Races

1. Iniciando
Neste tutorial vou explicar algumas funções do pawno que algumas pessoas vem me perguntando bastante. Lembrando que este é umtutorial de nível Iniciante/Intermediário. Para aprender o seguinte, você deve saber no mínimo as funções básicas do pawno, e a função de cada callback (você deve no mínimo dos mínimos saber o que é um callback). Logo estarei postando outros tutoriais, de nível Intermediário/Avançado e de Nível Iniciante.


2. Strings e Variáveis
Variáveis são as funções que vão definir o que vai acontecer se esta variável tiver um certo valor. Ex: Se o jogador fulano tiver a profissão número 12, ele vai explodir, etc... E strings são funções que geralmente são criadas para mandar mensagens que tenham variáveis, Ex.: Você está jogando e vai no banco para ver seu saldo. Então aparece a mensagem: "Seu saldo bancário: 504031904913". Sendo que 504031904913 é uma variável que define a quantia que você tem no banco.
Então, vamos começar criando uma variável. Ponha isto no topo do seu gamemode:

CÓDIGO
new kills[MAX_PLAYERS];
new deaths[MAX_PLAYERS];

Estas variáveis vao ser usadas para mostrar o numero de kills e mortes de um player.
Agora vamos botar a seguinte função no OnPlayerDeath:

CÓDIGO
kills[killerid] ++;
deaths[playerid] ++;

E agora vamos fazer um comando para mostrar os status do player. Ponha isso no OnPlayerCommandText:

CÓDIGO
if(strcmp(cmdtext, "/stats", true) == 0)
{
new stringkills[256];
new stringmortes[256];
format(stringkills,sizeof(stringkills), "Kills: %d",kills[playerid]);
format(stringmortes,sizeof(stringmortes), "Mortes: %d",mortes[playerid]);
SendClientMessage(playerid, 0xFFFF00AA, "Seus stats:");
SendClientMessage(playerid, 0xFFFF00AA, stringkills);
SendClientMessage(playerid, 0xFFFF00AA, stringmortes);
return 1;
}

O que acabamos de fazer:
Quando botamos new kills[MAX_PLAYERS]; nós criamos uma variável, que seria executada particularmente para cada player. Após isso, colocamos no OnPlayerDeath kills[killerid] ++; & deaths[playerid] ++;, isso fará com que o assassino ganhe + 1 na variável kills, e o morto + 1 na variavel deaths. Após isso, fizemos um comando que mostraria o numero de kills e mortes do player quando ele digitasse /stats, usando strings. Como você pode perceber, usamos a função format(stringkills,sizeof(stringkills), "Kills: %d",kills[playerid]);, que significa que formatou a string para aparecer o número de kills, e usamos SendClientMessage(playerid, 0xFFFF00AA, stringkills); para mandar uma mensagem com a string para o player.
OBS: Nunca se pode usar uma variável em SendClientMessage sem ter usado uma string!
OBS²: Você não precisa usar strings em todas as mensagens, só precisa usar nas que tem variáveis!


3. Strtok
A função strtok é usada para usar comandos com variáveis, por exemplo /vida id vida. Se nós não usarmos strtok para fazer comandos como /vida id vida, teríamos que fazer um comando para cada id, por exemplo /vida 1 100 depois /vida 2 100 depois /vida 3 100, e isso gastaria muito do tempo e totalmente inútil. Então vamos começar fazendo um comando com strtok.
Adicione esta função (strtok) no final do seu Gamemode/Filterscript:
CÓDIGO
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < offset =" index;"> ' ') && ((index - offset) < (sizeof(result) - 1))) { result[index - offset] = string[index]; index++; } result[index - offset] = EOS; return result; }


Agora vamos colocar isso em cima de tudo no OnPlayerCommandText:
CÓDIGO
new cmd[256];
new idx;
cmd = strtok(cmdtext, idx);

E agora vamos fazer o comando, que neste caso será o comando /vida id vida.
CÓDIGO
if(strcmp(cmd,"/vida", true)==0 && IsPlayerAdmin(playerid))
{
new string [256];
new tmp[256];
new plid, vida;
new nomeentregador[MAX_PLAYER_NAME];
new nomerecebedor[MAX_PLAYER_NAME];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)){
SendClientMessage(playerid, cinza, "[ERRO DE SINTAXE] /vida [id] [vida]");
return 1;
}
plid = strval(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, cinza, "[ERRO DE SINTAXE] /vida [id] [vida]");
return 1;
}
vida = strval(tmp);
if(IsPlayerConnected(plid)){
GetPlayerName(plid, nomerecebedor, sizeof(nomerecebedor));
GetPlayerName(playerid, nomeentregador, sizeof(nomeentregador));
format(string, sizeof(string), "O Admnistrador %s setou a vida de %s para %d.", nomeentregador,nomerecebedor,vida);
SendClientMessageToAll(branco, string);
SetPlayerHealth(plid,vida);
return 1;
}
else
{
SendClientMessage(playerid, cinza, "Jogador não conectado.");
return 1;
}
}

Traduzindo:
Fizemos um comando, que se o player for admin, vai setar a vida do jogador escolhido para a vida escolhida. Criamos a variável tmp, que representaria o strtok. Você pode notar que botamos a função if(!strlen(tmp)){, que significa que se o jogador não digitar o id e a vida desejada, vai aparecer a mensagem "[ERRO DE SINTAXE] /vida id vida". Então criamos uma variável chamada vida e uma chamada plid. A variável plid será o id do player escolhido, e a variável vida seria a vida que seria dada ao player. Então usamos uma string para mandar a mensagem "O Admnistrador %s setou a vida de %s para %d." e depois como final do code, usamos o SetPlayerHealth(plid, vida);, que setaria a vida do player desejado.


4. Multi-Array Strings
Multi array strings são strings que carregam várias mensagens ao mesmo tempo, ou vários números, coordenadas, etc... Um exemplo muito conhecido de multi-array string é a multi-array do nome dos carros.

CÓDIGO
new VehicleName[212][0] = {
"Landstalker",//--------> Numero 0
"Bravura",// --------> Numero 1
"Buffalo",// -------> Numero 2
"Linerunner",// -------> E assim vai...
"Pereniel",
"Sentinel",
"Dumper",
"Firetruck",
"Trashmaster",
"Stretch",
"Manana",
"Infernus",
"Voodoo",
"Pony",
"Mule",
"Cheetah",
"Ambulance",
"Leviathan",
"Moonbeam",
"Esperanto",
"Taxi",
"Washington",
"Bobcat",
"Mr Whoopee",
"BF Injection",
"Hunter",
"Premier",
"Enforcer",
"Securicar",
"Banshee",
"Predator",
"Bus",
"Rhino",
"Barracks",
"Hotknife",
"Trailer",
"Previon",
"Coach",
"Cabbie",
"Stallion",
"Rumpo",
"RC Bandit",
"Romero",
"Packer",
"Monster Truck",
"Admiral",
"Squalo",
"Seasparrow",
"Pizzaboy",
"Tram",
"Trailer",
"Turismo",
"Speeder",
"Reefer",
"Tropic",
"Flatbed",
"Yankee",
"Caddy",
"Solair",
"Berkley's RC Van",
"Skimmer",
"PCJ-600",
"Faggio",
"Freeway",
"RC Baron",
"RC Raider",
"Glendale",
"Oceanic",
"Sanchez",
"Sparrow",
"Patriot",
"Quad",
"Coastguard",
"Dinghy",
"Hermes",
"Sabre",
"Rustler",
"ZR-350",
"Walton",
"Regina",
"Comet",
"BMX",
"Burrito",
"Camper",
"Marquis",
"Baggage",
"Dozer",
"Maverick",
"News Chopper",
"Rancher",
"FBI Rancher",
"Virgo",
"Greenwood",
"Jetmax",
"Hotring",
"Sandking",
"Blista Compact",
"Police Maverick",
"Boxville",
"Benson",
"Mesa",
"RC Goblin",
"Hotring Racer",
"Hotring Racer",
"Bloodring Banger",
"Rancher",
"Super GT",
"Elegant",
"Journey",
"Bike",
"Mountain Bike",
"Beagle",
"Cropdust",
"Stunt",
"Tanker",
"RoadTrain",
"Nebula",
"Majestic",
"Buccaneer",
"Shamal",
"Hydra",
"FCR-900",
"NRG-500",
"HPV1000",
"Cement Truck",
"Tow Truck",
"Fortune",
"Cadrona",
"FBI Truck",
"Willard",
"Forklift",
"Tractor",
"Combine",
"Feltzer",
"Remington",
"Slamvan",
"Blade",
"Freight",
"Streak",
"Vortex",
"Vincent",
"Bullet",
"Clover",
"Sadler",
"Firetruck",
"Hustler",
"Intruder",
"Primo",
"Cargobob",
"Tampa",
"Sunrise",
"Merit",
"Utility",
"Nevada",
"Yosemite",
"Windsor",
"Monster Truck",
"Monster Truck",
"Uranus",
"Jester",
"Sultan",
"Stratum",
"Elegy",
"Raindance",
"RC Tiger",
"Flash",
"Tahoma",
"Savanna",
"Bandito",
"Freight",
"Trailer",
"Kart",
"Mower",
"Duneride",
"Sweeper",
"Broadway",
"Tornado",
"AT-400",
"DFT-30",
"Huntley",
"Stafford",
"BF-400",
"Newsvan",
"Tug",
"Trailer",
"Emperor",
"Wayfarer",
"Euros",
"Hotdog",
"Club",
"Trailer",
"Trailer",
"Andromada",
"Dodo",
"RC Cam",
"Launch",
"Polícia (LSPD)",
"Polícia (SFPD)",
"Polícia (LVPD)",
"Police Ranger",
"Picador",
"S.W.A.T. Van",
"Alpha",
"Phoenix",
"Glendale",
"Sadler",
"Trailer de Bagagens",
"Trailer de Bagagens",
"Stair Trailer",
"Boxville",
"Farm Plow",
"Trailer de Utilidades"
};

Como você pode ter visto, esta string tem o nome de todos os carros. Agora vamos usá-la. Vamos fazer um comando /nomeveiculo [id], que vai mostrar o nome do veículo do id escolhido.
CÓDIGO
if (strcmp(cmd, "/nomeveiculo", true)==0)
{
new string [256];
new tmp[256];
new idveiculo;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)){
SendClientMessage(playerid, cinza, "[ERRO DE SINTAXE] /nomeveiculo [id]");
return 1;
}
idveiculo = strval(tmp);
format(string, sizeof(string), "Nome do veículo: %s.", VehicleName[idveiculo - 400]);
SendClientMessageToAll(branco, string);
return 1;
}

Agora fizemos um comando que vai mostrar o nome do veículo, e usamos VehicleName[idveiculo - 400] para poder mostrar o nome do veículo certo. Ou seja, quando ele digita /nomeveiculo 400, vai mostrar o veículo Nº 0, já que mostra a variável idveiculo - 400.


5. Stock Functions
Stocks e são funções criadas pelo player, para simplificar funções e adicionar novas funções ao sa-mp. Aqui um exemplo bem conhecido de função stock:
CÓDIGO
stock GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
{ // Created by Y_Less

new Float:a;

GetPlayerPos(playerid, x, y, a);
GetPlayerFacingAngle(playerid, a);

if (GetPlayerVehicleID(playerid)) {
GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
}

x += (distance * floatsin(-a, degrees));
y += (distance * floatcos(-a, degrees));
}


Esse stock adiciona uma função ao sa-mp, de pegar as coordenadas na frente do jogador. Agora vamos criar nossa própria função no sa-mp, uma função de SETAR o dinheiro das pessoas. (Não tem função de setar, so de dar dinheiro)
CÓDIGO
stock SetarGrana(playerid, grana)
{
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, grana);
}

Ok, nosso stock function está pronto, ou seja, vai resetar a grana do player e depois vai dar o dinheiro, sendo assim a mesma coisa que setar. Agora nós podemos usar a função que nós criamos em qualquer parte do nosso script. Por Exemplo, tente combinar o que aprendemos antes com os strtok com o SetarGrana, vamos criar um comando /setargrana id grana com a função que acabamos de fazer.
CÓDIGO
if (strcmp(cmd, "/setargrana", true)==0 && IsPlayerAdmin(playerid))
{
new tmp[256];
new string[256];
new plid, grana;
new nomeentregador[MAX_PLAYER_NAME];
new nomerecebedor[MAX_PLAYER_NAME];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)){
SendClientMessage(playerid, cinza, "[ERRO DE SINTAXE] /setargrana [id] [grana]");
return 1;
}
plid = strval(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, cinza, "[ERRO DE SINTAXE] /setargrana [id] [grana]");
return 1;
}
grana = strval(tmp);
if(IsPlayerConnected(plid)){
GetPlayerName(plid, nomerecebedor, sizeof(nomerecebedor));
GetPlayerName(playerid, nomeentregador, sizeof(nomeentregador));
format(string, sizeof(string), "O Admnistrador %s setou o dinheiro de %s para R$%d.", nomeentregador,nomerecebedor,grana);
SendClientMessageToAll(branco, string);
SetarGrana(plid, grana);
return 1;
}
else
{
SendClientMessage(playerid, cinza, "Jogador não conectado.");
return 1;
}
}

Pronto! Aí está o nosso code simplificado de setar grana(na verdade nem tanto, mas vc pode simplificar mais do jeito q vc quiser fazer seu stock function). Stocks podem fazer qualquer função, e são geralmente usados para fazer includes.

6. User Databases
User databases são includes usados para salvar os dados de algum jogador. Neste tutorial vou explicar como usar o DUDB.
O dudb, na minha opinião é o melhor include de database. Aqui vou explicar como utilizar as funções do dudb:

udb_Create(Filename[], password[]): Função utilizada para criar uma conta no dudb. Veja no exemplo de sistema de registro/login.
udb_UserSet(Filename[], key[], value[]): Função utilizada para salvar algum dado em formato de texto.

udb_UserSetInt(Filename[], key[], value): Função utilizada para salvar algum dado em formato de número INTEIRO. Ex: Variáveis de kills /mortes

udb_UserSetFloat(Filename[], key[], Float:value): Função utilizada para salvar algum dado em formato de float ( como por exemplo, as coordenadas de spawn de algum player )

udb_UserInt(Filename[], key[]): Checa o valor de alguma variável de número INTEIRO no arquivo, utilizada para carregar os dados.

udb_UserFloat(Filename[], key[]): Checa o valor de alguma variável de número FLOAT no arquivo, utilizada para carregar dados de coordenadas.

udb_CheckLogin(Filename[], password[]): Função utilizada nos sistemas de login/registro para ver se a senha está correta.

Bom, agora que sabemos as funções principais do DUDB e pra que elas servem, vamos criar nosso sistema de login/registro.
Vamos adicionar isso no nosso gamemode:
CÓDIGO
//No topo de tudo, junto com os outros includes:
#include
#define amarelo 0xFFFF00AA
#define verde 0x33FF33AA
#define vermelho 0xFF0000AA
#define vermelhoescuro 0xAA3333AA
#define branco 0xFFFFFFAA
#define rosa 0xCCFF00FFAA
#define azul 0x057ABDAA
#define cinza 0xC0C0C0AA
#define yellow 0xFFFF00AA
#define laranja 0xFFA500AA

//agora no OnPlayerConnect:
new nomepl[MAX_PLAYER_NAME];
GetPlayerName(playerid, nomepl, sizeof(nomepl))
if(!udb_Exists(nomepl))
{
SendClientMessage(playerid, azul, "[LOGIN/REGISTRO] Você não está registrado, registre-se com /registrar senha");
}
else
{
SendClientMessage(playerid, azul, "[LOGIN/REGISTRO] Você já está registrado, logue-se com /logar senha");
}

//agora no OnPlayerCommandText
if (strcmp(cmd, "/registrar", true)==0)
{
new tmp[256];
new senha[256];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,vermelhoescuro,"/registrar [senha] - Exemplo: /registrar 123");
return 1;
}
if(udb_Exists(PlayerName(playerid)))
{
SendClientMessage(playerid, vermelhoescuro, "Você já tem uma conta no Renaissance RPG!");
return 1;
}
format(senha, sizeof(senha), "%s", tmp);
new nomepl[MAX_PLAYER_NAME];
GetPlayerName(playerid, nomepl, sizeof(nomepl));
udb_Create(nomepl, senha);
SendClientMessage(playerid, azul, "Registrado com sucesso!");
return 1;
}
if (strcmp(cmd, "/logar", true)==0)
{
new tmp[256];
new senha[256];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,vermelhoescuro,"/logar [senha] - Exemplo: /logar 123");
return 1;
}
if(logado[playerid] == 1)
{
SendClientMessage(playerid, vermelhoescuro, "Você já está logado!");
return 1;
}
format(senha, sizeof(senha), "%s", tmp);
if (udb_CheckLogin(PlayerName(playerid),tmp)) {
SendClientMessage(playerid, azul, "Logado com sucesso!");
return 1;
}
else
{
SendClientMessage(playerid, vermelho, "Senha errada!");
}
return 1;
}

Agora acabamos de criar nosso sistema de login/registro. Vamos criar agora um sistema para salvar o dinheiro de alguém.
CÓDIGO
//no OnPlayerDisconnect
new grana;
new nomepl[MAX_PLAYER_NAME];
GetPlayerName(playerid, nomepl, sizeof(nomepl));
grana = GetPlayerMoney(playerid);
udb_UserSetInt(nomepl, "Grana", grana);

//agora no OnPlayerSpawn
new grana;
new nomepl[MAX_PLAYER_NAME];
GetPlayerName(playerid, nomepl, sizeof(nomepl));
grana = udb_UserInt(nomepl, "Grana");
GivePlayerMoney(playerid, grana);

Pronto! Agora criamos um sistema que salva o dinheiro de alguém quando esta pessoa volta ao servidor! Para fazer as variáveis salvarem, é muito simples, basta adicionar o seguinte code no /logar e no OnPlayerDisconnect:
CÓDIGO
//No OnPlayerDisconect
new nomepl[MAX_PLAYER_NAME];
GetPlayerName(playerid, nomepl, sizeof(nomepl));
udb_UserSetInt(nomepl, "Banco", banco[playerid]);/*isso faz salvar, coloquei a variável banco[playerid] por pedido do Cronos, mas dependendo do que vc quiser salvar, mude isto*/

//no sistema de /logar
new nomepl[MAX_PLAYER_NAME];
GetPlayerName(playerid, nomepl, sizeof(nomepl));
Banco[playerid] = udb_UserInt(nomepl, "Banco");//Isso faz carregar, mude a variável Banco[playerid] e "Banco" pela variavel que quiser carregar

Isso vai fazer salvar a variável banco quando o player desconectar, e carregar quando ele logar.

7. Y_Objects
Y_Objects é um streamer de objetos usado para poder exceder o limite de objetos no sa-mp, evitando crashs. O ponto bom dele, é que você pode criar muitos objetos, o ponto ruim é que deixa seu script muito pesado e demora um pouco para carregar os objetos dentro do jogo. Enfim, vamos ao que interessa:
Para começar criando seus objetos, você deve trocar a função CreateObject por CreateDynamicObject, sem mudar as funções dentro dos parênteses. Após ter feito isso, você bota o seguinte no gamemode:

CÓDIGO
//no OnGameModeInit
Object_Object();
AQUI VC POE OS CREATEDYNAMICOBJECT

//no OnPlayerDisconnect
Object_OnPlayerDisconnect();

Pronto! Agora os objetos foram criados.
Caso vc queira saber um pouco mais sobre o Y_Objects, vou colocar aqui o que faz cada função.


Object_AddToPlayer(objectid, playerid) - Adiciona um certo objeto apenas para um player(use uma variável para definir o objeto)
Object_AddToWorld(objectid, world) - Adiciona um certo objeto apenas para um mundo virtual(lembrando que se não definir o world, o objeto será setado no inicial)
Object_AddToAllPlayers(objectid) - Adiciona um certo objeto a todos os players conectados(quem se conectar depois não verá os objetos)
Object_AddToAllWorlds(objectid) - Adiciona um certo objeto a todos os virtual worlds
Object_RemoveFromPlayer(objectid, playerid) - Remove um certo objeto para apenas um player
Object_RemoveFromWorld(objectid, world) - Remove um certo objeto de apenas um world.
Object_RemoveFromAllPlayers(objectid) - Remove o objeto de todos os players
Object_RemoveFromAllWorlds(objectid) - Remove de todos os virtual worlds
Object_SetViewDistance(objectid, distance) - Seta a distância no qual o objeto pode ser visto (normal = 1000)
MoveDynamicObject(object, x, y, z, speed) - Move um objeto
StopDynamicObject(objectid) - Para de mover um objeto
IsValidDynamicObject(objectid) - Checa se o objeto (do Y_Objects) existe
CreateDynamicObject(object, x, y, z, rx, ry, rz) - Cria um objeto do include
DestroyDynamicObject(object) - Destroy o objeto
AttachDynamicObjectToPlayer - Puxa o objeto junto ao jogador, ou seja, se o jogador se mover, o objeto vai junto
AttachDynamicObjectToObject - Puxa o objeto junto ao objeto, ou seja, se o objeto se mover, este objeto vai junto
DettachDynamicObjectFromPlayer - Despuxa o objeto do jogador



8. Races
Para fazer corridas, é um processo meio complicado, estaremos usando a função SetPlayerRaceCheckpoint.
Primeiramente, vou explicar como funciona cada função necessária para se criar uma corrida:
CÓDIGO
SetPlayerRaceCheckpoint(playerid, tipo, x, y, z, nextx, nexty, nextz, tamanho):
No playerid, vamos colocar o id da pessoa que vai receber o checkpoint, no tipo, o tipo do checkpoint, estes são os tipos:
0 - Normal: Checkpoints normais da corrida, aqueles que tem a seta apontando para onde vai ser o próximo checkpoint.
1 - Finish: Checkpoint Final de uma Corrida.
2 - Nothing: Checkpoint que não tem nada dentro dele.
3 - Air: Checkpoint feito para corridas aéreas.
4 - Air Finish: Checkpoint feito para final de corridas aéreas.
Em x,y e z colocaremos as coordenadas onde serão os checkpoints, e em nextx, nexty e nextz, as coordenadas do próximo checkpoint(caso seja um checkpoint de final, deixe as coordenadas do mesmo).
E por último, em tamanho colocaremos o tamanho do checkpoint(o natural é geralmente colocar 8.0)

DisablePlayerRaceCheckpoint(playerid):
Usaremos essa função para trocar de checkpoint quando o player chegar em algum checkpoint da corrida.

Agora vamos fazer nossa corrida. Para simplificar as coordenadas de checkpoint da corrida, vamos usar um Float Multi-Array.
Acrescentaremos isso em cima de OnGamemodeInit:

CÓDIGO
new checkcorrida[MAX_PLAYERS];

new Float:ChecksAvenida[17][3] = {
{2021.9279,851.2713,6.4387},
{1806.2888,851.1154,10.3762},
{1597.7745,850.9503,6.4374},
{1315.8704,886.0849,6.5154},
{1227.3850,1170.5470,6.5219},
{1228.7192,1804.4149,6.4378},
{1229.5260,2301.2026,6.4387},
{1447.5416,2452.2988,6.4377},
{1849.4731,2497.6997,6.5153},
{2287.5569,2607.9063,6.4585},
{2609.7202,2514.3423,5.8201},
{2706.6592,2158.3931,6.4492},
{2705.5173,1674.4374,6.4448},
{2706.8931,1278.5399,6.4373},
{2624.1135,932.2136,6.4433},
{2312.5583,854.1749,6.4375},
{2049.3154,853.4050,6.4387}
};

Pronto! Acabamos de fazer um Multi-Array com as coordenadas dos checkpoints da corrida! Essa corrida está localizada na avenida, em LV. Agora vamos fazer um comando para o player entrar na corrida. (vamos fazer uma corrida singleplayer por enquanto, apenas para explicar como fazer a troca de checkpoints) Logo que ele digitar o comando, o checkpoint 1 da corrida vai aparecer no mapa do player, e quando entrar no checkpoint, vai aparecer o 2, e assim por diante... Então, aqui o code do comando:

CÓDIGO
if(strcmp(cmdtext,"/entrarcorrida",true)==0)
{
checkcorrida[playerid] = 0;
SetPlayerRaceCheckpoint(playerid, 0, ChecksAvenida[checkcorrida[playerid]][0], ChecksAvenida[checkcorrida[playerid]][1], ChecksAvenida[checkcorrida[playerid]][2], ChecksAvenida[checkcorrida[playerid] + 1][0], ChecksAvenida[checkcorrida[playerid] + 1][1], ChecksAvenida[checkcorrida[playerid] + 1][2], 8.0);
return 1;
}

E agora, faremos um sistema para trocar de checkpoint, usando o callback OnPlayerEnterRaceCheckpoint. Caso não o tenha no seu gamemode, adicione.
CÓDIGO
public OnPlayerEnterRaceCheckpoint(playerid)
{
if(checkcorrida[playerid] == 17)
{
SendClientMessage(playerid, 0xFFFF00AA, "Você terminou a corrida!");
DisablePlayerRaceCheckpoint(playerid);
checkcorrida[playerid] = 0;
return 1;
}
else
{
DisablePlayerCheckpoint(playerid);
checkcorrida[playerid] ++;
SetPlayerRaceCheckpoint(playerid, 0, ChecksAvenida[checkcorrida[playerid]][0], ChecksAvenida[checkcorrida[playerid]][1], ChecksAvenida[checkcorrida[playerid]][2], ChecksAvenida[checkcorrida[playerid] + 1][0], ChecksAvenida[checkcorrida[playerid] + 1][1], ChecksAvenida[checkcorrida[playerid] + 1][2], 8.0);
return 1;
}
}

Então, o que acabamos de fazer?
Criamos uma multi-array para simplificar as coordenadas dos checkpoints, e também criamos uma variável para definir o checkpoint que o player está. Então, cada vez que o player entrava em um checkpoint, a variável aumentava e se setava um checkpoint de acordo com o número que estava a variável. Quando a variável chegasse em 17, finalizaria a corrida. Assim fizemos nossa corrida.


FIM
Acompanhe as atualizações desse tutorial no link a seguir: http://forum.samp-br.com/index.php?showtopic=230

Feito por waxhunter