GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: chrislabricole le 28 Décembre 2007, 00:07:54

Titre: [Résolu] Reprise du script de paye qui ne marche pas....
Posté par: chrislabricole le 28 Décembre 2007, 00:07:54
Bonjour, c'est encore moi  :ninja

j'ai pris ce script sur ce forum, j'aimerais aussi l'utiliser mais lors de la compilation, des erreurs....

public AutoPay(playerid)
{
SendClientMessageToAll(COLOR_GREEN,"Jour De Paye !");
SendClientMessageToAll(COLOR_RED,"Tu as reçu 3500$ !");
for(new i=0; i<MAX_PLAYERS; i++)
{
GivePlayerMoney(i, 3500);
}
}

C:\...\filterscripts\paye.pwn(20) : warning 217: loose indentation
C:\...\filterscripts\paye.pwn(20) : error 029: invalid expression, assumed zero
C:\Documents and Settings\chris\Bureau\samp022server.win32\filterscripts\RAS.pwn(20) : error 017: undefined symbol "AutoPay"
Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase


2 Errors.

voila...

Merci de votre aide ! :D
Titre: Re : Reprise du script de paye qui ne marche pas....
Posté par: [StAfF]MaN le 28 Décembre 2007, 00:28:50
Y a pas de

return 1;

?? c'est normale ??
Titre: Re : Reprise du script de paye qui ne marche pas....
Posté par: R@f le 28 Décembre 2007, 00:30:17
le problème ne viens pas de là, il manque le forward en haut du script et le timer qui éxecute la fonction dans OnGameModeInit ;)

++
R@f

Titre: Re : Re : Reprise du script de paye qui ne marche pas....
Posté par: chrislabricole le 28 Décembre 2007, 10:56:48
donc si je met

[...]
#include <time> // il y en a besoin ??
forward AutoPay(); // est-ce cela ??

[...]

public AutoPay(playerid)
{
SendClientMessageToAll(COLOR_GREEN,"Jour De Paye !");
SendClientMessageToAll(COLOR_RED,"Tu as reçu 3500$ !");
for(new i=0; i<MAX_PLAYERS; i++)
{
GivePlayerMoney(i, 3500);
}
}

Merci de votre aide  :)

PS: je suis débutant :...
Titre: Re : Reprise du script de paye qui ne marche pas....
Posté par: NatiVe™ le 28 Décembre 2007, 11:30:18
forward AutoPay();

public OnGameModeInit()
{
SetTimer("AutoPay", TEMPS, 1);
        return 1,
}

public AutoPay(playerid)
{
SendClientMessageToAll(COLOR_GREEN,"Jour De Paye !");
SendClientMessageToAll(COLOR_RED,"Tu as reçu 3500$ !");
for(new i=0; i<MAX_PLAYERS; i++)
{
GivePlayerMoney(i, 3500);
}
}
Titre: Re : Reprise du script de paye qui ne marche pas....
Posté par: R@f le 28 Décembre 2007, 11:38:34
y'a pas besion de l'include time pour ce bout de code, peut être il te sert a autre chose cet include. Pour le timer tu utilises un SetTimerEx et pas un SetTimer comme Native
Code: (cpp) [Sélectionner]
SetTimerEx("AutoPay",1440000,1,"i",playerid);je viens aussi de remarquer que le forward n'est pas très juste ^^ c'est :
Code: (cpp) [Sélectionner]
forward AutoPay(playerid);
++
R@f
Titre: Re : Reprise du script de paye qui ne marche pas....
Posté par: chrislabricole le 28 Décembre 2007, 12:59:02
Donc en haut du script, j'ai :
Code: (cpp) [Sélectionner]
forward AutoPay(playerid);
SetTimerEx("AutoPay",1440000,1,"i",playerid); // comment à tu trouvé 1440000, cela signifie 1 jour (de gta) je pense, non ?
[...]
Code: (cpp) [Sélectionner]
public AutoPay(playerid)
{
SendClientMessageToAll(COLOR_GREEN,"Jour De Paye !");
SendClientMessageToAll(COLOR_RED,"Tu as reçu 3500$ !");
for(new i=0; i<MAX_PLAYERS; i++)
{
GivePlayerMoney(i, 3500);
}
}


et quand je compile, ça me fais :
Citer
C:\...\gamemodes\lvdm.pwn(30) : error 021: symbol already defined: "SetTimerEx"
Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase

1 Error.


Merci de votre aide !  :)
Titre: Re : Reprise du script de paye qui ne marche pas....
Posté par: R@f le 28 Décembre 2007, 13:06:54
j'ai oublié de dire que fallait mettre le timer dans OnGameModeInit (l'endroit où y a les véhicules) et 1440000 sa fait bel et bien 24 minutes qui donnent 1 jour dans GTA ;)

++
R@f
Titre: Re : Reprise du script de paye qui ne marche pas....
Posté par: chrislabricole le 28 Décembre 2007, 15:20:49
donc ça donne quoi en fait ?  ;D

Merci à toi :)
Titre: Re : Reprise du script de paye qui ne marche pas....
Posté par: R@f le 28 Décembre 2007, 15:30:51
sa donne que toutes les 24minutes le joueur reçoit 3500 $ ;)

++
R@f
Titre: Re : Reprise du script de paye qui ne marche pas....
Posté par: chrislabricole le 28 Décembre 2007, 16:41:03
oui oui je sais  :D

Mais ça donne quoi le code, j'ai pas trop capté  :P

Merci à toi !
Titre: Re : Reprise du script de paye qui ne marche pas....
Posté par: chrislabricole le 29 Décembre 2007, 13:58:36
Après avoir bien relu, et essayer de comprendre, j'ai compri se que tu voulais dire  :P

j'ai bien mi le timer dans OnGameModeInit  ;)
j'ai mi le forward en haut (avec les ses autres copains)

et la fonction, je l'ai mise toute en bas du script...


voiçi l'erreur  :(
Citer
C:\...\gamemodes\lvdm.pwn(491) : error 017: undefined symbol "playerid"
Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase


1 Error.

je ne vois pas pourquoi il ne reconnait pas playerid !

la ligne 491 est la suivant :
Code: (cpp) [Sélectionner]
SetTimerEx("AutoPay",1440000,1,"i",playerid);(elle est dans OnGameModeInit)

Merci de ton aide ! :)

PS: que signifie le "i" dans SetTimerEx ?
 
Titre: Re : Reprise du script de paye qui ne marche pas....
Posté par: NatiVe™ le 29 Décembre 2007, 14:03:53
"i" C'est pour la boucle, c'est pour definir tout les players InGame !

NV.

Titre: Re : Reprise du script de paye qui ne marche pas....
Posté par: chrislabricole le 29 Décembre 2007, 17:15:13
ok :) merci :)

et pour le problème du playerid ?  :ohmy
Titre: Re : Reprise du script de paye qui ne marche pas....
Posté par: Syg le 29 Décembre 2007, 23:23:22
NON !!! , le "i" dans SetTimerEx sert à indiquer à PAWN le nombre de le type de paramètres qu'il aura à passer à la fonction du timer.
Dans le cas qui nous occupe, le "i" indique qu'il n'y a qu'un seul paramètre et qu'il est de type int (entier).

Mais comme ta fonction de timer contient un boucle sur tous les joueurs, ce paramètre n'est pas nécessaire (d'ailleurs, il n'est pas utilisé dans la fonction AutoPay donc inutile) et un simple SetTimer fera l'affaire.
Soit :

En haut du script :
forward AutoPay ();
Dans OnGameModeInit :
SetTimer ("AutoPay",1440000,1);
Et quelque part dans ton script (en dehors de toute autre fonction) :
public AutoPay ()
{
   SendClientMessageToAll (COLOR_GREEN,"Jour De Paye !");
   SendClientMessageToAll (COLOR_RED,"Tu as reçu 3500$ !");
   for (new i=0; i<MAX_PLAYERS; i++)
   {
      GivePlayerMoney(i, 3500);
   }
}

++
Syg
Titre: Re : Reprise du script de paye qui ne marche pas....
Posté par: chrislabricole le 29 Décembre 2007, 23:58:05
Cool !  8)

Merci beaucoup, ça marche nickel :) :happy