sexta-feira, 1 de janeiro de 2010

Feliz 2010!

Feliz Ano Novo todo mundo, tudo de bao pra quem le esse blog e pra quem nao le tbm ;P :)

Read more...

sábado, 26 de dezembro de 2009

GTA2 GH v1.5 lançada

Quem já jogou o GTA2 no multiplayer via GTA2 Game Hunter sabe do q estou falando. A versão estável mais recente (e a que todo mundo tem) é a versão 1.491:


clique na imagem para ver em tamanho maior

O programador e modder Sektor, que faz o GTA2 Game Hunter, estava trabalhando no GTA2 GH v1.5 há um tempo, e acaba de lançá-lo numa versão beta (GTA2 GH v1.5 beta 28):


clique na imagem para ver em tamanho maior

Legenda:


  1. Opção pra escolher o "tema" do GH: Custom (vc escolhe as cores), BM (BenMillard, que fez uma versão do GH, esse tema fica com a cara dessa versão. Pra tê-la, vc tem q mandar um email pro Ben) ou Sektor (o tema que o próprio criador do GH usa, fundo preto com chat geral branco)

  2. Agora tem abas para chat global e chat privado

  3. Vc nao pode mais ver jogos da versão 1.491 e anteriores nem vice-versa

  4. A parte do comentário do jogo não aparece mais na lista, mas vc ainda recebe o comentário qdo tenta entrar no jogo



Há modificações na janela do Create Game e Settings também, baixe o GH 1.5 e veja.
Download
Lista de mudanças recentes (em inglês)
Lista de afazeres(em inglês)


Edit:


Já mudou pra versão 1.5 beta 29.
Modificações:

  • Seu país agora é detectado com a ajuda de http://geoloc.daiguo.com/?self

  • Se seu nome no GTA2 está em branco então ele é automaticamente colocado como o seu nome no GH

  • Movida a caixa "Timestamp" pro seleção de tema Custom

  • Foi adicionado código pra ajudar a achar o que está causando um bug de display das bandeiras



Fique de olho no primeiro post desse tópico para atualizações do GH 1.5 beta

Read more...

sexta-feira, 25 de dezembro de 2009

FELIZ NATAL! =D

Feliz Natal a todos que lêem meu blog :). Td de bao para voces e obrigado pelas visitas :P

Comentem dando feliz Natal também XDXD

Read more...

quinta-feira, 24 de dezembro de 2009

Cranes & Crushers

tutcrusherbase 

Um car crusher eh uma combinação de vários objetos no script, incluindo o crusher, os guindastes e as esteiras.

Lista de características

 

tutcrushercomplt Antes de vc poder criar um car crusher completo, vc primeiro deve entender como ele funciona:
  1. Um carro é estacionado abaixo do crane/guindaste 1
  2. O crane 1 pega o carro e o coloca no crusher
  3. O crusher destrói o carro
  4. O crane 2 pega o carro e o coloca no conveyor belt/esteira 1
  5. O wreck passa por um scanner, entra no prédio 1 e desaparece
  6. No outro lado do prédio, uma recompensa é criada no conveyor belt 2 e sai do prédio
  7. Se a recompensa não é coletada, ela entra no prédio 2 e desaparece

Crusher

Vamos começar com o crusher em si. A base deve consistir de 5 blocos dispersados em um sinal de +; nos distritos, as beiradas sao preenchidas com paredes diagonais, formando um octagono. A base não precisa ser elevada, mas tenha certeza que é impossivel chegar nela. O crusher em si é colocado no script com o seguinte comando:

CRUSHER nome = ( X.x , Y.y )

 

nome Um nome único pro crusher
( X.x , Y.y ) As coordenadas do crusher. A coordenada Z.z não é necessária, pois o jogo coloca o crusher no ponto mais alto do lugar, por isso vc nao pode colocar nada em cima do crusher

 

Cranes/guindastes

Próximo do crusher, vc precisa de dois cranes. No mapa, o crane consiste simplesmente de 2 blocos um acima do outro; o guincho dele é feito no script. Há vários tiles pra cranes, como o 878. Não coloque um crane muito proximo do outro, pois será estranho se um crane se mover através do outro.

Primeiro crane

Para o primeiro crane, vc precisará deste comando:

CRANE_DATA nome = ( X.x , Y.y ) rotação_crane NO_HOMECRANE FIRST ( X.x , Y.y 2) rotação_carro

nome Um nome unico. Vc vai precisar dele dps
( X.x , Y.y ) As coordenadas do crane. De novo, sem a coordenada Z
rotação_crane A rotação do guincho do crane qdo ele está parado.
( X.x , Y.y 2 ) As coordenadas do lugar no qual o crane deve colocar o carro. Neste caso, o centro do crusher.
rotação_carro A rotação do carro na hora que ele é posicionado no crusher. Ela deve ser 0 ou 180 qdo o carro será colocado num crusher

 

Segundo crane

O segundo crane pega o wreck do crusher e o coloca no conveyor belt 1. Isso eh feito com o seguinte comando:

CRANE_DATA nome = ( X.x , Y.y ) rotação_crane nome_primeiro_crane SECOND ( X.x , Y.y 2)
rotação_carro
nome O nome unico do crane
( X.x , Y.y ) As coordenadas do crane
rotação_crane A rotação do guincho na posição inicial
nome_primeiro_crane O nome do primeiro crane
( X.x , Y.y 2 ) As coordenadas do lugar que o crane deveria colocar o wreck, no caso o conveyor belt
rotação_carro A rotação que o wreck devera ter em relação ao conveyor belt. Ela deve estar alinhada ao rumo que o conveyor vai

Crane básico

O crane básico é um crane que pega os carros e os coloca nos Transporters/Transportadores/Trailers e vice-versa. Esse tipo de crane não é usado para crushers

CRANE_DATA nome ( X.x , Y.y ) rotação_crane NO_HOMECRANE
nome Um nome único pro crane
( X.x , Y.y ) As coordenadas do crane
rotação_crane A rotação do guindaste na posição inicial

Esteira/Conveyor Belt

Os conveyor belts transportam o wreck dentro de um predio e a recompensa fora de outro prédio. Eles são feitos com tiles animados e um comando. Qdo fazendo o conveyor belt, vc deve extendê-los ao menos dois blocos dentro dos prédios para ter espaço o suficiente pra fazer os objetos aparecerem e desaparecerem fora do campo de visão. No arquivo de texturas bil.sty, os tiles usados para os conveyor belts são os 309, 313, 317 e 318. Dê a animação a “frame rate” de 2 pra eles ficarem com a mesma velocidade que a dos objetos se movendo.

P/ fazer os objetos se moverem qdo colocados nos tiles animados, vc tem q colocar o seguinte comando no seu script:

CONVEYOR nome = ( X.x , Y.y , Z.z ) ( X.x , Y.y 2 ) X Y

nome Um nome único pro conveyor
( X.x , Y.y , Z.z ) As coordenadas do centro do conveyor
( X.x , Y.y 2 ) A largura e o comprimento do conveyor
X O movimento de acordo com o eixo X: 1 é pro leste, 0 é parado e –1 é pro oeste
Y O movimento de acordo com o eixo Y: 1 é pro sul, 0 é parado e –1 é pro norte

 

Scanner

Scanners são objetos invisiveis que detectam qual era o modelo do wreck ou veículo que passou por ele e diz ao GENERATOR qual é a recompensa que deve ser dada. Note que o scanner pode escanear wrecks, mas tbm veículos não-compactados, fazendo com que seja possível pular o processo do crusher e criando um sistema no qual os carros são “entregues” em troca de uma recompensa

DECLARE_CRANE_POWERUP ( nome_crane , nome_generator , X , Y , Z )
nome_crane O nome do crane que poe o wreck no conveyor.
nome_generator O nome do generator que cria a recompensa (ver abaixo)
X , Y , Z As coordenadas do scanner. O lugar ideal é logo antes do DESTRUCTOR (veja abaixo), pq aí vc tem certeza q o wreck q vc colocou ali é escaneado antes de ser deletado

Destructor

Os DESTRUCTORs são objetos invisíveis que deletam qualquer coisa que passa por eles. Vc precisará de um no final de cada conveyor: um pra remover os wrecks e um pra remover as recompensas não utilizadas. Os DESTRUCTORS devem estar escondidos dentro de um prédio, pra mascarar o fato que os objetos desaparecem do nada no ar.

DESTRUCTOR nome = ( X.x , Y.y , Z.z ) ( X.x , Y.y 2)
nome Um nome único pro destructor.
( X.x , Y.y , Z.z ) As coordenadas do centro do destructor.
( X.x , Y.y 2 ) A largura e comprimento do destructor (deixe como “1.0 , 1.0”)

GENERATOR

No começo do segundo conveyor, na localização onde as recompensas devem ser criadas, vc precisa criar um GENERATOR. Não importa qual OBJECT/objeto vc coloca no generator, e vc nao tem q ativá-lo com um SWITCH_GENERATOR. O tempo que tem que demorar pra aparecer uma recompensa qdo o wreck passa pelo scanner pode ser “setado” com o tempo_min e tempo_max.

Lista de recompensas

Finalmente, vc deve escolher qual carro da qual recompensa. Isso eh feito com o seguinte comando:

DECLARE_POWERUP_CARLIST ( CARRO1 , CARRO2 , … , CARRO18 , CARRO19 )
Recompensas do Car Crusher
CARRO1 , CARRO2 , … , CARRO18 , CARRO19 A lista de carros correspondentes a lista de recompensas abaixo (em ordem). CARRO1 da uma metralhadora, CARRO2 uma Rocket Launcher, CARRO3 uma Electrogun, etc. Armas vem em
sets de 3x5 de munição. Carros não mencionados nessa lista darão uma metralhadora
1 Metralhadora
2 Rocket Launcher
3 Electrogun
4 Molotov Cocktails
5 Grenades
6 Shotgun
7 Electro Baton (coloque um veiculo pesado aqui ou um veículo ja colocado pra evitar que os jogadores peguem o Electro Baton
8 Flamethrower
9 Silenced Machine Gun
10 Health
11 Armour
12 Get Outta Jail FreeCard
13 Cop Bribe
14 Invulnerability*
15 Double Damage
16 Fast Reload
17 Electrofingers
18 Respect!
19 Invisibility

Exemplo

Abaixo está um exemplo de um car crusher funcional e completo.

CRANE_DATA crushera = ( 67.5 , 84.5 ) 0 NO_HOMECRANE FIRST ( 65.5 , 86.5 ) 180
CRANE_DATA crusherb = ( 44.5 , 21.5 ) 283 crushera SECOND ( 43.5 , 21.5 ) 0
CRUSHER crusherc = ( 65.5 , 86.5 )
CONVEYOR crusherd = ( 67.0 , 81.5 , 3.0 ) ( 8.0 , 1.0 ) -1 0
DESTRUCTOR crushere = ( 70.5 , 81.5 , 3.0 ) ( 1.0 , 1.0 )
CONVEYOR crusherg = ( 73.5 , 87.0 , 3.0 ) ( 1.0 , 8.0 ) 0 1
GENERATOR crusherf = ( 73.5 , 83.5 , 3.0 ) 0 COLLECT_06 300 300 5
DESTRUCTOR crusherh = ( 73.5 , 90.5 , 3.0 ) ( 1.0 , 1.0 )
LEVELSTART
DECLARE_CRANE_POWERUP ( crusherb , crusherf , 69.5 , 81.5 , 3.0 )
DECLARE_POWERUP_CARLIST ( ALFA , DART , EDSEL , FIAT , GRAHAM , JEFFREY , JEFFREY , MORGAN , MORRIS , SPIDER , STINGRAY , STYPE , STYPECAB , VESPA , WBTWIN , XK120 , MIURA , EDSELFBI , ISETTA )
LEVELEND

 

Notas

  • Vc só pode fazer 10 crushers. Nenhum a mais
  • Vc só pode usar uma lista de recompensas, todo car crusher dará as mesmas recompensas.

Read more...

quinta-feira, 3 de dezembro de 2009

Car Shops

Car shops como o Max Paynt, Red Army Surplus e Hell Oil são muito fáceis de adicionar a seu mapa.

O prédio


Primeiro, vc precisa de colocar um predio no mapa pra colocar os car shops nele. Vc pode copiar-colar um dos mapas originais ou desenhar seu proprio predio. Lembre-se que os prédios tem que ser cobertos, pra mascarar o fato que os carros mudam de cor do nada. E também lembre-se de fazer seus carshops reconhecíveis, aí os jogadores podem achá-los

Nesse tutorial eu fiz meu próprio prédio de carshop, mas vcs podem simplesmente abrir um dos distritos ou qualquer mapa com um carshop, selecionar o car shop e apertar CTRL+C, abrir seu mapa e apertar CTRL+V para colar o prédio onde quer que vc queira colocá-lo. Vc pode mover o predio selecionando-o e apertando Alt+setas (norte,sul,leste,oeste)/Q(acima)/A(abaixo). Tenha certeza que há espaço suficiente para as ruas que entram no carshop. Seu carshop se parecerá com isso:



Agora nos temos um prédio para nosso CarShop. Mas naturalmente nada acontecerá quando vc passar pelas ruas dele. Os CarShops verdadeiros são criados com o comando OBJ_DATA no script. Abra seu script e coloque isso na parte de programação (após LEVELSTART) do seu script:



OBJ_DATA name = ( X.x , Y.y , Z.z ) 0 CAR_SHOP tipo_shop







NomeUm nome único
X.x , Y.y , Z.zAs coordenadas do carshop
0A rotação do carshop. Deixe-a em 0 pois carshops nao devem ser rotacionados
tipo_shopO tipo de carshop que vc qr adicionar. Há quatro tipos de carshop: MACHINEGUN_SHOP, BOMB_SHOP, MINES_SHOP e OILSLICK_SHOP. O quinto carshop, o Max Paynt, não tem um código, ele é feito adicionando o remap no qual o carro vai ser pintado (lista aqui)


Pra criar um Red Army Surplus em 87,65,2, um Hell Oil em 89,65,2, um Max Paynt preto em 91,65,2, um Gold Mines em 93,65,2 e um Smith & Heston's em 95,65,2, o código se parecerá com isso:



OBJ_DATA machinegunshop1 = ( 95.5 , 65.5 , 2.0 ) 0 CAR_SHOP MACHINEGUN_SHOP
OBJ_DATA minesshop1 = ( 93.5 , 65.5 , 2.0 ) 0 CAR_SHOP MINES_SHOP
OBJ_DATA sprayshop1 = ( 91.5 , 65.5 , 2.0 ) 0 CAR_SHOP 2
OBJ_DATA oilslickshop1 = ( 89.5 , 65.5 , 2.0 ) 0 CAR_SHOP OILSLICK_SHOP
OBJ_DATA bombshop1 = ( 87.5 , 65.5 , 2.0 ) 0 CAR_SHOP BOMB_SHOP

Read more...

quarta-feira, 2 de dezembro de 2009

Adicionando luzes

Se vc quiser jogar seu mapa no modo dusk, vc tera q adicionar várias luzes pelo mapa inteiro, ou entao ele ficará todo escuro.

As luzes podem ser feitas no map editor criando light markers. Pra fazer isso, vc tem q selecionar o bloco onde vc qr colocar a luz. Isso pode ser em qqr lugar, ate mesmo dentro de predios.


^selecionando o bloco para adicionar a luz^

Vá em Edit>Lights>Add selection ou aperte Alt + L. Essa janela vai aparecer:



Essa janela eh usada pra alterar todas as caracteristicas da luz q vc vai adicionar. Vc pode mudá-las dps clicando duas vezes num light marker existente. Vc pode remover luzes criadas clicando em "Del".

A luz no exemplo vai ficar num sinal de neon vermelho/marrom, entao a luz tem q ser um vermelho escuro. As cores podem ser escolhidas em Colour > Choose. A intensidade da luz pode ser alterada em intensity, e o tamanho em Radius. Vc pode tbm fazer luzes que piscam com Timing, mas não eh mto usada e causa desynch no multiplayer.

Crie a luz qdo todas as configuraçoes estão corretas clicando em OK. Um light marker vai aparecer no bloco selecionado. Se não, vá em Edit > Lights > View Markers pra mostrar todos os light markers


^um light marker^

Para ver como seria seu mapa no modo dusk, clique em Edit > Lights > View.



Notas



  • Não use apenas luz branca. Luzes na cor do tile no qual ela vai ser colocada geralmente cria um efeito legal.

  • Tente usar cores diferentes. Cores brilhantes sao boas p/ sinais de neon, vermelho cria uma atmosfera escura e sombria, amarelo cria uma atmosfera sóbria, etc.

  • É importante criar luzes o suficiente sobre as ruas, assim os jogadores podem ver (p/) onde eles estao dirigindo

Read more...

domingo, 8 de novembro de 2009

THREAD_TRIGGERs

Um THREAD_TRIGGER eh, como o nome indica, um comando que faz uma subroutine funcionar qdo um char (geralmente o jogador) atende um telefone ou entra num certo carro. Existem 5 THREAD_TRIGGERs diferentes:



THREAD_TRIGGER nome = THREAD_WAIT_FOR_CHAR_IN_CAR ( nome_char , nome_carro , subroutine: )
THREAD_TRIGGER nome = THREAD_WAIT_FOR_CHAR_IN_BLOCK (nome_char , X.x , Y.y , Z.z , subroutine: )

THREAD_TRIGGER nome = THREAD_WAIT_FOR_CHAR_IN_AREA (nome_char , X.x , Y.y , Z.z , taman_X , taman_Y , subroutine: )

THREAD_TRIGGER nome = THREAD_WAIT_FOR_CHAR_IN_AREA_ANY_MEANS (nome_char , X.x , Y.y , Z.z , taman_X , taman_Y , subroutine: )

THREAD_TRIGGER nome = THREAD_WAIT_FOR_ANSWER_PHONE ( nome_char , nome_telef , subroutine: )










nomeUm nome único pro TT
nome_charO nome do char
nome_carroO nome do carro que o char deve entrar
X.x , Y.y , Z.zAs coordenadas do bloco ou área q o char deve entrar
taman_X , taman_YA largura (eixo X) e o comprimento (eixo Y) da área em blocos (coloque 1.0 e 1.0 pra apenas um bloco)
nome_telefO nome de um telefone.
subroutine:O nome da subroutine que deve começar a funcionar qdo as condiçoes estiverem corretas (nao se esqueça do ":" no fim do nome dela!)


O THREAD_WAIT_FOR_CHAR_IN_AREA_ANY_MEANS eh mto parecido com o THREAD_WAIT_FOR_CHAR_IN_AREA, mas ele checa pelo char entrando na area tanto por carro como de a pé, enqto que o segundo checa pelo char entrando na área apenas de a pé.

Os TTs sao sempre "setados" e criados antes do LEVELSTART ao mesmo tempo, mas eles podem ser ativados e desativados no meio do jogo:



DISABLE_THREAD_TRIGGER ( nome_do_tt )
ENABLE_THREAD_TRIGGER ( nome_do_tt )

Read more...