Release Le Basi da principianti per incominciare uno script

Nitroyx

Utente Attivo
Autore del topic
29 Marzo 2008
471
22
Miglior risposta
0
In questa guida cercheremo di spiegare al meglio le basi dello scripting, ossia i primi passi da compiere per chi è alle prime armi o per chi non sa da dove iniziare.
Innanzitutto scaricate il pacchetto server, secondo il vostro Sistema Operativo (se avete Windows XP scaricate il primo per esempio):

Perfavore, Entra oppure Registrati per vedere i Link!

Perfavore, Entra oppure Registrati per vedere i Link!

Dunque estraetelo in una cartella (ad esempio "SAMP Server") dove avremo i seguenti files:

27wzj2b.png

Per quanto riguarda lo scripting, ci interessereanno solamente le due cartelle Gamemodes e Pawno: gli altri files serviranno difatti per aprire un nostro proprio server ed eventualmente testare le nostre creazioni (per testarle al meglio sarà necessario ospitare anche altri giocatori).

Gamemodes

All'interno della cartella Gamemodes troveremo le vere e proprie "Modalità" con cui si potrà giocare nel server: dunque modalità di freeroaming ("cazzeggio"), gare, deathmatch (tutti contro tutti), o una sorta di "missioni" singole o a squadre, a obbiettivo e chi più ne ha più ne metta. Vi sono diversi files "preimpostati", ossia le gamemodes di "base" che il team di SA-MP ci ha fornito, e che i principianti dello scripting possono utilizzare per prendere spunto o operare su di esse, per capire meglio le funzioni principali e prendere confidenza con esse.
scripting2.png

Troveremo dunque dei file con estensione ".amx", ossia i veri e propri file che verranno caricati nel server.
Nella cartella "src" troveremo invece i files di estensione ".PWN", ossia quelli che potremo modificare a nostro piacimento: una volta finito il nostro lavoro su un file PWN, potremo, come si dice nel gergo dello scripting, "compilarlo", ossia verificare che non ci siano errori e creare automaticamente un file di estensione .amx (con lo stesso nome che abbiamo dato al file PWN) nella cartella "Gamemodes" (quella di cui ho parlato precedentemente), e che poi potremo "caricare" nel server.

Dunque, un file .amx sarà il nostro "lavoro finale", il quale poi dovrà essere caricato nel server, mentre il corrispondente file PWN sarà il nostro "lavoro di impasto e di modifica", il quale una volta compiuto, darà "vita" al file AMX corrispondente.

Nel caso in cui abbiate le idee confuse, passiamo ad un esempio pratico, che sicuramente ve le chiarirà.

Iniziare a scriptare​

Per iniziare a scriptare è necessario usare un programma di scripting, ma niente paura, il team di SA-MP ce lo ha fornito: tornando alla cartella principale del server, potremo trovare dentro alla cartella "Pawno" il programma più usato per creare gamemodes, ossia il Pawno, appunto.
v6lpw1.png


Il file NEW, di estensione .PWN, è un file di "esempio", una sorta di "preparazione" alla gamemode e sarà quello da cui potremo capire per iniziare a capirci qualcosa.
Come altri file .PWN, sarà quello che ci permetterà di creare la gamemode (ossia la modalità), per poi "compilarlo" in un file .amx e poterlo inserire nel server.

Per comodità possiamo conservare tutti i files PWN nella cartella SRC (all'interno della cartella Gamemodes), ma potremo tenerli dove vorremo: difatti solo i file in .amx devono essere conservati nella cartella Gamemodes, per poter essere caricati.
Ma arriviamo al succo del discorso, aprendo il programma Pawno (cliccate sull'immagine per ingrandirla).
24on8kh.png


Per poter caricare un file .PWN, cliccate in alto a sinsitra su file, quindi open e aprite uno dei file con estensione .PWN. Potremmo partire da quello di base, il NEW citato prima, ma possiamo cominciare con una gamemode già pronta, per poter capire a cosa corrispondano certe funzioni e certi comandi.

Vi consiglio di iniziare con la Gamemode "Monster", un freeroam, ossia una gamemodes senza particolari obbiettivi ma che consiste nel divertirsi "cazzeggiando".

Per il momento ignoriamo la colonna di destra, nella quale vi sono elencate tutte le funzioni possibili che potremo inserire nel nostro file, ma concentriamoci sulla gamemode già costruita.
scripting5.png

Analisi del codice e di alcune funzioni

Noteremo una sorta di intestazione preceduta da alcune barre come queste /////: esse sono di fondamentale importanza, in quanto il testo preceduto da due slash // non assume significato nello script, ossia non viene considerato, come se fosse una sorta di commento esterno.
Saranno dunque utili per annotare certe coordinate, oppure inserire dei commenti o ordinare script di lunghezza notevole. Non spaventati se alcune righe o frammenti di esse sono scritte con colori diversi: è semplicemente un modo per creare ordine e non "perdersi" tra le righe (il colore blu ad esempio, segnala l'inizio di una funzione, della "definizione" di un qualcosa, o altra variabili usate in programmazione).

La riga #include <a_samp> è presente in tutti gli script, dunque per il momento non ci interessa il suo significato.

La riga #define COLOR_RED 0xAA3333AA è un tipico esempio di "definizione" di un colore, con la quale possiamo "definire" (ossia far capire allo script) un colore, in questo caso il rosso. Dunque d'ora in avanti potremo scrivere semplicemente COLOR_RED per far capire allo script che un determinato testo, che potrà apparire durante lo svolgimento della gamemodes, debba avere il colore rosso.

Altri colori che potrete definire sono ad esempio questi:

#define COLOR_GREY 0xAFAFAFAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_BLUE 0x1111AAFF
#define COLOR_PINK 0xFF66FFAA
#define COLOR_LIGHTBLUE 0x33CCFFAA
#define COLOR_DARKRED 0x660000AA
#define COLOR_ORANGE 0xFF9900AA

Passiamo alla riga:

//new gRoundTime = 1200000;
new gRoundTime = 0;


La prima, come detto in precedenza, non assume significato per lo script, ma è una sorta di funzione aggiuntiva non presa in considerazione.
La funzione "new gRoundTime =" avvia una sorta di timer, al termine del quale la gamemode finirà.
Dunque ci indica quanto durerà la gamemode, nell'unità di misura dei millisecondi, ossia la millesima parte del secondo: un secondo sarà pari a 1.000 millisecondi, un minuto a 60.000 millisecondi e cosi via. In questo caso, nella prima riga (non presa in considerazione dallo script) il tempo di durata è venti minuti, mentre nella riga che lo script terrà in considerazione, la gamemode non avrà mai fine (lo zero corrisponde all'infiniro).
Cambiando queste due righe invertendo i "ruoli", (oppure cancellando la riga che non ci interessa), potremo far durare la gamemode 1.200.000 di millisecondi, pari a venti minuti:

new gRoundTime = 1200000;

Arriviamo dunque al vero e proprio "corpo" della gamemode, ossia i principali eventi e funzioni. Non ci soffermeremo sulle parti più complesse per uno scripter alle prime armi, ma sulle funzioni principali.

public OnGameModeInit()
{

//...altri eventi...//

return 1 ;
}

Questo evento segnala l'inizio della gamemode, dopo il quale potremo aggiungere altri eventi come:

SetGameModeText("Monster freeroam");

il quale indicherà il nome della gamemode che apparirà quando essa sarà in corso nel server (ad un giocatore che aggiunge quel determinato server nei preferiti di SA-MP), come questo per intenderci (cliccate per ingrandire l'immagine):
scripting6.png


Aggiungere personaggi e veicoli​

Due funzioni importanti sono quelle che ci permettono di aggiungere i personaggi da selezionare o i veicoli che potremo trovare nella gamemode: La prima è la "AddPlayerClass", nella seguente forma:

AddPlayerClass (id della skin, coordinata di spawn X, coordinata di spawn Y, coordinata di spawn Z, angolo di rotazione dello spawn Z, arma #1, numero munizioni arma #1, arma #2, numero munizioni arma #2, arma #3, numero munizioni arma #3 )


Lo spawn sarà il punto in cui il giocatore verrà "generato" una volta selezionato un determinato personaggio (o skin). Quindi avremo ad esempio:

AddPlayerClass (23,389.8672,2543.0046,16.5391,173.7645,0,0,0,0,0,0);

in cui 23 sarà l'ID della skin, 389.8672 sarà la coordinata X, 2543.0046 sarà la coordinata Y, e così via.


Per quanto riguarda i veicoli, avremo la funzione "AddStaticVehicle", nella seguente forma:

AddStaticVehicle (ID del modello, coordinata di spawn X, coordinata di spawn Y, coordinata di spawn Z, angolo di rotazione dello spawn Z, ID del colore #1, ID del colore #2);

Quindi avremo ad esempio:

AddStaticVehicle(513,324.7664,2546.0984,16.4876,178.8663,-1,-1)

in cui 513 sarà l'ID del veicolo. 324.7664 la coordinata di spawn X, e così via.

Ogni personaggio, ogni arma e ogni veicolo avranno un proprio ID, potete consultarli in queste pagine:

Perfavore, Entra oppure Registrati per vedere i Link!

Perfavore, Entra oppure Registrati per vedere i Link!

Perfavore, Entra oppure Registrati per vedere i Link!

Perfavore, Entra oppure Registrati per vedere i Link!

Altre funzioni​

Vi sono poi altri eventi come:

public OnPlayerConnect(playerid)
{
[...]
return 1 ;
}

che eseguiranno una certa funzione al momento della connessione del player (come ad esempio un messaggio a centro schermo).
Oppure:

public OnPlayerDeath(playerid, killerid, reason)
{
[...]
return 1 ;
}

che eseguiranno una certa funzione al momento della morte del player.

Conclusione

Queste sono solamente le "basi" dello scripting, ovviamente vi sono innumerevoli eventi e funzioni, alcuni dei quali potrete consultare nella guida (ancora incompleta)sul nostro forum, completamente in italiano, oppure consultando
Perfavore, Entra oppure Registrati per vedere i Link!
, in inglese, molto ben strutturate.
Come tutte le cose difficili, anche lo scripting richiede molta pratica e conoscenza, e soprattutto pazienza e tempo, dunque non ponetevi obbiettivi troppo alti.

Una volta terminate tutte le modifiche al file, basterà "compilarlo", premendo il tasto a forma di freccia blu nel pannello in alto, verificando se vi sono degli errori. Se non ve ne sono, dovreste trovarvi in questa situazione:

Durata Lavoro quasi 2 ore
 
Ultima modifica da un moderatore:
Ok prima lo avevo messo in sa-mp 2.1 e mi sono accorto che é uscito il nuovo server sa-mp 2.2 quindi come vedete o modificato il download mettendo il server nuovo e in piu o modificato le immagini perché nel server 2.2 ci sono piu cose... ^^
 
  • Like
Reactions: 1 person
Complicata io piu di spiegarla in questo mode cosi semplice non posso fare allora se vedi l'altra con spiegazioni un po complicate per voi che fate :emoji_relieved:
 
L'unica cosa che non puo andare sono i link di inizio dei server dato che vanno sempre aggiornati comuque bastava andare solo nel sito originale ma vi scanso questa fatica ve li posto io i nuovi link da scaricare per i server ^^

Per Windows^^
Perfavore, Entra oppure Registrati per vedere i Link!



Per Linux^^
Perfavore, Entra oppure Registrati per vedere i Link!
 
Riferimento: Le Basi da principianti per incominciare uno script

a me non funziona ce qualche altro modo e poi un altra cosa le mod da mettere in gioco ad esempio il cambio di pg in vegeta un pg di dragonball dove le posso trovare?
 
Riferimento: Le Basi da principianti per incominciare uno script

Fantastica guida! Grazie!
 
Riferimento: Le Basi da principianti per incominciare uno script

Ciao ragazzi, ho aggiornato i link dei download SA:MP Server Windows/Linux.
Anche se ormai con l'uscita di GTA V, San Andreas non sarà più... molto popolato.
 
Ottima guida, gran parte delle cose le sapevo ma @IProxy ti potrebbe tornare utile.

Inviato dal mio GT-I8190 utilizzando Tapatalk
 
Secondo me, onestamente, è un po' inutile come guida visto che Le basi dovrebbero iniziare dai Callbacks, credo che tutti iniziano dai Callbacks, come si può iniziare dalle funzioni se uno le funzioni non sa dove metterle? ;)