GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: [BGS]teck le 16 Mars 2008, 00:58:15

Titre: Nofall bike pb
Posté par: [BGS]teck le 16 Mars 2008, 00:58:15
Bonjour a tous voila j'ai fait un nofall bike m'est j'ai quelque probleme

forward FallBike(playerid);
new NoFallBike[MAX_PLAYERS]=0;

commande text
if(strcmp(cmdtext, "/nofall", true) == 0) {
if(NoFallBike[playerid]== 1){
SendClientMessage(playerid, 0xFFFFFFFF, "Le NoFallBike est déjà activé.");
}else{
SetTimerEx("FallBike", 1, 1, "i", playerid);
SendClientMessage(playerid, 0xFFFFFFFF, "Le NoFallBike est activé.");
}
return 1;
}

tout en bas du script
public FallBike(playerid){
new Vehicle=GetPlayerVehicleID(playerid);
PutPlayerInVehicle(playerid,Vehicle,0);
return 0;
}

voila mon probleme et que je ne peut pu déscendre de ma moto et quand je fait aparaitre une ramp avec ctrl elle reste figé voila merci de vos réponces
Titre: Re : Nofall bike pb
Posté par: Asphalt le 16 Mars 2008, 12:39:01
Oula ! Exécuter un timer de 1 ms n'est pas bon du tout :s (ça a tendance à faire ramer le serveur).

Essaye avec 200 ms, je pense que c'est suffisant.
Titre: Re : Nofall bike pb
Posté par: UZI-I le 16 Mars 2008, 13:21:56
Pas tellement lagger le serveur mais surtout ça bouffe la bande passante.
Sachant que le Packet envoyer pour mettre un joueur sur son vehicle doit prendre 3 Byte (1 Pour le Packet  ID, 1 Pour le PlayerID, 1 Pour le Vehicle ID).

3 Bytes * 200 Joueur : 600 Bytes par MS. La moitié n'est pas envoyer, les packet perdu. xD

Avant de mettre le joueur sur sa moto. Verifie si il n'est pas deja dessus au quel cas il sera inutile de le mettre dessus. Ce check ne prend pas de bande passante étant donné qu'il est effectuer Server Side.
En gros tu n'evera 1 Packet de 3 Bytes que quand quelqu'un tombe et ça fera plaisir a la bande passante :D
Titre: Re : Nofall bike pb
Posté par: [BGS]teck le 16 Mars 2008, 15:06:20
oui mes sa ne regles pas mon probleme que quand je déscend de ma moto le perssoange remonte dessu et les ramp reste figer can je la fait aparaitre !! :wall :wall
Titre: Re : Nofall bike pb
Posté par: Asphalt le 16 Mars 2008, 17:08:01
UZI en mode maths xD

[BGS]teck > C'est normal qu'il remonte tout seul car c'est un timer qui le remet sur sa moto tout le temps étant donné que y'a aucune condition. Et si tu postais le code de tes rampes ? Car comme ça, sans rien, je vois pas :s
Titre: Re : Nofall bike pb
Posté par: UZI-I le 16 Mars 2008, 18:18:25
Pas en mode Math en mode 'Reflexion' lol

Pour le probleme. Fait que quand le joueur appuie sur la touche 'Sortir / entrer dans un vehicle' ca kill le timer.
Titre: Re : Nofall bike pb
Posté par: Syg le 16 Mars 2008, 21:17:15
Bon, pour l'avoir fait sur Lalu je vais développer un peu (mais pas trop sinon, y'aura des clones de Lalu's Stunt partout).

L'idée du SetTimerEx est une bonne idée (c'est celle que j'avais eu au départ). Pourtant, je pense qu'il y a un bug dans SAMP qui fait que parfois, on ne peut plus arrêter un timer lancé par SetTimerEx. Et dans le cas du NoFall, le joueur sera indéfiniment remis sur sa moto (c'est ce qui est arrivé assez souvent sur Lalu's Stunt avec la première version du NoFall).
Donc, lance un timer global (SetTimer) dans OnGameModeInit et travaille avec des flags (drapeaux ou indicateurs) et un boucle sur les joueurs, c'est plus facilement contrôlable (même si c'est moins efficace que le SetTimerEx). Et pour ce timer global, 300 ou 400 ms sont emplement suffisantes.

Pour la suite, UZI-I t'as donné une partie de la solution.
Enfin, pour que le joueur puisse descendre de sa moto, utilise la fonction GetPlayerKeys.

++
Syg
Titre: Re : Nofall bike pb
Posté par: [BGS]teck le 17 Mars 2008, 17:48:26
Bonjour merci de votre aide mais j'ai encore un ou deux souci voici le code
new keys, enter, playerid;
if(strcmp(cmdtext, "/nofall", true) == 0) {
if(NoFallBike[playerid]== 1){
SendClientMessage(playerid, 0xFFFFFFFF, "Le NoFallBike est déjà activé.");
}else{
SendClientMessage(playerid, 0xFFFFFFFF, "Le NoFallBike est activé.");
GetPlayerKeys(playerid, keys, enter);
}
return 1;
}

C:\serv 1\[FR]StuntX08\gamemodes\stuntlandteckto27.pwn(839) : warning 219: local variable "playerid" shadows a variable at a preceding level
C:\serv 1\[FR]StuntX08\gamemodes\stuntlandteckto27.pwn(845) : warning 202: number of arguments does not match definition
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


2 Warnings.
merci de votre aide a tous
Titre: Re : Nofall bike pb
Posté par: yoyo17 le 17 Mars 2008, 23:16:21
new keys, enter;
if(strcmp(cmdtext, "/nofall", true) == 0) {
if(NoFallBike[playerid]== 1){
SendClientMessage(playerid, 0xFFFFFFFF, "Le NoFallBike est déjà activé.");
}else{
SendClientMessage(playerid, 0xFFFFFFFF, "Le NoFallBike est activé.");
GetPlayerKeys(playerid, keys, enter);
}
return 1;
}

Met ceci est donne ta ligne 845 stp.

Cordialement, yoyo17.
Titre: Re : Nofall bike pb
Posté par: [BGS]teck le 18 Mars 2008, 07:29:36
voici la ligne 845
GetPlayerKeys(playerid, keys, enter);
et j'ai 1 warning

C:\serv 1\[FR]StuntX08\gamemodes\stuntlandteckto27.pwn(845) : warning 202: number of arguments does not match definition
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


1 Warning.
Titre: Re : Nofall bike pb
Posté par: NatiVe™ le 18 Mars 2008, 10:25:14
A mon avis, a la place de "enter" tu doit mettre la key qui lui correspond ;)

NV.

Titre: Re : Nofall bike pb
Posté par: [BGS]teck le 18 Mars 2008, 15:56:24
Bonjour native et ces quoi la key qui corespond a la touche entrer et sortir
Titre: Re : Nofall bike pb
Posté par: R@f le 18 Mars 2008, 16:03:13
c'est la : KEY_ACTION qui correspond à l'ID 1 ;)

++
R@f
Titre: Re : Nofall bike pb
Posté par: [BGS]teck le 18 Mars 2008, 20:18:40
Bonjour raf j'ai toujour un probleme voisi le code ::
new keys;
if(strcmp(cmdtext, "/nofall", true) == 0) {
if(NoFallBike[playerid]== 1){
SendClientMessage(playerid, 0xFFFFFFFF, "Le NoFallBike est déjà activé.");
}else{
SendClientMessage(playerid, 0xFFFFFFFF, "Le NoFallBike est activé.");
GetPlayerKeys(playerid, keys,1);
}
return 1;
}

C:\serv 1\[FR]StuntX08\gamemodes\stuntlandteckto27.pwn(845) : error 035: argument type mismatch (argument 3)
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


1 Error.

merci de votre aide

Titre: Re : Nofall bike pb
Posté par: R@f le 18 Mars 2008, 20:33:05
à quoi te sert le GetPlayerKeys dans ta commande ?

++
R@f
Titre: Re : Nofall bike pb
Posté par: Asphalt le 18 Mars 2008, 21:04:44
Il te faut un timer qui check les touches des joueurs. Si tu codes comme ça, y'a peur de chances que ça marche.
Titre: Re : Nofall bike pb
Posté par: [BGS]teck le 18 Mars 2008, 22:13:30
Ba pour dir que quand je fait entrée qeu le joueur ne monte pas sur la moto car enféte sur mon nofall a l'origine quand je les fait quand je déscender le joueur remonter tout seul sur la moto je voudrait a toupri résoude ce probeleme merci a vous de me répondre