• Benvenuto in Making Videogames!
  • Dai sfogo alla tua fantasia!
  • Crea il tuo Videogioco!
Benvenuto ospite! Login Registrati




Valutazione discussione:
  • 2 voto(i) - 5 media
  • 1
  • 2
  • 3
  • 4
  • 5
Documentazione Uscript ITA
#1
Ecco qui la documentazione dell'Uscript in italiano,io l'ho tradotta con google traduttore,ma ha fatto una traduzione abbastanza buona:




UnrealScript Sintassi

da: Robert J. Martin

http://www.ohnishi.nuie.nagoya-u.ac.jp/~...tax.htm#B4



Questo è inteso come un riferimento rapido per qualcuno che conosce molto bene Java / C + + in stile OO ed è almeno somewat familiarità con UnrealScript in generale. In particolare, si rivolge a coloro che utilizzano UScript per scopi accademici. Io non vado a una grande quantità di dettagli per molte cose, soprattutto per le cose che si trovano in riferimento UScript. Vi prego di contattarmi se vedete qualche errore, necessità di chiarimento in più su qualsiasi cosa, o in caso di contributi da fare.

Lingua Panoramica
Sintassi di base
Convenzioni (utilizzati in questo documento)
Generale
Classe di Dichiarazione
Variabili
var
locale
Tipi di dati
int
float
bool
byte
enum
stringa
nome
struct
schiera
Oggetto
classe
Specificatori variabile
Flow Control
if
switch
Loops
for
while
fino al do-
foreach
Funzioni
Stati
DefaultProperties
Debug
Sintassi avanzata
Dinamicità
Operatore di creazione
Lingua Panoramica

Per la maggior parte, UnrealScript è molto vicino a Java nella sintassi e nel comportamento. Oggetti e ereditarietà sono trattati in modo molto simile, e il codice sorgente viene compilato in bytecode qualcosa di simile. C'è un ambiente analgous al JRE, in cui vengono istanziati oggetti e di dati viene associata in modo dinamico e le chiamate alle funzioni operano facendo riferimento al codice nativo sottostante, se del caso. Il parser utilizza una strategia a due passaggi.

Come Java, non sarà necessario utilizzare puntatori direttamente o distruggere gli oggetti. C'è un servizio paragonabile a garbage collection che lo farà per voi.
Non ci sono separati sorgente / header file. Le dichiarazioni e le definizioni sono fatte in file sorgente xxx.uc.
I file di origine vengono compilate in un byte-code file oggetto, xxx.u.
Si può solo fare riferimento alle classi definite nel pacchetto stesso o in quello che è stato compilato prima della classe che sta riferimento. Per la compilazione del pacchetto è determinato dal suo ordine nella sezione EditPackages del file xxx.ini UCC.exe che utilizza (UnrealTournament.ini per impostazione predefinita).
Convenzioni (questo documento) -


corsivo - utilizzati per rappresentare le parole chiave in UnrealScript
codice - utilizzato quando do esempi in compilabile, UScript





Sintassi di base



Generale -


C / C + + style comments -
ad esempio - / / questo non sarà compilato ... / * Non sarà questo * /
il codice non è case sensitive


Classe Dichiarazione -


si estende e si espande può essere utilizzato interchangably per l'ereditarietà.
classe MyGame espande TournamentGameInfo;
o ...
class MyGame estende TournamentGameInfo;
Si ... sia il lavoro

La dichiarazione di classe deve essere la prima linea (tranne per i commenti).
I comandi # exec, se presente, deve seguire immediatamente dopo la dichiarazione di classe


Variabili -


var -
E 'la prima parola nella variabile dichiarazione di classe o lo stato
Non è possibile inizializzare le variabili al momento della creazione.
A destra: var int myInt;

Sbagliato: var int myInt = 100;
Var sono modificabili da buito quando si usano le parentesi.


locale -
Utilizzare locali per dichiarare variabili all'interno di una funzione. Sarà riciclato dal Garbage Collector quando una funzione esce dall'ambito
esempio
funzione myFunction () {
locale int myInt;
}


Tipi di dati -


int -
size: 32-bit
range: -2147483648 a 2147483647
letterale = nnn


galleggiante -
size: 32-bit
range: -8388608 a 8388608 (credo)
letterale = nnn.nnn
letterali galleggianti da -1 a 1 esclusivi devono iniziare con uno 0
A destra: x = 0,314;
Sbagliato x = 0,314;


bool -
letterale = true o false
non supporta la risoluzione automatica stringa
La convenzione è quello di iniziare le variabili bool con "b". Si vedrà il codice ATTRAVERSO UScript. Provare ad attaccare con questo per mantenere la coerenza.


byte -
size: 8-bit (1 byte)
range: 0-255
letterale = 0xNNN


enum -
size: 8-bit
esempio:


enum {eColor
CO_Red,
CO_Green,
CO_Blue
};
var eColor ShirtColor, HatColor;

o ...

enum {var eColor
CO_Red,
CO_Green,
CO_Blue,
} ShirtColor, HatColor;


enumerazioni vengono memorizzati internamente come un byte. Non utilizzare le enumerazioni come parametri delle funzioni. Se una classe al di fuori tenta di chiamare tale funzione, si otterrà un errore di compilazione, anche se entrambe le classi hanno la stessa definizione. Utilizzare un byte invece:
A destra: KeyEvent funzione (tasto Byte);
Sbagliato: la funzione KeyEvent (EInputKey chiave);
funzioni utili
int enumCount (Enum) - restituisce il numero di elementi per questa enumerazione


string -
letterale = virgolette doppie.
stringa s;
s = "ciao";

Si tratta di un tipo di dati primitivo, NON un oggetto
molti oggetti, int, float, oggetto, ecc .. supporta la risoluzione automatica stringa. bool non lo fa.
concatenazione -
$ - Usato per le variabili di concatenazione di stringhe e / o letterali insieme
stringa s, t;
s = "Rocks";
t = "UT" $ s $ "MyWorld"; / / t = "UTRocksMyWorld"

funzioni competenti -
int Len (string) - restituisce la lunghezza della stringa
int InStr (stringa s, string t) - restituisce l'offset della prima apparizione della t in s, oppure -1 se non si trova
stringa Mid (string s, int i, int j optional) - restituisce i primi j caratteri della stringa a partire da compensare i
stringa Left (string, int i) - restituisce i i caratteri più a sinistra della stringa
Diritto stringa (string, int i) - restituisce i i caratteri più a destra della stringa
Caps stringa (string) - restituisce la stringa convertita in caratteri maiuscoli


Nome -
Il tipo di nome è diverso dal tipo di dati stringa, ma può essere lanciato come una stringa in modo implicito.
Si è costante, ma non può essere modificato dopo che un oggetto è stato creato. È possibile cambiare in fase di uova, o all'interno non distribuiti.
Nome di un oggetto è garantito per essere univoco all'interno di un livello. Il valore predefinito è di classe dell'oggetto concatenato con un enumeratore
ad esempio - SniperRifle12, TMale2, ecc ..

letterali = apici singoli
if (altri == 'Commander13') {... }
Il tipo di nome può essere utilizzato per rappresentare i nomi delle classi e in determinati contesti. (Vedere Classe)


struct -
UScript strutture sono simili a strutture in stile C. Essi sono utilizzati per le variabili, ma non le funzioni.
utilizzare -


struct {Vector
var float X;
var galleggiante Y;
var float Z
};

destinazione Vector var;


strutture predefinite -
Vettore: Un unico punto 3D o vettore nello spazio, con un componente X, Y, e Z.
Aereo: Definisce un unico piano nello spazio 3D. Un piano è definito dai suoi X, Y e Z (che si suppone essere normalizzato), e il suo componente W, che rappresenta la distanza del piano dall'origine, lungo normale del piano (che è la linea più breve dal piano all'origine).
Rotatore: Una rotazione definire un unico sistema di coordinate ortogonali. Una rotazione contiene Pitch, Yaw, e componenti rullo.
Colore: Un valore di colore RGB.
Regione: Definisce una regione unica convessa all'interno di un livello.


array -
Solo le matrici unidimensionali sono validi
solo gli array statici sono validi, non è possibile definire dimensione della matrice con una variabile, ma solo un valore letterale.
A destra: var int myArray [10];
Sbagliato: var int myArray [x];
funzioni competenti
int arrayCount (array) - restituisce il numero di elementi dell'array


Object -
costruttori -
NON ci sono costruttori. È possibile utilizzare la sezione DefaultProperties per l'inizializzazione di default, ma non ci sono le funzioni di costruzione per la creazione di oggetti.

istanza (per i non-attore oggetti) -
Console C;
C = 'myNewConsole' nuova (none) classe; / * un'istanza di una nuova console di myNewConsole tipo * /

Nessuno - equivalente di NULL in Java
Usa "." separazione per oggetto la risoluzione
myActor.MoveTo (myAmmo.location);
typecasting - è possibile utilizzare typcasting come in Java, ma sembra una chiamata di funzione
Attore locale A;
A = nemico, / / ​​come ottenere questa corrente pedone nemico classi
A PlayerPawn = (A); / / A lanciare come playerPawn.

restituirà None se non è possibile convertire
super () -
usato per usare in modo esplicito dati padre o comportamenti
si può andare più livelli nella gerarchia
. super (ancestorClass) ancestorVersion (); / / chiama la funzione di antenato di questa classe di tipo "ancestorClass"
notare che non ci sono le virgolette singole intorno ancestorClass in questo contesto


Oggetti v Attori
istanza (per attori)
Attore A; / / chiamata da un attore
A deporre le uova = ('boomstick' di classe, auto,, posizione, rotazione);
params
Class - descrive la classe dell'oggetto che si desidera per deporre le uova (devono essere di tipo Attore)
Attore - proprietario del nuovo attore - optional
Nome - nome del nuovo attore - optional
Vector - posizione del nuovo attore - optional
Rotator - rotazione del nuovo attore - optional

Gli attori usano auto invece di questo;
Attori ottenere il loro Tick (float) funzione chiamata dal motore, gli oggetti non hanno questa funzione.
Gli attori hanno avuto le loro funzioni Pre / PostBeginPlay () così come BeginPlay () chiamati dal motore quando il gioco si avvia. Questo è un altro buon posto per mettere l'inizializzazione e roba del genere. Non so la differenza tra queste funzioni.


classe -
Si tratta di un oggetto della classe. È di tipo nome ed è un riferimento ad un tipo particolare classe
tutti gli oggetti (e attori) hanno un campo di classe che può essere usato per ottenere la sua classe per vari usi.
funzioni competenti -
isa bool (queryClass name) - restituisce true se l'oggetto che possiede è del tipo rappresentato dal nome queryClass.
Classe limitatore -
Utilizzare il classlimiter per assicurarsi che un oggetto è di una certa classe.
Questo è come la fusione di caratteri, ma per le classi di vincolo l'albero gerarchico
esempio -


è altro tipo di attore, ma vogliamo solo che sia non-None se un pedone viene assegnato ad esso.
var <Pawn> classe C; / / codice da dentro in una classe Actor
C = other.class; / / ritorna null se non di tipo pedina.


Specificatori variabile -


privato - come Java, ma non utilizzati nella stessa misura. Questa specificazione è usata pochissimo, in pratica,
const - non può essere cambiato una volta inizializzato
transitoria - non verranno salvate su disco
config - configurabile utilizzando xxx.ini e file xxx.int.
native - la variabile verrà memorizzato utilizzando il codice nativo C + + piuttosto che codice UScript
modificabile - variabili modificabili può essere modificata all'interno non distribuiti. messo dopo la parentesi var parola per designare una variabile modificabile
var () int myInteger; / / Dichiara un intero modificabile nella categoria predefinita.
var (MyCategory) bool myBool; / / Dichiara un intero modificabile in "MyCategory".


Conversioni -
UnrealScript supporta molte conversioni automatiche, ad esempio - Rotatori ai vettori
vedi riferimento UScript


Operatori di riferimento - vedi UScript



Flow Control -


se -
più simile a Java che C / C + +.
è necessario utilizzare le dichiarazioni booleani in quasi tutti i contesti. Ci sono delle eccezioni, ma è meglio attenersi alla regola solo per essere sicuri.
Destra - if (! Attore = none) {... }
Wrong - if (Attore) {... }
Proprio come Java / C + +, non è necessario usare le parentesi graffe se il conseguente è una riga.
se (true) x = 10;
if (true) {x = 10, y = 12;}


switch - quasi esattamente come C + + / Java. Io non sono a conoscenza di eventuali differenze


Loops -


per -
proprio come se, devi avere un vero valore booleano
non è possibile dichiarare una nuova variabile nella sezione condizioni del ciclo for
Destra - int i; for (i = 0; ....)
Wrong - for (int i = 0; ....)


mentre -
proprio come se, devi avere un vero valore booleano


do-fino a quando -
proprio come se, devi avere un vero valore booleano
UScript versione di "do ... while", ma la semantica sono invertiti
i = 0;
j = 0;
fare
{
i = i + 1;
j + +;
} Finché (i == 4);
sia i e j saranno 4 quando il ciclo termina


foreach (iterator) -
questi sono cicli speciali che possono essere usati solo da dalle sottoclassi di Attore.
questo è un modo rapido per passare attraverso un elenco di tutti gli attori o attori di un certo tipo.
tipi: (preso direttamente da Riferimento UScript)


AllActors (BaseClass classe, fuori Attore attore, MatchTag nome facoltativo);
Scorre tutti gli attori del livello. Se si specifica un MatchTag optional, comprende solo gli attori che hanno una variabile "Tag" corrispondente al tag specificato.
Attore A;
AllActors foreach ('PlayerPawn' classe A) {/ / scorrere PlayerPawns
Log (A.location) / / Login loro posizione
}

ChildActors (BaseClass classe, fuori attore attore);
Scorre tutti gli attori di proprietà di questo attore.
BasedActors (BaseClass classe, fuori attore attore); throgh consente di ripetere tutti gli attori che sono in piedi su questo attore.
TouchingActors (BaseClass classe, fuori attore attore);
Scorre tutti gli attori che si toccano (compenetrati), questo attore.
TraceActors (BaseClass classe, fuori Attore attore, fuori vettore HitLoc, fuori vettore HitNorm, End vettore, Start vettore opzionale, Estensione vettore opzionale);
Scorre tutti gli attori che toccano una linea tracciata dal punto iniziale al punto finale, utilizzando una casella di estensione collisione misura. Su ogni iterazione, HitLoc è impostata sulla posizione hit, e HitNorm è impostato su un esterno che punta hit normale.
RadiusActors (BaseClass classe, fuori Attore attore, Radius float, optional vettore Loc);
Scorre tutti gli attori in un raggio specificato di posizione specificata (o se non viene specificato, la posizione di questo attore).
VisibleActors (BaseClass classe, fuori Attore attore, Radius galleggiante facoltativo, opzionale vettore Loc);
Scorre un elenco di tutti gli attori che sono visibili nella posizione specificata (o se non viene specificata una posizione, la posizione di questo attore).


Funzioni -


definizioni inizia con la funzione di parola,
returntypes - tipo di ritorno è facoltativa, nulla viene implicitamente assunto se non c'è quella specificata.
Parametri -
optional - significa che questo parametro non ha bisogno di essere presente quando viene chiamata la funzione. Per verificare se è stato specificato all'interno della funzione in questione, solo un test per verificare se la variabile è stata impostata.
funzione bNoArgs bool (int j, string s, Attore A) {
if ((j == 0) && (s == "") && (A == nessuno))
return true;
}
}


coerce - può essere usato per forzare un parametro ad essere ingaggiato come un certo tipo quando la funzione viene chiamata. Il contesto che vedo usato in questo sta costringendo i parametri per essere lanciato come stringhe.
Funzione returnString (stringa costringere i, costringere stringa c, costringere stringa a) {
restituire i $ c $ a;
}
se questa funzione viene richiamata in questo modo, con tre non "nullo" parametri:
int i;
Classe C;
Attore a;
... / / Inizializza i, a, c
Log (returnString (i, c, a));
... poi tornerà il numero intero, la classe e l'attore di riferimento come una stringa concatenata


out - utilizzato per la pass-by-riferimento.


rilevante e sovraccarico -
rilevante è possibile, infatti, estremamente necessario.
sovraccaricare le funzioni con elenchi di parametri diversi o il tipo restituito e lo stesso nome è impossibile.


Specificatori -


static -
in modo che la funzione può essere chiamata indipendentemente un'istanza. Hai ancora bisogno di un oggetto da un'istanza di chiamarlo però, credo che utilizzando l'oggetto Class potrebbe funzionare:
Class MyClass = MyObject.class;
MyClass.myStaticFunction;
... ma io non ne sono sicuro. Se qualcuno conosce meglio si prega di contattare me e io aggiornare questa sezione


singolare - un solo esempio di questa funzione può essere chiamata in una sola volta. Utile per evitare una ricorsione infinita di funzioni reciprocamente dipendenti ... vedere Riferimento UScript


native - può essere utilizzato solo all'interno di una classe che viene dichiarato nativo. Ogni funzione nativa richiederà un nativo C + + definizione.


exec - può essere usato per avere questa funzione richiamabile dalla console o utilizzando consoleCommand (string).


evento -


Funzioni native che saranno passati fino dal motore.
Un primo esempio è keyEvents e mouseEvents da un input, ecc ..


Stati -


usato per fare FSM all'interno Objects. Principalmente per scopi AI.
Rende il codice procedurale basato piuttosto che funzionalmente base. Come base, se tu fossi mai la sfortuna di usare quella cosa.
Può essere usato con non-attore oggetti. Io non so perché il riferimento UScript dice "attori". Anche se, in pratica, è quasi sempre utilizzato entro attori. L'eccezione che ho visto è in UWindow cose, che non sottoclasse di Attore.
dati e nascondigli comportamento -
ogni Stato può avere diverse versioni degli stessi dati e funzioni. Questo permette in sostanza una logica diversa per le chiamate di funzione a seconda del contesto (stato attuale). ad esempio-la maggior parte dei discendenti dei pedoni hanno diverse definizioni diverse per Bump (altro attore), in modo che l'attore possiede la funzione si comporterà in modo diverso.
auto - ha dichiarato uno stato auto sarà lo stato di default di un attore, se un altro non viene richiesto di avere effetto.
label -
Iniziare - punto di partenza di default
utilizzare sempre almeno una etichetta.
stato
goto ("label")
andrà l'etichetta all'interno dello Stato
GoToState ('NomeStato', optional 'LabelName')
va allo stato, con la possibilità di andare ad una etichetta diversa da iniziare
latenti funzioni:
funzioni latenti sono funzioni native che richiedono una certa quantità di tempo di tornare. Essi possono essere chiamati solo dal codice dello Stato. Esempi sono MoveToward (Attore), Sleep (float), e FinishAnim ().
beginState (), endState ()
ignora -
può essere utilizzato per indicare lo stato di ignorare gli eventi e la funzione chiamata dal motore. Questo per evitare un sacco di confusione che nasce dalla miscelazione eredità e gli stati. Se non volete qualche altra classe o la logica chiamando la versione globale di Bump () che potrebbe prendere dal vostro stato, basta dire il vostro stato di ignorare la funzione Bump.
Stato myState {
ignora Bump;
}
BeginState / EndState funzioni:
è possibile utilizzare questi per preparare o wrap-up le cose prima e dopo uno stato viene utilizzato, rispettivamente,
BeginState funzione () di uno stato viene chiamato prima lo stato è entrato, e EndState () è dopo lo stato è a sinistra (ma prima che un altro si entra nello stato), conoscere la materia cosa ha causato il cambiamento di stato.

globale - vedi riferimento UScript


DefaultProperties-


È possibile ordinare di pensare come questo come un costruttore predefinito. Quando un attore è stato creato, i valori possono essere inizializzati qui. Questo è anche un modo per impostare le variabili globali che si possono utilizzare per lo sviluppo. Devo un sacco di notti insonni a questa sezione.
Questo deve essere l'ultima sezione nel file di classe.
Non terminare dichiarazioni DefaultProperty con un punto e virgola (Wink e ...
Non inserire spazi tra il "=" e la variabile e il valore
A destra: thisValue = 100
Sbagliato: thisValue = 100;

elementi di un array sono dereferenziati utilizzando le parentesi quadre invece di
A destra: myArray (0) = 5
Sbagliato: myArray [0] = 5


Debug


Log (stringa) -
In questo modo scrivere la stringa con il file xxx.log è definito nel file di giochi xxx.ini.
BroadcastMessage (stringa) -
può essere chiamato solo dalle classi che ereditano da Actor. Questo scrivere un messaggio di testo al HUD in modo da poter fare la verifica runtime
ConsoleCommands -
vedi UScript di riferimento (ConsoleCommands). È possibile dichiarare una funzione per essere di tipo exec e può essere chiamato dal console se è definito in alcune classi: Console, HUD, ecc
Sintassi-Advanced



Dinamicità - Questa sezione è dedicata poco marcato a caricare e manipolare le cose in modo dinamico / by-nome, che non si può fare con la maggior parte delle lingue.


- Classi
DynamicLoadObject (className stringa, BaseClass nome). utilizzato per ottenere un oggetto di classe da una stringa.
legge effettivamente il pacchetto xxx.int file fornito per ottenere l'oggetto della classe
MyClassName String = "myPackage.myClass";
Classe myClassObject = DynamicLoadObject ('Class' myClassName, classe);
BaseClass myObject = spawn (classe <baseClass> myClassObject);
Quindi, è necessario disporre di una stringa che contiene il pacchetto e la classe, e si può instatntiate un oggetto da un nome di classe determinata dinamicamente ... pulito, eh? Se avete bisogno di ottenere il pacchetto dalla stringa, si dovrà utilizzare il ConsoleCommand per la quotazione


Dati -
Si può effettivamente impostare e ottenere le variabili con la rappresentazione di stringa del nome di una variabile.
nella dichiarazione, x = 20, la stringa è "x".
GetPropertyText String (String propertyName) - restituisce la proprietà come una stringa:
myVar int = 300;
String sValore = getPropertyText ("myVar"); / / sValore è uguale a "300"
setPropertyText (String propertyName, String propertyvalue) - imposta propertyName per propertyvalue utilizza built-in regole di conversione (String a int, String a stare a galla, ecc ..)


Funzioni -
La chiave per chiamare le funzioni con il loro nome si trova nella stringa la parola chiave Exec. Quello che devi fare è prendere tutte le funzione che si desidera chiamare una funzione exec stile:
myFunction funzione exec (costringere string s) {}
In questo codice, hai fatto 'myFunction' richiamabile dalla console, con quello che hai scritto dopo ogni spazio bianco dopo 'myFunction' la parola che viene spinto nella variabile 's'

così, dalla console digitare:
> MyFunction myArgument
... poi 's' sarà uguale a "myArgument", ed è possibile utilizzare che entro myFunction

Ora poi, c'è anche una funzione all'interno di Console classe chiamata 'ConsoleCommand bool (costringere stringa s)'. per chiamare la funzione exec'd, 'myFunction' dal codice, si digita:
bool isFunctionThere; / / opzionale
isFunctionThere = ConsoleCommand ("myArgument myFunction");


... 'IsFunctionThere' sarà vero se la funzione era lì, false altrimenti.
NOTA: questa tecnica avrà effetto solo se si mette la funzione exec stile in una classe di attivo che può utilizzare le funzioni di stile exec. Gli esempi includono Console e HUD. Solo perché le sottoclassi della classe da uno di questi non significa che la vostra funzione sarà riconosciuto. Deve essere considerato attivo dal motore (gameInfo).


Operatore Creation -


È possibile creare i propri operatori pure. Per indizi, check out Object.uc. Non è molto più complicata di così.
esempio - Ho un oggetto che ho creato sottoclasse direttamente da oggetto per l'utilizzo di XML. Diciamo che voglio ignorare l'operatore di concatenazione in modo che si farà un nuovo oggetto XML quando nel contesto di "XMLObject $ stringa". La definizione partirà qualcosa del genere
static operatore finale (40) XMLObject $ (XMLObject A, string B) {... }
Questo deve essere statico e finale. Ciò significa che non può fare alcun riferimento a variabili di istanza o non statici funzioni all'interno di quella classe. Posso però fare riferimenti a 'A' i dati dell'istanza.
La (40) è un numero di priorità per decidere ordine delle operazioni in espressioni miste.
In questo esempio XMLObject è il tipo di ritorno e $ è l'operatore.
A è il parametro outfix sinistra, B è il giusto.



Ciao!
 
Rispondi
#2
non dovevi tradurre anche le sintassi!
 
Rispondi
#3
(10-08-2012, 11:00 AM)springofdajuwn Ha scritto: non dovevi tradurre anche le sintassi!

E' stato google traduttore lol
appena ho tempo la sistemoun po' Smile


Ciao.

 
Rispondi
  


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
Question basi per gli USCRIPT abcd 7 1,805 18-03-2013, 06:06 PM
Ultimo messaggio: Skyline
  Documentazione ufficiale lcie86 3 808 23-07-2012, 09:56 AM
Ultimo messaggio: Lorenz
  documentazione Uscript UDK95 0 644 30-06-2012, 12:14 AM
Ultimo messaggio: UDK95
  canale youtube utile per l'Uscript franton 1 952 02-05-2012, 05:05 PM
Ultimo messaggio: Loryea

Vai al forum:


Browsing: 1 Ospite(i)