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
-
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
++
-
ici on aide il me semble
-
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.
-
j'ai vu un truck sur samp.com mais le lien est mort :s
-
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.
-
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
-
non on peut pas.
-
ok merci ;)
-
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 ?
-
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++
-
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
-
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.
-
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
-
merci pour laide
-
euuuh player to point c'est ou ?????
-
euuuuh le blem c'est kil y a 12 ereur a mon avi po bon
-
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);
}
-
c'est GetPlayerPos, pas getPlayerPos, la majuscule au début fais toute la différence.....
++Sim++
-
oui sinon pawno va pas reconnaitre
-
oui. Celui qui sait au moi obtenir une position connait le call par coeur
-
Le PlayerToPoint vas ou ?
Dans le public mais je vois pas dans quel call
-
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]
-
Ces bien beau de nous montrer sa mais bon on aimerais bien voir le code ::)
-
O_o !!!!
Possible de faire ça ???!!!!
-
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
-
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)
-
J'avais pas connaissance de cette video mdr j'ai fait ça fassa hier xD.
-
mdr tout de meme le big up
-
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. .... =)
-
Désolé de la question mais à quoi sert le système de herse ? A quoi sa sert ? :-[ ::)
-
[yt=425,350]http://www.youtube.com/watch?v=J8Cwn2m3qI0[/yt]
-
Sasuke j'ai envie de completer ton poste :p
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.
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
-
meme avec une video tu ne comprend desoler on peu pas t'aider mieux que sa :...
-
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.
-
Tu a plusieur fois un new lights
-
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.
-
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
-
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.
Citation
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
| |
Et sa sa va ou ?
i-i
-
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)