GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Damien_Lohier le 30 Décembre 2010, 17:39:22
-
Bonjour!
J'ai mis un timer, mais il ne fonctionne pas (pour les move object) j'ai d’abord testé sur un MoveObject, mais il ne revient pas.
En gros: Une cmd ouvre un porte, mais le l'a ferme pas :/
L'ais-je mal placé?
if (strcmp("/porteadmin", cmdtext, true, 10) == 0)
{
if (IsPlayerAdmin(playerid))
{
SendClientMessage(playerid, 0x800000FF, "La porte principal de la maison des admins est ouverte. Fermeture dans 10 secondes");
MoveObject(Porteprincipaladmin1, -1538.56518600,482.20385700,7.92317000, 3.5); // Ouvert avec timer
MoveObject(Porteprincipaladmin2, -1521.91003400,482.09603900,7.89035500, 3.5); // Ouvert avec timer
SetTimer("message",10000,false);
}
else
{
SendClientMessage(playerid, 0xFF0000FF, "Tu ne peux pas entrer dans la maison des admins.");
}
return 1;
}
-
euh franchement rien ne te choc la SetTimer("message",10000,false); franchement faite attention a moin que tu ei appeler ton public qui referme la porte message
de plus il me semble qu'il faut utiliser SetTimerEx
-
Le message je le remet plus tard, il ne sert pas a faire le retour de la porte :)
Sinon je le place comment le SetTimerEx?
(je suis en 0.3c final)
-
Salut,
Dans le showroom tu as ce tuto http://www.gtaonline.fr/forums/index.php/topic,4289.0.html (http://www.gtaonline.fr/forums/index.php/topic,4289.0.html)
Bonne chance
-
Merci je regarde
Edit: Je ne comprend pas le système, j'ai mis la même phrase ( SetTimer("Urban", 7000, 0); ) Mais les portes ne se referme pas...
-
il faut dire que sans le code ben sa va etre dur de t'aider
-
Les news:
new Porteprincipaladmin1;
new Porteprincipaladmin2;
Les createObjects:
Porteprincipaladmin1=CreateObject(985,-1530.78796400,482.20385700,7.92317000,0.00000000,0.00000000,-0.85943669); //object(4)
Porteprincipaladmin2=CreateObject(985,-1529.58715800,482.09603900,7.89035500,0.00000000,0.00000000,-0.85943669); //object(5)
La commande:
if (strcmp("/porteadmin", cmdtext, true, 10) == 0)
{
MoveObject(Porteprincipaladmin1, -1538.56518600,482.20385700,7.92317000, 3.5); // Ouvert avec timer
SetTimer("Urban", 1000, 0);
MoveObject(Porteprincipaladmin2, -1521.91003400,482.09603900,7.89035500, 3.5); // Ouvert avec timer
SetTimer("Urban2", 1000, 0);
SendClientMessage(playerid, 0x800000FF, "La porte principal de la maison des admins est ouverte. Fermeture dans 10 secondes");
return 1;
}
-
est les public Urban1 et Urban2 surtout eux qui nous interesse
-
Oui et j'en fait quoi :blink
-
tu les post ici ...
-
Comment ça?!
Je les ai pas mis autre part :lmfao Fallait le mettre ou?
-
lol
il faut les creer
forward Urban();
public Urban()
{
MoveObject(Porteprincipaladmin1, -1530.78796400,482.20385700,7.92317000,0, 3.5); // Ouvert avec timer
}
voila ajoute sa sa fonctionneras
-
Je le met dans ma commande?
Double post
C:\Users\Damien Lohier\Desktop\Samp 0.3c\gamemodes\Stuntdrift.pwn(343) : error 029: invalid expression, assumed zero
C:\Users\Damien Lohier\Desktop\Samp 0.3c\gamemodes\Stuntdrift.pwn(343) : warning 215: expression has no effect
C:\Users\Damien Lohier\Desktop\Samp 0.3c\gamemodes\Stuntdrift.pwn(343) : error 001: expected token: ";", but found "if"
C:\Users\Damien Lohier\Desktop\Samp 0.3c\gamemodes\Stuntdrift.pwn(346) : warning 217: loose indentation
C:\Users\Damien Lohier\Desktop\Samp 0.3c\gamemodes\Stuntdrift.pwn(346) : error 029: invalid expression, assumed zero
C:\Users\Damien Lohier\Desktop\Samp 0.3c\gamemodes\Stuntdrift.pwn(346) : error 017: undefined symbol "Urban"
C:\Users\Damien Lohier\Desktop\Samp 0.3c\gamemodes\Stuntdrift.pwn(347) : error 029: invalid expression, assumed zero
C:\Users\Damien Lohier\Desktop\Samp 0.3c\gamemodes\Stuntdrift.pwn(347) : error 017: undefined symbol "Urban"
C:\Users\Damien Lohier\Desktop\Samp 0.3c\gamemodes\Stuntdrift.pwn(349) : warning 202: number of arguments does not match definition
C:\Users\Damien Lohier\Desktop\Samp 0.3c\gamemodes\Stuntdrift.pwn(351) : warning 217: loose indentation
C:\Users\Damien Lohier\Desktop\Samp 0.3c\gamemodes\Stuntdrift.pwn(353) : error 029: invalid expression, assumed zero
C:\Users\Damien Lohier\Desktop\Samp 0.3c\gamemodes\Stuntdrift.pwn(353) : error 017: undefined symbol "Urban2"
C:\Users\Damien Lohier\Desktop\Samp 0.3c\gamemodes\Stuntdrift.pwn(354) : warning 217: loose indentation
C:\Users\Damien Lohier\Desktop\Samp 0.3c\gamemodes\Stuntdrift.pwn(354) : error 029: invalid expression, assumed zero
C:\Users\Damien Lohier\Desktop\Samp 0.3c\gamemodes\Stuntdrift.pwn(354) : error 017: undefined symbol "Urban2"
C:\Users\Damien Lohier\Desktop\Samp 0.3c\gamemodes\Stuntdrift.pwn(356) : warning 202: number of arguments does not match definition
C:\Users\Damien Lohier\Desktop\Samp 0.3c\gamemodes\Stuntdrift.pwn(358) : warning 217: loose indentation
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
9 Errors.
Et voici le code avec le timer complet:
if (strcmp("/porteadmin", cmdtext, true, 10) == 0)
{
if (IsPlayerInRangeOfPoint(playerid, 6, -1530.4268,484.5358,7.1797)) || if (IsPlayerInRangeOfPoint(playerid, 6, -1529.3427,478.9946,7.1875))
{
MoveObject(Porteprincipaladmin1, -1538.56518600,482.20385700,7.92317000, 3.5); // Ouvert avec timer
forward Urban();
public Urban()
{
MoveObject(Porteprincipaladmin1, -1530.78796400,482.20385700,7.92317000,0, 3.5); // Ouvert avec timer
}
SetTimer("Urban", 10000, false);
MoveObject(Porteprincipaladmin2, -1521.91003400,482.09603900,7.89035500, 3.5); // Ouvert avec timer
forward Urban2();
public Urban2()
{
MoveObject(Porteprincipaladmin1, -1530.78796400,482.20385700,7.92317000,0, 3.5); // Ouvert avec timer
}
SetTimer("Urban2", 10000, 0);
SendClientMessage(playerid, 0x800000FF, "La porte principal de la maison des admins est ouverte. Fermeture dans 10 secondes");
return 1;
}
else
{
SendClientMessage(playerid, 0xFF0000FF, "Tu n'es pas devant la porte!");
return 1;
}
}
PS: Je n'ai pas réussi a faire une commande sur un des deux choix avec "if (IsPlayerInRangeOfPoint(playerid, x, y, z))" :dry
-
Ton commentaire m'aide beaucoup c'est sur :dry
C'est peut être tout simplement parce que je ne comprend pas!
Explique moi au lieu de te foutre de ma ******
-
ce que je t'es dit d'ajouter tu le met tout en bas de ton script et non pas dans la commande
-
Ah oué c'est différent merci :)
(Désolé si je répond pas vite, mon navigateur est mort xD)
-
Je suis d'accord avec Dizzy-Beno (pour une fois).
Tu fais un copier/coller sans comprendre ce que tu fais alors qu'il existe des tutoriels comme celui de Gilux qui explique en douceur le Pawn.
Tu ne peux déclarer une fonction dans une fonction ou dans un callback, c'est illogique.
-
Bref, passons :D
Le timer fonctionne parfaitement merci Cristab!
Ps: Je dois faire un public pour chaque fois que j'utilise un timer??
Double post
Un soucis, j'ai mis quatre timer sur quatre commandes différentes (1 sur chaque), mais quand j'utilise la commande, une seul porte s'ouvre. Vous comprendrez mieux avec le code :)
forward:
forward Timer3();
forward Timer4();
forward Timer5();
forward Timer6();
CreateObject: (fermé)
Portemarine1=CreateObject(975,-1635.79064900,258.09396400,1.81356800,0.00000000,91.10028943,89.38141604); //object(36)
Portemarine2=CreateObject(975,-1432.88269000,289.88739000,1.69441900,0.00000000,89.38141604,90.24085273); //object(40)
Portemarine3=CreateObject(975,-1310.03649900,483.61636400,1.81728700,6.87549354,88.52197935,90.24085273); //object(46)
Portemarine4=CreateObject(975,-1456.28491200,483.63339200,1.88630600,0.00000000,91.10034672,90.24085273); //object(47)
Les commandes:
if (strcmp("/portemarine1", cmdtext, true, 10) == 0)
{
MoveObject(Portemarine1, -1635.79064900,260.86828600,1.81356800, 3.5);
SetTimer("Timer3", 5000, false);
SendClientMessage(playerid, 0x800000FF, "Les portes marine sont ouvertes. Fermeture dans 10 secondes.");
return 1;
}
if (strcmp("/portemarine2", cmdtext, true, 10) == 0)
{
MoveObject(Portemarine2, -1432.88269000,292.63732900,1.69441900, 3.5);
SetTimer("Timer4", 5000, false);
SendClientMessage(playerid, 0x800000FF, "Les portes marine sont ouvertes. Fermeture dans 10 secondes.");
return 1;
}
if (strcmp("/portemarine3", cmdtext, true, 10) == 0)
{
MoveObject(Portemarine3, -1310.03649900,480.91653400,1.81728700, 3.5);
SetTimer("Timer5", 5000, false);
SendClientMessage(playerid, 0x800000FF, "Les portes marine sont ouvertes. Fermeture dans 10 secondes.");
return 1;
}
if (strcmp("/portemarine4", cmdtext, true, 10) == 0)
{
MoveObject(Portemarine4, -1456.28491200,480.83371000,1.98630600, 3.5);
SetTimer("Timer6", 5000, false);
SendClientMessage(playerid, 0x800000FF, "Les portes marine sont ouvertes. Fermeture dans 10 secondes.");
return 1;
}
Et les public en bas de page:
public Timer3()
{
MoveObject(Portemarine1, -1635.79064900,260.86828600,1.81356800, 3.5); // Fermé avec timer
}
public Timer4()
{
MoveObject(Portemarine2, -1432.88269000,292.63732900,1.69441900, 3.5); // Fermé avec timer
}
public Timer5()
{
MoveObject(Portemarine3, -1456.28491200,480.83371000,1.98630600, 3.5); // Fermé avec timer
}
public Timer6()
{
MoveObject(Portemarine4, -1529.58715800,482.09603900,7.89035500, 3.5); // Fermé avec timer
}
J'ai vérifié les coordonnés x y et z mais il sont correctes...
Conclusion:
Je demande de l'aide car une seul porte (toujours la même) s'ouvre pour n'importe quel commande, mais pas ceux que je demande...
-
salut
deja dans ton timer, tu met 5000 millisecondes, hors sa fait 5 secondes, donc 10000 pour 10 secs.
apres, enleve le 10 et le true du if(strcmp("......", cmdtext, true, 10)==0) sa donne:
if(strcmp("/....",cmdtext) == 0)
++ Brian
-
Merci de ta réponse!
Mon problème est résolu ;)
Je souhaite bonne année à tout le monde :cheers
(Merci de ne pas poster inutilement par la suite 8) )