GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Eloctro le 23 Mai 2010, 17:16:13

Titre: SetPVarInt ?
Posté par: Eloctro le 23 Mai 2010, 17:16:13
Bonjour ,
J'arrive pas à comprendre l'utiliter de SetPVarInt ?
Titre: Re : SetPVarInt ?
Posté par: Eloctro le 23 Mai 2010, 17:43:12
Nan moi j'ai compris que c'était une variable qui ce m'était auto à zéro à la deconexion
Titre: Re : SetPVarInt ?
Posté par: cristab le 23 Mai 2010, 18:15:12
en gros c'est un façon d'exporter tes variable d'un FS sur le GM ou le contraire :)
Titre: Re : SetPVarInt ?
Posté par: Syg le 25 Mai 2010, 23:22:46
Non, c'est simplement la façon de déclarer des variables associées à un joueur.

Ces variables doivent être crées par le script au moment de la connexion d'un joueur.
Ces variables existent pendant toutes la durée de connexion du joueur, elles sont détruites lors de sa déconnexion.

Ceci permet d'utiliser efficacement la mémoire en évitant la déclaration de tableaux avec [MAX_PLAYERS] (Si MAX_PLAYERS vaut 200, on réserve 200 fois les variables).

Par contre, l'utilisation de ce système (introduit avec le R4 je crois) alourdit considérablement le script (qui devient vite difficilement lisible).

A vous de voir.

++
Syg
Titre: Re : SetPVarInt ?
Posté par: Ssk le 25 Mai 2010, 23:36:45
Faudrait qu'ils mettent un language qui ressemble au C++ pour la POO et ca rendra les codes plus lisible =) et plus simple =)
Titre: Re : Re : SetPVarInt ?
Posté par: S!m le 25 Mai 2010, 23:40:05
Salut,

Non, c'est simplement la façon de déclarer des variables associées à un joueur.

Ces variables doivent être crées par le script au moment de la connexion d'un joueur.
Ces variables existent pendant toutes la durée de connexion du joueur, elles sont détruites lors de sa déconnexion.

Ceci permet d'utiliser efficacement la mémoire en évitant la déclaration de tableaux avec [MAX_PLAYERS] (Si MAX_PLAYERS vaut 200, on réserve 200 fois les variables).

Par contre, l'utilisation de ce système (introduit avec le R4 je crois) alourdit considérablement le script (qui devient vite difficilement lisible).

A vous de voir.

++
Syg

ça dépend, il y a moyen de ne pas trop alourdir le script avec l'aide des defines, par exemple:

#define GetAdminlevel(%0) GetPVarInt(%0, "AdminLevel")
#define SetAdminLevel(%0,%1) SetPVarInt(%0, "AdminLevel", %1)
#define GetRaceState(%0) GetPVarInt(%0, "RaceState")
....

j'utilisais déjà cette méthode avec les variables pour rendre le script plus agréable à lire (du moins je trouve que ça parait plus beau quand on fait un test sur une fonction...)
l'ennui c'est que ça ne fonctionne pas aussi bien quand on arrive pour récupérer la valeur d'un string comme il faut passer la variable en paramètre ça se fait mais il faudra un truc de ce genre:

#define GetPlayerStateName(%0,%1,%2) GetPVarString(%0, "StateName", %1, %2)
//à utiliser ainsi: GetPlayerStateName(playerid, variable où stocker l'info, taille de la variable);

++Sim++
Titre: Re : SetPVarInt ?
Posté par: Ssk le 25 Mai 2010, 23:49:13
Ouais c'est un moyen de contourner le problème, mais écrire des defines à chaque fois, c'est un peu chi*nt ^^
Titre: Re : Re : SetPVarInt ?
Posté par: S!m le 26 Mai 2010, 00:42:49
Salut,

Ouais c'est un moyen de contourner le problème, mais écrire des defines à chaque fois, c'est un peu chi*nt ^^
ouais, mais au fond, déclarer une variable ça prend 1 ligne. Déclaré un define du genre ça prend 2 lignes (quand tu fait le Set et le Get)
Titre: Re : SetPVarInt ?
Posté par: Syg le 26 Mai 2010, 10:43:55
Oui, Sim, c'est la base de la programmation objet, chaque variable est un objet que l'on n'accède pas directement mais au moyen de méthode (Set, Get, ...).

Sinon, je reviens sur la phrase de cristab qui dit "en gros c'est un façon d'exporter tes variable d'un FS sur le GM ou le contraire".
Effectivement, c'est un moyen simple de pouvoir partager des variables entre un GM et les FS qui l'entourent. Les variables associées aux joueurs sont gérées par le serveur lui-même et sont donc accessibles directement dans tous les FS.
Il suffit de mettre les #define de Sim dans le bon include et le tour est joué.
Le seul petit problème de cette solution c'est que les FS sont irrémédiablement liés au GM (mais il permet une plus grande modularisation du code, ce qui est une bonne chose).

++
Syg
Titre: Re : SetPVarInt ?
Posté par: Ssk le 26 Mai 2010, 12:10:24
Il y a une limite d'utilisation de cette fonction ?
Titre: Re : Re : SetPVarInt ?
Posté par: S!m le 26 Mai 2010, 16:51:40
Salut,

Il y a une limite d'utilisation de cette fonction ?

je ne crois pas, la seule limite c'est quand tu l'utilise tellement que t'utilise toutes les ressources du serveur....
personnellement je m'en sert à fond pour tous les trucs qui peuvent m'être utiles d'un script à l'autre. Par exemple, le statut en course, le niveau d'admin, le dm dans lequel le joueur se trouve....

++Sim++
Titre: Re : SetPVarInt ?
Posté par: Ssk le 26 Mai 2010, 16:58:27
Ouais c'est assez interressant, surtout si on gère avec des FS les serveurs ^^