GTAOnline.net
San Andreas Multiplayer (sa:mp) => Problèmes et bugs => Discussion démarrée par: iMax le 22 Août 2011, 12:49:16
-
Bonjour,
J'aimerais créer un PayDay Automatique avec une commande qui envoient à tous 2500$ et rajoute 1 Respect à tous en même temps...
J'ai essayé mais c'est très dure
Et si possible mettre un Timer qui envoit toute les heures =)
Cordialement,
Maxence.
-
Tu peux faire un truc du genre :
forward payday();
// Dans OnGameModeInit
SetTimer("payday",3600,true);
// Autre part
public payday()
{
for(new i = 0; i < GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
// Donner l'argent + respect
}
}
return 1;
}
C'est pas très difficile :happy
++
-
Tu peux faire un truc du genre :
forward payday();
// Dans OnGameModeInit
SetTimer("payday",3600,true);
// Autre part
public payday()
{
for(new i = 0; i < GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
// Donner l'argent + respect
}
}
return 1;
}
C'est pas très difficile :happy
++
Merci, mais après je n'ai pas le code pour donner l'Argent et le Respect :S
Merci mais après je n'ai
-
#include <a_samp>
forward Timer();
#define COLOR_LIGHTGREEN 0x9ACD32AA
#define MAX_STRING 255
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" PayDay");
print("--------------------------------------\n");
SetTimer("Timer", 3600000, 1); // Toutes les heures
return 1;
}
new respect[MAX_PLAYERS];
public Timer()
{
for(new a=0; a<MAX_PLAYERS; a++)
{
GivePlayerMoney(a, 2500);
respect++; // on ajoute un
if(respect == 15)
{
SetPlayerScore(i,+1);
}
}
SendClientMessageToAll(COLOR_LIGHTGREEN, "|________________ Payday Reçu ________________|");
return 1;
}
Voilà sauf que j'ai des erreurs :
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(22) : error 017: undefined symbol "i"
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(23) : error 017: undefined symbol "i"
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(25) : error 017: undefined symbol "i"
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(25) : warning 215: expression has no effect
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(25) : error 001: expected token: ";", but found ")"
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(25) : error 029: invalid expression, assumed zero
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(25) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
6 Errors.
Que faire ?
Merci à tous =)
-
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(22) : error 017: undefined symbol "respect"
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(22) : warning 215: expression has no effect
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(22) : error 001: expected token: ";", but found "]"
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(22) : error 029: invalid expression, assumed zero
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(22) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
Merci
-
Merci beaucoups de ta participation, encore et encore des erreurs... Il faut definir PlayerID, mais je sais pas comment
#include <a_samp>
forward Timer();
#define COLOR_LIGHTGREEN 0x9ACD32AA
#define MAX_STRING 255
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" PayDay");
print("--------------------------------------\n");
SetTimer("Timer", 3600000, 1); // Toutes les heures
return 1;
}
new respect[MAX_PLAYERS];
public Timer()
{
for(new a=0; a<MAX_PLAYERS; a++)
{
GivePlayerMoney(a, 2500);
respect[playerid]++; // on ajoute un
if(respect[a] == 15)
{
SetPlayerScore(a,+1);
}
}
SendClientMessageToAll(COLOR_LIGHTGREEN, "|________________ Payday Reçu ________________|");
SendClientMessageToAll(COLOR_LIGHTGREEN, "Vous avez reçu 2500$ ! Mettez-les vite à la Banque");
SendClientMessageToAll(COLOR_LIGHTGREEN, "(( Nous travaillons sur le système de Payday, Vous ne recevez pas encore de Respect (C'est Pour Bientôt) ))");
return 1;
}
Les Erreurs :
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(22) : error 017: undefined symbol "playerid"
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(25) : error 029: invalid expression, assumed zero
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(25) : warning 215: expression has no effect
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(25) : error 001: expected token: ";", but found ")"
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(25) : error 029: invalid expression, assumed zero
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(25) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
5 Errors.
-
Bah, étant donné que tu as dit que "a" devait tourner parmi les joueurs, "a" = "playerid" ;)
En plus tu as la solution juste en dessous de la ligne qui te pose problème, essaye de réfléchir un peu ^^
Sinon, n'oublie pas de limiter la boucle en redéfinissant MAX_PLAYERS ou en utilisant GetMaxPlayers et surtout, vérifier si le joueur "a" en question est bien connecté, afin de ne pas donner de l'argent à un ID qui ne serait pas connecté ;) (Pour accélérer le script)
++
-
Merci =)
En bref, je dois changer : respect[playerid]++; par respect[a]++;
Je dois rajouter : (IsPlayerConnected(a)) ( mais cela ne marche pas avec le Public J'ai rajouté tout ce qui faut les petit : "{" et "}" )
Et pour le MAX_PLAYERS, je ne sais pas ou le placer :S
Merci.
-
Pour le MAX_PLAYERS, normalement c'est en haut, du genre :
#define MAX_PLAYERS joueurs
Mais sans tester, tu risques d'avoir une erreur "Redefinition of constant/macro".
Donc soit tu utilises GetMaxPlayers qui va chercher directement dans server.cfg, ou tu peux définir une nouvelle constante MAX_JOUEURS et tu remplaces MAX_PLAYERS par MAX_JOUEURS.
++
-
Très bizzard !
Cela ne marche pas :s
Regarde mon code :
#include <a_samp>
forward Timer();
#define COLOR_LIGHTGREEN 0x9ACD32AA
#define MAX_STRING 255
#define MAX_PLAYERS 10
#define MAX_JOUEURS 10
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print("PayDay merci à Gilux pour l'Aide à la Conception du Code ");
print("--------------------------------------\n");
SetTimer("Timer", 3600000, 1); // Toutes les heures
return 1;
}
new respect[MAX_PLAYERS];
public Timer()
{
for(new a=0; a<MAX_PLAYERS; a++)
{
GivePlayerMoney(a, 2500);
respect[a]++; // on ajoute un
if(respect[a] == 15)
{
SetPlayerScore(a,+1);
}
}
SendClientMessageToAll(COLOR_LIGHTGREEN, "|________________ Payday Reçu ________________|");
SendClientMessageToAll(COLOR_LIGHTGREEN, "Vous avez reçu 2500$ ! Mettez-les vite à la Banque");
SendClientMessageToAll(COLOR_LIGHTGREEN, "(( Nous travaillons sur le système de Payday, Vous ne recevez pas encore de Respect (C'est Pour Bientôt) ))");
return 1;
}
Erreurs (Il y en a des autres qui faut régler)
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(5) : warning 201: redefinition of constant/macro (symbol "MAX_PLAYERS")
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(27) : error 029: invalid expression, assumed zero
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(27) : warning 215: expression has no effect
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(27) : error 001: expected token: ";", but found ")"
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(27) : error 029: invalid expression, assumed zero
C:\Users\generations\Desktop\Serveur\filterscripts\payday.pwn(27) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
-
Je suppose que ton erreur vient de là : SetPlayerScore(a,+1);
C'est SetPlayerScore(a,GetPlayerScore(a)+1);
Et enlève MAX_PLAYERS pour ne laisser que le MAX_JOUEURS, et remplace tous les MAX_PLAYERS de ton script par des MAX_JOUEURS ;)
++
PS : Utilise la balise [php] [/php]
pour mettre ton code, ça sera plus lisible ;)
-
Tout marche !
Je te remercie.