GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: ThePlaymobile le 04 Novembre 2008, 20:14:10

Titre: Herse
Posté par: ThePlaymobile le 04 Novembre 2008, 20:14:10
Bonsoir j'ai une petite demande a faire si quelqu'un aurait une commande pour pausser des herses et que dit qu'un joueur passe dessus sa face mettre sa voiture en feux cela serait simpas de me passer la cmd pour ceux qui voudrais bien

Je vous remerci boucoup pour ceux qui voudrais bien

++
Titre: Re : Herse
Posté par: cristab le 04 Novembre 2008, 20:19:13
ici on aide il me semble
Titre: Re : Herse
Posté par: NatiVe™ le 04 Novembre 2008, 20:25:02
Topic déjà créer par quelqu'un d'autre, tu peut le trouver içi (http://www.gtaonline.fr/forums/index.php?action=search)

NV.

Titre: Re : Herse
Posté par: ThePlaymobile le 04 Novembre 2008, 20:58:15
j'ai vu un truck sur samp.com mais le lien est mort :s
Titre: Re : Herse
Posté par: garderer le 04 Novembre 2008, 22:50:58
Je lé fait pour mon rpg

[code=]//herse
indication
new Float:N,Float:G,Float:R;
new herse;
forward herselook()

Danse le init SetTimer("herselook",1000,1);


// dans les commande
if(strcmp(cmd,"/herse",true)==0)
{
DestroyObject(herse);
GetPlayerPos(playerid, N,G,R);
herse = CreateObject(1593,N,G+2,R-0.75,0,0,0);
SendClientMessage(playerid, COLOR_ORANGE, "( ! ) Herse en place !");
PlayerPlaySound(playerid,1057,0,0,0);
return 1;
}

//herse public a un endroit dans ton  script
public herselook()
{
for(new i=0; i < MAX_PLAYERS; i++)
 {
if(PlayerToPoint(5.0, i, N, G, R))
{
if(IsPlayerInAnyVehicle(i))
{
SetVehicleHealth(GetPlayerVehicleID(i),200);
}
}
}
}

c'est pas mon code sur rpg je vient de le faire a la va vite mais comme sa sa marche.

Titre: Re : Herse
Posté par: madinina972 le 04 Novembre 2008, 23:32:32
j'ai justement créer un topic il y a longtemps , sur le forum SAMP tu peut en trouver , sa s'appelle Stringer.

a propos, quand on roule sur les herse , sa serait possible que les pneu crève quand tu roule dessus ?
si oui comment fait-on?

++
madinina972
Titre: Re : Herse
Posté par: garderer le 04 Novembre 2008, 23:35:52
non on peut pas.
Titre: Re : Herse
Posté par: madinina972 le 04 Novembre 2008, 23:37:25
ok merci ;)
Titre: Re : Herse
Posté par: » Lukubi™ le 06 Novembre 2008, 21:51:28
j'ai tester sa sur mon serveur et quand le joueur passe sur la herse rien ne se^passe son vehicule reste intact  ???

avez vous une idée du probleme ?
Titre: Re : Herse
Posté par: S!m le 06 Novembre 2008, 23:26:14
Salut,

je viens de regarde le code, et normalement, il devrait être ok...
peut-être n'as tu pas bien placé le code:

en haut du script:
//herse indication
new Float:N,Float:G,Float:R;
new herse;
new TimerHerse;
forward herselook()

dans ta callback OnGameModeInit()
TimerHerse = SetTimer("herselook",1000,1);
dans le OnGameModeExit()
KillTimer(TimerHerse);

dans la callback OnPlayerCommandText
if(strcmp(cmd,"/herse",true)==0)
{
DestroyObject(herse);
GetPlayerPos(playerid, N,G,R);
herse = CreateObject(1593,N,G+2,R-0.75,0,0,0);
SendClientMessage(playerid, COLOR_ORANGE, "( ! ) Herse en place !");
PlayerPlaySound(playerid,1057,0,0,0);
return 1;
}

je te conseillerais de le mettre tout en bas de ton script:
public herselook()
{
for(new i=0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))continue;
if(!IsPlayerInAnyVehicle(i))continue;
if(PlayerToPoint(i, N, G, R,5.0)){
SetVehicleHealth(GetPlayerVehicleID(i),200);
}
}
}

et puis le PlayerToPoint:

PlayerToPoint(playerid, Float:x, Float:y, Float:z, Float:dist)
{
new Float:PPos[3];
GetPlayerPos(playerid,PPos[0],PPos[1],PPos[2]);
x -= PPos[0];
y -= PPos[1]
z -= PPos[2];
return ((x * x) + (y * y) + (z * z) <= dist * dist);
}

et voilà, ça devrait fonctionner, bonne chance

++Sim++
Titre: Re : Herse
Posté par: Syg le 07 Novembre 2008, 09:54:06
Avec un timer à 1000 (1 seconde), je pense qu'il faut s'arrêter sur le herse pour qu'on détecte le passage dessus.
En effet, on va tester toutes les secondes pour voir si le joueur est dans un rayon de 5 mètres autour de la herse.
Lorsque l'on passe à pleine vitesse sur le herse, il y a peu de chance pour que la détection se fasse.

La solution est de diminuer la durée du timer pour qu'il fasse la détection plus souvent.
Mais même en diminuant le timer (à 100 ms par exemple), il se peut que dans certains cas la détection ne se fasse pas.

Autre chose, lors de la création de la herse, il serait bien de mettre le joueur créateur un peu à l'écart sinon c'est son propre véhicule qui va exploser.
Ou alors créer la herse un peu plus loin de lui (par exemple, 6 mètres derrière pour qu'il soit en dehors du rayon d'action de la herse).

++
Syg
Titre: Re : Herse
Posté par: garderer le 07 Novembre 2008, 10:22:44
Oui c'est bien si on veut vraiment le détecté on agrandit la zonne ou on fait un barrage avec des voitures de police.
Mais sur mon rpg souvent la détection est faite dans la plus part dès cas.
Le timer on peut pas trop le baisser sinon on flooderai le serveur... A moin de lintroduire dans un call qui flood déjà et encore il faudrais que il vérifie tout.
Titre: Re : Herse
Posté par: Franky™ le 07 Novembre 2008, 13:13:36
je suis entrain de créer mon même justement un systeme de herse, qui freeze je joueur quand tu passe la herse, et au bout de X seconde sa te defreeze, mais sa bug toujours alors avec Mister Fred on va completement le changer.
quand sa sera fait je le partagerai ici

++ Franky
Titre: Re : Herse
Posté par: Le poulain de gta le 07 Novembre 2008, 22:38:04
merci pour laide
Titre: Re : Herse
Posté par: Le poulain de gta le 07 Novembre 2008, 22:40:52
euuuh player to point c'est ou ?????
Titre: Re : Herse
Posté par: Le poulain de gta le 07 Novembre 2008, 22:42:57
euuuuh le blem c'est kil y a 12 ereur a mon avi po bon
Titre: Re : Herse
Posté par: garderer le 08 Novembre 2008, 00:11:40
PlayerToPoint(playerid, Float:x, Float:y, Float:z, Float:dist)
{
   new Float:PPos[3];
   getPlayerPos(playerid,PPos[0],PPos[1],PPos[2]);
   x -= PPos[0];
   y -= PPos[1]
   z -= PPos[2];
   return ((x * x) + (y * y) + (z * z) <= dist * dist);
}
Titre: Re : Herse
Posté par: S!m le 08 Novembre 2008, 00:33:45
c'est GetPlayerPos, pas getPlayerPos, la majuscule au début fais toute la différence.....

++Sim++
Titre: Re : Herse
Posté par: madinina972 le 08 Novembre 2008, 00:56:16
oui sinon pawno va pas reconnaitre
Titre: Re : Herse
Posté par: garderer le 08 Novembre 2008, 00:57:46
oui. Celui qui sait au moi obtenir une position connait le call par coeur
Titre: Re : Herse
Posté par: jordanve le 30 Mars 2010, 19:22:43
Le PlayerToPoint vas ou ?

Dans le public mais je vois pas dans quel call
Titre: Re : Re : Herse
Posté par: scott1 le 31 Mars 2010, 01:11:01
j'ai justement créer un topic il y a longtemps , sur le forum SAMP tu peut en trouver , sa s'appelle Stringer.

a propos, quand on roule sur les herse , sa serait possible que les pneu crève quand tu roule dessus ?
si oui comment fait-on?

++
madinina972

Tout a fait, des que You Tube à verifier ma video je la poste avec la preuve.

Double post
La preuve en image.

Credit:

Pas eu envie de me casser les fesse j'i pris le code de creation de la herse de celui qui a poster ici ^^
Moi pour le reste ^^

[yt=425,350]http://www.youtube.com/watch?v=J8Cwn2m3qI0[/yt]
Titre: Re : Herse
Posté par: BuBuNo le 31 Mars 2010, 10:42:51
Ces bien beau de nous montrer sa mais bon on aimerais bien voir le code  ::)
Titre: Re : Herse
Posté par: Ssk le 31 Mars 2010, 12:42:33
O_o !!!!


Possible de faire ça ???!!!!
Titre: Re : Herse
Posté par: Hip-hop le 31 Mars 2010, 12:46:13
http://forum.sa-mp.com/index.php?topic=162944.0 (http://forum.sa-mp.com/index.php?topic=162944.0)

Faut les include de la R7
Titre: Re : Herse
Posté par: Ssk le 31 Mars 2010, 19:17:54
Ah, une nouvelle version de samp donc ^^

Je me suis dit putain je suis con !

J'ai pas pus passé a coté de cette fonction x)
Titre: Re : Herse
Posté par: scott1 le 31 Mars 2010, 20:10:02
J'avais pas connaissance de cette video mdr j'ai fait ça fassa hier xD.

Titre: Re : Herse
Posté par: cristab le 31 Mars 2010, 20:55:41
mdr tout de meme le big up
Titre: Re : Herse
Posté par: Ssk le 31 Mars 2010, 21:37:12
Ouais deux ans xD


Sinon Hip Hop il faut utiliser la fonction


UpdateVehicleDamageStatus()


Sinon elle sont jolie les news fonction de camera ca peut servir pour savoir ou le joueur tire etc. .... =)
Titre: Re : Herse
Posté par: Bankai_Rodriguez le 01 Avril 2010, 10:24:39
Désolé de la question mais à quoi sert le système de herse ? A quoi sa sert ?  :-[ ::)
Titre: Re : Re : Re : Herse
Posté par: Hip-hop le 01 Avril 2010, 12:48:16


[yt=425,350]http://www.youtube.com/watch?v=J8Cwn2m3qI0[/yt]
Titre: Re : Herse
Posté par: scott1 le 01 Avril 2010, 12:57:16
Sasuke j'ai envie de completer ton poste :p

Citer
UpdateVehicleDamageStatus (vehicleid, panels, doors, lights, tires)
vehicleid   The ID of the vehicle you want to set the damage of.
panels   A set of bits containing the panel damage status.
doors   A set of bits containing the door damage status.
lights   A set of bits containing the light damage status.
tires   A set of bits containing the tire damage status.

Citer
o = inflated tire
i = popped tire


Vehicle facing upwards.

0:

    o-o
    | |
    o-o

1:

    o-o
    | |
    o-i

2:

    o-i
    | |
    o-o

3:

    o-i
    | |
    o-i

4:

    o-o
    | |
    i-o

5:

    o-o
    | |
    i-i

6:

    o-i
    | |
    i-o

7:

    o-i
    | |
    i-i

8:

    i-o
    | |
    o-o

9:

    i-o
    | |
    o-i

10:

    i-i
    | |
    o-o

11:

    i-i
    | |
    o-i

12:

    i-o
    | |
    i-o

13:

    i-o
    | |
    i-i

14:

    i-i
    | |
    i-o

15:

    i-i
    | |
    i-i

i = crevé
o= no crevé

les premier s'est l'avant du véhicule, les dernier l'arriere
Titre: Re : Herse
Posté par: cristab le 01 Avril 2010, 13:24:59
meme avec une video tu ne comprend desoler on peu pas t'aider mieux que sa  :...
Titre: Re : Herse
Posté par: denko le 31 Mai 2010, 02:49:15
Super ce système.

J'attendais cette fonction avec impatience. J'ai fait un petit système de herses sur mon serveur et je suis content que mes pneus puissent se crever (plutôt ceux des autres  :D).

Euh normal que j'ai cette erreur ? : warning 219: local variable "lights" shadows a variable at a preceding level

Ce qui fait lorsque je compile je ne peux plus lancer le gm comme s'il y avait une erreur.
Titre: Re : Herse
Posté par: scott1 le 31 Mai 2010, 15:50:21
Tu a plusieur fois un new lights
Titre: Re : Herse
Posté par: Bayshore le 31 Mai 2010, 16:28:24
C'est pas forcément déclaré avec new, ça peut aussi être une variable d'une enum.

Bref, change le nom de ta variable lights dans ton système de herses denko.
Titre: Re : Re : Herse
Posté par: Leonidas300 le 13 Juillet 2010, 14:53:28
Salut,

je viens de regarde le code, et normalement, il devrait être ok...
peut-être n'as tu pas bien placé le code:

en haut du script:
//herse indication
new Float:N,Float:G,Float:R;
new herse;
new TimerHerse;
forward herselook()

dans ta callback OnGameModeInit()
TimerHerse = SetTimer("herselook",1000,1);
dans le OnGameModeExit()
KillTimer(TimerHerse);

dans la callback OnPlayerCommandText
if(strcmp(cmd,"/herse",true)==0)
{
DestroyObject(herse);
GetPlayerPos(playerid, N,G,R);
herse = CreateObject(1593,N,G+2,R-0.75,0,0,0);
SendClientMessage(playerid, COLOR_ORANGE, "( ! ) Herse en place !");
PlayerPlaySound(playerid,1057,0,0,0);
return 1;
}

je te conseillerais de le mettre tout en bas de ton script:
public herselook()
{
for(new i=0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))continue;
if(!IsPlayerInAnyVehicle(i))continue;
if(PlayerToPoint(i, N, G, R,5.0)){
SetVehicleHealth(GetPlayerVehicleID(i),200);
}
}
}

et puis le PlayerToPoint:

PlayerToPoint(playerid, Float:x, Float:y, Float:z, Float:dist)
{
new Float:PPos[3];
GetPlayerPos(playerid,PPos[0],PPos[1],PPos[2]);
x -= PPos[0];
y -= PPos[1]
z -= PPos[2];
return ((x * x) + (y * y) + (z * z) <= dist * dist);
}

et voilà, ça devrait fonctionner, bonne chance

++Sim++

Le PlayerToPoint va ou stp
Titre: Re : Herse
Posté par: Leonidas300 le 13 Juillet 2010, 20:47:07
Code: (pawn) [Sélectionner]
UpdateVehicleDamageStatus (vehicleid, panels, doors, lights, tires)
vehicleid   The ID of the vehicle you want to set the damage of.
panels   A set of bits containing the panel damage status.
doors   A set of bits containing the door damage status.
lights   A set of bits containing the light damage status.
tires   A set of bits containing the tire damage status.

Code: (pawn) [Sélectionner]
Citation
o = inflated tire
i = popped tire


Code: (pawn) [Sélectionner]
Vehicle facing upwards.

0:

    o-o
    | |
    o-o

1:

    o-o
    | |
    o-i

2:

    o-i
    | |
    o-o

3:

    o-i
    | |
    o-i

4:

    o-o
    | |
    i-o

5:

    o-o
    | |
    i-i

6:

    o-i
    | |
    i-o

7:

    o-i
    | |
    i-i

8:

    i-o
    | |
    o-o

9:

    i-o
    | |
    o-i

10:

    i-i
    | |
    o-o

11:

    i-i
    | |
    o-i

12:

    i-o
    | |
    i-o

13:

    i-o
    | |
    i-i

14:

    i-i
    | |
    i-o

15:

    i-i
    | |

Et sa sa va ou ?
    i-i
Titre: Re : Re : Re : Herse
Posté par: scott1 le 14 Juillet 2010, 16:53:18


Le PlayerToPoint va ou stp

Le Playertopoint viens du Godfather, maintenant, samp a sa propre fonction,

IsPlayerInRangeOfPoint(playerid, Float:range, Float:x, Float:y, Float:z)