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
-
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
-
Essaye de mettre un timer qui dimunie la vie chaque X secondes c'est facile a codé ..
++
FS'
-
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
-
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;
}
-
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
-
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'
-
Salut,
vous devriez ajouter une loop dans la fonction et éliminer le paramètre playerid
++Sim++
-
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
-
normalement ton truc ne doit fonctionner qu' avec le gars qui à l' ID 0
-
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:
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 ...