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
-
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
-
Y a pas de
return 1;
?? c'est normale ??
-
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
-
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 :...
-
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);
}
}
-
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
SetTimerEx("AutoPay",1440000,1,"i",playerid);je viens aussi de remarquer que le forward n'est pas très juste ^^ c'est :
forward AutoPay(playerid);
++
R@f
-
Donc en haut du script, j'ai :
forward AutoPay(playerid);
SetTimerEx("AutoPay",1440000,1,"i",playerid); // comment à tu trouvé 1440000, cela signifie 1 jour (de gta) je pense, non ?[...]
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 :
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 ! :)
-
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
-
donc ça donne quoi en fait ? ;D
Merci à toi :)
-
sa donne que toutes les 24minutes le joueur reçoit 3500 $ ;)
++
R@f
-
oui oui je sais :D
Mais ça donne quoi le code, j'ai pas trop capté :P
Merci à toi !
-
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 :(
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 :
SetTimerEx("AutoPay",1440000,1,"i",playerid);(elle est dans OnGameModeInit)
Merci de ton aide ! :)
PS: que signifie le "i" dans SetTimerEx ?
-
"i" C'est pour la boucle, c'est pour definir tout les players InGame !
NV.
-
ok :) merci :)
et pour le problème du playerid ? :ohmy
-
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
-
Cool ! 8)
Merci beaucoup, ça marche nickel :) :happy