sábado, 24 de outubro de 2009

COUNTERs

Os COUNTERs são vitais p/ scripts complexos, mas eles sao muito faceis pra se trabalhar. Como o nome sugere, o COUNTER simplesmente "conta": ele mantem o controle de valores. Vc pode usá-los como o contador de alguma coisa aparecendo na tela ou como um simples "liga/desliga" de um IF ou WHILE.

COUNTER


Pra usar um COUNTER vc primeiro precisa declará-lo antes do LEVELSTART. Isso eh feito com o comando:



COUNTER nome


Isso cria um COUNTER com o valor 0. Vc pode aumentar esse valor extendendo o comando:



COUNTER nome = valor


Note q os COUNTERs nao podem ter um valor menor que -32768 nem maior que 32767 e esses valores devem ser inteiros.

SAVED_COUNTERs


Os SAVED_COUNTERs funcionam do mesmo jeito que os COUNTERs, com a diferença de q os SAVED_COUNTERs tem seu valor salvo quando o jogo eh salvo. Os COUNTERs normais terão seu valor voltados ao normal quando o jogo eh salvo e recarregado

SET


Pra mudar um counter no meio do jogo, vc tem q usar o seguinte comando dps do LEVELSTART:



SET nome = novo_valor


O novo valor pode ser um número normal ou uma das seguintes expressoes:



SET nome = counter2
SET nome = ( counter2 + counter3 )
SET nome = ( counter2 - counter3 )
SET nome = ( counter2 * counter3 )
SET nome = ( counter2 / counter3 )
SET nome = ( counter2 + valor )
SET nome = ( counter2 - valor )
SET nome = ( counter2 * valor )
SET nome = ( counter2 / valor )


Usando um COUNTER dentro de um IF


Normalmente os COUNTERs sao usados como a expressao p/ um IF. Usando um IF, vc pode ativar certo comando qdo o COUNTER atinge certo valor. Geralmente esse valor eh 1, o que significa q o COUNTER atua como um simples "liga/desliga" (no qual 1 eh "ligado/verdadeiro" e 0 eh "desligado/falso")



COUNTER counter1
COUNTER counter2 = 3

LEVELSTART

IF ( counter1 = 1 ) //Se o counter1 esta com o valor 1...
SET counter2 = 5 //Dê ao counter2 o valor 5
ENDIF

LEVELEND


Vc tbm pode usar varias comparaçoes entre outros COUNTERs pra usar como expressao:



IF ( counter1 < valor ) //Se o counter1 eh menor q tal valor...
IF ( counter1 < counter2 ) //Se o counter1 eh menor q counter2...
IF ( counter1 > valor ) //Se o counter1 eh maior q tal valor...
IF ( counter1 > counter2 ) //Se o counter1 eh maior q counter2...
IF ( counter1 = valor ) //Se o counter1 eh igual a tal valor...
IF ( counter1 = counter2 ) //Se o counter1 eh igual ao counter2...

Read more...

sexta-feira, 23 de outubro de 2009

10º Aniversário do GTA2

Hj (23/10/09) faltam 4 dias (27/10/09) para o 10º aniversário do GTa2 (e para o meu tbm :P) :). Nesse dia o jogador e modder [DAFE], Ontario, Canadá lançará a mais nova versão do seu mapa, DAFE's Death Valley (a mais da hora ate agora :P, atualmente em fase de testes com certos jogadores) e, provavelmente, o programador e modder Sektor lançará a mais nova versão do GTA2 Game Hunter (GH), a 1.5. Junto com o GH 1.5 será lançada a versão do Vike (jogador e modder tbm) do GTA2.exe, a 11.0, a qual o GH vai, tecnicamente, obrigar os jogadores a usar. Eu tbm lançarei a mais nova versao de um dos meus mapas: Gustavob's RC Race, com o conserto de vários bugs

Read more...

WHILE

Os WHILE são quase identicos aos IFs, mas os comandos num WHILE vão se repetir enquanto a expressao for verdade, enquanto q os IFs serão executados apenas uma vez.



WHILE ( expressão )
//comandos
ENDWHILE






expressaoA situaçao que faz os comandos entre WHILE e ENDWHILE acontecerem
//comandosOs comandos que terão que acontecer repetidamente quando "expressao" é verdade
ENDWHILETodo WHILE deve terminar com um ENDWHILE


WHILE_EXEC


Para ativar todos os comandos de WHILE necessários duma vez, ao invés de um por um, existe o comando WHILE_EXEC. Tenha cuidado quando usando eles, pois muitos WHILE_EXEC deixarão o jogo mais lento. Normalmente o tempo que os comandos no WHILE normal é bem notável



WHILE_EXEC ( expressão )
//comandos
ENDWHILE


WHILEs e WHILE_EXECs podem ser extendidos com AND, OR e NOT do mesmo jeito que o IF.

Read more...

quarta-feira, 14 de outubro de 2009

IF

Primeiro post da parte de Programaçao na área Script(ing)

IF


O IF eh usado pra ativar certos comandos quando tal situaçao ocorre. Tecnicamente: "SE(IF) X é verdade, entao faça Y acontecer". Vc pode fazer o jogador ganhar uma arma qdo chega num carro ou bloco, por exemplo.

O IF eh usado desse jeito:




IF ( expressao )
//comando
ENDIF







expressaoA situaçao q faz o comando entre IF e ENDIF acontecer. Pode ser um COUNTER (explicado mais tarde) ou um check como HAS_CHARACTER_DIED (TAL_CHAR_MORREU, uma lista desses checks pode ser encontrada no GTA2 Scripting.doc)
comandoO comando que acontece quando o q ta dentro do IF ( ) eh verdade
ENDIFO final do IF. Todo IF deve terminar com um ENDIF


Variáveis


Os IFs podem ser usados de tudquantéjeito. Por exemplo, vc pode criar um IF dentro de um IF:


IF ( X )
//Esses comandos acontecem qdo X é verdade
 IF ( Y )
//Esses comandos acontecem qdo X e Y acontecem no jogo
ENDIF
ENDIF



Note que o segundo IF esta identado. Isso nao eh necessário, mas deixa o Script mais facil de se ler.

Vc tbm pode adicionar mais checks:



IF ( NOT ( X ) )
//Esses comandos acontecem qdo X não eh verdade
ENDIF



IF ( X )
//Esses comandos acontecem qdo X eh verdade
ELSE
//Esses comandos acontecem qdo X não eh verdade
ENDIF



IF ( ( X ) AND ( Y ) )
//Esses comandos acontecem qdo X e Y acontecem
ENDIF



ENDIF
IF ( ( ( X ) AND ( Y ) AND ( Z ) )
//Esses comandos acontecem qdo X, Y e Z sao verdade



IF ( ( X ) AND ( Y ) ) OR ( Z ) )
//Esses comandos acontecem qdo X e Y, ou apenas Z sao verdade
ENDIF



IF ( ( X ) OR ( Y ) )
//Esses comandos acontecem qdo X ou Y sao verdade
ENDIF



IF ( ( ( X ) AND ( Y ) ) AND ( Z ) )
//Esses comandos acontecem qdo X, Y e Z sao verdade
ENDIF


Há varias outras combinaçoes possiveis. Preste atençao ao colocamento dos parenteses: deve haver um fecha parenteses pra cada abre parenteses e só é possivel combinar duas situaçoes por vez.
Portanto isto está errado:



IF ( ( X ) AND ( Y ) AND ( Z ) )

Mas isto está correto:


IF ( ( ( X ) AND ( Y ) ) AND ( Z ) )

Read more...

sexta-feira, 9 de outubro de 2009

“carinhas”/characters

Os “carinhas”/characters (tbm chamados de chars, bots, pedestres ou peds, dos quais os dois ultimos representam os pedestres normais do jogo) especiais (pedestres sao criados automaticamente nas areas de pavement do map editor) sao mto importantes qdo vc esta criando missoes ou estruturas de codigo similares. Vc pode dar varios objetivos a eles

criando os chars

Os chars sao criados no script com o seguinte comando:
CHAR_DATA nome ( X.x , Y.y , Z.z ) //Comando Declare
nome = CREATE_CHAR ( X.x , Y.y , Z.z ) remap rotação ocupaçao END
//Comando Set
CREATE_CHAR nome ( X.x , Y.y , Z.z ) remap rotação ocupaçao //Comando Declare & Set

 

nome O nome único do char
( X.x , Y.y , Z.z ) As coordenadas onde ele deve ser criado
remap A cor da roupa dele. Cada remap tem um numero q esta listado no link q sera mostrado no fim do post
rotação A rotaçao do char (0 é sul)
ocupaçao A ocupaçao do char (veja link no fim do post)

Dando objetivos ao char

So criar um char nao tem mta graça; na maioria das vezes vc vai ter so um char parado sem fazer nada. Por isso vc tem q dar objetivo(s) ao(s) char(s) pra deixar ele mais interessante.

SET_CHAR_OBJECTIVE ( nome , objetivo )
SET_CHAR_OBJECTIVE ( nome , objetivo , segundo_item )
SET_CHAR_OBJECTIVE ( nome , objetivo , X.x , Y.y , Z.z )
SET_CHAR_OBJECTIVE ( nome , objetivo , X.x , Y.y , Z.z , rotaçao , distancia )

 

nome o nome do char pra dar objetivo
objetivo o objetivo do char
segundo_item Usado dependendo do obj do char
X.x , Y.y , Z.z "         "                 "     "   "
rotaçao "         "                 "     "   "
distancia "         "                 "     "   "

Exemplo

Vamos criar um policial q qr matar o player a qualquer custo

CHAR_DATA policia ( 126.5 , 112.5 , 2.0 ) 0 0 POLICE
SET_CHAR_OBJECTIVE ( policia , KILL_CHAR_ANY_MEANS , player1 )

Se vc fizer isso, ele vai te atacar socando vc, o q nao combina mto com um policial. Portanto vamos dar a ele uma arma. E tbm, ele vai te perseguir com um Benson marrom, o q tbm nao combina mto com ele. Vamos dá-lo um Cop Car.

GIVE_WEAPON ( policia , PISTOL )
SET_FAVOURITE_MODEL ( policia , COPCAR )

 

Remaps & Ocupaçoes

Aqui vc pode achar uma lista completa de remaps e ocupaçoes de chars.

Read more...

sábado, 3 de outubro de 2009

Sons

Os sons no GTA2 são feitos quase do mesmo jeito que objetos, mas com um comando diferente:

SOUND nome = ( X.x , Y.y , Z.z ) som
PLAY_INSTANT/PLAY_FOREVER



























nome O nome unico do som
( X.x , Y.y , Z.z ) As coordenadas do som
som O tipo de som (ver tabela no fim do post)
PLAY_INSTANT/PLAY_FOREVER Escolher entre tocar uma vez so ou pra sempre, respectivamente




Exemplo


Se vc quiser criar o barulho do órgão da igreja de salvar o jogo nas coords 121.5 , 56.5 , 2.0, tocando pra sempre, o comando vai se parecer com isso:

SOUND orgao ( 121.5 , 56.5 , 2.0 ) CHURCH_SINGING
PLAY_FOREVER


Lista de sons



























































































































































































































































































































Som
Código
Nada WIND
Música com batida forte NIGHT_CLUB
Música com batida forte BAR
Zumbido industrial GENERATOR_RUMBLE
Work shop WORKSHOP
Órgão da igreja CHURCH_SINGING
Mantra Krishna TEMPLE_CHANT
Zumbido industrial INDUSTRIAL_HIGH
Vários gritos de pedestres HUMAN_ABATTOIR
Várias risadas loucas FUNNY_FARM
Alarme de banco BANK_ALARM
Zumbido industrial INDUSTRAL_LOW
Água borbulhando e suspiro PORTA_LOO
Água caindo WATERFALL
Trinado de grilo CRICKETS
Nada PRISON
Alarme de prisão PRISON_ALARM
Gangue gritando “Let us out!” GANG_DUMPED
Várias risadas SMUG_LAUGH
Nada PRISON_YARD
Distúrbio PRISON_RIOT
Gangue gritando “Let us out!” GANG_LOCKED_IN_BUS
Barulho de shopping SHOPPING_MALL
Barulho de relogio CLOCK_TOWER
WHOO! YEEHEEE! (INSTANT apenas) YEEHA_BOMB
Jogo de boliche BOWLING_ALLAY
Nada CROWD_NOISE
Ventilador industrial FAN_NOISE
Nada GENERATOR_LOSE_POWER
Grito (apenas INSTANT) SCREAM
Tic tac” de bomba BOMB_TICK
Merda!/Shit!” BOMB_TICK_SHIT!
Nada DETECTED_MUMBLE
Canto Krishna (do GTA1) KRISHNA_CHANT
Choro (apenas INSTANT) CRYING
Gatilho preso (INSTANT) ROCKET_LAUNCH_FAIL_CLICK
Risada (INSTANT) ROCKET_FAIL_LAUGH
Pedestre envenenado (INSTANT) POISONED
Zumbido industrial POWER_PLANT
Murmuro MUMBLE
Música c/ saxofone JAZZ_CLUB
Música c/ violão COUNTRY_CLUB
Barulho com som de “tic tac” BAR_2
Música com piano profundo STRIP_CLUB
Canto Krishna TEMPLE_2
Garagem abrindo GARAGE_OPEN
Garagem fechando GARAGE_CLOSE
Pessoas gritando “Let us out!” LET_ME_OUT
Água borbulhando VAT
Zumbido industrial PYLON
Nada SKID

Read more...