Guida Cominciare a scriptare

lollone12

Utente Medio
Autore del topic
14 Ottobre 2010
208
11
Miglior risposta
0
Ciao a tutti in questa vi spiegherò le basi per incominciare a scriptare.
In questa guida parleremo di:

Callbacks
Functions
Include
Condizioni
Variabili
Array
Operatori
Format

Bene incominciamo subito:

Callbacks

- I callbacks sono funzioni speciali richiamate quando succede qualcosa di importante nel server (ad esempio, OnPlayerSpawn viene richiamato quando un giocatore si spawna in game).

Functions

- Le funzioni sono delle procedure che un server eseguirà quando verranno richiamate (ad esempio, GivePlayerMoney darà ad un player una somma di soldi ).

Include

- Gli include servono a implementare altre funzioni o altri callback. Per fare ciò bisogna inserire i file.inc in pawno>include e inserire il nome del file.inc sotto,si possono inserire in due modi:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

- Il server eseguirà le vostre funzioni inserite nei callbacks quando il callback stesso verrà richiamato. Ad esempio:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

- Quando un player si connetterà, il server invierà un messaggio al player con scritto "Benvenuto." (che allegria).
Questo è uno script semplicissimo, senza condizioni nè cicli.
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Variabili

- Le variabili sono la colonna portante dello scripting. Al loro interno si può inserire un valore numerico, un valore booleano (true o false), una stringa di lettere e chi più ne ha più ne metta.
Le variabili vengono inserite in alto della gm con a sinistra un new.
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

- Questa è una variabile globale, vale per tutti i players.
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

- Questa invece può essere usata per ogni singolo player. Ecco un esempio:
in alto
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

- in OnPlayerConnect
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

- in OnPlayerRequestClass
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

- in OnPlayerDisconnect
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

- Questo script "punisce" chi usa l'f4 per cambiare skin in game. La variabile utilizzata è "variabile" e con le condizioni possiamo individuare se il player è già passato per il RequestClass.
Esistono numerosi tipi di variabili. Per vederli consiglio di girare in wiki sa mp...

Comandi da tastiera

Chi è alle prime armi solitamente prova a fare qualche comando da tastiera. Ecco come si fa:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

IMPORTANTISSIMO! Mai rimuovere il return 0; alla fine del callback, al massimo si può rimpiazzare lo "0" con un messaggio perchè indica quando il comando restituisce un valore falso (non esiste, insomma).

Array & Format

- Formattare una stringa
Operatori (+, -, /, *, ||, &&, ==, <=, >=)

Formattare una stringa

Come in tutti i linguaggi dall'uomo conosciuti, è possibile inserire in un messaggio prefissato il valore di una variabile. In pawno è possibile grazie alla funzione "format". Ecco un esempio pratico:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!


- Ok, analizziamo il codice. Tutto si svolge in OnPlayerConnect, string e name sono variabili che entrambi possono contenere 256 caratteri (sono troppi e rallentano, consiglio di tagliarli, in fatto di dimensione). La seconda la usiamo per immagazzinare il nome del giocatore (GetPlayerName) la prima la usiamo per immagazzinare la stringa definita nel format (Benvenuto sul server, [nome del player]). Infine inviamo la stringa al player con SendClientMessage. Per utilizzare correttamente un format:

format([qui la variabile a cui assegnare la stringa] , sizeof([qui la variabile a cui assegnare la stringa]), "[Qui il testo più placeholder (letteralmente segnaposto)]", [Qui la o le variabili che saranno inserite nella stringa in ordine di apparizione]);

- Poco fa ho parlato di PlaceHolders, sono delle "sigle" che faranno identificare al server come dev'essere "stampata" un parametro.

Placeholder Significato
%b Inserisce un numero binario.
%c Inserisce un singolo carattere.
%d Inserisce tutto un numero intero.
%f Inserisce una float.
%*i Inserisce un numero intero.
%*s Inserisce una stringa.
%*x Inserisce un numero esadecimale.
%% Inserisce il letterale '%'

Fresco fresco da wikisamp

Operatori

In una condizione solitamente si fa uso di questi operatori:

> : se il valore è maggiore dell'altro
< : se il valore è minore dell'altro
>= : se il valore è maggiore o uguale all'altro
<= : se il valore è minore o uguale all'altro
== : se il valore è uguale all'altro
!= : se il valore è diverso dall'altro
&& : il valore e quello dopo
|| : il valore o quello dopo

I primi quattro comparano due valori tra loro.
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

- Se una precedente variabile è uguale a 45 succede qualcosa altrimenti se è maggiore di 45 succede un'altra cosa.
Gli ultimi due mettono in relazione tra loro più condizioni
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

- La condizione risulterà vera e si avvierà SOLO se valore è maggiore di 45 E valore2 minore di 45.
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

- La condizione risulterà vera e si avvierà SOLO se valore è maggiore di 45 O se è minore di 45.
In questo caso si poteva anche usare l' operatore !=
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

- In entrambi i casi valore sarà diverso da 45.

Per modificare il valore numerico di una variabile si usano questi altri operatori:
+ : somma il valore ad un altro
- : sottrae
* : moltiplica
/ : divide
(ce ne sono altri)
Esempio:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

- Il valore di valore (gioco di parole) sarà aumentato di 6.

Fonte: Pawnoscripter,Autore Hank.J.Wimbleton & Me (lollone12)
 
Riferimento: Cominciare a scriptare

A parer mio, questa guida oltre ad essere nella sezione sbagliata, non spiega molto, dato che quella variabile che tu dici che è per ogni singolo player è un'array, inoltre la fine è totalmente errata dato che si usa += -= *= /= ( Degli ultimi due non ne sono molto sicuro ). Inoltre non spiega molto su cos'è il pawn, su cosa si basa.