S'identifier

Voir la version complète : Stripper:Source



Cyanur
05/07/2015, 22h13
Ce tutoriel va vous expliquer comment fonctionne le plugin Stripper:Source par Bailopan (createur de Sourcemod). Le plugin peut paraitre gros à première vue, mais il est assez petit par rapport à toutes ses fonctionnalités.


0) Introduction

Alors, ce plugin a quoi il sert ?

C'est un plugin fonctionnant sous Metamod:Source (n'utilise donc pas Sourcemod), qui permet de modifier les maps côté serveur.
Je m'explique, ce plugin permet de modifier des maps sans creer une nouvelle version, et les changements n'apparaitront uniquement sur le serveur ayant fait la modification.

Comment ça fonctionne ?

Le plugin ne possede aucune interface graphique en jeu. Tout se passe par des configs se trouvant dans le dossier du plugin.
Pour modifier les maps avec Stripper, cela necessite les bases de Hammer, le logiciel de Valve pour creer des maps.

Qu'est ce qu'il est possible de faire ?

Vous pouvez:
modifier completement les caracteristiques des entités des maps
en ajouter
en supprimer
les deplacer

La seule chose impossible, est modifier les murs d'une map. Ils ne sont pas compté comme entités.

Liens utiles

Voici quelques liens pouvant vous être utile, lorsque vous utilisez Stripper:
Le topic AlliedModders du plugin (https://forums.alliedmods.net/showthread.php?t=39439)
Le site du plugin (http://www.bailopan.net/stripper/)
Le code source du plugin (https://hg.alliedmods.net/strippersource/)


1) Installation

Rendez-vous sur le site du plugin:
http://www.bailopan.net/stripper/ (http://www.bailopan.net/stripper/)

Et telechargez la version du plugin correspondante au système d'exploitation du serveur:
Windows
Linux
Mac

Ceci fait, il suffit d'extraire le dossier addons dans le cstrike du serveur. Tous les fichiers devraient aller au bon endroit.

Pour être sur que le plugin fonctionne, tapez: meta list dans la console du serveur (après reboot je suppose).

Si le nom du plugin s'affiche, vous pouvez lire la suite.
S'il s'affiche pas, je ne sais pas quel est le problème (sauf si vous vous êtes trompé de système d'exploitation pour l'installation).

Allez dans cstrike/addons/stripper/

Vous aurez 3 dossiers:
bin
dumps
maps

Si vous allez dans maps, vous trouverez un fichier .cfg pour la map de_dust. C'est un fichier exemple, qui ne s'executera jamais même si vous jouez la map (sauf en enlevant les ; devant chaques lignes).

C'est donc dans ce dossier que vous mettrez les fichiers .cfg des maps modifiées. Comme pour moi:
http://i1066.photobucket.com/albums/u408/Nymphalow/tuto_stripper_source/partie_debut/les_config_stripper_zps67ed7997.png

Verifiez dans le dossier dumps, s'il y a rien. C'est dans ce dossier qu'on aura des gros fichiers .cfg donnant toutes les infos (vraiment tout) sur les entités et les propriétés de la map.



2) Obtenir le fichier sur les entités

Vous rejoignez maintenant votre serveur, et mettez la map que vous souhaitez debugguer.

Note: Vous pouvez soit le faire depuis la "Console du serveur" ou depuis votre jeu (mais ça necessite les accès rcon).

Donc vous tapez dans la console:
stripper_dump, si vous le faites depuis la "Console du serveur"
rcon stripper_dump, si vous le faites depuis votre jeu

http://i1066.photobucket.com/albums/u408/Nymphalow/tuto_stripper_source/partie_debut/2014-05-29_00001_zps9825a316.jpg

Si vous obtenez un message comme sur le screenshot, c'est que ça a fonctionné.

Allez maintenant dans le dossier dumps, vous devriez trouver un fichier .cfg nommé comme la map:

http://i1066.photobucket.com/albums/u408/Nymphalow/tuto_stripper_source/partie_debut/stripper_dump_zpsb253696c.png
Dans mon cas, le fichier est mg_battle_party.0000.cfg


Ouvrez le avec Notepad++, sinon vous aurez des gros problèmes pour chercher certaines lignes.

Vous obtiendrez quelque chose comme ça:

http://i1066.photobucket.com/albums/u408/Nymphalow/tuto_stripper_source/partie_debut/dans_notepad_zps44f33e09.png

Toutes les entités de la map sont affichée. Selon les maps, ça peut être plus ou moins gros.



3) Ouvrir la map avec Hammer

Il vous faudra d'abord decompiler la map (la faire passer de .bsp à .vmt). C'est facile à faire. Lisez mon autre tuto qu'il explique:
http://www.zombie-hell.fr/showthread.php?1737-Decompiler-une-map-sans-probl%E8me

A savoir que les textures ne sont pas necessaires, vu que l'on va juste regarder les entités.

Une fois la map decompilé, ouvrez la dans Hammer (C:ProgramFiles/Steam/SteamApps/common/Counter-Strike:Source/bin/hammer.exe).

File -> Open --> Vous choisissez la map decompilé

Note: Si Hammer vous demande si vous voulez qu'il corrige les problèmes de la map (quand c'est a ~33% de chargement), dites No. Sinon la prochaine fois que vous chargez la map, toutes les entités auront disparues.

Une fois qu'elle est chargé, allez dans:
Map --> Entity Report

Vous obtiendrez la liste de toutes les entités de la map, par ordre alphabetique.



4) <A> Supprimer des entités

Il vous est possible de supprimer n'importe quellle entité de n'importe quelle map (mais ne supprimer pas des choses utiles de la map).
Vous avez la liste des entités sur Hammer, cherchez celle qui pose problème, comme par exemple:
un func_breakable
un func_button
un prop_static
un prop_physic
etc...

Double cliquez sur le nom de l'entité pour la voir sur la vue en 3D. Ensuite utilisez l'outil Flèche a gauche, et double cliquez sur l'entité dans la vue 3D pour qu'une fenêtre s'ouvre avec les propriétés de celle ci.
Une fois que vous avez trouvé la bonne entité (si vous savez où elle se trouve, cherchez la directement dans la vue 3D sans passer par Entity Report), notez les Coordonnées de celle-ci.

Comme par exemple ici:
http://i1066.photobucket.com/albums/u408/Nymphalow/tuto_stripper_source/partie_supprimer/func_door_mg_zps9757f7b7.png

http://i1066.photobucket.com/albums/u408/Nymphalow/tuto_stripper_source/partie_supprimer/func_door2_mg_zps51d8c9e1.png

Attention:, seul les Brush Entity possedent les coordonnes dans les propriétés.
Pour les Point Entity, il faudra prendre les coordonnées en bas a droite, une fois l'entité selectionnée.

http://i1066.photobucket.com/albums/u408/Nymphalow/tuto_stripper_source/partie_supprimer/coordonnes_dans_hammer_zps6c71f30e.png

Ouvrez maintenant le fichier .cfg qui se trouve dans le dossier dumps avec Notepad++.

Utilisez la fonction recherche de Notepad++ (CTRL + F ou Cliquez dessus).
Mettez dans le champ de recherche les coordonnées de l'entité trouvée, et faites Entrer:

http://i1066.photobucket.com/albums/u408/Nymphalow/tuto_stripper_source/partie_supprimer/cherche_coordonnes_zps6cdebf73.png

Il se peut que Notepad ne trouve pas, bien que les coordonnées soit bons. Dans ce cas, agrandissez le champ de recherche en remplaçant les coordonnées par le type de l'entité.
Dans mon cas, func_button. Et ensuite cherchez manuellement, la ligne avec les bonnes coordonnées (faites Suivant dans la fenêtre de Recherche pour passer au func_button suivant).

http://i1066.photobucket.com/albums/u408/Nymphalow/tuto_stripper_source/partie_supprimer/trouve_coordonnes_zpsd19f053a.pnghttp://i1066.photobucket.com/albums/u408/Nymphalow/tuto_stripper_source/partie_supprimer/trouve_coordonnes2_zpscb41f4c4.png


Copiez les lignes correspondant à l'entité. Donc qui commence par une accolade et qui se termine par un autre.


Collez les dans un fichier .cfg portant le nom de la map correspondante.

Et devant la première ligne, ajoutez un:
delete:

Ce qui vous donnera ça:
http://i1066.photobucket.com/albums/u408/Nymphalow/tuto_stripper_source/partie_supprimer/le_supprimer_bouton_zps6fdb07c2.png

Note: Verifiez bien que les accolades se ferment pour chaque entité et que vous n'avez pas oublié le "classname" (c'est la base d'une entité, si vous l'oubliez, ca fera un crash serveur)


Plus qu'à verifier le resultat en jeu.

Astuces:

Il n'est pas necessaire de copier toutes les lignes d'une entité. Seul certaines sont utiles:
"model"
"targetname"
"origin"
"classname" (n'oubliez jamais cette ligne, sinon ca crash)
"hammerid"

Si vous utilisez ces lignes là (origin, et classname principalement, après il suffit d'ajouter une des 3 autres ), les changements se feront.

AVANT

http://i1066.photobucket.com/albums/u408/Nymphalow/tuto_stripper_source/partie_supprimer/yolo_mg_zps590b8b6d.png

APRES

http://i1066.photobucket.com/albums/u408/Nymphalow/tuto_stripper_source/partie_supprimer/yolo_mg2_zps7b32174e.png

Ca permet de garder des configs simples et propres



/!\ Attention: la vrai commande a utiliser pour supprimer des entités est:
filter:

delete: ne fonctionne pas a tous les coups, car elle a une autre utilité. Alors que filter: supprimera l'entité dans tous les cas.

5) <A> Resultat de la suppression

Si vous avez tout fait correctement, l'entité aura disparu.

Comme ici:
http://i1066.photobucket.com/albums/u408/Nymphalow/tuto_stripper_source/partie_supprimer/mg_battle_party0000_zpsb4b9235c.jpg
Le bouton du Mode buggué à disparu, on ne peut donc plus appuyer dessus pour ouvrir la porte.

Je l'ai fait pour les 2 portes, sachant qu'il y a 2 côtés dans la map (CT et T).


Si ça n'a pas fonctionné, verifiez le fichier .cfg



4) <B> Ajouter des entités

Tout d'abord, il faut savoir que l'on ne peut pas ajouter n'importe quoi a une map. Stripper à certaines limitations qu'il ne faut pas negliger, sauf si vous voulait un crash serveur:
Il est possible d'ajouter toute sorte d'entité, mais les propriétés de celle-ci doivent être completes.
Il est donc possible d'ajouter des triggers, des téléporteurs, etc...
Il est possible de remplacer tous les Props du même type par un autre type de Prop.
Il est possible de changer la rotation de certaines entités solide.
Pour ajouter un Brush Entity, il faut utiliser un Brush Entity deja existant dans la map. Ils possedent la propriété "model" accompagné d'un nombre.
Ils suffit donc de prendre le "model" "*nombre" d'une entité et changer le classname, pour ensuite completer avec Hammer. Mais c'est deja de la modification avancé.

On va commencer par l'ajout d'entités qui vont bloquer un glitch de la map cs_assault: Celui qui permet d'aller sur le toit à gauche du spawn CT (avec les grilles).

Premièrement, faites une reconnaissance dans la map (avec Noclip), pour trouver la position où vous souhaitez placer l'entité:

http://i1066.photobucket.com/albums/u408/Nymphalow/tuto_stripper_source/partie_ajouter/cs_assault0003_zpsc5199000.jpg

En utilisant la commande: cl_showpos 1, vous obtiendrez en haut a droite, votre position, votre vitesse, et votre angle. Ce qui nous interesse, c'est la position, et donc les Coordonnées.
Notez les quelque part, ou faites un screenshot.

Cherchez en même temps quelque chose qui pourrait bloquer ce passage, mais qui n'est pas un prop.

Quittez ensuite le jeu.

Ouvrez maintenant la map decompilé. Comme ecrit plus haut, utilisez Entity Report, ou alors dirigez vous directement vers l'entité (si vous en avez trouvé une) et cliquez dessus avec l'outil Flèche.

Dans mon cas, j'ai pris un func_breakable (une vitre):
http://i1066.photobucket.com/albums/u408/Nymphalow/tuto_stripper_source/partie_ajouter/chercher_coordo_hammer_zpsba7c9da5.png

Notez les Coordonnées de l'entité, et quittez Hammer.
Ouvrez le fichier .cfg de la map qui se trouve dans le dossier dumps.


Comme ecrit plus haut, utilisez la fonction Rechercher, et mettez y les coordonnées. Il se peut que Notepad ne trouve pas, bien que les coordonnées soit bons. Dans ce cas, agrandissez le champ de recherche en remplaçant les coordonnées par le type de l'entité.

Dans mon cas, func_breakable. Et ensuite cherchez manuellement, la ligne avec les bonnes coordonnées (faites Suivant dans la fenêtre de Recherche pour passer au func_breakable suivant).

http://i1066.photobucket.com/albums/u408/Nymphalow/tuto_stripper_source/partie_ajouter/trouve_notepad_zps4e3e8b75.png

Vous copiez les lignes de l'entité.

Et vous les collez dans le fichier .cfg de la map.

Maintenant ajouter un:
add:
A la première ligne.

Il ne vous reste plus qu'a remplacer les coordonnées par ceux que vous aviez choisie au debut (lors de votre "reconnaissance" dans la map):

http://i1066.photobucket.com/albums/u408/Nymphalow/tuto_stripper_source/partie_ajouter/changement_coordonnes_zpsba8a64ec.png

Et dans mon cas, il me reste à mettre les HP de la vitre à un nombre assez grand pour que ça ne soit plus cassable.


Lorsque vous souhaitez creer une nouvelle entité, donc la creer a partir de rien (sans copier le "model" ou autre), il est necessaire d'obtenir les propriétés a taper.
Pour ce faire, rendez vous dans Hammer, creez cette entité (qui est donc un Point Entitie), regardez les propriétés de celle-ci, et desactiver le SmartEdit.
Les propriétés seront telle qu'on peut les trouver dans les fichiers de Stripper (ou EntSpy).
Il vous suffit donc de les copier dans votre config (n'oubliez surtout pas le "classname").


5) <B> Resultat de l'ajout

Si vous avez tout fait correctement, une entité sera apparue (et l'original n'aura pas disparue).

Comme ici:
http://i1066.photobucket.com/albums/u408/Nymphalow/tuto_stripper_source/partie_ajouter/cs_assault0008_zpsbe2b35ca.jpg
La vitre est apparue, et bloque completement le glitch. C'est peut être pas très esthetique, mais c'est impassable.
J'ai fait 2 vitres au cas ou quelqu'un serait capable de le passer (même si c'est impossible :p)

Si ça n'a pas fonctionné, verifiez le fichier .cfg


6) Modifier des entités

Il y a une technique pour modifier les propriétés d'une entité.

Voici la maniere de le faire:


modify:
{
match:
{
"origin" "<X Y Z>"
"classname" "func_button"
"targetname" "<NAME>"
}
delete:
{
"<Output>" "<Entité cible>,<Input>,<paramètre>,<temps>,<nombre de fois (-1 infini / 1 une fois)>"
}
insert:
{
"<Output>" "<Entité cible>,<Input>,<paramètre>,<temps>,<nombre de fois (-1 infini / 1 une fois)>"
}
}

Vous verez un exemple sur les images ci-dessous.

Changez le "classname" par celui de l'entité que vous modifiez.
Ajoutez les coordonnées.
Mettez le "targetname" et/ou "model" et/ou "hammerid"
Dans delete: copiez les lignes des Outputs des entités a supprimer.
Dans insert: ajoutez les nouveaux Outputs.

Il existe une autre option (autre que delete: et insert: ), c'est replace:
Lorsque vous devez changer les valeurs des propriétés utilisez replace:


Exemple:


modify:
{
match:
{
"origin" "0 50 400"
"classname" "logic_relay"
"targetname" "relay"
}
replace:
{
"origin" "80 50 400"
"targetname" "relay1"
}
}

Vous n'êtes pas obligé de mettre dans le match:, la ligne que vous allez modifier pour remplacer les valeurs.


7) Mettre des commentaires

Pour mieux se retrouver dans les configs que l'on fait, il est necessaire de mettre des commentaires qui indique qu'est ce que l'on modifie.

Quand j'ai fait des premières configs, j'ai fait l'erreur de mettre des slash //, comme sur cette image:
http://i1066.photobucket.com/albums/u408/Nymphalow/tuto_stripper_source/tuto_stripper_modifie/mauvaise_methode_zps37f40adb.png

Le problème est que le plugin va chercher le classname de ces slash, donc il va les considerer comme des entités, ceux qui pourrait provoquer des crashs.

La solution est simple, c'est de mettre un ; devant chaque ligne comportant un commentaire.
Comme sur cette image:
http://i1066.photobucket.com/albums/u408/Nymphalow/tuto_stripper_source/tuto_stripper_modifie/bonne_methode_zps244776a5.png




Merci d'avoir lu ce tutoriel fait par Moltard