• 05 Juin 2026, 21:07:02


Auteur Sujet: [FS] Ejection  (Lu 4648 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
[FS] Ejection
« le: 14 Juillet 2010, 19:02:31 »
Un petit FS, qui permet de poser des zones où on sera éjecté.



La présentation sur les vidéos, la qualité est bizarre, mais bon ^^

http://fr.xfire.com/video/309346/

http://fr.xfire.com/video/30938b/

Lien sur Pastebin
« Modifié: 14 Juillet 2010, 19:13:39 par sasuke78200 »



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Nesik

  • *
  • Grand Banditisme
  • Messages: 674
    • Voir le profil
    • Uknow
Re : [FS] Ejection
« Réponse #1 le: 14 Juillet 2010, 19:42:56 »
GG c'est trop fort mas bon pas sur que sur les RP ça soit très recommandé !!

Hors ligne D0os-Nox

  • Connais toi - toi même
  • *
  • Tueur en série
  • Retourne toi, t'es déjà mort
  • Messages: 144
    • Voir le profil
    • :.. UG - Communauté d'entraide, de production vidéo games et multigaming ..:
Re : [FS] Ejection
« Réponse #2 le: 14 Juillet 2010, 20:30:33 »
Bonjour, Très original comme idées de FS, mais il y a quelque souci qui géne un peu :

- Une fois que on est éjecter dans les air, il est impossible d'y sortir, donc forcément une commande de téléportation s'impose !

J'imagine qu'il soit facile d'en remédier autrement (( A moins que tu veuille le modifier à ta manière, Sinon je suis prenable  ;) ))


 :happy D0os-Nox   :closedeyes




Citer
La vrai paix n'existe pas, nous somme le reflet de l'ignorance d'un monde détruit par la guerre ![/glow]
Citer
Chaque jours, la haine nous renferme dans l'obscurité ![/glow]
(Citations par D0os)

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Re : [FS] Ejection
« Réponse #3 le: 14 Juillet 2010, 20:33:33 »
Bonjour, Très original comme idées de FS, mais il y a quelque souci qui géne un peu :

- Une fois que on est éjecter dans les air, il est impossible d'y sortir, donc forcément une commande de téléportation s'impose !

J'imagine qu'il soit facile d'en remédier autrement (( A moins que tu veuille le modifier à ta manière, Sinon je suis prenable  ;) ))


 :happy D0os-Nox   :closedeyes

Béh si tu met une force d'éjection non nul le joueur sera éjecté ^^

(En faites j'avais codé ça pour un truc d'explosion donc c'est parfait pour les RP, ta une voiture qui pète tu crée la zone pour 1 seconde ce qui sont à coté décolle et tu supprime la zone =)

Merci Gz' <3 loul



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne D0os-Nox

  • Connais toi - toi même
  • *
  • Tueur en série
  • Retourne toi, t'es déjà mort
  • Messages: 144
    • Voir le profil
    • :.. UG - Communauté d'entraide, de production vidéo games et multigaming ..:
Re : [FS] Ejection
« Réponse #4 le: 14 Juillet 2010, 20:47:25 »
RE : Tu n'a pas trop compris ce que je voulait dire Sasuke  :-[

Citer
J'aurais juste une suggestion, enfin j'ai pas regardé ton code vraiment donc je ne sais pas si ça y est déjà, mais sur les vidéos je ne l'ai pas vu : pouvoir donner  un angle, et lorsque le joueur serait éjecté, changer les vecteurs Z, mais également X et Y en fonction de cet angle pour qu'il soit éjecté dans le sens inverse du point d'éjection (je ne sais pas si tu as bien compris).

Non, Voilà ce que je penser faire lors que le joueur est éjecter dans les air  :)


 :happy D0os-Nox  :closedeyes




Citer
La vrai paix n'existe pas, nous somme le reflet de l'ignorance d'un monde détruit par la guerre ![/glow]
Citer
Chaque jours, la haine nous renferme dans l'obscurité ![/glow]
(Citations par D0os)

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [FS] Ejection
« Réponse #5 le: 14 Juillet 2010, 20:49:34 »
ça je l'ai dans un autre FS lol, c'est pour faire genre les speedboost de trackmania,

Mais en faite moi je fais quoi,

J'éjecte le joueur du centre de la sphère que l'ont crée, avec l'angle suivant la position de la sphère et du joueur.

Un schéma serai mieux ^^

EDIT: Voila dans la vidéo

http://fr.xfire.com/video/30938b/
« Modifié: 14 Juillet 2010, 20:51:06 par sasuke78200 »



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne D0os-Nox

  • Connais toi - toi même
  • *
  • Tueur en série
  • Retourne toi, t'es déjà mort
  • Messages: 144
    • Voir le profil
    • :.. UG - Communauté d'entraide, de production vidéo games et multigaming ..:
Re : [FS] Ejection
« Réponse #6 le: 14 Juillet 2010, 21:24:37 »
RE : Voilà, Je trouve c'est plus pratique comme sa  :D

Maintenant =, j'ai une autre suggestion :

- Il fraudait une autre commande pour faire genre une bombe atomique qui ferai envoler tout les joueur connecté dans les air mais le problème c'est que tout le monde resterai dans les air jusqu'à qu'il arrive à la limite (( Genre dans le Pole Nord ^^ ))

Je pense que un timer de 3 seconde max serai parfait  :)


 :happy D0os-Nox  :closedeyes




Citer
La vrai paix n'existe pas, nous somme le reflet de l'ignorance d'un monde détruit par la guerre ![/glow]
Citer
Chaque jours, la haine nous renferme dans l'obscurité ![/glow]
(Citations par D0os)

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Re : [FS] Ejection
« Réponse #7 le: 14 Juillet 2010, 21:46:33 »
RE : Voilà, Je trouve c'est plus pratique comme sa  :D


Béh il est comme ça le FS depuis le début


Sinon pour la bombe atomique tu peut le codé en faisant une zone a la position 0 0 0 et avec un radius de 50000 ^^



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Aegoss

  • I'm gonna kick dat' ass !
  • *
  • • « a3goss - иsɢ Lєadєʀ » •
  • Messages: 4787
    • Voir le profil
Re : [FS] Ejection
« Réponse #8 le: 14 Juillet 2010, 21:49:04 »
Sur le jeu, il n'y avait pas moyen de faire une sorte de trampoline comme, j'ai déjà jouer sur un serveur ou y'avait le même principe y'a bien deux ans.
HP Envy 15-K222NF - Argent
15,6'' Full HD - Intel Core i5-4200U - HDD 1 To - RAM 8 Go - NVIDIA GeForce GTX 850M 4 Go - LG E2251 - Logitech G105 - R.A.T 7 Contagion - Siberia V2 ''Orange''




Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Re : [FS] Ejection
« Réponse #9 le: 14 Juillet 2010, 21:50:20 »
Sur le jeu, il n'y avait pas moyen de faire une sorte de trampoline comme, j'ai déjà jouer sur un serveur ou y'avait le même principe y'a bien deux ans.

En faite le vrai principe du FS se trouve dans la seconde Vidéo ^^



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Re : [FS] Ejection
« Réponse #10 le: 14 Juillet 2010, 23:09:48 »
RE : Tu n'a pas trop compris ce que je voulait dire Sasuke  :-[

Citer
J'aurais juste une suggestion, enfin j'ai pas regardé ton code vraiment donc je ne sais pas si ça y est déjà, mais sur les vidéos je ne l'ai pas vu : pouvoir donner  un angle, et lorsque le joueur serait éjecté, changer les vecteurs Z, mais également X et Y en fonction de cet angle pour qu'il soit éjecté dans le sens inverse du point d'éjection (je ne sais pas si tu as bien compris).

Non, Voilà ce que je penser faire lors que le joueur est éjecter dans les air  :)


 :happy D0os-Nox  :closedeyes

Comme cela ?

http://fr.xfire.com/video/3097e5/



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : [FS] Ejection
« Réponse #11 le: 15 Juillet 2010, 00:56:33 »
Salut,


très beau script, bravissimo sasuke

par contre, j'ai un commentaire/suggestion qui pourrait permettre de rendre le script + efficace (moins de calculs quoi...)

concernant le coeur du script:
public CheckEjectZone();
public CheckEjectZone()
{
float x = 0.0; float y = 0.0; float z = 0.0;

for( int i = 0; i < MAX_PLAYERS; i++ )
{
    if( !IsPlayerConnected( i )){continue;} // On recommence la boucle si le joueur " i " n'est pas connecté
    for( int a = 0; a < MAX_EJECTION_ZONE; a++)
    {
   
        if( !IsEjectionZoneCreated( a )){continue;}
        GetEjectionZonePos( a, x, y, z );
if( IsPlayerInRangeOfPoint( i, GetEjectionZoneRadius( a ), x, y, z ))
{
float ax = 0.0; float ay = 0.0; float az = 0.0;
float angle = 0.0;
GetPlayerPos( i, ax, ay, az );
angle = atan2(y - ay, x - ax );

float force = GetEjectionZoneForce( a );
if( IsPlayerInAnyVehicle( i ) )
{
    SetVehicleVelocity( GetPlayerVehicleID( i ),force * floatsin(angle, degrees)  ,force * floatcos(angle, degrees) , 1 );
}
SetPlayerVelocity( i,force * floatsin(angle, degrees)  ,force * floatcos(angle, degrees) , 1 );
}
    }
   
}
}

Tu aurais pu éviter d'utiliser un angle en trouvant la norme de la distance entre le joueur et le centre de la zone. Ensuite suffit de diviser (x - ax) par la norme et (y - ay) par la norme aussi.
En gros le code deviendrais:
public CheckEjectZone();
public CheckEjectZone()
{
float x = 0.0; float y = 0.0; float z = 0.0;

for( int i = 0; i < MAX_PLAYERS; i++ )
{
    if( !IsPlayerConnected( i )){continue;} // On recommence la boucle si le joueur " i " n'est pas connecté
    for( int a = 0; a < MAX_EJECTION_ZONE; a++)
    {
   
        if( !IsEjectionZoneCreated( a )){continue;}
        GetEjectionZonePos( a, x, y, z );
if( IsPlayerInRangeOfPoint( i, GetEjectionZoneRadius( a ), x, y, z ))
{
float ax = 0.0; float ay = 0.0; float az = 0.0;
float norme = 0.0;
GetPlayerPos( i, ax, ay, az );
ax -= x;
ay -= y;
norme = floatsqroot(ax * ax + ay* ay);
ax /= norme;
ay /= norme;
float force = GetEjectionZoneForce( a );
if(IsPlayerInAnyVehicle(i))
{
    SetVehicleVelocity( GetPlayerVehicleID(i),force * ax  ,force * ay , 1 );
}
else
{
SetPlayerVelocity( i,force *  ax ,force * ay , 1 );
}
}
    }
   
}
}
Il faudrait vérifier si ce code est plus rapide (et encore, ce sera minime). Mais, il évite de passer par les angles.

Aussi j'ai vu que tu remplaçais MAX_PLAYERS par GetMaxPlayers(). Je préfère ne pas faire ça car cela peut invalider la déclaration de variables (tableaux pour joueurs mais bon...), surtout que dans tes boucles tu appèle cette fonction à chaque itération.

++Sim++





Hors ligne Mr_C30

  • *
  • Gangster
  • souvent conquise jamais soumise
  • Messages: 1937
    • Voir le profil
Re : [FS] Ejection
« Réponse #12 le: 15 Juillet 2010, 02:28:08 »
j'ai pas trop compris ; ya moyen avec ton fs de faire des zone interdite et d'être éjecter ;mais exactement de même façon qu'un worldbound ? moins violente :S ^^


++



Radis du soir bonsoir !


Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [FS] Ejection
« Réponse #13 le: 15 Juillet 2010, 12:37:02 »
Ok, merci de tes suggestions Sim.

Mais en faites au départ ce script n'étais pas vraiment fait pour le partage, pour cela que j'ai change le MAX_PLAYERS ^^


Sinon, pour ton calcule, je pense que faire avec les angles, et avec une division par la distance horizontal, et un peu la même chose niveau vitesse d'exécution ?

Je testerai avec un benchmark (Deux petit GetTicketCounts() ^^ ).

@ Gz': Béh comme je le disais, ça servirai plutôt pour émuler un souffle d'explosion, ou un truc dans le genre, mais on peut toujours modifier le script pour en faire des pavé, au lieu de Sphère ^^


@ C30: Ouais c'est une genre de WorldBoundarie local, en forme de sphère ^^
« Modifié: 15 Juillet 2010, 12:39:24 par sasuke78200 »



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog