GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: sheppertizer le 20 Septembre 2009, 20:03:47

Titre: [resolu]Probleme de vie
Posté par: sheppertizer le 20 Septembre 2009, 20:03:47
Bonsoir a tous

Voila depuis quelque jour je traduit un gamemode samp qui est le SA RP , jusque la tout va bien sauf

que je me suis apercu d un petit souci au niveau de la vie elle ne decend pas comme sur d autre script rp (meme d origine elle ne decend pas)

Debutant sur le sript samp je ne sais pas trop ou regarde. Donc puis je reparer cet ereur ou existe t il un fs

pour cet fonction

j ai pas mal chercher sur samp.com mais pas trouver ce que je desirer

merci d avence
Titre: Re : Probleme de vie
Posté par: FuSion le 20 Septembre 2009, 20:19:43
Essaye de mettre un timer qui dimunie la vie chaque X secondes c'est facile a codé ..

++
FS'
Titre: Re : Probleme de vie
Posté par: sheppertizer le 20 Septembre 2009, 20:33:51
c est justement ce que j essaye de faire mais je ne suis pas tres bon voir meme horrible

Jai trouver ce petit bout de code mais gros probleme a la compilation

SetTimer("SetPHealthTimer", 1000*60*2, true);

forward SetPHealthTimer();
public SetPHealthTimer()
{
for(new i = 0; i < GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
static Float:health;
GetPlayerHealth(i, health);
SetPlayerHealth(i, health - floatdiv(health, 100.00));
}
}
}

mais jai pas mal d ereur
Titre: Re : Probleme de vie
Posté par: cristab le 20 Septembre 2009, 20:53:21
essaie comme ceci

forward Life(playerid);
dans le ongamemmodeinit

SetTimer ("Life", 2500, 1);
plus bas dans ton script

public Life(playerid)
{
   static Float: Psante;
   Psante = GetPlayerHealth(playerid,Psante);
   SetPlayerHealth(playerid, Psante - 1);
   return 1;
}
Titre: Re : Probleme de vie
Posté par: sheppertizer le 20 Septembre 2009, 23:19:36
ton code en lui meme fonctione mais il m enleve direct toute la vie des que je meconnecte

moi ce que je souhaiterai faire c de diminuer au fur est a mesure que le temps passe

exemple si en 1 h on ne se nourit pas il ne reste que 1pv



Titre: Re : Probleme de vie
Posté par: FuSion le 20 Septembre 2009, 23:31:50
Déjà tranforme une heure en milliseconde et insère la a la place de 2500 ici :
SetTimer ("Life", 2500, 1);
Puis voila le public :
public Life(playerid)
{
   SetPlayerHealth(playerid, 1);
   return 1;
}


Je suis pas sur a 100% de ce code mais essaye quand même

++
FS'
Titre: Re : Probleme de vie
Posté par: S!m le 20 Septembre 2009, 23:40:15
Salut,

vous devriez ajouter une loop dans la fonction et éliminer le paramètre playerid

++Sim++
Titre: Re : Probleme de vie
Posté par: sheppertizer le 21 Septembre 2009, 00:56:03
c est bon mon probleme est resolu je n avais pas fait attention a une option du Gm

cela dit j ai quand meme developper un petit fs tout simple qui ma aider

#include <a_samp>
#define FILTERSCRIPT

forward Life(playerid);


public OnGameModeInit()
{
    print("\n======================================");
print("*       Life Systheme RP loaded        *");
print("======================================\n");
    SetTimer ("Life", 25000, 1);
}

public Life(playerid)
{
   new Float: Psante;
   if(Psante <= 100.0)
{
   GetPlayerHealth(playerid,Psante);
   Psante -= 1;
   SetPlayerHealth(playerid, Psante );
}
   else
{
SetPlayerHealth(playerid, 100.0);
}
   return 1;
}

public OnFilterScriptExit()
{
    print("\n======================================");
print("*      Life Systheme RP unloaded       *");
print("======================================\n");
}

je lai tester sur mon gm il rentre en conflit mais sur un gm d origine il fonctionne nikel
si j arrive a corriger les conflits  je le metrais en fs pour tout le monde ^^

un grand merci a toutes  les personnes qui mon aider et repondu  :P
Titre: Re : [resolu]Probleme de vie
Posté par: Ssk le 21 Septembre 2009, 07:49:22
normalement ton truc ne doit fonctionner qu' avec le gars qui à l' ID 0
Titre: Re : [resolu]Probleme de vie
Posté par: MrFredo le 21 Septembre 2009, 08:02:20
J'confirme ton code ne fonctionera que sur l'id 0 pour qu'il fonctione sur tout les joueur retire le parametre playerid de life et place le contenu de la callback life dans une boucle qui parcours les joueur connecte

Se qui donnerai qqch comme ceci:

Code: (pawn) [Sélectionner]
public Life()
{
   new Float: Psante;
   for(new i=0;i<MAX_PLAYERS;i++)
   {
        if(IsPlayerConnected(i))
        {
               GetPlayerHealth(i,Psante);
               SetPlayerHealth(i, Psante-1.0);
        }
    }
}

ps: J'ai recodé le contenu de la callback car je trouve certaine chose incoherente et inutile ...