[Include] I_Preview -> Gestion de preview model
#1

I_Preview





Salut а tous, alors voilа j'ai crйй cette include pour faciliter le positionnement (rx, ry, rz, zoom) d'un objet dans le cadre d'un texdraw configurй en previewmodel.

Le fonctionnement est simple :

Fonctions :

AddPosPreview(modelid, Float:rx, Float:ry, Float:rz, Float:zoom)
GetPosPreview(modelid, &Float:rx, &Float:ry, &Float:rz, &Float:zoom)
ChargementPosPreview(modelid)



1. Tout d'abord vous avez une 1er fonction qui vous sert а ajouter une position destiner а un id d'objet :

Code:
AddPosPreview(modelid, Float:rx, Float:ry, Float:rz, Float:zoom)

        Paramиtres :
            modelid : id de l'objet
            rx : Rotation x de l'objet dans le preview
            ry : Rotation y de l'objet dans le preview
            rz : Rotation z de l'objet dans le preview
            zoom : Niveau du zoom

-> Ne retourne aucune valeur spйcifique.

/!\ Les information fournie par cette fonction sont sauvegardй dans un fichier .ini unique pour le modelid insйrй. Vous devez par consйquent crйer dans le dossier scriptfile le dossier "PreviewModel" qui contiendra tout les fichiers .ini.

Info : Vous pouvez aussi modifier l'emplacement des fichiers en modifiant dans le code la define "EMPLACEMENT_FICHIER".

2. Ensuite nous avons une 2иme fonction qui sert а rйcupйrer les rotation rx, ry, rz et le la valeur du zoom du prйview ajoutй.

Code:
GetPosPreview(modelid, &Float:rx, &Float:ry, &Float:rz, &Float:zoom)

        Paramиtres :
            modelid : id de l'objet
            &rx : Retourne la rotation x de l'objet dans le preview
            &ry : Retourne la rotation y de l'objet dans le preview
            &rz : Retourne la rotation z de l'objet dans le preview
            &zoom : Retourne le niveau du zoom

-> Retourne les valeurs rx, ry, rz et zoom
Exemple de script :

Code:
    new phrase[256], Float:rx, Float:ry, Float:rz, Float:zoom;
    GetPosPreview(968, rx, ry, rz, zoom);
    format(phrase, sizeof(phrase), "Modelid : %d - rx : %f, ry : %f, rz : %f, zoom : %f", 968, rx, ry, rz, zoom);
    SendClientMessage(playerid, 0xFFFFFFFF,phrase);

3. Cette derniиre fonction sert а charger les informations (rx, ry, rz, zoom) du modelid ajoutй (а mettre dans "OnGameModeInit").
Code:
ChargementPosPreview(modelid)

        Paramиtres :
            modelid : id de l'objet а charger (doit кtre situй dans le dossier PreviewModel)

-> Retourne la valeur de 1 si l'objet а bientфt йtait chargй sinon retourne 0 si l'objet n'existe pas dans le dossier.
Exemple de script :

Code:
public OnGameModeInit()
{
    ChargementPosPreview(968);
    return 1;
}

Voici un exemple de script complet :

Code:
public OnGameModeInit()  //On charge le textdraw et le ou les infos preview enregistrй
{
    ChargementPosPreview(968); // Chargement du preview de l'objet id 968

    Preview_Textdraw = TextDrawCreate(250.000000, 140.000000, "_");
    TextDrawBackgroundColor(Preview_Textdraw, 255);
    TextDrawFont(Preview_Textdraw, 5);
    TextDrawLetterSize(Preview_Textdraw, 0.500000, 1.000000);
    TextDrawColor(Preview_Textdraw, -1);
    TextDrawSetOutline(Preview_Textdraw, 0);
    TextDrawSetProportional(Preview_Textdraw, 1);
    TextDrawSetShadow(Preview_Textdraw, 1);
    TextDrawUseBox(Preview_Textdraw, 1);
    TextDrawBoxColor(Preview_Textdraw, 0xFFFFFF00);
    TextDrawTextSize(Preview_Textdraw, 150.000000, 130.000000);
    TextDrawSetSelectable(Preview_Textdraw, 0);
    TextDrawSetPreviewModel(Preview_Textdraw, 968);
    return 1;
}
public OnPlayerConnect(playerid)  // On affiche un preview а la connexion (exemple)
{
    new Float:rx, Float:ry, Float:rz, Float:zoom;
    GetPosPreview(968, rx, ry, rz, zoom);
    TextDrawSetSelectable(Preview_Textdraw, 968);
    TextDrawSetPreviewRot(Preview_Textdraw, rx, ry, rz, zoom);
    TextDrawShowForPlayer(playerid, Preview_Textdraw);
    return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])  
{
    new cmd[128], idx;
    
    cmd = strtok(cmdtext, idx);
    if(strcmp(cmd,"/savepreview",true)==0)
    {
        new modelid[128], rx[128], ry[128], rz[128], zoom[128];
	modelid = strtok(cmdtext, idx);
	rx = strtok(cmdtext, idx);
	ry = strtok(cmdtext, idx);
	rz = strtok(cmdtext, idx);
	zoom = strtok(cmdtext, idx);
	if(!modelid)
           {SendClientMessage(playerid, 0xFFFFFFFF, "CMD : /savepreview [modelid] [Rx] [Ry] [Rz] [Zoom]");
	     return 1;
	}
        AddPosPreview(modelid, floatstr(rx), floatstr(ry), floatstr(rz), floatstr(zoom));
        SendClientMessage(playerid, 0xFFFFFFFF, "Position preview sauvegardй");
        return 1;
    }
    return 1;
}
En gros ici dans "OnGameModeInit" On charge le textdraw (preview model) ensuite avec la commande "/savepreview" on ajoute les positions du preview, celui ci est donc sauvegardй (si vous utilisez la fonction "AddPosPreview" sur un id d'objet qui existe dйjа alors celui-ci sera juste modifiй). Et donc ici j'ai choisit d'afficher l'id 968 donc j'ai dы faire au par avant la commande "/savepreview 968 [rx] [ry] [rz] [zoom]" (avec mes paramиtres), ce qui veut dire que quand le joueur ce connecte ("OnPlayerConnect") le preview est affichй au joueur avec les paramиtres insйrй sur le modelid 968.

Petit screen (pour Noliax :P) :



Par exemple ici j'ai rйalisй un systиme de poche et les positions preview s'adapte automatiquement en fonction de l'id de l'objet.


Source :

Pastebin : http://pastebin.com/4iFcwvxE

Pour le systиme de sauvegarde vous devez inclure "Dini.inc" dans vos includes :

Dini : http://dracoblue.net/downloads/dini/



MODIFICATION :

- 13/07/2014 : Dйsormais "ChargementPosPreview" retourne une valeur.



Voilа j’espиre que cela servira а certain, sur ce bonne continuation а tous

Ivory
Reply


Messages In This Thread
I_Preview -> Gestion de preview model - by Ivory - 12.07.2014, 20:23
Re: I_Preview -> Gestion de preview model - by Noliax8 - 12.07.2014, 20:44
Re : I_Preview -> Gestion de preview model - by Ivory - 12.07.2014, 20:51
Re : I_Preview -> Gestion de preview model - by Ivory - 12.07.2014, 20:56
Re: I_Preview -> Gestion de preview model - by Noliax8 - 12.07.2014, 21:00
Re : I_Preview -> Gestion de preview model - by Ivory - 12.07.2014, 21:04
Re : I_Preview -> Gestion de preview model - by XDamienX007 - 13.07.2014, 09:04
Re: Re : I_Preview -> Gestion de preview model - by Noliax8 - 13.07.2014, 09:43
Re : I_Preview -> Gestion de preview model - by Ivory - 13.07.2014, 12:30
Re: I_Preview -> Gestion de preview model - by BlackDeviil - 13.07.2014, 12:43

Forum Jump:


Users browsing this thread: 4 Guest(s)