GTAOnline.net

IV : Multiplayer (iv:mp) => Scripting IV:MP [Squirrel center] => Retrouvez nos tutoriaux et références IV:MP - Codage Squirrel => Discussion démarrée par: Barto le 06 Mai 2010, 09:05:05

Titre: [Tuto]Votre premier script [Périmé]
Posté par: Barto le 06 Mai 2010, 09:05:05
Commencer à coder son serveur IV MP.

I. Notepad++ avec le langage Squirrel.

Comment l'installer ?

- Tout d'abord télécharger Notepad++ (http://sourceforge.net/projects/notepad-plus/files/).

- Ensuite installer.

- Télécharger maintenant Squirrel For Notepad++ (http://files.iv-multiplayer.co.uk/scripts/boylett/Squirrel%20for%20Notepad++.zip).

- Extraire le dossier .zip et déplacer le fichier userDefineLang.xml dans ce dossier :

C:\Users\Votre nom utilisateur\AppData\Roaming\Notepad++
Ou
C:\Users\Votre nom utilisateur\AppData\Notepad++

Cela dépend tu système d'exploitation.

Comment l'utiliser ?

- Créer un nouveau document.
Fichier > Nouveau

- Sélectionner ensuite le langage Squirrel.
Langage > Squirrel
Le langage Squirrel se trouve, normalement, tout en bas.

Vous êtes maintenant prêts à faire votre premier code sur IV:MP.

Source : Wiki IV:MP, Notepad++

II. Télécharger IV MP Server.

Téléchargez IV MP server ici (http://files.iv-multiplayer.co.uk/alpha-2/). Prenez celui-ci : IVMP-0.1-Alpha-2-R3-Server (Latest).zip
Vous verrez plusieurs fichiers, mais nous verrons ça plus tard, allez voir dans "scripts". Vous avez des fichiers .nut, pour voir un peu comment se passe un code Squirrel, faites clique droit, Edit with Notepad++. Pour mettre le langage Squirrel, allez dans "langage" et il est normalement tout en bas.


III. Notre premier script.

Nous allons créer une fonction pour que l'on voit dans le log le lancement du serveur.

function onScriptInit()
{
log("-----------------------------------");
log("Mettez ce que vous voulez ici"); //En général, on met le nom du serveur
log("-----------------------------------");
return 1;
}

Vous pouvez également créer un véhicule avec le createVehicle. Nous allons donc mettre un véhicule au spawn du joueur.

function onScriptInit()
{
createVehicle(90, -343.527313, 1172.740479, 14.199832, 268.217010, 0, 0, 0, 0); //On créer une Sultan RS au point de spawn
log("-----------------------------------");
log("Mettez ce que vous voulez ici"); //En général, on met le nom du serveur.
log("-----------------------------------");
return 1;
}

Pour avoir les coordonnées, la commande /savepos est à votre disposition quand vous êtes en jeu.
Nous allons maintenant prévenir le serveur d'une arrivée d'un joueur avec function onPlayerConnect(playerid).

function onPlayerConnect(playerid)
{
sendMessageToAll(White, getPlayerName(playerid) + (" + playerid + ") a rejoint le serveur !"); //Ici, c'est le message pour tous les joueurs.
setPlayerSpawnLocation(playerid, -341.36, 1144.80, 14.79, 40.114815);
return 1;
}

Maintenant, enregistrez votre script. ENREGISTREZ LE EN .NUT !
J'ai fait exprès de commettre une erreur dans le code. Vous allez comprendre pourquoi.

Ouvrez le fichier svr.
Vous devriez avoir un truc du genre :

// Port the server will listen on
port 9999

// Maximum number of players the server will support (Max 50)
maxplayers 10

// Maximum number of vehicles the server will support (Max 100)
maxvehicles 100

// The scripts the server will load and run
scripts consoleadmin.nut Tuto.nut //Ici, ce sont les scripts, mettez le nom de votre script par exemple, Tuto.nut

// The hostname clients and players will see
TUTO'S SERVER //Mettez le nom de votre serveur ici.

// Add the server to the master list
listed true

Ne touchez à rien d'autre !

Lancez le ivmp-svr, vous pouvez voir le nom de votre script que l'on a mis dans onScriptInit, et surtout, on peut voir l'erreur. Il nous prévient qu'il y a une erreur à la ligne 12. Nous allons donc voir.


Le code faux :
sendMessageToAll(White, getPlayerName(playerid) + (" + playerid + ") a rejoint le serveur !"); //Ici, c'est le message pour tous les joueurs.
Le code bon :
sendMessageToAll(White, getPlayerName(playerid) + " (" + playerid + ") a rejoint le serveur !"); //Ici, c'est le message pour tous les joueurs.
Nous avions oublié le " entre getPlayerName(playerid) + et (" + playerid + ").

Mais, on a pas définit la couleur White ?! Pas de problème, ajoutez tout en haut de cotre script cette ligne : const White = 0xFFFFFFAA;

Je vous donne quelques couleurs (les plus utilisées).
const White = 0xFFFFFFAA;
const Blue = 0X0000FFAA;
const Green = 0X00FF00AA;
const Red = 0XFF0000AA;

Après le onPlayerConnect, le function onPlayerDisconnect(playerid, reason). Il fonctionne avec le même principe que le onPlayerConnect.

function onPlayerDisconnect ( playerid, reason )
{
 if(reason == 0) //Le joueur quitte normalement le serveur.
 {
 sendMessageToAll(White, getPlayerName(playerid) + " (" + playerid + ") a quitté le serveur !");
 }
 else if(reason == 1)//Le joueur a crash.
 {
 sendMessageToAll(White, getPlayerName(playerid) + " (" + playerid + ") a quitté le serveur ! <Timeout>");
 }
 return 1;
}

Nous allons maintenant créer notre première commande. Une commande pour créer un véhicule, et qui n'en autorise qu'un par personne.

En haut du script (avec les couleurs), mettez :
local SpawnCar = { };
Dans le onPlayerConnect, ajoutez :
SpawnCar[playerid] <- 999;
Maintenant, le code dans onPlayerCommand :

function onPlayerCommand(playerid, command)
{
local cmd = split(command, " ");
if(cmd[0] == "/v" || cmd[0] == "/cv") //Le /v et le /cv permette de faire la même chose
{
if(cmd.len() == 2)
{
local mid = cmd[1].tointeger();
if(mid >= 0 && mid <= 125)
{
if(SpawnCar[playerid] != 999)
{
destroyVehicle(SpawnCar[playerid]);
SpawnCar[playerid] = 999;
}
local pos = getPlayerCoordinates(playerid);
SpawnCar[playerid] = createVehicle(mid, pos[0] + 1, pos[1] + 1, pos[2] + 1, 0, 1, 1, 1, 1);
sendPlayerMessage(playerid,Green, "Spawn réussi !");
}
}
}
return 0;
}

Nous allons maintenant créer une téléportation. Toujours dans onPlayerCommand, ajoutez ceci :

if(cmd[0] == "/Airport" || cmd[0] == "/airport")
 {
 setPlayerCoordinates(playerid, 2342.356934, 390.643127, 6.085225);
 sendPlayerMessage(playerid, Green, "Bienvenu à l'aéroport.");
 }

Les véhicules ne se téléportent pas encore. Donc le joueur se retrouvera à pied après sa téléportation.

Dans onPlayerCommand, vous devriez avoir ça maintenant :

function onPlayerCommand(playerid, command)
{
local cmd = split(command, " ");
if(cmd[0] == "/v" || cmd[0] == "/cv") //Le /v et le /cv permette de faire la même chose
{
if(cmd.len() == 2)
{
local mid = cmd[1].tointeger();
if(mid >= 0 && mid <= 125)
{
if(SpawnCar[playerid] != 999)
{
destroyVehicle(SpawnCar[playerid]);
SpawnCar[playerid] = 999;
}
local pos = getPlayerCoordinates(playerid);
SpawnCar[playerid] = createVehicle(mid, pos[0] + 1, pos[1] + 1, pos[2] + 1, 0, 1, 1, 1, 1);
sendPlayerMessage(playerid,Green, "Spawn réussi !");
}
}
}
 if(cmd[0] == "/Airport" || cmd[0] == "/airport")
 {
 setPlayerCoordinates(playerid, 2342.356934, 390.643127, 6.085225);
 sendPlayerMessage(playerid, Green, "Bienvenu à l'aéroport.");
 }
return 0;
}

Voici le script complet que l'on a fait :

const White = 0xFFFFFFAA;
const Blue = 0X0000FFAA;
const Green = 0X00FF00AA;
const Red = 0XFF0000AA;

local SpawnCar = { };

function onScriptInit()
{
createVehicle(90, -343.527313, 1172.740479, 14.199832, 268.217010, 0, 0, 0, 0); //On créer une Sultan RS au point de spawn
log("-----------------------------------");
log("Mettez ce que vous voulez ici");
log("-----------------------------------");
return 1;
}

function onPlayerConnect(playerid)
{
sendMessageToAll(White, getPlayerName(playerid) + " (" + playerid + ") a rejoint le serveur !"); //Ici, c'est le message pour tous les joueurs.
setPlayerSpawnLocation(playerid, -341.36, 1144.80, 14.79, 40.114815);
SpawnCar[playerid] <- 999;
return 1;
}

function onPlayerDisconnect ( playerid, reason )
{
 if(reason == 0) //Le joueur quitte normalement le serveur.
 {
 sendMessageToAll(White, getPlayerName(playerid) + " (" + playerid + ") a quitté le serveur !");
 }
 else if(reason == 1)//Le joueur a crash.
 {
 sendMessageToAll(White, getPlayerName(playerid) + " (" + playerid + ") a quitté le serveur ! <Timeout>");
 }
 return 1;
}

function onPlayerCommand(playerid, command)
{
local cmd = split(command, " ");
if(cmd[0] == "/v" || cmd[0] == "/cv") //Le /v et le /cv permette de faire la même chose
{
if(cmd.len() == 2)
{
local mid = cmd[1].tointeger();
if(mid >= 0 && mid <= 125)
{
if(SpawnCar[playerid] != 999)
{
destroyVehicle(SpawnCar[playerid]);
SpawnCar[playerid] = 999;
}
local pos = getPlayerCoordinates(playerid);
SpawnCar[playerid] = createVehicle(mid, pos[0] + 1, pos[1] + 1, pos[2] + 1, 0, 1, 1, 1, 1);
sendPlayerMessage(playerid,Green, "Spawn réussi !");
}
}
}
 if(cmd[0] == "/Airport" || cmd[0] == "/airport")
 {
 setPlayerCoordinates(playerid, 2342.356934, 390.643127, 6.085225);
 sendPlayerMessage(playerid, Green, "Bienvenu à l'aéroport.");
 }
return 0;
}

Lancez maintenant le ivmp-svr, pour vous connecter à votre serveur, cherchez votre IP locale, lancez IV MP, mettez votre adresse IP + le port (ex : votreadresseip:9999).

Pour avoir d'autres fonctions, je vous invite à aller ici (http://wiki.iv-multiplayer.com/wiki/index.php/Main_Page).

En espérant que ce tuto a été clair pour vous.

++
Barto
Titre: Re : [Tuto]Votre premier script
Posté par: Zombotech_Boss le 06 Mai 2010, 11:25:52
GG  ;)
Beau Tuto  :cheers
Titre: Re : [Tuto]Votre premier script
Posté par: Alex_Jhonny le 06 Mai 2010, 17:50:01
Génial un de mes potes recherchait un tuto de ce genre :happy
Titre: Re : [Tuto]Votre premier script
Posté par: J0liX le 06 Mai 2010, 18:32:38
Hello,

Beau tuto de façon nette et précise, ça me donne envie de reprendre le script  :happy

++

J0liX.
Titre: Re : [Tuto]Votre premier script
Posté par: Kawoua le 06 Mai 2010, 18:55:18
GG bart jolie Tutow  ;)
Titre: Re : [Tuto]Votre premier script
Posté par: Barto le 06 Mai 2010, 20:02:13
Merci merci.
Je fairais certainement d'autres tutos a l'avenir.
Titre: Re : [Tuto]Votre premier script
Posté par: Watash le 06 Mai 2010, 20:20:05
C'est bien expliqué, c'est clean, c'est un bon tuto. Je suis persuadé que ça aideras beaucoup d'entre nous !
Titre: Re : [Tuto]Votre premier script
Posté par: Nesik le 29 Octobre 2010, 22:34:05
Désoler du up' mais merci Barto pour ce super tuto je vais bientôt avoir GTA IV (à noël) donc autant commencer tôt  :)
Titre: Re : [Tuto]Votre premier script
Posté par: GtaManiac le 30 Octobre 2010, 01:54:45
Sa ressemble énormément au pawn ^^
Titre: Re : Re : [Tuto]Votre premier script
Posté par: Barto le 30 Octobre 2010, 07:45:42
Sa ressemble énormément au pawn ^^

Ouais vite fait
Titre: Re : Re : [Tuto]Votre premier script
Posté par: ApocKalipsS le 30 Octobre 2010, 12:46:28
Ça ressemble énormément au pawn ^^

Sachant que les deux langages sont extraits du C, forcément  :P

Sinon ton tutorial est maintenant périmé avec la nouvelle version de IV:MP, les settings sont maintenant en XML et les callbacks sont remplacées par des Events.  ;)
Titre: Re : Re : Re : [Tuto]Votre premier script
Posté par: Barto le 30 Octobre 2010, 17:26:49
Ça ressemble énormément au pawn ^^

Sachant que les deux langages sont extraits du C, forcément  :P

Sinon ton tutorial est maintenant faussé avec la nouvelle version de IV:MP, les settings sont maintenant en XML et les callbacks sont remplacées par des Events.  ;)

Je ne savais pas du tout étant donné que je ne m'intéresse plus à ce mod et que je ne code plus.
Titre: Re : [Tuto]Votre premier script
Posté par: cristianehelberGQO le 08 Décembre 2010, 19:52:48
Salut Barto
Merci pour ce tuto, je n'ai aucune expérience en script, mais je vais essayer de suivre cela étape par étape.
Cordialement
Cris
Titre: Re : [Tuto]Votre premier script
Posté par: Barto le 08 Décembre 2010, 20:34:18
Salut cristianehelberGQO,
je crois que malheureusement ce tuto n'est plus bon. Comme l'a dit ApocKalipsS : "Sinon ton tutorial est maintenant faussé avec la nouvelle version de IV:MP, les settings sont maintenant en XML et les callbacks sont remplacées par des Events".
Titre: Re : [Tuto]Votre premier script
Posté par: Ssk le 08 Janvier 2011, 17:46:04
Pas besoin de UP un topic qui date d'il y a un mois pour dire ça ...
Titre: Re : [Tuto]Votre premier script [Périmé]
Posté par: Barto le 09 Janvier 2011, 09:39:30
J'en profite pour dire que j'ai indiqué que le tutoriel était périmé.
Titre: Re : [Tuto]Votre premier script [Périmé]
Posté par: Gilux le 14 Février 2011, 22:19:42
J'ajouterai un petit conseil toujours valable (Pour N++) : Si vous ne trouvez pas le dossier AppData sur Vista ou Seven, allez dans l'explorateur Windows et faites Outils > Options de dossier > Affichage > Afficher les fichiers et lecteurs cachés, puis trouvez votre nom d'utilisateur dans le dossier "Bureau" et allez sur le chemin indiqué ;)

PS : J'ai pas compris le choix de l'équipe IV:MP de fonctionner avec des scripts non-compilés... ca va favoriser les hacks entre RP tout ça ><
++
Titre: Re : [Tuto]Votre premier script [Périmé]
Posté par: ApocKalipsS le 16 Février 2011, 16:20:04
Il y a des modules permettant de compiler ton GM.
Regarde sur le forum de IV-M.com, catégorie modules. Boylett en a fait un, que je n'ai pas encore testé.

PS: Pour ceux à qui ça interesse encore, j'en profite pour dire que la version 0.1 (Beta 2) est sortie il y a deux jours, en version de test (encore un peu buguée)
Titre: Re : [Tuto]Votre premier script [Périmé]
Posté par: Mr_C30 le 16 Février 2011, 22:13:03
o_o perso jmais eu bessoins de compiler mais bon sa peut etre utile

sinon bravo barto pour ton petit tuto ;)

++C30
Titre: Re : [Tuto]Votre premier script [Périmé]
Posté par: ApocKalipsS le 21 Février 2011, 10:37:32
Compiler ça va servir juste à cacher les sources de ton script.
C'est surtout utile pour les clientscripts.
Dans la 0.1 (qui est sortie il n'y a pas longtemps), certains script qui seront utilisés par le client (afficher une image, un texte avec un police téléchargée, etc) seront téléchargé par le client et seront donc accessible à tous le monde si ils ne sont pas compilés.
Titre: Re : [Tuto]Votre premier script [Périmé]
Posté par: Solis le 06 Septembre 2011, 10:17:16
Peut être périmé mais ma super bien éclairé, j'ai avancer un petit peu grâce à ce tuto.

Un GRAND Merci :D